AirBNB

Оказывается, там целая социалочка, в которую надо принести унитаз и показать жопузалинковать свои фейсбуки и твиттеры (даже есть кнопка для скана паспорта), ОБЯЗАТАЛЬНО добавить фото к профилю, и при отправлении заявки это всё подаётся владельцу и он думает, нужен ты ему или нет. В интернете бродят страшные истории что кого-то не взяли потому что у него слишком мало друзей в фейсбуке. Мне пришлось бы совсем плохо - ведь у меня нет фейсбука или твиттера -, но к счастью там ещё можно было добавить линкедин. Так что с одним линкедином и фоточкой поразмытее я вроде прошёл фейсконтроль.

А, ещё там все профили нумеруются просто автоинкрементом, и можно его крутить и смотреть на фоточки и имена клиентов (остальное они к счастью прячут).

Аргумент в пользу морального релятивизма

«Нет ни правды, ни лжи, есть разные точки зрения» — это страшный вирус, болезнь, [...] Не нужно ничего знать. Не обязательно в чём-то хорошо разбираться. Всё дискуссионно! Важна только моя точка зрения. Я имею на неё право! Ну, плюрализм у нас или вы против демократических ценностей?!

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

А, да, автор: Анатолий Вассерман
Полагаю, на этом дискуссию можно считать завершённой.

Free Kim Davis

По поводу умучанной от содомитов начальницы ЗАГСа могу сказать что США - страна правовая. Если посадили, значит было за что есть закон, который позволяет посадить человека вот так, в отсутствие уголовного преступления, "за неуважение к суду". Посадил её не студент факультета прав женщин, а самый настоящий судья. И наверняка жертва гомотеррора не первая, не последняя и не самая пострадавшая таким вот образом. Но я что-то не вижу чтобы те кто требует гуманизма от американских судей хоть сколько-нибудь беспокоился об этом ранее.

Особенно забавно читать причитания пиндоватников, которым любой выверт американской правовой системы вплоть до этого момента был приятен и естественнен. 20 лет за потрахушки на пляже - ok. Пожизненное поражение в правах - само собой разумеется. Пристрелить если недостаточно быстро поднял руки - идеально. И вдруг - ой, как можно, живого человека и в тюрьму.

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

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

телефонное меню в трансаэро

если хотите бла-бла-бла - нажмите 1
если хотите бла-бла-бла - нажмите 5
если хотите бла-бла-бла - нажмите 6
если хотите бла-бла-бла - нажмите 4
если хотите бла-бла-бла - нажмите 3

Удобный UI - но зачем?

Успехи раскинопоклонцев в области UI настолько приучили меня к мысли, что всё новое - это обычно уродливое, нелогичное, неоптимизируемое _нечто_, что на реплику коллеги в отношении другого коллеги "мне не нравится что ты сделал, по-моему этим будет неудобно пользоваться" становится как-то неловко и хочется сказать "ты о чём вообще?"

case-insensitive filesystem strikes back

Если файл инклюдится из директории "бла-бла-Packages-блабла", как "бла-бла-packages-блабла", то что будет в переменной MSBuildThisFileDirectory, packages или Packages? Ответ — иногда то, иногда это

интернет по паспортам

Производители браузеров, которые когда-то пропихнули тотальное использование javascript (вплоть до запрета его отключать), внезапно обнаружили что интернет у нас какой-то несекурный. Решение? Конечно, заставить всех получать сертификаты.

Литература:
https://bugzilla.mozilla.org/show_bug.cgi?id=873709
https://groups.google.com/forum/#!msg/mozilla.dev.platform/xaGffxAM-hs/9JiStoGhHY0J

PS: в качестве ответа на резонный вопрос "а если я не хочу платить за сертификат" предлагается поставить на сервер бекдор для сервиса, который займётся этим вопросом ( https://letsencrypt.org/howitworks/ ):

$ lets-encrypt example.com

That’s all there is to it! https://example.com is immediately live.

The Let’s Encrypt management software will:

* Automatically prove to the Let’s Encrypt CA that you control the website
* Obtain a browser-trusted certificate and set it up on your web server
* Keep track of when your certificate is going to expire, and automatically renew it
* Help you revoke the certificate if that ever becomes necessary.

long file paths in bare Windows

Представьте что вам нужно удалить или создать на голой windows длинный путь. Ставить ничего нельзя. Допустим, это набор скриптов, который должен работать везде (хотя, учитывая всё сказанное, может имеет смысл уже и подложить какой-нибудь бинарничек).

Довольно быстро выясняется что ни одна имеющихся из коробки программ это сделать не позволяет. Значит, надо программировать. Среда программирования в Windows из коробки - это powershell. Засовываем UNC path в System.IO-чего-нибудь и.. получаем сообщение о недопустимых символах. Идём в гугль, читаем: http://blogs.msdn.com/b/bclteam/archive/2007/02/13/long-paths-in-net-part-1-of-3-kim-hamilton.aspx . Коротко: UNC пути в .NET запрещены. Потому что безопасность.

Надо импортировать нативный win32 API. В гугле есть рецепты. После какого-то количества копипасты всё работает. Кладём результат в long.ps1 и... он не запускается. Потому что безопасность.

В тоске перечитываем что пишет powershell.exe /? и находим что можно оказывается скрипт заbase64кодировать и указать прямо в командной строке. Тогда безопасности угрозы нет и всё выполняется. Окей. Пропускаем его через base64 -, и ничего не работает. Конечно, это же "юникод", то есть надо писать в ucs-2. Пишем, и опять ничего не работает. Начинаем сравнивать вывод [System.Text.Encoding]::Unicode.GetBytes(..) и recode utf-8..ucs-2 и обнаруживаем что порядок байтов разный - в ucs-2 первый старший, а в байтах от MS - второй. Потому что уникод, новый чудный мир, долой возню с байтами. В итоге правильная команда для фильтрации: "recode utf-8..ucs-2/21-Permutation|base64 - ".

Соединяем всё вместе, запускаем:


Результат:

Windows Error Ignoring

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

Во-первых, оно тормозит. От каждого клика до появления результата проходит секунд 15-20, иногда больше. Один раз я видел 5 секунд правда. Но больше такого не повторялось. Читая дальнейшее, надо иметь ввиду.

Навигация построена следующим образом: начинаешь с выбора в группы компании, там, скажем, мажорные версии продуктов. Клик - всякие беты, сервиспаки, x86/x64 варианты и прочие минорные релизы. Клик - репорты относящеся к указанному релизу, в свёрнутом дереве (то есть - одно место куда кликать: плюсик). Клик - дерево разворачивается, видно сгруппированные по бинарнику и точке падения креши. Клик - выбраная группа крешей наконец разворачивается, там есть(см. ниже) общее количество репортов и ссылки на дампы. Везде вебдваноль во все поля, никаких ссылок открывабельных в другом табе, никаких кнопок назад. Хочешь посмотреть другой релиз, другую версию - начинай всё сначала (на самом последнем шаге другие свёрнутые группы крешей видны, их можно развернуть, так что они не совсем изверги).

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

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

git: autocorrect

help.autocorrect

Automatically correct and execute mistyped commands after waiting for the given number of deciseconds (0.1 sec). If more than one command can be deduced from the entered text, nothing will be executed. If the value of this option is negative, the corrected command will be executed immediately. If the value is 0 - the command will be just shown but not executed. This is the default.


http://git-scm.com/docs/git-config

Illiterate programming #2

Ещё интересного из экосистемы microsoft.

Есть такой пакет для .net, stylecop, для проверки форматирования C# исходников. Кроме условно полезных проверок, типа просьб явно поставить скобки в сложных выражениях, и безполезных, например правила "после закрывающей скобки должен быть перенос", есть и откровенно идиотские. Например, саммари для каждой проперти должна начинаться со слов "Gets or sets ...". Очевидно, что ценность этой воды в точности никакая, и при большом числе пропертей от повторения везде одного и того же безполезного текста начинает рябить в глазах. В особенно клинических случаях требуемая фраза становится достаточно длинной, например "Gets or sets a value indicating whether" или "Initializes a new instance of the {class name} class".

Хуже всего, однако, не это, а то что лень писать эту херню породила класс продуктов "генератор документрующих комментов". Причём их авторы не ограничились на затыкании рта stylecop-у. Они начали... генерить и вовсе всю документацию. Они провели достаточно большую работу по научению своего продукта английскому языку. Теперь метод CreateItem() автоматически сгенерит текст "Creates the item", и так далее.

Это, конечно выглядит очень круто - смотрите, бот пишет документацию. Беда в том что ценность такой "документации" нулевая, ведь она просто повторяет имя метода (свойства, класса и так далее). В то время как от документации нужно чтобы она рассказывала о том что нельзя понять из имени. Это не говоря о том что это часто глючит и генерит ерунду.

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

Литература:
http://stylecop.soyuz5.com/SA1642.html
https://www.youtube.com/watch?v=xeZqoCGcHSU (извините за видео, текстовых примеров авторы не приводят. zeitgeist такой вот)

privacy is not dead

История с Рубашкой (tm) наглядно показала что от приватности отказываться рано. Истерика может возникнуть по любому поводу, и большинство людей к истерикам уязвимы. Доктору Тейлору ещё повезло что он работает в социалистической гейропе, и его всего лишь заставили покаяться. В свободной стране за подобное увольняют ( http://techcrunch.com/2013/03/21/a-dongle-joke-that-spiraled-way-out-of-control/ ), причём не разбираясь кто прав и кто виноват - всех, на всякий случай.

У меня сгорела энергосберегающая лампа

Не сдохла, а именно сгорела, с дымом. Хорошо не с огнём. Я причём несколько дней пытался понять - что так воняет, перенюхал все девайсы в доме. Забыл что лампочки - тоже девайсы, они же переменку с 220 вольт превращают во что там надо для разряда.

Я их боюсь теперь.

Microsoft values your privacy

Говорят, фейсбук запрещает называться не своим именем. Это плохо. Надо делать как микрософт - запрещать называться своим именем.

Ну то есть он пишет "This display name is already in use. Please choose another display name", но мы-то знаем, что это просто отмазка, чтобы NSA не сильно наезжал.

HOWTO: make firefox add the security exception finally

Иногда на сайте сертификат не подписан, или протух или ещё чего, но firefox в стандартном окошке ответа не предлагает добавить исключение - просто отсутствует соответствующий пункт. Более того, если пойти в Certificates->Servers->Add Exception и добавить его - соединиться всё равно не удастся.

Как лечить:

1. Найти в about:config опцию browser.xul.error_pages.expert_bad_cert и выставить её в true. Этот совет присутствует в интернете, а также легко выясняется из исходников. Возможно, он не обязателен если пофикшен второй.

2, и главное. Найти в профиле файл permissions.sqlite, и потереть из него упоминания про открываемый сайт. Мне помог запрос типа: "delete from moz_hosts where host like '%_HOST_%'".

Ссылки на обсуждения по теме, которые вылетают из гугля:
https://support.mozilla.org/en-US/questions/987476
https://support.mozilla.org/en-US/questions/1011756
https://support.mozilla.org/en-US/kb/connection-untrusted-error-message
https://bugzilla.mozilla.org/show_bug.cgi?id=659736

case for pacifism

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

PaProxy, kickoff

Это звучит смешно, но Микрософт через skype начал продвигать pulseaudio. Вот и не верь после этого в конспирологию.

Как бы то ни было, надо как-то с этим жить. Я предлагаю написать puslseaudio API поверх альсы.

Я создал: https://github.com/max630/PaProxy . Оно линкуется, но делает промерно ничего, только ругается в stderr и выдаёт ошибки.

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

Особенности чтения директории в Windows

System.IO.IOException: The process cannot access the file '....' because it is being used by another process.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileSystemEnumerableIterator`1.AddSearchableDirsToStack(SearchData localSearchData)
at System.IO.FileSystemEnumerableIterator`1.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.IO.Directory.GetFiles(String path, String searchPattern, SearchOption searchOption)

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

Органчик

Пока все обсуждают войнушку в украинских регионах, в самом Киеве тихо и незаметно прошло интересное событие: из парламента выгнали коммунистическую партию. Предлог, по нынешним временам, благовидный: "сепаратистские заявы". Тем не менее, чесалось у революционеров давно - КПУ в списке на люстрации с самого начала шло в программе той же "Свободы" через запятую с ПР. Это при том что в событиях 2004 года, например, они однозначно поддержали оранжевых - и это тем сильно помогло. Но $SUBJ.

А вообще интересно, да, смотришь на человека - он вроде умный, иногда даже программист. А потом раз - и понимаешь что у него голодомор головного мозга и Україна ще не вмерла.

Литература:
http://korrespondent.net/ukraine/politics/3358864-deputaty-vyhnaly-yz-rady-fraktsyui-kommunystov

Perl: wtf

Мне очень стыдно, но моим первичным языком для хаканья является перл. Да, тот самый, который похож на base64. Как-то так получается, что именно с его помощью у меня лучше всего у меня получается get things done. Он уже мало развивается, следовательно стабилен. Он неплохо вылизан за все эти прошедшие годы. Он быстро работает, в моём понимании - быстро грузится, не занимает много памяти. Мой rss аррегатор работал на виртуалке с 32мб памяти, и там был ещё веб-сервер, ssh, cron и что-то ещё. И в целом он не подводит меня, я чувствую что могу на него положиться, и быть уверен что программа будет вести себя именно так, как я оожидаю, а не случится какой-нибудь ерунды.

Но вчера буквально за 1 вечер я узнал 2 новых вещи про него:
Read more...Collapse )

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, но я решил упороться по-полной. Мне же не смотреть на него, это просто на всякий случай.

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

А, ещё. Если вам до́роги ваше душевное спокойствие и сохранность багажа, держитесь подальше от города Рима. По непонятным причинам рейс AirMalta Рим-Валлетта (KM 612, 613) (именно он, другие рейсы той же компании летят нормально) регулярно опаздывает на полчаса-час, а на обратном пути, похоже, кое-кто продолбал перегрузить наш чемодан. Пока что известили компанию последнего хопа, посмотрим что будет. Вероятно, угостить коллег нугой в понедельник уже не получится.

о линуксенадесктопе

Пока меня не было, кто-то опять что-то сказал $SUBJ

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

There is no such thing as a linear history

Читаю очередной гитосрач. Люди одновременно требуют линейной (и "истинной", да, куда же без этого) истории исходников и тут же настаивают на своём праве мержиться с апстримом не закоммичивая файлы. Шизофрения в активной стадии.

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

PS: отдельные манагеры даже, бывало, говорили: что-то в мастер у нас много напушили, а на носу бета, давайте сделаем очередной релизбилд из предыдущего, только вот эти изменения туда перенесём. И ничо, оказалось что так тоже можно, хотя я офигел поначалу.

Метрическое

Если при езде на велосипеде по незнакомой дороге не пыриться в карту, а ехать наугад, при ошибке возвращаясь - средняя скорость по трекеру заметно возрастает.

об безопасность

Как-то одновременно произошло много интересного.

1. Я поставол дома новый дебиан, с третьим гномом. Как водится, обплевался. Пошёл смотреть как вернуть погоду на панельку, а там: - Go on the Weather extension page on extensions.gnome.org, click on the switch ("OFF" => "ON"). Я как человек немного разбирающийся в том как работает интернет поднапрягся - как какая-то extension page из интернета может знать что стоит у меня в гноме?

Оказалось, гном ставит специальный плагин для браузеров, чтобы читать список установленных расширений, менять статус enabled и запускать диалоги установки и настроек из жабоскрипта. Вот полный список методов: http://sources.debian.net/src/gnome-shell/3.4.2-11/browser-plugin/browser-plugin.c?hl=906#L906 (кстати, рекомендую сайтик, там ещё поиск есть). Конечно, это довольно ограниченная функциональность. Конечно, это всё работает только для сайта extensions.gnome.org, и только для https. Но какое-то неясное чувство неправильности всё равно осталось.

2. В андроиде нашли мегадырку. Оказывается, пути в формате zip не уникальны - может быть несколько файлов с одним и тем же именем. И инсталлятор с проверщиком подписи по-разному понимают, который из них использовать: https://plus.google.com/113331808607528811927/posts/GxDA6111vYy

3. Очередной пострадавший от парсера TrueType: http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2013-3129

либертарианство, #3

Кстати, если кого-то интересует что американская правая и либертарианская(*) братия действительно думает о свободе слова которое им не нравится и правах людей которые им не нравятся - сейчас самое время смотреть:


Russia is sounding better and better. Never imagined I would think that.

Odd that, in these latter days, the United States has to turn to Moscow for an example of sanity.

Strange isn’t it the Russians have more respect for their people than the USA does.

Having grown up during the Cold War, I never imagined that I would admire the Russians for anything.


Ну и так далее. http://www.freerepublic.com/focus/f-news/3029949/posts , http://www.freerepublic.com/focus/f-news/3029849/posts

(*) Я слышал, кто-то именует себя так же, но не страдает ПГМ (или пиететом к баблу). Вероятно, таким людям следует поискать себе другое название.

debugger-aware code

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

И вообще очень много где этот аргумент выдвигают.

HOWTO: find static symbol for use in VS2010 debugger

Например, чтобы поставить breakpoint на функцию при отсутствии исходников или посмотреть переменную.

— найти на диске C:\Program Files (x86)\Microsoft Visual Studio 10.0\DIA SDK\Samples\DIA2Dump
— собрать его
— запустить следующую команду: dia2dump bla-bla.pdb -s бла-бла.pdb | less
— найти свой символ, он должен выглядеть примерно так:
Function : static, [xxxx][0001:xxxx], len = yyy, public: virtual тип класс::имя(типы)
— посмотреть в modules регион, куда загружена длл
— открыть окно дизассемблера.
— ввести в адрес N + M, где N — это начало региона из дредыдущего пункта, M — xxxx из дампа.
— профит

Литература: http://msdn.microsoft.com/en-us/library/x93ctkx8%28v=vs.100%29.aspx

PS: Для глобального надо делать то же самое, но для dll есть готовая утилита, dumpbin /export. Нет, написать имя не получится: скажет "не могу найти символ"