
Sunday, September 9, 2012
Java Практика - Занятие 6

Thursday, July 12, 2012
Java Практика - Занятие 5
На пятом занятии я решил остановиться на использовании коллекций, как альтернативу применению массивов для хранения наборов данных. Интерфейсы коллекций в Java обеспечивают весь необходимый инструментарий для работы с различными наборами данных, поэтому их употребление, во-первых, повышает скорость разработки программ, а во-вторых, улучшает качество кода за счет повторного использования уже написанного и отлаженного кода. Про коллекции я рассказывал на уроке 10 в курсе Java для тестировщиков. Так как применение коллекций упрощает разбираемый пример, я немного усложнил логику приложения, чтобы сделать ее более интересной. В дополнению к работе над разбираемой задачей в конце занятия было поставлено одна интересная задача для самостоятельной работы.
На этом занятии мы рассмотрели не все интерфейсы коллекций и возможные варианты их использования. Это еще предстоит в будущем. Пока что мы остановились только на интерфейсах Collection, List, Map. Также рассмотрели использование итератора для прохождения коллекции и возможного удаления элементов.
Домашнее задание для этого занятия:
Чтобы откомпилировать и запустить этот пример, выполните следующие команды:
Ну и, собственно, видео занятия:
На этом занятии мы рассмотрели не все интерфейсы коллекций и возможные варианты их использования. Это еще предстоит в будущем. Пока что мы остановились только на интерфейсах Collection, List, Map. Также рассмотрели использование итератора для прохождения коллекции и возможного удаления элементов.
Домашнее задание для этого занятия:
- Добавить Map продуктов в класс Deal
- Изменить методы getCost() и getSum(), чтобы они работали, используя Map продуктов.
- Добавить Map свойств в Party вместо массивов keys и value.
- Исправить методы ввода/вывода для работы с Map
- Добавить возможность выбирать ранее введенный продукт при добавлении его в сделку.
Написать программу, которая заполняет матрицу (двумерный массив) нулями и единицами так, чтобы получился рисунок песочных часов. Матрица обязательно квадратная. Размер матрицы пользователь вводит с консоли.Я также написал возможное решение этой задачи, если вдруг кому-то будет очень сложно. Скачать исходные файлы можно тут: JavaPractice05.zip (5,9 KB)
Например, для матрицы, размером 5х5, должен получиться такой рисунок:
1 1 1 1 1
0 1 1 1 0
0 0 1 0 0
0 1 1 1 0
1 1 1 1 1
Чтобы откомпилировать и запустить этот пример, выполните следующие команды:
cd <каталог_куда_распаковали_архив>Также, если Вы уже умеете работать со средой разработки Eclipse, то можете импортировать этот проект в нее и запустить.
cd src
javac *.java
java Program5 - это для запуска программы о сделках
java Program5Additional - это для запуска песочных часов
Ну и, собственно, видео занятия:
Wednesday, July 4, 2012
Java Практика - Занятие 4
На четвертом занятии мы продолжили разбирать пример из предыдущего урока, немного усложнив его. Основное внимание в этот раз было уделено наследованию: класс Product мы сделали абстрактным и создали два его потомка. Также я показал, как можно использовать переопределение метода для уточнения логики в классе FotoProduct. Также немного поговорили об использовании констант в Java.
Домашним заданием к этому занятию будет сделать все то, о чем мы говорили, а именно:
Обновление: Я в очередной раз написал возможное решение этой задачи. Скачать исходные файлы можно тут: JavaPractice04.zip (4,8 KB). Запуск программы описан в предыдущем посте.
Ну и собственно видео:
Домашним заданием к этому занятию будет сделать все то, о чем мы говорили, а именно:
- Написать классы FotoProduct и BotinkiProduct
- Написать методы для расчета скидки
- Написать метод для расчета стоимости продукта с учетом скидки
- Добавить поля в классы Product и Party
Также, заданием является сделать программу рабочей после вышеуказанных изменений, а именно:
- Добавить ввод отдельных продуктов
- Добавить ввод информации о Party
- Добавить вывод информации о Party
В качестве дополнительного задания можно сделать следующее:
- Добавить вывод полей отдельных продуктов
- Усовершенствовать ввод и вывод, чтобы был более приятным для глаз :)
Ну и собственно видео:
Sunday, July 1, 2012
Java Практика - Занятие 3

На этом занятии я также впервые упомянул про одну из очень полезных книг, а именно книгу по шаблонам проектирования: Приемы объектно-ориентированного проектирования. Паттерны проектирования ("Банда четырёх": Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидс). Я считаю, что каждый программист просто обязан изучить эту книгу и по возможности использовать шаблоны в своих программах. Конечно, это не легко будет делать сразу - понимание, где и какой шаблон лучше применять, приходит с опытом. Также, не расстраивайтесь, если Вы сразу не поймете эту книгу. Продолжайте изучать программирование и больше практикуйтесь писать программы - со временем Вы поймете, насколько мощный инструмент у Вас в руках. Однако, есть небольшое предостережение по поводу шаблонов проектирования: фокусируйтесь на простых решениях проблем, прежде чем сразу браться за применение сложных "рецептов" шаблонов. Так что не забывайте: Keep It Simple :)
Задачу, которую мы решали на занятии следующая:
Необходимо реализовать программу, которая будет позволять вводить сделки купли-продажи товаров между двумя участниками. В каждой сделке может быть несколько товаров, сумма сделки рассчитывается из суммы всех товаров. Сумма каждого товара рассчитывается из его стоимости и количества. Программа должна позволить ввести информацию о сделках, сохранить ее в памяти и вывести на экран. Ввод информацию осуществляется с экрана (консоли). Количество дополнительной информацию о сделке, участнике, товаре придумать самому (больше одного поля для класса).Форматы данных для хранения информации, которые я предложил, конечно же, не самые оптимальные. Например, использование массивов вместо коллекций, а также использование double для представления денег. Но это не главное для данного примера. Также, вводить информацию с консоли - это долго и нудно, но это тоже не главное. Я не хотел углубляться в способы представления определенной информации, в способы работы с файлами или базой данных - это все темы следующих занятий. Цель этого занятия - это научится выделять объекты, строить между ними связи и попрактиковаться программировать несложную логику. Поэтому ввод с консоли тут идеально подходит, ведь надо будет подумать, как последовательно все ввести, да еще чтобы это было красиво :)
На видео я вспоминаю про метод keyboard, который позволяет вводить данные с консоли, и который я обещал выслать слушателям. Итак, вот он:
private String keyboard(String message) {Я также написал возможное решение этой задачи, если вдруг кому-то будет очень сложно. Скачать исходные файлы можно тут: JavaPractice03.zip (3,4 KB)
System.out.print(message + ": ");
Scanner scan = new Scanner(System.in);
String rez = scan.next();
scan.close();
return rez;
}
Чтобы откомпилировать и запустить этот пример, выполните следующие команды:
cd <каталог_куда_распаковали_архив>Также, если Вы уже умеете работать со средой разработки Eclipse, то можете импортировать этот проект в нее и запустить.
cd src
javac *.java
java Program
В качестве дополнительного задания, можно написать отдельные класс Keyboard, который будет содержать статические методы для ввода строки (String), целого числа (Integer) и дробного числа (Double). Методы по вводу чисел будет проверять, а число ли введено вообще, и выдавать сообщение об ошибке или требовать правильный ввод.
Ну и собственно видео:
Saturday, June 16, 2012
Java Практика - Занятие 2

Перед просмотром этого занятия можно посмотреть Урок 4 из курса Java для тестировщиков, где я как раз рассказываю про объявление функций (методов класса), аргументы функций и возврат значений из них. Там, конечно, еще и много чего другого, так что Урок 3 тоже посмотрите, если не совсем понятно, что такое объекты и "с чем их едят".
Из, собственно, практики в этом занятии я немного остановился на заданиях из первого занятия. Также мы рассмотрели, что можно вынести в отдельные подпрограммы в алгоритмах сортировки массива. А также рассмотрели алгоритм бинарного поиска в массиве, реализация которого и есть следующим заданием.
Итак, задания для самостоятельной работы:
- реализовать еще один алгоритм сортировки массива (отличный от того, что был реализован для предыдущего занятия)
- реализовать алгоритм бинарного поиска элемента в отсортированном массиве.
Ну и собственно видео второго занятия, которое, кстати, было записано в FullHD :)
Saturday, June 9, 2012
Занятия по Java
И вот я снова вернулся к преподаванию Java.
В очередной раз в компании, где я работаю, возникла необходимость
рассказать о языке программирования Java некоторым нашим сотрудникам.
Чтобы не повторятся и снова не рассказывать то, что и так уже известно и
доступно на youtube, мы решили в этом новом курсе сделать упор на
практическое применение Java.
Так как предыдущий курс Java для тестировщиков был в основном
теоретическим и ознакомительным, то в этот раз занятия будут проходить
следующим образом. Слушатели сначала самостоятельно смотрят уроки на youtube (не все сразу, а по одной или две), потом на занятии я некоторое
время резюмирую теоретический материал, на чем-то, возможно,
останавливаюсь подробнее или что-то добавляю, отвечаю на вопросы. Далее,
я разбираю какую-нибудь практическую задачку, решение которой
основывается на полученных теоретических знаниях. Ну и в конце я задаю
небольшое задание для самостоятельной работы.
Как и в прошлый раз, видео я буду записывать и выкладывать на youtube, объединяя их в отдельный плейлист. Надеюсь, что наличие практической составляющей поможет многим быстрее и лучше разобраться с Java, тем более, что многие просили о различных задачах в многочисленных комментариях.
Итак, первое занятие из курса Java практика можно посмотреть ниже. Перед просмотром этого видео, рекомендуется ознакомиться с уроком 1 и уроком 2 из курса Java для тестировщиков. Обратите также внимание на комментарии ко второму уроку, где многие поправляли ошибки, которые я допускал. Вообще, некоторые комментарии очень даже хорошие и полезные, особенно от пользователя hazartilirot .
Задания для самостоятельной работы после первого занятия:

Как и в прошлый раз, видео я буду записывать и выкладывать на youtube, объединяя их в отдельный плейлист. Надеюсь, что наличие практической составляющей поможет многим быстрее и лучше разобраться с Java, тем более, что многие просили о различных задачах в многочисленных комментариях.
Итак, первое занятие из курса Java практика можно посмотреть ниже. Перед просмотром этого видео, рекомендуется ознакомиться с уроком 1 и уроком 2 из курса Java для тестировщиков. Обратите также внимание на комментарии ко второму уроку, где многие поправляли ошибки, которые я допускал. Вообще, некоторые комментарии очень даже хорошие и полезные, особенно от пользователя hazartilirot .
Задания для самостоятельной работы после первого занятия:- Написать программу, которая выдает заданное число из последовательности Фибоначчи.
- Написать программу, которая сортирует массив чисел.
Tuesday, November 15, 2011
CDMA модем Huawei и Ubuntu Linux

На Windows-системе все оказывается очень просто. На флеш-карте находятся драйвера. Установка запускается автоматически, когда подключается устройство. После установки будет доступно приложение, запустив которое можно подключаться к интернету. Приложение называется Mobile Partner, написанное все той же компанией Huawei, и видимо, распространяется с ее модемами, а разные операторы уже изменяют текст интерфейса и картиночки на свои.

Можно установить программу Mobile Partner на Ubuntu. Вот здесь я, даже, нашел ссылку на скрипт установки (я скрипт не проверял, так что запускайте его на свой страх и риск!). А потом вот тут на ubuntuforums.org и еще вот тут на habrahabr.ru в комментариях я нашел, что устанавливать программу нет смысла. Достаточно указать системе, чтобы она переключала режим работы устройства. Необходимо выполнить следующие шаги:
- Открываем терминал
и выполняем команду lsusb
В результате получим список USB устройств, подключенных к компьютеру.
~$ lsusb
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 046d:c018 Logitech, Inc. Optical Wheel Mouse
Bus 003 Device 001: ID 12d1:1505 Huawei Technologies Co., Ltd.
Bus 003 Device 002: ID 1d6b:0001 Linux Foundation 1.1 root hub
- В
полученном списке находим модем и
обращаем вниманием на его ID. Первые
четыре символа (в моем случае это 12d1) —
это идентификатор производителя. Вторые
четыре (в моем случае это 1505) — это
идентификатор устройства.
- Теперь
выполняем в терминале следующую команду (все одной строчкой),
заменив идентификаторы производителя
и устройства на свои:
echo 'SUBSYSTEM=="usb", SYSFS{idProduct}=="1505", SYSFS{idVendor}=="12d1", RUN+="/lib/udev/modem-modeswitch --vendor 0x12d1 --product 0x1505 --type option-zerocd"' | sudo tee /etc/udev/rules.d/45-huawei1550.rules
После выполнения этой команды в каталоге /etc/udev/rules.d/ появится файл 45-huawei1550.rules, команды из которого будут прочитаны, при подключении устройства к компьютеру.
- Вынимаем
устройство, вставляем его снова — и у
вас уже не флешка, а модем, подключенный
к компьютеру. Дальше все просто — правой
кнопкой на значке сети, Редактировать
подключения, закладка Мобильные
подключения, Кнопка Добавить — выбираем
свою страну, провайдера и все! :)
P.S. Немного о скорости для тех, кому интересно. Заявленная оператором скорость передачи данных в сети EVDO Rev.B+: загрузка до 14,7 Мбит/с, передача до 5,4 Мбит/с. В реальности, конечно, все зависит от загруженности сети, удаленности от базовой станции, и количества осадков в амазонской равнине. Тестируя связь в центре Киева в полдень, загружая ролики с youtube, файлы с ex.ua и т.д. скорость у меня прыгала от 1 до 6 Мбит/с, что очень даже недурно, как для мобильного интернета.
Subscribe to:
Posts (Atom)





