dev optozorax
4.25K subscribers
346 photos
53 videos
10 files
275 links
По деловым предложениям: optozorax.work@gmail.com.

Связь с админом через личку канала (кнопка в канале слева снизу).

Ютуб: https://www.youtube.com/@optozorax

Сайт: optozorax.github.io
Download Telegram
Ну и наконец обзорная статья про Zola, генератор статических сайтов, на который я переехал, и который вдохновил меня на все эти новые фичи и оптимизации.

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

https://optozorax.github.io/p/zola/

#блог #обзор #zola
dev optozorax pinned «Поддержать моё творчество: https://boosty.to/optozorax (отключил)»
У меня есть программа под названием fopply. Суть её в том чтобы пошагово производить аналитические алгебраические вычисления наподобие: раскрыть скобки, сложить подобные, применить формулу синуса двойного угла, рассчитать производную итд.

Раньше я её разрабатывал и писал девлог в этот канал. Дошёл до того что смог сделать собственный синтаксис аксиом и выводов формул, доказательство вывода формул и проверку этого доказательства! А далее это уже можно применить для автоматизации рутинных аналитических вычислениай.

Сейчас я собрал все эти сообщения в одну статью. Так что если вас заинтересовала идея — можете чекнуть как она выглядит.

23 минуты чтения.

https://optozorax.github.io/p/fopply/
Скачивание веб-страниц в один HTML файл. #решения

Нашёл такое расширение для браузера. Стили, скрипты, шрифты, картинки, видео тупо инлайнятся в html через data:image + base64 или напрямую через <style>, <script>. Теперь можно перестать делать скриншоты всей страницы или скачивать её в pdf. Так же это расширение позволяет скачивать только выделенную часть страницы.

Расширение: https://github.com/gildas-lormeau/SingleFile (там нормальное описание и ссылка на версию для каждого браузера).

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

Я проверил на своей последней статье, работает отлично, в комментах приложу html файл, он работает даже на телефоне.

Вдохновлено https://xn--r1a.website/bpblog/1219
Хочу поделиться с вами своим небольшим достижением:

Я прорешал 159 LeetCode задач для подготовки к алгособесам!!!

Фух, только что закончил.

Так как меня интересуют конкретно задачи для интервью, я выбрал список Leetcode Patterns. Там есть 35 easy, 105 medium и 30 hard задач. Я прорешал оттуда все задачи без учёта тех что требуют подписку. Сделал это за 2 недели.

Мои решения лежат здесь.

Спасибо @vladtenlive за наводку, мотивацию и видосики по некоторым задачам.
До первого алгособеса я прорешал не так много задач, его вытянул на своих силах и за счёт того что задачи были простые.

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

Вот что нового я узнал в процессе:
Fast & Slow pointers — для нахождения цикла в односвязном списке (задача).
• Применение решения выше в задаче где нет ни слова об односвязных списках 🤯 (задача). Оказывается односвязные списки могут применяться не только разработчиками стандартной библиотеки.
Алгоритм Манакера — для нахождения всех палиндромов в строке за O(n), похож на Z-функцию. Очень прикольно, мне понравилось. Я смог его сам реализовать просто по текстовому описанию за счёт того что уже знал как работает Z-функция.
Monotonic queue — позволяет находить ближайший элемент больше текущего за O(n). Прикольная структура данных.
Trie — как я раньше об этом не знал, это офигенная структура данных, и так просто кодится! Обожаю теперь.
Sliding window — с помощью этого паттерна можно решать многие задачи очень быстро. И это очень хитро, я раньше даже не подозревал что так вообще можно было.
Multiset — структура данных, имитирующая отсортированный массив, и позволяющая за O(log(N)) вставлять/удалять элемент и находить минимум/максимум. Multimap примерно то же.

Ну а так же я очень сильно закрепил следующие темы:
• Динамическое программирование
• Map, Set, Priority Queue
• Backtracking
• Деревья
• Two pointers
• Prefix/suffix sum/min/max/etc

Хоть я раньше их и знал, но теперь мне кажется они прям идеально отточены.

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

Раньше я относился к LeetCode как к сайту со слишком простыми задачами, а теперь после всего этого я изменил своё мнение. Теперь всем буду рекомендовать сначала набраться базы на LeetCode, а затем идти на CodeForces за более серьёзными задачами.

Ну и для подготовке к собесам LeetCode тоже отлично подходит.
Недавно 3blue1brown выпустил видео про фракталы Ньютона (на английском). Советую посмотреть.

Я много использовал метод Ньютона, как в своих проектах с компьютерной графикой, так и в университете в качестве практических работ. И на эту тему мне есть что сказать.

Во-первых меня немного напрягает что фрактал Ньютона строят на основе комплексных чисел. А что нельзя как-нибудь без них? Будут ли фракталы если делать такие же визуализации для двумерных функций на действительных числах? Оказывается будут, и я писал об этом тред в твиттере с картинками. Сейчас перенёс это в статью в своём блоге: Фракталы в методе Ньютона. Там немного, 2 минуты чтения.

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

Это соревнование на платформе codeforces.com от организаторов конференции по Rust, которая пройдёт 3 декабря в Москве.

Участие в соревновании можно принять в любое удобное время. Длится оно 3 часа и на это время даётся 9 задач. Отправлять решения можно только на одном языке: Rust. Задачки прикольные. Свои результаты сообщу после окончания соревнования или если они будут в официальной таблице (во имя соревновательного духа!).

Для тех кто захочет в нём участвовать у меня для вас есть пара советов, если вы хотите максимизировать свои шансы:

1. Разберитесь с вводом-выводом в Rust. Может пригодиться статья How to Compete in Rust.
2. Примите виртуальное участие в любом другом контесте (лучше Div.3 для начинающих) или решите пару открытых задач.
3. Почитайте правила Codeforces относительно того что можно делать во время соревнования, а что нет. В частности советую разобраться с темой копированя кода (спойлер: можно, но с нюансами). Так что заготовку для ввода-вывода заранее сделать не страшно.

А ещё год назад я писал про свои приключения в решении олимпиадных задачек на Codeforces на Rust, их можно почитать здесь: /268 - /284. Там есть описание моей программы для локального тестирования и ссылка на репозиторий с моими решениями и заготовками кода. Может быть полезно для подготовки.
Наконец 3Blue1Brown и Leios Labs подвели итоги Summer of Math Exposition (SoME1) в этом видео. Для тех кто не знает, SoME1 — это конкурс по созданию видео или статей, объясняющие популярным языком какую-то интересную математическую тему. Цель: больше популяризации математики богу популяризации математики.

Результаты конкурса просто невероятные — весь ютуб заполонили видео про самые разные математические темы. Причём главный прикол в том, что большая часть видео сделана людьми, которые раньше никогда не делали чего-то подобного (или вообще не делали видео), то есть теперь у нас есть очень много контента не только от активных ютуберов-математиков. Что делает этот контент максимально разнообразным.

Мне нравится в этом конкурсе то, что любой человек может взять и вложить силы в создание видео, а затем гарантированно получить какое-то количество просмотров и зрителей, активно заинтересованых в математике. Это работает просто за счёт того что у всего этого есть общая платформа в виде этого конкурса. Вряд ли бы все эти люди стали бы делать видео просто так, кидая его в пустоту. А тут сразу и конкретный формат и автоматическое продвижение и коммьюнити.

Все видео на английском языке или с английским субтитрами.

Первым делом советую смотреть видео с подведением итогов чтобы узнать о наиболее годных видео и добавить их себе в плейлист «Смотреть позже».

Затем можно приняться за плейлист со всеми 835 участниками. А для тех кто больше любит читать, в блоге 3b1b находятся ссылки на статьи участников.

Я как раз начну потихоньку смотреть все эти видео за едой, не надо будет париться насчёт поиска аниме или сериала, удобно.

(Планирую во время просмотра собирать свои субъективные оценки каждого видео, может быть соберу это потом в одну статью, а может и нет, ничего не гарантирую)
Вы знаете английский язык на том уровне чтобы смотреть английские видео в ютубе и более-менее их понимать?
Anonymous Poll
84%
Да
16%
Нет
dev optozorax
Только что я принял участие в контесте RustCon. Это соревнование на платформе codeforces.com от организаторов конференции по Rust, которая пройдёт 3 декабря в Москве. Участие в соревновании можно принять в любое удобное время. Длится оно 3 часа и на это…
Я занял там второе место и получаю бесплатный билет на конферецию 😎. Скорее всего смогу прийти.

Решил все задачи, но впритык: последнюю задачу сдал за 2 минуты до конца. Меня обогнал более скилловый чувак, который решал в 2 раза быстрее.

Если кому интересно, мои решения лежат здесь.
Поздравляю всех мужчин с международным мужским днём 19 ноября.

(Пишу этот пост для распространения информации о таком празднике, чтобы сократить поддержку дня защитника отечества 23 февраля.)
В новом году желаю обрести контроль над своей жизнью тем, кто его ещё не обрёл.
🎉17🔥5👍4
Щас 6 часов утра, я не могу заснуть, меня лихорадит и мне кажется как будто я нашёл противоречие в фундаментальном математическом доказательстве, которому 130 лет. Гляньте, может я где-то ошибся:

https://gist.github.com/optozorax/ef6b4565d9297f2eeb0ae57114c38462

Ну или наверняка это уже открыли до меня.
👍5👎1
Там Google сделали нейросетку, которая умеет решать олимпиадные задачки по программированию:

https://deepmind.com/blog/article/Competitive-programming-with-AlphaCode

Проверяли на моём любимом сайте для контестов: Codeforces! Говорят что нейронка приняла там виртуальное участие в 10 контестах и могла бы заработать рейтинг ~1300. Что относится к среднему уровню. К слову, мой максимальный рейтинг там 1602.

Очевидно, обучали на данных людей. Вроде без Reinforcement Learning, судя по пейперу.

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

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

Надо подождать когда они сделают AlphaCode Zero, которая будет учиться решать задачи с нуля, без обучающих решений от человека, видимо уже с использованием RL. Тут они могут выгрузить весь Codeforces, Leetcode, AtCoder и веселиться по полной. Хотя им наверняка придётся сделать ОЧЕНЬ ОЧЕНЬ много супер-простых задач, чтобы нейронка по ним смогла научиться синтаксису языка программирования и основным структурам данных, чтобы смогла находить эти структуры данных в тексте задачи. Потому что я сомневаюсь что она сможет сама изобрести, например, дерево отрезков или двоичный поиск.

Ещё одной вехой будет когда они к этому применят интеративность, то есть дадут нейросетке возможность компилировать код, читать сообщения об ошибках и запускать его над собственными тестовыми примерами. ML-щики подскажите, для такого взаимодействия есть уже архитектуры или подходы?

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

Эти три фичи уже потребуют невероятных прорывов в области ML и вряд ли будут сделаны в ближайшие несколько лет.

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

Так что пока не видно перспективы того чтобы нейронка смогла победить tourist'а.
👍5
dev optozorax
Папки «Спам» быть не должно. #мысли При регистрации на каком-то сайте очень часто используется электронная почта в качестве способа активации. И практически на любом сайте после отправки письма пишут: «Проверьте папку "Спам", письмо может случайно попасть…
Чтобы возразить всем кто говорит "ой, у меня никогда не было проблем с папой спам", расскажу сегодняшнюю историю.

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

Я нагуглил как можно очень страшным костылём (который ещё вряд ли работает) убрать папку спам (https://webapps.stackexchange.com/a/69444). Но такой базовой опции, конечно же всё ещё нет и никогда не будет.

А дальше будет только хуже: во все элементы нашей обычной жизни будут внедряться такие тупые и неинтерпретируемые алгоритмы и нейросети. Ими будут заменять базовую инфраструктуру (например, сейчас всё хотят заменить голосовыми помощниками 🤮). И мы будем жить в мире, где только базовые сценарии будут работать хорошо, а всё остальное будет через жопу.
👍29👎2
Оказывается некоторые особо хорошие и важные научно-популярные книги официально распространяются бесплатно в электронном формате на русском языке:

https://vsenauka.ru/knigi/besplatnyie-knigi.html

Заходите, смотрите, может там есть то, что вы давно хотели почитать.
👍11🔥4
VPN 🤍💙🤍

Есть такой VPN под названием Outline, который позволяет супер-просто настроить его как себе, так и другим. Это бесплатный Open-Source софт, который ещё и прошёл аудиты по безопасности. Вы привязываете к нему свой аккаунт на чём-то типо DigitalOcean, и он сам покупает сервак, устанавливает на нём софт и поднимает VPN, вам нужно только кликать по кнопочкам. Далее можно нагенерить ключей для доступа и раздавать их. То есть по сути это ваш личный сервак с вашим личным VPN, только для него сделан такой удобный и приятный интерфейс.

Для пользователей всё ещё проще: они устанавливают где хотят приложение Outline, берут ключ, вставляют его и всё работает.

Конкретные факты:
* Сервак стоит это 5$ в месяц.
* Лимит трафика на сервере 1ТБ в месяц.
* Неограниченное число ключей доступа.
* Для каждого ключа можно смотреть сколько трафика потреблено, но вроде нету кнопочки чтобы посмотреть куда ходил пользователь этого ключа (что и хорошо).

Я сейчас создал новую виртуальную банковскую карту и потратил эти 5$. Теперь имею свой личный VPN и бесплатно раздаю ключи родным и друзьям, чего и вам советую сделать.

Ибо уже заблокировали твиттер, фейсбук, медузу. Могут начать блокировать известные VPN сервера и надежда может остаться только на личные. Тем более внешним бесплатным VPN нельзя доверять в текущих реалиях.
🔥17👍5
Куда делись активность и контент; планы на будущее.

Если вы давно сюда подписаны, то могли заметить, что я совсем не писал код для себя с момента статей про блог (/500, /503, /506), потом были только олимпиадки, но это не считается. Всё это время в канале был довольно хаотичный контент по типу: шэринга ссылок; пересказов видео и статей; рандомных мыслей. И это всё точно не то, что я бы хотел здесь публиковать. Хотя раньше это всё тоже было, просто на фоне вакуума собственных проектов замечается только этот рандом.

К сожалению код для себя я не пишу по причине, озвученной в /477, то есть из-за разочарования в результатах этой деятельности. А ещё потому что из-за статей про блог я не смог сконцентрироваться на тестовом задании и провалил собеседование на довольно интересную работу. Конечно, отказаться от хобби сложно, ведь программирование собственных проектов это наркотик, но я отказываюсь осознанно. Поэтому сейчас я больше сконцентрирован на работе и, например, тренажёрном зале: хожу туда уже почти 3 месяца 3 раза в неделю 🏋️‍♂️. Так что к хобби-кодингу я вернусь очень нескоро (мб осенью), а когда вернусь, то совсем не буду заниматься такими бесполезными проектами как: порталы, клеточные автоматы, компьютерная графика, видосики на ютуб. Если я и буду заниматься чем-то, то только чем-то важным, и только одним. Если, конечно, не найдётся какой-то миллионер, который будет спонсировать меня просто так, без возможности получить дивиденды, тогда я буду писать то что душе угодно.

Из кодинга у меня есть на примете есть один важный проект, который обязательно должен выстрелить, и который будет очень интересен - это аналог QMK (прошивка для клавиатуры), но в виде софта на комп, с киллер-фичей визуальным редактором; кодовое название - nomk, про это я давно писал свои мечтания здесь.

А сейчас, так как не могу писать код, я очень потихоньку на выходных пишу одну большую философско-программистскую статью. По ней уже разработал структуру, и для каждого пункта собрал тезисы и наброски текста, и только этого предварительного текста уже набралось на 150к символов, сама статья боюсь выйдет на 500к. Так же я прочитал очень много разной литературы и научных статей по этой теме, и законспектировал их чтобы сослаться или украсть у них идеи. И хоть мои философские идеи будут не до конца уникальны, зато я смогу собрать много интересного в одно место, и как мне кажется, объяснить это намного лучше и интересней остальных. Надеюсь что для большинства моя статья станет откровением. Для статьи потом сделаю отдельный сайт, и не буду публиковать её, пока не переведу на английский. Эту статью тоже пишу только потому что у неё большой шанс выстрелить. Ожидаемый срок релиза этой статьи: начало осени, либо конец 2022, либо уже никогда.

Ну и это не первоарельская шутка. Сначала я хотел как-то пошутить, а потом понял что из-за пустования в канале это не очень уместно.
👍26🔥2🎉2😢1