Новый пост из цикла «Полезный софт», про Evernote и Workflowy уже рассказано, настал черед Git’a 😉
Для начала, что такое Git.
Git (гит) — распределённая система управления версиями. Проект был создан Линусом Торвальдсом для управления разработкой ядра Linux, первая версия выпущена 7 апреля 2005 года. Программа является свободной и выпущена под лицензией GNU GPL версии 2. ©Wiki
На данный момент без Гита не обходится практически ни одна командная разработка, большинство программистов-одиночек также имеют свои репозитории на гите и все чаще при приеме на работу HR’ы спрашивают помимо всего прочего и ссылку на ваш репозиторий. Окей хорошо, но кто-то думаю уже завис на фразе «система управления версиями», что это? И снова почитаем вики:
Система управления версиями — программное обеспечение для облегчения работы с изменяющейся информацией. Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение, и многое другое. Такие системы наиболее широко используются при разработке программного обеспечения для хранения исходных кодов разрабатываемой программы. Однако они могут с успехом применяться и в других областях, в которых ведётся работа с большим количеством непрерывно изменяющихся электронных документов.
По факту, гитом могут пользоваться практически все от программистов до поваров, в наше время у всех есть какая-либо информация изменяющаяся с течением времени.
Как удобнее всего пользоваться?
Лично я использую SmartGit (в гугле найти не сложно) и считаю его лучшим git-клиентом для начинающих юзеров. Плюсы:
- Кроссплатформенный
- Бесплатный для некоммерческого использования
- Имеет графический интерфейс
- Внешне очень похож на различные файловые-менеджеры (тотже ТоталКомандер)
Конечно, просто сразу сесть и начать пользоваться получится далеко не у всех, но в сети уже существует огромное количество уроков по ГИТу благодаря которым освоить его не составит труда. По времени займет это думаю около 2х часов, зато польза огромнейшая.
В связи с тем, что мне предстоят поиски второй работы (не фриланс и не какая-нибудь фирма однодневка) решил быстренько восстановить знания по Андройду, методологиям разработки, СУБД и прочим и подобным. Поскольку качество и читабельность моего кода мне самому крайне не нравится — буду исправляться, в связи с этим посты по играм временно приостанавливаются, а начинаются посты по «учебе», ну а в моем случае восстановлению знаний.
Буду писать что читаю, какие уроки выполняю, примеры кода выкладывать и т.д. Придется трудно, т.к. абстрагироваться от всего того что уже знаешь — это ппц. Часть действий я уже на автомате делаю, даже не задумываясь почему так, а иногда это неправильно — придется ломать привычки=(
Итак цель: в кротчайшие сроки (допустим до января 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 и выше).
Вот такие вот примерно требования, отмечу что сейчас многие фирмы просто спрашивают ссылки на ваш гитхаб или гугл аккаунт разработчика. Все требования выше взяты с описания вакансий на различных профильных сайтах.
Значит поехали=) Думаю теперь посты будут чаще;)
Как обычно — включаем и кодим=)))
Доброго времени суток всем, или недоброго. В связи с последними событиями в моей жизни, решил сделать «антимотивационный» пост на тему программирования, а именно – «Почему плохо быть программистом». На данный момент я отработал как во фрилансе так и в различных компаниях специализирующихся на разработке ПО. Я делал по 6-10 приложений для АйОси в день (норматив такой был в одной компании), писал движки для андройд-игрушек, отлавливал баги в C#-прогах и занимался вообще всем чем только можно будучи фрилансером, в итоге я точно могу сказать, что далеко не всегда я был рад выбранной профессии. Почему? Для начала тезисно:
И снова пост про нашу игрушку, продолжаем начатое.
Основное в нашей игрушке (как несложно догадаться) — это движение, для движения мы должны касаться экрана, следовательно прикосновение экрана нужно как то «отловить». Итак, как это сделать. Для начала создадим интерфейс через который будет работать GameManager:
public interface IViewCanvas {
void drawCircle(MainCircle circle);
}
Таким образом мы разделили данные и логику управления этими самыми данными. Еще один небольшой рефакторинг, поскольку добавился интерфейс для работы GameManager’a — уберем оттуда все лишнее:
Продолжаю свой «цикл» постов по программированию, чет в прошлом посте как то вяло комменты идут и все блин за Джаву… Нету чтоли желающих Лисп например изучить, или там Пролог… Ну да ладно, джава так джава, еще неделя осталась в конце концов, а сегодня пост будет опять про обучение, а точнее как ускорить это самое обучение, если ранее вы не умели вообще ничего=) Скажем так, «проапргейдим» инфу из второго поста.
Одним из самых распространенных вопросов на стековерфлоу или тостере является «Выбор языка программирования»:
- «С чего начать?»
- «Java forevor!!!1111»
- «СиШарпники нубы!!!1»
И огромное количество других высказываний с этих холиваров только и делают, что сбивают новичка с выбора своего «первого» языка. Так что в данном посте я затрону именно тему различия языков программирования, с точки зрения востребованности, простоты и пр.
На прошлой неделе я писал про онлайн-курсы по программированию и вообще с чего лучше начать, а также обещал, что в этом посте будет информация о так называемых «must read» книгах. Т.е. книгах, которые должен прочитать каждый уважающий себя программист, ведь они дадут очень сильный толчок в развитие.
Итак приступим, для начала отмечу, что информации на данную тему в инете и так очень много, например Ландрина об этом писала, а еще упоминали на Скиллките, но как бы то ни было я представлю свою подборку топ-5, надеюсь вы найдете в ней много интересного.
Если парой слов, то open source — это ПО с открытыми исходными кодами, что в свою очередь дает пользователю возможность принять участие в доработке ПО, исправлению ошибок и прочему. В наши дни при просмотре вакансий в различные команды разработчиков, да и вообще любые вакансии для программистов, можно увидеть примерно такие строки: «Плюсом будет участие в open source проектах». Курсе на третьем, я как то участвовал в одном таком, началось все с багрепортов, позже меня заметили разрабы и после недолгого разговора предложили по мере возможности к багрепортам прикладывать куски кода для решения данной баги. Собственно длилось это все около полугода и в итоге что я получил:
Методы штрафных функций или методы штрафов (Penalty method) — методы, широко используемые для решения технических задач оптимизации. Эффективны если штрафная функция естественно вытекает из технического смысла задачи. ©Википедия
Впрочем гуглить думаю вы и сами умеете, я же в этом посте хочу выложить исходники своего курсового с 3его курса, а именно реализацию метода штрафных функций. Язык C#.