Category: эзотерика

Category was added automatically. Read all entries about "эзотерика".

Ебаный кошмар

Потусторонний мир. В расписании у одних ярких представителей белорусского ИТ стоит отключение сети в 7:00 и включение ее в 7:01
C:\WINDOWS\system32\DevCon.exe disable pci\ven_8086&dev_10a7
C:\WINDOWS\system32\DevCon.exe enable pci\ven_8086&dev_10a7
И еще автоперезагрузка раз в день.

Пидарасы с МТС

1) При активации автоматом включаются "бесплатные" услуги. Отключить с веб-морды нельзя.
2) Через месяц услуги становятся платными. Теперь придется пиздовать ногами к ним и отключать это говно, чисто из принципа "пидарасам ни копейки".

Абонентская плата «Мелодии дня» 19.12.2012 3600,00
Абонентская плата услуги "ТОНИНГ" 19.12.2012 3600,00

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

PS: Услуга отключается на отдельном сайте с отдельного веб-интерфейса https://toning.mts.by/.
По законам жанра, вход на этот сайт с своей учеткой и паролем должен автоматом активировать все оккультные услуги :)

Версионирование билда из контроля версий

Есть у меня один фетиш: проставлять одну из циферок в номере версии при билде исходя из ревизии в системе контроля версий.
Причем, поскольку заказчики нередко хотят собирать софт сами а в оплачиваемое время входит только разработка - разбираться с разного рода CI и билд-системами, настраивать его у заказчиков со всеми сопутствующими проблемами я не стану. Пример проблемы: "поставил/настроил, пришел апдейт, сменилась конфигурация, черви погрызли винду - надо восстанавливать". Впрочем, если по хорошему, то за это просто надо брать деньги.

В итоге, я стараюсь использовать минимальный набор инструментов: cmd.exe, компилятор, консольный клиент систему контроля версий и, иногда, awk/grep/sed из gnuwin32, сложенные прямо в репу в отдельной папке, т.к. они совершенно мизерного размера. Остается только сделать svn up / build.cmd и получается готовый результат.

Но чем-то меня подобное не устраивает. Особенно, дичайший идиотизм cmd файлов и не совсем гуманный синтаксис юниксовых текстовых утилит.
И пользователи gui-оболочек к контролю версий типа тортилы в этом случае внезапно огорчаются, т.к. они не привычные к консольным клиентам, в path их нету, да и вообще, последний раз я архив с svn.exe еле нашел в интернетах.

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

Чернейшее вуду F# и структурных типов

Оказывается, в F# есть что-то вроде структурных типов/констрейнты на наличие членов класса:
https://gist.github.com/3523947
http://codebetter.com/matthewpodwysocki/2009/09/28/generically-constraining-f-part-ii/
http://codebetter.com/matthewpodwysocki/2009/06/11/f-duck-typing-and-structural-typing/

Но: синтаксис объявления и поведение вывода типов в этом случае выглядит крайне противоестественно, особенно в том плане, что касается автогенерируемых компилятором методов.

PS: Мерзость. Если inline функцию объявить в другом модуле и сослаться на приватные члены этого модуля - все это перестает тайп-чекится вообще, а без inline такое сделать невозможно - тайп-чек не проходит вообще.
"The value 'dumpNamed' was marked inline but its implementation makes use of an internal or private function which is not sufficiently accessible"
или же, без inline:
"This code is not sufficiently generic. The type variable ^T when ^T : (member get_Name : ^T -> string) could not be generalized because it would escape its scope."

Про Scala

http://lex-kravetski.livejournal.com/424713.html
Все сомнения о том, что какие-то штуки не будут работать, всё развалится в самый последний момент, возникнут непредвиденные сложности с языком, будет чего-то важного не хватать и так далее, они логичны и обоснованы, однако эксперимент показал, в случае со Scala такого не происходит. За полгода разработки я не встретил ни одной непреодолимой сложности, всё работало, из Java вызывалось и так далее.

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

Все то же самое, дословно, можно сказать про Clojure или F#.

По мотивам

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

Свежее чертово вуду с /dev/ttyS*

Есть несколько прог, работающих с ком-портом:
minicom - полноценный терминал, понимает модемы, куча настроек и прочая.
microcom - тупой минимизированный терминал.
stty - родная прога для управления параметрами терминала
cat /dev/ttyS0 и echo -e "CHERVIE\r" >/dev/ttyS0
и моя софтина для управления железом.

И имеется такой симптом: иногда после запуска minicom порт превращается в такую тыкву, что open("/dev/ttyS0", O_RDWR) виснет. Соответственно, microcom, cat и моя прога виснут. minicom и stty - нет.
Если поменять настройки порта с помощью stty - начинают работать опять:
stty -F /dev/ttyS0 ispeed 115200 ospeed 115200 -echo -parenb cs8 -crtscts -ixon -ixoff clocal cread icanon icrnl ignpar
Похоже, что основная проблема в настройке clocal - если этот флаг установлен, все работает, иначе открытие виснет.
Заглянул в исходники minicom - делают чертовейшее вуду. Открывают порт с O_NDELAY, затем сбрасывают этот флаг. И далее, получив рабочий дескриптор файла - меняют его настройки.

PS: И вот как бы это следующее найти в мане, а не в гугле:
The O_NDELAY flag tells UNIX that this program doesn't care what state the DCD signal line is in - whether the other end of the port is up and running. If you do not specify this flag, your process will be put to sleep until the DCD signal line is the space voltage.

Я тупой дебианщик

Как известно, я страдаю вульгарной линуксятиной. В том смысле, что канадские и белорусские дебианщики считают, что я должен заниматься бухгалтерией и не лезть со свиным рылом в ихний калашный линуксовый ряд. Ну, напрягает их это, мозговая скверна - боятся, что зараза дельфей, sql и бухгалтерии проникнет в чистый стерильный мир подвальных серверных и заставит их заниматься чем-нибудь вроде "apt-get install operden" и потом обучать бухгалтеров.
Тем не менее, периодически получается выдирать из них полезную инфу насчет линуксов.

На сей раз я решил все таки выяснить, как кошерно заставить дебиан(squeeze) иметь в текстовой консоли нормальное разрешение экрана, вместо 80х25, на которых нифига не помещается. Надо заметить, что никаких X-ов я принципиально не ставлю, потому что шрифты и юзабилити у графического софта под линукс - на 99% ракоглазие, и кроме того, графической унылости мне и под виндой хватает, а линуксом я пользуюсь ради кошерной текстовой консоли, из которой все можно делать без графики и прочей дизайнерско-макоебской скверны.
Везде в интернетах по жизни было написано дописать в строку параметров ядра vga=791 и это как бэ всегда и работало.
Затем в squeeze всунули GRUB2 где это внезапно стало deprecated и чтобы работало аналогично - нужно прописать в /etc/default/grub GRUB_GFXMODE=1024x768, в /etc/grub.d/00_header в одной из строчек в определенном месте добавить set gfxpayload=keep и выполнить update-grub. Ну, вуду оно и есть вуду, тем не менее работает. После же апдейта, если он затрагивает груб - на 00_header ругается dpkg и приходится или мержить изменения, или заменять на стандартный из пакета, а потом править руками. Некошерно.
Решил таки выяснить, как же кошерно. У канадских дебианщиков вопрос вызвал неимоверную истерику, с упоминанием drm/kms/firmware-linux-free и прочего. Основной вопрос, который задавался несколько раз - "причем тут груб?".
Утверждается, что vga=791 и тому подобные исправления в параметрах груба есть костыль, что это в любой момент перестанет работать, а правильно - драйвера видеокарты должны поддерживать KMS. Что характерно, про оный KMS нигде в связи с описанием установки нужного мне текстового режима не упоминалось. Кроме того, в отличие от костылей в грубе - оно не работает, т.к. под мою видеокарточку ati rage mobility я в дебиане дров не нашел, все упоминания дров - фигурируют исключительно в контексте каких-то генту, ручной сборки, причем обсуждения 3-4х годовой давности и обычно на тему "дрова не собираются". А те дрова, которые есть - тянут за собой xserver. Мне же он, по идее, не нужен. Я, возможно, чего-то не понимаю, но мне кажется что xserver и дрова друг от друга зависеть не должны.
Т.е. простая задача выливается в какой-то оккультизм с дровами, малопонятными фичами ядра и дров, причем про это знают только хардкорные линуксоиды, а все остальные пользуются типа костылями и распространяют знание о костылях дальше.