Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JSP — с чего начать? 
V
    Опции темы
nerezus
  Дата 24.5.2007, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Цитата

Пока что ближе всех к такому определению был автор этой темы nerezus, но он, похоже, разочаровался в Java. А жаль.
 В определенной степени верно, просто сейчас основная причина в нехватке времени + я еще не определился, чем хочу заниматься. Ну и конечно лень, но с ней пытаюсь бороться всеми возможными (и невозможными) методами, причем довольно-таки успешно.

Собственно со времени открытия темы успел поковырять J2ME(причем очень успешно) и Python, где впервые увидел РАБОТАЮЩУЮ реализацию ORM(в свое время хотел писать такое под пхп, но потом как-то поугас).

Сейчас заказал себе трехтомник Дейтелов по джаве и кучу книг по теории программирования, но сейчас почему-то считаю, что при программировании опыт набирается гораздо быстрее, чем при чтении ) Тот же xmlpull освоился за 5 минут, в то время, как в книгах уделяют парсингу XML намного больше места и времени.

Сейчас для себя поставил ряд целей, среди которых есть и сайт на джаве(на вашем фреймворке, кстати).

Однако самая главная цель - дописать оставшиеся 90 страниц документации за следующие 15 часов, с чем и удаляюсь ;)


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
fixxer
Дата 24.5.2007, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: 4
Всего: 27



Цитата

Это тебе надо сюда: The Java EE 5 Tutorial.

Да, вот это я наверное и сам как-нибудь освою. Просто мне очень импонирует Ваш подход когда ядро системы проектируется в отрыве от морды. Я сам об этом думал, но наверное опыта маловато. И в начале топика понял что процесс пойдет именно по этому пути. Но nerezus  всех обломал. Поэтому и хотелось продолжить. Ну нет так нет.
Да, если не сложно, поясните, пожалуйста, почему по Вашему мнению грамотная и не противоречащая здравому смыслу архитектура порой различаются. Как по мне так это нонсенс.

Это сообщение отредактировал(а) fixxer - 24.5.2007, 21:47


--------------------
user posted image
PM MAIL ICQ   Вверх
Hidrag
Дата 24.5.2007, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: 2
Всего: 25



Все правильно, это как автомобиль! Сборка начинается с двигателя и заканчивается уже кузовом - сначала логика и движок приложения, потом уже и гуишник или веб морда ко все этому крепятся.


--------------------
user posted image
PM WWW ICQ   Вверх
Stampede
Дата 25.5.2007, 01:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Привет, nerezus - скока лет, скока зим smile

Цитата(nerezus @  24.5.2007,  10:08 Найти цитируемый пост)
но сейчас почему-то считаю, что при программировании опыт набирается гораздо быстрее, чем при чтении


Правильно считаешь. Книшки, конечно, пригодятся, хотя бы в качестве справочника, но без реальной практики программирования никакого опыта не прибавится. Причем речь не об учебных примерах, а именно о реальных проектах.

Цитата(nerezus @  24.5.2007,  10:08 Найти цитируемый пост)
Сейчас для себя поставил ряд целей, среди которых есть и сайт на джаве(на вашем фреймворке, кстати).


Похвальный выбор smile Когда дойдут руки до реализации - обращайся, помогу всемерно.

Теперь fixxer.

Цитата(fixxer @  24.5.2007,  12:33 Найти цитируемый пост)
Просто мне очень импонирует Ваш подход когда ядро системы проектируется в отрыве от морды.


Я очень рад, что ты выделяешь этот аспект. Для многих это совсем не очевидно, так что комментарий Hidrag'а тут совершенно мимо кассы: и пример неудачный, и тезис не подкрепляется практикой - и мы к этому еще вернемся. Что касается продолжения сериала с твоим участием: понимаешь, нужна задача, цель. Нужно, чтобы ты зачем-то хотел довести дело до конца. Иначе все бросится на полпути. Только впустую потратишь свое и чужое время. Это я тебе как гносеолог со стажем говорю, ибо практика показывает, что эффективность когнитивного процесса напрямую определяется степенью мотивации.

Ну и напоследок разъяснение.

Цитата(fixxer @  24.5.2007,  12:33 Найти цитируемый пост)
Да, если не сложно, поясните, пожалуйста, почему по Вашему мнению грамотная и не противоречащая здравому смыслу архитектура порой различаются. Как по мне так это нонсенс.


Эх, чувствую, начать придется издалека...

Если взглянуть вокруг внимательным глазом, то нетрудно заметить, что нонсенсы такого рода окружают нас буквально повсюду. Вот навскидку пара примеров.

Пример 1. В моей цифровой мыльнице (Кодак) при разряде батареек слетают все настройки. Приходится каждый раз выставлять их заново. Еб@н@фты! У вас в аппарате 32 мега встроенной энергонезависимой памяти - неужели нельзя было отвести кусочек под хранение настроек???

Пример 2. У меня в машине магнитола, часы и розетка под прикуриватель работают только при включенном зажигании. Нахера?! Где блин логика? Получается, если что-то надо (например, элементарно подзарядить сотовый или влючить музыку) - приходится вставлять ключ и включать зажигание. В результате пару раз на кемпинге приходилось заводиться прикуриванием.

Примеров такого рода - миллион. О чем это говорит? О том, что мир не всегда и не во всем устроен в гармонии со здравым смыслом. Например, в случае с техническими девайсами наивный потребитель может думать, что рынок и конкуренция должны заставлять производителей выпускать изделия высочайшей степени функциональности, юзабилити и потребительских характеристик. А на деле выходит, что главное, к чему подталкивает рынок - к регулярному выпуску новых моделей. А какие они при этом получаются, всем ровным счетам наплевать.

Примерно такая же петрушка и с софтом. Sun'у по большому счету пофиг, хорошо ли, удобно ли разрабатывать приложения под их спецификации. У них свой процесс разработки индустрийных стандартов. Достаточно непростой, надо заметить, процесс, и при этом взаимоувязанный со множеством других процессов: документрование, написание туториалов, разработка программ сертификации, работа с партнерами, и многое-многое другое.

Неудивительно, что при таком положении дел многие вещи появляются на свет в виде, достаточно далеком от идеала - особенно учитывая концентрацию теоретиков во всяких комитетах по стандартам. Но раз уж появился - делать уже нечего: стандарт есть стандарт. И начинается "мыши плакали, кололись, но продолжали есть кактусы". Например, счастливо отведать Java DOM.

Когда противоречия между желаемым и действительным достигают особой остроты - ну, приходится как-то реагировать. Как правило, перенимают решения, ставшие стандартом де-факто. Так появился EJB 3 (Hibernate), пакеты concurrent (oswego), logging (log4j) и многое другое. Но до многих вещей руки так и не доходят. Может, со временем вместо неработающего JAAS приспособят Acegi. Может, канонизируют легковесные контейнеры, взяв за основу Spring. Ну а пока - вот так, как есть.

Так что ничего особенно необычного - не более, чем во всем остальном. Но разве кто-то обещал, что будет легко? smile



--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
fixxer
Дата 25.5.2007, 06:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: 4
Всего: 27



Stampede, спасибо за объяснение. Просто я пока архитектуру воспринимаю с точки зрения ООП, и привязка (увязка) технологического стека к domain model, это наверное следующий этап моего развития. smile


--------------------
user posted image
PM MAIL ICQ   Вверх
vzf
Дата 25.5.2007, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 10.9.2005

Репутация: 2
Всего: 5



Stampede, можете рассказать в каких случаях не работает JAAS и чем Acegi лучше.

P.S. Просто интересно smile 
--------------------
Java - Write Once, Test EveryWhere!
PM MAIL   Вверх
Stampede
Дата 25.5.2007, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Цитата(vzf @  25.5.2007,  00:45 Найти цитируемый пост)
Stampede, можете рассказать в каких случаях не работает JAAS и чем Acegi лучше.


Нет, это будет оффтоп. Можете создать отдельную тему, если есть желание.


--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
diablero
Дата 19.6.2007, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 3.12.2006
Где: Аркхэм

Репутация: 2
Всего: 5



Пожелал стать новым учеником, и получил на это согласие.
Задача. Основная цель изучения это реализация своего проекта. Сайт не сложный, со стандартными сервисами ,к примеру, http://real-english.ru

log4j.properties. Пишет все в консоль и файл.
Код

log4j.logger.Appender = DEBUG, Console, File

log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%d{dd MMM yyyy HH:mm:ss,SS}] SYN %-5p %m %n

log4j.appender.File=org.apache.log4j.RollingFileAppender
log4j.appender.File.file=${infinite.home}/log/application.log
log4j.appender.File.MaxFileSize=1000KB
log4j.appender.File.MaxBackupIndex=9999
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=[%d{dd MMM yyyy HH:mm:ss,SS}] %-5p %m %n


Код

package ru.selfexpression;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import java.io.File;

public class Infinite {
    private static Infinite instance;
    private Configuration config;
    private Logger logger;
    private String homeDir;

    private Infinite() {
        homeDir = System.getProperty("user.dir");
        System.setProperty("infinite.home", homeDir);

        config = new Configuration(homeDir+"/conf/infinite.properties");

        File propertiesFile = new File(homeDir+"/conf/log4j.properties");
        PropertyConfigurator.configure(propertiesFile.toString());
        logger = Logger.getLogger("Appender");
    }

    public static Infinite getInstance() {
        if (instance == null) {
            instance = new Infinite();
        }
        else return null;
        return instance;
    }

    public void  init(String homeDir) {
        if(homeDir == null) {
            throw new NullPointerException();
        }
        this.homeDir = homeDir;
        System.setProperty("infinite.home", homeDir);
    }
    public void  setLogFileName(String fileName) {
        if(fileName == null) {
            throw new NullPointerException();
        }
        // logger
    }
    public Configuration getConfiguration() {
        if(config == null) {
            throw new NullPointerException();
        }
        return config;
    }

    public void dispose() {
        logger = null;
        config = null;
        instance = null;
    }
}




Код

package ru.selfexpression;

import java.io.File;
import java.io.FileNotFoundException;

public class Configuration {
    private String confFileName;

    public Configuration(String confFileName) {
        this.confFileName = confFileName;
        File file = new File(confFileName);
        if(!file.exists()) {
            try {
                throw new FileNotFoundException("File \""+ confFileName +"\" not found");
            } catch (FileNotFoundException e) {

            }
        }
    }
    public String toString() {
        return "Configuration: "+confFileName+"\n"+
                "key1 = value1; key2 = value2; key3 = value3";
    }
}


Код

package ru.selfexpression.test;

import ru.selfexpression.Infinite;
import java.io.File;

class Test {

    public Test() {
    }
    private static String getHomeDir(String arg) {
        File file = new File(arg);
        if(!file.isDirectory()) {
            throw new IllegalArgumentException("\""+arg+"\" It not directory");
        }
        return arg;
    }
    private static String getLogName(String arg) {
        if(arg.length()==0) {
            throw new IllegalArgumentException("\""+arg+"\" invalid file name");
        }
        return arg;
    }
    public static void main(String arg[]) {

        String homeDir = null, logName = null;
        if(arg.length==2) {
            homeDir = getHomeDir(arg[1]);
        }
        if(arg.length==4) {
            homeDir = getHomeDir(arg[1]);
            logName = getLogName(arg[3]);
        }
        Infinite infinite = Infinite.getInstance();
        if(homeDir!=null) {
            System.setProperty("infinite.home", homeDir);
            infinite.init(homeDir);
        }
        if(logName!=null) {
            //infinite
        }
   }
}


Это сообщение отредактировал(а) diablero - 20.6.2007, 10:05


--------------------
Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ...
PM MAIL   Вверх
Stampede
Дата 19.6.2007, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



diablero, c почином! smile

Для начала в общем неплохо. Замечания такие.

1. Название пакета. Принятая в Java схема именования пакетов помимо всего прочего служит цели по возможности разнести пространства имен разных производителей, дабы минимизировать риск конфликта имен. Для этого предлагается начинать название пакета с префикса, который хоть как-то гарантирует уникальность - с домена конторы, записанного задом наперед. То есть если у проекта Апачи есть домен apache.org, то пакеты Java, разрабатываемые под его крышей, имеют вид org.apache.*.

Ты сейчас выбрал имя ru.infinite. Но домен infinite.ru уже существует, и если только это не твой домен (в чем я сильно сомневаюсь), то в будущем это может быть чревато ненужными осложнениями. Идеологически более правильно было бы пойти сейчас на сайт любого регистратора (например, www.webnames.ru) и если не зарегистрировать, то хотя бы подобрать себе свободный, незанятий домен.

2. Название проекта. Ты пока что просто подобрал название, доставшееся от nerezus'а, Hunger. Вряд ли это имя отражает суть твоего начинания. Между тем название проекта - это исключительно важный момент. "Как вы яхту назовете, так на ней и поплывете" (с) smile Поэтому предлагается начать именно с поиска хорошего названия. Потом менять на ходу будет достаточно трудно, да и душой уже прикипишь.

У меня еще есть замечания по коду, но давай мы сначала решим эти два вопроса.


Это сообщение отредактировал(а) Stampede - 19.6.2007, 18:56


--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
diablero
Дата 19.6.2007, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 3.12.2006
Где: Аркхэм

Репутация: 2
Всего: 5



infinite.ru был свободен.

Исправил...


--------------------
Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ...
PM MAIL   Вверх
Stampede
Дата 20.6.2007, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Цитата(diablero @  19.6.2007,  13:28 Найти цитируемый пост)
infinite.ru был свободен.


Смотрим:

Цитата
domain:     INFINITE.RU
type:       CORPORATE
...
registrar:  RUCENTER-REG-RIPN
created:    2005.11.22
paid-till:  2007.11.22
source:     TC-RIPN


Но да ладно. Значит, говоришь, ru.selfexpression? Ну что ж, нормально. А насчет Tools точно уверен? Больше походит на название класса-утилиты... Впрочем, хозяин - барин.

Теперь следующее. Я бы хотел, чтобы ты создал папку, которая будет домашней директорией всей проги, а в ней такую структуру:
  • tools // или tools-test, или как-нибудь еще - это и будет домашняя директория
    • conf
    • log
Для начала хватит. Это нужно для того, чтобы файлы, которых со временем будет все больше, не валялись вперемешку.

Далее, в командной строке запуска проги предусмотри два необязательных аргумента: (1) путь к домашней директории и (2) имя файла конфига. Дефолтным значением для первого пусть будет текущая (рабочая) директория, а для второго - какое-нибудь фиксированное имя, например, tools.properties.

Содержимое log4j.properties придется подправить, чтобы он открывал лог-файл относительно домашней (а не текущей!) директории. По счастью, log4j понимает переменные окружения, так что это можно указать таким образом:

Код

log4j.appender.File.file=${tools.home}/log/application.log


Соответственно, переменную tools.home нужно будет выставить в коде (через System.setProperty()) до вызова PropertyConfigurator.configure(fileName). То есть не в конструкторе, а в методе init(), потому что конструктору синглтона мы никакие параметры передать не сможем. Сам файл log4j.properties удобно будет засунуть в директорию conf, чтобы все конфиги были у нас в одном месте. Разумеется, при этом надо будет не забыть скорректировать логику формирования полного пути к этому файлу относительно домашней директории.

Теперь по коду:

1. Конструктор класса Configuration пусть принимает имя файла конфига. Хорошо также отображать это имя в выводе описания конфига. Что-то вроде:

Цитата
Configuration: file C:\tools\conf\tools.properties
param1=value1
param2=value2
...



2. В самом конце метода init() надо будет дернуть метод Configuration.toString() и вывести полученную строку в лог. Так у нас будет сохраняться полная история, что, когда и с какими параметрами мы запускали.

3. Класс Tools не должен никому давать свой логгер! Я уже писал об этом. Log4j позволяет как угодно тонко настраивать уровни и форматы вывода, но вся эта логика основана на иерархии пакетов, и если мы предоставим себе возможность пользоваться одним общим логгером на всех, то сами спрвоцируем себя на "насилование" (abuse) полезного инструмента.

4. В классе test (кстати, в Java названия классов принято писать с большой буквы) нужно проанализировать аргументы командной строки, получить экземпляр синглтона, и запустить его инициализацию. Больше там ничего не нужно. Обо все остальном должен позаботиться главный клас приложения.

Вот так вот пока.


Это сообщение отредактировал(а) Stampede - 20.6.2007, 00:08


--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
diablero
Дата 20.6.2007, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 3.12.2006
Где: Аркхэм

Репутация: 2
Всего: 5



Отредактировал свой пост выше, в котором я код выкладывал. Потому, что есть парочку вопросов.

1. Чего - то я не пойму как быть с логером. В приватном конструкторе я его инициализирую относительно папки проета. 
    А как быть при вызове метода init() ? Логер же нужно перенастроить. 

2. 
Цитата

3. Класс Tools не должен никому давать свой логгер! Я уже писал об этом. Log4j позволяет как угодно тонко настраивать уровни и форматы вывода, но вся эта логика основана на иерархии пакетов, и если мы предоставим себе возможность пользоваться одним общим логгером на всех, то сами спрвоцируем себя на "насилование" (abuse) полезного инструмента.


Я чего-то не могу понять как будет происходить логирование.  Если не трудно покажи на коде.

3. Как задать имя лог файла? Через переменные окружения или там есть какой-то метод?

Это сообщение отредактировал(а) diablero - 20.6.2007, 10:14


--------------------
Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ...
PM MAIL   Вверх
Stampede
Дата 20.6.2007, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Хорошо, смотри:

Код

package ru.selfexpression;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import java.io.File;

public class Infinite {
    private static Infinite instance = new Infinite();
    private Configuration config;
    private Logger logger;
    private String homeDir;

    private Infinite() {
    }

    public static Infinite getInstance() {
       return instance;
    }

    public void  init(String homeDir) {
        this.homeDir = homeDir;
        System.setProperty("infinite.home", homeDir);

        PropertyConfigurator.configure(homeDir+"/conf/log4j.properties");
        logger = Logger.getLogger(Infinite.class);

        config = new Configuration(homeDir+"/conf/infinite.properties");
        logger.info(config);
    }

    public Configuration getConfiguration() {
        return config;
    }

    public void dispose() {
    }
}


Код

package ru.selfexpression.test;

import ru.selfexpression.Infinite;

class Test {
    public static void main(String args[]) {
        String homeDir = (args.length > 0)? args[0] : System.getProperty("user.dir");
        Infinite.getInstance().init(homeDir);
   }
}


Теперь комментирую. Обрати внимание, что код стал намного короче. Это особенно важно для тестового класса. Если тесты делать длинными, то писать их будет в лом. А надо, чтобы было в радость smile Я с этой целью маленько упростил задачу: пускай имя конфиг файла будет зашито в коде. Ничего страшного: потом, если понадобится, добавим еще параметр. Зато, как ты можешь видеть, сам по себе запуск проги из тестового класса пишется в две строчки.

Теперь по главномк классу. Я ведь тебе намекал, что в конструкторе ничего особо полезного сделать не получится, поскольку мы еще не знаем путь к домашней директории. Ну так и незачем тогда вообще его засорять - оставим его пустым. Сам по себе приватный дефолтный конструктор нам нужен, чтобы мы случайно (или кто-то другой по злому умыслу) не унаследовали от главного класса.

Я также убрал лишние проверки и выбрасывания исключений. В том виде, в котором они у тебя были, от них пользы все равно никакой. Когда у нас наберется побольше кода, тогда и обсудим стратегию обработки ошибок, лады?

Еще один важный момент в реализации синглтона: создавать инстанс надо прямо при объявлении статической переменной. Тогда он гарантированно создастся до первого обращения к методу getInstance(), что избавит нас от необходимости делать проверки и объявлять его синхронизированным. Это, в общем, азбука паттерна Синглтон.

Ну вот, а теперь ты расскажи, что у тебя получается, и какие пока ощущения от работы над проектом. Да, укажи, какой IDE пользуешься.

До связи.


Это сообщение отредактировал(а) Stampede - 20.6.2007, 19:39


--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
diablero
Дата 20.6.2007, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 3.12.2006
Где: Аркхэм

Репутация: 2
Всего: 5



Цитата

 Когда у нас наберется побольше кода, тогда и обсудим стратегию обработки ошибок, лады?

Договорились. 
Цитата

Ну вот, а теперь ты расскажи, что у тебя получается, и какие пока ощущения от работы над проектом.

Пока как все будет мне не ясно. Но уже из того что есть я извлек много пользы для себя. Одно дело изучать самому, другое, под руководством знающего человека. Ощущения только положительные, интерес не только не пропал, но и обострилсяsmile
Жду заданий...
Цитата

 Да, укажи, какой IDE пользуешься.

IntelliJ IDEA 5.0


--------------------
Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ...
PM MAIL   Вверх
Stampede
Дата 20.6.2007, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Ага, отлично.

Давай теперь сделаем загрузку конфигурации из файла. Нужно также завести несколько переменных в конфиге и определить для них геттеры. Переменные такие:
  • String fileEncoding
  • String encryptionKey
  • int maxConnections

Загрузку лучше вынести в отдельную функцию load(). Обрати внимание, что ключи для пропертей принято писать с маленькой буквы, разделяя слова точкой. Строки ключей можно определить как константы, хотя в общем не обязательно.

Каждую переменную инициализируй дефолтным значением. Это позволит минимизировать объем конфигурирования. Метод toString() пускай выводит реальные данные конфига (непосредственно из переменных).

Да, еще попрошу не редактировать исходный пост, а постить новый код. Это чтобы тем людям, которые позднее будут читать эту ветку, была более понятна логика изменений.


--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1469 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.