Портрет 4X_Pro
Был в Сети 19 апр. 2024 г., 07:29
Мультиблог
4X_Pro
Кратко о себе: Web-разработчик. Пишу на PHP, Python, JavaScript. Знаю Ruby и Go, со студенческих времён более-менее помню C и asm. Сейчас специализируюсь на ускорении загрузки сайтов и разработке ботов для Telegram. Linuxоид (использую Debian+LXDE). Сторонник IndieWeb.

Социальные сети


Новости сайта в Telegram

t.me/4x_pro

Лог жизни

Лог моей жизни, где я фиксирую наиболее эмоционально значимые для меня события и текущее настроение. Является продолжением блога, который я вел в ЖЖ с ноября 2004 по апрель 2018 года.


День дисгармонии

4X_Pro
Сегодня (вернее, уже вчера) был какой-то день сильной дисгармонии. Ночью начал сильно переживать по поводу того, что много времени потратил совсем не на то, что планировал, и уже второй день не успеваю многое из задуманного. И что это происходит из-за того, что всё время сижу онлайн, а чтобы сосредоточиться, нужно выключить связь, но в силу разных причин этого не делаю.
Поэтому решил, что устрою себе день полуоффлайна. Но даже это не успокоило, спать лёг весьма раздраженным. Обычно сон меня успокаивает, но в этот раз было иначе. Проспал очень долго — 10 часов, а проснулся даже ещё более раздраженным, чем ложился. Злило всё, особенно звуки газонокосилки с какого-то из соседнего участка: у них она какая-то на удивление мощная, такая, что даже полностью закрытые окна не помогают. А ещё болела шея.
Изначально я хотел отправиться сегодня на велопрогулку, но встал поздно, да и погода как-то не располагала. Поэтому стал играть в Battle for Wesnoth, что дало возможность хоть как-то успокоиться. Надо сказать, отчасти помогло. Но потом Tella написала SMS, я вышел на связь ВК, выяснилось, что у неё сегодня тоже в жизни творится черт знает что, да и у одной её подруги тоже.
Только часам к 20 жизнь вроде стала налаживаться. Решил выбраться на короткую прогулку к ближайшему водоёму и Клязьме. Сначала прогулка была ничем не примечательна, но у водоёма я решил не выходить к Клязьме сразу, а сначала выйти на пляж, до которого обычно не добираюсь. И вот там вдруг пришло умиротворение, какого давно не хватало. Минут десять стоял и смотрел на отражение облаков в зеркале водоёма. Потом дошагал до Клязьмы, побыл некоторое время там, сделал несколько фото и вернулся домой.
Впрочем, ночью опять вылезли признаки дисгармонии.

Июль подкрался незаметно

4X_Pro
Из-за уплотнения жизни первые дни июля пролетели незаметно. А вот вчера внезапно обнаружил, что природа изменилась: темнеть стало заметно раньше, листья на березах — стали темно-зелеными, а отдельные даже пожелтели. А по ночам теперь не слышно не только соловьев, но и лягушек. Зато стало гораздо тише, и лучше видны звёзды из-за того, что небо теперь темнее. Эх, каждый год в это время жалею, что невозможно остановить ход времени, зафиксировать природу, да и жизнь вообще, на верхней точке… Конечно, потом придёт еще одна весна, но до неё нужно пережить и «старость года» в ноябре и декабре, и усталость от зимы в конце января и начале февраля, и внезапные её возвращения в марте и апреле, а иногда и в мае.
В остальном же понемногу возвращаюсь к нормальной жизни. Вчера без видимых причин проснулся в 10:30, но ничего хорошего из этого не вышло. Весь день соображал плохо. Но тем не менее, наконец-то перечитал часть книги Калинаускаса про три периода жизни, и теперь продумываю свой ответ на это. Прошёл тест за седьмую неделю курса по теории игр. Причём если раньше тесты я проходил с наскока: одна, максимум две попытки, то тут застрял наглухо. Как будто кто-то глаза отводит. В одной из задач сначала неправильно прочитал условие, поэтому отвечал не на тот вопрос, во второй — сначала ответил правильно, но после первого неудачного прохождения, решил, что ответ неверный, и начал действовать методом подбора. В ещё нескольких делал какие-то совершенно дикие ошибки по невнимательности. И на последнем прохождении набрал 9 баллов, а не 10, тоже из-за совершенно глупой ошибки, хотя совершенно точно знал правильный ответ, просто на нервах ткнул не туда. Интересно, из-за чего у меня иногда такое происходит? (Хех, вспомнилось, как в лицее в зачётке часто бывали последовательности вроде: 5-5-3-5-5-3-5.) Биоритмический минимум и/или накопление усталости? Происки каких-то темных сил? Чудачества собственного бессознательного?

Халява пришла!

4X_Pro
24 июня мне пришла SMS, что я зарегистрирован для участия в программе «Миллион призов» (причем не помню, регистрировался ли сам или это сделали как-то автоматически). А 30 июня — уведомление, что я чего-то там выиграл. Сначала я вообще не обратил на это внимания, слишком уж много всего другого происходило в жизни. А сегодня решил всё же проверить, чего там. И обнаружил, что выиграл 4000 баллов АГ, которые можно зачислить на «Тройку» по курсу 1:1. Так что теперь чуть ли не до конца года буду кататься на метро бесплатно!

В последние дни жизнь перенасыщена событиями

4X_Pro
Мда, не успел я порадоваться, что половина тяжелого «года с вирусом» позади, а в жизни на какой-то момент наступило затишье, как вдруг снова посыпались изменения, и за два дня произошло столько всего, что остаётся только за голову хвататься…
Увы, описать всё не получится. Скажу только, что вчера (вернее, уже позавчера) приехали DarLik и П.Т. С отцом они довольно легко нашли общий язык. Отец показал П.Т., как траву косить косилкой и триммером (у П.Т. есть тоже есть дом в деревне, но совершенно необжитой, куда он до этого года и не выбирался). Потом совместными усилиями жарили шашлык. Шашлыка на этот раз было очень много, 12 шампуров, и следить было сложно, да ещё постоянно отвлекались. Но тем не менее, результатом остались все довольны. Поели в беседке, затем решили сходить прогуляться к реке. Но получилось как всегда: пока собрались, уже немного начало темнеть. А путь к реке проходит под ЛЭП с высоким напряжением. DarLik когда-то наслушалась про их вредность, и начала паниковать, что вот это нам навредит, и чуть было не пошла обратно в тот момент, когда были почти уже у цели, оставалось где-то меньше ста метров. Я показал им то место возле поворота реки, где в прошлые годы часто сидел вечерами и смотрел на то, как вдали река появляется из-за поворота и затем плавно движется ко мне, вновь поворачивая уже у этого самого места. Но увы, было поздно, полутемно (шли мы не быстро, много останавливаясь в пути), и мы почти сразу отправились обратно.
Потом выяснилось, что П.Т. — любитель бани. Мы растопили баню, и он ушёл париться (причём уже около полуночи, чем немало меня удивил). Где-то около двух часов ночи от избытка впечатлений всем сильно захотелось спать. Но увы, эмоциональная перегрузка сработала и в обратную сторону: до 6 утра я уснуть не мог.
Проснулся только в 14 часов. Оказалось, что П.Т. и DarLik просыпались утром, но снова заснули и проспали даже дольше меня. Потом мы еще пообщались, в частности, я рассказал им про ИИС и ETFы, так как П.Т. активно интересуется этой темой. Потом они стали собираться домой. В общем, получил позитивную эмоциональную подзарядку. Но когда они уехали, а я стал настраиваться на возвращение к обычной жизни, случилась еще куча совершенно неожиданных событий (связанных уже не с ними), из-за чего день оказался просто огромным. Но это уже отдельная история.

Долгожданное затишье

4X_Pro
Наконец-то жизнь замедлилась до приемлемого уровня, и появилась возможность пожить спокойно. Впрочем, совсем уйти в себя, как это было в 2014 году, не получается. Хотел было заняться написанием «нашего ответа Калинаускасу» по поводу трех этапов жизни для раздела «Мировоззренческое», но так и не сложилось. Зато сделал много другого. Вчера большую часть дня оптимизировал новую версию SiteKnockerBot. Разобрался, как преобразовывать массив байтов в строку без перевыделения памяти, и в итоге добился, что время обработки запроса стало примерно таким же, как в старой. Да и само потребление памяти уменьшилось почти на 30 Мб. Правда, это в версии с отключеной поддержкой GZIP-сжатия ответа серверов.
Еще с подачи ПнБ узнал про IDE под названием CodeLobster. Очень понравилась: есть всё, что мне нужно, и специализирована именно под PHP. Но так и не понял, можно ли использовать её бесплатно больше 30 дней или нет. А также заинтересовался frameworkом под названием Code Igniter. По описанию он мне понравился даже больше, чем Yii, но что-то своё писать пока не пробовал. Возможно, если соберусь делать отдельный движок для децентрализованной соцсети, то буду писать именно на нём.
Сегодня прогулялся немного по территории посёлка, вышел к пруду. Он совершенно зарос, вся поверхность зелёная от ряски. А еще читал «Шестой дозор» (с подачи Kitsune) и прохожу игру Rockman II.

Безумный день

4X_Pro
День сегодня получился какой-то просто безумный. Мы с Tellой снова решили пересечься и изучать окрестности дальше. Я хотел ей показать водоём на месте бывшего песчаного карьера. На этот раз она уговорила свою маму привезти её на машине. Мы собирались встретиться у соседнего СНТ, посмотреть ближний водоём, над которым я фотографирую закаты, и потом отправиться к тому песчаному карьеру.
Но всё пошло не так. Во-первых, за полчаса до намеченного времени внезапно началась гроза с градом. Во-вторых, Tella всё время висела на связи, из-за чего я никак не мог собраться и выйти в намеченное время. Tellу стало глючить по БИ, плюс она ещё обижалась на то, что вчера резко ушёл в оффлайн, не предупредив её, хотя и знала, что я в жестком недосыпе. В общем, день обещал быть «весёлым».
Когда всё же встретились и доехали до того места, где нужно сворачивать на грунтовую дорогу, стало ясно, что дорога от дождя размокла, превратившись в грязь, и ехать по ней плохая идея. Я предложил, что раз так, то лучше снова отправиться в Заозерье. Но по дороге мама Tellы увидела указатель на Павловский Посад, и решила, что нужно побывать там. Идею все поддержали, и мы поехали туда.
Увы, хоть я не раз проезжал Посад на автобусе, но как-то изучить, что там есть в плане достопримечательностей, кроме колокольни на берегу Вохонки, не приходило в голову. Поэтому отправились в режиме свободного поиска. Немного поблуждав по городу, выехали к монастырю (потом выяснилось, что это был Покровско-Васильевский монастырь), рядом с которым было еще несколько церквей совершенно разных стилей. Правда, почти все они были построены сравнительно недавно, кроме Покровской, и того ощущения тишины и какой-то особой энергии, какое бывает от старых храмов (как, например, в Клину или в Саввино-Сторожевском монастыре), не было. Зато территория возле них отлично благоустроена: множество цветов, а еще растёт даже кипарис и есть птичник с фазанами. В Покровскую церковь мы даже зашли. Она внутри кажется просто огромной, и красиво расписана. А ещё там стоял гроб с покойником, к счастью, накрытый так, что покойника не было видно (и я даже не сразу понял, что это).
Потом ещё покатались по городу, хотели спуститься к Вохонке, но не нашли места подходящего места для парковки. Затем проехали через главную площадь, заехали в часть города за железной дорогой, но ничего особо интересного там не нашли, и решили возвращаться. На обратном пути поехали мимо пруда, расположенного рядом с Большими Дворами (если верить Wikimapia, неофициально его почему-то называют Байкалом). Я хоть и проезжал мимо него несколько раз прежде на велосипеде, как-то всегда оставался равнодушным, считая, что Данилищево озеро куда красивее. А вот Tella была от этого пруда в полном восторге, и решила, что нужно подъехать к нему поближе. И вот мы какое-то время провели на берегу этого пруда. Обычно там толпы отдыхающих, но в этот раз дождь всех разогнал. Зато удалось сделать несколько весьма атмосферных фотографий. И, самое главное, Tella осталась очень довольна поездкой в результате!
Когда я вернулся домой, меня ждал ещё один сюрприз. На этот раз учудила DarLik. Она додумалась связаться с моим отцом и рассказать ему, что они были у меня в гостях, им понравилось, и хотели бы приехать ещё. В первый момент мне хотелось просто зарыться под землю. Но делать нечего: пришлось рассказать, что да, реально есть у меня такие друзья, и они реально приезжали. Отец сначала удивился, потом посмеялся и сказал, что пусть приезжают. Так что ситуация решилась, но успокоиться я не мог до конца дня.
А уже ночью случилось ещё одно происшествие — то ли DDoS-атака на мои сайты, то ли просто заход агрессивного спам-бота. Но это я уже описывал в предыдущем сообщении.

Первая польза от SiteKnockerBot

4X_Pro
Только что впервые наблюдал реальную пользу от новой версии SiteKnockerBot. Внезапно он сообщил о том, что этот мой сайт и сайт IntB перестали быть доступными. Я заглянул на них, обнаружил сообщение об ошибке — не удаётся подключиться к базе. Стал разбираться, в чём дело. Обнаружилось, что упал сервер MySQL из-за нехватки памяти. Перезапустил его, через пару минут ситуация повторилась. После этого заглянул в логи, увидел там кучу запросов с какой-то подсети в Америке. Забанил сразу всю подсеть, и перезапустил MySQL еще раз. Вроде помогло.
Вопрос только в том, что это — DDoS атака против меня или же просто заглючивший спам-бот?

Встреча с DarLik и П.Т.

4X_Pro
Вчера, с третьей попытки, всё же договорились встретиться с DarLik и П.Т. Еще в четверг я написал им, что для того, чтобы в пятницу проскочить (относительно) без пробок, нужно выехать до 15 часов. И ради того, чтобы быть готовым к их приезду, даже сам проснулся раньше обычного. Но увы, в 15 часов DarLik только проснулась и написала «собираемся». Потянулось долгое время ожидания. За это время я не выдержал и поджарил и частично съел шашлык (изначально планировалось, что мы приготовим его совместно). Наконец, в 19:30 DarLik написала, что они проезжают Реутов, и что навигатор показывает, что на месте они будут в 22 часа. От этого я получил жуткий facepalm, так как изначально предполагал, что к этому времени уже наоборот, они будут собираться обратно. Но деваться было некуда…
В итоге к 22 часам они только-только добрались до Ногинска. Ещё через некоторое время DarLik вышла на связь с места, где нужно съезжать с шоссе, чтобы дальше я вёл их по телефону. Сначала вроде всё было нормально, я давал им подсказки. Но потом возник момент, когда по объсянениям стало непонятно, где они. Я предложил DarLik сбросить скриншот карты с отметкой геолокации. Она скинула, я посмотрел, и в первый момент показалось, что они вообще сумели заехать непойми куда, оказавшись на другом берегу пруда. Но через пару минут всё прояснилось: я-то всегда смотрю карту с фиксированной ориентацией (то есть север сверху), а DarLik чаще пользуется режимом навигатора, где карта повернута в том направлении, куда едем. Из-за этого я и подумал, что они заехали куда-то не туда.
И вот я уже бегу к воротам СНТ, чтобы впустить их внутрь. Но времени уже 22:40, стемнело, и возникает новая сложность. Машина, на которой они приехали, здоровенная, и поставить её на участок, сделав крутой поворот с узкого проезда, да ещё и в темноте, не так уж и просто. Сначала заклинило ворота из-за того, что их уже давно не открывали. Потом обнаружилось, что двигатель у машины мощный и громкий, и я очень боялся, что мы перебудим всех соседей, которые потом выскажут своё недовольство этим отцу. Потом чуть было не въехали в один из кустов на участке. В конце концов, я не выдержал и сказал П.Т., что ладно, не стоит стараться поставить машину нормально, стоит она по диагонали на въезде и ладно, всё равно ворота закрывать не требуется, а утром всё равно уезжать. На это П.Т. ответил «теперь машина выполняет функции ворот: никого на участок не пускает». На этом и порешили, и я повёл их осматривать дом и участок.
Дом им очень понравился, особенно беседка. И вообще, они сказали «да ты тут можешь жить как в городе». Я ответил, что летом — да, только вот когда сижу здесь неделю-другую, обязательно находится причина, по которой хочется съездить в город (причём иногда меня выманивает сама DarLik), а зимой всё упирается в отсутствие воды и отопления. Потом какое-то время пообсуждали плюсы и минусы жизни в городе. Я таки угостил их шашлыком, хотя осталось его не так уж много. Им очень понравилось. Затем DarLik решила сходить в машину за электронной сигаретой, но на обратном пути уронила её в траву, и мы не могли её найти. После нескольких минут поиска решили отложить до лучших времен, а именно, до момента когда рассветёт. Поднялись на второй этаж, сидели там и разговаривали, а потом наблюдали рассвет через окно. DarLik даже сделала фото.
Где-то в районе четырех часов П.Т. завёл речь о том, что пора уже собираться. Меня к этому времени уже начало понемногу вырубать от недосыпа, плюс начался некоторый перегруз от общения, как обычно, хотелось уйти в себя, поэтому я поддерживал эту мысль. Но DarLik хотела остаться ещё на какое-то время. И ещё нужно было найти электронную сигарету. Потом я сделал им кофе из отцовских запасов (причем впервые в жизни, сам я кофе не пью), потерянную сигарету всё же нашли, и где-то в 5:20 стали выезжать с участка. Я опять стал загоняться на тему того, что побудим соседей. Но обошлось (впрочем, есть подозрение, что нам повезло и соседи напротив куда-то уезжали на ночь, по крайней мере, у них всё было закрыто). Сначала П.Т. попытался было развернуть машину на площадке возле соседнего дома, но увы, не получилось. Зато чуть было не снесли столб, установленный теми самыми соседями напротив. Они, видимо, решили менять забор, и старый сместили чуть вглубь участка, а на углу этот самый столб для нового. Но я с недосыпа про это забыл и не предупредил П.Т. Но, видимо, высшие силы были на нашей стороне в эту ночь! После этого П.Т. решил выехать задом, не разворачиваясь. Проблема была в том, что у соседей тоже есть проблемы с въездом на их участки, поэтому несколько машин стояли прямо в проезде. И нужно было выезжать, выдерживая курс с точностью до нескольких десятков сантиметров. К счастью, П.Т. справился, но тот момент, когда мы проезжали мимо первой соседской машиной так, что между зеркалами было всего два сантиметра, меня просто трясло, так как зацепи мы её, неприятностей было бы выше крыши. Наконец-то добрались до еще одного места, где можно было легко развернуться и поехали к воротам. Предстояло последнее испытание: выехать за территорию СНТ, не разбудив сторожа. Как выяснилось, это не так уж сложно: сторожа обычно будят собаки, но на машину, выезжающую из посёлка, они просто не реагируют.
После этого я смог вздохнуть с облегчением и отправиться домой. Часам к шести я лёг спать, но заснуть никак не мог. Во-первых, уже ярко светило солнце, во-вторых, сказывалась эмоциональная перегрузка, в-третьих, от открытия ворот всё же остались следы (хоть мы кое-как их замаскировали), и я опасался, что отец их увидит, и начнёт задавать вопросы, чего это мне вдруг потребовалось их открывать. Так я проворочался до приезда отца. Потом всё же смог помедитировать и заснуть.
Увы, проспал я совсем немного. Уже в 12:30 проснулся, и понял, что больше спать не могу. В первый момент после подъема чувствовал себя ужасно, через пару часов вроде бы пришёл в себя, но всё равно весь день ушёл, что называется, мимо. Даже в играх шло всё вкривь и вкось. Вечером вышли с отцом на пробежку, но результат тоже не обрадовал: более чем на минуту хуже, чем в прошлый забег, при том, что устал больше. А после бега вообще не выдержал и заснул, но поспать нормально не смог из-за того, что рядом лежал мобильник, где то и дело сыпались сообщения. Единственный позитивный момент — это то, что удалось сфотографировать ещё один красивый закат!

Переписал SiteKnockerBot на Go

4X_Pro
Вчера вечером выполнил еще один пункт из своего списка дел на период загородной жизни: дописал новую версию SiteKnockerBot на языке Go, что позволило выполнять проверки сайтов параллельно. Но закончил весьма поздно, поэтому тестирование на боевом сервере решил отложить на сегодня. Причем, думал, что управлюсь за час-полтора, а остаток дня потрачу на отдых и компьютерные игры. Но увы, я был бы не я, если бы не растянул намеченное дело на всё доступное время. Началось всё с того, что при первом запуске бот просто упал. Причина нашлась довольно быстро: в одной ситуации я поставил defer resp.Close до проверки на то, что нет ошибок. Перекомпилировал, загрузил на сервер, запустил снова. Вроде работает, но то и дело появляются ошибки — невозможно открыть сокет из-за нехватки количества файлов. Пришлось срочно разбираться, как увеличить количество открытых файлов, так как прежде я с этим лимитом никогда не сталкивался. Ещё один запуск: вроде работает, но появляется подозрительно много таймаутов. Уменьшил число goroutines, вроде стало лучше, но опять таймауты есть. Какое-то время пытался играться с числом goroutines и интервалом, через который они порождаются, но увы, таймауты никуда не девались. Пробовал смотреть эти сайты через curl на локальном компьютере — вроде всё нормально, выдаются 301 или 302 редиректы. Думал, что в Go они как-то некорректно обрабатываются, но нет. Разгадка пришла тогда, когда попытался открыть соответствующие адреса в броузере. Оказывается, в таких случаях происходят редиректы на другой адрес, который не отвечает.
И вообще, в базе обнаружилось на удивление много «битых» и подозрительных адресов. Такое ощущение, что чуть ли не четверть пользователей использовало бота для каких-то сайтов-однодневок и подозрительных целей…
После того, как разобрался с таймаутами, снова стал подбирать число goroutines и интервалы. Изначально план был таким: 500 параллельных запросов каждые 150 миллисекунд, что давало 1 миллион проверок за пятиминутный цикл. Но при этом время ответа многих сайтов оказывалось гораздо больше, чем на самом деле. Например, даже 2seconds, где вообще лежит статичная страница, открывался чуть больше 1 секунды. Я стал пытаться уменьшить интервалы до 20—30 мс, уменьшив также и количество параллельных запросов, но увы, либо это не помогало, либо приходилось ставить такие значения, что число проверок за цикл получалось бы равным 200—300 тыс, а не миллиону, как я задумывал изначально. В итоге уже почти смирился с тем, что придётся тремястами тысячами и ограничиться. Но потом решил пойти на крайние меры: интервал между запросами снизил всего до 6 мс, а их число — до 10. Сделав это, я обнаружил, что время снизилось до почти приемлемого: тот же 2seconds загружается за 400 мс, а в среднем время ответа менее на 100 мс больше, чем на старой версии бота. Но увы, даже так получается всего полмиллиона запросов за цикл.
На этом я и решил остановиться. Потом еще какое-то время провозился с настройкой systemd. Почему-то из командной строки новый бот запускался нормально, а через него — нет. Вскоре выяснилось, что systemd запускает старую версию бота, не видя изменений в unit-файле. Так до конца и не понял, почему, но в итоге добился нормальной работы. Потом стал искать, нельзя ли как-то оптимизировать работу HTTP-клиента в Go, наткнулся на проект fasthttp, где обещают гораздо более высокую скорость запросов. Но увы, переписывать бота ещё раз уже нет ресурса — выгорел полностью.
Но в любом случае, я впервые написал что-то достаточно серьёзное и законченное на относительно новом для себя языке — Go. До этого я использовал его только для решения задач на CodinGame, и то очень мало. Впечатления остались очень противоречивые. Понравилась лёгкость распараллеливания, легкость компиляции под другую архитектуру (я сначала собирал бота под x86, забыв, что у меня и на втором VDS стоит 64-битная OS) и то, что он делает полностью статичные бинарники бе всяких so. Правда, у этого есть и обратная сторона: большая прожорливость памяти. PHP-шная версия бота занимала вроде около 30 Мб, а новая — 65, а когда параллельных запросов было больше, то и все 110. Но что реально не нравится, так это использование всяких Readers/Writers для работы с HTTP-ответом (и не только с ним, они там на каждом шагу используются). Ну почему его нельзя получить просто в строку/массив байтов, как в PHP или JavaScript? Зачем эти лишние (и труднодоступные для понимания) сущности? (И тут я подумал, что надо было вообще использовать node.js, а не Go.)
А еще завершение бота — это ещё один выполненный пункт моего списка дел. Причем восьмой из шестнадцати — ровно половина сделана. Хех, как всегда, живу в 3—4 раза медленнее: планировал сделать 16 пунктов за месяц, сделал половину почти за два. Но, пожалуй, теперь стоит устроить несколько дней отдыха, чтобы прийти в себя после всего этого!

День солнцестояния

4X_Pro
Сегодня был весьма необычный день: солнцестояние совпало с солнечным затмением. Обычно в дни солнцестояния я пишу о том, что лучшая часть года позади, но в этот раз, пожалуй, воздержусь. А то ведь так и будет… Впрочем, один плюс у этого года всё же есть: я сделал то, что хотел сделать давно — прожил на даче безвылазно с мая до солнцестояния. И ещё неизвестно сколько буду тут сидеть… DarLik так и вовсе предлагает до самых холодов.
Затмения от нас не было видно, но его влияние всё равно чувствуется. И у меня голова соображает плохо, а днём еще была непонятная раздражительнось, и многих знакомых глючит. Сегодня большая часть дня ушла на то, чтобы понять, почему в Go не работает обращение к базе данных не из главной goroutine, а из дополнительных. Только уже ночью нашёл, что завершение главной goroutine приводит к завершению приложения целиком, и остальные goroutines просто не успевают отработать. Впрочем, даже узнав это, проблему решил не сразу: забыл, что у меня в отладочных целях в середине main стоит return, а я пытался добавлять код в конец.
Ещё выбрался на прогулку к ближайшему водоёму, а потом вдоль Клязьмы. В целом прогулкой доволен, но каких-либо сильных впечатлений не осталось. А вечером была очень глючная игра в «Колонизаторов»: 6-ки выпадали реже, чем 9, 10 и 11! В итоге выиграл оранжевый игрок, у которого начальная расстановка была такая, что я думал, что он вообще на последнем месте останется. Но хотя он выигрывал с середины игры, почему-то против меня активно играл красный, часто блокируя мне 8-ку разбойником. В итоге за всю игру я недополучил чуть ли не десять карт ресурсов, что тоже сказалось на результате (я в итоге был вторым).

Задать вопрос

Здесь можно задать мне вопрос или спросить совета по любой теме, затронутой в блогах или на форуме. После того, как я отвечу, вопрос и ответ появятся в соответствующем разделе. Но не забываем, что я — сторонник slow life, поэтому каких-либо сроков ответов не обещаю. Самые интересные вопросы станут основой для новых тем на форуме или записей в блоге.
Сразу предупреждаю: глупости, провокации, троллинг и тому подобное летит прямо в /dev/null.