Hosted CI

SemaphoreApp

CI, построенный на интеграции с github, только для Ruby on Rails проектов. После регистрации нужно только указать, какие репозитории будут собираться на этом CI. Другие сервисы (отличные от github) не поддерживаются (возможно, пока).
SemaphoreApp хорошо сделан, приятен в использовании и, что очень важно, не требует никакой настройки. Для небольших проектов либо быстрых стартапов, этот CI идеален.

Плюсы:
- приятный интерфейс (многого стоит)
- никакой настройки
- собирает все ветки, что полезно при pull request’ах
- виджет для github, отображающий статус pull request’а
- платишь за аккаунт, на котором находится репозиторий, не за людей
- параллельное тестирование

Минусы:
- только github
- только Ruby on Rails
- одно окружение для сборки проектов

Сайт https://semaphoreapp.com
Платный. Есть 14-дневный пробный период.

Travis CI

Знаменитый CI для проектов с открытым исходным кодом. Так же, как SemaphoreApp, работает только с github, но поддерживает не только Ruby on Rails. Travis CI работает со всеми известными языками и фреймворками: ruby, jruby, clojure, python, perl, etc. Умеет собирать проекты на разных платформах и разных версиях языка.
Так же, как и другие self-hosted CI, не требует никакой особенной настройки, только yaml файла.
В скором будущем команда Travis обещает добавить поддержку приватных репозиториев (возможно в Pro версии), но она будет платная.
Travis CI — идеальный инструмент для open source библиотек и проектов, он для этого и разрабатывался. Кроме того, что он позволяет вам проверять вашу библиотеку на совместимость с другими языками, он освобождает вас от необходимости делать это локально :) Кроме того, виджет от Travis CI — это своеобразная лакмусовая бумажка для OSS проектов, если виджет зеленый — можно брать!

Плюсы
- бесплатный
- множество языков и фреймворков
- множество окружений и вариантов языка (ruby 1.8.7, 1.9.2, 1.9.3, jruby, etc.)
- виджет для github, отображающий статус проекта

Минусы
- ограниченное время сборки проекта — 20 минут*
- нет возможности собирать приватные репозитории

Сайт https://travis-ci.org
Бесплатный для проектов с исходным кодом.

* На момент написания статьи

Был еще какой-то circle-ci, который я не использовал, поэтому писать про него ничего не буду.

Self-hosted CI

Jenkins CI

Он же бывший Hudson, поэтому всё, относящееся к jenkins, может быть применено к Hudson.
Великий и ужасный швейцарский армейский нож.
Никакой привязки ни к чему нет, кроме платформы java, т.к jenkins написан на ней.
Вся настройка может быть произведена в веб-интерфейсе программы (который ужасен чуть более, чем полностью) или руками с конфигурационными файлами.
Сильной стороной Jenkins является огромное количество плагинов на все случаи жизни.
Благодаря усидчивости, знаниям идеологии java и немного linux, Jenkins сможет расцвести и радовать вас каждый день.

Плюсы
- огромное количество плагинов
- сконфигурированные пакеты для всех основных ОС
- плагин Chuck Norris
- открытый исходный код
- умеет собирать все git ветки, что может быть полезно при pull request’ах

Минусы
- полная ручная установка и настройка
- т.к плагины написаны умельцами, документация часто бывает неполной и запутанной
- ужасный интерфейс

Сайт http://jenkins-ci.org
Jenkins бесплатный.

TeamCity

CI сервер от JetBrains. Если вы используете IntelliJ IDEA, RubyMine, AppCode, значит вы знаете этих ребят.
TeamCity сервер может быть развернут локально с некоторыми ограничениям, однако может быть использован для платных продуктов.
У меня не было возможности использовать данный CI, поэтому — размышления по описанию.
Интерфейс гораздо приятнее аскетичного jenkins. Из коробки поддерживает несколько систем контроля версий, несколько языков программирования и так далее. Хорошая база данных плагинов для поддержки всех современных технологий и стеков.

Плюсы
- приятный интерфейс
- сконфигурированные пакеты для всех основных ОС
- плагины для основных технологий

Минусы
- платный

К сожалению, у меня не было возможности поиграть с этим CI, но очень хотелось. Если кто-то использовал или сейчас использует, расскажите, как он.

Сайт http://www.jetbrains.com/teamcity/
Бесплатный с ограничениями.

CruiseControl.rb

Бесплатный CI, с открытым исходным кодом, написан на ruby. К сожалению, проект уже не разрабатывается. Однако это не мешает ему собирать наш проект уже 3 года :)
Ничего особенного в этом CI нет, кроме того, что написан на ruby.

Плюсы
- открытый код
- написан на ruby
- бесплатный

Минусы
- больше не поддерживается

Сайт http://cruisecontrolrb.thoughtworks.com
Бесплатный. Не поддерживается.

Список CI, не вошедших в обзор

Hosted ci:

https://circleci.com/privacy

Open source CI:

https://github.com/defunkt/cijoe

https://github.com/integrity/integrity

https://github.com/appelier/bigtuna

Other:

https://www.tddium.com

http://hudson-ci.org

https://jazz.net/products/rational-team-concert/

Pentax K-30

Давненько я ничего не писал про новые железяки, исправляюсь.

Пришло время обновления фототехники, старенький Nikon D3000 уже не устраивал, и желания покупать новые объективы для него не было, даже с учетом продажи body и покупки нового. И решил я перейти в другую «веру» — Pentax. Посмотрев тонну видео обзоров, прочитав десяток страниц тех же обзоров, решил, что хай-энд камера мне не нужна. А так как у Pentax нет среднего варианта (либо флагман K-5 либо камера начального сегмента K-30), выбор пал на K-30

Pentax K-30

Первое, что замечаешь, когда берешь в руки K-30 — вес. Он действительно легче других фотоаппаратов! (сравнивал с Nikon D3000 и Nikon D7000). Размеры тоже меньше конкурентов. Если отрезать ручку, слегка срезать выступающую камеру, габариты камеры можно будет сравнить с беззеркальными собратьями (Fujifilm X-E1, например). За счет чуть большей ручки, т.к ширина самого аппарата чуть меньше, фотоаппарат держать удобно, и случайно не выронишь.

Pentax K-30

Второе (если брать белый аппарат) — глянец. Белый корпус глянцевый, с резиновыми вставками. Ощущается он не очень то и надежным, однако прорезиненные технологические отверстия оставляют ощущение не последнего китайского аппарата.

Pentax K-30

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

Не понравился щелчек затвора. Звук громкий, звонкий и «некачественный». Картину дополняет объектив (кит, либо 35mm), который при фокусировке жужжит так, как будто собирается какой-то трансформер. В толпе будет сложно затеряться, если фотографировать репортажи в стиле «снял — беги».

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

Хотя предустановленных режимов хватает, в боевых условиях они бесполезны, если нет солнца. Практически все пейзажи, макросъемка, портреты получаются не очень.

Приятно порадовал высокий ISO в слабо освещенных местах. До 3200 (включительно) шумы практически не заметны, снимать можно и нужно (для примера D3000 + 50mm 1/8 после 800 ISO шумел как последняя Nokia).

В общем и целом камера и объектив 35mm хороши. Бокэ делает более благородный, нежели 50mm 1/8 nikor с Nikon D3000. Цвета просто вырывают глаз, не знаю какие там стоят режимы обработки, но цвета неестественно сочные. Хотя мне это нравится.

По мере использования напишу больше. Сложно судить о камере и объективе за неделю использования. Но то, что он лучше D3000, — это точно :)

Примеры фотографий:

Pentax K-30

Pentax K-30

Pentax K-30

Pentax K-30

Pentax K-30

19.05.2013 hardware, Новости

Курсов и школ в интернете полным полно: платные, бесплатные, a какие-то вообще от именитых университетов. Я пробовал проходить курс ML в coursera.org, но мне не хватило сил и терпения закончить курс, хотя курс был очень интересный. Но, не смотря на то, что курс был интересным, он все же был «академическим», т.е точно таким же, как вы прослушали в институте.

coursera.org — калька реальных занятий университета, т.е: начитка лекций несколько часов, затем задания, затем проверка. Такая схема не работает в интернете, люди перегружены информацией, лишние часы прослушивания пройдут в пустую. А пока лекции будут прослушаны, забудется теория — и практика пройдет мимо. Слушатель потерян. А ведь задача — дать доступ к знаниям: кто хочет, пусть берет.

Но есть школа, которая собрала всё лучшее, к чему привык современный человек: интерактивные задания, короткие лекции, нацеленность на практику — codeschool.com. Лекции в ней построены как обычный скринкаст: есть проблема, есть вариант решения, и сейчас мы его вам покажем. Задание соответствующее: вот вам проблема, наподобие той, что была в лекции — решайте. Лекции (скринкасты?) редко бывают длиннее 10-12 минут, это позволяет не терять концентрацию и лучше запоминать информацию. Каждый курс выполнен в определенной стилистике: rails for zombies (про зомби, кэп), rails best practices (8 битные игры) и так далее. Практической пользы не много, но развлекает и поднимает интерес к курсу.

Практически все курсы — курсы для новичков, но знающие люди смогут найти для себя кое-что. По мере развития школы, уроки будут дополняться новым материалом и более продвинутыми лекциями. Я прошел курс iOS, Ruby, Rails и очень доволен результатом. После курса iOS мне стали понятны культура и практики программирования objective-c, которые были «белыми пятнами» после прочтения книг или просмотра скринкастов (peepcode например).

Codeschool — платный, просят 25$ в месяц, что, в общем-то, не большая сумма за такой полезный ресурс. Одного месяца вполне достаточно, чтобы пройти всё, а потом, через полгода-год, заплатить еще раз и пройти новые курсы :) Кроме самих курсов, есть еще и скринкасты, которые хорошо дополняют курс.
Не поленитесь и пройдите курсы GIT, HTML или Ruby, на них не нужно больше 2-3х часов, а результат будет потрясающим!

06.05.2013 internet, Objective-c, Ruby

Если в javascript существует callback hell, то в ruby (а точнее в rails) есть gem hell. Когда решаешь установить какой-то один gem, он в большинстве случаев тянет за собой еще пару gem’s попроще. Благо есть bundler, который сможет решить вопросы совместимости gem’ов, а ведь бывали времена, когда bundler’а не было.
И если с версиями и конфликтами всё хорошо, то с функциональностью — не очень. Бывают такие gem’ы, которые могут добавить совершенно неожиданное поведение.

Например, gem devise_security_extension добавляет «An enterprise security extension» и совершенно не упоминает о том, что он делает validate uniquness :email всегда, и отключить это нельзя. Хочешь отключить — откажись от «enterprise» проверки для password. Благими намерениями вымощена дорога в ад, господа разработчики. Самое плохое — это то, что о такой проверке вам приходится узнавать в совершенно других местах. Gem навесил еще одну проверку, а когда на модели их пару десятков, найти первоисточника довольно сложно (особенно когда проект уже большой). И, как часто бывает, документация по какому-то gem’у либо устарела, либо неполная. Исходный код — лучшая документация!

Мораль такова: при выборе gem’ов для проекта, изучайте исходный код gem’а, проверяйте активность разработки gem’a и людей, которые этот gem сотворили.

21.04.2013 Ruby, web-dev

scrum

Лучшая картинка объясняющая scrum! Спасибо @eugenehlyzov за ссылку :)

05.04.2013 fun, web-dev

В последнее время принято считать, что, кроме rails, на ruby ничего не пишут и вообще язык медленный и никому не нужен. Ахаха! Всем известный chef написан на ruby (и erlang). А ещё, мне особенно приятно, metasploit framework тоже написан на ruby! (и еще немного С и прочей нечести).

Update: а еще vagrant и puppet!

25.03.2013 Ruby

Хорошая презентация от Peter Cooper про основные изменения в ruby 2.0.
Не такие большие как при переходе 1.8 -> 1.9, но не менее важные.

13.03.2013 Ruby

MacBook Air

Когда пришло время обновления рабочего железа (MacBook Pro mid 2010), я всерьез задумался о том, какое количество ОЗУ мне нужно. На текущем ноутбуке было 8 GB, они никогда не были заполнены полностью, обычно, при запуске пару десятков программ, было занято около 5 GB. Важная ремарка: я не кодирую видео, не занимаюсь серьезной обработкой графики (либо фотографий в соответствующих программах), поэтому мне не нужно 8, 16, 32 GB ОЗУ. Принцип «больше — лучше», конечно, стоит учитывать, но зачем переплачивать (немалые деньги, если учитывать выбор мой), если пользоваться я ими не буду?

Выбор пал на MacBook Air 13.3″ c 4 или 8 GB. 4 GB — это стандартная поставка нотубука, поэтому цена практически везде одинаковая. 8 GB поставляется только в ноутбуках на заказ, а это значит, что нужно заказывать из других стран, и цена будет на 200-250$ выше (плюс ожидание в 3 недели. Никакой РСТ, хотя это, конечно же, не важно), чем покупать ноутбук на месте.

Так как ждать месяц не хотелось, а переплачивать тем более, взял вариант с 4 GB. Как оказалось, опасения были напрасны, полностью память «забивается» очень редко.

Мой рабочий «стек» состоит из: terminal (стандартный) с вкладками, Firefox, Chrome, mysql сервер-клиент, postgresql сервер-клиент, solr, redis, запущенное rails приложение (средней сложности), texmate, forklift, adium, skype, github, mail.app, иногда wunderlist. С такими запущенными приложениями, памяти нужно около 3.8 GB — вполне достойно! Когда памяти не хватает и Mac OS X начинает использовать своп, этого в принципе не замечаешь благодаря SSD.

В общем могу сказать — 4 GB хватает для ruby/rails разработки. Возможно, мне будет мало памяти для xcode + Mac разработка, но как только объем памяти станет узким горлом, тогда ноутбук будет обновлен, но уверен, на год-полтора мне этой конфигурации хватит.

В виде бесплатной плюшки от 4 GB памяти: держать открытым как можно меньшее количество приложений. Меньше приложений — меньше отвлекающих факторов — больше концентрации ^_^

 

12.03.2013 fun, Mac

Если кто-то читает этот блог напрямую на сайте, то могли заметить новую кнопку flattr в конце поста. Flattr — сервис микроплатежей, созданный для людей, которые создают «контент» в интернете, который мы так любим.
Принцип работы сервиса прост, как утюг: вы создаете лимит, который вы готовы потратить в месяц на поощрение авторов, и кликаете на кнопку flattr на выбранных страницах. В конце месяца подсчитываются все клики и бюджет, выделенный в начале месяца, распределяется между всеми кликами. 90% процентов уходит авторам, остальные — поощрение сервису за работу.
Придумал сервис и выступил как его совладелец Peter Sunde — «публичное лицо» команды TPB. Если вы еще не смотрели фильм TPB AFK, настоятельно рекомендую к просмотру.

Для чего это нужно, если можно сделать «донат» через разные платежные системы, будь то Яндекс.деньги или Paypal?
Во-первых, это сложнее: в flattr, зайдя единожды в систему, можно настроить бюджет и больше не вспоминать про него. В случае с «донатом» через электронные деньги, нужно каждый раз прыгать на сайт деньго-держателя, вводить пароли, смотреть чеки об оплате… какого черта? я просто хочу дать автору на пиво!
Во-вторых, не у всех есть возможность оплатить электронными деньгами, «донейт» карточками не много кто может принять. Flattr поддерживает множество систем оплаты, и вы любым способом можете внести сумму денег в систему и не вспоминать про переходы на страницы платежных гейтов, страницы подтверждения оплаты и так далее.
В-третьих, помогать авторам — это хорошо и приятно, но чем сложнее сделать помощь, тем больше желание эту помощь не делать, а это плохо. Проще — лучше, в данном случае этот закон действует.

Мне нравится идея того, что я могу дать немного материальной помощи авторам статей, музыки либо фильма, в обход лентяев, которые обслуживают доставку денег автору (да еще и большую часть денег забирают себе за услуги). Интернет дал возможность упразднить посредничество, авторы могут получать напрямую вознаграждение, не кормить лентяев. Информация должна быть открытая, но не стоит забывать о том, что люди работали, чтобы получить эту информацию либо создать её. Если мы перестанем помогать друг другу, то … вояджер найди их и приведи на эту планету!

Единственное,что бы я хотел добавить в flattr, — это поддержку bitcoin, но,боюсь, это пока проблематично.

Flattr слабо распостранен в нашем полушарии, среди носителей великого и могучего. Как ни прискорбно, но наши люди еще не привыкли к такому роду отношений в интернете. Поэтому я пишу этот пост и хочу, чтобы больше людей узнали про этот сервис и стали им пользоваться.
Я же, если мне кто-то закинет пару центов европейских, потрачу на других авторов, которых мне хотелось бы поддержать. Любовь, мир, свободная информация!

23.02.2013 internet

iPhone with Pocket

iPhone with Pocket

Времени нет. Времени нет никогда, особенно если вы живете в городе. Особенно если у вас есть машина. Особенно если вы работаете в офисе 8/5. Особенно … если много отговорок.

Во время интеграции реального мира и интернета информация — как лавина: она накрывает и давит. Социальные сети, RSS, подписки на любимые блоги… прочесть всё физически не возможно. Но можно прочесть самое интересное, в то время, когда невозможно ничего делать, кроме как стоять-сидеть/висеть и ждать. Это самое время идеально для чтения.

18.02.2013 book, mobile