Цель заброшена
Автор не отписывался в цели 8 лет 9 месяцев 7 дней
Дневник цели
Домашним заданием было написать клиентскую часть прототипа онлайн чата.
Знаете, пару месяцев назад, мне казалось, что для таких задач нужно очень много знаний и упорства. А сейчас, когда я уже познакомился с миром программирования, с большим количеством библиотек. Понимаю, что для большинства программ по сути не требуется большого количества знаний, нужно лишь немного усидчивости чтобы освоить азы и использовать готовые наработки фреймворков. Но я бы хотел достичь большего. Я хочу стать одним из тех людей, которые изобретают новое, которые стоят у открытия технологий. Думаю мне предстоит еще долгий путь путь обучения длинною в жизнь.
А пока рад представить очень простенький прототип чата, на данный момент в нем нет регистрации, и говорить он может только с сервером, который будет вас передразнивать, возвращая ваше же сообщение. Приложение разделено на сервер и клиент. Сервер открывает порт по адресу localhost:8080. А клиент подключается по этому адресу и шлет на него сообщения. Думаю можно продолжить этот проект в свободное время.
На случай если захотите потестить, внизу ссылки, на серверную и клиентскую часть. Сначала нужно запускать серверную часть, потом клиентскую. Серверная часть работает в фоновом режиме, закрывать её нужно через диспетчер задач.
Решил обновить последнее домашнее задание. До этого было 2 метода, при вызове которых происходило обращение к БД. Каждый метод устанавливал соединение перед началом работы и закрывал его после того как отработает. Я решил оптимизировать данный процесс. Создавал 2 отдельных метода для установки соединения и для закрытия, соответственно исключив эти функции из методов отвечающих за отображение информации из БД. Кроме это было добавлен слушатель событий для окна. Соединение автоматически устанавливается при открытии окна и разрывается при закрытии.
Изменена логика отображения информации в форме. Ранее я передавал в методы объекты визуальных компонентов чтобы отобразить в них сразу информацию. Теперь методы обращающиеся к базе лишь возвращают значение ответа на запрос. А форма сама решает как и в каком компоненте отобразить эти данные. Это делает методы более универсальными, а архитектура приложения становится более логичной и предсказуемой.
И так, занятие началось с обзора коллекций, правда побольшей части поверхностного, преподавателю, как он сам признался, объяснять эту тему сложно, но обещал подготовить ответы на накопившиеся вопросы к следующему занятию. После чего перешли к сетевым соединениям. Рассмотрели работу с сокетами написав простой консольный сетевой чат, правда говорить там пока можно только с самим собой :). После чего изучали многопоточность и вынесли отдельные соединения в отдельные потоки.
В качестве дз нужно написать клиент на SWING для сетевого чата.
Также завтра у меня начинается курс Android - 1. Еще пару комментариев и у меня будет новый уровень на сайте, и я смогу создать для этого курса отдельную цель. Буду рад если кто-то из вас даст мне лишний повод тут что-то написать :)
Руслан, native - в переводе с английского "родной", т.е. технология, родная для системы. Libgdx, в частности - отдельный фреймворк для кроссплатформенной разработки (обертка, обстрагирующая несколько технологий) и не смотря на то, что он тоже на java, он не является native. Я с ним не особо работал, но из движков, на втором месте, после Unity, у меня стоит этот libgdx.
Как я уже говорил в комментарии выше, я с libgdx особо не работал, поэтому не совсем правильную инфу написал. Я сейчас присмотрелся и понял, что libgdx - это фреймворк, а не движок, как unity3d. Почти все мне сказала книга, которую я сейчас читаю про разработку на android "Фреймворк позволяет вам контролировать каждый аспект вашей среды разработки игр. Правда, вам самим придется разбираться, как именно решить ту или иную задачу", движок же является абстракцией более высокого уровня(менее гибкая, но быстрая разработка).
И еще касательно libgdx, опять же из книги "Работает ... на Android без модификаций кода". Хотя здесь можно задать еще вопрос о том, имеется в виду модификация средствами программиста, или программная? Если про программную, то это 100% native получается, но я в этом сомневаюсь, надо где-то уточнить.
Закончили знакомство с библиотекой LibGdx. После рассмотрения ДЗ было введение в построение интерфейсов на SWING, рассмотрели основные компоненты и лайоут-менеджеры и контейнеры. После этого рассмотрели простой пример подключения к БД и взаимодействия с ней.
Ссылки:
Домашнее задание
Решение ДЗ
Код преподавателя
Куда пропал:
В этот раз я задержался особенно сильно, это связано с тем, что я пытался взяться за еще один проект, по продвижению одной выставочной площадки в социальных сетях. К сожалению, это оказалось более трудозатратным делом, чем я предполагал. В итоге я решил отказаться, от каких-либо посторонних проектов, не связанных с программированием. Если я действительно хочу преуспеть в обучении за пару месяцов, от 0 до Junior'а, то нужно посвятить этому все свое время между небольшими перерывами на отдых от умственной усталости.
Что делали:
Продолжали развивать проект на LibGdx. В этот раз танкам добавили физику, научили сохранять энерцию движения, дрифтить, толкаться, а в качестве домашнего задания, научили их стрелять.
Ссылки:
Домашнее задание
Решение ДЗ
Код преподавателя с комментариями.
Немного задержался.
В этот раз задание было связано с кодом, который преподаватель писал во время трансляции. Однако я решил его заново воспроизвести самостоятельно. Но на всякий случай, прикладываю в этот раз также архив проекта преподавателя.
Домашнее задание
На третьем занятии кратко рассмотрели ДЗ, после чего рассматривали пример создания простого приложения на основе LibGDX. Приложение было следующим:
- На поле появляются танки, один игрока и куча ИИ.
- Такн игрока слушает нажатия клавиш управления и может двигаться, поворачивая текстуру по направлению движения, может плавно вращаться на месте.
- ИИ движутся в рандомном направлении.
Думаю, что текст и готовое ДЗ скину вместе, как только будет готово ДЗ.