Блог Евгения Морозова

Установка MariaDB 10.4 на сервер Ubuntu 18.04 довольно нетривиальна. В частности, если не запретить профиль AppArmor, то сервер будет падать с различными ошибками, по которым совершенно невозможно понять, что дело именно в AppArmor.

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

Добавляем репозиторий

apt-get install software-properties-common
apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirror.biznetgio.com/mariadb/repo/10.4/ubuntu bionic main'

Устанавливаем

apt install mariadb-server

Выключаем профиль apparmor для mysqld, потому что он сломан

ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld

Запускаем

systemctl start mariadb

#mariadb #mysql #ubuntu #apparmor

Недавно обнаружил, что моему первому и пока единственному Open Source проекту — GtkBalls — исполнилось 20 лет.

Официальная страница

GtkBalls входит в состав многих дистрибутивов Linux и даже порты FreeBSD: – DebianUbuntuArchLinuxGentooSlackwareFreeBSDOpenBSD – и многие другие

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

Также собираюсь портировать игру на Gtk 3, надеюсь, выкрою время до конца года.

#c #программирование #gtkballs #gtk

После долгого проживания в Азии понял, что люблю смену времен года. Как же приятно, что меняется температура, продолжительность дня, то как выглядит все вокруг. Даже запахи меняются. В начале осени начинает слегка пахнуть опавшей листвой, ближе к зиме воздух становится каким-то более свежим. Весной пахнет предвкушением лета. Насколько это разнообразит жизнь по сравнению с ежедневной одинаковой жарой. Когда живешь год на одном месте, и каждый день все вокруг остается одинаковым. Одинаковая жара, одинаковые деревья, одинаковые запахи.

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

Закончилось путешествие Москва-Алтай-Байкал-Москва. Ровно 13,000 км, чуть больше одного месяца.

В Новосибирске Габриель сказал, что в таких путешествиях не столько узнаешь что-то о мире вокруг, сколько понимаешь много нового о себе.

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

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

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

Это нельзя объяснить, так же, как и красоту Алтая, это надо почувствовать самостоятельно.

#алтай #байкал #путешествия

Закончился PyCon. Кратко опишу свои впечатления. Было интересно, на некоторых докладах чувстовал, что делаю велосипеды, тогда как многие другие — космические корабли.

Попытался участвовать в трех конкурсах: 1. Был смешной автоматик от Positive Technologies с вопросами по Python, некоторые весьма непростые. Выиграл мячик. 2. Была викторина в стиле «Что? Где? Когда?» от Яндекса, в которой играли командами. Наша команда заняла 8-е место из 12 (но мы были самой маленькой командой, поэтому нам пришлось вчетвером думать за десятерых). 3. Попытался поучаствовать в конкурсе от Positive Technologies, в котором надо было исправить несколько уязвимостей в Python приложениях.

На первый взгляд, конкурс от PT был простой, но первый час я бился с тем, что мои решения не проходили, подошел к Ивану Цыганову, он выяснил, что на сервере проверки решений закончилось место. Затем хотелось прослушать почти все доклады, так что урывками пытался в перерывах копаться в коде, но все уязвимости исправить так и не успел. Тем более, мне показалось, что две исправленные уязвимости проверяльщик упорно не хотел засчитать.

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

Из понравившихся докладов запомнились больше всего: доклад Ивана Цыганова об уязвимостях, доклад Златы Обуховской о проблемах с асинхронностью в Python, доклад Александра Кошелева о сборке образов Docker без build зависимостей (не rocket science, но очень жизненно), доклад Артёма Малышева о DDD, доклад Бориса Цема об уменьшении сложности проектов Wargaming. И доклад Бобука до кучи, потому что он вызвал самое бурное обсуждение и массу шуток.

Все доклады прослушать не удалось. Часть докладов шла параллельно в двух разных залах, на части докладов пытался добить конкурс от PT, потому все пропустил мимо ушей.

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

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

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

#pycon #python #работа

Хампи

Перед первой поездкой я оптимистично рассчитал время путём деления расстояния на среднюю скорость в 60 км/ч. Конечно, настоящее время поездки оказалось в два раза больше. Вообще, как показал опыт, в Индии почти невозможно проехать более 350-400 км в день даже на мотоцикле.

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

Холмы Хампи

Утром вышел искать переправу на другой берег реки, так как именно там, по словам всех побывавших в Хампи, стоит жить (и я с ними совершенно согласен). Доехал до лодочной переправы у главного храма, спросил у лодочника, существует ли мост на другую сторону. Лодочник ответил, что нет. Тогда я спросил, может ли он переправить мой мотоцикл в лодке (эта Ямаха весит меньше меня, так что два взрослых человека легко могут занести ее в любую лодку). Опять отрицательный ответ.

Оставил мотоцикл и решил пешком переправиться на другой берег для разведки.

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

Не успел отъехать от проката, меня останавливает баба. Если что, так в Индии зовут святого человека. Кстати, в той же поездке узнал, что на языке штата Карнатака, в котором находится Хампи, «ба» означает «подойди». Например, бабы в гестхаусе так подзывали котёнка: «ба-ба-ба».

Баба, кажется, хотел, чтобы я его куда-то подвез. Спросил меня, откуда я, и что делаю в Хампи. Ответил, что русский и ищу жилье в деревне. Баба сказал, что в Хампи очень много русских и он покажет мне дорогу до русского гестхауса. Сразу же сказал, что будет удобнее, если он сядет за руль, в общем, деловой оказался. Повез меня в гестхаус, который назывался «Пушкин», если не ошибаюсь. Меня это сильно удивило, не ожидал, что там будет так много русских, что найдутся даже русские гесты. Но мест в нём не было. Тогда мы поехали по другим гестхаусам. Мест не было нигде, так как в тот год был какой-то юбилей Хампи, и приехало очень много паломников. В итоге, баба завез меня на самый край деревни, последний дом самой последней улицы. В гестхаус, который стал моим самым любимым гестхаусом в Хампи. Его самого хозяин геста тут же отругал и прогнал. Позже, он пояснил, что это пьющий баба, и за это его никто не любит.

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

Переправился обратно в город Хампи, сел на мотоцикл и поехал искать паром. С первой же попытки нашел его, хотя ехал около 20 км без навигатора. В ту поездку мне все время везло. К парому вел крутой бетонированный склон, который заканчивался прямо в реке. Было страшно, что не удержу мотоцикл, и упаду с ним прямо в реку. Позже подъехал тяжелый Royal Enfield с двумя иностранными туристами и груженый кучей сумок. Позавидовал их отваге: удержать этого бегемота на спуске было явно непростой задачей.

Паром в Хампи

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

По дороге на другую сторону реки познакомился с общительным индийским лесником, который рассказал мне всю историю своей жизни. Включая то, что он хотел учиться в России. Не знаю, где именно он работает, так как лесов в этой части Индии нет. Их вообще в Индии осталось мало.

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

Эти вечера в гестхаусе были просто волшебными. Никогда ни до, ни после, не испытывал ничего подобного. Периодически, когда вспоминаю, кажется, что все это было сном. Но откуда же тогда фотографии?..

Остатки старого моста

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

#индия #хампи #мото #путешествия

Река Тунгабхадра

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

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

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

Права в первое лето получить не удалось, сложилось сразу несколько обстоятельств. Но следующей зимой я взял у хозяина гестхауса его мотоцикл, спросил, как переключаются передачи, и стал наматывать круги вокруг дома, переключаясь с первой на вторую. Затем арендовал первый «настоящий мотоцикл» (150 см³ Yamaha FZ-S, которая выглядит как настоящая, но по сути тот же мопед). Первые поездки, даже на 5 км от дома, ужасно выматывали, но я упорно увеличивал радиус поездок.

Через пару месяцев взял недельный отпуск на Новый Год, купил внешний аккумулятор для телефона, установил оффлайн-навигатор OsmAnd (потому что сотовая связь в Индии очень медленная и ненадежная). Думал, как смотреть на навигатор, если не существует никаких креплений. В итоге, тщательно изучил маршрут, записал названия где-то 20 крупных населенных пунктов по дороге, и постарался выучить их назубок. Также взял наушники, чтобы слышать голосовые подсказки. Тогда я думал, что придумал новый способ навигации, было сюрпризом позже узнать, что по голосовым подсказкам езят многие мотоциклисты.

В общем и целом, мне повезло, и из-за мандража перед первым путешествием очень хорошо заучил маршрут и даже голосовые подсказки не очень понадобились — узнавал все выписанные населенные пункты по указателям на дорогах и ориентировался почти безошибочно. К слову, мне редко это удавалось в дальнейшем. В качестве точки назначения выбрал городок Хампи в 400 км от штата Гоа, так как много раз слышал от друзей, что это место удивительной красоты.

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

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

Рассвет в Гоа

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

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

Сразу за перекрестком была обычная индийская дорожная закусочная (четыре бамбуковых палки с навесом из плетеных пальмовых листьев). Сидящий там индиец с сыном не говорил ни слова по английски, но сразу же принес воду, какой-то местный антиспетик, и накормил меня кашей из неизвестного индийского злака. И хотя ни слова не говорил, но я понял, что он приглашал меня остановиться у него дома, объяснял, что дома у него есть бинты и можно переночевать. Но я был настроен доехать за один день, и отказался. Кстати, деньги за кашу и чай отказался взять наотрез. Бедные люди везде самые отзывчивые, и, несмотря на бедность, никогда не берут деньги за помощь.

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

#индия #гоа #хампи #мото #путешествия

Если вы разрабатываете сайт на языке не поддерживаемом Django, то можете столкнуться с подобной ошибкой:

  File "/home/user/.virtualenvs/laos/lib/python3.7/site-packages/django/utils/translation/trans_real.py", line 102, in __init__
    raise IOError("No translation files found for default language %s." % settings.LANGUAGE_CODE)
OSError: No translation files found for default language lo.

Язык в settings.py определён правильно, ошибка довольно загадочная, и поиск не даёт разумных результатов.

Если попытаться скомпилировать переводы командой compilemessages, то она естественно не выполняется с той же самой ошибкой.

Самый простой способ обхода: перейти в каталог с переводами для данного языка и скомпилировать переводы вручную:

cd locale/lo/LC_MESSAGES
msgfmt -o django.mo django.po
msgfmt -o djangojs.mo djangojs.po

Более простой и быстрый вариант: временно поменять язык по умолчанию на en, выполнить compilemessages, поменять язык обратно.

Наверное надо создать соответствующий баг в трекере Django, если дойдут руки, дополню пост.

#django #python #gettext

Вчера исполнился ровно месяц со дня возвращения из Камбоджи. Меня не было в России около 1.5 лет.

Думал, стоит ли писать что-то по этому поводу. По-моему, все можно уложить в одно короткое предложение: лучше, чем дома, не может быть нигде.

#камбоджа

В прошлые выходные ездили со знакомыми на воргольские скалы и в парк развлечений Кудыкина Гора.

Накануне разобрал фару, в которой постоянно перегорает контакт ближнего света (дефект конструкции данного мотоцикла, к сожалению), и вроде бы придумал как создать железобетонный контакт, который не будет отгорать через 1-3 дня, как обычно.

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

В 22.00 полностью стемнело, и на заправке под Тулой, в 180 км от Москвы, я сказал товарищам, что дальше без света ехать не могу. Ливень, а без света не видно ни мне, ни меня. Видимость в заляпаном грязью визоре где-то на метров 10-15 вперед, даже разметки толком не видно.

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

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

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

Приехал домой почти в два часа ночи, ужасно вымотанный всей этой историей. Спасибо ребятам, что ждали и помогали на заправке около двух часов.

Почему-то был уверен, что дома есть запасные реле, но память меня подвела. Пришлось заказать, в наличии их нигде нет, то есть надо ждать из Германии 5-6 дней. А ездить-то хочется. И стоят они очень недешево — около 900 руб за штуку.

Всю неделю вбивал в поисковики запросы типа: «Альтернатива мини-реле BMW gelb». Пробовал все ключевые слова во всех возможных сочетаниях. Но не нашлось ничего по делу. Все ставят оригинал.

Вчера заходил на почту за запчастями для ТО (воздушный фильтр, и т.п.), в соседнем здании автомагазин. Из любопытства зашел. Смотрю на витрину с электрикой, а там лежит маленькое реле от ВАЗ 2107 приблизительно нужного размера и с таким же количеством и расположением выводов, всего лишь за 95 рублей. Решил рискнуть — если не подойдет, то невелика потеря, да и вернуть можно.

Пришел домой, примерил к колодке — встает идеально. Сегодня поставил на мотоцикл — работает!

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

Артикул реле BMW: 61 36 6 902 041 (61366902041, мини-реле с замыкающим контактом gelb).

Реле от ВАЗ: 98.3747.111 4-контактное мини.

Фотография реле АвтоВАЗ Рядом с неисправным реле BMW

Имейте в виду, что с реле могут быть нюансы. В неисправном реле диодов внутри не видел, так что думаю, никаких проблем не будет.

#bmw #f650 #f650cs #мото #путешествия #сделайсам