18 апреля 2014 г.

Пост про ФФФ

На посиделках Денис, рассказывая, про нашу компанию в качестве подрядчика на разных проектах, упомянул, что мы очень позитивно относимся к подходу ФФФ (он же fix time, fix budget, flex scope). Оказалось, что большинству присутствующих этот подход незнаком, в отличие от привычных fix all или либерального time & material. В первом случае договор фиксирует сроки, бюджет и функциональность, во втором - только функциональность.
ФФФ же закрепляет дедлайн и стоимость, но позволяет гибко управлять тем, что получится в результате, при этом будучи полезным как заказчику так и клиенту.

Пробуем исправить положение, вот подборка ссылок на про ФФФ:

P.S. ФФФ - это как экзамены в университете. Хорошая аналогия.

15 апреля 2014 г.

UserStory — держим логи клиентсайда в тепле, то есть в комментариях

Сегодня хочу рассказать про написанную мной библиотеку UserStory. Она преобразует комментарии в js-коде в вызовы консольного логгера. Разработчик сам решает, какие сообщения показывать в текущий момент прямо из консоли. У логов есть иерархические метки, что крайне полезно.

Как выглядит UserStory

Возможности и преимущества

Иерархия логгеров

Иерархия логов позволяет показывать их выборочно, для этого указывается соответствующая метка.

Например, рассмотрим группу меток: @news, @news.render, @news.render.getContext и @news.add. Вот как можно вывести все события по новостям, но исключить всё, что связано с их отрисовкой. Набираем в консоли:
UserStory.on('news');
UserStory.off('news.render');
Теперь в консоли будут появляться логи с метками news и news.add. Одному сообщению можно присвоить несколько меток. Состояние «предпочтений» сохраняется в localStorage.

Комменты и дебаг одновременно

Комментарий для UserStory служит двум целям: сказать, что сейчас произошло, при дебаге и своей обычной цели, пояснения кода. Он должен отвечать на вопрос «что вот тут происходит?».

Если вдруг появится задача починить баг на проекте, которым давно не занимался, я сначала выполню в консоли UserStory.on('*'), затем воспроизведу баг и, наконец, увижу в консоли, что происходит. Вероятно, это сэкономит время погружения в проект. Также это поможет и новым разработчикам.

Частая проблема разработки — наличие в коде ручных вызовов логгера, например, сonsole.log() или mySuperLog(), что мешает чтению кода. Комментарии же лежат на отдельном уровне восприятия, в IDE обычно отображаются ненавязчиво.

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


Как подключить


Во-первых, устанавливаем библиотеку:
npm install user-story
Чтобы UserStory заработал, надо перегнать js-файл через скрипт библиотеки:
cat input.js | ./node_modules/user-story/bin/us > output.js
Если используется django и django-compressor:
COMPRESS_PRECOMPILERS.append(
    ('text/javascript', 'node %s' % os.path.join(ROOT_PATH, '/node_modules/user-story/bin/us')),
)
Затем подключить клиентскую часть:
bower install UserStory
<script type="text/javascript" src="UserStory.js"></script>
Другой метод подключения — через адаптер к гранту grunt-user-story.

Гитхаб-репозиторий

PS. Библиотека находится в стадии прототипа, но уже активно нами применяется на наших проектах.

4 апреля 2014 г.

Про взаимодействие заказчиков с разработкой

Ребята из Greenfield Project любезно пригласили нас выступить на очерденой встрече стартаперской тусовки #poSEEDelki и мы не преминули воспользоваться из гостеприимством. Наш директор Денис Петрухин поведал о том:
  • Какой сценарий разработки лучше выбрать и когда;
  • Как поставить задачу программистам;
  • Как определить уровень команды-аутсорсера;
  • Как, собственно, вести весь проект. 

Был полный зал, аудитория активно задавала вопросы, было видно, что некоторые темы реально важны. На вопросы про технологии отвечал Денис, а более технологические - Илья и Паша.

Вот слайды к выступлению (записи, к сожалению, нет):

5 декабря 2013 г.

Декабрьская встреча питонистов

Последняя встреча в этом году обещает быть крайне интересной.

10 декабря 2013, в 19:00 (это вторник, а не четверг, как обычно)
офис Mail.ru Group (Ленинградский проспект д.39, строение 79, БЦ «SkyLight»)

Регистрация


Судите сами:

Комментирование исходников

Григорий Петров (Digital October)

Как и что комментировать в исходном коде ваших программ, чтобы комментарии принесли максимальную пользу.

Flask: гордость и предубеждение

Егор Назаркин (Wargaming.net)

От простого к сложному: этапы и проблемы построения "взрослых" приложений на базе Flask.

Пишем ИИ для Russian AI Cup

Артём Безукладичный (Sevenquark)

Russian AI Cup — крупнейший в России ежегодный чемпионат по программированию искусственного интеллекта. В докладе будут рассмотрены общие теоретические и практические методы программирования ИИ, а так же частные решения для условий конкурса этого года. Я расскажу о проблемах, возникших при программировании, и о том, как TDD помогло мне их преодолеть.

Само собой, наша команда там будет, подходите, пообщаемся в кулуарах :)

1 июля 2013 г.

Чтиво 51

Django

На прошлой неделе вышла  Django 1.6 beta 1.

Ожидаемые даты следующих релизов Django: RC: Aug 8, Final: Aug 15 или позже, если потребуются дополнительные релиз-кандадты.

Отзыв о книжке Violent Python Да-да, это практически питон для "хакеров".

Хорошая обзорная статья про асинхронное выполнение кода в python. С примером на flask и tornado.

Автор PEP443 про single-dispatch generic functions объясняет, зачем они нужны простому программисту. Уже можно использовать, есть бэкпорт для 2.6+: pip install singledispatch.

Люк Плант объясняет, почему MVT в Django это не "классический" MVC и что из этого следует.

Меньше недели до начала месяца непрерывного питона @julython Даёшь больше независимых проектов! http://julython.org

Вышла новая версия factoy-boy с поддержкой SQLAlchemy и другими фичами. Это отличная замена фикстурам в тестах.

Как люди вне Яндекса делают проекты на БЭМ с бэкендом на python и nodejs.

Очень познавательное видеоинтервью @__rlp с @mitsuhiko про Flask.

Чуваки написали свою чуть ускоренную реализацию cpython под названием FalconНе так шустро как pypy, но всё же.

Веб-разработка

Небезызвестный Yehuda Katz про будущее веб-платформы

Серия статей о том, что будет с postgres, mongodb, riak, redis при разрыве сетевой связности.

Многие веб-программисты незаслуженно забывают про keep-alive при написании клиентов к API.

Анонимное соревнование для программистов CodingGame, победители получают job офферы python, js, ruby, c, c++, c#, java, php.







5 апреля 2013 г.

Пополнение в портфолио

Ура! Нет, нас не смыли цунами, нас не продали на органы, просто мы были очень заняты разработкой и запуском новых проектов. Представляем некоторые из них, над которыми бились последний год.




Сделали сайт Вероники Белоцерковской, или просто — Белоники. Она ведёт популярный кулинарный (и не только!) блог в ЖЖ, на который подписано более 40 тысяч человек.

Самая интересная часть сайта «под капотом». Рецепты в постах размечены особым образом, чтобы автоматически формировать отдельный каталог с кучей фильтров и категорий. Мы создали семантический WYSIWYG-редактор постов, который позволяет хранить информацию об ингредиентах, этапах приготовления, загружать тонны фотографий и создавать из них галереи.


Всех функций не упомянуть в небольшой заметке, редактор заслуживает более детального описания.

Сайт Белоники в портфолио






Запустили и поддерживаем сайт FutureToday, который помогает студентам найти работу в компаниях мирового масштаба и наоборот.

Перед нами стояла задача переписать уже имеющийся сайт, улучшив его и расширив функциональность. Разработка была ограничена довольно сжатыми сроки: сайт надо было обновить к учебному сезону. Первый релиз состоялся в конце августа 2012 года после 7 месяцев активной разработки. Над проектом в среднем работало 5 человек с нашей стороны и 2 со стороны клиента, в некоторых итерациях численность проектной команды доходила до 15 человек.


Сайт FutureToday в портфолио

15 марта 2013 г.

Чтиво №50

Прошёл первый российский пайкон. Читаем отчёты: раз, два, три. А лучше всего смотрите видео.

Прошёл юбилейный, десятый по счёту Moscow Django. Снова собрали полный зал и даже не всем хватило места, остальные смотрел прямую трансляцию на уютной кухне мейла. К сожалению, трансляция не работала вне офиса, но видеозапись уже доступна. Было 3 интересных разных доклада и неизменное общение в кулуарах :)

Ссылочки за прошедшие 3 недели, самое интересное:

Бэкенд

Уже все знают, но всё равно: в конце февраля наконец вышел Django 1.5. Пользуясь случаем пиарим выступление Ильи Барышева про новинки 1.5.

Алекс Гейнор рассказыват, отчего питон, руби и джаваскипт такие тормозные.

В конце февраля PyPy стукнуло 10 лет, кто бы мог подумать.
Интересная заметка про соль ОПП и размышелния где же правда между “Stop Writing Classes” и “Start Writing More Classes”.

Уже несколько недель успешно пользуемся сервисом bundlescout для отслеживания новых релизов на PyPI. Раз в день (где-то в 16-00) приходит письмо со ссылками на новые версии. Кому не нравится платность могут воспользоваться альтернативой. Оба сервиса кроме python понимаю ruby, nodejs.


Клиентсайд

Full-text поиск прямо в браузере. Статья и сайт.

Тем кто никогда не умел верстать, но приходится иногда, будет полезен туториал по тому что такое layout страницы. Тем же, кто вообще никогда не верстал, нужно что-нибудь по-проще.

Библиотека для работы с разнообразными форматами данных и конвертации между ними jQuery.IO.

Прикольный генератор цветовых схем для бутстрапа.

Разное

Артём Голиков делится своей тёмной темой для pycharm, которая основана на дефолтной теме саблайма.