Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
82 - Telegram Web
Telegram Web
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 хода....
🔥4🫡1
This media is not supported in your browser
VIEW IN TELEGRAM
Борьба за увеличение разнообразия онлайн пар продолжается.

Попробовал сегодня провести пару и сыграть в стримера одновременно)

В телеге сделал бота, в котором можно было нажимать кнопки и что-то происходило с видео: взрыв или появлялись мысли о Римской империи.

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

Но все равно не понимаю, как во время стримов людям хватает внимания за всем следить.

Ну и также не хватило каких-то звуковых приколов, надо все-таки придумать что-то заметное, но не сильно отвлекающее.

Если есть идеи, то поделитесь, пожалуйста)
🥰8
Когда заходит речь о том, чтобы проверить какое-то поведение кода или удостовериться в оптимизации, все всегда говорят про godbolt.

Но есть еще одна крайне прикольная штука, про которую я узнал только недавно: cppinsights.

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

Некоторые примеры есть сразу же на сайте:

https://cppinsights.io/examples.html
👍4🔥3
Ну ок
🤷‍♂3🤡3
Сижу как всегда смотрю себе бесконтрольно предложку ютуба и тут вдруг видео, в котором считают числа Фибоначчи.

Как будто бы ничего необычного. Но знаете вот это ощущение в голове, что как-то подозрительно быстро посчитаталось....

Подсмотрел, что в видосе используется библиотека 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
#include <vector>
#include <iostream>

using namespace std;

int main() {
vector<char> delimiters = { ",", ";" };
cout << delimiters[0];
}


(Взял с сайта cppquiz)
🤔3
Что выведет код выше?
Anonymous Poll
47%
,
16%
UB
0%
,;
37%
Compile error
C++17 👆
😡6
Миша пишет код
Что выведет код выше?
Тут будет Undefined Behavior)

Из-за двойных кавычек аргументами передаются не два элемента типа char, а две строки и initializer list не срабатывает, так как для него элементы листа должны быть char, а мы даем char*.

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

Соответственно, если бы было 3 аргумента, то тогда уже такой конструктор не нашелся и код бы не скомпилировался.

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

Но, к счастью, address sanitizer это ловит. То есть при компиляции с -fsanitize=address ошибка будет обнаружена. Ну хоть не этом спасибо)
👍3🔥3
Кстати, можно самостоятельно убедиться, в том, какой конструктор будет выбран.

Если бинарь прогнать через objdump:

objdump -SC <binary>

То можно увидеть, что в случае с двойными кавычками будет вызван конструктор vector( InputIt first, InputIt last) (1ый скриншот).

А если поставить одинарные, то вызовется уже ожидаемый конструктор от initializer list (2 скриншот).
😨3🦄2
Кажется, наткнулся на самый залайканный репозиторий на гитхабе:

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
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

Я пару раз попробовал, вроде бы работает, но выглядит крайне ненадежно.
👍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 и обратно работал неправильно - то есть битовое представление исходного числа и получившегося отличались. Причем воспроизводилось это только на 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.
🔥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.
🔥6👍2🫡2
Был всю жизнь уверен, что это видеомонтаж и люди просто прыгают по пустой комнате, а потом эффекты сверху накладывают… 🤦‍♂️

https://habr.com/ru/articles/766054/

Штуки, которые мне показались интересными:

1. Как определяется нажатие:

> … работа с аналоговыми тензодатчиками, когда свободный ход практически отсутствует (вспомните ваши напольные весы)… было решено собирать ~85 напольных весов собственной разработки с проводным каналом связи и RGB подсветкой.

2. На чем запускается:

> Всё управление игровым полом у нас происходит с одной Raspberry мы сделали интерфейс запуска и управления играми под браузер планшета.
🤯3👍2
2025/07/09 16:37:44
Back to Top
HTML Embed Code: