Как стать автором
Обновить
71
0
Bohdan Khorolets @shakhr

Python (fullstack) developer

Отправить сообщение

Я сделал PWA и выложил в трёх магазинах приложений. И вот что я выяснил

Время на прочтение12 мин
Количество просмотров48K
Перевод I built a PWA and published it in 3 app stores. Here’s what I learned.

Недавно я опубликовал прогрессивное веб-приложение Chavah Messianic Radio, музыкальный проигрыватель вроде Pandora, и выложил его в трёх магазинах приложений (Google Play, iOS App Store, Windows Store).







Процесс выкладывания был тяжёлый и поучительный. Вот что я выяснил.
Читать дальше →
Всего голосов 44: ↑41 и ↓3+38
Комментарии61

10 основных ошибок, совершаемых Django-разработчиками

Время на прочтение12 мин
Количество просмотров101K


В этом руководстве мы рассмотрим основные ошибки Django-разработчиков и узнаем, как их избежать. Статья может быть полезна даже опытным разработчикам, потому что и они совершают такие ошибки, как поддержка неподъёмно больших настроек или конфликтов имён в статических ресурсах.

Читать дальше →
Всего голосов 52: ↑50 и ↓2+48
Комментарии62

Организация компонентов в проекте

Время на прочтение3 мин
Количество просмотров17K
Многие руководствуются рекомендациями Presentational and Container Components, но уважаемый автор признаётся в сносках, что концепция разделения спорная, и компоненты можно смешивать. А если это так, то зачем тащить чемодан без ручки? Все компоненты проекта удобнее хранить в одной общей папке. Какие плюсы:
  • Простота навигации по файловой системе.
  • Уникальные имена компонентов проекта.
  • Импорт без боли ('../../../../../..').


Когда проект вырастет, следует дробить его на приватные npm-пакеты, инкапсулируя реализацию. Но не выращивать дерево подпапок внутри папки компонентов — развивать и поддерживать такое ощутимо сложнее. Проверено.
Дальше больше
Всего голосов 30: ↑26 и ↓4+22
Комментарии13

PropTypes — проверка типов в React

Время на прочтение4 мин
Количество просмотров87K

React. Продвинутые руководства. Часть Вторая


Продолжение серии переводов раздела "Продвинутые руководства" (Advanced Guides) официальной документации библиотеки React.js.


PropTypes — проверка типов в React


По мере того, как ваше приложение будет расти — вы можете наткнуться на большое количество ошибок, связанных с проверкой типов. Для некоторых приложений, вы можете использовать расширения JavaScript такие как Flow или TypeScript осуществляя проверку типов всего вашего приложения. Но если вы не используете таковые — React предоставляет некоторые встроенные возможности проверки типов.


Читать дальше →
Всего голосов 22: ↑22 и ↓0+22
Комментарии20

Дайджест интересных материалов для мобильного разработчика #180 (14-20 ноября)

Время на прочтение3 мин
Количество просмотров11K
На этой неделе рассказывали про производительность приложений, работу на телевизорах, много новостей от Microsoft с Connect(), несколько материалов про дизайн и UX, разбор интересного вопроса следить за тем, почему пользователи уходят или почему они остаются. Все это и многое другое в новом дайджесте!

Читать дальше →
Всего голосов 19: ↑16 и ↓3+13
Комментарии3

Сотворение мира Опыт создания разумной жизни своими руками

Время на прочтение23 мин
Количество просмотров27K
Иногда проводишь день в попытках без использования терминов «рекурсивный вызов» и «идиоты» объяснить главному бухгалтеру, почему на самом деле простое изменение учетной системы затягивается почти на неделю из-за орфографической ошибки, допущенной кем-то в коде в 2009 году. В такие дни хочется пооборвать руки тому умнику, который сотворил этот мир, и переписать все с ноля.

image

TL;DR
Под катом история о том, как я в качестве практики для изучения Python разрабатываю свою библиотеку для агентного моделирования с машинным обучением и богами.

Ссылка на github. Для работы из коробки нужен pygame. Для ознакомительного примера понадобится sklearn.
Читать дальше →
Всего голосов 46: ↑44 и ↓2+42
Комментарии31

Первая работа, или как не надо разрабатывать под iOS

Время на прочтение4 мин
Количество просмотров15K
В данной статье я попытаюсь рассказать о нетривиальных проблемах, с которыми может столкнуться начинающий разработчик. Если Вы, уважаемый читатель, уже работаете в этой сфере, то вряд ли почерпнете для себя что-то новое, но если Вы только учитесь или делаете свои первые шаги, то некоторые из этих советов могут вам помочь. Они мало будут касаться языка и больше относятся к каким-то общим вещам, связанным с процессом разработки. Если статья окажется не банальщиной, то я буду пробовать писать подобные статьи на тему каких-то конкретных задач.
Читать дальше →
Всего голосов 26: ↑21 и ↓5+16
Комментарии13

27 open-source ништячков для iOS разработчика

Время на прочтение7 мин
Количество просмотров24K

1. DZNEmptyDataSet


Это должно быть стандартом, встроенным в iOS, как способ работы с пустыми таблицами и просмотром коллекций. По умолчанию, если табличное представление пустое, то на экране ничего не отображается. Это не лучший пользовательский опыт, который вы можете получить.

С этой библиотекой вам необходимо всего лишь соответствовать определённым протоколам и iOS сама позаботиться о просмотре коллекций и выделит необходимое особым шрифтом, в виде красивых сообщений для пользователя. Элементарное решение для каждого проекта под iOS.

image


Всего голосов 29: ↑23 и ↓6+17
Комментарии9

10 полезных сайтов с 2D ресурсами для игр

Время на прочтение3 мин
Количество просмотров455K


С развитием HTML5 и мобильных платформ 2D-игры возвращаются в моду. Заниматься такими проектами, будь то браузерные игры, игры на телефон или для ПК, стало легче благодаря таким инструментам, как Unity, и онлайн-ресурсам с игровыми ассетами. Ниже представлен список из 10 лучших сайтов с 2D-ресурсами для игр – как платными, так и бесплатными.

Читать дальше →
Всего голосов 43: ↑41 и ↓2+39
Комментарии2

Полное практическое руководство по Docker: с нуля до кластера на AWS

Время на прочтение39 мин
Количество просмотров1.6M



Содержание



Вопросы и ответы


Что такое Докер?


Определение Докера в Википедии звучит так:


программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы; позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, а также предоставляет среду по управлению контейнерами.



Ого! Как много информации.

Читать дальше →
Всего голосов 125: ↑124 и ↓1+123
Комментарии44

Библиотека f для функционального программирования в Питоне

Время на прочтение15 мин
Количество просмотров23K

Привет, коллеги!


Я расскажу о библиотеке для Питона с лаконичным названием f. Это небольшой пакет с функциями и классами для решения задач в функциональном стиле.


— Что, еще одна функциональная либа для Питона? Автор, ты в курсе, что есть fn.py и вообще этих функциональных поделок миллион?


— Да, в курсе.


Причины появления библиотеки

Читать дальше →
Всего голосов 39: ↑31 и ↓8+23
Комментарии53

Как набрать в IT-стартап команду разработки, которая действительно сделает продукт?

Время на прочтение15 мин
Количество просмотров32K
Итак, вы решили дать миру новый программный продукт или сервис. У вас есть продуманная идея, видение, понятное позиционирование, несколько первых потенциальных клиентов и даже бюджет. В общем, дело за малым – собрать команду разработчиков и сделать продукт.

В этой статье мы рассмотрим правильные и неправильные решения при подборе людей, их мотивации и сохранении команды – вашего нового актива. Речь пойдет не о том, как набрать лучших людей и построить совершенную машину разработки, а о том, какие грубые ошибки в подборе людей и организации их работы могут погубить ваше начинание.
Читать дальше →
Всего голосов 28: ↑16 и ↓12+4
Комментарии23

django-controlcenter

Время на прочтение13 мин
Количество просмотров20K
django-controlcenter

Всем привет, хочу поделиться своей небольшой разработкой — django-controlcenter. Это приложение для создания дешбоардов для вашего django-проекта.
Читать дальше →
Всего голосов 38: ↑34 и ↓4+30
Комментарии20

Создание системы непрерывного развертывания: опыт Instagram

Время на прочтение8 мин
Количество просмотров31K


В нашем блоге на Хабре мы не только рассказываем о развитии своего продукта — биллинга для операторов связи «Гидра», но и публикуем материалы о работе с инфраструктурой и использовании технологий из опыта других компаний.

В Instagram развертывание backend-кода (основная программно-аппаратная часть, с которой работают клиенты) происходит от 30 до 50 раз в день, каждый раз, когда инженеры подтверждают изменение оригинала. И, по большей части, без участия человека — сложно в это поверить, особенно учитывая масштабы соцсети, но факт остается фактом.

Инженеры Instagram в своем техническом блоге рассказали о том, как создавали эту систему и налаживали ее безотказную работу. Мы представляем вашему вниманию главные мысли этой заметки.
Читать дальше →
Всего голосов 21: ↑17 и ↓4+13
Комментарии12

Разделение отсканированных вместе фотографий (Python 3 + OpenCV3)

Время на прочтение7 мин
Количество просмотров12K
По ящикам шкафов да пыльным полкам уже десятилетиями складируются дюжины семейных фотоальбомов. Состояние некоторых из них давно заставляет задумываться об «оцифровке» накопившегося материала. И чтобы хоть чуточку ускорить предстоящий процесс, было принято решение сканировать по несколько фотографий за раз. Однако перспектива разгребать получаемый в результате этого контент и руками дробить его на отдельные кадры мне не улыбалась. В итоге родилось решение…
Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии5

Удалённое исполнение системных команд по запросу через сокеты на Python 3. Часть 2. Протокол передачи данных

Время на прочтение5 мин
Количество просмотров20K
В предыдущей статье я рассказал как создать сервер и клиент на Python 3, используя встроенные сокеты. Но у этого приложения было много недостатков, которые я попытаюсь исправить в этой и последующих статьях.

Так какими же недостатками обладает наше приложение?
  • Отсылается один единственный пакет, длина которого не может превышать заранее заданной границы в 1 Кбайт.
  • Приложение без проверки передаёт аргумент, принятый из сети, в оболочку (URL).
  • Недостаток функциональности. Мы не можем, например, скачать все изображения с Хабра, или скачать отдельный хаб.

Сегодня я расскажу как решить первую проблему, а заодно и немного о TCP.

Описание протокола

Мы использовали «голый» протокол TCP для передачи данных между сервером и клиентом. TCP — это потоковый протокол, он передаёт данные последовательным набором байт. Передавая команду с аргументами по сети в первой версии нашего приложения мы читали только 1024 байт данных из принятого пакета. Но что делать, если данные не помещаются в 1024 байт? Выход только один — разбить данные на несколько пакетов на одном хосте и «склеить» их в один кусок при получении на другом хосте. Но как узнать когда заканчивается одна команда (с её аргументами) и начинается другая? Для этого нам нужно нужно знать, какова длина всего передаваемого сообщения.

Так как заранее узнать длину сообщения у нас не получиться, придётся передавать её в одном из пакетов. Разумеется, делать это лучше в самом начале первого пакета. Выделив под хранение длины сообщения всего 4 байта, мы сможем передать сообщение длиной свыше 4 млрд символов! Длина сообщения — это информация о нём, то есть, часть заголовка, заголовка нашего протокола. Какого протокола спросите вы? Если верить Википедии, то
Протокол передачи данных — набор соглашений интерфейса логического уровня, которые определяют обмен данными между различными программами.

Мы договорились, что будем передавать данные в нескольких пакетах по TCP, а в начале данных первого пакета будет храниться длина всего сообщения в байтах. Таким образом мы разработали наш простой протокол! Нужно помнить, что наш протокол основан на TCP, а значит, обладает теми же особенностями, что и последний.
Читать дальше →
Всего голосов 11: ↑9 и ↓2+7
Комментарии8

50+ лучших дополнений к Bootstrap

Время на прочтение5 мин
Количество просмотров202K


Благодаря популярности CSS фреймворка Bootstrap, для него разработали массу различных дополнений. Даже сейчас вы можете использовать Bootstrap практически для любой задачи при разработке и оформлении вебсайта.

Для статьи я подобрал наиболее полезные дополнения «на все случаи жизни».
Читать дальше →
Всего голосов 123: ↑111 и ↓12+99
Комментарии25

Telegram открыл платформу для ботов

Время на прочтение2 мин
Количество просмотров45K
Сервисами мгновенных сообщений пользуются не только люди, но и боты. Создатели IM-клиента Telegram учли этот факт и первыми среди конкурентов открыли API для ботов. Теперь сторонние разработчики могут спокойно создавать своих ботов и подключать их к Telegram.

Для ботоводов открыт специальный раздел со справочной информацией по созданию ботов.

Боты — обычные аккаунты Telegram, которыми управляют не люди, а программы, и у них часто есть элементы ИИ. Они могут делать что угодно — преподавать, играть, искать информацию, транслировать сообщения на широкую аудиторию, напоминать о событиях, подключаться к другим сервисам, даже передавать команды в Интернет вещей, рассказывают разработчики Telegram.
Читать дальше →
Всего голосов 32: ↑32 и ↓0+32
Комментарии45

7 удивительных фактов о профессиональной ориентации

Время на прочтение9 мин
Количество просмотров56K
Когда мы с коллегой slavapankratov запустили свою годовую программу обучения, то с самого начала хотели делать план обучения индивидуальным для каждого студента. Для чего призвали на помощь вторую вышку slavapankratov по практической психологии, отобрали два подробнейших теста (один на 580 вопросов) и стали просить слушателей не только пройти тесты, но и написать эссе о своей истории, целях и планах.

Через пару месяцев мы запустили профессиональную ориентацию как отдельную услугу, окончательно закопавшись в анкетах и эссе наших слушателей.

За 3 месяца удалось проанализировать более 500 анкет, что не только дало почувствовать себя профессиональным орнитологом ориентологом, но также дало пищу для интереснейших наблюдений.

Это не профессиональное исследование, но надо понимать, что за каждой анкетой стоит карьера и судьба конкретного человека. Черт побери, звучит пафосно, но это так. Что любопытно, анкеты нам присылали люди из самых разных компаний (и даже не только ИТ отрасли), самого разного возраста (от 24 лет до 51 года), из 6 стран, — вероятно, это говорит, об универсальности замеченных проблем.

Итак, что удалось заметить.
Читать дальше →
Всего голосов 56: ↑50 и ↓6+44
Комментарии18

Система централизованного управления авторизацией пользователей на FreeIPA в Docker

Время на прочтение6 мин
Количество просмотров87K
На волне популярности Docker на Хабре, после участия в некоторых дискуссиях в комментариях относительно Docker, и в связи с недавней необходимостью настроить централизованную авторизацию для кластера Linux машин, я решил написать небольшую заметку. Здесь будет показан яркий, на мой взгляд, пример применения Docker'a для небольшой частной задачи.

Вот так, кстати, выглядит FreeIPA WebUI (официальное демо) (кликабельно):



Какие задачи я хотел решить при помощи FreeIPA:
  1. Иметь возможность создавать/изменять/удалять акаунты пользователей централизовано, а не на каждом отдельном сервере
  2. Централизованные плавила для sudo
  3. В последствии мы подключим к этой системе ещё и VPN авторизацию, а потом может и другие внутриофисные сервисы

Да, скорее всего FreeIPA в нашем случае это выстрел пушкой по воробьям, но с другой стороны — альтернатив что-то не видно. Я рассматривал такие варианты: NIS (по-моему он уже давно должен отправиться на отдых), OpenLDAP +… +… (не очень дружелюбно, да и FreeIPA в итоге под собой имеет LDAP, только нам не приходится с ним иметь дело напрямую), тут перечень заканчивается, я не нашёл ничего больше.

Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии21
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Полтава, Полтавская обл., Украина
Дата рождения
Зарегистрирован
Активность