Category: it

Category was added automatically. Read all entries about "it".

фотография, 4X_Pro, фото

Прекрасный рассвет и день отдыха

Вчера ненадолго заснул около полуночи, после чего случился приступ бессонницы. Часов до 6 занимался переводом IntB на PostgreSQL. В итоге удалось вывести главную страницу и еще несколько служебных, но затем застрял на получении last_insert_id (уже сегодня выяснилось, это делается через SELECT lastval(), а не через pg_last_oid, как я пытался изначально).

Потом попытался лечь спать, но заснуть не мог совершенно. Поворочавшись где-то час, решил встать. Раздвинул шторы на окнах и увидел, что за окном потрясающее зимнее утро! Свет заполнил всю комнату, даже те части, куда не достаёт обычно, и сразу всё показалось совсем иным, чем обычно. Пришло какое-то внутреннее спокойствие, и ощущение, что в итоге всё будет хорошо. Давно такого не было…

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

А еще устроил себе день полуоффлайна: почти не заходил ВК, да и Telegram держал выключенным. Перепрошёл игру Rockman 4 полностью, и как всегда это вернуло мне ощущение спокойствия и внутренней гармонии, побегал на дорожке, почитал книгу. В общем, вспомнилась старая шутка про то, в каких случаях возникают положительные эмоции.

Вечером снова занялся доделками IntB. И есть очередное продвижение: удалось зарегистрировать пользователя, зайти в админку и создать раздел. Так что еще немного, и IntB будет полноценно работать на Postgres!
Репост с сайта 4xpro.ru.
фотография, 4X_Pro, фото

Долой мессенджеры, да здравствуют EMail и форумы!

Вылезла новая неприятность, совершенно неожиданная. Людям делать нечего, писать в мессенджерах стали гораздо больше, и я стал уставать уже от этого. Точнее, от постоянных переключений между потоком сообщений, на которые мне нечего ответить кроме «ясно», и основными задачами. Причем только начинает казаться «ну всё, затишье», тут же приходит что-то новое. Ненавижу синхронные средства связи! Долой мессенджеры, да здравствуют EMail и форумы! (И надо бы себе устроить пару дней если уж не полного оффлайна, то хотя бы отдыха от ВК.)

А еще обнаружил, что в PostgreSQL нет функции IF. Равно, впрочем, как и в SQLite. И теперь придется еще в IntB запросы и от нее чистить, а не только от кавычек.
Репост с сайта 4xpro.ru.
фотография, 4X_Pro, фото

Продолжаю работу над IntB

Весь день работаю над Intellect Board. Решил добавить в него поддержку PostgreSQL. На первый взгляд, задача казалась простой: унаследовать от Database класс, необходимый для работы с БД, сконвертировать файл с созданием структуры базы и внести нужные изменения в install.php. С PostgreSQL я дела прежде почти не имел, поэтому вчера какое-то время ушло на сопоставление функций из mysqli и pgsql, установку расширения, восстановление пароля от хостинга ElephantSQL, где дают бесплатную базу, переустановку DBeaver (как выяснилось, я так его и не установил после переустановки OS) и т.п.

Но увы, оказалось, что MySQL и PostgreSQL очень по-разному работают с кавычками. В MySQL обычные кавычки и апострофы взаимозаменяемы, а в Postgres — нет. Обычные кавычки там используются для обозначения имени столбца или таблицы, строковые значения в них брать нельзя, обязательно должны быть апострофы. И теперь приходится исправлять просто огромное количество запросов, так как я везде использовал кавычки из соображений удобства. На данный момент удалось обеспечить работу только главной страницы и псевдостатического раздела. Интересно, с другими СУБД подобное не вылезет?


Репост с сайта 4xpro.ru.
фотография, 4X_Pro, фото

Неэффективная жизнь и мой тип по темпористике

Неделя проходит совершенно бестолково. В понедельник Tella вытащила на прогулку. Спускаться в метро я отказался категорически, поэтому решили отправиться в Измайловский парк. Когда выходил из дома казалось, что за окном отличный весенний день. Но очень скоро выяснилось, что это только лишь видимость: ветер на улице дул просто ледяной. Да еще и шли мы очень медленно. Я показал Tellе Серебрянку и Просянскую плотину, потом мы прошли парк насквозь и вышли к Измайловской. После чего я вспомнил шутку из Arcanumа (точнее, в самой игре этого нет, шутка с одного форума по нему): «вы обходите метро стороной — всё равно магов туда не пускают» и отправился назад.

Обратно шел на максимальной скорости, что позволило хоть чуть-чуть согреться, но всё равно не помогло: домой пришел сильно замерзший, и весь вторник меня температурило. А еще узнал, что одновременно заболела и DarLik. В какой-то момент даже запаниковал из-за этого, решив, что мы с ней заразились коронавирусом, когда ездили на «Остров мечты». Но вроде обошлось. В среду проспал до очень позднего времени, но чувствовал себя почти здоровым. Только под вечер вернулась боль в горле, которая остается и сегодня.

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

Вчера тоже день прошел бестолково. Просто не понимаю, куда делось время (хотя еще сказался поздний подъем). Единственное, что за день было позитивного — помог Kitsune решить вопрос с сервером (у них админ учудил — хотел для контроллера домена в небольшую контору на 15—20 компов взять навороченный сервер ценой свыше 400 тыс.) и еще немного продвинулся в Ultima IX.

Также узнал об очередной упущенной возможности: пока я думал, что делать, серебро уже ушло со своих минимумов и подорожало примерно до $14.5 за унцию. Еще раз убедился: там, где все решает скорость принятия решения, я всегда буду в числе проигравших…

Впрочем, не это в жизни главное. Это просто лишний раз напоминает, что заниматься нужно тем, что важно в долгосрочной перспективе, а не сиюминутной. Но и с этим тоже как-то не очень. В последнее время слишком много времени трачу на всякую ерунду: либо на ругань на Яндекс.Районе или Яндекс.Дзене, либо на бессмысленное чтение новостей. В результате уже какой день получается так: весь день провожу в Сети, и только вечером, выключив компьютер, думаю о том, сколько всего мог бы сделать — написать несколько заметок в другие разделы мультиблога, дописать новую версию IntB, переписать на Go бота для проверки сайтов, пройти еще один курс по машинному обучению. Но на следующий день выхожу в Сеть, и всё повторяется снова. Помогает только ограничение Интернета, но некоторые вещи без него делать нельзя в принципе (тот же CodinGame, например). А для некоторых — требуется обращаться периодически за ответами на какие-то вопросы (например, как что-то сделать в том же Go). И еще проблема в том, что избыток выбора вариантов не позволяет определиться и остановиться на каком-то одном… А только остановка и концентрация помогает преодолеть страх неуверенности.

Пока же единственное что я сделал — это запретил себе застревать в Яндекс.Районе. И надо бы на мобильных устройствах уведомления от него скрыть, а то приложение Яндекса превращается в хронофага: то Диск предложит посмотреть старые фото, то Район, то еще что-нибудь. А из новостей смотреть только статистику по числу заболевших в Москве и мире, чтобы представлять общую динамику эпидемии. Да и на сайтах по акциям застревать нет смысла. Все равно в ближайшее время выхода из минуса не предвидится, на новые акции нет свободных денег, да сумма убытков стала восприниматься сейчас скорее как справочная информация.

Еще перечитал сейчас некоторые материалы по темпористике и окончательно понял, что я все же ПВБН (куда себя типировал изначально). Описание конфликта Прошлого и Будущего — это прямо как с меня писалось! И таки да, моя шутка про то, оцениваю не столько саму кривую качества жизни, сколько её производную — это как раз таки Будущее в третьей, критериальной позиции! И, кстати, скрытая составляющая конфликта с Elementel как раз на этом основывалась: я ожидал, что она поможет мне двигаться в нужном направлении (запрос на 2Б), а она просто шла туда одна. В общем, еще раз убедился: если в какой-то типологии долго не удается определиться, то это значит, что именно в её области много непроработанных проблем.
Репост с сайта 4xpro.ru.
фотография, 4X_Pro, фото

Работаю над IntB и играю в Quest for Glory 2

Весь день просидел дома. С одной стороны, ухудшилась погода, с другой — и так слишком уж часто выбирался куда-то в последние дни. А заниматься чем-либо всерьез получается только тогда, когда сижу дома безвылазно.

Сегодня, в частности, занялся накопившимся доделками Intellect Board. Похоже, придется поменять планы и новые типы разделов отложить на более поздние версии, а в 3.03 заняться менее значительными доработками. Правда, успел не так уж и много: сделал только теги attach и attachlink, которые позволяют вставить ссылку на приложенный файл в любое место сообщения, а не только вывести ее в конце, как сейчас. Недостаток в том, что файл вставляется по порядковому номеру приложения, а номера могут меняться, если несколько раз добавить/удалить файлы при редактировании.

Вообще, прихожу к мысли, что по-хорошему, надо бы сделать что-то вроде «личных файлов пользователя», ссылки на которые были бы постоянными, и даже начал искать клиентскую часть скрипта файл-менеджера на GitHub, но пока все же сомневаюсь — слишком уж это не вписывается в начальный замысел IntB.

Еще, воспользовавшись тем, что недавно поставил wine, поиграл немного в Quest for Glory II (фанатскую версию с полноценным click&point-интерфейсом, сделанную уже в 2000-х годах). Импортировал туда своего персонажа-воина из первой части, и обнаружил, что файл для импорта был создан в 2013 году! Как же быстро летит время. А мне казалось, что я всего года два или три назад хотел устроить своего рода марафон по QFG — пройти все 4 части с максимальной прокачкой персонажа после каждой.
фотография, 4X_Pro, фото

Циклическая смена интересов продолжается

Опять у меня циклическое переключение интересов. Всю эту неделю занимался ядром Linux: сначала оптимизировал свое самосборное (и вышел на время загрузки 1.5 секунд ядро, 3.2 секунды userspace без отключения MySQL, который добавляет секунду). Потом наткнулся на несколько интересных статей про драйвера Linux. Изучил и понял, что в общем-то, теперь в голове сложилась картина, как писать драйвер сложнее, чем printk("Hello world"). В частности, более-менее разобрался со стеком USB и обработчиками прерываний.

Но теперь меня с одной стороны сносит на возврат к работе над IntB (накопились мысли о том, что можно доделать), с другой — опять накатило небольшое уплотнение жизни.
Репост с сайта 4xpro.ru.
фотография, 4X_Pro, фото

Продолжаю эксперименты с ActivityPub

Продолжаю разбираться с протоколом ActivityPub. Перечитал пример в блоге Mastodon и наконец-то разобрался с тем, как сообщение-объект вкладывается в сообщение-действие. У меня-то REST API головного мозга, и я привык, что действие определяется либо HTTP-методом, либо URLом, а в ActivityPub это не так. В результате получается несколько многословно, но зато в стиле 1Л.

Начал писать простейший клиент на PHP для взаимодействия сервер-сервер, который с моего виртуального пользователя на этом сайте пытается отправить сообщение на мой настоящий аккаунт на lor.sh. Но увы, пока что-то делаю не так: получаю ошибку "Public key not found for key http://4xpro.ru/activity_pub/me#main-key", хотя по логам видно, что lor файл скачивает. Видимо, по каким-то причинам не может извлечь из него ключы. Главная сложность в том, что посмотреть, что происходит на сервере, я не могу, разве что поставлю на второй VDS свою копию mastodonа, но это решение на крайний случай.

Еще в процессе тестирования опять столкнулся с тем, что gmdate('r') возвращает дату почти в нужном формате, только часовой пояс выводит как +0000 вместо GMT, из-за чего на приемной стороне не могут ее нормально разобрать. Эх, ну почему нельзя было сделать именно для gmdate нормальную выдачу с GMT? Уже какой раз сталкиваюсь. Приходится идти кривым путем: заменять +0000 на GTM через str_replace, чтобы не возиться с форматом.
Репост с сайта 4xpro.ru.
фотография, 4X_Pro, фото

Бесолезный, но интересный опыт с Linux

«Уплотнение жизни» закончилось, и в последние дни опять занимался тем, что получал бесполезный, но интересный опыт. (Впрочем, если рассматривать его с позиции «доказать, что можно жить под Linux и за счет этого реже обновлять железо», то не такой уж бесполезный.) Сначала попытался установить Windows 95/98 в DosBox. И даже отчасти получилось, о чем писал на форуме, но в итоге результат оказался совсем не тот, на который я рассчитывал. Кстати, подумалось, что для простых приложений DosBox мог бы быть отличным контейнеризатором, решающим проблемы с совместимостью.
Потом тестировал работу старых игр под пятой версией wine. Вот там результаты порадовали: заработало почти все, кроме Majento PositionMeter. Впрочем, нашел ему альтернативу под Linux — RankTracker. Правда, приложение жутко громоздкое — 200 Мб (для сравнения, PositionMeter всего 7 Mb). И самое главное, не позволяет сохранять историю позиций, то есть придется их руками в Excel перебивать.

А еще не выдержал и поставил LXDE вместо Mate, и тему Lubuntu для неё. Уж очень меня достало неудобное меню в Mate, и то, что для Win+D и Win+L (сворачивание окон и блокировка) нужно переключать раскладку, тогда как LXDE воспринимает эти комбинации хоть на русской, хоть на английской. Так что теперь собрал плюсы и дистрибутива Mint (корректная работа с принтером и подключаемыми наушниками) и LXDE (легкий и привычный интерфейс).

Сегодня занялся дооптимизацией ядра. Вынес почти все возможное в основную часть, кроме модулей WiFi, nouveau и zram, вынос которых из модулей приводит к глюкам, избавился от initramfs. В результате время загрузки теперь снова составляет всего 5.1 секунды!

Пытался еще экспериментировать с выигрышем в плане скорости работы Интернета за счет смены протокола congestion control, но безрезультатно. До сервера провайдера скорость почти не меняется. А если выбрать в качестве цели что-нибудь дальнее (я выбрал сервер в Сиэтле, так как там же находится сервер CodinGame), то разбросы в скоростях получаются такие, что непонятно, что тут больше влияет: мои настройки или текущая загруженность канала.

Еще окончательно достала нехватка места, поэтому поступил радикально: снёс recovery-раздел, который производитель почему-то разместил на SSD, а не втором диске. В результате Linux-раздел стал почти вдвое больше: 25 Гб вместо 13. И теперь могу поставить Postgres, MongoDB и NodeJS, а так же тот же wine.

Утром также была мысль попробовать поставить фильтрующий proxy под названием privoxy (точнее, сначала вообще хотел написать сам что-то такое на go), чтобы резать рекламу, счетчики, виджеты, автоматическое видео и всякие надоедливые штуки типа Chatra/Jivosite. Но пока так и не решил, будет ли это лучше, чем использование встроенных средств Opera + JavaScript по белому списку с помощью расширения ScriptSafe.
Репост с сайта 4xpro.ru.
фотография, 4X_Pro, фото

Пересборка ядра и решение вопроса с облаком

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

Увы, точной версии ядра, на котором все работало, я не помнил. Где-то в голове присутствовало значение 4.4, поэтому я решил попытать счастья с этой версии. Скачал самое последнее — 4.4.209 и стал собирать. Но сначала сделал большую глупость: начал собирать с настройками по умолчанию. Собиралось это очень долго, и в результате получилось столько лишних модулей, что у меня просто не хватило места на основном разделе, чтобы их поставить. Пришлось все удалить, и начать заново, воспользовавшись командой make localyesconfig. Эта команда отключает все, кроме поддержки тех модулей, которые загружены в данный момент (делал я ее на штатном ядре). После этого система собралась и даже вполне неплохо заработала — после перезагрузки подцепились все устройства, даже USB-наушники и Web-камера. Искллючением, как это ни странно, стали обычные флешки: почему-то поддержка mass storage оказалась выключенной. Впрочем, сейчас включил их поддержку и пересобираю ядро еще раз.

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

Сначала решил было приспособить под это дело собственный VDS: создал там пользователя, смонтировал его каталог с помощью sshfs, и хотел было вынести туда то, что планировалось синхронизировать. Но потом подумал, что если по каким-то причинам Сеть будет недоступна, то я лишусь доступа к этим файлам вообще. Нужно было такое решение, которое позволит с одной стороны, хранить файлы локально, с другой — выгружать их в облако в случае изменений. При этом еще и не слишком тормозное.

В итоге остановился на Яндекс.Диске, так как из всех более-менее известных облачных сервисов только у него сервера расположены достаточно близко, чтобы ping был небольшой. Кроме того, в настройках его клиента можно запретить синхронизацию определенных каталогов, чтобы не тащить на компьютер то, что я сейчас там храню (архивы и фотографии). Но самое главное, он умеет работать с symlinks! А это значит, можно оставить все файлы на своих местах, и просто насоздавать symlinks на все, что нужно синхронизировать.
Репост с сайта 4xpro.ru.
фотография, 4X_Pro, фото

Прошедшая неделя: уплотнение жизни не хочет заканчиваться

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

Впрочем, ничего такого глобального и не происходит. На прошлой неделе я досмотрел до конца все лекции курса по машинному обучению. В выходные сел было за практику, выполнил задание второй недели, а вот потом опять снесло потоком жизни куда-то в сторону. Точнее, навалились дела по freelance — оформить акты и прочее за прошлый год. Потом взялся за SEO одного сайта. Но тут меня ждала неприятность: оказалось, что доступа по FTP на сайт нет. И даже к шаблонам — тоже, только к контенту. А в то же время главная проблема сайта — это его неоптимизированность в плане загрузки: сайт достаточно простой, но при этом главная — это 9 Мб траффика и более сотни запросов. Теперь вот приходится переписываться с техподдержкой вместо того, чтобы делать все самому.

Еще обновил Linux Mint до версии 19.3 и решил поставить драйвера от NVidia. Как выяснилось, сделал это совершенно зря. Во-первых, после benchmarkа выяснилось, что производительность у дискретной видеокарты под Linux не больше Intelовской (единственный плюс — она умеет делать antialiasing, тогда как встроенная — нет), но при этом драйвер требует больше памяти и увеличивает время загрузки. А во-вторых, вернулась проблема с зависанием при загрузке, которая была в Lubuntu: при каждом запуске приходится отключать внешний монитор. Впрочем, скорее всего, это связано с обновлением ядра: в новой версии оно 5.0, плюс для совместимости оставлены версии 4.5* и 4.7*, в то время как баг с зависанием появился где-то около 4.15. В общем, все печально…

В среду еще с Tellой отправились на Автозаводскую. Побывали там в странноватом фуд-корте на месте бывшего завода, потом отправились гулять просто по району. Я увидел какие-то башни и решил пойти посмотреть поближе. Это оказался Симонов монастырь. Точнее, как потом выяснилось из Wikipedia, то что от него осталось: южная стена, три весьма внушительных башни и еще церковь и несколько построек. Осмотрев монастырь, мы вышли к Москве-реке и прошли вдоль нее вверх по течению. У реки оказалось просто ужасно холодно, и пока мы добрались до Новоспасского моста, замерзли ужасно.
Репост с сайта 4xpro.ru.
Еще в голове крутится несколько идей для заметок в блоги, но никак не получается сесть и начать писать. Исключением стала только одна небольшая заметка в раздел «Размышления о Сети и о жизни».