Продолжаю рубрику «Полензный софт»😉
В основе любого дела лежит простая истина «Чтобы делать дело хорошо, нужно много практики» добавлю еще, что не просто практики, а ПОСТОЯННОЙ практики.
Например я уже практически полностью разучился кодить, хотя нет, не совсем так… Сейчас чтобы написать какую-либо программу у меня займет в разы больший отрезок времени, но я ее сделаю, это факт, дело в том, что раньше когда я кодил каждый день по несколько часов, я даже в обычных бытовых делах «строил алгоритмы» и «искал более простые решения», сейчас ничего такого нет… Так и с писательством — чтобы писать хорошо, нужно писать часто и много. И постепенно переводить количество в качество. Поэтому и возьмем за правило писать 750 слов в день, на любую тему, для себя, никому не показывая и т.д., но — ПИСАТЬ КАЖДЫЙ ДЕНЬ. Для этого и был создан сервис 750words. Он — это некий аналог личного дневника, но дневника, который постоянно тебя «подпинывает» если ты не написал 750 слов. Есть всякие ачивки, периодически проводятся разные марафоны и все такое прочее. Все что вы напишите читать можете только вы, для английских текстов вроде бы даже возможен анализ на тему настроения с каким человек пишет своим слова. Для русского я такового пока не обнаружил, а жаль. Что можно сказать в итоге, я хоть и пользуюсь сервисом всего третий день, но кучу его плюсов для себя уже открыл и врят ли теперь заброшу его в ближайшее время, хотя тексты пока что похожи на обычный мой поток мыслей, эх( А всем кто хочет повысить навык своего писательского мастерства aka «писакаскилла» — велкам ту 750слов;)
З.Ы. Возможно в дальнейшем, особо удачные куски я буду выкладывать вот сюда. Кстати первоначальный вариант этого поста был написан именно на 750словах;)
Новый пост из цикла «Полезный софт», про Evernote и Workflowy уже рассказано, настал черед Git’a 😉
Для начала, что такое Git.
Git (гит) — распределённая система управления версиями. Проект был создан Линусом Торвальдсом для управления разработкой ядра Linux, первая версия выпущена 7 апреля 2005 года. Программа является свободной и выпущена под лицензией GNU GPL версии 2. ©Wiki
На данный момент без Гита не обходится практически ни одна командная разработка, большинство программистов-одиночек также имеют свои репозитории на гите и все чаще при приеме на работу HR’ы спрашивают помимо всего прочего и ссылку на ваш репозиторий. Окей хорошо, но кто-то думаю уже завис на фразе «система управления версиями», что это? И снова почитаем вики:
Система управления версиями — программное обеспечение для облегчения работы с изменяющейся информацией. Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение, и многое другое. Такие системы наиболее широко используются при разработке программного обеспечения для хранения исходных кодов разрабатываемой программы. Однако они могут с успехом применяться и в других областях, в которых ведётся работа с большим количеством непрерывно изменяющихся электронных документов.
По факту, гитом могут пользоваться практически все от программистов до поваров, в наше время у всех есть какая-либо информация изменяющаяся с течением времени.
Как удобнее всего пользоваться?
Лично я использую SmartGit (в гугле найти не сложно) и считаю его лучшим git-клиентом для начинающих юзеров. Плюсы:
- Кроссплатформенный
- Бесплатный для некоммерческого использования
- Имеет графический интерфейс
- Внешне очень похож на различные файловые-менеджеры (тотже ТоталКомандер)
Конечно, просто сразу сесть и начать пользоваться получится далеко не у всех, но в сети уже существует огромное количество уроков по ГИТу благодаря которым освоить его не составит труда. По времени займет это думаю около 2х часов, зато польза огромнейшая.
Я уже ни раз писал, что обычно я кодю при просмотре какого-нибудь трэша, вот теперь поподробнее — какого именно;)
Сразу предупреждаю: большинство фильмов в этом «списке» 18+++, да и вообще довольно «мерзкие»
- Серия «Вой», про который я писал в посте «Киношки о волчках». Собственно, большинство жутиков про оборотней можно отнести на первое место данного списка;
- Фильмы про маньяков (2001 маньяк, маньяк-полицейский, зодиак и прочая лажа) — фильмы в которых вообще не нужно думать, их даже смотреть не надо (только первые минут 5);
- И на третьем месте ужастики про нападение акул/пираний/всякой живности — аналогично со вторым, думать не надо, смотрим в начале кто ГГ и в конце выживет ли.
Вот так, почему я включаю такое? Музыка конечно хорошо, иногда даже намного лучше фильмов, но она и отвлекает намного больше (особенно если музыка хорошая). А жутики дают возможность периодически «отвезти взгляд» от кода (с двумя мониками особенно это дело удобно), а потом (лично мне) как бы взглянуть заново и увидеть все свои косяки.
З.Ы. Вот такой короткий пост н4м;)
В связи с тем, что мне предстоят поиски второй работы (не фриланс и не какая-нибудь фирма однодневка) решил быстренько восстановить знания по Андройду, методологиям разработки, СУБД и прочим и подобным. Поскольку качество и читабельность моего кода мне самому крайне не нравится — буду исправляться, в связи с этим посты по играм временно приостанавливаются, а начинаются посты по «учебе», ну а в моем случае восстановлению знаний.
Буду писать что читаю, какие уроки выполняю, примеры кода выкладывать и т.д. Придется трудно, т.к. абстрагироваться от всего того что уже знаешь — это ппц. Часть действий я уже на автомате делаю, даже не задумываясь почему так, а иногда это неправильно — придется ломать привычки=(
Итак цель: в кротчайшие сроки (допустим до января 17ого) исправить все свои косяки в написание кода
Средства: все учебники и сайты какие попадутся, стэковерфлоу, друзья кодеры/программеры, различные курсы и уроки онлайн
Что нужно знать мидлу:
- Опыт коммерческой разработки от 3+ лет (ну это есть, хотя подтвердить будет трудновато, ох уж эти неофициальные работы);
- На данный момент нужны знания Android API 14 и выше;
- Знать основные библиотеки (обязательно! про это позже набью отдельный пост, какие зачем и когда);
- Знать ООП и структур данных (на ОТЛ+++);
- Понимание принципов клиент-серверной архитектуры;
- Понимание архитектуры и принципов работы HTTP(s), REST, SOAP;
- Многопоточное программирование;
- Программирование сетевого уровня: Sockets, Java IO/NIO, TCP, SSL(TLS), HTTP;
- Методологии разработки (Agile, Scrum, XP, etc);
- UML (все не понимают зачем в универе то учат, но надо-надо);
- Желательно умение разработать тесты;
- Хорошее знание sqlite;
- Уверенная работа с Android Studio, Gradle, Git, CVS, SVN;
- Разговорный английский (Intermediate и выше).
Вот такие вот примерно требования, отмечу что сейчас многие фирмы просто спрашивают ссылки на ваш гитхаб или гугл аккаунт разработчика. Все требования выше взяты с описания вакансий на различных профильных сайтах.
Значит поехали=) Думаю теперь посты будут чаще;)
Я безнадежно просрочил пост с кодом, но есть уважительная причина — редизай блога, который я планировал уже в течении года. НЕ все еще готово, многие посты придется переписывать, но «процесс идет» как говорится.
А сегодня продолжаем МонстрХантера=)
В связи с небольшими косяками у Андройд студии пост задержался, поэтому сегодня будет по-максимуму кода. Продолжаем начатое
Ну что, в прошлой серии уроков мы разобрались с тестовым примером, надеюсь у всех все получилось, потом что в этой серии мы будем использовать все то чему уже научились. Вспомним саму суть игры:
«На игровом поле мы управляем нашим персонажем (пиксельный человечек), который должен есть фрукты перемещающиеся вокруг него и уворачиваться от монстров (также перемещающихся рядом), с каждым новым фруктом человечек становится больше соответственно уворачиваться от монстров труднее. Цель — съесть все фрукты на поле.»
Проапгрейдим идею: После поедания всех фруктов и тем самым набравшись сил — необходимо убить монстров, это у будет «WIN!».
Вот значит мы и подошли к завершению нашей тренировочной игры с кругами, через две недели начинаем превращать ее в «игру с пиксельным человечеком, монстрами и прочим»=)
А пока что заканчиваем:
Было несколько сообщений на тему, что не получается сделать границы для кругов и они все равно вылетают за экран. Показываю как это делается:
public void moveOnStep() {
x += dx;
y += dy;
checkBounds();
}
private void checkBounds() {
if (x>GameManager.getWidht() || x<0) {
dx = -dx;
}
if (y>GameManager.getHeight()||y<0){
dy=-dy;
}
Надеюсь, что цветные круги у всех получились. Продолжаем начатое