Alinsky.tech
129 subscribers
86 photos
23 videos
21 links
Personal blog of a random Engineer
GitHub: github.com/SKY-ALIN
Website: Alinsky.tech
Me: @sky_alin
Download Telegram
Как уехать из рф и начать путешествовать. Инструкция.

1. Пишите ряд агитационных постов против войны.

2. На вас в ответ пишут несколько профессиональных рекомендаций [доносов] ваши знакомые.

3. После вас приглашают на собеседование [допрос] в тур-фирму [мвд].

4. В офис тур-фирмы [мвд] вы не идете, а идёте шествием (желательно через кремль) с плакатом, что путин - хуйло (нужно показать особую заинтересованность в туристической путевке).

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

6. В пред-туристической поездке вас закаляют [бьют], составляют путевку уже в полноценный тур [пишут протокол] и отпускают до дня X [суда]. Если повезло и у организации остаётся бюджет, то ещё могут ненадолго отправить в санаторий [спецприемник].

7. В день X [суда] вы едете в аэропорт и улетаете без плана куда глаза глядят: Турция, Индонезия, Малайзия, Тайланд, Дубай и т д.

8. Done! Наконец-то вы настоящий путешественник! Теперь вы вынуждены путешествовать! По крайней мере до получения внж где-нибудь. Удачи!

P.S. в квадратных скобочках написаны термины как это обычно называют душнилы с которыми придется взаимодействовать.
👍9❤2👏2🤔2💩2🤡1
Ещё пол-года назад я опубликовал свой open source фреймворк regta для создания регулярных задач aka. Cron оптимизированный специально для python с рядом нововведений, но я вообще никак не стал заявлять о его создании. Дело в том, что я считал, что он не достаточно хорош, т к в нём все еще не было важного преимущества, которое я задумывал. Эта особенность оказалась столь нова и необычна, что я даже решил вынести её в отдельный программный пакет. Об этом пакете сейчас и пойдёт речь.

Представьте, что у вас есть контейнер с шедулером и настроенный ci. И, допустим, у вас есть задача, которая выполняется раз в 12 ч. Ну, например, отправка уведомлений. Вот проходит 11 ч и выполнение должно произойти через 1 ч, но вдруг разработчик вносит в код задачи изменения: он делает коммит и контейнер с шедулером редеплоится согласно ci. Теперь счётчик у нашей задачи сбросился и отсчет 12 ч начался сначала. Мы получили серьёзное смещение. Теперь интервал составит 23 ч вместо 12, и ошибка продолжит накапливаться с каждым редеплоем или рестартом сервера. А все может быть ещё серьёзнее. Что если у задачи есть первичный запуск перед стартом счётчика? Ну, как в cron. Тогда мы, наоборот, получим очень короткий интервал, что ещё хуже. Как же решить такую проблему?

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

Предложенная мною идея заключается в вычислении моментов срабатывания, отталкиваясь от общей для всех статической временной отметки: начало эпохи Unix. Unix - одна из первых операционных систем из которой уже произрастают все современные, этакий титан-прародитель. Все ОС унаследовавшие ее принципы называют Unix-подобными, а момент запуска называют началом эпохи Unix. Полночь 1 января 1970 г по UTC - это отметка, которая вшита в каждый компьютер на земле, в каждый чип, способный отсчитывать дату и время. Это единая точка отсчета времени для всех машин, независимо от того, когда они были созданы и в каком часовом поясе находятся. За нее я и предлагаю зацепиться при расчете периодичности.

Фактически, если отбросить всю несильно сложную математику, описанную в доке для поддержки временных окон, часовых зон, точного времени и т д, то подход сводится к поиску остатка от деления времени со старта эпохи Unix на регулярный период. Пропуская текущую отметку времени через такую функцию, мы всегда будем получать смещение до ближайшего времени срабатывания, независимо от текущего момента, что позволяет избавиться от задачи хранения состояний. Такой подход я называю Моменто-независимыми периодами. Модуль regta-period реализует предложенный подход, уже опубликован и будет вшит во фреймворк regta по умолчанию со следующей его версии. Тогда я уже и опубликую его гордый обзор! #tech

Дока: regta-period.Alinsky.tech
Репа: github.com/SKY-ALIN/regta-period
👏5❤2👍2
Забавная особенность - в этот модуль я заложил 2 способа инициализации: хипстерский и олдскульный. Какой вам нравится больше?:) #tech
🔥8❤2👍1
С 0x100'ым днём года!👩🏻‍💻
🎉5❤1
👍4🤣4👎1🤡1
Краткий обзор Нобелевской премии 2022

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

=== ⚛️ Physics ⚛️ ===
— За эксперименты с запутанными фотонами, установившие нарушение неравенств Белла и положившие начало науке о квантовой информации.

* Ален Аспект 🇫🇷
Известен за "Эксперимент Аспекта". Наиболее цитируемая публикация: pdf

* Джон Клаузер 🇺🇸
Известен за "Неравенство Клаузера-Хорна-Шимони-Холта (CHSH)". Наиболее цитируемая публикация: pdf

* Антон Цайлингер 🇦🇹
Наиболее известен за эксперимент с квантовой телепортацией: pdf

=== 🧪 Chemistry 🧪 ===
—За развитие клик-химии и биоортогональной химии.

* Кэролайн Бертоцци 🇺🇸 (twitter)
Известна за создание "Биоортогональной химии". Наиболее цитируемая публикация: pdf

* Мортен Мелдал 🇩🇰 (linkedin)
Известен за открытие "CuAAC клик реакции". Наиболее цитируемая публикация: pdf

* Барри Шарплесс 🇺🇸
Это для дядечки уже вторая нобелевка, первую он получил в 2001. Известен за создание "Клик химии". Публикация, в которой он впервые вводит соответствующий термин: link

=== ⚕️ Physiology / Medicine ⚕️ ===
—За открытия, относящиеся к геномам вымерших гоминин и эволюции человека.

* Сванте Паабо 🇸🇪
Самая цитируемая публикация: pdf

=== ✒️ Literature 🖋️ ===
—За смелость и клиническую остроту, с которой она раскрывает корни, отчужденность и коллективные ограничения личной памяти.

* Анни Эрно 🇫🇷
Самая известная книга - "Событие", она про историю об аборте, во времена, когда это было незаконно во Франции. Слова писательницы: "Возможно, именно в этом истинный смысл моей жизни: чтобы мое тело, мои чувства и мои мысли стали текстом, то есть чем-то понятным и общим; чтобы мое существование полностью растворилось в головах и судьбах других".

=== 🙏🏻 Peace 🙏🏻 ===
—Лауреаты Премии Мира представляют гражданское общество в своих странах. На протяжении многих лет они отстаивали право критиковать власть и защищать основные права граждан. Они приложили выдающиеся усилия для документирования военных преступлений, нарушений прав человека и злоупотребления властью. Вместе они демонстрируют значение гражданского общества для мира и демократии.

* Алесь Беляцкий 🇧🇾
Правозащитник, борец с режимом лукашенко и основатель правозащитной организации @vesna_democrat . Он около 40 лет боролся за демократию в Беларуси, но сейчас он находится в СИЗО и связи с ним нет.

* Мемориал 🇷🇺 (twitter, instagram, vk)
Мемориал - это объединение около десятка организаций на постсоветском пространстве главной целью которого было обличение репрессий в СССР, борьба против тоталитаризма и просвещение гражданского общества. Мемориал существовал с 1987 г, но с начала войны организация была почти полностью разгромлена.

* Центр Гражданских Свобод 🇺🇦 (twitter)
Правозащитная организация борющаяся за становление демократии в Украине с 2007 г. Наиболее известна за помощь протестующим евромайдана и документирование убийств протестующих снайперами в 2014. Ныне организация в основном занимается фиксацией военных преступлений, психологической помощью и поиском пропавших из-за войны.

=== 📉 Economics 📈 ===
—За исследования в области банков и финансовых кризисов.

* Бен Бернанке 🇺🇸
Сделал большой вклад в менеджмент экономики США. Наиболее цитируемая публикация: pdf

* Дуглас Даймонд 🇺🇸 & Филип Дибвиг 🇺🇸
Известны за создание "Модели Даймонда – Дибвига". Наиболее цитируемая парная публикация: pdf

---
Приятного чтива ❤️
❤7🤓1
На этой неделе зарелизили Python 3.11! Самое важное, что произошло - это значительное ускорение, вплоть до 160% от 3.10 на определенных бенчмарках! 🎉 #dev
🔥6👍1🎉1
Типизация опциональности в питоне.

Этот спор древен примерно также как и вопрос: -табы или пробелы? Однажды из-за этого я умудрился даже с коллегами поругаться, поэтому давайте разберёмся из-за чего бывают конфликты у задротов 🤔

Суть в следующем: допустим у нас есть произвольный тип T, но мы хотим задать такой тайпхинт, чтобы иметь возможность оставить переменную с типом Т неопределенной. Как мы это сделаем?

Существует 3 решения:

a: T = None
b: Optional[T] = None
c: Union[T, None] = None


Далее подробнее про каждый из вариантов.

Вариант A:
Самый простой и некоторые линтеры вполне корректно его обработают, подменив на вариант B, но заточенные на типизацию вроде mypy и pyright дадут вам смачного леща, потому что ну а какого хрена вы присвоили неверный тип, а??

Вариант B:
Самый распространенный вариант и куда лучше чем A, но идейно неверный. Представьте следующее выражение:
def f(b: Optional[T]): pass
На уровне логики аргумент b является опциональным, но в то же время, если мы его не передадим в функцию, то программа упадет с ошибкой, т к фактически на уровне кода b является обязательным. Какая-то суперпозиция получается 🤔 Дело в том, что на самом деле понятия опционального аргумента и аргумента, способного принимать None - это совершенно разные и не связанные понятия, которые ошибочно были склеины в классе Optional. В помойку его!

Вариант C:
Фактически это аналог записи вида c: T | None появившейся с версии 3.10, но если вы используете версию младше или пишете обратносовместимый код, то это тот самый вариант, который верен и на уровне логики и на уровне кода. Его я и считаю правильным использовать.

Давайте рассмотрим способы возможного применения последнего варианта в разрезе опциональности. Допустим у нас есть класс пользователя:

class User:
    id: int
    name: Union[str, None]
    last_name: Union[str, None] = None


Из записи атрибутов следует следующая логика:
* id - атрибут типа int, который должен быть обязательно указан.
* name - атрибут, который может быть как str, так и None, но должен быть обязательно указан.
* last_name - атрибут, который может быть как str, так и None, но является опциональным т к он уже имеет дефолтное значение.

Хинт: для того чтоб быстро зарефачить проект с варианта B на вариант C можно воспользоваться утилитой no-optional.

Установка:
pip install no-optional

Рефакторинг одного файла:
no_optional <filename>

А следующей командой можно отредактировать весь проект целиком:
find <project_folder> -iname "*.py" | xargs python -m no_optional

#dev
👍6🔥2❤1
Знаете, у Казахстана просто огромный потенциал. Казахстан - страна будущего. Да и вообще, быть может я в душе казах? Короче, я уезжаю жить в Казахстан!
🤩6👍5🤔1
Все мои коллеги: Стараются быть максимально серьезными и профессиональными.

Я: Высокопоставленные аниме ножки живущие в землянке под мухомором.
🤣3
Вот бы подготовил меня кто в детстве к тому, что выгорать я буду вовсе не от кучи работы или сложных проектов, а от ебучих новостей. Извините, господа, что редко пишу. Однажды, как у меня станет меньше головной боли, то я буду писать интересные вещи порегулярнее ❤️
❤20👍1🙏1
Чат гпт - это просто что то невероятное.

Те кто юзали ее для достижения конкретных задач, а не в виде эксперимента, расскажите в комментариях как вам удалось применить ее на практике
Причина по которой нужно проверять произношение в других языках :)
😁4🤣3
В Казахстане с 27 января ужесточают миграционную политику.

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

Теперь же в Казахстане можно прибывать только 90 дней раз в 180 дней, что делает его неподходящим вариантом для долговременного прибывания, но лишь на первый взгляд.

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

В Казахстане есть так называемое РВП - разрешение на временное проживание. Этот документ не так крут как ВНЖ, но его невероятно просто и быстро можно получить. Самое главное что даёт РВП - это возможность прибывать в Казахстане в течении года + возможность продлевать его бесчисленное количество раз. Проще всего его получить устроившись на работу фиктивно. Для этого есть 2 варианта:

1. Открыть ИП и оформить самого себя как сотрудника в этом ИП.

2. Устроиться в чужую компанию существующую только на бумаге.

Для того чтобы это провернуть вам не нужно знать юридические особенности и париться с документами, тут очень распространена услуга оформления всего этого под ключ, стоит лишь немного погуглить;)

Средняя цена вопроса по схеме 1 - примерно 150к тенге (22к рублей).
Средняя цена вопроса по схеме 2 - примерно 250к тенге (37к рублей).

Просто введите в гугле "Купить РВП в Казахстане" и изучите несколько первых ссылок.

Также стоит сказать, что если у вас нет удаленной работы и вы бы действительно хотели тут работать face-to-face, то вам поможет получить такой документ ваш работодатель.

Поделитесь этой информацией с вашими знакомыми, которые уехали в Казахстан и не знают что им сейчас делать 🙏🏻 #relocation
🕊5❤1
Недавно наткнулся на годный набор видео с прикольными визуализациями о хороших практиках в программировании, которые часто игнорируют даже опытные разрабы. Видео на английском, но если вдруг что, то там есть субтитры. Вот этот набор:

* Правильное использование абстракций

* Минусы наследования

* Вложенность - жопа

* Хороший нейминг

* Комменты - в мусор

Вообще все эти видео с одного канала и я надеюсь парниша не забросит его. #dev
👍5❤2🔥1
[1/4] Долгожданный (в любом случае лично для меня) пост про фреймворк Regta. Вчера я опубликовал финализирующий релиз этой технологии и это её обзор.

Regta - это программный планировщик задач, оптимизированый специально для Python и спроектированный непосредственно для использования в продакшене. Кстати, во многом благодаря нему топ постов в меню в закрепе регулярно обновляется. Давайте начнем с бенефитов, которые он дает.

1. Поддержка асинхронности, многопоточности и многопроцессности. Это позволяет более эффективно использовать ресурсы сервера. В случае, например, с такими планировщиками как Cron, сервер очень быстро просядет в связи с тем, что Cron запускает каждую задачу в отдельном дорогостоящем процессе, в то время как Regta дает возможность запустить легковесную корутину или поток под задачу.

2. Regta учитывает время, затраченное на выполнение задач и потерянное при перезагрузке сервера без внешних систем и хранения кеша, что позволяет всегда иметь миллисекундную точность при выполнении задач. Если задача должна быть выполнена в 21:00 по Москве, значит она будет выполнена ровно в 21:00 по Москве что бы не произошло. Ну, если не отрубить питание, конечно, но вот перебои обработает корректно.

3. Секси ANSI подсветка. Если у современной консольной утилиты нет читабельной подсветки логов, то она не может считаться современной 🏳️‍🌈 

На этом пока остановлюсь чтоб не сильно затягивать пост. Про остальные бенефиты вроде локализации, логирования и мультипарадигменности можно прочитать в доке regta.alinsky.tech #tech
🎉4❤3
Alinsky.tech
Забавная особенность - в этот модуль я заложил 2 способа инициализации: хипстерский и олдскульный. Какой вам нравится больше?:) #tech
[2/4] Далее кратко на практике. Давайте напишем максимально простую задачу, которая будет просто писать в лог сообщение раз в 3 минуты. Пример кода для этого можно посмотреть на картинке. Достаточно всего-то импортировать декоратор async_job и указать интервал в формате Period, о котором я уже писал в отдельном посте, или просто в timedelta #tech
👏2👍1
[3/4] Для запуска же достаточно просто ввести команду regta run #tech
🤩2👍1
[4/4] А вот сравнение возможностей Regta с популярными альтернативами. По почти всем показателям она выигрывает среди аналогов. Полную статью со сравнением можно прочитать по ссылке regta.alinsky.tech/alternatives

Резюмируя сравнение, если перед вами стоит задача регулярного выполнения задач на Python в целях внутренней автоматизации, то Regta будет для вас наилучшим вариантом. Если же вам нужно выполнять миллионы задач с динамическим расписанием, например, рассылать отложенные сообщения как в телеге, то используйте для этого Celery, во всех же остальных случаях можно смело дрочить на Regta. #tech

Звездочки можно ставить туда github.com/SKY-ALIN/regta ⭐ 🙃
🤩6🔥1🤔1🫡1