Category: литература

Category was added automatically. Read all entries about "литература".

Доставайте голангистов из гробов

Есть вопросы по языку для интеллектуального большинства:
1) Если я форкаю чужую библиотеку, а она унутре себя ссылается на сама себя - как с этим работать? SO советует сначала делать go get оригинальной, затем подключать git remote свою репу и потом править. Т.е. на всех других рабочих местах нужно будет повторять то же самое. По идее, это должен менеджер зависимостей делать в конечном итоге?

2) Что за херня с логгерами и обработкой в этом вашем голанге? В большинстве либ обработка ошибок сводится к log.Println(err) где err - строка в стиле "у вас произошла херня", без объяснений что, где и как, причем способа привязать логгер к пакету я чо-то не нашел.

Советско-русско-белорусское кино и литература одной строкой

http://ivan-gandhi.livejournal.com/3508610.html?thread=57547394#t57547394
"Уже через 10 минут от постоянных воплей актеров начинает голова болеть, а большинство действующих лиц фильма хочется просто сдать в ближайший дурдом."

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

И о врагах рода человеческого.

"System.IndexOutOfRangeException: Could not find specified column in results."
Я чего-то в этой жизни не понимаю, но конкретно в этом месте дотнета живут черви и змеи.
Я ни разу не видел, чтобы в исключении показали данные, которые привели к вызову исключения - имя поля там, индекс и диапазон, за пределы которого он вышел и прочее такое.

Это что, в каких-то книжках по дизайну исключений специально написано: "никогда не показывайте точные данные, а то при эксплуатации смогут понять, что они сделали не так и исправить"?

Python back

Я уж думал, один я такими постановками задач в стиле "окружению доверять нельзя, приложение ставится у клиентов где только можно в ужасных условиях" страдаю.
Правда, я до сих пор пытаюсь придумать - на каком компилируемом языке со статик типамисделать удобный для мозга сервер приложений для таких же целей. C#+F#, конечно, почти идеально, но это же микрософт, с них станется завтра закрыть дотнет, дон сайма выгнать на мороз, F# выкинуть из студии, а C#/CLR превратить в подобие ада COM, которое они пытались изначально сделать, из чего получился дотнет.

Originally posted by levgem at Python back
В 2006 я без сожаления променял питон на рельсы, потому что это было реально круто. Так до 2011, когда я эти ваши рельсы бросил.

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


Факторов при выборе поатформы много: удобство написания бизнес-логики и работы с бд, размер инсталяции, потребление ресурсов.

Эрланг в этом месте выбросили из-за необходимости много работать с бд, а эта задача эрлангом решается плохо.

Джава не рассматривалась потому что лютый ад и бешеный размер пакета.

Collapse )

nanomsg, zeromq и ассерты

Продолжаю вникать в легковесные MQ библиотеки и ужасаюсь одной всепроникающей идее - ассерты в релизном коде, буквально на каждый возможный косяк.
С одной стороны, fail-fast это правильный подход, пусть супервизор процессов разбирается что дальше делать.
С другой - abort или RaiseException на виндах кидают messagebox, а messagebox в виндосервисе, если нет чек-бокса "разрешить взаимодействие с десктопом", это гамон, такой процесс можно только убить, он больше не подчиняется указаниям от сервис-контроллера. То же самое - запуск процессов из task scheduler, этот мессаджбокс будет "где-то висеть" в гребенях сессии в которой запущены сервисы.

Далее, нормальная методика при обработке ошибок: try {} catch(exception) { log(сообщение, параметры вызова, exception);throw}. Т.е. я по крайней мере, по логам узнаю, что привело к исключению (за исключением совсем плохих вещей, типа полной нехватки памяти, умершего железа или выдернутого езернет-провода).
В случае же assert - у меня процесс сдыхает (и не дай бог в соседних потоках писать на диск или работать с железом), причем если супервизор, который может прочесть stderr и скопировать сообщение в свой лок,отсутствует - сообщение об ошибке уйдет в никуда.

Судя по тому, как друг на друга псят Martin Sustrik и Pieter Hintjens, отзывам про либы и тому бардаку, который творится в коде nanomsg(например, комментарий вида: /* For some reason simple CancelIo doesn't seem to work here. We have to use CancelIoEx instead. */ в коде, из-за которого nanomsg вообще не запускается на 2003 и xp), ситуация с этими либами откровенно нехорошая.

All hail the Command Line

http://www.quora.com/Do-people-still-write-and-compile-programs-from-the-command-line-instead-of-an-IDE-Why-or-why-not
Я вот кстати, не люблю студию запускать, бесит тормозами.
Но без "программирования-через-точечьку" тяжело, упомнить всю стандартную библиотеку какого-нибудь .NET тяжеловато.
А в кложе почему-то достаточно вот этой странички http://clojure.org/cheatsheet и заглядывания в jar с исходниками. Или (doc какой-нибудь-идентификатор) в репле, частично заменяет точечьку, за исключением того что идентификатор нужно помнить.

Анти-айседовщина про "Трудно быть богом"

http://www.odnako.org/blogs/kasta-blagorodnih-donov-o-glavnoy-oshibke-sovetskogo-chelovekostroeniya/

Я вот все-таки до сих пор не понимаю, действительно ли плохо (с точки зрения, как там написано, выживания и развития человечества) считать быдло и ватников ватниками и быдлом.
Если козлопитоны не хотят работать, а хотят пиво, телевизор и 8й iphone с лайками котиков в инстаграмме - то есть шансы успешно просрать на это все ресурсы и сдохнуть.
С другой стороны, существует мнение, основанное на случившейся с тоталитарными околотехнократическими режимами типа СССР и нацистской Германии пиздецоме, и транслируемое в статье по ссылке - если людей за нежелание ебошить и думать исключать из числа людей, есть шансы угробить общество и государство вообще.

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

Ад HR, или "метаклассы ищут на работу убер-метаклассов"

http://ru-java.livejournal.com/1137245.html
Жесть по ссылке напоминает нашу контору, за одним исключением - там все еще верят, что можно найти идеального сотрудника, который будет работать за пятерых, впишется в команду, будет одновременно уметь в БД, код, общение с юзерами, проектирование софта, командование коллегами и прочие сказки. Современная организация процессов разработки ПО отрицает существование таких людей. Как написал там artureg: "Там скорее всего вредные ревнивые пиздоболы. Команды которые нельзя маштабировать надо разгонять."

Так вот. Желание кольчатых червей-менеджеров и их личинок линейно "масштабировать команды" - оно похвально, с точки зрения "бизнеса", но не является абсолютно правильным. Потому что один правильный работник, будучи правильно приложенным, может решить все технические проблемы конторы на пару лет вперед. А один мотивированный противогазработник, ответив в 6 часов пятницы на звонок крупного клиента с мелкими проблемами, может обеспечить поток бабла от этого клиента на 5 лет вперед.

Классификация платежей в белорусских интернетах

Платежи в ЕРИП делятся на:
1) Полученные наличными деньгами
2) Содержащие во втором поле номера счета цифру 7
3) Полученные в пользу ООО "Лаборатория перспективных исследований при НИИГиТ"
4) Уплаченные женщинами старше 60 лет.
5) Издали похожие на биткоины.
6) Введенные вручную с указанием паспортных данных
6.1) В том числе с пропиской в г. Хойники.
7) Прочие
7.1) Включенные в эту классификацию
8) Не прошедшие
9) Введенные в отделении почтовой связи с клавиатуры со 78 клавишами.
10) За временное хранение на таможенном складе посылок весом не более 3.14159 кг.

PS: Для незнакомых с местными реалиями - в РБ большая часть постоянно проводимых безналичных платежей (связь, интернеты, коммунальные услуги, школы-детские сады, пошлины, штрафы) внесены в т.н. Единое Расчетно-Информационное Пространство (ЕРИП). Оно же отображается в интернет-банках. Для выбора получателя платежа используется дерево, составление которого велось явно под тяжелыми веществами и под впечатлением от классификации животных Борхеса, потому что логика там явно диктовалась какими-то легаси-технически-содомскими соображениями, но никак не удобством использования или разбиением на разумные категории.

О изобретении велосипедов

http://nekhill.livejournal.com/162101.html
Непонятно, что делать в случае, когда готовый код или софт вызывает приступы ненависти к его авторам, а пользователи платят за то, что софт работает, а не за то, чтобы вы копались в дебрях чужого бреда.

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

Кстати, еще один вариант, где велосипеды нужны без вариантов - это когда в языке физически нет нормальных способов реализовать функциональность, не сойдя с ума. Например, вкрутить еDSL в дельфи или C#. Или вариантные типы с паттерн-матчингом туда же.
На данный момент, единственно читабельные варианты делать такое мне попадались только на clojure и ruby. В F# метапрограмминга толком нет вообще, на скале - уже начинается жесть с имплиситами и вычислениями на типах, в хаскеле SYB, Template Haskell и аппликативные функторы в качестве замены функциями с переменным числом аргументов.