tag:dreamwidth.org,2011-04-07:750757Swami Dhyan NatarajSwami Dhyan NatarajSwami Dhyan Nataraj2024-01-01T10:37:08Ztag:dreamwidth.org,2011-04-07:750757:995415В коммунизм через потребительские сообщества2024-01-01T10:37:08Z2024-01-01T10:37:08Zpublic14<p>Сошлась в голове очередная мозайка. Могу этим поделиться.</p>
<p>Уж не знаю как Мракс пришел к идее коммунизма, визионировал ее или как, но судя по всему дело стоящее... При этом как к этим практикам переходить совершенно непонятно. Натурный эксперимент показал что пройти в нее минуя стадию капитализма не представляется возможным. Да и из капитализма оно само вырастать как-то не хочет. Максимум что получается это социально ориентированные государства. Не хотят, видите ли трудящиеся бороться за свои права. А если начинают, то получается полная херня.</p>
<p>Давайте для начала посмотрим на то как формировались два предыдущих строя.</p>
<ol>
<li><p>Возникло земледение, технологии развились до того уровня, что появились излишки которые можно сохранять и перемещать. Появились ушлые люди, которые решили, а давайте эти излишки будут нашими. Как они будут нашими? А мы будем контроллировать рабочую силу (силой грубой физической) и они сами нам будут отдавать излишки. Кажется что полная фигня, но тут выяснилось, что это офигительно повышает эффективность, потому что если ты контролируешь достаточно рабочей силы, то способен реализовывать большие инфраструктурные проекты сильно повышающие эффективность производства. Поэтому эта форма отношений постепенно захватила мир, потому что те кто в государстве (а так появилось именно государство), те рулили. А те кто нет, тех захватывали другие государства.</p></li>
<li><p>Прогресс неудержимо рос, производство становилось все более высокотехнологичным, и роль средств производства в процессе производства всё возрастала. И тут другие ушные люди сказали, а мы тоже хотим излишков. Но как? А мы будем контролировать средства производства (без них вы ничего не произведете) а от того что произведете с ними, часть произведенного будет наша. Товарищи из п.1 были сильно не рады этому заходу, но тут выяснилось, что такой подход дает феноменальную гибкость и адаптивность, которую ни одно государство развить не может, и гибкость приводила к очень большой эффективности. И в результате серии буржуазных революций капиталисты сильно потеснили государство (но не уничтожили, оно является базой для их функционирования, но заметно снизили роль)</p></li>
</ol>
<p>Маленькое отступление. Походу ошибка Ленина была в том, что он собирался средствами государства контролировать капиталистов. Но это движение назад, так не работает. Нужно двигаться вперед. Оно по логике развития событий должно как-то вырасти из капитализма, при этом за счет роста технологического прогресса.</p>
<ol>
<li>Наши дни. Технологической прогресс вырос настолько, что тот факт, что ты что-то производишь, вообще никого не удивляет и не радует. Производится столько что не всё может быть потреблено. А произведенное, но не потребленное не является благами, а является расходованием ценных ресурсов на производство мусора. А ушлые товарищи они хотят именно блага. Т.е. произведенное и потребленное. Именно акт потребления (не будем тут делать разницу между покупкой и потреблением) заставляет потребителя поделится своей личной долей в общественном производстве, которую можно потратить на очередную яхту. Критичной точкой тут является именно момент потребления, и смотрите, сейчас всякая сволочь стремится повлиять на то как я потребляю. Их очень интересует как я это делаю, и как на меня можно повлиять, чтобы я это делал в их интересах. Начиная с репостов-розыгрышей публикуемыми мелкими частниками во вконтакте и заканчивая мощными системами рекламной аналитики гугла-яндекса-фейсбука.</li>
</ol>
<p>Смотря на это все, я всё недоумевал. А где тут эффективность? Да, оно позволяет лучше заниматься добровольным отъемом денежных средств у населения (о айфоны, вы идеал!!! Джобс -- гений), но не повышает эффективность общества в целом. Скорее наоборот понижает.</p>
<p>Но это похоже не финальная стадия развития. Фишка в том, что точка потребления находится на стороне потребителя. Ему её гораздо проще контролировать, чем скажем трудящемуся контролировать средства производства. Вероятно, желающие контролировать свое потребление, будут организовываться в потребительские сообщества, чтобы не допустить ушлых товарищей до этой своей интимной точки. И вот в этом месте как раз наблюдается та самая эффективность. Люди входящие в такие сообщества будут бочаге, свободнее и здоровее чем те кто не входит. Более того, сформировавшись такие сообщества начнут заниматься производством для внутреннего потребления. И поскольку у этого производства будет не капиталистическая цель, средства производства могут вполне оставаться под контролем тех кто ими трудится, или под контролем всего сообщества, которое будет совместно получать выгоду от этого производства. Т.е. практически коммунизм, в некоторой его форме.</p>
<p>Прикинул это к известным мне сообществам: Сообщество свободного ПО, автостопщики, торрет-сидеры, пиратские библиотеки... Всё действительно начинается с совместного потребления. Совместное потребление остается превалирующей деятельностью. При этом постепенно начинает возникать и производство в интересах сообщества, где-то больше, где-то меньше. И производство это совершенно не капиталистическое (хотя включает деньги и всё такое). Оно пост-капиталистическое.</p>
<p>Так что судя по всему путь именно таков. Можно готовиться и занимать удобные места.</p>
<br /><br /><img src="https://www.dreamwidth.org/tools/commentcount?user=nataraj&ditemid=995415" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/> commentstag:dreamwidth.org,2011-04-07:750757:995204nataraj @ 2023-12-01T16:21:002023-12-01T13:23:01Z2023-12-01T13:23:01Zpublic15<p>DW'шный енжин RSS не сумел распарсить одну из записей ленты постгрессовых блогов, и как он это любит, вывалил raw-html вывод на эту тему... Один фразмент привел меня в глубокую задумчивость:</p>
<p><code>
<img alt="😂" class="wp-smiley c1" src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f602.png" />
</code></p>
<br /><br /><img src="https://www.dreamwidth.org/tools/commentcount?user=nataraj&ditemid=995204" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/> commentstag:dreamwidth.org,2011-04-07:750757:994942Из не вошедшего2023-10-21T17:27:35Z2023-10-21T17:29:00Zpublic2"-- ... тут обнаружился "Отдел урегулирования убытков" которого у нас нету в плане автоматизации, его автоматизировать не надо?<br />-- Нет, его автоматизировать не надо... Этим ребятам автоматизация не нужна, им своих автоматов хватает".<br /><br />Пусть будет записано буковками...<br /><br /><img src="https://www.dreamwidth.org/tools/commentcount?user=nataraj&ditemid=994942" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/> commentstag:dreamwidth.org,2011-04-07:750757:994659Выпустил релиз игры Goblin Camp v0.232023-07-09T11:50:58Z2023-07-09T11:50:58Zpublic0<p>Goblin Camp — попытка создать опенсорсный клон игры Dwarf Fortress. Смысл игры в управлении поселением Гоблинов (или в оригинале Гномов), при этом управления косвенного, в игре не предусмотрено прямого управления Гоблинами/Гномами, можно лишь ставить задачи в общем виде, а вот как подопечные поведут себя в результате — вопрос мастерства организации...</p>
<p><a href="https://gitlab.com/dhyannataraj/goblin-camp/-/releases/v0.23">https://gitlab.com/dhyannataraj/goblin-camp/-/releases/v0.23</a></p>
<p>Изначально Goblin Camp написал некто Ilkka Halila, в 2010, повозился с ней годик и забросил. Мне как любителю Dwarf Fortress, Rim World и прочих симуляторов колоний с непрямым управлением, постоянно хотелось запустить в них руки, но сильно останавливала закрытость кода. Возможность писать моды есть, но тратить свое время на разбирательство в закрытом коде, я считаю неуважением к человечеству, поэтому стараюсь избегать к этого… И вот я в какой-то момент таки нашел ту программу в которую запустить руки не зазорно.</p>
<p>На тот момент Gobln Camp была давно заброшена и категорически не собиралась на современных дистрибутивах. Пришлось приложить не нулевое количество усилий, чтобы оно заработало и задышало.</p>
<p>Этот релиз закрывает проблему с работой графических тайлов. Оригинальная версия от Ilkka Halila использовала библиотеку SDL версии 1, а сейчас доступна только SDL2. Пришлось разбираться и переделывать.</p>
<p>Кроме того, есть у меня подозрение, что графические тайлы там вообще никогда толком не работали: они не целиком загружались. Там были существенные проблемы с вычислением координат мышки и смещения при перетаскивании.</p>
<p>Самый лучший баг был такой: если устроить перетаскивание и перемещать мышь строго влево-вверх, то при отпускании кнопки мыши, оно дополнительно срабатывало как однократное нажатие левой кнопки. Если был хоть раз в процессе вильнул вниз или вправо, эффекта не возникало.</p>
<p>Плюс современная библиотека libtcod (которая лежит в основе движка игры) на этот старый код выдает кучу deprecation-warning’ов. Начал их постепенно зачищать…</p>
<p><img src="https://blog.nataraj.ru/static/media/C7881498-B8BD-96DE-B468-557D7F6C2039.png" alt="" /></p>
<p><a href="https://blog.nataraj.ru/~/It/%D0%92%D1%8B%D0%BF%D1%83%D1%81%D1%82%D0%B8%D0%BB%20%D1%80%D0%B5%D0%BB%D0%B8%D0%B7%20%D0%B8%D0%B3%D1%80%D1%8B%20Goblin%20Camp%20v0.23">Оригинал</a></p>
<br /><br /><img src="https://www.dreamwidth.org/tools/commentcount?user=nataraj&ditemid=994659" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/> commentstag:dreamwidth.org,2011-04-07:750757:994413Еще один веселый способ выстрелить себе в ногу2023-04-01T11:35:50Z2023-04-01T12:01:42Zpublic3<p>Сижу, переделываю код. Есть необходимость отучить постгрес запускать разные сервисные процессы. Решил по случаю переделать это по уму...</p>
<p>Переделываю кусок, запускаю, проверяю, переделываю, проверяю и тут падает оконная система... Вся.</p>
<p>Логинюсь обратно, восстанавливаю рабочий контекст, перехожу к проверке и оконная система падает снова.</p>
<p>Я, матерсь, выключаю компьютер, включаю компьютер, возвращаюсь к прерванной мысли, и оконная система падает снова.</p>
<p>Понимая, что дальше работать несудьба, прикидывая чего такое в компе должно сдохнуть чтобы было вот так вот, в ужасе понимая, что если это проблема в железе, то вообще трындец, мне в понедельник надо выходить в онлайн, другого компа у меня нет, и на работе замену выдать не успеют, все будут на конференции, я сворачиваю работу и начинаю двигаться к следующей точке сегодняшнего дня.</p>
<p>Пока еду, до меня начинает доходить...</p>
<p>Там для порождения сервисных процессов есть спец. фабрика, которая в качестве результата возвращает pid нового процесса. Для оторванных процессов я стал возвращать -1.</p>
<p>Видимо по какой-то своей внутренней логике, она после запуска сразу посылала одному из процессов какой-то сигнал (имеет право).
А в линуксе процесс с номером -1 — это корневой процесс (скажите sudo pkill -9 -1, только не на подакшене, плиз)</p>
<p>Что это был за сигнал, и почему он будучи посланным от юзера (я постгрес запускал под собой) таки доходил до системного процесса — я не знаю, и наверное не буду разбираться, просто оторву посыл сигналов задезейбленным воркерам, благо там это тоже централизовано). Но эпичность допущенной ошибки меня восхитила. Можно мерить в сатиФаустах...</p>
<p>PS: и да, оконная система падала по нажатию Ctrl+C. Нажимаешь Ctrl+С в консоле и исчезает всё включая консоль!</p>
<p>Оно при принужительном завершении основного процесса кидало сигнал завершения детям, а он вместо этого уходил корневому процессу системы</p>
<br /><br /><img src="https://www.dreamwidth.org/tools/commentcount?user=nataraj&ditemid=994413" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/> commentstag:dreamwidth.org,2011-04-07:750757:994285Призовая игра с встраиванием питона2022-07-28T20:16:26Z2022-07-29T04:21:02Zpublic5<p>Я не возьмусь определять что мне более отвратительно libboost или python. Но право скажу собранные вместе в boost::python они производят на свет субстанцию непревзойденного свойства.</p>
<pre>
#include <boost/python.hpp>
#include <stdio.h>
int main()
{
Py_InitializeEx(0);
boost::python::object modMath = boost::python::import("math");
boost::python::object cosFunc = modMath.attr("cos");
Py_Finalize();
}
</pre>
<p>С 2.7м питоном работает нормально, с третьем падает с невнятной ошибкой при отработке хуков при выходе...</p>
<p>Историю с локализацией места проблемы в портируемой программе с последующим вынесением в приведенный standalone, я опущу из-за малосодержательности и нецензурности... Скажу только, что gdb плюс правильно выбранные места для breakpoint'ов рулят.</p>
<p>Далее в процессе плясок вокруг этого примера вдруг обнаруживаю что вот так не падает:</p>
<pre>
int main()
{
Py_InitializeEx(0);
{
boost::python::object modMath = boost::python::import("math");
boost::python::object cosFunc = modMath.attr("cos");
}
Py_Finalize();
}
</pre>
<p>Ага! думаю я. Оно позвало деструктор до финалайза а не после и все перестало падать... Надо сделать так же!</p>
<p>Но вот проблема... аналог переменной cosFunc в портируемой программе глобальная... Создается пустая, а потом после инициалайза заполняется. Можно было бы раскинуть мозгами, как запихнуть туда указатель вместо самого объекта, и сказать ему в нужный момент delete. Но менять весь остальной код очень не хотелось...</p>
<p>А нельзя ли так, чтобы для сложного объекта вызвался деструктор а сам объект опять заполнить пустым значением?</p>
<p>Оказывается можно:</p>
<pre>
int main()
{
Py_InitializeEx(0);
boost::python::object cosFunc;
{
boost::python::object modMath = boost::python::import("math");
cosFunc = modMath.attr("cos");
}
cosFunc = boost::python::object();
Py_Finalize();
}
</pre>
<p>оно заменяет сложное значение <code>cosFunc</code> тривиальным, при этом для заменяемого значения вызывается деструктор.</p>
<p>И вот так -- тоже не падает...</p>
<p>P.S. Отдельно доставила рекомендация документации на 1.55 boost::python просто не вызывать <code>Py_Finalize()</code>, типа не надо вам это.</p>
<p>P.P.S. Пришел к мысли что сам питон не падает только потому что и так ползает. And you should not boost it.</p>
<p>P.P.P.S. Честно говоря не верил, что осилю с этим разобраться. Без знания, что буста, что питона... Ан нет, получилось...</p>
<br /><br /><img src="https://www.dreamwidth.org/tools/commentcount?user=nataraj&ditemid=994285" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/> commentstag:dreamwidth.org,2011-04-07:750757:993942Телеграмм головного мозга2022-07-24T20:32:48Z2022-07-24T20:32:48Zpublic37<p>У человека заведшего себе телеграмм в мозгу происходят неизбежные (но надеюсь что обратимые) изменения. Если коротко, он начинает считать что все остальные должны тоже установить телеграмм и с ним в этом телеграмме общаться. Он сильно недоумевает, если ему попытаться объяснить что это не так. И даже обижается. О такой вещи, как приватность он не знает вовсе.</p>
<p>Подозреваю что изменения эти целенаправленно инспирированы администрацией телеграмма (см. ниже п.1.), и с моей точки зрения являются диверсией мирового масштаба.</p>
<p>Примеры:</p>
<ol>
<li><p>Мне по работе таки стало жестко необходимо читать несколько групповых чатов. Один раз, не этот самый, думаю я и регистрирую телеграм на один из своих публично известных номеров. И тут, внимание, о том что я завел телеграмм автоматически узнают все у кого этот номер был в записной книжке, и начали мне писать радостные восклицания. Повлиять на этот процесс я не мог никак. Приватность? Нет, не слышали! Отдельно доставляет что остальные пользователи сливали мой номер вместе со списком остальных контактов третьим лицам. С моей точки зрения это действие является явно не этичным, и очень расстраивает, что такие вещи стали нормой. Я проклял телеграмм, поставил этот аккаунт на удаление, и завел другой аккаунт на номер который никто не знает.</p></li>
<li><p>В этом аккаунте у меня установлена иконка, явным образом указывающая что телеграмм является нежелательным средством связи, а вместо имени указаны предпочитаемые контакты. Но отдельных товарищей из знающих этот аккаунт, это факт не останавливает, они все равно пытаются использовать этот способ связи, и обижаются если объяснять им что этого не надо делать. Мораль — единственный способ обеспечить приватность — полная секретность. Как только контакт становиться известен, телеграммные пользователи туда начинают ломиться как зомби.</p></li>
<li><p>Для настройки бридж-бота мне понадобился аккаунт заведенный на корпоративный номер (бридж корпоративный, контроль должен быть у компании а не у меня). Посовещавшись завели его на рабочий телефон одного из админов. Теперь мне время от времени на этот аккаунт приходят сообщения адресованные ему. И это не остановить никак... ВООБЩЕ НИКАК. Нет возможности сказать "меня нету". Завел аккаунт, вышел в онлайн, ты есть, ты ОБЯЗАН общаться.</p></li>
</ol>
<p>Товарищи, это вообще трындец. Это большой трындец. Мне очень жаль что его никто не видит, даже если в него прицельно тыкать пальцем...</p>
<p>На вопрос что делать, в личном порядке, ответ наверное есть, я об этом говорил, но это тема для отдельной заметки...</p>
<br /><br /><img src="https://www.dreamwidth.org/tools/commentcount?user=nataraj&ditemid=993942" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/> commentstag:dreamwidth.org,2011-04-07:750757:993763Этот ваш python течет...2022-07-24T14:37:56Z2022-07-24T14:39:02Zpublic0<pre>#include <Python.h>
int main()
{
Py_Initialize();
Py_Finalize();
}</pre>
<p>Собрать с санитайзером ASan, хоть со вторым, хоть с третьим питоном</p>
<p><code>clang-11 test.c -fsanitize=address -g -O0 -I /usr/include/x86_64-linux-gnu/python2.7 -I /usr/include/python2.7 -lpython2.7</code></p>
<p><code>clang-11 test.c -fsanitize=address -g -O0 -I /usr/include/x86_64-linux-gnu/python3.9 -I /usr/include/python3.9 -lpython3.9</code></p>
<p>Результат один: кучка мемори ликов. В 2.7 побольше, в 3.9 небольшая...</p>
<p>А если под полезной нагрузкой, так их вообще на много экранов...</p>
<p>И эти люди мне запрещают ковыряться в носу!</p>
<p>Надо позаимствовать у Витуса тег "злые люди"....</p>
<br /><br /><img src="https://www.dreamwidth.org/tools/commentcount?user=nataraj&ditemid=993763" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/> commentstag:dreamwidth.org,2011-04-07:750757:993336Полное удвоение разнядности2022-07-19T14:59:36Z2022-07-19T17:12:05Zpublic1<p><s>Ну все... <span style='white-space: nowrap;'><a href='https://beldmit.dreamwidth.org/profile'><img src='https://www.dreamwidth.org/img/silk/identity/user.png' alt='[personal profile] ' width='17' height='17' style='vertical-align: text-bottom; border: 0; padding-right: 1px;' /></a><a href='https://beldmit.dreamwidth.org/'><b>beldmit</b></a></span>, <span style='white-space: nowrap;'><a href='https://vitus-wagner.dreamwidth.org/profile'><img src='https://www.dreamwidth.org/img/silk/identity/user.png' alt='[personal profile] ' width='17' height='17' style='vertical-align: text-bottom; border: 0; padding-right: 1px;' /></a><a href='https://vitus-wagner.dreamwidth.org/'><b>vitus_wagner</b></a></span>, ликуйте!</s></p>
<p>У меня таки не осталось осмысленных хост-машин с архитектурой i386. Извел последнюю....</p>
<p>Этой зимой благополучно издох Енот, который был аппаратно 32х битный. </p>
<p>Под первые выстрелы спецоперации он был благополучно заменен на 64х битного Вомбата. И на вновь обретенной системе мной была опробована процедура crossgrade'инга, перевода системы с i386 на amd64. Глючная как моя жизнь. Нет. corssgrade'инг глючнее, и это говорит о многом.</p>
<p>Теперь я на своем отпуске-больничном, таки проапгрейдил все контейнеры с домашнего сервера и перекинул их на того самого новообретенного Вомбата. И вот теперь получил возможность безопасно crossgrade'нуть домашний сервер. Который аппаратно был amd64 давно, но когда я его сетапил, 64битный линукс глючил безбожно и не показывал важный тогда для некоторых сайтов флеш...</p>
<p>Кроссгрейдинг прошел успешно. Торренты водружены на место. Как работает бэкап -- узнаем ночью...</p>
<p>Так что теперь у меня все актуальные хосты 64битные, есть достаточно 32х битных контейнеров, но это исправимо. И все контейнеры обновлены как минимум до buster. Такой свежести моя инфраструктура давно не знала :-)</p>
<br /><br /><img src="https://www.dreamwidth.org/tools/commentcount?user=nataraj&ditemid=993336" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/> commentstag:dreamwidth.org,2011-04-07:750757:993185И обросло питонами2022-07-09T15:18:37Z2022-07-09T15:18:37Zpublic1<p>Пока болею, причесываю свою серверную инфрастуктуру. </p>
<p>Старый svn контейнер со времен минимум squeeze (не выбразывать же) переехал на хетзнер. Там проблем с пробросом нужных портов нету. Зато важен размер контейнера, поэтому задался вопросом, почему он такой толстый... Ну те то чтобы Толстый, но заметно толще вновь созданных. В поцессе исследования обнаружил там питоны 2.7, 3, 3.4, 3.5, 3.7, 3.9. Ну или какие-то следы от них.
Перла обнаружено только два: 5.28 и 5.32 (ну или опять же какие-то следы от них).</p>
<p>Буду изучать вопрос поиска и удаления obsolete packages. Авось поможет :-)</p>
<br /><br /><img src="https://www.dreamwidth.org/tools/commentcount?user=nataraj&ditemid=993185" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/> commentstag:dreamwidth.org,2011-04-07:750757:992927СЯУ How to git ignore2022-07-06T13:44:32Z2022-07-06T13:47:06Zpublic1<p><strong>TL;TR:</strong> это про <code>.git/info/exclude</code>, если знаете, то можно пропускать. </p>
<p>С постгресом у меня была вечная проблема: я пытаюсь таки перейти на разработку в vim'е (с переменным успехом, но последовательно движусь). Для того чтобы в vim'е переходить по имени функции к месту ее определения нужно созать tags-файлы при помощи утилиты ctags. Все хорошо, но потом эти tags файлы в огромном количестве болтаются в выводе <code>git status</code>. А если добаивть их в <code>.gitignore</code> то надо постоянно следить за этой незакоммиченной правкой (в апстрим ее никто не возьмет)</p>
<p>И вот мне это окончательно надоело и я пошел гуглить. Выяснилось, что есть еще локальный гитигнор, который называется <code>.git/info/exclude</code>. Работает абсолютно идентично, но в remote не попадает.</p>
<p>Добавил туда <code>tags</code>, и теперь доволен как слон... :-)</p>
<br /><br /><img src="https://www.dreamwidth.org/tools/commentcount?user=nataraj&ditemid=992927" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/> commentstag:dreamwidth.org,2011-04-07:750757:992328perl redo: Век живы, век учись2022-07-03T19:34:27Z2022-07-03T19:38:26Zpublic6Читая книжку по внутренностям perl'а открыл для себя оператор `redo` который позволяет повторить выполнение блока кода. В случае если этот блок -- тело цикла, то цикл на следующую итерацию при этом не переходит:<br /><br /><pre>
my $i=0;
foreach (1,2,3)
{
print $_,"\n";
$i++;
redo if $i<2;
}
</pre><br />печатает <br /><pre>
1
1
2
3
</pre><br /><br />PS так, постойте... В DW был же маркдаун... Куда делася? Не вижу как включить...<br /><br /><img src="https://www.dreamwidth.org/tools/commentcount?user=nataraj&ditemid=992328" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/> commentstag:dreamwidth.org,2011-04-07:750757:992240Как я со всем этим справляюсь2022-03-02T08:42:42Z2022-03-03T14:33:43Zpublic2"Хуже катастрофы, может быть только паника вызванная катастрофой" (с) псевдоцитата...<br /><br />Так вот, что мне помогает не сойти с ума и не впасть в панику.<br /><br />1. Маятники. (в общем случае центрирующая техника)<br /><br />2. Медитация на высший порядок. (Слово дхарма имеет много смыслов. Одно из них порядок или закон, в том числе и высший. Если установить контакт с источником этой дхармы, многое становиться легче. Этакое структурирование сверху)<br /><br />3. Найти то что действительно реально ценно. Любимая женщина, дети, родители. То ради чего следует быть в адеквате, и ориентируясь именно на эти ценности делать все остальное. Именно личные ценности, не глобальные.<br /><br />Это то что позволило стабилизороваться. Но далее что с этой стабильностью делать, при этом так чтобы ее не растратить:<br /><br />4. Изолиовал себя от чужой паники. Во вконтакте есть кнопка не "показывать неделю". Очень рекомендую применять ко всем высказываниям по теме, вне зависимости от того в какую строну вас это высказывание триггерит. В случае личного общения разговоры об ЭТОМ либо просить свернуть, либо прерывать вообще всю коммуникацию, если люди не говорить об этом не способны.<br /><br />5. Занялся решением практических вопросов которые могут возникнуть в новой надвигающейся реальности. Без паники. В моем случае это оказалось сделать полный бэкап виртуальных серверов которые у меня в германии, и еще купил БУшный сервер для работы тут (благо это было и так запланировано). Что могу — делаю. Что не могу — на то воля аллаха...<br /><br />6. Помню, что я не могу ничего поменять. Все что происходит, уже на самом деле произошло, надо просто дождаться пока эта информация до меня доедет. Понимаю, что я не могу помочь всем. Поэтому только близким. Остальные успокоительные слова по остаточному принципу. Но что я точно не делаю, не гружу других своей паникой.<br /><br />И вообще берегите силы нервы и здоровье. Катаклизмы рано или поздно заканчиваются и силы после них понадобятся очень сильно. Не сливайте их сейчас попусту...<br /><br /><a href="https://blog.nataraj.ru/~/GeneralPurposeBlog/Как%20я%20со%20всем%20этим%20">https://blog.nataraj.ru/~/GeneralPurposeBlog/Как%20я%20со%20всем%20этим%20</a>справляюсь<br /><br /><img src="https://www.dreamwidth.org/tools/commentcount?user=nataraj&ditemid=992240" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/> commentstag:dreamwidth.org,2011-04-07:750757:991834Правила безопасности при работе с большими системами2022-03-02T08:34:58Z2022-03-02T08:45:44Zpublic0Написано во воконтакте 25 февраля сего года<br /><br />Если большая система пришла в движение, единственное что можно сделать, это не стоять у нее на пути. Это самая оптимальная стратегия.<br /><br />Не пытаться остановить и не пытаться влиться. Попытка присоединиться к движухе дает очень мощные переживания от сопричастности, но по сути ничего не меняет, силы пришедшие в движение на много порядков больше чем отдельный человек, а приложить штормовой волной о волнорез может запросто…<br /><br />Поэтому если вы не на службе у одной из систем, самое лучшее что можно сделать, это отойти в сторону и позаботиться в первую очередь о себе, о своем здоровье и рассудке, при возможности об окружающих.<br /><br />“Все побежали и я побежал”, наихудшая стратегия. Когда отношения выясняют боги, человеку лучше сидеть в укрытии…<br /><br />Буря рано или поздно утихнет и понадобиться много времени и сил чтобы восстановить разрушения, и заново выстраивать жизнь на земном человеческом уровне. Берегите силы, себя и окружающих.<br /><br /><a href="https://blog.nataraj.ru/~/GeneralPurposeBlog/Правила%20безопасности%20при%20работе%20с%20большими%20">https://blog.nataraj.ru/~/GeneralPurposeBlog/Правила%20безопасности%20при%20работе%20с%20большими%20</a>системами<br /><br /><img src="https://www.dreamwidth.org/tools/commentcount?user=nataraj&ditemid=991834" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/> commentstag:dreamwidth.org,2011-04-07:750757:991646Как написать мне сообщение в Matrix2022-02-27T17:15:01Z2022-02-27T20:03:09Zpublic1У меня уже достаточно давно была инструкция, следуя который пользователь со средней подготовкой мог бы подключиться к матриксу и найти меня. Инструкция была во Вконтакте, так как именно там обитает большенство интересных мне пользователей со средней подготовкой. Поэтому упомянать ее в каких либо приличных местах было стыдно. <br /><br />Теперь я эту инструкцию обновил, добавив недостающих скриншотов, и скоировал в место более подобающее: <br /><br /><a href="https://blog.nataraj.ru/~/It/Как%20написать%20мне%20сообщение%20в%20Matrix">https://blog.nataraj.ru/~/It/Как%20написать%20мне%20сообщение%20в%20Matrix</a><br /><br />По ходу дела отмечу, что ходовые испытания показали, что мало-компьютерные люди вполе осваивают Element, и уверенно им пользуются. Так же в нем в боевом режиме живут чаты разных сообществ, в виде вполне годным к использованию. При не очень великих усилиях в Matrix можно импортировать IRC и прочие чаты. (Да, IRC жив и отдельных местах процеветает).<br /><br />Кроме того, некоторое время внезапно проверил Matrix на надежность: перегрузил виртуалку дополнительной нагрузкой настолько что сервер матрикса перестал справляться с потоком входящих сообщений. Сообразил я что происходит примерно через пол дня, и для решения проблемы купил на хостинге еще процессора. Какое-то время оно интенсивно перемаловало все то, что ждало очереди на push. И все сообщения, которые мне отправляли люди -- дошли. Что меня несказанно порадовало...<br /><br /><br />Посему призываю всех кто понимает зачем нужны децентрализованные системы как минимум попробовать, получить личное впечатление.<br /><br /><img src="https://www.dreamwidth.org/tools/commentcount?user=nataraj&ditemid=991646" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/> commentstag:dreamwidth.org,2011-04-07:750757:991400Использование MIDI совместно с PulseAudio2022-02-19T16:50:12Z2022-02-19T16:50:40Zpublic3Попытался заняться сольфеджио, благо поступило предложение об обучении от которого невозможно отказаться.<br /><br />Для занятий стал подключать к ноутбуку оказавшуюся под рукой MIDI клавиатуру. Долго разбирался. Особенно с учетом того, что большинство примеров в сети либо про Jack либо про ALSA, а мне менять PulseAudio на что-то еще, совершенно не уперлось. Хочется так, чтобы воткнул – и заработало. Разобрался. Узнал много нового. Вынес мозг народу в рассылке опенсорсного MIDI-синтезатора.<br /><br />В результате, чтобы труд не пропал зря, да и тупо чтобы не забыть написал статью в Debian Wiki: <a href="https://wiki.debian.org/PulseAudioMidi">https://wiki.debian.org/PulseAudioMidi</a> и еще подредактировал Wiki FluidSynth: <a href="https://github.com/FluidSynth/fluidsynth/wiki/ExampleCommandLines">https://github.com/FluidSynth/fluidsynth/wiki/ExampleCommandLines</a> потому как рабочего примера для работы с драйвером ASLA напрямую не сыскать.<br /><br />Оригинал: <a href="https://blog.nataraj.ru/~/It/Использование%20MIDI%20совместно%20с%20PulseAudio">https://blog.nataraj.ru/~/It/Использование%20MIDI%20совместно%20с%20PulseAudio</a><br /><br /><img src="https://www.dreamwidth.org/tools/commentcount?user=nataraj&ditemid=991400" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/> commentstag:dreamwidth.org,2011-04-07:750757:991085Structure Aware Fuzzing: синтаксическое дерево2021-09-14T21:10:53Z2021-09-14T21:15:14Zpublic0Краткое содержание предыдущих серий:<br /><br />Fuzzing -- метод тестирования когда в программу на вход подаются случайные данные.<br /><br />Structure Aware Fuzzing -- данные остаются все так же случайные, но все-таки синтаксически или структурно верные. Нужно чтобы проникнуть глубже синтаксического анализатора.<br /><br />LibBlobStamper -- библиотека которую я пишу, которая позволяет на основании псевдо случайных данных выдаваемых фаззером, воспроизводимо генерировать синтаксически корректные данные. <a href="https://github.com/postgrespro/libblobstamper">https://github.com/postgrespro/libblobstamper</a><br /><br />Вот сегодня у меня новое достижение. Я таки сумел сгенерировать данные под парсер синтаксических деревьев:<br /><br /><a name="cutid1"></a><br /><pre>
((((231 + 108) ^ ((39 - 156) ^ (((116 * 109) - (100 ^ (47 + 78))) / (206 / 166)))) ^ ((((253 - 125) + (171 * 215)) + (183 - (((162 / 178) - 23) - (199 + 10)))) - (192 * 61))) + (((((1 / 161) ^ 167) / (189 / 52)) * ((178 + 110) / ((((225 / 16) * 237) - 95) - 28))) * (((84 - 88) * (226 + 29)) - 180)))
</pre><br /><br />Там все пока что еще максимально сыро, много что прибито гвоздями и даже в основной код не затащено t/320-galley-recursion-experiments.cpp. Но работает, блин!<br /><br /><img src="https://www.dreamwidth.org/tools/commentcount?user=nataraj&ditemid=991085" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/> commentstag:dreamwidth.org,2011-04-07:750757:990959nataraj @ 2021-09-01T11:49:002021-09-01T08:49:45Z2021-09-01T08:49:45Zpublic4Вот скажите, "день знания" и "день знаний" это одно и то же или это все-таки разные вещи?<br /><br /><img src="https://www.dreamwidth.org/tools/commentcount?user=nataraj&ditemid=990959" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/> commentstag:dreamwidth.org,2011-04-07:750757:990465mediawiki: блокирование спамовых IP-адресов на уровне веб-сервера nginx2021-06-21T07:24:06Z2021-06-21T07:24:06Zpublic2Опубликовал еще один сервисный скрипт для медиавики:<br /><br /><a href="https://gitlab.com/dhyannataraj/scriptorium/-/tree/master/web/mediawiki/ban_spam_ip">https://gitlab.com/dhyannataraj/scriptorium/-/tree/master/web/mediawiki/ban_spam_ip</a><br /><br />Скрипт получает список IP адресов с сервиса www.stopforumspam.com, преобразует его в формат пригодный для nginx'ного плагина geo, после чего можно на уровне конфига nginx принимать решене о том как поступать с пользователями пришедшими с этих адресов: блокировать, перенапраяь на read-only версию сайта и т.п.<br /><br />Более подробно смотри README.md<br /><br /><img src="https://www.dreamwidth.org/tools/commentcount?user=nataraj&ditemid=990465" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/> commentstag:dreamwidth.org,2011-04-07:750757:990294mediawiki: дайждест правок и удаление пустых пользователей2021-06-18T07:33:06Z2021-06-18T07:34:19Zpublic2Опубликовал скрипт который умеет для истанса mediawiki во-первых присылать дайджест новых изменений со времени последнего запуска, а во-вторых удалять пользователей которые были созданы, но не создали ни одной правки (частый случай для спам-ботов единожды прорвавшихся сквозь каптчу).<br /><br /><a href="https://gitlab.com/dhyannataraj/scriptorium/-/tree/master/web/mediawiki/changes_notifier">https://gitlab.com/dhyannataraj/scriptorium/-/tree/master/web/mediawiki/changes_notifier</a><br /><br />Запуск скрипта надо прописать в /etc/crontab с правильно настроенным MAILTO<br /><br /><img src="https://www.dreamwidth.org/tools/commentcount?user=nataraj&ditemid=990294" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/> commentstag:dreamwidth.org,2011-04-07:750757:990194Рабочие заметки тестера по-жизни2021-05-02T20:05:12Z2021-05-02T20:05:12Zpublic0Решил я инициализировать std::vector<std::string> массивом из без малого 40000 слов. Ну захотелось так...<br />Собираться все это безобразие g++-8 решило аж полторы минуты, или clang-11 за 40 секунд.</std::string><br /><br /><img src="https://www.dreamwidth.org/tools/commentcount?user=nataraj&ditemid=990194" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/> commentstag:dreamwidth.org,2011-04-07:750757:989846nataraj @ 2021-04-11T11:24:002021-04-11T08:24:26Z2021-04-11T08:24:26Zpublic7А что если, йоги отсекающие все привязанности и уходящие в радужный свет, на самом деле не просветлевают, а просто попадают под раздачу вселенского сборщика мусора -- части программы эмуляции вселенной которая занимается удалением нигде не используемых объектов?<br /><br /><img src="https://www.dreamwidth.org/tools/commentcount?user=nataraj&ditemid=989846" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/> commentstag:dreamwidth.org,2011-04-07:750757:989660Чипирование прирожденного тестировщика2021-02-22T12:25:26Z2021-02-22T12:25:26Zpublic2Анекдот вместо эпиграфа: В недалеком будущем ученые решили путем манипуляций с геномом создать человека максимально подходящего для работы тестировщиком. Проект с треском провалился: каждый будущий тестировщик нашел по критической уязвимости еще находясь в утобе матери, и через это так и не появился на свет.<br /><br />Сама история.<br /><br />Сразу после нового года я поехал в Москву. Сначала взял билеты. Потом выяснилось что еду на похороны Ку. Но это не важно, потому что сижу я значит в гостях у П.Л. а у него в свою очередь в гостях С.ГЩ. свеже сделавший первую прививку от Ковид. Я спрашиваю, а че, типа можно было. Мне говорят, что да можно. Что официально типа только определенным группам, но на самом деле никто ничего не проверяет, желающих не так много, поэтому делают всем. Далее пришли к выводу, что мне и врать не надо, я с детьми работаю. И так слово за слово, записался на первую прививку на послезавтра, прямо в родной поликлинике. Свободных времен там оказалось более чем. После нового года не все готовы вот так за здорово живешь не пить.<br /><br />Прихожу, ко времени, делаю прививку, и тут меня начинают записывать на вторую. Это для меня не было сюрпризом, я знал что нужна вторая. Но вот как этот вопрос решать, я на тот момент еще не решил. То-ли спецом в Москву ехать, то-ли как-то в Питере это уже решать. И я, а у меня есть такая стратегия "всегда поступай правильно" как честный ёжик говорю, что не надо меня записывать, я не знаю буду ли я в этот день в Москве. Давайте я сначала выясню когда я буду, а потом запишусь на вторую. Хорошо, говорит тетя-доктор, тогда я запись удаляю.<br /><br />И это, друзья мои, была роковая ошибка.<br /><br />Приехав в Питер я достаточно быстро выяснил, что со второй в Питере ловить совершенно нечего и звоню в свою 107ю поликлинику чтобы записаться. В поликлинике стоит автоответчик, мол звоните 122. Я звоню в 122, мне отвечает Питерская 122. Про Москосвую они ничего не знают. Дают какой-то прямой номер, но явно не туда. По телефону для записи на прививку могут записать на первую. На вторую не могут. Ни на кого кто более старший переключить не могут тоже. Попросил родственников позвонить на 122 в Москве, и либо записать меня либо выяснить хотя бы прямой номер этого 122. Прямой номер не дают, записывать отказываются, шлют напрямую в поликлинику. В поликлинику сходить некому. На районе никого нет.<br /><br />Короче я упорный. Я по кругу обзвонил все телефоны начиная с 777 7777 и заканчивая не знаю уже чем. Нигде ничего не знают, никуда переключить не могут. На Московское 122 не из Москвы позвонить невозможно похоже в принципе.<br /><br />Оставил жалобу на mos.ru и по-моему на 777-7777. Не помогло.<br /><br />Плюнул. Записался еще раз на первую на 28е. С надеждой или на месте разобраться, или если они уж такие идиоты, то пройти этот сценарий с начала. Вторая первая доза повредить не должна. (Мне женщина Ю. подробно рассказала как эту вакцину делают и как она работает, поэтому я какие-то общие вещи примерно представляю).<br /><br />И тут в новостях появляется новость, что открылась всеобщая запись на ГосУслугах. О, думаю я, а не попробовать ли там.<br />Записаться там не получается. При этом даже на этапе ввода данных полиса (он у меня старый). На мос.ру с полисом проблем не было.<br />Но там была еще замечательная кнопочка пожаловаться. И я пожаловался еще и туда.<br /><br />И тут мне стали звонить. Сначала с ГосУслуг. Я им еще раз пересказал эту историю. Потом из 107й поликлиники. Я еще раз пересказал всю историю, мне пообещали разузнать как это решить и перезвонить. Перезвонили. Записали.<br /><br />Я приехал и укололся второй раз.<br /><br />После второго надо сказать была серьезная температура 38+ ночью. Сбивал парацетамолом. Потом вроде ничего. После первой организм пару дней радовал серьезной слабостью, и может быть какими-нибудь 37ю которые я не мерил.<br /><br />Еще спустя какое-то время мне пришел ответ на мою жалобу, сначала сказали, "да мы видим что вы привились и рады, а вопрос со звонками на 122 из других городов -- решаем". потом прислали бумажку в которой сообщали что приделали к московскому 122 федеральный alias. И типа еще работают над тем, чтобы добавить информацию об этом alias'е везде где следует...<br /><br />Вот... Жалуйтесь на гос-услугах, когда есть такая возможность...<br /><br /><img src="https://www.dreamwidth.org/tools/commentcount?user=nataraj&ditemid=989660" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/> commentstag:dreamwidth.org,2011-04-07:750757:989139Фантомный митинг2021-02-06T11:38:57Z2021-02-06T11:38:57Zpublic0Ехал сегодня в метро, везде объявляют что выходы со станции Невский проспект закрыты для обеспечения безопасноти пассажиров.<br /><br />Странно думаю я. Вроде сегодня все должно быть тихо...<br /><br />Доехал до дома, выясняется, что протестующие как собирались никуда выходить, так никуда и не вышли, а вот миллиция все равно все перекрыла. Создав таким образом фантомный митинг. Митинга нету, а все вокруг ведут себя так, как будто-бы есть...<br /><br />Так что даже вообще никому никуда ходить не надо, полиция все сделает за нас.<br /><br /><img src="https://www.dreamwidth.org/tools/commentcount?user=nataraj&ditemid=989139" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/> commentstag:dreamwidth.org,2011-04-07:750757:988684Здравствуй снова FireFox2021-01-30T07:42:19Z2021-01-30T08:15:58Zpublic0В январе героически переполз с Хромиума на FireFox.<br /><br />Самым забавным в этой истории было то, что лет, наверное почти 10 назад, я переполз на Хромиум из-за того что только под ним было расширение uMatrix (тогда оно как-то по-другому называлось) позволяющее задавать per-site правила блокировки сторонних скриптов. Сущевтующий тогда для FireFix NoScript меня совсем не устраивал. Разрешив скрипты от яндекса для рабоы яндекс-карт, ты в резульате разрешал их везде.<br />Так вот сейчас Гугл собирается (и кажется уже сделал) выпилить API которое это uMatrix использует. До дебиана это еще когда доберется, но переползать надо заранее...<br /><br />Дополнительные аргументы в сторону нафиг были такими:<br /><br />- Мне изредка бывает надо скачать видео с ю-туба, и я помню что это делалось в том числе посредством расширений. Был удивлен не найдя ни одного котороме может ютуб. В процессе разбирательств выяснилось, что расширения скачивающие с ютуба запрещены правилами магазина расширений. А там было нужно именно расширение, не помню уж почему, остальные средства не пробивались через подверждение того что мне есть 18 лет или что-то подобное. В результате решил через фаерфоксовское расширение. Но затаил. Оченль сильно затаил.<br /><br />- Веб клиент от matrix.org, зараза, крайне жручий. И вот сколько я этот matrix наблюдаю, столько новые клиенты крешат старые хромиумы. Только дельта релизов расползается, сразу хром начинает падать. Чего-то не выдерживает. А стоящий у меня на сервере старый веб-клиент, который мой хромиум таки держит, не умеет кой-какие новые серверные фичи которые по умолчанию включает новый клиент абонента, в результате нормально общаться становиться невозможно. Это стало последней соломинкой...<br /><br />В результате пару недель уже как переполз. Испытываю некоторые неудобства от разницы эргономик. Какие-то привычные вещи не работают или работают не так. Но думаю, ничего, привыкну...<br /><br /><img src="https://www.dreamwidth.org/tools/commentcount?user=nataraj&ditemid=988684" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/> comments