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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Студенческий отдел кадров, Ваше мнение 
:(
    Опции темы
Mirkes
Дата 21.8.2011, 01:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 7
Всего: 17



В программировании на Java я новичок, но вообще программирую очень давно. 
Успел прочитать пока тлько первую главу. Случайно ткнул в эту тему. Совет хоть напишите в теме на форуме не "Ваше мнение" а "учебное пособие" или "курс лекций от..."

Теперь содержательно по задаче.
Честно говоря диплом в котором студенческий отдел кадров был бы реализован так получил бы оценку неудовлетворительно не взирая на красоту реализвции. Поясняю. Всякий отдел кадров должен хранить историю. А у Вас студент удаляется. Причем окончательно. Начиная с этого места можно не интересоваться реализацией поскольку основной пользовательский функционал нарушен.
В начале Вы даете ссылку на то, что отдел кадров "игрушечный". Однако пр анализе задачи лучше указать полный функционал (хотя бы в набросках) а потом отобрать реализуемый функционал. Иначе создается странное впечатление.
В свое время я работал в программистском кооперативе. Там у нас был девиз "Дадим заказчику не то, что он хочет, а то, что ему нужно".
Вы в начале цикла озвучили близкую по звучанию идеологию. Я понимаю, что постановка задач на программирование отдельная большая и очень неблагодарная работа. Однако заикнувшись о прохождении пути разработки от начала до конца, сделайте начало более качественным. Что бы было понятно, что некоторые решения это не головотяпств, а сознательно принятые решения потому что...

А так проект очень интересный. Хотя некоторые решения просто спорные. Например сортировка студентов по ФИО и тоько потом по другим признакам.
Вероятн лучше было бы предкусмотреть несколько вариантов сортировки. Например для военкомата нужны списки студентов, упорядоченные по году (не путать с датой) рождения, а уже потом по фамилии. Девушки их не интересуют.
Кроме того введение второго интерфеса сортировки (вроде я правильно написал - интерфейса, если нет то я о том классе, который сравнивает студентов) показало бы разумность разделения студентов и интерфейсов сортировки. 

Прошу прощения за резкость некоторых оценок, но право, Вы же профи.
Я точно знаю как трудно закончить такой проект (пришлось однажды) но желаю Вам все таки дописать.

Это сообщение отредактировал(а) Mirkes - 21.8.2011, 10:01


--------------------
Mirkes
PM MAIL   Вверх
Mirkes
Дата 21.8.2011, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 7
Всего: 17



Часть вторая. 

    public static void main(String[] args) {
        // Запуск формы лучше производить в специальном треде
        // event-dispatching thread - EDT
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                MainFrame mf = new MainFrame();
                mf.setDefaultCloseOperation(EXIT_ON_CLOSE);
                mf.setVisible(true);
            }
        });
    }


Ну и конечно же метод main - первой строкой мы создаем объект, во второй строке мы устанавливаем поведение формы при закрытии (в данном случае мы говорим, чтобы при закрытии окна заканчивалось и приложение, а третья строка содержит метод, устанавливающий, что наша форма станет видимой. И все теперь готово. Приложение можно будет запускать.
ЗАМЕЧАНИЕ: Вы явно должны были обратить внимание на несколько необычный вызов в методе main. Такой вызов связан с тем, что все события внутри системы Swing происходят в отдельном треде - Event Dispatching Thread - EDT. Желательно (я бы сказал необходимо) ВСЕ операции с графикой делать в нем, т.к. некоторые операции не являются потоко-защищенными (т.е. если вы будете обращаться к форме из разных тредов, то результат может быть не очень красивый). Если вам пока сложно точно понять принцип такого запуска - просто пользуйтесь им. Позже разберетесь. 

Рекомендация понятна (почти понятна, а что общий (главный) поток нельзя сделать потоком событий?).
Однако в первой строке, даже если читатель догадается пропустить комментарии, не создается объект, а вызывается стандартная утилита, аргументом которой является создаваемый объект ...
Я не настаиваю на стиле, он у каждого свой, но большая точность в формулировках точно бы не помешала.
Еще один вопрос, применение слэнга это результат недосмотра или осознанное решение?
Честно говоря, меня треды вместо потоков раздражают. Но если это осознанное решение - Ваше дело.
паттерн - шаблон.

Есть соображения как давать грамматическую правку? Пока не договорились привожу исходный фрагмент и корректировку
очень просто приложение 
очень простое приложение 

нам необходимо будет его усложнить
нам придется его усложнить
Вряд ли усложнение приложения является самоцелью.

Кода Вам надо будет разместить 
Когда Вам надо будет разместить 

элементов управления на форме 
элементов управления в форме 
Вроде бы общепринятое "в", а не "на".
 
провели мышкой ?
провели мышкой?

модель, а потом сама модель может используя представление показывать свое содержимое (или контроллер может 
модель, а потом сама модель может, используя представление, показывать свое содержимое (или контроллер может 

Давайте для начала создадим достаточно простое приложение, которое не умеет многое. 
Давайте для начала создадим достаточно простое приложение, которое умеет не многое. 

виде числового слайдера (спинера). 
точно что не слайдера, слайдером называется совершенно другой тип компонентов.

Опять непонимание
        // Создаем нижнюю панель и задаем ей layout
        JPanel bot = new JPanel();
        bot.setLayout(new BorderLayout());
А какой layout по умолчанию? Мы же ничего не уточнили.
Судя по некоторым косвенным признакам это Map (вроде так называется).
Потом странные антитезы 
       // Вставляем панели со списками групп и студентов в нижнюю панель
        bot.add(left, BorderLayout.WEST);
        bot.add(right, BorderLayout.CENTER);

        // Вставляем верхнюю и нижнюю панели в форму
        getContentPane().add(top, BorderLayout.NORTH);
        getContentPane().add(bot, BorderLayout.CENTER);
Для нормального человека антитезой к WEST будет EAST, а к NORTH - SOUTH.

что появяться линейки прокрутки. 
что появятся линейки прокрутки. 

Из серии пожелалок. Чтобы данные не исчезали можно использовать файлы разного вида. БД  только один из вариантов. Наверно было бы не плохо обсудить, когда и какой тип использовать. Ведь храните же Вы конфигурационную информацию не в базе данных.

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

Это сообщение отредактировал(а) Mirkes - 21.8.2011, 16:23


--------------------
Mirkes
PM MAIL   Вверх
Mirkes
Дата 21.8.2011, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 7
Всего: 17



Часть третья Базы данных

позволяет однообразно получать доступ
позволяет единообразно получать доступ

набор столбцов и любой количество строк
набор столбцов и любое количество строк
набор столбцов и произвольное количество строк

о чем буджет идти речь в дальнейшем
о чем будет идти речь в дальнейшем

<величина_поля_1> - это реальное значение поля для новой записи 
может везде писать значение? величина больно смахивает на допустимое число символов.

в тексте в части 3 написано
        g = new Group();
        g.setGroupId(1);
        g.setNameGroup("Первая");
        g.setCurator("Доктор Борменталь");
        g.setSpeciality("Создание собачек из человеков");
  
      groups.add(g);

а в текущей
INSERT INTO STUDENT_GROUP (GROUP_NAME, CURATOR, SPECIALITY)
VALUES ("Первая", "Доктор Борменталь", "Делание человеков из собачек")
  
Лучше, наверное сохранять приемственность.
   

понятных выражений - >, <, =, >=, <=, <> (больше, меньше, равно, больши или равно, меньше или равно, не равно). 
понятных выражений - ">", "<", "=", ">=", "<=", "<>" (больше, меньше, равно, больши или равно, меньше или равно, не равно). 
Это только предложение. Но зная SQL я при первом прочтении впал в ступор от оператора сравнения "- >". Потом конечно разобрался. А если человек не знал? решит что это как ссылка в с.

неколько условия, соединяя 
неколько условий, соединяя 

Предложение
имеет автоматическое увеличение. Кроме 
имеет автоматическое увеличение значения при добавлении новой записи. Кроме 

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

Вот здесь не уверен. Но в том диалекте SQL, с которым я работал команда удаления имела несколько другой вид
У Вас   DELETE FROM STUDENTS WHERE student_id=10
У меня DELETE * FROM STUDENTS WHERE student_id=10

группы с ИД 2 и 
группы с groupId = 2 и 

как в возрастающем так и возрастающем порядке
как в порядке возрастания значений, так и в порядке убывания значений 
или
как в порядке возрастания, так и в порядке убывания значений 

отсутствуют точки в конце предложений
Когда установка предложит Вам завести нового пользователя - можно это сделать, но надо запомнить введенные параметры. В принципе нам этот пользователь не понадобится. Можете выбрать "Skip Sign-Up" 
Далее Вы можете выбрать все установки по умолчанию. НО НАДО остановиться на экране, где Вас попросят установить поддержку языка. Установите второй пункт из трех - поддержка UTF-8 
И наконец на экране смены пароля для администратора поставьте пароль root. Все примеры работы с базой рассчитаны на него. Хотя если вам захочется другой - будет повод повозиться еще 

в каталог <MySQL_DIR>/bin. И запустите команду. Само 
в каталог <MySQL_DIR>/bin. И запустите команду, приведенную ниже. Само 
Я успел подумать о том, какие же команды MySQL я знаю и установил что с консоли я с ней не работал. И только после этого нашел команду в тексте.

для заполнения нашей базы данных некоторыми данными
Глаз режет, но предложений нет.

Поля для ИД групп и студентов 
Поля для идентификаторов групп и студентов ???
Честно говоря эти ИД сильно режут глаза. Может их всеже как-то внятно назвать? Или явно сказать, что уникальные поля в таблицах мы обобщенно будем называть ИД ами?

данных разрабатывает драйвера для общения 
Вообще говоря по правилам Русского языка драйверы.

обратите внимание, что большинство операция для 
обратите внимание, что большинство операций для 

Коннектов получить - установить соединений. или открыть сеансов работы?
Это я опять занудствую по поводу слэнга, поскольку пока не знаю причину его появления в тексте.

 для запуска на потребуется подключить 
 для запуска нам потребуется подключить 
но скорее
 для запуска Вам потребуется подключить 

К сожелению время истекло. С удовольствием дочитаю завтра. действительно с удовольствием.


--------------------
Mirkes
PM MAIL   Вверх
Mirkes
Дата 22.8.2011, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 7
Всего: 17



командная строка для запуска будет выглядеть вот так 

java -cp .;mysql-connector-java-3.1.13-bin.jar TestJDBC 

неплохо было бы пояснить, что -cp означает CLASSPATH (если я конечно правильно понял, точка означает *.* - все файлы из текущего каталога, а ; разделитель аргументов.

теперь они порождают исключение SQLException.
теперь они могут порождать исключение SQLException.

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

Еще раз спасибо, очень интересно и по большей части понятно.

Это сообщение отредактировал(а) Mirkes - 22.8.2011, 15:05


--------------------
Mirkes
PM MAIL   Вверх
Mirkes
Дата 22.8.2011, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 7
Всего: 17



Часть пятая 

Список - model и listeners. 
Список - model и listener. 
или
Список - models и listeners. 
Наверное первый исправленный вариант лучше, поскольку термин listener, а про множественное число в английском читатель знать не обязан.

Предварительно сделаем вот какое замечание - наш список на самом деле уже имеет некоторую модель. Но она не является стандартной и что она умеет точно - мы не знаем.

Можно вопрос на понимание. В тексте класса не замены модели. То есть поставлена модель по умолчанию - то что ставится всегда, когда пользователь(программист) не указал нужного значения явно. Или в этом случае ставится что кому под руку попадется и результат зависит от каких-то внешних условий? Например, от версии JVM. Может речь должна идти не о том, что свойства до конца не известны, наверное они документированы, а о том, что для нашей работы эта модель-затычка не подходит?

        JButton add = new JButton("Add");
        JButton del = new JButton("Del");
Существует такой набор правил по оформлению текстов. Одно из правил звучит как "не сокращ". Не стоит сокащать то, что вылазит наружу. Пусть лучше будет Delete. Позиционируя свой текст как учебное пособие Вы взвалили на себя еще и воспитательную функцию.

Вопрос на понимание.
Почему не установить List нужную модель один раз? Зачем постоянное приведение? И что все модели для одного шаблона (паттерна) всегда приводимы? Или это верно только для списка?
В этом месте осталась недосказанность.



--------------------
Mirkes
PM MAIL   Вверх
Mirkes
Дата 23.8.2011, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 7
Всего: 17



Часть шестая

Добавим две кнопки внизу списка групп 
Добавим две кнопки ниже списка групп 
или
Добавим две кнопки под списком групп 

Итак, давайте сделаем первую версию нашего интерфейса
Итак, давайте сделаем новую версию нашего интерфейса
Ведь было уже две версии интерфейса, хотя одна консольная, другая убогая. Но они были.

нашу панель для групп не сжимаемую по ширине
нашу панель для групп не сжимаемой по ширине

Добавим пункты меню "Отчеты", где мы сможем получать различные отчеты. На сегодня у нас только один отчет - список всех студентов. 
ВИдимо лучше "Создадим меню и добавим в него пункт "Отчеты"...

Вопрос на понимание. В одном файле можно создавать несколько классов? То есть можно создат один public и сколько угодно не public?
Они будут доступны во всем пакете или только в том файле, в котором описаны. Или речь идет о вложенном классе? Но вложенный класс вроде бы должен описываться внутри описания объемлющего класса. Разве нет?

        // Делаем спин-поле
        // 1. Задаем модель поведения - только цифры        // 2. Вставляем в панель
        SpinnerModel sm = new SpinnerNumberModel(2006, 1900, 2100, 1);

Господа, ради бога не уподобляйтесь дикторам радио и ТВ, не знающим разницы междй цифрами и числами. Вы де не пробуете назвать метод SpinnerDigetModel

Тем более, что бОльшая часть работы 
Тем более, что большая часть работы 


--------------------
Mirkes
PM MAIL   Вверх
Mirkes
Дата 23.8.2011, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 7
Всего: 17



Часть 6.
фрагмент 
        c.gridwidth = GridBagConstraints.RELATIVE;
        c.fill = GridBagConstraints.BOTH;
        btnOk.setName("OK");
        // Добавляем листенер для кнопки
        btnOk.addActionListener(this);
        // Устанавливаем это правило для нашего компонета
        gbl.setConstraints(btnOk, c);
        // Добавляем компонент
        getContentPane().add(btnOk);

отличается по качеству от трех предыдущих видимо стоит привести его к следующему виду

       // Кнопка ОК Устанавливаем имя для последующей идентификации в обработчике события
        btnOk.setName("OK");
        // Добавляем листенер для кнопки
        btnOk.addActionListener(this);
        // После него можно будет еще помещать компоненты
        c.gridwidth = GridBagConstraints.RELATIVE;
        // Растягиваем компонент по всему пространству для него
        c.fill = GridBagConstraints.BOTH;
        // Компонент по прежнему привязан к левому краю (левой части?)
        // Устанавливаем это правило для нашего компонета
        gbl.setConstraints(btnOk, c);
        // Добавляем компонент
        getContentPane().add(btnOk);

аналогично стоит откомментировать один раз и следующий фрагмент

       // Кнопка Cancel. Устанавливаем имя для последующей идентификации в обработчике события
        btnCancel.setName("Cancel");
        // Добавляем листенер для кнопки
        btnCancel.addActionListener(this);
        // Все настройки менеджера размещения сохраняем
        // Устанавливаем это правило для нашего компонета
        gbl.setConstraints(btnCancel, c);
        // Добавляем компонент
        // Добавляем компонент
        getContentPane().add(btnCancel);

Текст помеченный красным по-моему можно спокойно выкинуть, поскольку он ни на что не влияет. Или я ошибся?


        setBounds(((int) d.getWidth() - GroupDialog.D_WIDTH) / 2, ((int) d.getHeight() - GroupDialog.D_HEIGHT) / 2,
                GroupDialog.D_WIDTH, GroupDialog.D_HEIGHT);

Я не понял приведения типа d.getWidth() к int вместо использования d.width? Стоило ли брат плавающее число для приведения к целому виду?


    // Возврат года, который установлен на форме
    // Возврат года, который установлен в форме

    // Возврат группы, которая установлена на форме
    // Возврат группы, которая установлена в форме


                    // Задаем ему режим модальности - нельзя ничего кроме него выделить
видимо не совсем точно - ни один элемент НАШЕГО приложения, кроме тех, что находятся в диалоге не будет реагировать на попытки работы с ним.

Отметим, что ИД студента должно где-то храниться и если этот ИД будет больше 0 
Отметим, что ИД студента должен где-то храниться и если этот ИД будет больше 0 

Но я думаю, что это больше затруднит нам работу
Но я думаю, что это только затруднит нам работу

 Он вообщем-то совсем ничего не делает, но правила языка требуют. 
Он не делает ничего специфичного для класса Student, но он необходим для инициации стандарного набора служебных полей.

    // Второй параметр содержит знак - добавление студента или исправление
    // Второй параметр содержит признак - добавление студента или исправление

        // Сделаем имя такое же, как требуется в баще данных - М/Ж
        // Сделаем имя такое же, как требуется в базе данных - М/Ж

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


--------------------
Mirkes
PM MAIL   Вверх
vav84
Дата 20.10.2011, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день!

Огромное спасибо автору проекта за популярное обьяснение актуальных технологий программирования.  Так или иначе но постепенно обьявления о вакансиях Java-разработчиков шаг за шагом перестают быть для меня набором бессмысленных аббревиатур. Боюсь предположить сколько времени мне бы пришлось на изучение всех этих простых истин. 
При изучении раздела 12 "Application Server & Enterprise Java Beans" в EJB- части у меня возникла проблема, причем там где совсем ее не ждал.  Суть такова: не могу создать класс сущностей из БД. Конкретно: JDBC-драйвер находится и подключается, в мастере нового соединения с БД ввожу адрес/порт, имя БД, логин/пароль жму "Проверить соединение"- все хорошо. Ввожу имя JNDI "jdbc/Students" и кликаю ОК: система ищет схему БД но не находит никаких доступных таблиц((((  и в тоже время не выводит никаких предупреждений или сообщений об ошибках. 
Исходные данные:
NetBeans IDE 7.0.1 (Build 201107282000)
Java: 1.6.0_26; Java HotSpot™ Client VM 20.1-b02
MS SQL Server 2005, пользователь sa.
Господа-знатоки, в чем может быть причина?)))

PM MAIL   Вверх
Kangaroo
Дата 25.10.2011, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

Репутация: 21
Всего: 104



vav84, у меня были проблемы в связке MS SQL/Java с правами для пользователя sa. Попробуй другую БД.


--------------------
Lost....
PM MAIL MSN   Вверх
Pawl
Дата 10.2.2013, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 7
Всего: 28



Спасибо за публикации, некоторые были мне очень полезны. Было бы неплохо, если бы Вы такзе подробно пояснили процесс совместной разработки проекта (я имею ввиду работу с репозиториями: настройку IDE, размещение и получение файлов проекта и пр.).
Спасибо!


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
AntonSaburov
Дата 10.2.2013, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



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

vav84 - EJB делались для достаточно"пожилой" версии NetBeans и Glassfish, так что их работоспособность уже вряд ли реальна. Пока нет возможности сделать новую редакцию даного курса. Хотя кто его знает - может быть смогу осилить. Но на это надо время.
PM MAIL WWW ICQ   Вверх
Romper
Дата 18.4.2013, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



перезалейте пожалуйста картинки, вроде все не работают

например тут http://java-course.ru/student/book1/servlet/ нет http://java-course.ru/students/images7/figure_7_1.png
PM MAIL   Вверх
Rasool
Дата 13.6.2014, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Глюк

Это сообщение отредактировал(а) Rasool - 13.6.2014, 15:06
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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