Придумалось лекарство от олололергии: лорат11111адинадинадиннадцать.
Эту акустическую систему, ить, оказывается надо как-то расположить. В идеале, конечно, грамотно. Почитал, понял, что нужны полки. Сделал первую:

Конструктивные особенности в гуглокартинках.
Идеи и многие конструктивные решения этой полочки -- авторства lj\nicka_startcev, за что ему благодарность.
Подумалась такая штука. Если бы я писал на окамле библиотеку типа json-wheel, но для bson или подобных штук, я бы сразу отрефакторил отдельно создание значений: налепил бы модуль, содержащий тип и функции для построения значений этого типа, и из парсера вызывал бы функции этого модуля. Смысл этого таков: потом, если профайлер скажет, что строить в памяти значение и потом "разрушать" его не слишком эффективно, можно будет лёгким движением препроцессора превратить код парсера в функтор, берущий на вход этот самый модуль с типом и функциями для его создания, и -- вплоть до того, что вообще создавать значение с типом unit, работая в стиле xml sax парсера на сайд-эффектах.

upd1/
Производительность при выделении функций, создающих значения этого типа, не меньше, так как они должны будут заинлайниться (когда модуль статический, известный и не функтор). А вот с разрушением значения, представляющего bson в памяти, с целью генерации bson -- сложнее. Понятно, что в общем случае это будет анаморфизм, но как сделать в частном случае, эффективно и с отсутствием оверхеда в случае, когда работа идёт с "родным" типом -- не знаю пока точно (настолько же точно, как про создание значения). Сообщите, если будут идеи (можно в чятик).
Купил аудиосистему 5.1, "SVEN IHOO T100":
Read more... )
, потому что 5Вт стерео -- ёбаный стыд, а наушники приемлю исключительно в следовых количествах (какие бы они ни были -- попробовал почти всё, до чего дотянулся). Выбор был между этой и ещё двумя: "SVEN HT-480 5.1" и "SVEN IHOO MT 5.1R" -- теперь можете меня официально зачмырить за кривой выбор.
И теперь надо как-то прибивать всё по стенам. А это -- гуглить о правильном прибиении, как минимум. Лень...
русская википидота несогласована с русским языком:
Read more... )
Понятно, что "и так у них всё". И вахтёры толпами сидят. И тишина.
komar справедливо заметил некоторое различие в способах вызова окамловских List.fold_{left,right}. Мне тоже это не нравится. Попробуем это решить с максимальным количеством ональных извращений. Ну, чисто на всякий случай. Проверить свою силу, так сказать. Конечно, я -- сугубо против такого кода, сообщу сразу, в качестве дисклизмера. Несмотря на это, буду лелеять своего внутреннего индуса на специально отведённой территории.
Read more... )
# do_with_foldl fold_left;
res=>abc
- : unit = ()

# do_with_foldl (r2l fold_right);
res=>cba
- : unit = ()

# 
Тупо пощёлкал кошку возле отражающего столика.
Гуглокартинки.
Затравка:
четвероухо
Просто вялые размышления о динамической типизации и зависимых типах.

подумал, что языки с динамической типизацией -- это как бы "языки с зависимыми типами". например,
function add(a, b) { return (a + b); };

вполне можно записать как
add : Ta : Type -> a : Ta -> Tb : Type -> b : Tb -> Ta =
if Ta = Number
then add_number a (cast_to_number Tb b)
else if Ta = String
then concat a (cast_to_string Tb b)
else fail

, в случаях, когда определены
cast_to_number : T : Type -> x : T -> number
cast_to_string : T : Type -> x : T -> string

Фактически, любое значение имеет ассоциированный с ним в рантайме тип, и можно было бы в примере выше передавать сразу (Ta : Type, a : Ta) в виде туплов.
Однако, если с add было понятно, что вернётся значение с типом Ta, то в случае неизвестного типа будет возвращён именно тупл (T:Type, x:T), но не простой, а с проставленными ограничениями (именно: второй компонент имеет тип, равный первому компоненту). А как такое рассматривать -- пока не знаю. Кто-нибудь ковырял языки с зависимыми типами? Должен быть, по идее, штатный подход.
Никита Калинин интересуется, $subj
Ответ: ничего. Объяснение отрефакторено из жаббера:

Пост Никиты про CS видел. Думал даже, что именно посоветовать. Но не знаю. Ну вообще.
Read more... )
Неоднозначно это.
(основано на приватной дискуссии в жаббере, слегка отредактировано, просто цитата)

[...] по моему опыту писания на жс там явно не хватает таких вещей:
1. модульность (криво через объекты я умею, нахуй-нахуй),
2. хотя бы тупых вариантных типов данных (через объекты умею),
3. хоть какой-нибудь типизации,
4. closures кривы -- примеры были обсуждены, for (my $i ...), хоть и обходы есть,
5. tail-recursion elimination -- тоже представляю вполне, как это сэмулировать, но в пределах жс общий подход не опишешь, а частные -- уродливы.
Давно хотел вербализовать эту идею, да всё случая не было.
Нас спрашивают: "откуда возник ритуал, запрещающий ставить пустые бутылки на стол?".
Мы отвечаем. Это сродни индексированию в реляционных базах данных, где значения NULL не включаются в индекс по этим значениям. То есть, выборка "table.field = some_value" может использовать этот индекс (так как условие является всегда ложным, если some_value это NULL). Иногда даже специально делают индексы по избранным строкам, делая индекс по функции, принимающей значение NULL на неинтересных строках. Был обрадован, когда узнал, что в постгресе это не нужно, и у индекса есть своя where-часть.
Так вот, когда человек думает "винца, что ли, наебнуть?", он кагбэ выполняет " select * from table where bottle_contents='wine' " (заметьте ещё одну параллель -- table и там, и тут).
Ну и вот скажите, не проще ли заранее убрать из выборки те бутылки, в которых bottle_contents явно не удовлетворит никакому разумному выбору? Проводя нехитрый изоморфизм, наливать из бутылки не захочется только в том случае, если её bottle_contents равно NULL.
Потому и убирают из индекса.
Так-то!
Альпака де Лусия / Alpaca de Lucia
Давняя-древняя мечта о роликах таки реализована с материальной стороны. Осталось тушку и дух подтянуть.
В Одессе гораздо больше выбор роликов, в одном только бутике -- в 5 раз больше, чем во всех Бандёрах. Это не новость и не опускалово какое, это "последняя капля". "Здесь и сейчас", потому что иначе -- либо "потом и говно", либо "потом и гемор".
Ну и адекватный продавец, подсказавший кое-какие слишком уж базовые штуки. Про защиту он подтвердил мои догадки -- "те, кто покупает ролики и не покупает защиту, обычно приходят через 2..3 недели за ней".
Итак, аж целых 106$ за приличные китайские ролики и защиту.
Дальше -- лёгкий rtfm в интернетах, и первые упражнения у меня в руках.
Это было вчера. Сегодня же впервые нормально попробовал попользовать ролики.
В первую очередь научился кое-как вставать с пола. Во вторую очередь -- хорошо и качественно падать. Весь цимес в том, чтобы строго вперёд падать. Для этого -- и центр тяжести вперде, и руки желательно держать локтями вниз в первое время, и стараться согнуть ноги в коленях, чтобы на колени упасть. Ибо на хребет/затылок падать -- хуже некуда. На бок либо с распростёртыми конечностями -- просто плохо. А так -- около 5 раз падал сознательно, какое-то новое ощущение от падения. Всё слишком быстро: раз -- и уже на земле. Тут отреагировать (включить моск, сделать движение) сложно, почти невозможно. Надежда на 1. прошивку, 2. тренировку.

Из рабочих моментов -- жопой чуял, но и практикой подтвердилось, что json-static не умеет параметризованные типы. Понятно, что какой-нибудь option 'a он, ясное дело, парсить и не должен, но 1. он не любит типовые параметры даже в случаях фантомных типов и в случае известных типовых параметров, 2. не умеет генерить json по известному параметризованному типу. Пичалька, но попробуем функторы тут. Но, думается, изначально надо было бы делать (не мне, понятно) что-то типа atdgen, но по технологии deriving'а. С другой стороны, atdgen у меня в планах точно, но попозже.
С одной стороны -- халявная поездка на море, в зачотный "дом павловых". С другой стороны -- куча срочной работы. Что делать? Я взял свой сраный нетбук, евдо-модем, а некий "интертелеком", оказывается, предоставляет роуминг для юзеров "интерднестркома" (внезапно молодцы оба-двое шоке шоке). Пусть и по 0.072$/Mb.
Ну и чо, сижу, камлаю. Пусть вид не на море, а на "николаевскую дорогу", но не беда. Надыбать бы удлиннитель, чтобы на веранду вынести всё хозяйство. А ещё под окнами в 20м -- ресторан то ли с живой музыкой, то ли с короокэ, повбывав бы.
И да, пост проплачен тремя организациями.
Все разумные люди знают, что уборка квартиры сама по себе не нужна.
Вещи по квартире рассасываются сами так, как надо, как удобно, как бы выполняя профайлинг доступа к ним методом монтэкарлы.
У меня было даже до состояния самозарождения такой "живности", как "перекати-пол" (так!) из кошачьей шерсти.
Однако, тем не менее, если поддержание чистоты зачем-то нужно (например, просто приятно глазу), есть приём. Не помню, где вычитал, но где-то в жыжыцэ.
Квартира делится на "зоны", уборка которых занимает не больше 15 минут (одна из зон -- пропылесосить ковро, другая -- помыть немного посуды, третья -- помыть пол в коридоре), и вот, во время перерыва между сеансами мысленной деятельности вполне можно заняться чем-то, что не занимает моск, способствует отдыху, но -- чётко контролируемое время, не больше. Главное тут не отключить моск напрочь и не заработаться, иначе физическая усталость, чувство потраченного зря времени и отвращение к процессу. Вплоть до того, что можно будильник заводить, как я периодически делаю, работая по схеме "20 минут работы + 10 минут отдыха" -- ну, типа, "помидорки". (кстати, оказалось, по такой схеме я могу работать порядка 16 часов без перерыва на сон. Потом, правда, отходняк пару дней).
А ещё можно воспользоваться приёмами "автофокуса" -- бытовуху записать на бумажку, на видное место её, и, когда есть настроение, пробежаться глазами по ней, выбрать нужное дело, зачёркивать его наполовину (в случае, если дело периодическое -- дописывать снизу бумажки сразу же, чтобы не потерять его), и идти делать это дело. Дозачеркнуть по исполнении, опционально дописать снизу новые обнаруженные дела. Заодно, в качестве контроля за относительной периодичностью дел -- стараться выбирать дела откуда-то с начала списка. Заодно, в качестве "результата своей деятельности" будете видеть бумажки с полностью зачёркнутыми делами.
Так-то!
Покатался на такси туда и обратно. 14 часов трипа в прямом смысле слова. Ночью-то понятно, поспатки это в пределах нормы, а вот что с утра рубило спать -- "это печально", кое-что пропустил, так как пейзажи (поля, небо, лиман) были охуенными. Эдакое "тру лето", но без адовой жары.
Взял нетбук в надежде поколбасить, но он сдох на 5ой секунде работы. Подленький и маленький.
Понял, что большинство моих проёбов и лишних затрат времени вызваны откровенно хуёвым планированием. Проанализировав частные случаи, пришёл к выводу, что мне нужны 3 штуки.
Read more... )
Так-то. Однако увязать это воедино -- не знаю, как. Всё сложно. А это говорит о том, что такая система будет либо неудобной, либо нестройной, либо сложной в использовании.
(вытащено из камента, который писал как-то)
Говорят, что профессиональные велосипедисты исповедуют "постоянную скорость вращения педалей". А я в велосипедных делах я не профессионал, поэтому этого не знал, но выработал для себя принцип "постоянной нагрузки". С одной стороны, если часто крутить педали, ноги устают из-за лишнего количества движений и лишней их скорости, с другой стороны, если крутить редко, приходится прикладывать силу, бОльшую, чем в случаях, если переключишь передачу в сторону "больше крутим меньше едем", и ноги устают уже из-за излишней силы. Вот и стараюсь так, чтобы крутить с чуть меньшей силой, чем та, при которой становится уже неприятно мышцам по параметру "сила довления на педаль".
Интересна критика такого подхода.
Увидел чувака с ником fraggle, покопал, и решил один мучающий меня с детства вопрос. Было такое детское-подростковое обзывательство "эй ты, фрэгл!" с неизвестным мне тогда происхождением. Так вот, узнал, что так звали типичных "граждан страны эльфов" в детском телесериале "Скала Фрэгглов". Учитывая, что я его не смотрел (по крайней мере не помню себя за таким занятием), всю изощрённость (см. по ссылке) этого детского на вид ругательства понял только сейчас.
У меня была необходимость разобрать записи, получаемые от реляционки (от постгреса в моём случае), в окамле, который строго типизирован.
Read more... )
Page generated Sep. 23rd, 2017 02:30 pm
Powered by Dreamwidth Studios