12:13 

Доступ к записи ограничен

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

09:19

Doom 4 Doom

Я тут недавно знатно на три ночи подзалип - наткнулся на проект Doom 4 Doom, который в старый добрый второй дум добавляет оружие, монстров и геймплейные фичи из Doom 2016.
Игра стала зубодробительно сложной (поначалу), пока я не освоил весь новый арсенал - который включает в себя возможность ставить свою голографическую копию, кидать гранаты, совершать двойные прыжки и улучшать оружие. (список модов на память)



А вообще я тут сижу и загибаюсь потихоньку, живот ноет постоянно. Во вторник договорённость с врачом в центральной клинике, через коллегу на работе договорился на приём - посмотрим что скажет. Ночь не спал как обычно, зато часа три смотрел видеообучение на тему сайтостроения и SEO. Я в целом так думаю, что живы будем - не помрём, а если помрём - то никто не вечен, никуда не денешься. Но всё равно, очень страшно лежать каждую ночь, глядя в темноту и чувствуя, как в такт сердцу пульсирует боль.



Итак, на моём счету второй заваленный экзамен.
Не стоило бы и писать, если бы не получилось так иронично.

Читать простыню

Я только что наткнулся на статью одного чувака.
Вкратце - чувак уехал глубоко в Гималаи, в глушь, у него разбился экран ноута, но он смог приспособить смартфон в качестве экрана и продолжил писать книгу. А я вам поведаю крупицу его мудрости.

Дано:
очень плохой интернет:
- постоянно рвется соединение, огромные потери пакетов
- пинг от 5000 до 40k
- реальная скорость исчисляется десятками байт в секунду (в среднем 100 Кб в час)
фактически, при таких условиях нельзя загрузить ни одну страничку, даже самую мелкую - браузер выдаёт ошибку по таймауту

Задача:
- необходимо получать информацию из интернета, типа шариться по страничкам и всё такое
- программа-максимум: надо прочитать надпись, которая находится в середине определенного видео на youtube

Решение:
Сперва — программа-минимум. Мы не можем качать мегабайты данных, из которых состоит большинство современных сайтов. Но можно сделать так, чтобы эти мегабайты качал кто-то другой, а мы качали уже отрендеренную страницу, да ещё и в текстовом режиме. Поэтому подключаемся по SSH к своему серверу (или чужому, к которому есть доступ, хотя это нехорошо и Санта не принесет вам подарки), после чего на удалённом сервере запускаем консольный браузер. Стандартное разрешение консоли в текстовом режиме 80х25 символов, это 2000 байт, или 2 Кб. Если изначальная страничка весила 5 Мб - мы скачиваем в 2500 раз меньше данных. Да, нет картинок и не работают скрипты - но какие к чёрту картинки при канале 20 байт/с ?

Пункт два - борьба с задержками. Всё что мы вводим в консоли, отправляется в виде команд на сервер, а он отправляет обратно то, что должно отобразиться на экране. Любой ввод текста (например, web-адреса) превращается в мучение с ожиданием 10-15 секунд, когда на экране загорится очередной введенный символ. На помощь придёт mosh - замена ssh. Использовать очень просто - в консоли вместо ssh пишется mosh.

Как работает MOSH

mosh-подключение не боится обрывов связи и переподключения с другого IP-адреса. Например, можно набрать команду, после чего отрубить 3G-интернет, включить Wi-Fi и увидеть, как на экране появился результат выполнения команды на удаленном сервере.

Ну и пункт 3. Вам надо получить информацию, которая выводится на странице с помощью скриптов, флеша или видеоплеера. С одной стороны возрастают требования к пропускной способности канала (видео на youtube легко может потребовать 10 Мб в секунду). С другой - консольный браузер на удаленном сервере часто не умеет отображать даже картинки, не то что видео.

И даже для такого случае люди придумали решение! На удаленном сервере в графическом режиме запускается полноценный браузер, после чего изображение переводится в текст и отправляется на клиент по ssh-каналу. Дополнительно реализовано управление из консоли курсором мыши.
Выглядит это ожидаемо ебано
Но поймите правильно - мало какой утопающий начнёт возмущаться дизайном спасательного круга, который ему бросили ))
Речь идёт об инструменте, позволяющем получить доступ к информации, которая требует в пару тысяч раз большей пропускной способности, чем у вас есть. Этот инструмент не предназначен для постоянного использования, но когда он понадобится, один или два раза в жизни — вы будете рады, что он существует. И особенно хорошо с ним в связке будет работать mosh.

Я нашел бар с кошками. Одна из них сейчас лежит положив голову мне на колено.

Который раз я вечером пятницы пытаюсь хоть кого-нибудь вытащить в бар в центр.
Который раз ответом мне лишь тишина.
Я конечно понимаю что я нахер никому не сдался и меня мало кто читает))
Сижу на работе, вожусь с ноутбуком - потом поеду в бар, даже если один.
Скорее всего в "Цветочки" на Рубинштейна.

Будучи в командировке на Белом море, я прочитал книгу под названием "Совершенный код" Стива Макконнелла.
Я считаю, что это книга, которую начинающий программист обязан прочитать в самом начале своей карьеры.
Это реально Главная Настольная Книга программиста, в которую надо периодически заглядывать, чтобы освежить память.

Так вот - я нашёл ВТОРУЮ главную книгу - и к огромной удаче, она выложена автором бесплатно в виде online-версии. Я тут попытался выразить, что я думаю по поводу этой книги - но так и не смог подобрать слова)) Поэтому приведу на примере.

Вот вы знаете, как работает компьютер? Что происходит в его железных мозгах, когда запускаете программу? Совершенно случайно, в качестве побочного эффекта, вы разберетесь в этом после прочтения одной из глав.

В книге есть глава, которая рассматривает в качестве примера фэнтези-игру, где у пользователя есть возможность добавлять свои заклинания без доступа к исходным кодами игры и перекомпиляции. Как можно реализовать такой функционал? Вариант 1 - добавить самописный интерпретатор, который будет считывать файл с описанием заклинания и исполнять. Сложно? Я думал, что сложно - нихуя. В статье на пальцах расписывается, как написать интерпретатор - и при прочтении осознание обрушивается на тебя, как будто архангелы затрубили в свои трубы. И это ещё цветочки на окраине поля, маленькие запыленные цветочки в пыли на обочине.

Интерпретатор медленный и жрет память. Более быстрый способ - написать виртуальную машину, которая будет считывать из файлов байт-код и его исполнять. Сложно? НИХУЯ !!! Пока ты удивлялся цветочкам, архангел размахнулся и хорошенько приложил тебя Волшебной Трубой Осознания прям по голове. Виртуальная машина? Делается просто, бах бах, вот так. Интерпретатор держит в памяти древовидную структуру объектов, байт-код линеен и потому быстр (труба осознания прилетает в голову), чтобы хранить данные по мере движения по байткоду используется стек (ещё удар). Реализовать цикл в байткоде? Просто goto на нужный элемент, с сохранением счетчика цикла в стек (труба осознания ревёт над ухом). Тут автор вкрадчиво подбирается к теме исполняемых процедур. Вызов процедуры - это тот же оператор goto с сохранением текущего места в байткоде в стек возврата. На словах про "стек возврата" ты буквально слышишь, как сраный архангел набирает в лёгкие воздух, и лавина осознания накрывает тебя с головой. Работа процессора, вызов функций, точка входа, хранение данных в стеке, хранение параметров в регистрах, стек возврата — всё это складывается в цельную картину. Ты читал про разработку игры? Поздравляю - теперь ты знаешь, как работает реальный процессор.

И это была всего одна глава из книги. Вот она на русском.

Есть такая нашумевшая книжка про Анастасию и кедры, которая у нас в стране переросла в очередную религию.
И вот тут в одном чятике скинули книжку "Анти-Анастасия". Решил мой ответ с того чятика сохранить в дневнике, для потомков.


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

Есть довольно подробные исследования феномена "веры", суть которых (если своими словами и не вдаваться в детали) такова: логические размышления процесс для мозга трудозатратный, и если что-то позволяет его избежать, то мозг радостно этим пользуется.

Представьте, что вы сидите дома и делаете домашнее задание, перед вами сложнейшее уравнение с логарифмами и прочим говном, и стоит задача получить ответ (ход решения не важен). И тут появляется более старший товарищ, смотрит в тетрадь и говорит: "Пятьдесят! Пошли в футбол гонять." Да, возникают опреленные сомнения, что товарищ всё правильно посчитал (и что вообще считал). Тем более что у товарища есть очевидный интерес вытащить тебя на улицу, и никакой заинтересованности в том, чтобы у тебя в тетради был правильный ответ. Как поступит в данной ситуации "среднестатичтический" человек? Представьте - позади пара часов мучительных попыток решения, впереди - неизвестно сколько ещё, и тут появляется человек с готовым ответом. Просто принять решение "поверить" - и мало того что задача решена, так ещё и ответственность за правильность решения лежит на ком-то другом!

Отсюда появляется феномен "веры" - перед человеком в жизни появляется очень много сложных этических вопросов, равно как и банальный "в чем смысл моей жизни". Человек может не думать об этим вопросах, но это не значит что их нет и они не висят на душой. Религия предлагает готовый ответ. И даже если корыстные цели налицо, а агрументация не выдерживает критики - люди с готовностью обманываются, искушение слишком велико.

"Анастастия" - это такая "сказка для взрослых". Она не выдерживает критики в принципе, подход с позиции критического мышления немедленно сказку разрушает. Но по причинам выше люди "выбирают поверить". Так же, как и с религией.

И в этом плане автор "разгромной" книги ничуть не лучше, потому что разрушает чужую веру не с позиции здравомыслия в целом (типа люди, включите голову и примените логику - это ж бред!) - он это делает, апеллируя к таким же бредовым и алогичным понятиям своей веры, т.е. к понятиям "бесов", "искусителей", "змеев" и прочей нечисти. Ну и да, слово "Бог" всегда пишет с большой буквы )

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

10:51

№%?&

Вместо тысячи слов



читать дальше

Почти 4 часа утра. Ловлю себя на мысли, что снова пялюсь на объявления о продаже пленочных фотоаппаратов.
В частности, Canon EOS 650.

14:44

Ладога

Со вчерашнего дня собираюсь на Ладогу на неделю минимум (а то и на 8-9 дней).
В планах обойти под парусом весь северо-запад, возможно дойти до Сортавалы.
Парус — одна из причин, почему я не пытался организовывать ещё людей: за нами будет не угнаться.

Едем вдвоём с Котом. Где-то внутри меня возмущается мой внутренний мужик - ему интереснее ходить в поход с девушкой, с которой хоть теоретически что-то может быть)) С другой стороны - Коту я давно обещал, и опыт у неё есть, и человек надёжный. Так что мы закупили еды и алкоголя на двоих на 4500р, и теперь как в адекдоте - со всем этим говном попробуем взлететь.

Для байдарки я купил тележку, она повезет основной груз. Но большой рюкзак всё равно придётся взять.
А ещё я распечатал крутые карты))

После неудачи с яхтой у меня снова налицо потеря жизненных ориентиров.
Была цель — и нету. На права отучился, экзамен не сдал. Что делать дальше — снова неясно.

Вру, никакого разврата, только алкоголизм)
Взял разливного белорусского пшеничного, сижу у пялюсь в комп.
Очень сильное ощущение, что пятницу можно провести куда интереснее.

Завтра вроде как ДР у Вараныча, типа выезд в Заходское. 6 км пешком от станции, потом тусить.
Но я чёт хз вообще, я бы лучше рванул на байде по Ладоге. С другой стороны, ребят не видел очень давно.
Сегодня перевез байдарку с работы домой - она там лежала после несостоявшегося похода. Впервые задействовал для этого тележку, и вот вердикт - ОХУЕННО. Тележка - это фактически ключ к продолжительным соло-походам. Фактически, я могу утащить и 20+ кг байды (со всей хурмой), плюс рюкзак со снарягой на спине, до точки старта - и уйти в поход по периметру Ладоги в гордом одиночестве. Единственный косяк - тележка чужая, и её пришлось отдать :)

Денег за прошлый год так и не поступило. В Ейск я не поехал. 5000р предоплаты коту под хвост.
Всё ещё надеюсь, что деньги дойдут - я тогда продам свою "Щуку" и куплю "Хатангу Travel".
С ней ваще никакие катаклизмы не страшны ))

Восток уехал сегодня в 6 вечера.

Можно сказать, что запланированное удалось за одним исключением - посидеть за бутылкой виски чисто вдвоём, потереть за жизнь и за баб. Ну как оно бывает, когда старые друзья давно не виделись. Но и без этого вышло очень неплохо - с виски мы посидели в итоге втроём. Помимо Лёхи в Питер приехали ещё один мой очень старый товарищ и с ним - мой бывший коллега с Тольятти. С этой компанией мы затусили в парке у Лиговского - мне довелось наконец на практике доказать им тезис о том, что нормального пива в Тлт нет :)

А потом я успел стаскать Востока в антикафе на Казанской (это которое как дворец, только антикафе), выпить там кофе и пофоткаться.
А потом - взял отгул на пару дней, и мы рванули в Петяярви по грибы. И там прошли пешком от станции "78 км" (это между Сосново и Петяярви) сквозь лес до Лебяжьего озера, набрав грибов. А потом - до фестивальной поляны, до качелей. Это была такая моя старая и казалось, что несбыточная мечта - показать Востоку местную природу - совершенно сказочный лес с толстенным слоем мха, изумрудный в косых солнечных лучах и переполненный черникой и брусникой так, что ногу некуда поставить. Вообще полный вариант включал в себя поездку на байдарке по Ладоге, но это по времени уже совсем нереал, и кроме того вы видели погоду? Какие уж там байдарки...

На днях перешел на Теле-2 с Мегафона. Там получился такой распиздец, что я отдал мегафону 1000р и получил ровно нихуя, а не интернет, и это стало последней каплей. Я устал от грабежей этого оператора. Попутно выяснилось, что мой старый убитый "Мегафон Логин 2" залочен, и симки других операторов в нём не работают. Сегодня разобрался, разлочил. Мой старый мегафоновский номер тоже переведут, но это случится чуть позже, пока я доступен по новому, который выложен на моей стене вконтакте.

По финансам швах. Крупную сумму денег, которую мне должны были выплатить в мае, до сих пор задерживают.
В Ейск на неделю учиться управлять яхтой не еду. Там сейчас уплачена предоплата 5000р, ещё надо доплатить 10.000р, у меня нет ни этих денег, ни на проезд. Если кто хочет - можете воспользоваться случаем и потусить неделю на яхте всего за 10к. Иначе предоплата просто сгорит.

А ещё пора покупать отрывной календарик "Х дней без женщины")

05:36

C++ псто

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

Комменчу код удаления, компилю прогу, тыкаюсь мордой в монстров и слежу за потреблением памяти. Ничего не меняется! Нет утечки? Может она настолько ничтожна, что не отображается в мониторе ресурсов?

Оборачиваю код создания копий и их схватки между собой в цикл из 1000 итераций. Запускаю - есть контакт! При выборе монстра потребление памяти увеличивается на считанные килобайты, загрузка процессора всё ещё ноль, даже если я выбираю новую цель несколько раз в секунду, создавая несколько тысяч копий игрока и монстра и просчитывая несколько тысяч битв.

"Лаадно", - сказали сибирские мужики и поменяли количество итераций с 1000 на 100.000 :)
Процессор наконец заметил нагрузку - сотни тысяч копий игроков, монстров, и просчёта битвы поднимают загрузку одного ядра до 15% при моём должном рвении.... И утечка памяти оказалась весьма заметной - за 5 секунд моя текстовая консольная программка выжрала 300 Мб :)

На данный момент есть два гарантированных человека и два места в моей байде.
А кто ещё едет и едет ли вообще, откуда они возьмут байдарку, как взять байдарку в аренду, где взять столько денег сколько они требуют залога (без прописки - полная стоимость байды) - меня чёт это всё утомило.

Поэтому вот.
Этот пост - открытое приглашение поучаствовать всем, кто хочет, но байдарку вам придется организовывать самим. Сервисов по прокату байд много, у цен имеется расброс, надо искать, выбирать и договариваться.

Если у нас появится гарантированный третий человек - тогда мне придется брать в аренду "трешку", и моя байда освобождается.
Ещё есть вероятность появления дополнительных байдаркомест - тогда нам СРОЧНО НУЖНЫ БУДУТ ЛЮДИ ))

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

21:12 

Доступ к записи ограничен

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

05:04

C++ псто

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

Опробовал технику Pomodoro - это такая система, чтобы за работой не отвлекаться и не прокрастинировать. Реально работает!