Винда и установленные программы

Вот вы как думали, что всё, что установлено — видно в панели управлении на Windows? Ага, щас. На самом деле установлено там намного больше, только некоторые вещи в панели управления не отображаются. Принципиально.

Получить весь список можно, пройдя руками в реестр:

HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall (для 64-битного софта)
HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall (для 32-битного софта, ага, надо по-другому)

Можно, например, в шелле сделать так:

$programs = Get-ChildItem -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall; foreach ($program in $programs) { $program }

Узнаете много нового, я гарантирую.

Надо сказать, что rpm -qa или apt list –installed значительно проще в применении (лично мне). Микрософт, правда, не законченные придурки, поэтому быстренько подсуетились и выкатили winget, с которым можно делать очень похожие фокусы. Я его, правда, толком пока не щупал, неизвестно, как оно показывает установленный софт — даёт полный список или кастрированный, как в панели управления.

А вообще забавно, конечно, наблюдать как Windows семимильными шагами идёт к копированию линуксоподобных вещей. Ещё бы установку обновлений привели бы к простоте apt update && apt upgrade и стало бы совсем хорошо. Новое — хорошо забытое старое!

Я не хочу трахаться в гамаке на коньках

Я хочу полноценно трахаться в гамаке на горных лыжах!

Как грузятся программы с магнитофона в “Спектрум” или “Бекашку” все, конечно, помнят.

А вот загрузку ДОСа с винила я пока не видел. Теперь — видел 🙂

Практическая ценность, конечно, нулевая, это чисто по приколу, см. эпиграф. У чела был резак для записи на виниловые пластинки, записывать ему, наверное, было нечего, решил записать ДОС 🙂 Кстати, реально не могу понять, на кой хер такое оборудование вообще выпускается — писать надо С ЧЕГО-ТО, а это ЧТО-ТО заведомо будет выше качеством, чем нарезанная в домашних условиях грампластинка. К тому же стоит овердофига.

Чинил ноутбук

Мой рабочий ноутбук почему-то недавно перекосился — посреди клавиатуры вырос холм. Разобрал. Внутри ноутбука оказалась бомба. Почти не шучу.

Спасибо пластиковой оболочке батарейки — она таки уловила всю дрянь, которая решила оттуда вылиться. Вот радости бы было, если бы оно протекло мне на руки или коленки. И загорелось бы, до кучи.

Netgear

У меня есть некий внутренний говносписок компаний, чьи продукты я не покупаю из-за предыдущего отрицательного опыта. В первую очередь это, конечно, мой любимый “Самсунг”. Пёс его знает, почему так — у толпы народу всё работает, у меня нет. Но фиг с ним, поговорить я хотел не про “Самсунг”. Ещё одним элементом списка была продукция “Нетгир”. Потому что у меня сломалось два маршрутизатора этой фирмы. Причём довольно одинаково сломалось — при большом количестве траффика оно, походу, тупо перегревалось и висло.

А тут купил я домой где-то около двух лет назад ячеистую сеть Netgear Orbi. Сотрудника послушал, блин. А вот не надо было никого слушать — своя башка на плечах есть. И поначалу не было у меня к ней никаких нареканий. А за этот месяц, похоже, репутация этой компании в моём говносписке наконец оправдалась. Виснет, пидарас. Дети же дома, и оба мы из дома работаем. Как подналяжем на сеть — и всё накрывается медным тазом, чинить можно только перезагружанием маршрутизатора.

К тому же были тут недавно нехорошие новости про их продукцию:

https://www.tomsguide.com/news/netgear-router-admin-hack
https://www.pcmag.com/news/79-netgear-routers-vulnerable-to-serious-security-flaw

Это, правда, не про мою модель, но просто показывает, как компания относится к безопасности. И дело даже не в том, что в продукции есть дыры — они в любой продукции есть — а в оперативности их устранения. У той же Циски к тому времени, как опубликована инфа о дырках, уже обычно готово исправление.

Чего буду покупать на замену — пока не знаю. На Циску у меня бюджета нет — там самая дешёвая точка доступа двести долларов стоит. Изучаю вопрос. Если не Циску, то, наверное, Линксис (Циска им владеет). Ну или Юбикуити.

Как ФБР ловило твиттер-хакеров

Если интересно читать про кибер-безопасность, рекомендую к прочтению (англ):

https://www.zdnet.com/article/how-the-fbi-tracked-down-the-twitter-hackers/

В статье хорошо показывается то, что ловли кибер-жулья используется сумма улик, а не какая-то одна. Как нас учили в университете, нужно “созвездие улик”, чтобы из всего этого можно было выстроить одну непротиворечивую картинку. А вот деанон жулью устроили очень просто, прямо как-то даже немного обидно за жульё — нельзя же быть настолько тупыми, блин.

На случай, если кто-то не знает, что произошло, группа пидарасов получила доступ к управлению твиттером, включая возможность написания твитов от лица проверенных аккаунтов. Ну, они и написали, от лица Билла Гейтса, Безоса и прочих известных богатых граждан, мол, открываю аукцион невиданной щедрости — вот мой адрес биткоинского кошелька, пришлите денег — верну ровно в два раза больше. Денег, разумеется, никто не получил, кроме жулья.

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

Но быстро сработали, молодцы.

Замена экрана на планшете

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

Купил экран на замену, покурил ютуб. Оказалось совсем несложно. Аккуратно прогреваем паяльным феном (я настроил его на минимальную температуру в 100 градусов Цельсия) по периметру, это размягчает двухсторонний скотч, на который экран и приклеен. Аккуратно подцепляем, желательно неметаллическим инструментом, и снимаем экран.

Основное пространство внутри планшета заполнено, вполне ожидаемо, батарейкой (большая чёрная плоская штука справа). Заодно можно было, конечно, проапгрейдить диск (слева вверху, mSATA карточка), но там какой-то хитрый загрузчик, надо копировать, а у меня нет адаптера на mSATA. Да и места достаточно, это же не файл-сервер.

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

Фигня этот ваш АМД

Делал копию блюреевского диска, чтобы можно было на телевизоре фильмы смотреть. Я не могу сказать, что у меня очень старый компьютер, всё же i7 четвёртого поколения, 4.2ГГц, четыре ядра, но фильм он перекодирует в x264 со скоростью в среднем около 8 кадров в секунду. Смотрю, оказывается в моём любимом кодере “Хендбрейк” уже давно есть поддержка GPU (у меня тоже не шибко роскошная видеокарта NVidia GTX 1070). Обновил Хендрбейк, врубил — мать честная, двести кадров в секунду. При этом видеокарта нагружается всего на 23%, затык не в ней, а в том, что видеокарта используется только для кодирования видео. Для всех остальных задач, типа декодирования исходного материала, перекодирования звука, его микширования, и т.д. — используется по-прежнему центральный процессор, и он просто не успевает подтаскивать данные.

Стоит ли говорить, что после таких опытов я стал с ещё большим недоумением смотреть на все эти мега-мульти-ядерные десктопные процессоры от АМД? Ну на кой хер они? Ну вот был бы у меня АМД с 32 ядрами. Ну, кодировал бы он в 8 раз быстрее. И чего? Это 64 кадра в секунду. А тут двести! На видеокартах можно построить ЗНАЧИТЕЛЬНО более мощную числодробилку, чем на этом недоразумении. Причём видеокарт можно взять не одну. И получится это существенно дешевле. Фигня этот ваш АМД. То ли дело НВидия.

Искуственный интеллект

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

Но для того, чтобы научить нейросеть чему угодно, для начала надо сделать набор данных для обучения. В случае с играми, соответственно, это будут партии различных игр. Для начала я выбрал что-нибудь попроще: крестики-нолики. Благо ПОЛНОЕ дерево решений для этой игры очень небольшое. Чисто теоретически там 9! игр (около 360 000), в реальности намного меньше: не все игры идут 9 шагов, многие являются отражениями других игр, развёрнутых на 90, 180, и 270 градусов. И так далее.

Написал программу на Питоне, которая генерирует все возможные игры, играет в них, и записывает результаты. Таким образом, у меня получилась программа, которая играет в игры традиционным способом — через построение игрового дерева.

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

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

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

Вообще, если есть возможность строить игровое дерево — лучше строить игровое дерево. Такие программы будут играть в игру лучше, чем нейросети (которые по сути только распознают паттерны и реагируют на них). Но игровое дерево строить возможно далеко не всегда. Скажем, Го не поддавалось, поэтому нормально играть компьютер в Го наконец-то научились именно, что через нейросети. Потому что игровое дерево для шахмат — 10E120 (число Шеннона), а игровое дерево для Го — 1.74E172! Но даже Го меркнет перед огроменным деревом крайне (на первый взгляд) простой игры Стратего, чей размер составляет 10E535!!! Неудивительно, что компьютер играет в Стратего крайне слабо. Может быть, именно что нейросети научатся. В лоб, через построение дерева — путь тупиковый.

Нейронные сети

Ух, как продвинулся прогресс! Раньше создание своих нейронных сетей было занятием дико сложным, требующим понимания математики и нехилого программирования. Я даже нарисовал свою, на Сишарпе. Она, конечно, была простенькая, но я очень много понял (особенно хорошо я понял, почему ничего, кроме свёрточных сетей, для классификации изображений использовать невозможно — тупо памяти не хватит).

А теперь движок нейронных сетей не надо писать самому. Сначала появилась Caffe (я использовал её для одного из проектов в университете по поиску изображений), а потом Гугл открыл свой TensorFlow для всех. Но даже TensorFlow был ОЧЕНЬ непрост в использовании. А теперь выяснилось, что для TensorFlow написали кучу вменяемых библиотек, и создание нейронных сетей стало очень несложным занятием.

Их несколько, но больше всего мне понравилась библиотека keras. И дело не сколько в том, какая она хорошая, а в том, что для неё больше всего документации 🙂 В прошлый раз, когда я щупал нейронные сети, я использовал библиотеку TF-Slim. Документации для неё, можно сказать, не было. Пришлось хакать исходники примеров, чтобы получить что-то своё.

Но оцените, как это теперь просто!

Вот, например, Питонный код для создания простой нейронной сети из двух входных нейронов, 16 скрытых, и 3 выходных. На входе единички и нолики, представляющие собой True и False, и три выходных нейрона, один выдаёт результат логической операции XOR, второй AND, третий OR. Тренируется сеть меньше, чем за 1000 эпох (если увеличить количество нейронов в скрытом слое, то ещё быстрее).

import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers

model = tf.keras.Sequential()
model.add(layers.Dense(16, activation=’relu’))
model.add(layers.Dense(3))
model.compile(optimizer=’adam’, loss=’mean_squared_error’, metrics=[‘binary_accuracy’])

data = np.array([[0,0],[0,1],[1,0],[1,1]], “float32”)
labels = np.array([[0,0,0],[1,0,1],[1,0,1],[0,1,1]], “float32”)

model.fit(data, labels, epochs=1000)

print(model.predict(data).round())

Элементарщина же!

Осталось понять, чего прикольного теперь можно с этим сделать 🙂 Наверное, ничего — чтобы сделать что-то прикольное, надо поставить задачу и дать вводные 🙂 Разве что сделать нейронную сеть и запустить её наоборот, в генеративном режиме, предварительно скормив ей, например, музыку Моцарта в формате MIDI 🙂 Кстати, вполне реальная вещь, вот чувак кормил сеть Бахом: https://www.youtube.com/watch?v=SacogDL_4JU

Блютусное

Хозяйке на заметку. Если ваш лаптоп с десятой вендой вроде бы подключается к блютусным колонкам, но в панели управлением звуком эти колонки показываются как “disconnected” потому что индусские долбопрограммеры в очередной раз что-то сломали в ОС, попробуйте вынести колонки из системы КЕМ, и добавить следующий ключик в реестр из командной строки:

reg add HKLM\SYSTEM\ControlSet001\Control\Bluetooth\Audio\AVRCP\CT /v DisableAbsoluteVolume /t REG_DWORD /d 1 /f

Видимо, по умолчанию венда чего-то там пытается сделать с колонками, но натыкается на непонимание, и маркирует колонки как “отключенные”. А этот ключик, насколько понял, отключает эту функциональность.

Чего-то мне в последнее время всё больше и больше хочется на Мак. Игр вот под ним только мало, а для работы всё, что надо, есть. Мелкомягкие даже RDP клиент с поддержкой смарт-карт (это к вопросу, почему я категорически не могу работать под ентим вашим недоразумением под именем “Линупс”, помимо многих прочих причин) сварганили для Маков.