Leela chess победила Stockfish белыми.
Прикольно, конечно, ну и что с того?
Stockfish если не самый, то точно один из самых популярных шахматных движков. Например, он является дефолтным движком для анализа партий на chess.com. А еще он опенсорсный.
Так вот, стокфиш - некий стандарт индустрии. Ну и он хорош, еще как хорош! Прикладываю скриншот с википедии с победителями TCEC - одного из крупнейших соревнований для шахматных движков.
Посмотрел сегодня видео GothamChess, где он обозревает недавнюю партию Leela vs Stockfish и утверждает, что это первый проигрыш белыми стокфишем за последние 2 года (проверить это высказывание я не смог, но в целом готов поверить на слово). Обычно принято, что белые играют на победу, а черные на ничью, поэтому победа черными - это серьезная заявка.
Прикладываю ту самую недавнюю партию.
Но не так важно, что кто-то победил стокфиш, важно, кто это сделал. В 2018 году стокфиш уже проигрывал гугловскому AlphaZero. Это хоть и было Событием, но тем не менее не таким значимым. Огромная компания выходит поиграть мускулами и показывает версию шахматного движка, которая обучалась на 5000 специально для нее разработанных TPU. Да при этом еще и не выкладывает в открытый доступ этот движок.
Куда приятнее, следить за развитием народных технологий. Так вот в той самой недавней партии победила LC0 или Leela. Как и stockfish - проект с открытым исходным кодом, вдохновленный AlphaZero. Обратите еще раз внимание на табличку и графу Runner-up (второе место). Ну разве это не кайф, что два лучших шахматных движка находятся так рядом и код каждого из них можно пойти и посмотреть. А еще его можно поменять и попробовать что-то улучшить. Вот технологии, которые мне нравятся.
Прикладываю скриншот из той самой партии, который меня поражает. M113 - форсированный мат в 113 ходов, который нашла LC0. Форсированный означает, что есть последовательность ходов завершающаяся матом даже при лучшей игре соперника. Видя такое пускаешь слезу беспомощности, когда не можешь найти мат в 2 или 3 хода....
Прикольно, конечно, ну и что с того?
Stockfish если не самый, то точно один из самых популярных шахматных движков. Например, он является дефолтным движком для анализа партий на chess.com. А еще он опенсорсный.
Так вот, стокфиш - некий стандарт индустрии. Ну и он хорош, еще как хорош! Прикладываю скриншот с википедии с победителями TCEC - одного из крупнейших соревнований для шахматных движков.
Посмотрел сегодня видео GothamChess, где он обозревает недавнюю партию Leela vs Stockfish и утверждает, что это первый проигрыш белыми стокфишем за последние 2 года (проверить это высказывание я не смог, но в целом готов поверить на слово). Обычно принято, что белые играют на победу, а черные на ничью, поэтому победа черными - это серьезная заявка.
Прикладываю ту самую недавнюю партию.
Но не так важно, что кто-то победил стокфиш, важно, кто это сделал. В 2018 году стокфиш уже проигрывал гугловскому AlphaZero. Это хоть и было Событием, но тем не менее не таким значимым. Огромная компания выходит поиграть мускулами и показывает версию шахматного движка, которая обучалась на 5000 специально для нее разработанных TPU. Да при этом еще и не выкладывает в открытый доступ этот движок.
Куда приятнее, следить за развитием народных технологий. Так вот в той самой недавней партии победила LC0 или Leela. Как и stockfish - проект с открытым исходным кодом, вдохновленный AlphaZero. Обратите еще раз внимание на табличку и графу Runner-up (второе место). Ну разве это не кайф, что два лучших шахматных движка находятся так рядом и код каждого из них можно пойти и посмотреть. А еще его можно поменять и попробовать что-то улучшить. Вот технологии, которые мне нравятся.
Прикладываю скриншот из той самой партии, который меня поражает. M113 - форсированный мат в 113 ходов, который нашла LC0. Форсированный означает, что есть последовательность ходов завершающаяся матом даже при лучшей игре соперника. Видя такое пускаешь слезу беспомощности, когда не можешь найти мат в 2 или 3 хода....
🔥4🫡1
This media is not supported in your browser
VIEW IN TELEGRAM
Борьба за увеличение разнообразия онлайн пар продолжается.
Попробовал сегодня провести пару и сыграть в стримера одновременно)
В телеге сделал бота, в котором можно было нажимать кнопки и что-то происходило с видео: взрыв или появлялись мысли о Римской империи.
Как-то немного тупо получилось, я большую часть взаимодействий со мной проигнорировал(( Просто, видимо не хватило внимания что-то говорить и еще следить за происходящим. Да и я еще что-то перестраховался и дал возможность каждому только по три действия сделать. Но в любом случае это был пробный заед, дальше будет лучше и интереснее)
Но все равно не понимаю, как во время стримов людям хватает внимания за всем следить.
Ну и также не хватило каких-то звуковых приколов, надо все-таки придумать что-то заметное, но не сильно отвлекающее.
Если есть идеи, то поделитесь, пожалуйста)
Попробовал сегодня провести пару и сыграть в стримера одновременно)
В телеге сделал бота, в котором можно было нажимать кнопки и что-то происходило с видео: взрыв или появлялись мысли о Римской империи.
Как-то немного тупо получилось, я большую часть взаимодействий со мной проигнорировал(( Просто, видимо не хватило внимания что-то говорить и еще следить за происходящим. Да и я еще что-то перестраховался и дал возможность каждому только по три действия сделать. Но в любом случае это был пробный заед, дальше будет лучше и интереснее)
Но все равно не понимаю, как во время стримов людям хватает внимания за всем следить.
Ну и также не хватило каких-то звуковых приколов, надо все-таки придумать что-то заметное, но не сильно отвлекающее.
Если есть идеи, то поделитесь, пожалуйста)
🥰8
Когда заходит речь о том, чтобы проверить какое-то поведение кода или удостовериться в оптимизации, все всегда говорят про godbolt.
Но есть еще одна крайне прикольная штука, про которую я узнал только недавно: cppinsights.
Можно вписать какой-нибудь код и посмотреть некоторые штуки, которые за программиста делает компилятор.
Некоторые примеры есть сразу же на сайте:
https://cppinsights.io/examples.html
Но есть еще одна крайне прикольная штука, про которую я узнал только недавно: cppinsights.
Можно вписать какой-нибудь код и посмотреть некоторые штуки, которые за программиста делает компилятор.
Некоторые примеры есть сразу же на сайте:
https://cppinsights.io/examples.html
cppinsights.io
C++ Insights
C++ Insights - Examples
👍4🔥3
Сижу как всегда смотрю себе бесконтрольно предложку ютуба и тут вдруг видео, в котором считают числа Фибоначчи.
Как будто бы ничего необычного. Но знаете вот это ощущение в голове, что как-то подозрительно быстро посчитаталось....
Подсмотрел, что в видосе используется библиотека gmp - и все, оставшийся день как в тумане.
Причем забавно, что я уже проходил эту стадию детской радости с
Нашел репозиторий с примерами всяких вычислений для
Ну как такое вообще возможно?
Как может самое большое известное простое число, которое вычисляется по формуле 2 ^ 82,589,933 - 1 считаться 0.003 сек? (см скриншот) При этом число не просто большое, оно прям здоровенное - файлик с этим числом имеет размер 24МБ.
Как может факториал числа 77777777 считаться 16 секунд?? (см скриншот) Да там результирующее число размером в 500мб!
В общем ни секунды не жалею потраченного времени. Сидел удивлялся, как будто фокусы смотрел). Рекомендую поковыряться тоже)
Как будто бы ничего необычного. Но знаете вот это ощущение в голове, что как-то подозрительно быстро посчитаталось....
Подсмотрел, что в видосе используется библиотека gmp - и все, оставшийся день как в тумане.
Причем забавно, что я уже проходил эту стадию детской радости с
numpy
. Просто сидел и умножал всякие матрицы, удивляясь, как это так быстро может работать. Но вот сегодня история снова повторилась.Нашел репозиторий с примерами всяких вычислений для
gmp
https://github.com/crazyBaboon/GMP-examples/blob/master/README.md и просто сидел запускал.Ну как такое вообще возможно?
Как может самое большое известное простое число, которое вычисляется по формуле 2 ^ 82,589,933 - 1 считаться 0.003 сек? (см скриншот) При этом число не просто большое, оно прям здоровенное - файлик с этим числом имеет размер 24МБ.
Как может факториал числа 77777777 считаться 16 секунд?? (см скриншот) Да там результирующее число размером в 500мб!
В общем ни секунды не жалею потраченного времени. Сидел удивлялся, как будто фокусы смотрел). Рекомендую поковыряться тоже)
🤯6😱2
Миша пишет код
Что выведет код выше?
Тут будет Undefined Behavior)
Из-за двойных кавычек аргументами передаются не два элемента типа char, а две строки и initializer list не срабатывает, так как для него элементы листа должны быть char, а мы даем char*.
Но и ошибки компиляции не будет, так как в данном случае удается найдется другой конструктор, который подходит - конструктор от двух итераторов. Тогда указатель на "," будет началом интервала, а на ";" концом. Но валидным интервалом это не будет.
Соответственно, если бы было 3 аргумента, то тогда уже такой конструктор не нашелся и код бы не скомпилировался.
Обидно, конечно, что не будет ошибки компиляции, потому что достаточно просто перепутать одинарные кавычки и двойные.
Но, к счастью, address sanitizer это ловит. То есть при компиляции с
Из-за двойных кавычек аргументами передаются не два элемента типа char, а две строки и initializer list не срабатывает, так как для него элементы листа должны быть char, а мы даем char*.
Но и ошибки компиляции не будет, так как в данном случае удается найдется другой конструктор, который подходит - конструктор от двух итераторов. Тогда указатель на "," будет началом интервала, а на ";" концом. Но валидным интервалом это не будет.
Соответственно, если бы было 3 аргумента, то тогда уже такой конструктор не нашелся и код бы не скомпилировался.
Обидно, конечно, что не будет ошибки компиляции, потому что достаточно просто перепутать одинарные кавычки и двойные.
Но, к счастью, address sanitizer это ловит. То есть при компиляции с
-fsanitize=address
ошибка будет обнаружена. Ну хоть не этом спасибо)👍3🔥3
Кстати, можно самостоятельно убедиться, в том, какой конструктор будет выбран.
Если бинарь прогнать через objdump:
То можно увидеть, что в случае с двойными кавычками будет вызван конструктор
А если поставить одинарные, то вызовется уже ожидаемый конструктор от initializer list (2 скриншот).
Если бинарь прогнать через objdump:
objdump -SC <binary>
То можно увидеть, что в случае с двойными кавычками будет вызван конструктор
vector( InputIt first, InputIt last)
(1ый скриншот). А если поставить одинарные, то вызовется уже ожидаемый конструктор от initializer list (2 скриншот).
😨3🦄2
Кажется, наткнулся на самый залайканный репозиторий на гитхабе:
https://github.com/EbookFoundation/free-programming-books
До этого, думал, что самый популярный - linux, но там всего 150к звездочек)
Тут Линус что-то тупанул, надо было тоже в название добавить
https://github.com/EbookFoundation/free-programming-books
До этого, думал, что самый популярный - linux, но там всего 150к звездочек)
Тут Линус что-то тупанул, надо было тоже в название добавить
free
, собрал бы тогда побольше классов)😁4👍2
Опа, генератор эмоджи
https://emojis.alexandru.so
Очень хотел бы, чтобы в телеге такое было… и не надо было больше искать эмоджи в бесконечных паках.
Просто набрал: "мужик бэтмен кивает сигма мем" и получил😘 .
Или: "300 bucks пиво" и хоп🍺
Может быть кто-то запарился и сделает, чтобы работало как @gif?
На всякий случай оставлю туториал, как это делать (вдруг найдется герой тут): https://telegram.org/blog/inline-bots?setln=it
https://emojis.alexandru.so
Очень хотел бы, чтобы в телеге такое было… и не надо было больше искать эмоджи в бесконечных паках.
Просто набрал: "мужик бэтмен кивает сигма мем" и получил
Или: "300 bucks пиво" и хоп
Может быть кто-то запарился и сделает, чтобы работало как @gif?
На всякий случай оставлю туториал, как это делать (вдруг найдется герой тут): https://telegram.org/blog/inline-bots?setln=it
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4🤷♀1
Все не оставляю надежды сделать чит клаву. Хочу, чтобы она умела печатать за меня код и чтобы это выглядело, как будто я пишу его сам.
Пока ресерчил, с какой стороны хотя бы подступиться к этому, нашел, что уже существует такой прикол как Keystroke Dynamics. Я слышал, что по патерну ввода текста сайты определяют, бот ты или нет.
Но оказывается, идея пошла дальше и есть даже статьи с предложениями использовать Kaystroke Dynamics для аутентификации:
https://www.researchgate.net/publication/221912833_Keystroke_Dynamics_Overview
Нооооо...
Идея пошла еще дальше и появились также статьи, которые описывают, как взломать такую аутентификацию:
https://journalofbigdata.springeropen.com/articles/10.1186/s40537-022-00662-8
Интересно, если все-таки такой метод подтверждения личности приживется, смогу ли я продолжать тарабанить по клавишам в monkeytype или это уже будет небезопасно?
Кстати, тут можно самому попробовать залогиниться используя Kaystroke Dynamics. Почту можно рандомную вводить, сайт её не проверяет.
https://www.typingdna.com/demo-sametext.html
Я пару раз попробовал, вроде бы работает, но выглядит крайне ненадежно.
Пока ресерчил, с какой стороны хотя бы подступиться к этому, нашел, что уже существует такой прикол как Keystroke Dynamics. Я слышал, что по патерну ввода текста сайты определяют, бот ты или нет.
Но оказывается, идея пошла дальше и есть даже статьи с предложениями использовать Kaystroke Dynamics для аутентификации:
https://www.researchgate.net/publication/221912833_Keystroke_Dynamics_Overview
Нооооо...
Идея пошла еще дальше и появились также статьи, которые описывают, как взломать такую аутентификацию:
https://journalofbigdata.springeropen.com/articles/10.1186/s40537-022-00662-8
Интересно, если все-таки такой метод подтверждения личности приживется, смогу ли я продолжать тарабанить по клавишам в monkeytype или это уже будет небезопасно?
Кстати, тут можно самому попробовать залогиниться используя Kaystroke Dynamics. Почту можно рандомную вводить, сайт её не проверяет.
https://www.typingdna.com/demo-sametext.html
Я пару раз попробовал, вроде бы работает, но выглядит крайне ненадежно.
ResearchGate
(PDF) Keystroke Dynamics Overview
PDF | On Jun 20, 2011, Romain Giot and others published Keystroke Dynamics Overview | Find, read and cite all the research you need on ResearchGate
👍2🔥2
Миша пишет код
Забавно, как гитхаб потихоньку превращается в социальную сеть. Оформление профиля и подписчики уже давно есть. Теперь вот на главной странице появился фид с рекомендациями вместо последних действий подписок. Появились trending repositories, trending developers.…
> Или еще было бы круто, чтобы были запиненные issues, где решили какую-то сложную инженерную задачу или приняли важное решение
Вот, как и просил, наткнулся, на прекрасный пост о решенном необычном issue.
Проблема: https://github.com/paritytech/wasmi/issues/43
Сам пост: http://troubles.md/i-triple-equals/
TLDR:
Исследовали баг, который заключался в том, что побитовый каст (`bit_cast/reinterpret_cast`) float числа к int и обратно работал неправильно - то есть битовое представление исходного числа и получившегося отличались. Причем воспроизводилось это только на
Ошибка оказалась в том, что по соглашению о вызовах возвращаемое значение типа float возвращается не в eax, а на верхушке FPU стека. Для этого использовалась инструкция flds, которая имеет право "заглушить" сигнальный бит у
Сигнальный бит в
> If I’ve learned anything from this, it’s that no matter how close to the metal you go, you can never truly have total control over the execution of your code.
Вот, как и просил, наткнулся, на прекрасный пост о решенном необычном issue.
Проблема: https://github.com/paritytech/wasmi/issues/43
Сам пост: http://troubles.md/i-triple-equals/
TLDR:
Исследовали баг, который заключался в том, что побитовый каст (`bit_cast/reinterpret_cast`) float числа к int и обратно работал неправильно - то есть битовое представление исходного числа и получившегося отличались. Причем воспроизводилось это только на
x86_32
, даже на x86_64
каст работал корректно.Ошибка оказалась в том, что по соглашению о вызовах возвращаемое значение типа float возвращается не в eax, а на верхушке FPU стека. Для этого использовалась инструкция flds, которая имеет право "заглушить" сигнальный бит у
NaN
. То есть изменить соответсвующую 1 на 0.Сигнальный бит в
NaN
- специальный бит, сигнализирующий о возникновении исключительной ситуации. s111 1111 1Yxx xxxx xxxx xxxx xxxx xxxx
бит Y - сигнальный.> If I’ve learned anything from this, it’s that no matter how close to the metal you go, you can never truly have total control over the execution of your code.
GitHub
Support 32-bit targets · Issue #43 · paritytech/wasmi
To properly support them we need to setup CI for these targets
🔥3👍2
NERDtree
Когда начинаешь пользоваться вимом и узнаешь, что в него можно ставить разные плагины, то рано или поздно волею судеб оказываешься на сайтах с громкими заголовками: "10 essential vim plugins", "Top 5 vim plugins you need to know".
Готов поставить, что в мире не существет ни одной подборки, в которой не было бы NERDtree.
Удивительно, что считается правильным устанавливать дополнительный плагин для работы с директориями в то время как в виме уже есть встроенная утилита netrw.
Netrw умеет все то же, что и NERDtree: можно открыть список директорий, поискать файл, подняться/спуститься по дереву, убрать или показать скрытые файлы, открыть файл. И при этом не нужно ничего устаналивать - все доступно из коробки.
Хочешь открыть панельку сбоку, как в NERDtree? - набрал :Vex и радуйся. Vex происходит от слов Vertcal и Explore.
А вот чтобы открыть панельку горизонтально, надо применить смекалку. Казалось бы, по аналогии должно быть :Hex, но нет, правильный ответ`Sex` .
В плагине, который рекомендует установить каждый уважающий себя сайт при это даже нет некоторых всроенных в Netrw функций, о чем написано в самом репозитории NERDtree. (2 скрин).
В общем, как можно было понять, я буду бубнить.
Эти статьи с подбоками плагинов - верный путь забить на вим так и не разобравшись что к чему. Сейчас на собственном примере поясню мысль:
> Вот оно то самое чувство, когда собрался все-таки пройти эту дурацкую почти отвесную вимовскую learning curve, накачал кучу плагинов и ждешь что вот-вот станешь супергероем разработки и будешь успевать делать миллион дел одновременно. А в результате застреваешь в конфликтующих шорткатах, не можешь запомнить кнопки и в итоге так и не разобравшись забиваешь.
Решил, что буду избегать этой ловушки с переусложнением простых вещей. Теперь сначала разбираюсь в базовом функционале, а потом уже навешиваю что-то новое. Потому что у меня постоянно возникают аналогичные проблемы со всеми конфигурируемыми программами: notion, obsidian, ticktick, tmux...
P.S. туториал по настройке netrw.
Когда начинаешь пользоваться вимом и узнаешь, что в него можно ставить разные плагины, то рано или поздно волею судеб оказываешься на сайтах с громкими заголовками: "10 essential vim plugins", "Top 5 vim plugins you need to know".
Готов поставить, что в мире не существет ни одной подборки, в которой не было бы NERDtree.
Удивительно, что считается правильным устанавливать дополнительный плагин для работы с директориями в то время как в виме уже есть встроенная утилита netrw.
Netrw умеет все то же, что и NERDtree: можно открыть список директорий, поискать файл, подняться/спуститься по дереву, убрать или показать скрытые файлы, открыть файл. И при этом не нужно ничего устаналивать - все доступно из коробки.
Хочешь открыть панельку сбоку, как в NERDtree? - набрал :Vex и радуйся. Vex происходит от слов Vertcal и Explore.
А вот чтобы открыть панельку горизонтально, надо применить смекалку. Казалось бы, по аналогии должно быть :Hex, но нет, правильный ответ
В плагине, который рекомендует установить каждый уважающий себя сайт при это даже нет некоторых всроенных в Netrw функций, о чем написано в самом репозитории NERDtree. (2 скрин).
В общем, как можно было понять, я буду бубнить.
Эти статьи с подбоками плагинов - верный путь забить на вим так и не разобравшись что к чему. Сейчас на собственном примере поясню мысль:
> Вот оно то самое чувство, когда собрался все-таки пройти эту дурацкую почти отвесную вимовскую learning curve, накачал кучу плагинов и ждешь что вот-вот станешь супергероем разработки и будешь успевать делать миллион дел одновременно. А в результате застреваешь в конфликтующих шорткатах, не можешь запомнить кнопки и в итоге так и не разобравшись забиваешь.
Решил, что буду избегать этой ловушки с переусложнением простых вещей. Теперь сначала разбираюсь в базовом функционале, а потом уже навешиваю что-то новое. Потому что у меня постоянно возникают аналогичные проблемы со всеми конфигурируемыми программами: notion, obsidian, ticktick, tmux...
P.S. туториал по настройке netrw.
🔥6👍2🫡2
Был всю жизнь уверен, что это видеомонтаж и люди просто прыгают по пустой комнате, а потом эффекты сверху накладывают… 🤦♂️
https://habr.com/ru/articles/766054/
Штуки, которые мне показались интересными:
1. Как определяется нажатие:
> … работа с аналоговыми тензодатчиками, когда свободный ход практически отсутствует (вспомните ваши напольные весы)… было решено собирать ~85 напольных весов собственной разработки с проводным каналом связи и RGB подсветкой.
2. На чем запускается:
> Всё управление игровым полом у нас происходит с одной Raspberry … мы сделали интерфейс запуска и управления играми под браузер планшета.
https://habr.com/ru/articles/766054/
Штуки, которые мне показались интересными:
1. Как определяется нажатие:
> … работа с аналоговыми тензодатчиками, когда свободный ход практически отсутствует (вспомните ваши напольные весы)… было решено собирать ~85 напольных весов собственной разработки с проводным каналом связи и RGB подсветкой.
2. На чем запускается:
> Всё управление игровым полом у нас происходит с одной Raspberry … мы сделали интерфейс запуска и управления играми под браузер планшета.
Хабр
Pixel Quest: путь от прототипа до первого игрового заведения
Полгода прошло с момента публикации моей статьи о прототипе интерактивной светодиодной игровой платформы «Пол — это лава» . Самое время рассказать, что с проектом и куда движемся сейчас. Мы...
🤯3👍2