Мое чтение — Оруэлл — 1984

Давно хотел прочитать, да и в последнее время цитаты из нее обильно присутствуют в эфире.
Прочитал. Если коротко: размышлительная составляющая книги уравновешивает нудные моменты. Возможно я перечитаю ее лет через 5-10. А пока оставлю тут пяток цитат.

№1
А в общем, думал он, перекраивая арифметику министерства изобилия, это даже не подлог. Просто замена одного вздора другим. Материал твой по большей части вообще не имеет отношения к действительному миру — даже такого, какое содержит в себе откровенная ложь. Статистика в первоначальном виде — такая же фантазия, как и в исправленном. Чаще всего требуется, чтобы ты высасывал ее из пальца.

№2
В философии, в религии, в этике, в политике дважды два может равняться пяти, но если вы конструируете пушку или самолет, дважды два должно быть четыре. Недееспособное государство раньше или позже будет побеждено, а дееспособность не может опираться на иллюзии.

№3
В завоевание мира больше всего верят те, кто знает, что оно не возможно. Это причудливое сцепление противоположностей — знания с невежеством, циничности с фанатизмом — одна из отличительных особенностей нашего общества.

№4
Если человеческое равенство надо навсегда сделать невозможным, если высшие, как мы их называем, хотят сохранить своё место навеки, тогда господствующим душевным состоянием должно быть управляемое безумие.

№5
Мы знаем, что власть никогда не захватывают для того, чтобы от нее отказаться. Власть — не средство; она — цель. Диктатуру учреждают не для того, чтобы охранять революцию; революцию совершают для того, чтобы установить диктатуру. Цель репрессий — репрессии. Цель пытки — пытка. Цель власти — власть.

Как получить список ip адресов и MACов сети

Сейчас я работаю в Ubuntu в рамках программы плавного перехода меня из винды в более
операционную систему. Поэтому всё, что можно делать на моем уровне осознания в линукс я стараюсь там и делать.
Итак, задача в одно нажатие получить список активных IP адресов в сети и MAC адреса устройств. Но с начала поиграемся с выводом в консоль разной нужной информации.
Запускаем терминал, логинимся рутом (без рута nmap не всё показывает), я делаю

sudo -i

Если просто хотите посмотреть какие адреса заняты, какие не заняты и чем заняты, то можно воспользоваться командой, которая просканирует всю подсеть

nmap -sP 192.168.1.1/24

ну или заданный диапазон адресов

nmap -sP 192.168.1.1-100

Чтобы увидеть список незанятых в данный момент IP адресов делаем так

nmap -v -sP 192.168.1.2-10 | grep down

Чтобы увидеть список занятых IP адресов и сопутствующую информацию (имя устройства в сети, если есть, MAC адрес и название производителя железки) то делаем так

nmap -sP 192.168.1.1-10 | grep -C 1 up

Если стоит задача найти какой IP раздался конкретному устройству с известным MAC ом — не проблема, вводим такую команду

nmap -sP 192.168.1.1-254 | grep 40:04:61:9d:a7:ac

Теперь сохраним найденную информацию об IP адресах в файл и дальше уже будем работать с ним.

nmap -sP 192.168.1.2-254 | grep -A 1 -B 1 up | grep -v "up" > /home/username/ip.txt

Коротко поясню, что тут происходит для тех, кто не сталкивался. Мы обрабатываем результат работы команды nmap с помощью grep. В первой обработке мы ищем в выводе nmap слово up и добавляем к ней предыдущюю и последюущую строки. Во второй обработке отбрасываем строку с вхождением up, т.к. она не содержит интересующую нас информацию. И всё что осталось записываем в файл ip.txt в юзерскую директорию. В файл записываем для того, чтобы сохранить состояние, ибо пока nmap отработает второй и третий раз может изменится его вывод, nmap отрабатывает далеко не мгновенно.

Теперь, чтоб сильно не заморачиваться выведем через промежуточные файлы MACи и IPшники.
Так выведем только список IP адресов и имен, которые записались в файл по предыдущей команде

grep -E '\b[0-9]{1,3}(\.[0-9]{1,3}){3}\b' /home/username/nmap.txt | cut -c 21-

А так список MACов и производителей

grep 'MAC' /home/username/nmap.txt | cut -c 14-

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

Создаем в хоумдире файл ip.sh
записываем в него все команды, у меня получилось так:

1
2
3
4
5
#!/bin/bash
nmap -sP 192.168.1.1-254 | grep -A 1 -B 1 up | grep -v "up" > /home/username/nmap.txt
grep -E '\b[0-9]{1,3}(\.[0-9]{1,3}){3}\b' /home/username/nmap.txt | cut -c 21- > /home/username/ip.txt
grep 'MAC' /home/username/nmap.txt | cut -c 14- > /home/username/mac.txt
paste /home/username/mac.txt /home/username/ip.txt > /home/username/result.txt

Выдаём файлу разрешение запускаться

chmod +x ip.sh

И под рутом запускаем следующим образом

#./ip.sh

Как только скрипт отработает, в хоумдире создадутся файлики. Наш результат в файле result.txt

Опыт эксплуатацтии wi-fi через внешние антенны-радиомост

Для соединения двух физически удаленных друг от друга сегмента сети используем внешнюю точку доступа wi-fi. Это такие две тарелочки сетчатые с головкой, в которой размещается усилитель wi-fi сигнала. Одна настроена как access point, вторая, соответственно как station. Друг к другу они завязываются по mac адресу. Имеют web интерфейс для настройки.

Почти 2 года работала связка без проблем. В дождь-ветер бывают бОльшие чем обычно выпадения пакетов, из-за чего дисконектит из терминалов… но в целом решение рабочее.

В последнее время несколько раз сбрасывалась в default, хорошо, что не забыл после настройки слить конфиги. А на днях отвалилась удаленная часть сети и в web интерфейс я зайти не смог. Пришлось лезть на крышу… Заранее я подсуетился и выбил резервную железку, которая лежала у меня и ждала своего часа. Заливаю в резервную «головку» конфиг, проверяю на столе, лезу на крышу — устанавливаю. Кстати, пластиковые защелки ломаются на ура, так что осторожно нужно… а с другой стороны, вода, которая текла по пластику вместе с пылью образует тонкий слой абразива во всех зазорах, и чтоб вытянуть «головку» из «тарелки» пришлось приложить изнутри конструкции торцом перочинного ножика.

Установил, проверяю с компа — вебка не грузится, хотя само тело пингуется (статический IP). После акробатических этюдов на крышу с крыши я проверил всё, кроме кабеля (кабельного тестера под рукой не было). Глядя на сгущающиеся тучи, подумал, нужно тянуть кабель до перерыва, иначе придётся тянуть его по дождю….

В общем видимо перетертость в кабеле (или вода) приводила к замыканию проводников в витухе, отчего сбрасывалась прошива, а в конце концов привело к вышеописанным событиям. Что характерно, девайс подавал мне сигналы о этой печальной ситуации морганием 2х средних светодиодов поочередно красным светом.

Как только прокинул кабель, обжал концы, включил девайс, всё пошло. Кроме того, пришлось съездить на удаленную территорию и прописать в конфиг второй «тарелки» новый mac адрес. Так что на будущее подсказка для самого себя, ставь ту же головку, если она живая!

Java — путевая заметка 2

Был совершен очередной наскок на Java. В процессе наскока происходили следующие озарения в хронологическом порядке:

А не написать ли мне арканоид? Расчехлил javaFX, начал смотреть вот эти уроки  и этот пример реализации отражений. В результате это всё объединил, но застопорился на отлавливании координат всех объектов, походу они у меня то ли в разных слоях получились, то ли фиг его знает… Но в результате размышлений над этим я набрёл на перевод статьи какого то клёвого чувака Как начать писать игры и осознал, что я перепрыгнул пару уровней и стоит внять советам. А тем более до арканоида меня посещала идея начать с Lines, я их даже на python начал писать и даже до чего то там дописал, пока в графы и алгоритм Дейкстры не упёрся…

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

В первовй реализации было сделано следующее:

  • Случайно определялся чем ходит первый игрок
  • Случайно совершались ходы, с проверкой на победу
  • Всё это крутилось в цикле, пока не отыграется 1000000 партий, а по итогу выводилась статистика игр.

При таком подходе шанс ничьи почти жестко равен 11,4% (можете подумать перед сном, почему оно так).

Во второй реализации в моем велосипеде прибавилось 3 новых колеса и не меньше 5 педалей. По итогу:

  • Был реализован метод superMind при котором комп не может выиграть сам у себя.
  • Написал свой (как я думаю, по крайней мере нигде не подсматривал) алгоритм для повышения весов клеток перспективных или пред выигрышных ходов.

В процессе написания псевдокода разумеется залез читать как по серьезному решают такие вопросы, полез читать про алгоритм минимакс, нихрена не понял, но начал читать книгу по алгоритмам и смотреть видео по алгоритмам. По поводу минимакса оставлю тут пару ссылок, т.к. я обязательно в конечном итоге доведу свои “макароны” до совершенства.

  1. Заумная институсткая хрень по минимаксу
  2. Всякое бла бла и примеры реализации минимакса на java (английский)
  3. Концептуально-иллюстрированная статья, которую я обязательно осознанно прочту, когда чуток поумнею

Быстрая онлайн верстка html

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

Чтоб долго не думать, воспользовался вот этим онлайн сервисом —

https://filyanin.ru/vizualnyy-html-onlayn-redaktor.html

Всё просто и понятно, быстро сделал то, что хотел.

А чтоб красиво выглядело подбирал цветовой код тут —

https://colorscheme.ru/html-colors.html

Самопроизвольно перезагрузился Windows Server 2012 r2 — что делать?

  1. Открываем выполнятор по сочетанию win + R и вводим туда eventvwr 
  2. Жмем справа на «воронку» и настриваем фильтр представления — Дата: Любое время, Уровень события: Критическое, по журналу Windows.
  3. Получаем выборку критических событий из лога с кодом событий.
  4. Внимательно читаем и запомнив код события ищем его в инете и читаем что это такое, например тут http://www.geocities.jp/timstjp/WinDbg-BugCheckCode.htm

Моё чтение

Занырнул в мир фантастики.

Иван Ефремов. Туманность Андромеды.

Роман написан в 1957 г. Автор — реальный ученый. Размышления о завоевателях космоса и взаимоотношениях людей в обществе победившего коммунизма. Книга написана в момент бурного научного и промышленного роста в СССР. Жаль, что поддерживать постоянный бурный рост невозможно, но поразмышлять над стремлениями и видением будущего тех лет, достаточно интересно.

Сергей Лукьяненко. Звёзды — холодные игрушки.

Сергей Лукьяненко. Звёздная тень.

Дилогия, в которой земляне уже вступили в контакт с другими цивилизациями и довольствуются технической функцией космических перевозчиков. Существуют «сильные»  и «слабые» расы. Положение слабаков нравится не всем землянам…

Это одна из моих любимых книг Лукьяненко. Читал не первый раз. Каждый раз находишь что-то новое. Очень хорошая, сильная книга. Яркий «экшн» в сочетании с глубокими мыслями о правильном.

 

UPD через 10 дней

Сергей Лукьяненко. Трилогия : «Лорд с планеты Земля»

«Принцесса стоит смерти», «Планета, которой нет» и «Стеклянное море».

Хорошие книги. Понравились, хоть сначала отпугивало название =)  Думал что это фэнтези про средневековье. Если буду потом вспоминать про что — так там про атомарный меч, сеятелей, фангов, и даже про Бога. В стеклянном море понравился сюжет про клэнийцев и их кодекс чести.

Базы данных GDB и DBF- Входим, меняем, экспортируем.

Иногда приходится думать и делать всякие телодвижения с базами данных странных типов.

Вот например у меня есть весовой терминал с программой своей, которая сохраняет все данные в базу данных InterBase. Файл называется как то так — DATA.GDB

В самой программе данные из этой базы автоэкспортируются в DATA.DBF для экспорта из него данных в 1С УПП. В этой самой 1С УПП заказной программист написал кучу кода для работы с этими данными, который мы с другим программистом удачно выковыряли и интегрировали в новую конфигурацию той же 1С УПП, на которой работаем сейчас.

В процессе разбора что там к чему появилась надобность влезть в саму базу и посмотреть как оно там устроено. Итак, для того, чтобы подключится к Interbase базе нужно поставить IBExpert. Для коннекта к моей базе прокатил стандартный логин\пароль от интербейз базы — sysdba \ masterkey.

Для того, чтобы дёрнуть данные из файла DBF в текстовый файл с разделителями пригодилась другая программа — WinDbfView

Java — путевая заметка 1

Сел вечерком потестить новый SSD под Ubuntu. Скачал IDEA.

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

Запуск IDEA в убунте происходит запуском «папка_куда_развернули_архив/bin/idea.sh«. Для того, чтобы каждый раз всё происходило правильно нужно в наутилусе правка > параметры > поведение  ставим галку на «Каждый раз спрашивать» в пункте «Исполняемые текстовые файлы», это чтоб sh файлы запускались по клику.

Поскольку в винде недавно потыкивал в JavaFX, решил посмотреть как оно в убунте. Почему то IDEA не подхватила OpenJFX сама. Пришлось зайти в структуру проекта и передёрнуть там SDK. Заходим в IDEA  File -> Project Structure -> Platform Settings -> SDKs удаляем там SDK и добавляем опять его же. Если же ругается Usage of API documented as @since бла бла, так это нужно File -> Project Structure -> Project Settings -> Modules -> «Your Module Name» -> Sources -> Language Level передернуть на необходимый. Слава бубну, заработало.

Начал разбираться как запаковать из java папку и выгрузить ее в облако. Ну, такой типа бекапчик. В результате могу оставить для следующих поколений хинты:

1. Путь к файлам в java под ubuntu выглядит как то так:

zipDirectory(«//home//oleg//test», «//home//oleg//test.zip»);

Вызываем метод зипуем_директорию («какую», «куда»). В данном примере метод пакует папку test в моём хоумдире и записывает ее в файл test.zip в тот же хоумдир.

2. Чтоб подцепить чужую библиотеку в проект файлы jar нужно скопировать в директорию lib своего проекта и в IDEA File -> Project Structure -> Libraries добавить их.

Взял библиотеки дропбокса и попытался выгрузить файл в свой dropbox. В принципе получилось, но каждый раз нужно вводить код. Видимо без кода нужно что-то за деньги у них покупать…  ну и ладно. Главное, что опыт получен и код заработал =)

 

Ссылки для начинающих программировать на java

Буду тут оставлять ссылки на странички, которые привлекли моё внимание и на которые я бы хотел вернуться в будущем.
1. http://eax.me/ — Записки программиста
2. Горячие клавиши Intellij IDEA
3. Руководство по языку программирования Java