пятница, 4 марта 2016 г.

[prog] Mxx_ru 1.6.7

Вышла версия 1.6.7 инструмента Mxx_ru с начальной поддержкой т.н. externals. Теперь в Mxx_ru есть средства для выкачивания внешних зависимостей из Git/Hg/Svn и установки частей этих зависимостей в нужные подкаталоги. Пока внешние зависимости берутся только из репозиториев Git/Hg/Svn. Поддержка закачки тарболлов/архивов будет добавлена в следующей версии. Надеюсь, получится выкатить ее достаточно быстро.

Установить Mxx_ru можно командой gem install Mxx_ru

Обновить Mxx_ru можно командой gem update Mxx_ru

Так же Mxx_ru можно загрузить с SourceForge (gem-файл).

PDF-ку с документацией пока не обновлял. Сделаю это уже после выпуска версии с поддержкой тарболлов. Посему единственная имеющаяся в наличии документация собрана в этом посте под катом.

Итак, что такое MxxRu::externals и как с ними бороться?

четверг, 3 марта 2016 г.

[prog] Наметки самодельной альтернативы CMake-овскому ExternalProject_Add

В процессе воплощения в жизнь ранее описанных соображений что-то начинает вырисовываться. Вместо того, чтобы писать на CMake вот так:

ExternalProject_add(so_5_prj
  SVN_REPOSITORY http://svn.code.sf.net/p/sobjectizer/repo/tags/so_5/5.5.15.2/dev
  CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
  INSTALL_DIR ${CMAKE_INSTALL_PREFIX}
)

Хочется писать на Ruby как-то вот так:

MxxRu::svn_externals :so_5 do |ext|
   ext.url 'http://svn.code.sf.net/p/sobjectizer/repo/tags/so_5/5.5.15.2' 
   ext.map 'dev/so_5' => 'dev'
end

Ну или даже вот так:

MxxRu::svn_externals :so_5 do |ext|
   ext.url 'http://svn.code.sf.net/p/sobjectizer/repo/tags/so_5/5.5.15.2' 
   ext.option '-q'
   ext.option '--native-eol''LF'
   ext.map 'dev/so_5' => 'dev'
   ext.map 'dev/test/so_5' => 'test'
   ext.map 'dev/samples/so_5' => 'samples'
end

На данный момент уже вполне себе дышит работа с Git, Hg и Svn. Нужно еще подумать на счет реализации дополнительных опций, вроде :clober и :reload. И можно будет релизить новую версию Mxx_ru с поддержкой такого вот подхода к получению зависимостей из внешних источников. Ну а потом на очереди будет загрузка (http/https, ftp) архивов (tar.gz, tar.bz2, tar.xz, zip, 7z). Там, глядишь, и без пакетного менеджера для C++ можно будет прожить еще какое-то время :)

вторник, 1 марта 2016 г.

[prog.dvcs] Так вот про современные DVCS...

Проштудировал тут доки по трем DVCS: git, mercurial (hg) и bazaar (bzr).

Исходя из того, что и как описано в документации, bzr выглядит самой вменяемой системой. Простой, но мощной. К сожалению, есть только один хостинг для bzr -- launchpad -- да и тот только для OpenSource проектов. Т.е. если захочешь вести закрытый проект на bzr, то занимайся и хостингом, и интеграцией с какими-то другими сервисами (вроде CI), самостоятельно.

Hg выглядит чуть мудренее bzr, но проще git-а. По крайней мере пока остаешься в рамках простой модели -- захотел отдельную ветку, склонировал репозиторий, затем смерджил изменения из нового репозитория в старый, после чего убил новый репозиторий нафиг. Но вот когда пытаешься разобраться зачем нужны еще и именованные ветки, то как-то все тускнеет :( Еще неприятно, что документация по hg производит впечатление не первой свежести. На официальном сайте дана ссылка на книгу "Mercurial: The Definitive Guide", но книга эта от 2009(!) года. Понятно, что основные концепции вряд ли изменились, но читать про возможности версии 1.x когда доступна версия 3.7 как-то странно.

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

Ну а git, как уже говорил, это инструмент для более интеллектуально развитых людей, чем я. С git-ом, конечно, мощь и сила, и куча свистелок и перделок от разных производителей, но очень и очень стремно браться за инструмент, с тонкостями которого ты сам разберешься с огромным трудом. И уж тем более, вряд ли сможешь объяснить эти тонкости кому-то другому. Да и тот простой факт, что спустя столько времени после появления на свет для нормальной работы с git-ом в Windows нужно запускать отдельный git-bash и проводить все манипуляции оттуда, да еще и с риском нарваться приключения с CR/LF... Козлина она козлина и есть, короче говоря :)


Имхо, разработчики svn допустили два больших просчета. Во-первых, официально рекомендовали структуру репозитория из trunk/tags/branches. Что явно подходит далеко не всем проектам. Но бесхитростное следование этой рекомендации набивают людям слишком много шишек. Во-вторых, не понятно, почему разработчики svn до сих пор не сделали возможность создания локальных копий репозиториев? Был бы маленький и простой как две копейки инструмент, позволяющий вести разработку локально... Но это была бы уже совсем другая история :)

[prog.c++] Файловая структура для кросс-платформенных C++ проекта

Очень долго пользовался придуманной много лет назад файловой структурой в своих C++ных проектах. Эта структура вырабатывалась долго, методом проб и ошибок. Довольно подробно я ее описывал почти одинадцать лет назад в RSDN Magazine. С тех пор она верой и правдой служила моей команде. Но времена меняются, имеет смысл посмотреть по сторонам.

понедельник, 29 февраля 2016 г.

[life.cinema] Очередной кинообзор (2016/02)

Подошло время очередного кинообзора. В этот раз это скорее список фильмов, которые смотреть вовсе необязательно. Имеет смысл посмотреть разве что первый из списка, "Субура". Еще три или четыре -- по желанию. Остальные можно не смотреть. Хотя это, конечно же, мое личное мнение.


Субура (Suburra, 2015). Добротный криминальный фильм.

Выхода нет (No Escape, 2015). Бодренько и смотрибельно.

Виктор Франкенштейн (Victor Frankenstein, 2015). Видеоряд просто шикарнейший. Да и актеры стараются. Но в целом как-то не торкнуло.

Привязанные к дому (Housebound, 2014). Не ожидал, что посмотрю с удовольствием. Хоть и трэшевый фильм, но это правильная трэшевость ;)

Страна чудес (2015). Смотрел с настороженностью из-за большого количества негативных отзывов. Но лично для меня фильм оказался вполне себе нормальной комедией. Далеко не шедевр, да, но местами бывало смешно.

Из тьмы (The Hallow, 2015). Сам удивлен, но было интересно.

Допинг (The Program, 2015). В принципе, фильм сделан весьма качественно. Отдельно стоит отметить выбор актера на главную роль -- местами сходство с прототипом очень сильное. Но вот какого-то драматизма не заметил, фильм оставляет равнодушным.

Сливки Хакни (Hackney's Finest, 2014). Эдакая дешевая попытка снять криминальное кино в духе Гая Ричи и Квентина Тарантино. Понятное дело, получилось не очень, но посмотреть вполне можно.

Черная месса (Black Mass, 2015). Не торкнуло. Просто не торкнуло.

Наш бренд - кризис (Out Brand Is Crisis, 2015). Сплошная череда штампов и вполне предсказуемых сюжетных поворотов (настолько предсказуемых, что их даже поворотами сложно назвать). На пользу фильму идет разве что хороший набор актеров.

Хуже чем ложь (Misconduct, 2016). Фильм не зацепил не смотря на хороших актеров.

Дочь бога (Exposed, 2016). По трейлеру ждал большего. Если дождаться самого финала, то все более менее встает на свои места и происходящее на экране обретает смысл. Но ждать слишком уж долго и нудно.

Статус: Свободен (2015). В принципе, чуток получше, чем "30 свиданий", но не намного. Хотя, может фильм просто на другую аудиторию рассчитан.

30 свиданий (2015). Такое ощущение, что старались. Но для меня там была всего одна смешная шутка. Так что потраченного на фильм времени жаль.