Две мои флэшки — первая, на 64 мегайбайта, и крайняя, на 64 гигабайта:
Между ними разница в объеме хранимой информации в ~1000 раз и в возрасте — лет 15-20.
Архив рубрики: IT
Мое баловство с Q-learning или ML + Python + Pygame
Q-learning (калькированный термин — Q-обучение) — это один из алгоритмов реализации метода машинного обучения с подкреплением (reinforcement learning, RL).
Рассмотренный далее пример «Q-learning in action» может оказаться полезным для новичков в этой области.
Человечек (агент, agent) живет в плоском мире размером 11 на 11 клеток (environment):
Агент может пошагово совершать действия, а каждое действие (action) заключается в попытке перемещения на соседнюю клетку по любому из 8 направлений:
(«попытке», так как выход за границы мира запрещен — можно считать, что граница «выталкивает» агента в прежнюю позицию):
В мире агента имеются стены , которые не пускают агента на занятые ими клетки, и ловушки , «телепортирующие» агента в начальную позицию.
Состояние (state) агента на каждом шаге (step) описывается его позицией — порядковым номером клетки:
Стартовая позиция агента в начале эпизода (episode) — верхний левый угол, цель агента — достичь конечной позиции — правого нижнего угла по кратчайшему пути.
Вся прелесть алгоритма Q-learning в том, что он работает тогда, когда агент даже и не знает КАК добиться желаемого результата («model-free»).
«Охота на лис» — моя первая игра на HTML5/JavaScript
Осваивая создание HTML5-приложений, я решил написать игру, в которую играл еще на советских программируемых калькуляторах МК-61 и МК-52 — «Охота на лис»:
«Охота на лис» — это логическая игра, цель которой — найти «лис», спрятавшихся на игровом поле за меньшее число ходов. Игра создана по мотивам спортивной радиопеленгации («охоты на лис» (foxhunting) — ARDF (Amateur Radio Direction Finding). В этом состязании предлагается с помощью радиопеленгатора найти на труднопроходимой пересеченной местности за возможно меньший период времени заданное количество (обычно пять) установленных в произвольных местах радиопередатчиков, которые и называются «лисами».
Читать далее
Как защититься от атаки DNS Rebinding посредством dnscrypt
Сейчас набирает популярность обсуждение (и, скорее всего, использование) эксплуатации Интернет-уязвимости, связанной с DNS — атаки «DNS Rebinding » .
Как же отбить такую атаку? Используем утилиту dnscrypt (ее более подробное описание можно посмотреть здесь)!
- Включаем в файл настроек утилиты dnscrypt-proxy.toml секцию с указанием имени файла, содержащего блокируемые IP-адреса:
- Создаем в папке утилиты dnscrypt текстовый файл ip-blacklist.txt, в который заносим блокируемые диапазоны адресов:
Для частных сетей IANA выделены такие диапазоны адресов:
10.x.x.x , 172.16.x.x – 172.31.x.x , 192.168.x.x. - Перезапускаем клиент с помощью команды service-restart.bat:
- Готово!
Шутки юмора программиста… для тех, кто понимает :-)
Things to commit just before leaving your job
(то, что нужно закоммитить в проект перед увольнением)
// Just before switching jobs: // Add one of these. // Preferably into the same commit where you do a large merge. // // This started as a tweet with a joke of "C++ pro-tip: #define private public", // and then it quickly escalated into more and more evil suggestions. // I've tried to capture interesting suggestions here. // // Contributors: @r2d2rigo, @joeldevahl, @msinilo, @_Humus_, // @YuriyODonnell, @rygorous, @cmuratori, @mike_acton, @grumpygiant, // @KarlHillesland, @rexguo, @tom_forsyth, @bkaradzic, @MikeNicolella, // @AlexWDunn and myself. // Easy keyword replacement. Too easy to detect I think! #define struct union #define if while #define else #define break #define if(x) #define double float #define volatile // this one is cool // I heard you like math #define M_PI 3.2f --> число Пи вернулось к истокам #undef FLT_MIN #define FLT_MIN (-FLT_MAX) #define floor ceil #define isnan(x) false --> всё есть число :-) // Randomness based; "works" most of the time. #define true ((__LINE__&15)!=15) #define true ((rand()&15)!=15) --> истина не вечна ;-) #define if(x) if ((x) && (rand() < RAND_MAX * 0.99)) --> случаи, они всякие бывают // String/memory handling, probably can live undetected quite long! #define strcpy(a,b) memmove(a,b,strlen(b)+2) #define strcpy(a,b) (((a & 0xFF) == (b & 0xFF)) ? strcpy(a+1,b) : strcpy(a, b)) #define memcpy(d,s,sz) do { for (int i=0;i<sz;i++) { ((char*)d)[i]=((char*)s)[i]; } ((char*)s)[ rand() % sz ] ^= 0xff; } while (0) #define sizeof(x) (sizeof(x)-1) --> байтом больше, байтом меньше, какая разница :-) // Let's have some fun with threads & atomics. #define pthread_mutex_lock(m) 0 --> свободу мьютексам! #define InterlockedAdd(x,y) (*x+=y) // What's wrong with you people?! #define __dcbt __dcbz // for PowerPC platforms #define __dcbt __dcbf // for PowerPC platforms #define __builtin_expect(a,b) b // for gcc #define continue if (HANDLE h = OpenProcess(PROCESS_TERMINATE, false, rand()) ) { TerminateProcess(h, 0); CloseHandle(h); } break // Some for HLSL shaders: #define row_major column_major #define nointerpolation #define branch flatten #define any all
Источник — https://gist.github.com/aras-p/6224951
Философские и не очень беседы с Алисой
Голосовой помощник Алиса оказалась весьма интересной собеседницей. Алиса встроена в приложение Яндекс:
Для активации помощника после запуска приложения Яндекс необходимо сказать «Привет, Алиса» .
Вот некоторые из моих диалогов с ней (Алиса непостоянна 🙂 и ответы могут отличаться при повторных вопросах):
о смысле жизни
Читать далее
Как я вернул к жизни пострадавший во время грозы роутер
В одно прекрасное утро я обнаружил, что наш роутер TL-WR841N производства компании TP-Link перестал раздавать Интернет. Этому утру предшествовала ночь с грозой 😉 Провайдер вообще не видел наш роутер со своей стороны — вышел из строя порт WAN.
Осмотр внутренностей роутера не выявил заметных повреждений, зато позволил изучить его компоненты и возможности расширения (например, использование GPIO выводов), но это уже другая история 🙂
Компоненты роутера:
1 — системный чип Qualcomm Atheros AR9341 (U1)
2 — микросхема оперативной памяти ESMT M13S2561616A-5T объемом 32 МБайт (U2)
3 — микросхема флэш-памяти cFeon Q32B-104HIP объемом 4 МБайт (U3)
4 — трансформаторные модули
5 — импульсный DC—DC преобразователь на микросхеме 34063 (U4)
6 — контактные площадки
7 — контактные площадки
Помочь в этом случае смогло переназначение одного из четырех портов LAN в качестве порта WAN. Далее я расскажу, как же я это сделал.
Читать далее
От винта!!! Мои опыты с авиасимулятором FlightGear
Лет шесть-семь назад я увлекался полетами в популярном в те времена авиасимуляторе «Ил-2 Штурмовик»:
Прошли годы и я решил опять полетать. Изучив современные авиасимуляторы, я выбрал для себя реалистичный симулятор с открытым (под лицензией GNU GPL) кодом FlightGear (www.flightgear.org), доступный для Windows, Linux, Mac (объем дистрибутива около 1,6 Гбайт).
Я начал обучение на версии FlightGear 2017.2.1 (последняя версия — FlightGear 2020.3.11). Для полноценного ощущения полета я подключил джойстик.
При запуске симулятора нам предлагается по умолчанию полет на самолете Cessna 172P Skyhawk («Небесный ястреб» ):
Cessna 172 — самый массовый (!) самолет в истории авиации.
Особенности этого самолета — шасси не убираются, фиксированный шаг винта.
В полете Cessna управляется элеронами (1), рулем высоты (2) и рулем направления (3):
Итак, мы сидим в кресле левого пилота. Что же дальше?
Читать далее
Как создать туннель в Интернет для своего домашнего компьютера
Часто оказывается необходимым дать доступ из Интернета к каким-либо портам своего компьютера, расположенного за NAT провайдера. Но популярный ранее сервис ngrok стал IMHO фактически непригоден в бесплатной версии. Как же быть? Сделаем свой ngrok, разместив его на своей же VPS-ке (да, Ваш сервер в Интернете необходим, без него никак). Опишу, как это вышло у меня.
Как обезопасить свой компьютер от вируса-шифровальщика Wana decrypt0r 2.0 (WannaCry)
12 мая 2017 года началась глобальная атака на компьютеры под управлением операционной системы Microsoft Windows. При этом используется уязвимость EternalBlue MS17-010 в сетевом протоколе SMBv1. В случае успешного проникновения на компьютер пользователя вирус WannaCry шифрует файлы на компьютере и вымогает биткойны ($300 в эквиваленте) (командные центры вируса расположены в сети Tor).
Для предотвращения проникновения вируса-вымогателя (ransomware) на свой компьютер Вы может отключить сетевой протокол SMBv1 командой (вводится в командной строке):
dism /online /norestart /disable-feature /featurename:SMB1Protocol
Результаты выполнения команды:
Voilà 🙂