Сообщения

Сообщения за февраль, 2019

2019, неделя #09, четверг

Изображение
tl;dr Raspberry Pi плохо работает, если сила тока меньше рекомендованной, магазины сантехники – это странные места, EVE Online до сих пор жива, а домашние дела приходиться делать. Понедельник принес мне неожиданное наблюдение, что Raspberry Pi 3 B+ действительно очень хочет 2.5А силы тока и без них отказывается нормально функционировать. Обнаружено это было при помощи подключения внешнего жёсткого диска в попытках понять что ж нода Tezos так сильно лагает. В логе ядра в момент подключения мило высветилось “undervoltage detected”. Начался поиск дома подходящего USB зарядника, но найден был лишь 2.4А из Икеи. После подключения устройства, нода даже начала что-то синхронизировать с сетью. Зарядник на 2.5А не куплен до сих пор, завтра, видимо, придется ехать за ним куда-то в центр. Во вторник случилось замечательное приключение по поиску термостатического смесителя для ванной. Это такой интересный кран, который поддерживает температуру постоянно одинаковой, автоматически реагируя на

SCP: Secret Laboratory, сервер Fry Labs, чиню Crimewatch и плагин для Патреонов

tl;dr Суббота – починил C# плагины на своём сервере SCP:SL, воскресенье – провел серверное событие по возвращению Гейлорда. Ладно, Бассейн допустим кончился, однако, пожалуй, не стоит расслабляться и точно не стоит забрасывать блог. Суббота (2019-02-23) проплыла в починке сломанных плагинов на моих серверах SCP:SL. Сначала я взялся за то, что Патреоны сервера возрождались без инвентаря. Ранее система работала так – в событии получения урона игроком, если нанесенный урон больше текущего здоровья, игрока просто сразу спавнило другой ролью. У такого подхода было достаточно проблем и последней каплей стало то, что из-за того, что они не умирают, не отображались убийства Патреонов в логгере (специальная система отображения выбранных событий на сервере). Так я перед Бассейном переделал систему так, что они таки умирали и плагин вел запись количества смертей каждого Патреона. После первой смерти вызывалось событие смены роли на наблюдателя и вот там я (как я думал) ловил событие и менял ро

Школа 21, Бассейн закончился

This was a triumph! I’m making a note here: Huge success! Вот мы и доплыли в океане Бассейна Школы 21 до теплых берегов. It’s hard to overstate my satisfaction. Шторм за нашей спиной поглотил океан. Я смотрел на студентов и видел в их глазах следующий куплет Still Alive… We do what we must because we can. For the good of all of us. Except the ones who are dead. Я бы мог привести весь текст этой прекрасной песни, слишком уж он подходит к произошедшему. Однако давайте лучше подведем итоги. Разные слухи ходили про последний экзамен и чем ближе он становился, тем больше информации удавалось получить из разных источников. Это довольно приятно, когда тебе даже не надо ничего спрашивать, а нужно лишь внимательно слушать, чтобы получить ответы на вопросы. Что особенно интересно, подтвердилась почти вся информация, а еще стало довольно очевидно почему распределение баллов Московского бассейна так близко к цифре 45 (мне нравится подобные явления, так как они позволяют провести связ

Школа 21, Бассейн, интермишшен (четвертая неделя, понедельник)

tl;dr ¯\_(ツ)_/¯ day13 ¯\_(ツ)_/¯ 10/100, evalexpr – метод "рекурсивного" спуска без деревьев, работающий за `O(n)`, rush02 – о том, как читать stdin и не погореть. Доброе утро. С тринадцатым днём я смог полностью ощутить каково это – сдать задания без тестирования и даже без минимальной компиляции. Напомню, что как раз этот день прошел под девизом "запушить хоть что-то", так что десять баллов, как ни крути, больше, чем ноль. Оказалось, что я забыл в рекурсивной функции передать все аргументы вниз. Одного хватит, ведь так? ¯\_(ツ)_/¯ Забавно было обнаружить эту же ошибку у других в ходе проверок. Вероятно так действуют на сознание указатели на функции – казалось бы, ну, вот, зачем тебе передавать указатель? Объяви функцию как нормальный человек и не парься. Но, к примеру, если твой код – "чистая" библиотека только бинарных деревьев, то, очевидно, она вынуждена принимать указатель на функцию для обхода дерева. Я набросился на evalexpr и начал расписывать

Школа 21, Бассейн, интермишшен (третьи выходные, воскресенье)

#школа21 #теорияФрая ¯\_(ツ)_/¯ Остался один последний проект и последний экзамен. В кластерах стало тише. Люди привыкли к воде, к препятствиям и к друг другу… Я бы не стал сравнивать Бассейн с бассейном. Вас не кидают в середину бассейна, нет. Вы все оказываетесь на кораблях в середине океана и у вас в карманах есть только нечетко нарисованная карта, книга по навигации, в которой нет половины страниц, и выключенная рация без батареек. На горизонте с одной стороны чистое ясное небо, а с другой - вечный шторм. Кто-то из вас будут уметь плавать, некоторые раньше занимались греблей и вот совсем единицы раньше были матросами на кораблях. На каких-то кораблях сразу поднимутся паруса, на других будет выброшен якорь и капитан будет думать как его поднять и еще на каких-то сядут пить чай прямо на капитанском мостике, в предвкушении шторма. Тех, кто не сдвинется с места, уничтожит шторм. Остальные поплывут в неком направлении, ориентируясь лишь по звездам. Некоторые обнаружат, что на кар

Школа 21, Бассейн, день двенадцатый и тринадцатый

tl;dr ¯\_(ツ)_/¯ day11 ¯\_(ツ)_/¯ 21/100, ¯\_(ツ)_/¯ day12 ¯\_(ツ)_/¯ 0/100, day13 – бинарные деревья, exam02 – 85/100, rush02 – детектор вывода rush01, evalexpr – калькулятор со скобками, BSQ – найти наибольший квадрат одинаковой высот на поле высот. В одиннадцатом дне, в ex05 (пятом задании) в условии попросили аргументы командной строки записать в односвязный список в обратном порядке. Мы сразу поняли, что будет что-то не то, ибо было неясно нужно ли добавлять имя программы в список. Так и вышло, что почти весь бассейн получил не больше 21 балла, так как понять что действительно от тебя хотят было почти невозможно. Судя по трейсам нужно было элемент списка, что мог бы содержать имя программы сделать содержащим… Пустую строку. ¯\_(ツ)_/¯. Карл, как это можно было понять из задания? ¯\_(ツ)_/¯ Двенадцатый день был посвящен работе с файлами, но мы в них ничего не писали. Нас попросили написать четыре разные утилиты вывода файлов на экран – обрезанный cat , полноценный cat , tail и hex

Школа 21, Бассейн, интермишшен (третья неделя, среда)

tl;dr day10 – 40/100 (или история о том, как я проверил на массив из одного элемента, а на массив из нуля – нет), day12 – операции с файлами и разбираемся с файлдескрипторами. Приходить в школу к полднику оказалось совсем неработающей затеей. Пока проверишь себя и других за позапрошлый день, пока проверишь и уберешь крайние случаи в прошлом дне, пока зальёшь свои тесты на ГитХаб, чтобы другие могли проверить свой код – пока все это, день успеет закончится и настанет десять вечера. Я же решил, что в десять нужно точно уходить, чтобы высыпаться на следующий день и быть продуктивным. Так, встав со своего места в десять, к одиннадцати я смог достичь выхода из кластеров. Посмотреть код, показать на ошибки, намекнуть на решения, поругаться на будущего тиммейта по групповому проекту... Тиммейт мой будущий сердечно пообещал мне, что вся неделя будет у него "зелёной". После того, как я увидел у него "зелёный" первый день, я решил, что он действительно взялся за голову и н

Школа 21, Бассейн, день десятый и одиннадцатый

tl;dr rush01 – 80/100, matchnmatch – 0/100, day10 – Makefile и указатели на функции, day11 – список мне разверни, отсортируй, вставь, выбери и убери... Нетрадиционный ночной пост сразу после одиннадцатого дня – сегодня я узнал, что некоторые станции метро закрывают для прохода пассажиров ровно в 01:00. Пришлось зайти через выход и перелезть ограду. Наши аргументы за нецелесообразность поиска второго решения судоку были отвергнуты, как и предложение пушить решения подобных конфликтов в отдельную ветку – проверяется только мастер. Что ж, справедливо. Поиск строки со звёздами в другой строке был невероятно эпично зафейлен. Надо было не стесняться и запушить прочтенный на GitHub ответ – он был лаконичен, прост и работал как надо, в отличие от моей простыни вложенных циклов. Десятый день сходу предлагает гуглить все аргументы `gcc` и синтаксис Makefile. Слава богу, что для решения задания требуется совсем немного, а остальное просто идёт в копилку знаний. Среди остальных заданий особен

Школа 21, Бассейн, интермишшен (вторые выходные, воскресенье)

Решатель судоку был дописан и работал быстро в совершенно любой ситуации. Это был триумф, спасибо Лука и Коля (товарищи по команде). Единственное что возможно осталось не так – мы решаем любой переданный нам судоку, хоть пустой, хоть полный почти до конца. Наше мнение такое – рекурсивный поиск имеет ли судоку второе решение или нет занимает больше секунды процессорного времени. Пример, который использовали мы для проверки, решался за полсекунды, а поиск второго решения занимал ещё пять секунд стопроцентной нагрузки на одно из ядер процессора. Если посмотреть на это с точки зрения enterprise – это пять секунд электричества и загруженности сервера, потраченные впустую. Плюс клиенту вместо решения вернётся ошибка. Это явно не то чего хочет человек, когда решателю судоку передает ввод. Если на защите наш аргумент будет отвергнут, то это будет ноль баллов. Быстро работающая, выполняющая клиентскую задачу, программа получит ноль баллов. Ну, мне не привыкать ¯\_(ツ)_/¯. Вчера под ночь я от