С ростом компании, люди и проекты меняются. Для продолжения развития культуры, которую мы хотим иметь в GitHub, мы сочли полезным напомнить самим себе цели, которые преследуем в коммуникациях. Мы недавно представили эти гайдлайны, чтобы помочь самим себе быть лучше, когда мы взаимодействуем через пулл-реквесты.
Кирилл Кунст @leoruread-only
Разработчик мобильных приложений
Open source проекты: Media Player Classic и SharpDevelop. Первые впечатления
7 min
27KНечто невообразимое творится в мире разработки: популярные программы, фундаментальные библиотеки выкладываются в open source. У обычных разработчиков появляется возможность вносить изменения в известные продукты. Вот и я, устав от ежедневной рутины, решил попробовать что-то новое, почувствовать полёт творческой мысли и приобщиться к великому. Говоря более простым языком, решил подключиться к какому-либо open source проекту.
Почему именно open source? Меня привлекает:
В этой статье я хотел бы описать первый опыт работы с двумя проектами: Media Player Classic — Home Cinema и SharpDevelop. Хотелось бы дать общие рекомендации по работе с open source проектом на начальном этапе. Статья не содержит полноценного анализа исходного кода или рекламы новой функциональности, в ней описаны лишь первые впечатления о работе с проектами. Возможно, статья привлечет внимание разработчиков к описанным в ней проектам и к разработке open source в целом.
Почему именно open source? Меня привлекает:
- отсутствие строгих сроков разработки
- свободный выбор задач
- свободный выбор способа реализации задач
- возможность внести свои изменения в популярный продукт
В этой статье я хотел бы описать первый опыт работы с двумя проектами: Media Player Classic — Home Cinema и SharpDevelop. Хотелось бы дать общие рекомендации по работе с open source проектом на начальном этапе. Статья не содержит полноценного анализа исходного кода или рекламы новой функциональности, в ней описаны лишь первые впечатления о работе с проектами. Возможно, статья привлечет внимание разработчиков к описанным в ней проектам и к разработке open source в целом.
+43
Обработка custom-жестов для Leap Motion. Часть 1
5 min
8.3KВсем привет!
На время праздников мне в руки попал сенсор Leap Motion. Довольно давно хотел поработать с ним, но основная работа ибесполезное времяпрепровождение сессия не позволяли.
Когда-то, лет 10 назад, когда я был школьником и ничем не занимался, я покупал журнал «Игромания», в комплекте с которым поставлялся диск с всякими игровыми интересностями и shareware-софтом. И в этом журнале была рубрика о полезном софте. Одной из программ оказалась Symbol Commander — утилита, позволяющая записывать движения мышью, распознавать записанные движения и при распознавании выполнять действия, назначенные на это движения.
Сейчас, при развитии бесконтактных сенсоров (Leap Motion, Microsoft Kinect, PrimeSence Carmine) возникла идея повторить подобный функционал для одного из них. Выбор пал на Leap Motion.
На время праздников мне в руки попал сенсор Leap Motion. Довольно давно хотел поработать с ним, но основная работа и
Когда-то, лет 10 назад, когда я был школьником и ничем не занимался, я покупал журнал «Игромания», в комплекте с которым поставлялся диск с всякими игровыми интересностями и shareware-софтом. И в этом журнале была рубрика о полезном софте. Одной из программ оказалась Symbol Commander — утилита, позволяющая записывать движения мышью, распознавать записанные движения и при распознавании выполнять действия, назначенные на это движения.
Сейчас, при развитии бесконтактных сенсоров (Leap Motion, Microsoft Kinect, PrimeSence Carmine) возникла идея повторить подобный функционал для одного из них. Выбор пал на Leap Motion.
+14
Дайджест интересных материалов для мобильного разработчика #86 (12-18 января)
3 min
20KПервый в этом году дайджест сразу с массой интересных материалов. «Курс валют» и Monument Valley, рекорд Swift и первый смартфон на Tizen, Crossy Road и новая аналитика App Annie – все это и многое другое в еженедельной подборке.


+15
Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 2 из 6
7 min
145KTutorial
Содержание курса
- Статья 1: алгоритм Брезенхэма
- Статья 2: растеризация треугольника + отсечение задних граней
- Статья 3: Удаление невидимых поверхностей: z-буфер
- Статья 4: Необходимая геометрия: фестиваль матриц
- Статья 5: Пишем шейдеры под нашу библиотеку
- Статья 6: Чуть больше, чем просто шейдер: просчёт теней
Улучшение кода
Official translation (with a bit of polishing) is available here.
Update:
Внимание, статья 4в даёт новую, более простую версию растеризатора.
Давайте знакомиться, это я.

То есть, модель моей башки, отрендеренная в программе, которую мы сделаем за ближайшие час-два.
В прошлый раз мы нарисовали проволочную сетку трёхмерной модели, в этот раз мы зальём полигоны. Точнее, треугольники, так как OpenGL практически любой полигон триангулирует, поэтому ни к чему разбирать сложный случай. Напоминаю, что этот цикл статей создан для самостоятельного программирования. Время, которое я здесь привожу — это не время чтения моего кода. Это время написания вашего кода с нуля. Мой код здесь только для того, чтобы сравнить ваш (рабочий) код с моим. Я совсем не являюсь хорошим программистом, поэтому ваш код может быть существенно лучше моего. Любая критика приветствуется, любым вопросам рад.
Пожалуйста, если вы следуете этому туториалу и пишете свой код, выкладывайте его на github.com/code.google.com и им подобные и давайте ссылки в комментариях! Это может хорошо помочь как и вам (другие люди могут чего посоветовать), так и будущим читателям.
+113
Как конкретно можно сделать детское образование в России лучше (и первый практический шаг)
10 min
60K
У нас 41-43 место из 65 по образованию по исследованию ОСЭР и 49 место по Education Index ООН.
После получения трёх высших, 13 лет я занималась тем, что учила айтишников, учёных и других странных людей, последний проект – Курсера в России. Год назад начала изучать детское образование. Ниже – моё ИМХО, но, думаю, многое вам хорошо знакомо. На мой взгляд, в детском образовании в России есть несколько важных областей для развития.
Вот с позиции детей:
- Дети не видят практического применения получаемым знаниям.
- Нет механизмов выбора профессии. Дети могут, например, выбирать своё будущее по наиболее доброму учителю (любимый предмет — желаемая профессия — специальность в универе — приплыли).
- Дети в целом жаждут знаний, но им очень хочется разнообразить процесс их получения и в школе.
- Ну, и они почти никуда не выходят, а их надо водить на разные интересные экскурсии и встречать с интересными людьми.
С позиции родителей и преподавателей:
- Дети недогружены: знаний даётся куда меньше, чем при СССР, например. С другой стороны они в конце обучения перегружены подготовкой к ГИА, ЕГЭ.
- Дети изначально живут в новой информационной среде, которая комфортна для них, но не очень комфорта для учителей.
- Дополнительное образование в крупных городах — это, порой, дичайшая логистика, например, нужно посреди дня везти ребёнка на другой конец города.
- Проблемы с кадрами: нужно быть реально круто замотивированным, чтобы полноценно и качественно работать с детьми.
+76
ZeptoLab начал строить корпоративный университет
6 min
17KПредновогодний привет всем читающим нас хабражителям!
2014 год был для нас насыщенным и во многом сложным, но при этом — еще и самым инновационным и поучительным.
Бюджеты на обучение в наше нелегкое время, к сожалению, страдают чаще других в корпоративной среде, но нам приятно быть исключением из этого правила: у каждого сотрудника Зептолаб всегда был и есть бюджет на обучение порядка 90000 руб. в год.
Из этого бюджета зептолабовцы могут посещать конференции, ходить на тренинги и курсы как внутри, так и вне компании, а также обучаться онлайн. На конференциях наши ребята часто выступают в роли спикеров:

Чтобы двигаться вверх по профессиональной и карьерной лестнице, иногда мало того багажа знаний, с которым ты в компанию приходишь — без перманентного стремления к новым вершинам далеко не уйти. А когда у сотрудников такое стремление есть — с этим можно и нужно работать. Хочется поделиться, как это делаем мы.
В этом году перед нами стояла задачка системно подойти к проработке самых необходимых навыков у сотрудников компании. Для начала их стоило выделить — это мы сделали стандартно, методом оценки персонала и индивидуальными беседами с руководителями отделов.
После того, как стали понятны «пробелы» в знаниях, которые есть не у одного-двух сотрудников, а у целых отделов, мы взялись за дело по-полной. Индивидуальные нюансы в основном прорабатывались на внешних курсах и тренингах, а над теми, что оказались глобальнее, работали внутри компании все вместе.
Естественно, вышесказанное касается как проработки профессиональных навыков, так и так называемых soft skills: например, все те, кому было важно научиться доходчиво доносить свою мысль до коллег и подчиненных, прошли курс ораторского мастерства.
На какой-либо индивидуальный внешний курс или тренинг от Зептолаб можно попасть двумя путями:
2014 год был для нас насыщенным и во многом сложным, но при этом — еще и самым инновационным и поучительным.
Бюджеты на обучение в наше нелегкое время, к сожалению, страдают чаще других в корпоративной среде, но нам приятно быть исключением из этого правила: у каждого сотрудника Зептолаб всегда был и есть бюджет на обучение порядка 90000 руб. в год.
Из этого бюджета зептолабовцы могут посещать конференции, ходить на тренинги и курсы как внутри, так и вне компании, а также обучаться онлайн. На конференциях наши ребята часто выступают в роли спикеров:

Чтобы двигаться вверх по профессиональной и карьерной лестнице, иногда мало того багажа знаний, с которым ты в компанию приходишь — без перманентного стремления к новым вершинам далеко не уйти. А когда у сотрудников такое стремление есть — с этим можно и нужно работать. Хочется поделиться, как это делаем мы.
В этом году перед нами стояла задачка системно подойти к проработке самых необходимых навыков у сотрудников компании. Для начала их стоило выделить — это мы сделали стандартно, методом оценки персонала и индивидуальными беседами с руководителями отделов.
После того, как стали понятны «пробелы» в знаниях, которые есть не у одного-двух сотрудников, а у целых отделов, мы взялись за дело по-полной. Индивидуальные нюансы в основном прорабатывались на внешних курсах и тренингах, а над теми, что оказались глобальнее, работали внутри компании все вместе.
Естественно, вышесказанное касается как проработки профессиональных навыков, так и так называемых soft skills: например, все те, кому было важно научиться доходчиво доносить свою мысль до коллег и подчиненных, прошли курс ораторского мастерства.
На какой-либо индивидуальный внешний курс или тренинг от Зептолаб можно попасть двумя путями:
+22
Дайджест полезных статьей для начинающих предпринимателей
2 min
40K
В нашу кампанию часто обращаются начинающие предприниматели. Помимо автоматизации торговли их часто волнуют и прочие вопросы связанные со стартом бизнеса. Специально для них мы подготовили этот материал, в котором собрали наши 10 лучших бизнес-статьей уходящего года. Многие публикации снабжены доступной инфографикой. Приятного чтения!
+27
Архитектура мобильного клиент-серверного приложения
33 min
142K
К добавлению внешнего сервера рано или поздно приходит любой сложный проект. Причины, при этом, бывают совершенно различные. Одни, загружают дополнительные сведения из сети, другие, синхронизируют данные между клиентскими устройствами, третьи- переносят логику выполнения приложения на сторону сервера. Как правило, к последним относятся большинство «деловых» приложений. По мере отхода от парадигмы «песочницы», в которой все действия выполняются только в рамках исходной системы, логика выполнения процессов переплетается, сплетается, завязывается узлами настолько, что становится трудно понять, что является исходной точкой входа в процесс приложения. В этом момент, на первое место выходит уже не функциональные свойства самого приложения, а его архитектура, и, как следствие, возможности к масштабированию.
Заложенный фундамент позволяет либо создать величественный архитектурный ансамбль, либо «накурнож» — избушку на куриных ножках, которая рассыпается от одного толчка «доброго молодца» коих, за время своего существования повидала видимо — невидимо, потому что, глядя на множественные строительные дефекты заказчик склонен менять не исходный проект, а команду строителей.
Планирование — ключ к успеху проекта, но, именно на него выделяется заказчиком минимальный объем времени. Строительные паттерны — туз в рукаве разработчика, который покрывает неблагоприятные комбинации где время — оказывается решающим фактором. Взятые за основу работающие решения позволяют сделать быстрый старт, чтоб перейти к задачам, кажущиеся заказчику наиболее актуальными (как-то покраска дымоходной трубы, на еще не возведенной крыше).
В этой статье я постараюсь изложить принцип построение масштабируемой системы для мобильных устройств, покрывающей 90-95% клиент-серверных приложений, и обеспечивающей максимальное отдаление от сакраментального «накурножа».
+2
Как я получил медаль за код
4 min
29KTranslation

В 2005 мой отряд Нацгвардии отправили в Ирак в рамках операции «Освобождение Ирака». Моей армейской специальностью была 92А, что означает специалист по логистике и запасам. Мои задачи состояла в том, чтобы заказывать запчасти для механиков, забирать их, возвращать старые, разбираться с опасными материалами, отправлять и принимать транспортные средства и обслуживать лицензии. И много чего ещё. В общем, в то время вся система крутилась на ULLS-G (Unit Level Logistics System – Ground, система логистики уровня отряда – наземная), которую потом уже сменила SAMS-E (Standard Army Maintenance System – Enhanced, расширенная стандартная система обслуживания армии), которая – так получилось – использовала в качестве бэкенда Oracle. По сравнению с SAMS-E, система ULLS-G выглядела как динозавр. Я много её использовал за 4 года, проведённые на службе. И это было ужасно. ULLS-G работала под MS-DOS (угу), и большинство компьютеров, которые я использовал, работали под MS-DOS (это был 2000 год). Когда мы прибыли на место дислокации, большинство компьютеров уже работали под WinXP/2K, поэтому можно было запускать ULLS-G в режиме совместимости с MS-DOS.
+28
Новый трек на Coursera: Mobile Cloud Computing with Android
1 min
7.6K7 января на Coursera начинается трек курсов по специальности «Mobile Cloud Computing with Android». В текущем году аналогичный трек состоял из 3-х курсов — было интересно и полезно. В 2015 году их аж 6 (плюс дипломный проект) — судя по программам, изменений и дополнений много.
Курсы бесплатные — платить надо только если есть желание получить по каждому курсу подтвержденный сертификат. Учиться можно в онлайне, а можно выкачивать видео и смотреть когда и где удобно. Правда, в последнем случае промежуточных контрольных вопросов не будет, а они полезны, чтобы оценить — все ли правильно поняла, да и закрепляют материал хорошо.
Обучение на английском, но даже у кого с ним плохо — субтитры спасают. Дугласа слушать сложно (похоже, немец), но остальные рассказывают на хорошем, простом и понятном английском.
В общем, рекомендую!
Ссылка на трек: www.coursera.org/specialization/mobilecloudcomputing2/36
Курсы бесплатные — платить надо только если есть желание получить по каждому курсу подтвержденный сертификат. Учиться можно в онлайне, а можно выкачивать видео и смотреть когда и где удобно. Правда, в последнем случае промежуточных контрольных вопросов не будет, а они полезны, чтобы оценить — все ли правильно поняла, да и закрепляют материал хорошо.
Обучение на английском, но даже у кого с ним плохо — субтитры спасают. Дугласа слушать сложно (похоже, немец), но остальные рассказывают на хорошем, простом и понятном английском.
В общем, рекомендую!
Ссылка на трек: www.coursera.org/specialization/mobilecloudcomputing2/36
+10
Архитектурный дизайн мобильных приложений
9 min
98KПризнак плохого дизайна №1:
Наличие объекта-«бога» с именем, содержащим «Manager», «Processor» или «API»

Ведущий iOS-разработчик Redmadrobot Егор BepTep Тафланиди — о том, как добиться стройного архитектурного дизайна мобильного приложения, используя классические шаблоны проектирования и логическое разделение исходного кода на модули.
Наличие объекта-«бога» с именем, содержащим «Manager», «Processor» или «API»

Ведущий iOS-разработчик Redmadrobot Егор BepTep Тафланиди — о том, как добиться стройного архитектурного дизайна мобильного приложения, используя классические шаблоны проектирования и логическое разделение исходного кода на модули.
+23
Как собрать собственный фреймворк для iOS
9 min
16KTutorial
Среди задач мобильного разработчика, помимо самой частой (написания, собственно, приложений) периодически появляется и такая, как создание sdk.
Примерами такой задачи может быть создание sdk, использующего REST API какого-либо сервиса (реклама, аналитика, погода), библиотека реализаций алгоритмов, обработка изображений… Список практически неограничен.
Ошибки, допущенные в таком продукте, исправлять гораздо сложнее, чем при разработке приложений. В случае с приложением достаточно обновить его в AppStore, дождаться прохождения модерации и обновления пользователем. В случае же с sdk цепочка прирастает дополнительным шагом — дождаться его обновления разработчиком.
Для некоторых типов задач ситуация может усугубляться ещё и тем, что не все разработчики приложений использующие наш sdk могут быть достаточно квалифицированы. В связи с этим интеграция должна вызывать минимум сложностей. В особенности это касается рекламных sdk и аналитики, так как зачастую они встраиваются гораздо позднее основного этапа создания приложения и не всегда первоначальным разработчиком.
Любой подобный sdk обычно состоит из многих компонент: библиотеки, тестового приложения, документации, плагинов к другим инструментам. В этой статье я расскажу о сборке библиотеки в виде фреймворка, некоторых приёмах и особенностях разработки.

Примерами такой задачи может быть создание sdk, использующего REST API какого-либо сервиса (реклама, аналитика, погода), библиотека реализаций алгоритмов, обработка изображений… Список практически неограничен.
Ошибки, допущенные в таком продукте, исправлять гораздо сложнее, чем при разработке приложений. В случае с приложением достаточно обновить его в AppStore, дождаться прохождения модерации и обновления пользователем. В случае же с sdk цепочка прирастает дополнительным шагом — дождаться его обновления разработчиком.
Для некоторых типов задач ситуация может усугубляться ещё и тем, что не все разработчики приложений использующие наш sdk могут быть достаточно квалифицированы. В связи с этим интеграция должна вызывать минимум сложностей. В особенности это касается рекламных sdk и аналитики, так как зачастую они встраиваются гораздо позднее основного этапа создания приложения и не всегда первоначальным разработчиком.
Любой подобный sdk обычно состоит из многих компонент: библиотеки, тестового приложения, документации, плагинов к другим инструментам. В этой статье я расскажу о сборке библиотеки в виде фреймворка, некоторых приёмах и особенностях разработки.

+11
Руководство хакера по нейронным сетям. Глава 2: Машинное обучение. Бинарная классификация
4 min
18KTranslation
Содержание:
В последней главе мы рассматривали схемы с реальными значениями, которые вычисляли сложные выражения своих исходных значений (проход вперед), а также мы смогли рассчитать градиенты этих выражений по оригинальным исходным значениям (обратный проход). В этой главе мы поймем, насколько полезным может быть этот довольно простой механизм в обучении машины.
Глава 1: Схемы реальных значений
Часть 1:
Часть 2:
Часть 3:
Часть 4:
Часть 5:
Часть 6:
Введение
Базовый сценарий: Простой логический элемент в схеме
Цель
Стратегия №1: Произвольный локальный поиск
Часть 2:
Стратегия №2: Числовой градиент
Часть 3:
Стратегия №3: Аналитический градиент
Часть 4:
Схемы с несколькими логическими элементами
Обратное распространение ошибки
Часть 5:
Шаблоны в «обратном» потоке
Пример "Один нейрон"
Часть 6:
Становимся мастером обратного распространения ошибки
Глава 2: Машинное обучение
В последней главе мы рассматривали схемы с реальными значениями, которые вычисляли сложные выражения своих исходных значений (проход вперед), а также мы смогли рассчитать градиенты этих выражений по оригинальным исходным значениям (обратный проход). В этой главе мы поймем, насколько полезным может быть этот довольно простой механизм в обучении машины.
+11
Поддержка мобильных продуктов: задачи, процессы, инструментарий
8 min
44K
Директор департамента поддержки и развития мобильных приложений Redmadrobot Александр Алехин (@alekhinsasha) делится опытом организации процессов.
+2
Используем замыкания в Swift по полной
6 min
44KTutorial
Несмотря на то, что в Objective-C 2.0 присутствуют замыкания (известные как блоки), ранее эппловский API использовал их неохотно. Возможно, отчасти поэтому многие программисты под iOS с удовольствием эксплуатировали сторонние библиотеки, вроде AFNetworking, где блоки применяются повсеместно. С выходом Swift, а также добавлением новой функциональности в API, работать с замыканиями стало чрезвычайно удобно. Давайте рассмотрим, какими особенностями обладает их синтаксис в Swift, и какие трюки можно с ними «вытворять».

Продвигаться будем от простого к сложному, от скучного к веселому. Заранее приношу извинения за обильное использование мантр «функция», «параметр» и «Double», но из песни слов не выкинешь.

Продвигаться будем от простого к сложному, от скучного к веселому. Заранее приношу извинения за обильное использование мантр «функция», «параметр» и «Double», но из песни слов не выкинешь.
+13
Мобильная игра на Unity. Первый блин…
4 min
59K
После завершения создания игры-головоломки на Unity и выпуска ее на Google Play и AppStore, появилось желание поделиться опытом и впечатлениями. И получить конструктивные замечания и предложения, если таковые возникнут
+23
Самый простой deploy приложения на Ruby on Rails
5 min
31KTutorial

Полгода назад я написал пост Deploy приложения на RoR 4 с помощью Capistrano 3. Прошло время, я получил много положительных отзывов, но были и отрицательные. Из них можно было понять следующее:
- Инструкция слишком сложная для новичка
- Очень много всего приходится делать «руками»
Я подумал и написал gem 'capistrano3-ubuntu-server-config', который полностью настраивает Ваш «чистый» Ubuntu сервер. Всё, что Вам нужно сделать руками — создать нового пользователя и дать ему права visudo (причем давать ему права на passwordless sudo ему не надо). Он может:
- Настроить SSH (Добавить настройки 'PermitRootLogin no', 'UseDNS no', 'AllowUsers username')
- Создать и настроить swap (размер запрашивается)
- Сделать
иsudo apt-get update
sudo apt-get upgrade
- Установить из исходников и настроить как чистый Nginx, так и с модулем Pagespeed
- Установить PostgreSQL из репозитория, затем создать суперпользователя БД (имя пользователя и пароль запрашиваются)
- Установить из исходников и настроить Redis
- Установить RVM с последней версией Ruby и gem'ами Rails, Bundler
- Скопировать Ваш приватный ssh ключ (например для доступа к приватному git репозиторию) с локальной машины на сервер и добавить его в ~/.ssh/config
- Установить imagemagick из репозитория (Необходим для Paperclip, постоянно его забываю ставить)
- Установить любые дополнительные пакеты из репозитория (Запрашивает какие именно)
Можно запустить конфигурационный wizard, который узнает, что именно из вышеперечисленного необходимо сделать и заранее спросит все настройки, чтобы можно было потом пойти попить кофе, а можно запустить отдельные таски. Данный gem будет полезен не только Rails разработчикам, а всем, кто использует Capistrano для деплоя.
Эта статья раскроет следующие темы:
- Использование gem'a capistrano3-ubuntu-server-config
- Использование gem'а capistrano3-git-push
- Моя текущая миниатюрная конфигурация Capistrano
+13
Введение в .NET Core
19 min
196KTranslation

На конференции connect(), мы объявили, что .NET Core будет выпущен полностью как программное обеспечение с открытым исходным кодом. В этой статье мы сделаем обзор .NET Core, расскажем, как мы собираемся его выпускать, как он соотносится с .NET Framework и что это все означает для кросс-платформенной разработки и разработки с открытым кодом.
+46
Эффективный JSON с функциональными концепциями и generics в Swift
14 min
12KTranslation
Это перевод статьи Tony DiPasquale «Efficient JSON in Swift with Functional Concepts».
Передо мной была поставлена задача: закачать данные в формате JSON с Flickr.com о 100 топ местах, в которых сделаны фотографии на данный момент, в массив моделей:
Предисловие переводчика
Передо мной была поставлена задача: закачать данные в формате JSON с Flickr.com о 100 топ местах, в которых сделаны фотографии на данный момент, в массив моделей:
+11
Information
- Rating
- Does not participate
- Location
- Тюмень, Тюменская обл. и Ханты-Мансийский АО, Россия
- Date of birth
- Registered
- Activity