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

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

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

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

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

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

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

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

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

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

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

Моё чтение

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

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

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

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

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

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

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

 

UPD через 10 дней

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

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

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

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. В принципе получилось, но каждый раз нужно вводить код. Видимо без кода нужно что-то за деньги у них покупать…  ну и ладно. Главное, что опыт получен и код заработал =)

 

Бесплатное обучение, видео лекций ВУЗов

В сети существуют проекты, которые позволяют неплохо подтянуть своё образование по многим ВУЗовским дисциплинам.
Буду сюда добавлять ссылки, учитесь на здоровье!
1. https://openedu.ru
2. http://universarium.org/
3. https://lektorium.tv
4. https://stepik.org/

Закрытие открытых файлов на сервере или сетевой папке

Случилась довольно частая ситуация. Один человек не закрыл файл в сетевой папке, который открыл на редактирование. А второй человек должен был перезаписать этот файл с новыми данными в ту же папку.

Админу необходимо узнать кто открыл файл, чтоб провести беседу и закрыть файл удаленно.
Если система старая, например windows XP (да, бывает еще стоят, из-за отсутствия драйверов и т.п.) можно пользоваться утилиткой Friendly Net Watcher.

Ну а если задачу удаленного закрытия файла решаем на Server 2012 то там через комбинацию win+x вызываем меню и запускаем Управление компьютером > общие папки > открытые файлы и там закрываем.

Расширенный поиск в лог файле — EmEditor

Сегодня пришлось поковыряться в лог файлах файл-сервера. Занятие нудное, но автоматизируемое.
Очень сильно помог с ускорением работы текстовый редактор EmEditor. Он умеет много чего, например, работать с регулярными выражениями. Очень широкие возможности по поиску текста.
Алгоритм был такой:
— скинул логи в текст
— открыл EmEditor и в несколько заходов сделал выборки по необходимым запросам
— чудесной кнопкой в поиске «извлечь всё» вытянул, что было нужно в отдельный текстовый документ
— подгрузил его в редактор таблиц как файл с разделителями (запятой)
— быстро обработал фильтрами

Наверняка, в программе EmEditor есть еще много прекрасного, потом поковыряю на досуге.