Category: it

Category was added automatically. Read all entries about "it".

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 - ".

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


Результат:

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 такой вот)

Microsoft values your privacy

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

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

PaProxy, kickoff

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

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

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

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

Органчик

Пока все обсуждают войнушку в украинских регионах, в самом Киеве тихо и незаметно прошло интересное событие: из парламента выгнали коммунистическую партию. Предлог, по нынешним временам, благовидный: "сепаратистские заявы". Тем не менее, чесалось у революционеров давно - КПУ в списке на люстрации с самого начала шло в программе той же "Свободы" через запятую с ПР. Это при том что в событиях 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 новых вещи про него:
Collapse )

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

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

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

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

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

детское программирование

Ознакомился с достижениями науки для обучения детей программированию. Естественно, ограничился тем что доступно для Линукса.

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

Показал наиболеее работающий вариант ребёнку, он на день заинтересовался черепашкой, потом забил. И нормально, по-моему, я не уверен что это вообще нужно. Как-нибудь потом покажу что-нибудь ещё.

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

Collapse )

PS: кстати какой гений придумал переводить поворот как "вправо"? вправо стрейфятся, а поворачивают НАправо.

PPS: там и на английском не всё в порядке. Зачем-то в heap push и pop делают...