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

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

2016-01

Гамлет с Камбербетчем

Гамлет с Камбербетчем чем-то неуловимо похож на Звездные Войны.

Известное произведение/франшиза, пафосная адаптация, очень красиво снято, есть какие-то претензии на "мы хотим сохранить дух тех времен" и одновременно расширено так, чтобы было очень доступно для разношерстной аудитории, такое :)

This entry was originally posted at https://wizzard.dreamwidth.org/489840.html. It has comment count unavailable comments. Please comment there using OpenID.
2016-01

про макулатуру

Самый длинный договор, который я лично подписывал, содержал 50 с чем-то страниц legalese мелким шрифтом.

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

То есть, хм, сами тексты вполне себе структурированы и читабельны. Но вот их количество...
У меня пока что эстимэйт в миллионы страниц, но может быть там и больше...

Короче, очень занятная задача для information retrieval и natural language processing, да :)

This entry was originally posted at http://wizzard.dreamwidth.org/484130.html. It has comment count unavailable comments. Please comment there using OpenID.
2016-01

win10

кстати, поставил себе вин10 наконец.

первое впечатление - ну наконец-то DPI без логоффов настраивается!

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

т.е. таки да, на сервиспак похоже (ну и UI тоже пофиксили местами, хотя истинные джедаи на него ложат болт и просто используют хоткеи, которые не меняются а только добавляются еще аж с Win2000)

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

This entry was originally posted at http://wizzard.dreamwidth.org/460251.html. It has comment count unavailable comments. Please comment there using OpenID.
photo25

one thing at a time



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

надо сделать большую чашку чая и подумать.

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

This entry was originally posted at http://wizzard.dreamwidth.org/458392.html. It has comment count unavailable comments. Please comment there using OpenID.
  • Current Music
    Sirenia - Lithium And A Lover
2016-01

нубский вопрос про unix/9p traditions

Я вот краем уха слышал, что в Unix'ах идеологически правильно, к примеру, если у нас есть какой-то browsable сетевой ресурс или устройство - интегрировать его как mount point, дабы дальше его всяческий софт мог использовать с этой точки монтирования, не заморачиваясь деталями.

Ну, nfs, smb, procfs и так далее.

А вот в каком месте (POSIX?) можно прочитать, как предполагается при этом жить с concurrency?
Т.е. вот я получил список файлов в папке, показал его юзеру, он что-то открыл и потом сделал "save" в ту же папку. А к тому времени на него напал какой-нибудь, ну не знаю, search indexer, или банально другой юзер файл открыл.

Хочется юзеру показать диалог "файл занят Васей", а индексеру сказать "отпусти файл временно", и всякое такое прочее.

Предположим, что у нас идеальный случай, и мы контролируем (можем запатчить) и приложение, и сетевой ресурс, и API файловой системы.

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

UPD: чтиво в тему, чтобы была понятна глубина кроличьей норы -
http://danluu.com/file-consistency/
http://0pointer.de/blog/projects/locking.html
http://0pointer.de/blog/projects/locking2
https://www.samba.org/samba/news/articles/low_point/tale_two_stds_os2.html

This entry was originally posted at http://wizzard.dreamwidth.org/455707.html. It has comment count unavailable comments. Please comment there using OpenID.
2016-01

про хорошее гиковское

1) Марсианин. Это офигенно качественная экранизация фантастики. При этом оно и довольно-таки реалистичное, и позитивное, что дает кучу плюсов в карму и писателю, и режиссеру.

2) Julia - свежий язык программирования, который, имхо, сочетает лучшие качества Python, Lua, Mathematicа, .NET и С.

Наконец-то в одном языке и рантайме есть "всё и сразу" - можно быстро писать сниппеты в REPL, иметь нормальный перформанс, интегрироваться/эмбедиться, адекватные гигиенические макросы, и система типов офигенно выразительная и unobtrusive одновременно, короче, это надо видеть. Попробуйте.

Я раньше подозревал в таком D, но тут оно просто уделывает его с огромной силой. Осталось добавить больше библиотек и поддерживаемых платформ - и всё, мир захвачен :)

This entry was originally posted at http://wizzard.dreamwidth.org/450724.html. It has comment count unavailable comments. Please comment there using OpenID.
photo25

Живая Жизнь и мёртвая буква. Мемуар об адресах (репост)

Хорошая, годная, познавательная история.

Оригинал взят у krylov в Живая Жизнь и мёртвая буква. Мемуар об адресах
Читая блог golosptic, наткнулся на статью, которая меня, как бы это сказать… Не то чтобы заинтересовала. Скорее – «заскрипели ржавые скрепы в голове».

Статейка с Хабра про почтовые адреса. Перечисляющие проблемы, которые я решал в году 96-м примерно. Ну то есть до нашей эры.

А именно. Я занимался системами поддержки принятия решений (СППР). Технология, по которой тогда мы это делали, была – на тот момент – довольно-таки передовой. Сейчас всё это перестало быть актуальным: удавили как всё русское. Однако, повторяю, на тот момент это была не просто работающая, но и продаваемая система.

Так вот, мне пришлось строить классификатор по адресам. Классификатор в тех системах был устроен как древовидная структура, листьями которой являлись карточки со стандартной структурой полей, в которых значились реквизиты. Можно было делать множественные реквизиты двух уровней вложения (множественные внутри множественного) и ещё всякие штуки.

Так вот. Мне поручили простую вроде бы вещь: создать карточку для внутрироссийского (sic!) адреса. Не почтового – просто адреса. Но – для ВСЕХ вариантов. Заказчиками был ЧОП, которого интересовало, чтобы адрес можно было найти, скажем, по надписи на конверте. Или по внятному разъяснению. Или по нескольким невнятным. Но найти. А также учесть уже имеющийся адрес, с пониманием того, что это за строение такое, это им было тоже важно. И чтобы было известно, как этот адрес звучал раньше.

В общем, дали мне в помощники знающего человека и пару справочников, и я сел разбираться.

В принципе, многие вещи, связанные с почтовыми адресами, я знал – поскольку имел опыт массовой рассылки открыток в системе католожной книготорговли (т.н. «Книга-почтой»). Соответственно, я знал, насколько важен индекс, что номера домов бывают невероятно причудливыми, что р-н указывать ну очень желательно, а также в чём разница между с., д., п. и п.г.т. (не удивляйтесь, из этих мест в некоторых случаях можно было выписать обратно в Москву довольно редкие книжки). Так что тот факт, что номер дома – это ни в коем случае не число, а текстовая строчка, мне было понятно с самого начала. Правда, я-то знал, что бывают номера домов через дефис (типа д. 1-3), о чём авторы статьи на хабрахабре, похоже, не ведают. Равно как и о том, что адрес типа д. 11/1 может означать очень разные вещи – например, что это дом 11 строение 1, или что это корпус 1, или что это дом на пересечении улиц, и по одной из них он 11, а по другой – первый, а также и то, что этот дом ПРОСТО имеет номер 11/1, вот так его назвали он один как перст, а почему так называется – лишь один Бог ведает. Равно как и то, что адрес типа 5-я ул. 70-летия Октября д. 13А корп. 5/1 стр. 7 кв. 12Б – это не бред сумасшедшего, а нормальный такой адрес. Как и тот факт, что физически этот дом может находиться совсем даже не на 5-й улице 70-летия Октября (так его нет, сколько по этой улице не бегай), а где-то в районе 2-го Старомаломолозивного переулка, который не дай бог перепутать со 2-м Старомаломолозивным проездом, который вообще на другом конце города. Этим меня уже удивить было сложно. Как и тем, что бывают дома без улиц, например. Или что, пишучи в какую-нибудь отдалённое село, в некоторых случаях совершенно бессмысленно указывать дом (хотя формально он есть), а надо писать «село Верхняя Щельга, Кузьмичёву Василию Петровичу (агроному)». Потому что бывшего агронома, а ныне продавца в книжно-газетном ларьке при станции Василь-Петровича все знают, а то, что он проживает в доме 10, не помнит никто. Включая, может быть, и самого Василь-Петровича.

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

Но это всё цветочки-лютики по сравнению со строениями неопределённого статуса. Например, бывшая армейская казарма, ныне общежитие. Она может вообще не иметь легальных реквизитов, потому что она и существовать-то не должна. А там, между прочим, живут живые люди, да и само строение представляет некую ценность. И вот такого всякого по России больше, чем мы можем себе представить. Причём всё это вроде бы даже кому-то принадлежит и по каким-то документам проходит, «но, чёрт возьми, как?!»

Но всё это меркло по сравнению с проблемой переименований. Реально любой адрес существует во времени, от такого-то числа по такое-то. Потом он может быть изменён, по миллиону причин, из которых переименование улицы – далеко не самая распространённая. Был дом 11/7, а стал 9Б. Почему? А вот так. Мой собственный дом превратился в результате какой-то химии из 4/6 в 4а. Хорошо хоть корпус не поменялся… Но это я имел в виду, так что с самого начала делал не карточку, а множественный связанный реквизит, завязанный на поле «промежуток времени». У меня хватило ума не встраивать проверку по временной шкале, а давать шкалам пересекаться, при этом вешая на них табличку с экспертными оценками достоверности.

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

Тут дело пошло веселее, так как появилась возможность вводить неформальные адреса – то есть те, по которым дома реально ищутся. Добавив несколько полей, включая такие, как «цвет» и «этажность», я сделал возможным ввод адреса вида или «жёлтая девятиэтажка на Кислопрудной». Товарищ, с которым я работал, эти новведения чрезвычайно одобрил со словами «вот теперь я вижу, что от вас толк есть». Я обрадовался и ввёл реквизит связи «поблизости от» с возможностью протянуть его к какому-нибудь известному адресу. Реквизит связи тут же расцвёл красками: «за», «перед», «справа», «слева», «вверх» и «вниз». Небольшая доработка позволила вводить данные вида «по Хитроклювской третий дом вверх от магазина «Весна» (предполагалось, что адрес «Весны» известен).

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

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

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

Когда началась тестовая загрузка адресов, это поле понадобилось на втором же объекте. То был охраняемое данным ЧОПом помещение в подвале бывшего завода – древнее советское бомбоубежище, по неизвестным причинам замурованное, заново открытое в ходе приватизации этого самого завода и в итоге превращённое в склад. Ни о каком сколько-нибудь вменяемом адресе этого объекта речи и не шло, так как его вроде бы даже и не существовало в официальной природе. Можно было только объяснить, как до него добраться, причём все мои заранее заготовленные наработки были мимо кассы, ибо добираться до него нужно было по каким-то адовым подземным коридорам.

Так живая административно-хозяйственная жизнь в очередной раз посрамила интеллигентскую рефлексию, тщащуюся всё по полочкам разложить.

)(

2016-01

Шутка для узких кругов

Что должна возвращать функция min(NaN, -Infinity), и почему?

UPD: уиии, я знаю уже 8 вариантов (не считая "implementation-defined" и "падаем с исключением")

1. NaN
"Если в вычислениях родился NaN, результат любых вычислений типа-неверен, заражаем результаты ошибкой дальше"

2. Оставшийся операнд
"Если NaN означает отсутствие результата, то min(пусто, что_то) = что_то"
(С99, IEEE754-2008)

3. Операнд №2
При свёртке (fold) трактуем NaN во втором аргументе как "неверно", а в первом как "пусто"
(x86 minss/minps/minsd/minpd)

4. Операнд №1 (то же самое как и вариант 3, но наоборот)
(нигде не встречается)

5. Если любой из операндов NaN, возвращать default NaN
"заражаем ошибкой, но константой, ибо так проще"
(ARM NEON - VMIN.F32)

6. Если один из операндов QNaN, возвращать операнд №2. Если один из операндов SNaN, возвращать его же, сконвертированного в QNaN
"QNaN - пусто, SNaN - неверно"
(IBM POWER, VSX)
Ремарк: При этом VMX/AltiVec работают по варианту 1 (возвращать SNaN), хотя intrinsics у них такие же. Т.е. это как если бы Интел решил в AVX переделать min из SSE

7. ни NaN, ни Inf не поддерживаются, результат - undefined (по ISA). На практике возвращается -FLT_MAX (внезапно!), но вообще может быть хоть битовый мусор
"для 3д графики всё равно надо в итоге что-то нарисовать, не кормите туда NaNы"
(AMD 3dnow!, также какие-то старые GPU)

8. min(NaN, -Infinity) = NaN, max(NaN, -Infinity) = -Infinity
"Для стабильной сортировки floating-point колонок в БД"

Вот, вроде всё. Источники: Marat Dukhan, vit_r, IEEE 754 :)

This entry was originally posted at http://wizzard.dreamwidth.org/409296.html. It has comment count unavailable comments. Please comment there using OpenID.