MSBuild Extension Pack

Я помню, кто-то ругался, что Make, дескать, не обрабатывает пробелы в путях, прошлый век. Ну чо, вот вам программа. xml, интерпрайз. Расширения делаются дотнетовскими dll-ками. Которые... конкатенируют параметры в командную строку и запускают программы на их выполнение. Через system(), да. Или какой там в windows аналог. Я боюсь, эта порнография вообще не соответствует никакому летосчислению.

Литература:
https://msbuildextensionpack.codeplex.com/SourceControl/latest#Solutions/Main/Framework/Framework/Parallel.cs

git-rebase2 - 0.9

На прошлой неделе git-rebase2 научился детектить внутренние мержи. Эта идея была в TODO с самого начала, но я никак не решался за неё взяться. Помогла, как и в первый раз, короткая турпоездка. Плюс затяжные пасхальные выходные - на собственно кодирование.

Кстати, сейчас в репозитории 255 коммитов :)

Думаю, может, придумать ему какое-нибудь своё имя да и прорекламировать ещё раз.

секретные возможности интернета

http://nymag.com/daily/intelligencer/2014/04/secret-shame-of-an-unacquired-techie.html

Вы думаете, о чём эта ссылка? о дискриминации женщин, дизайнеров или стартапов, или ещё чего. Неа. Это форсинг нового сервиса Secret. Который "enabling its users to speak up anonymously". Кто бы мог подумать, что такое возможно в интернете — говорить анонимно, а?

О политическом моменте

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

Я категорически не одобряю последние действия российского правительства по отжиму Крыма. Очевидно, защита кого бы то ни было являлась только поводом. Если б действительно целью являлась именно защита - это можно было бы сделать иначе, не отделяя ничего и не кладя на ООН так демонстративно. Очевидно, "референдум" - это плохо сыгранный спектакль, сделанный по инициативе российских властей просто для формальности, альтернативы там особенной не было, срок очень маленький для вразумительного обсуждения, нарушения в голосовании и всё такое. Так что тут происходит агрессивная война в чистом виде.

С другой стороны, майданная революция мне совсем не кажется белой и пушистой. Во-первых, да, русофобская риторика. Причём не просто абстрактно русофобская, а конкретно вербальные угрозы насилия по признаку национальности (замечу, что страшные русские скинхеды, на которых любители поговорить про толерантный украинский норот показывают как на "настоящих фашистов", не особенно отмечены скандированием "хачей на ножи" на русских маршах и манежках. И я что-то не припомню сколько-нибудь массовой организации "чёрная сотня", например). Потом, чисто общая отмороженность и лживость всех этих лидеров майдана, все эти бутылки с бензином под вопли о "мирном протесте", нападения на чиновников и депутатов, призывы к расправам с семьями ментов. Ну и наконец их уже текущий бред про перманентную революцию и требования "прийти отчитаться" уже новым властям - это уже чистая полпотовщина, они же разваливают вообще систему управления и радикализуют ситуацию ещё больше. Всё это совсем не внушало и не внушает оптимизма. Так я вполне допускаю что защита пророссийско настроенным гражданам, а может и просто русскоязычным, могла и понадобиться. И кто знает что будет ещё.

Соответственно, не знаю как относиться к беспорядкам на в Донецке и Харькове. Очевидно, что там немалую роль играют засланные из России активисты. С другой стороны, можно подумать на майдане было сплошное творчество масс. В общем, это серая зона для меня.

msdn (Directory.GetFiles)

(было) написано:
When using the asterisk wildcard character in a search­Pattern, such as "*.txt", the matching behavior when the extension is exactly three characters long is different than when the extension is more or less than three characters long. A search­Pattern with a file extension of exactly three characters returns files having an extension of three or more characters, where the first three characters match the file extension specified in the search­Pattern. A search­Pattern with a file extension of one, two, or more than three characters returns only files having extensions of exactly that length that match the file extension specified in the search­Pattern. When using the question mark wildcard character, this method returns only files that match the specified file extension. For example, given two files, "file1.txt" and "file1.txtother", in a directory, a search pattern of "file?.txt" returns just the first file, while a search pattern of "file*.txt" returns both files.

на самом деле:
Because this method checks against file names with both the 8.3 file name format (if available) and the long file name format, a search pattern like "*.txt" may return unexpected results. For example, the file longfilename.txtother may be returned if the short file name for the file is LONGFI~1.TXT

литература:
http://msdn.microsoft.com/en-us/library/ms143316.aspx
http://blogs.msdn.com/b/oldnewthing/archive/2014/03/13/10507457.aspx

Мне интересно, какой процесс вообще может привести к тому что там такой бред могут написать.

кстати, о файлах...

...которые якобы не нужны.

Скажем, тегирование файлов в Finder — это совершенно гениальная придумка, если забыть о том, какую проблему она призвана решить. Пользователь изначально поленился дать своим файлам удобные для группировки названия, он поленился разумным способом разложить их по папкам, он поленился придумать какие бы то ни было конвенции, которые бы облегчали поиск и сортировку всех его документов. В результате имеет на диске чудовищный бардак, и не может вспомнить, где у него что лежало. Вряд ли такой пользователь вдруг выберет недельку, чтобы на досуге протегировать все свои файлы, правда? Ведь все меры по профилактике бардака на диске заняли бы секунды, а он этих секунд пожалел. С какой стати клиент с ADHD, пожалевший пары секунд, вдруг превратится в прилежного архивариуса своих дисковых пространств?!

Это он ещё не добрался до того как пользователь будет искать по этим тегам, применяя всю мощь операторов AND и OR (или что там они придумали).

git-rebase2

Какое-то время назад меня перестал устраивать git rebase. Он замечательный, но не устраивает.

* С мержами работает примерно никак. Это устраивает когда пишешь на работе - поправил баг, завигачил его в merge-request и забыл. Он лично мне не нужен. Если я хочу жить с фиксом, всё сложнее. Мне надо его или ребейзить в мастер (и не забыть его обновлять), или смержить, но тогда при необходимости что-то в нём подправить возникает большое количество ручной работы. Возможно, именно несовместимость мержей с ребейзом является одной из причин того что родился и получил популярность подход "всё ребейзим в одну линейную историю"
* Очень медленно работает в Windows. Видимо из-за того что сделан на баше, который сильно тормозит на запуске всяких cut, head и так далее
* Ну и по мелочи - неудобный reword: надо сначала запланировать изменение коммента, а потом, если повезёт, получишь шанс его вписать. Можно конечно сохранять в файлике, но это ещё больше усложняет процесс.

В общем, сделал такую штуку: https://github.com/max630/git-rebase2 ( http://repo.or.cz/w/git-rebase2.git )

HOWTO: visual studio, Ш не Г

Самая большая проблема, с которой приходится на винде – не уродский ЮИ (к нему можно привыкнуть) и не глюки и тормоза (они всё-таки не всё время бывают), а неперывно ездящее по глазам мыло, от которого никуда не деться. Что можно с этим сделать?

1. Ставим расширение Text Sharp ( http://visualstudiogallery.msdn.microsoft.com/7aafa2ea-8c54-4da8-922e-d26bf018514d ). К сожалению, не работает на express версии.

2. Ещё нужен шрифт. Среди существующих мне ни один не понравился, сидел как дурак на courier. В идеале подошёл бы misc-fixed, но где ж его взять. Потом нагуглил что-то в формате fon, поставил в vim и консоль, это конечно замечательно, но что же делать со студией, она же не берёт fon? Оказывается, в ttf файл можно подложить битмапы ( http://stackoverflow.com/questions/3750124/how-to-convert-a-bitmap-font-fon-into-a-truetype-font-ttf ). Ну с fake они погорячились, какой-то векторные данные там должны быть. Лучше было бы взять существующий, напромер Liberation Mono, но я решил упороться по-полной. Мне же не смотреть на него, это просто на всякий случай.

В общем, вот что получилось: