Недавно в одном из обсуждений прозвучало слово «сверлилка».
А у меня в качестве сверлилки пока только советская дрель на стойке. Неплохая дрель, на неплохой стойке. Но нормальная сверлилка, конечно, была бы получше.
И тут в Кастораме я заметил сверлилку подходящих габаритов (см. рис. 1). И даже снял с неё габаритные размеры и убедился, что она вполне поместится в шкаф, на то место, где сейчас живёт дрель на стойке.
И взялся смотреть обзоры на эту штуку. И хорошо, что взялся. В общем, эта штука не является сверлилкой. Это действующая модель сверлилки в натуральную величину, к сожалению. Увы. Нужны другие варианты.
Мне очень нравятся мышки Logitech G305. Они прекрасны. Но вот кнопки в них отчего-то долго не живут. В первый раз я менял в этой мышке кнопки в 2022 году. Ставил вот такие. Соблазнился на заявленные 60 млн нажатий.
Уж не знаю, сколько там в результате было этих самы нажатий, только прожили они чуть юольше, чем 2 года. И вчера я их заменил на те, что на рис. 1.
Заменил на примерно такие. (Примерно — потому что те, что я покупал, уже закончились там.) Уж не знаю, сколько они проживут, но работают они гораздо тише, чем предыдущие. Не сказал бы, что они прям «бесшумные», но очень близко к тому.
Наверное, я уже могу оказывать услуги по замене кнопок в этих мышках. 🙂 В общей сложности я это сделал уже в 5-й раз. (Дома у меня 4 такие мышки на обслуживании.)
В данный момент MIDI-баян уже практически готов в плане железа и прошивки. (Осталось закончить с герметизацией корпуса и с креплением декоративной решетки.) И в наборе осталось много всякого неиспользованного.
И я задумал сделать «предсказатель погоды» (см. рис. 1). В наборе для него уже всё есть, кроме корпуса (ардуино-нано, датчик атмосферного давления, сервомотор, который крутит стрелку, полевой странзистор, который управляет подачей питания на сервомотор). Корпус я буду делать «по дешману» из сантехнической ПВХ трубы.
Как я докладывал ранее, в домашней сетке был разведён собственный DNS-сервер.
И сегодня я полез проверить, как с этим всем теперь будет работать единственный домашний комп на 10-й винде.
И опасения полностью подтвердились.
Когда я её устанавливал на этот комп, я большинство настроек оставлял по-умолчанию, меняя только то, что нужно для типовых задач этого компа.. А сейчас я полез со своими проверками туда, куда до сих пор не залезал. И обнаружил интересное.
IPv6 DNS
Оказывается, винда в безальтернативном порядке выбирает DNS-сервер с IPv6 адресом. Такой DNS-сервер у меня есть, и это, как нетрудно догадаться, мой роутер ZyXEL Keenetic. И опцию «IPv6 DNS-сервер» в нём можно выключить только вместе с поддержкой, собственно, IPv6. Ни на какие другие варианты мой Зухель не согласен; говорит «хочешь ты или не хочешь — а я буду DNS-сервером для IPv6». Я никогда бы не узнал об этом, если бы не развернул альтернативный DNS-сервер.
Ну думаю, ладно. Просто укажу в настройках винды, что для IPv6 нужно игнорировать предложенный адрес DNS-сервера.
Фигвам. Нет такой настройки в винде. Выбор есть между вариантами: а) использовать сервер, полученный по DHCP; б) задать адрес своего DNS-сервера, причем указать можно только IPv6 адрес (что логично).
Seems to me that filling the Preferred DNS Server field with something is required. I suggest:
Preferred DNS Server — ::1, Alternate DNS Server — blank
DNSv6 will fail immediately and auto fallback to DNSv4.
Огонь! Указываем для IPv6 DNS адрес localhost, где никакого сервера нет, винда об этот адрес обламывается, и переходит к DNS-серверам с IPv4 адресами.
При этом, мой рабочий лаптоп (с Win10 на борту), будучи подключенным к этой же самой сети, как-то умудряется работать как надо: брать только тот сервер, который предложен в IPv4 DHСP. Значит настроить сие по-человечески всё-таки можно. Надо будет поинтересоваться у наших админов, как они добились правильного поведения винды.
IPv4 глюки
А вот с темой общения этого компа с остальными по IPv4 — вообще загадочный глюк.
Я, по простоте душевной, до сих пор думал, что если у компа есть сетевой интерфейс, на котором задан, например, адрес 192.168.1.20 и маска 255.255.255.0, и эта карта воткнута в Ethernet розетку, то этот комп без проблем должен общаться с любым устройством, находящимся в той же самой сети 192.168.1.0/24.
Но мой Windows-10 Home, почему-то, оказался не настолько прост.
Он без проблем общается с принт-сервером, который сидит на адресе 192.168.1.6, и нормально печатает на настроенном принтере с этого принт-сервера. Он без проблем общается с NAS (192.168.1.3), доступ к которому тоже настроен на этой винде.
Но есть ещё 3 Linux-компа: 192.168.1.7, 192.168.1.9 и 192.168.1.10 (далее №7, №9 и №10 соответственно). С компом №10 винда нормально взаимно пингуется и соединяется, а с №7 и №9 — и не пингуется, и не соединяется; т.е. и с самой винды №7 и №9 не пингуются, и со стороны №7 и №9 винда на пинги не отвечает.
Кiк тiк?
Я подозреваю, что гадит ипанутый «брандмауэр Windows», но понятия не имею с какой стороны к нему подступаться. В сетевых потрохах 10-й винды мне до сих пор копаться не приходилось.
Кривые мои руки, конечно, тоже возможны, но я в упор не вижу, где можно накосячить в настройке одной простейшей сетки 192.168.1.0/24. Всё, буквально всё остальное в этой сетке идеально работает (3 штуки десктопных Линуксов, планшеты, телефоны, NAS, принт-сервер на OrangePi, рабочий лаптоп на Win-10), и только Win-10 Home, установленная с честно купленного дистрибутива с практически всеми настройками по-умолчанию, выкобенивается.
Я уже даже обратил внимание на том, что №3 (NAS) и №10 (один из Линуксов), которые нормально пингуются, и сама винда подключены проводами, а №7 и №9, которые не пингуются, подключены по WiFi. Но ведь №6 (принт-сервер) тоже подключен по WiFi и при этом нормально виден с винды!
Я даже не могу сказать, было ли так всегда, или всё испортилось недавно, потому что той работе, для которой предназначена эта винда, данный удивительный глюк не мешает. Но блин!
На днях я в очередной раз занимался настройкой всякого домашнего компьютерного, и осознал, что IP адреса всяких домашних устройста уже перестают держаться в голове; приходится лазить в админку роутера, чтобы вспомнить.
Не нравится. Хочу конфигурировать вообще всё, используя имена, а не адреса. А для этого нужен DNS-сервер на локальную сетку.
Изучение вопроса навело меня на очень и очень интересный проект: Pi-hole. Это оказалось именно то, что доктор прописал.
Оно без проблем утановилось на мой принт-сервер, который у меня крутится на OrangePi. Конфигурируется оно тривиально просто, и возможностей вполне хватает для небольшой домашней сетки. Теперь все адреса везде с чувством глубокого удовлетворения я меняю на имена.
Как, наверное, любой начинающий ардуинщик, когда я узнал о том, как можно реализовать всякое с использованием функции millis(), возвращающей 32-разрядное беззнаковое целое число миллисекунд, прошедших с момента запуска микроконтроллера, я задался вопросом: «а что будет, когда счётчик миллисекунд переполнится?»
Функция millis() для ардуинщика — это альфа и омега всей «многозадачности» ардуино. Если что-то нужно регулярно выполнять через заданный интервал времени, то обычно пишут какой-то такой код:
uint32_t my_timer; // где-то объявляем переменную "таймер"
#define MY_PERIOD 1000 // "раз в секунду"
...
my_timer = millis(); // "запускаем" таймер, запоминая в
// переменной текущее значение millis()
...
// и где-то в основном рабочем цикле пишем примерно такое:
if ( millis() - my_timer > MY_PERIOD ){
// Заданное время ожидания прошло
// делаем здесь, что хотели
my_timer = millis(); // снова взводим таймер для следующего
// срабатывания
}
Так вот, предположим, что в «таймере» мы сохранили число 0xFFFFFFFE. Естественно, 32-разрядный счётчик переполняется через 1 миллисекунду и millis() начинает возвращать 0, 1, 2, и т.д.
И куча новичков-ардуинщиков в интернете пугается, когда понимает, что при таком раскладе «всё пропало», потому что в этом случае при проверке срабатывания таймера из 1 будет вычитаться 0xFFFFFFFE и, вроде бы, так нельзя. Поиск по клчевым словам «переполнение millis()» выдаёт кучу ссылок на страницы, где «знатоки» со знанием делом говорят «не ссыте, всё будет нормально, потому что вычитание беззнаковое», не объясняя при этом ничего.
А я объясню, мне не жалко. 🙂
Для того, чтобы убедиться, что «так можно», нужно всего лишь понимать, как в процессорах общего назначения происходит вычитание целых чисел. А происходит оно через сложение.
В этом месте, может, стоило бы рассказать про комбинационную схему «сумматор» и объяснить, как она работает. Для того, чтобы на низком уровне показать, как же, собственно, компьютер складывает числа. И чтобы стало понятно, что вычитать (подобно тому, как это делает человек) процессор не умеет. Он умеет только складывать. Но про (полный) сумматор читайте в другом месте. А здесь и сейчас достаточно понять, что кто-то очень умный придумал, как можно вычитать одно число из другого, имея в качестве инструмента комбинационную схему, которая умеет только складывать (суммировать).
Он придумал представлять отрицательные числа в т.н. «дополнительных кодах«. То есть, если нам надо вычесть из положительного числа А положительное число Б, нужно преобразовать число Б в дополнительный код (получив тем самым число -Б), и после этого спокойно складывать числа «А» и «-Б». Здесь важно то, что беззнаковые числа тоже преобразуются в дополнительный код при вычитании.
Т.е. если наше А = 3 и Б = 1 (00000011 и 00000001 в двоичном представлении), то при вычитании Б из А будут складываться числа 00000011 и 11111111. В результате такого сложения мы получим 00000010, а точнее (1)00000010, где единица, образующаяся при сложении старших разрядов улетает в переполнение (за пределы нашего 8-разрядного целого). То есть, при сложении числа 3 и представленного в дополнительном коде числа -1 мы получили число 2.
В случае с millis(), нам надо было из беззнакового числа 1 вычесть беззнаковое число 0xFFFFFFFE (т.е. двоичное 1111111111111110). Ну, хорошо, преобразуем вычитаемое в дополнительный код и получаем двоичное 0000000000000010. В результате мы складываем 1 и двоичное 10, получая двоичное 11, т.е 3. Т.е. результатом операции «1 — 0xFFFFFFFE» будет 3. И это именно то, что мы рассчитывали получить, проверяя таймер:
1111111111111110 <-- здесь "засекли" таймер
1111111111111111
0000000000000000
0000000000000001 <-- а здесь "1 - 0xFFFFFFFE = 3"
Т.е. всё, что надо, успешно вычитается, и получается именно то, что надо. Вот такая магия.
P.S. Только что осознал, что двоичное представление 32-разрядных чисел у меня получилось 16-разрядным :). Но не буду исправлять, т.к. будет хуже читаться. А на суть явления размерность чисел не влияет. Можно было хоть на 3-разрядных числах это показывать.
Попался мне вот такой ролик, где товарищ зачищает провод МГТФ с помощью дуговой зажигалки. И показалась мне эта идея достойной того, чтобы попробовать. И я попробовал.
И действительно, точечное воздействие высоковольтной дуги разрушает изоляцию, и она потом легко снимается пальцами. В процессе образуется некий намёк на дым, но думаю, что в проветриваемом помещении (на рабочем столе на лоджии, то есть) это будет совершенно незаметно.
… что за все эти годы, пока моё «радиолюбительство» стояло на паузе, никто так и не придумал нормальную зачищалку провода МГТФ.
Я собираюсь межблочные связи тянуть именно МГТФом. Я помню, насколько он хороший, гибкий, мягкий и прочный. Но, оказывается, я напрочь забыл, как он плохо зачищается.