Байдарка моя всё ещё где-то на северах, а я тем временем придумал такую штуку.
Сперва смотрим прогноз погоды на виндгуру для юго-запада Ладоги.
Видим там южный — юго-западный ветер на пятницу и без осадков.
Приезжаем на станцию "Ладожское озеро", ставим парус и на попутных ветрах мчимся на север!

До моего любимого острова 130 км, это прям вызов!

14:00

C++ псто

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

Сам факт того, что я дошёл до понятия "игровой фрейм", говорит о многом. В частности, о попытке реализовать уже какой-то работающий в реалтайме движок, а не просто реагирующий на ввод через консоль.

А теперь внимание - следующая задача. Вот у нас есть клетка игрового поля, на которой одновременно лежит какой-то предмет и находится персонаж. Необходимо, чтобы игра показывала значок персонажа попеременно со значком предмета. И в это же время ожилала от игрока консольный ввод. На данный момент я нашёл такой вариант решения - запускается отдельный поток, который отсчитывает 700 мс скажем, после чего прибивает объект std::cin, ожидающий ввод. Выполнение программы продолжается, рисуется следующий фрейм, снова запрашивается ввод и запускается поток.



Все фото добавлены в альбом.

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

Так как до нормального текстового отчета руки не дошли и вряд-ли дойдут, то вот вам фоточки ))

На работе аврал - изготавливаем приборы для научной экспедиции на Белое море. Приборы пока не готовы, но выезд назначен на понедельник. Это должно примерно дать представление о степени моей занятости. Так что я тут на пару недель сваливаю за Полярный круг. Поставлю лагерь на острове, установлю датчики, через 10 дней все сворачиваем и едем домой.

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

Нас было трое - я, Юля-кот и замечательная Лена. И надувная байдарка "Щука-3", мою "двушку" по такому делу пришлось оставить дома.
Поездка принесла кучу опыта и впечатлений.

1. Если вы опаздываете не Финбан на электричку - вы можете обогнать её на метро и сесть в Девяткино. Даже если электричка скорая.
Проблема только в том, что надо успеть купить в Девяткино билет чтобы пройти турникеты, а это может быть невозможно. Я опоздал)

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

3. Я научился нормально пользоваться компасом. Взяв пару азимутов на известные мне ориентиры и построив на карте пару линий, мы выяснили, что точка их пересечения находится сильно за краем бумаги. Теперь без нормальной карты, компаса, транспортира и карандаша - никуда!)

4. На обратном пути мы провели первый боевой тест моего паруса. Результат - ошеломительный успех! Да, выяснилось много проблем и необходимость в доработках, но кто бы сомневался? Главное, что прототип выдержал, и весомую часть пути назад мы пролетели под парусом, не тратя силы на греблю. А сейчас я спешно делаю шверц и увеличенное перо руля перед Белым морем.

Группа вконтакте.
Повод - мой ДР.
Поход на байдарках по Ладожским шхерам, в планах - ночевка на двух разных островах и походная баня.

Сегодня наткнулся и подумал вот что. Есть простой карандаш - графтитовый стержень и деревянная оболочка. Я могу погрызть его, сунуть в ухо или написать "хуй". А в руках иного человека - получится невероятная картина, настоящий шедевр. Так же и слова - нам всем они даны одинаково, но кого-то хватает максимум на "Вася, ёба, плесни-ка мне ещё!", я лично могу иной раз выдать какой-то связный интересный текст, а есть люди - настоящие маги, у которых простые слова складываются и вспыхивают так, что смотришь и не можешь оторваться.

Шелли танцует, и тень от ее волос накрывает клуб, как волна накрывает порт
Кэвин курит и молча стоит в углу, неподвижный и невидимый до сих пор.
Через две минуты глаза их встретятся, мир померкнет, сирена взвоет и все трамваи пойдут в депо,
Только он, она, эта музыка и больше нет никого уже;
Да, как видите, это очень простой сюжет.

Шелли танцует, и Кэвин танцует с ней, и ветер танцует там, им что-то двоим шепча
Музыка осязаема, как первый снег, как электричество, как теплота плеча
Контур огней сплетается в витражи; Шелли молчит, колеблется как свеча
Над потолком сверкает, гремит гроза.
Кэвин танцует, темны у него глаза.

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

Шелли танцует, и оба танцуют так, как будто жара и вестерн, текила со свистом пуль
Танцуют, не замечая, что вот уже час пустует диджейский пульт
Танцуют, как будто от всех дверей найдутся вот-вот ключи.
(Пожалуйста, музыка, только звучи, звучи.)
Прошу тебя, эй,
звучи.


Сегодня у меня вечер стихов и виски. И кресла на балконе. И трубки с табаком, который невероятным чудом не высох, лёжа на балконе. И вечер новой музыки. Давно я не сидел вот так, наедине с собой. Не хватает костра и шумящих над головой сосен. Но скоро они будут. Бесконечно хорошо и правильно.

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

P.S. автор стиха - Джек-с-фонарем

02:04 

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

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

01:52 

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

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

10:34 

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

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

Утро началось с того, что в процессе ленивого листания ленты вконтакте я наткнулся на запись - репост сообщения с яхт-клуба о том, что вечером загорелся от китайского летающего фонарика один из лодочных сараев, и оказавшиеся поблизости люди спасли от огня яхту "Аврора". У нас в клубе две лодки с именем "Аврора", но упомянутый класс "Конрад-54" не оставляет вариантов — это НАША "Аврора", самая огромная парусная яхта в клубе, рассчитанная на 12 человек экипажа, которой мы пару дней назад втроем с помощью домкрата ставили на место лопасть руля. И именно в нашем сарае, получается, был вчера пожар. Часов в 10 с лишним утра звонит капитан, говорит что я ОЧЕНЬ нужен. Я отпрашиваюсь с работы и лечу в яхт-клуб. с часу дня и до 11 вечера я провожу на высоте около 7 метров с ломом и шуруповертом, постепенно обгорая на солнце. Суть в том, что наш сарай надо было снести ещё в мае. Ну а тут - сам бог велел! Аврора не пострадала, а сарай мы снесли. В субботу - выход на "Кубе", катать людей и зарабатывать деньги.

Сижу, остаётся три часа до УЗИ.

И я тут кое-что заметил. Всё чаще в моей ленте в ВК появляются посты с просьбой "максимальный репост", авторы которых не получают желаемого. Люди больше не репостят. Грубо говоря, народ научился соотносить важность определенной информации и силу той информационной волны, которую они могут пустить. Когда я что-то публикую от своего лица в ВК - эта информация сразу доносится до ~130 человек, которые на меня подписаны. Такова ширина фронта информволны, которую пускаю лично я. Если информация покажется важной кому-либо из этих 130 человек - он пустит новую волну, фронт которой будет соответствовать количеству его подписчиков. И я, в момент публикации, должен учитывать эту возможность. Люди, в большинстве своём не любящие думать и считать, быстро убедились в порочности репостов — размер информповода вообще никак не соотносился с тем объемом информационного шума, который он создавал. Если мой сосед пытается пристроить котенка, зачем об этом рассказывать тысячам людей, многие из которых в тысячах километров от этого котенка?

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

03:29 

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

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

01:25 

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

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

22:56 

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

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

Прототип моей ncurses-based игрушки готов. Есть поле 20х20 клеток, покрытое "туманом войны", по которой ползает персонаж (управляется стрелочками) и в пределах радиуса своей видимости открывает карту.

Я не делал дизайн-документа, не составлял ТЗ - просто бросился с головой в код: барахтался, бился головой о стены, доёбывал Алекса на работе и наконец нащупал ногами кое-какую почву. Самое смешное - большую часть времени я программировал на своём смартфоне (дешевый Highscreen на Андроиде)!

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

Я пытался заставить проект компиляться на смартфоне около трех дней, по нескольку раз перелопатив весь код. Исправив тонну ошибок, я получал всё новые ошибки компиляции. Сдавшись, я скинул исходники Алексу - он исправил буквально пару ошибок, и они оказались последними! Игра запустилась на телефоне!

Придя домой, я смержил изменения со старой "версией для компьютера", после чего завёл репозиторий на github, чтобы актуальный код всегда был доступен с любого устройства, и легко можно было его мержить.

Исходники можно посмотреть здесь
.

Дальше я планирую вывести на экран характеристики персонажа, сделать генерацию монстров и взаимодействие с ними, сделать обработчик победы/поражения в игре, базовое взаимодействие ("n" - новая игра, "q / ESQ" - выход, сохранение/загрузка автоматические). И после этого возьмусь за написание диздока и ТЗ.

Ребятишки, я вам лайфхак принёс.
Допустим, у вас есть самокат или ролики.
И скорее всего, накопилась кучка плохо вращающихся или вставших колом подшипников.
Я подскажу, что вам надо сделать ))

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

Левее перед глазами - навигационные приборы, экран с картой фарватера и положением по GPS. Паруса спущены, притянуты к гикам. Где-то внизу, под ногами, рокочет дизель - палуба слегка дрожит. В руках - штурвал. Впереди по курсу - Санкт-Петербург. Мне приходится щуриться и наклоняться то влево, то вправо - мачты и паруса заслоняют ориентир. Справа задувает очень свежий галфвинд, гонит волну — вода бьется в правую скулу, брызги залетают на палубу, и многотонная стальная махина норовит уйти с курса — а я стараюсь её удержать. Штурвал крутится очень легко, на небольшие его движения - менее половины оборота в каждую сторону - корабль не реагирует. Да, это вам не яхта - такое судно может работать ледоколом, когда лёд не толстый. Если бы в жизни можно было бы выиграть, как в компьютерной игре - я бы праздновал победу, по крайней мере на минимальном уровне сложности. Штурвал в руках. Финальная музыка. Титры.

Вторая сложность - это спустить на воду "Кубу", отходить на ней 200 миль, отучиться и получить права.
Третья - стать капитаном собственной яхты.

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

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

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

Но и этим мой день не кончился - я поехал возвращать телефон. Меня встретил знакомый той девушки, владелец СТО, очень горячо поблагодарил и довёз до дома на ДИЗЕЛЬНОМ кабриолете. И вот наконец история закончилась. Я лежу дома на своей кровати — уставший, а лицо горит от загара и ветра.

Сперва я купил спецовку - комбез и куртку. Очень давно хотел, если честно, но мысль была какая-то недооформившаяся. Всю жизнь мне спецовку выдавали по месту работы, и как то думалось, что оттуда они и берутся обычно. Хочешь свою - укради с работы. Мысль о том, что можно просто её купить, как-то не приходила в голову.

В час дня субботы я был в яхтклубе, со спецовкой и шуруповертом. Мне был вручен лом, я залез на крышу пристройки к огромному сараю, где стоит яхта, и начал планомерно эту пристройку сносить. Потом несколько нудных часов выдирал гвозди. Ситуация осложнялась тем, что гвоздодёр был совмещенный с ломом, держал я его одной рукой, и все время приходилось работать с согнутой спиной. К вечеру стало понятно, что на следующее утро мне организм всё это припомнит. После сноса пристройки в сарае образовалась дыра, которую мы с капитаном успешно заделали и стали собираться домой. Кэп так посматривал на меня иногда, мол как оно там, ещё шевелится? Один раз спросил - мол, тяжело даётся яхтинг? Услышав мой ответ на тему, что ничего другого я не ожидал, одобрительно хмыкнул. Договорились на следующие выходные, либо если будет вариант - то он свяжется со мной, чтобы в будни вечерком поработать. Суть работы, как я понял, такова - огроменный сарай, в котором стоят две яхты, надо разобрать после успешной зимовки. Надеюсь, что разбирать надо только ту половину, что с "Кубой" - вторая яхта просто нереально огромная, только представьте - диаметр её алюминиевой мачты около 50см. "Куба" практически готова к спуску на воду, надо перекрасить корпус и ватерлинию, можно управиться за день. В прошлый год она всё лето простояла "в доке", ремонт закончили только в августу. На воду решили не спускать.

В воскресенье по плану был показ комнаты потенциальной съемщице. Съездил постригся по этому случаю и прибрался в зале. Комната девочку не устроила.

Ну и под вечер воскресенья облачился в спецовку, заперся на балконе с инструментом (и литром разливного пива) и начал ваять! Фактически, план я перевыполнил:

1. заново перепроектировал баллерный узел, упростив его
2. выпилил две "выкройки" из листового алюминия, пару 6 см кусочков палаточных дуг, закладную деталь из фанеры
3. собрал весь узел вместе с пером руля на саморезах, подогнал руль чтобы вращался в вертикальной плоскости

4. придал перу руля аэродинамическую форму (крыло) шлифмашинкой
5. покрыл морилкой, высушил строительным феном, зашкурил вставший дыбом ворс
6. покрыл морилкой, высушил строительным феном, снова зашкурил - уже начисто
7. покрыл первым слоем лака, повесил сушиться на балконе

Бля, почему я раньше там не был?!
Там есть в продаже фанера 1200х600, это просто чудо какое-то!
Везде в строительных магазинах фанера продаётся листами 1450х1450 - без распила на месте и без машины одному не утащить.
А распил часто происходит только по рабочим часам - то есть, вечером после работы купить лист фанеры можно только целиком.

Короч, купил лист, пришло время делать лопасть руля, баллерное устройство и шверц для байдарки. Открытие сезона с полноценной парусной байдаркой, способной идти боком и даже против ветра - становится всё более реальным.

UPD:
Дело наконец-то сдвинулось с мертвой точки.
Это был третий вечер подряд, когда я сидел на полу около собранной и накачанной байдарки, с разбросанным вокруг алюминиевым профилем и деревяшками, и растерянно смотрел на то место, где должен стоять руль. Три дня, по несколько часов, я так медитировал. Наконец чертёж начерчен, осталось выпилить лопасть руля из фанеры и развертку из детали из листа алюминия, правильно её согнуть и собрать конструкцию. Классическое решение с рулем на "Щуке" выглядит так. Но мало того, что заводской руль денег стоит - конструкция в принципе не рассчитана на нагрузки, которые у меня планируются. Обычно его используют на байдарках, чтобы курс корректировать при гребле - а у меня парус 3.8 квадрата.