Бегом обновляться до версии 1.1.1i
Category: компьютерное
Винда и установленные программы
Вот вы как думали, что всё, что установлено — видно в панели управлении на 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

