?

Log in

No account? Create an account

Заповедник репрессивной психиатрии

Entries by category: литература

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

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

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

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

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

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

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

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

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


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

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

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

Read more...Collapse )

nanomsg, zeromq и ассерты
metaclass
Продолжаю вникать в легковесные 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), ситуация с этими либами откровенно нехорошая.

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

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

Спросонья лезет в голову всякий бред
metaclass
Охранный амулет от паттернов, ORM, хипстерства, NoSQL и "духа стартапов":
фигурка крокодила в казачьем костюме с томиком русской классики в одной руке и книжкой по СУБД в другой.

Ояебундестаг
metaclass
http://juick.com/zamotivator/2317894
Забиватор мутит веб-приложение на Scala+Lift.
Я сдуру решил глянуть, чо там за проблемы. В целом, надо как-то прекращать практику заглядывания "ради интереса" в чужие проекты, ибо голова не казенная.
Во-первых, гит я знаю плохо и переключится на ремоте branch так и не смог. Ну, тут все очевидно - надо изучать и пользоваться, это мне просто лень. А так - скачал просто архив
Во-вторых, слава богу, что ждевелоп заставил забиватора использовать мавен - он хоть и безумный, но по крайней мере, нормально документирован и я его уже использовал.
В-третьих, эта хреновина на mvn jetty:run выкачала половину интернета, по-моему. Этот странный фетиш разработчиков на тему "повторного использования кода" им боком вылезет еще неоднократно - когда ради 1 функции тащится целый фреймворк, а он за собой еще 100500 зависимостей - шансы налететь на конфликты версий и прочее червие сильно возрастают. А мавен это делает очень легким, оказывая медвежью услугу. Ну, там хотя бы лишние зависимости исключить можно и то хлеб.
В-четвертых, оно ругается на то, что там используются две разных версии Scala-compiler. Т.е. см. выше - про версии, "с приездом вас".
В-пятых, оно собирается ровно один раз. Второй раз надо удалять target, иначе конфликты типов вида
Read more...Collapse )

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

ЗЫ: Забиваторъ утверждает (http://juick.com/2320702) что мавен выбрал самостоятельно.

scala spray slick restful ад заборы коровники коворкинги хипстеры
metaclass
В целях недопущения упрощения жизни, а так же чтобы псить, при необходимости, со знанием дела, осиливаю скалу.
Причем начал практически с конца - клепаю RESTful сервис на основе spray с всякими json-маршалингами внутри через имплициты и прочую адову содомию.
При достаточном количестве type-level магии оно выглядит, конечно, так же просто, как какое-нибудь руби, или как лиспы без скобок и с инфиксной записью, но внутренняя сложность, по-моему, зашкаливает. "Импортируй себе немножечко имплиситов и получи на халяву сериализаторы в json для всего", "Оберни маршруты в директивы логгера" и прочее такое.

Сборку завел, сначала через sbt (простой способ), потом импортировал в IDEA (условно простой) и потом стырил у jdevelop конфигурацию для мавена (нормальный способ). Воедино надо это как-то свести, чтобы не редактировать при добавлении новых зависимостей все вручную. Плюс еще импорт sbt в IDEA выглядит как ад и смерть.

Завести то я это чюдо заведу, но вот что с ним дальше делать, не совсем понятно. На данный момент картина выглядит так: Clojure проще, но скобки и стектрейсы компилятора отпугнут новых пользователей, Scala дико сложнее, но поначалу она выглядит как "почти жаба", обработка ошибок более читабельна и есть шансы, что в эту западню попадутся и желающие новеньких языков и любители сойти с ума на почве вычислений на типах.
Tags: ,

Scala
metaclass
Читаю книжку Одерского, до основной шизы еще не добрался, но такое ощущение, что в скале чрезмерно много синтаксического сахара. Типа "тут вы можете скобки опустить, а тут вместо скобок использовать фигурные скобки, а тут мы прямо в параметрах класса сделаем их полями, а в multiline string literal вы можете сделать отступ и stripMargin" и прочая и прочая в том же духе.
Основное из этого, видимо - function literals и вызов методов в стиле a methodName b, без точек и скобок, что делает код более лаконичным, одновременно позволяя при желании превратить код в нечитабельный ад.

Заодно по наводке jdevelop глянул на http://spray.io/ https://github.com/spray/spray/wiki
Примеры там, конечно, знатный abuse возможностей языка и вычислений на типах, типа extraction-директив с HList в качестве параметра типа.

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

PS: Вот, к примеру:
https://github.com/spray/spray/blob/master/docs/documentation/spray-routing/code/docs/HttpServiceExamplesSpec.scala

В SimpleService HttpResponse реализован как html-код написанный прямо внутри скала-кода. Сижу уже 30 минут ищу, где это преобразование реализовано и как. Т.е. не видя отдельных литералов и их типов (которые без загрузки всего оного кода с зависимостями в IDE/интерпретатор еще и не увидишь), с ходу догадаться, что происходит, достаточно сложно. XML literals, встроенные в язык и где-то implicit для конверсии.

PPS: implicit evidence:
http://jim-mcbeath.blogspot.com/2008/11/scala-type-infix-operators.html
http://stackoverflow.com/questions/3427345/what-do-and-mean-in-scala-2-8-and-where-are-they-documented

По-моему, это уже достаточно сложно, чтобы увлечь психов и стать новыми крестиками. Вот xeno_by еще приделает макросы - и совсем хорошо станет.
Tags: ,

Свежий айсед-срач
metaclass
Про чтение книг по программированию.
http://theiced.livejournal.com/145249.html

Сразу скажу: я читаю книги про то, чего не знаю. С охуенным удовольствием прочел Эккеля "Философию Java", потому что там _базовые сведения_. Не "установите себе вижуал-студию-100500х и положите мышой кнопочку", а конкретно базовые данные, почти без воды.
Прочел "JavaScript The Good Parts", 170 страниц концентрированной информации.
Но блин, читать книжку про WCF или WPF или ASP.NET или MVC или еще какому-нибудь частному случаю частного фреймворка? Это же трындец.
Как можно использовать технологию, которая настолько антилогична, что требует 1000 страниц бумажного описания, при этом нормально ей пользоваться без этого, как минимум, затруднительно.
Т.е. кривая обучения выглядит как "за 15 минут написали хелловорлд, за месяц сделали прототип, а потом начались тонкости и приходится стоять враскоряку в гамаке годами". Это, имхо, ненормально.

PS: https://plus.google.com/u/0/108215660845587965071/posts/hNJVKKgUaHw
Еще один момент на тему тех же современных фреймворков.
"Внезапно оказывается, что не работает именно то, что тебе нужно".
Зато свистоперделок - выше крыши.

Сказка про злого доктора Айболита
metaclass
Злой доктор Айболит получил у фармацевтической компании непроверенные лекарства и поехал в африку испытывать их на зверях. Там 20% зверей умерли от того, что лекарства были неправильные, после чего его поймали местные спецслужбы и начали пытать. Он пытался сбежать на орле, но орла засекли местные средства ПВО и сбили из зенитных орудий, а доктора приговорили к 25 годам тюремного заключения.

Корни безумия
metaclass
В детстве случайно попалась под руки книжка "Маленький водолаз" Дончо Цончева. А я только-только научился читать и читал оную книжку по кругу несколько раз. Потом она же попалась в белорусском переводе, после чего я повредил себе мозг и стал белорусски националистом. В общем, в белорусском переводе фигурировал такой персонаж, как "пачвара Плумба-Тулумба", которая жила глубоко под водой и хотела съесть маленького водолаза, но поломала зубы о скафандр.

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

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

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


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

ЧУМА!!!
metaclass
В детстве часто бывал в медицинских учереждениях, где в мрачных темных коридорах на стенах висели плакаты по гражданской обороне и описания болезней. С тех пор дико радуюсь всяким литературным произведениям и фильмам, где основная идея - биологическая угроза, вроде "Штамм "Адромеда"", некоторые шпионские произведения, игрушки вроде Splinter Cell Pandora Tomorrow, итд

В свете этого порадовался вот такому:
А вы знаете что скважины дариды распложены на территории бывшего скотомогильника?

:)))

Доработался.
metaclass
Цитата с форума по Axapta:


Поддерживаю, в российском учете есть оба аналогичных понятия (красное и черное сторно). Черное сторно (реверс или обратная проводка) увеличивает обороты по счетам.

Не соглашусь с тем, что красное сторно нельзя делать по бухгалтерскому счету «Банк». Применимы оба случая:
- ошибка в перечислении денежных средств, исправление – обратная проводка;
- ошибка в отражении операции в учете, исправление – красное сторно с последующей правильной проводкой.
Правила внесения исправлений в бухгалтерские книги идут еще со времен письменной записи операций.


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

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

Все таки 8-летнее общение с бухгалтерами меня свело с ума окончательно.

Юрий Петухов
metaclass
Отзывы:

Этот человек - Юрий Петухов, историк, писатель, издатель и просто е****ый ублюдок. Да, да, это он издавал некогда печатный орган Вселенского Разума - газету "Голос Вселенной", это он написал Справочник-классификатор "Инопланетные пришельцы" и проч. Он совершенно е****ый. Но читать его надо. Это ЗНАКОВЫЙ писатель.

Основную аудитория его личной газеты "Голос Вселенной" составляли две социальные группы: взрослые шизофреники с параноидальным бредом и молодые любители психофармакологии

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

"Справочник-классификатор" - готовый набор концепт-арта для монстров в компьютерных играх.