zHz00 Untitled

понедельник, 29 января 2018
23:59 Аппарат абонента не существует
Приделал к проекту очередную фишку. Было свободное время, т.к. коллега свою часть ещё не доделал. Дай, думаю, посмотрю, какие предупреждения выдаёт компилятор. Я человек простой -- предупреждения компилятора, как правило, игнорирую. Но знаю одного человека, который не начинает отладку, пока не избавится от всех предупреждений.

Так вот, он прав.

Короче говоря среди кучи declared but never used и incompatible pointer type (я слышу возглас из зала: "тебе пора переходить на Rust!") я обнаружил действительно серьёзную вещь. "returning pointer to local variable".

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

Автор кода выделял динамический массив:

int a=new int[n];

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

int a[3];

И удалил строку с освобождением памяти. А что происходит с этим массивом -- не посмотрел. В общем, он возвращался из функции:

return a;

И если при динамическом выделении памяти всё было бы хорошо, то при локальном (автоматическом) выделении памяти всё становится плохо. Функция завершается, освобождает память на стеке, а вызывающая функция начинает обращаться к ничьей области памяти.

* * *

Коллега по этой ситуации предложил интересную аналогию: представь себе, что ты дома положил на стол сотовый телефон и пошёл на работу. А на работе у себя на столе начинаешь его искать в том же месте, но почему-то не находишь!

@темы: Программирование, Говнокод

URL
воскресенье, 28 января 2018
23:16 Doki-doki! Literature club!
Вокруг этой визуальной новеллы был (и до сих пор в какой-то степени продолжается) хайп. До меня вести добрались довольно поздно. Но я увидел скришнот, услышал про ужасы и про ломание четвёртой стены. А что может быть лучше, чем ужасы с анимешными девочками, ломающими четвёртую стену? Если вы думаете так же, то бегом играть (вн-ка довольно короткая), хотя я постарался минимизировать спойлеры в последующем тексте.

Игрой я остался доволен. Но не в том, что мне обещали. Игру можно разделить условно на две части: "обычная" визуальная новелла и "постмодернистская" визуальная новелла. Вторая часть как раз содержит в себе то, о чём я писал выше. Однако, ломание четвёртой стены мне уже знакомо по Undertale и Lab14. А ужасы я видел много где. Ну, допустим, в Бесконечном лете элемент ужасов был. В этом смысле вторая часть не вносит ничего нового -- и у автора не получилось реализовать это так хорошо, как в этих играх. Хотя мне понравилось, как она сделана. С чем же связан хайп?

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

Тема восприятия творчества окружающими также раскрыта. В общем, очень думательная вещь получилась.

Что мне не понравилось:
1) Механика, открывающаяся во второй части, не реагирует адекватно на мои действия. Я не буду пояснять, о чём я -- игравшие поймут, а так -- это серьёзный спойлер.
2) В игре отсутствует меню с просмотром CG и прослушиванием музыки. А музыка хороша! Особенно переход между темами без сбивки ритма.
3) Маленькая разветвлённость сюжета и количество концовок. Я понимаю, что игра короткая, но наворотить развилок и концовок это не мешает. Есть вон -- Sugoi Monogatari. Опять-таки, это приводит к неадекватному поведению персонажей и главного героя.
4) Личность Нацуки слабо раскрыта.
5) Проблемы с учётом повторяющегося текста. Из-за этого многое приходится читать несколько раз, что вызывает скуку.

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

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

(скриншоты)

В комментариях возможны спойлеры.

@темы: VN

URL
суббота, 27 января 2018
23:59 Круглый день
Пришла посылка. И тут я впервые решил прочитать как следует на уведомлении график работы. А там написано вот что:


Ну, "выходной" с опечаткой это ладно. А вот уточнение, что выходной без перерыва -- порадовало.

@темы: Викторика, Наблюдения

URL
пятница, 26 января 2018
23:59 О задрачивании
В принципе, это всё уже написано в статье himself'а -- www.boku.ru/learn-japanese/ .

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

Если мои шаловливые ручки дотягиваются, я отвечаю спрашивающим одно и то же:

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

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

2. Чтобы научиться слушать, надо слушать. Тут идеально подходит просмотр аниме без субтитров. Почему?

а) Аниме тоже! бывает разное по сложности и содержанию, так что можно найти что-нибудь подходящее.
б) В большинстве случаев текст говорится очень чётко и разборчиво. Озвучкой занимаются профессиональные актёры-сэйю: (в отличие от обычных телепередач; в дорамах ситуация тоже не очень), причём все говорящие -- носители языка.
в) Аниме тоже! очень много, в т.ч. можно скачать из интернета.
г) А БЕЗ титров надо смотреть, потому что если титры включить, мозг будет их читать сразу, а не переводить с японского. Хотя иметь под рукой титры может быть полезно, чтобы прочесть правильный перевод после своей попытки (но в титрах могут быть ошибки).

Это всё касается изучения японского до уровня N2 включительно, пока идёт общая лексика. С N1 дела обстоят сложнее, но обычно люди, собирающиеся сдавать на первый уровень, такие вопросы не задают.

Так вот! Дорогой дневничок! Ты представляешь? Эти люди, получив моё ценное указание, отвечают иногда что-нибудь в духе "не хочу художественную литературу", "не смотрю аниме", "мне надо учебные тексты"!

Про учебные тексты и аудирования коротко скажу -- их катастрофически мало. На таком об'ёме материала далеко не уедешь.

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

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

@темы: Японский язык, Крик души, Мысли

URL
четверг, 25 января 2018
23:59 Untitled [516]
На плите стоит кастрюля с водой.
@
Всё вместе -- это сварочный аппарат.

@темы: Тухлые идеи, Викторика

URL
среда, 24 января 2018
23:57 Yuyushiki 01-12 END + OVA + SP01-06
Для начала стоит заметить, что все подаваемые сведения в сериале соответствуют действительности. Но для расширения кругозора смотреть его -- малопродуктивно.

Сериал -- вроде как обычная повседневность про четырёх трёх девочек. Но не всё так просто.

Этот сериал уникален. Он целиком состоит из разговоров бокэ и цуккоми. Которые вместе называются "мандзай". Бокэ тут двое, а цуккоми -- одна.

Персонажи типа бокэ и цуккоми в аниме не редкость. Но я не помню такого, чтобы эти персонажи были на экране 100% времени и 100% времени вели свои фирменные диалоги. Ну ладно, не 100%, но 90% времени точно на это уходит.

И если английский юмор тонкий, то японский -- странный. Что может быть смешного в том, что один человек несёт бред, а другой его осаживает? Тем не менее, иногда это всё же действительно смешно.

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

Ряд шуток построен на особенностях японской фонетики, когда персонажи "пробуют на зуб" те или иные звуки в словах и обсуждают свои ощущения от этого. Также присутствуют шутки, основанные на игре слов. В свете этого очень важен хороший перевод. Однако с этим напряжёнка. Русские субтитры для 03-12 серии делал некто Anon Edition (согласно указаниям в раздаче на рутрекере). И в этих субтитрах есть целый ряд неточностей даже в обычных бытовых фразах, не говоря уже о фразах с секретом. Других русских субтитров для этих серий не существует. Возможно, английские лучше.

ОВА -- просто ещё одна серия. К просмотру рекомендую.

Спешиалы с бд-дисков повествуют о том, как три главные девочки превратились в чиби-нек. В принципе, можно не смотреть, но мило.

Что не понравилось -- очень мало внимания уделено второй троице девочек. Да, они так не шутят, но у них очень интересные взаимоотношения. Хотелось бы побольше за ними понаблюдать.

Несколько скриншотов. Комментарии придумать не смог.
(несколько скриншотов)

@темы: Аниме

URL
вторник, 23 января 2018
23:59 Две Кореи
Вход в метро расположен хм... в низине. И ко входу ведут две совершенно одинаковые лестницы. Они идут параллельно. Зачем было делать две лестницы вместо одной, но более широкой -- вопрос.

Одна из лестниц чисто выскоблена от снега и посыпана солью. А ко второй не притрагивались вообще! Она больше похожа на пандус из снега.

Это -- самая странная из виденных мной граница юрисдикций дворников. Очень контрастно получилось.

@темы: Наблюдения

URL
понедельник, 22 января 2018
23:59 Сепульки
ЯРКСИ:


Я уж начал сомневаться, что будет конец.

(Яркси не поддерживает вывод нескольких окошек со словами одновременно, так что я слил всё в одно место в пейнте)

@темы: Японский язык, Викторика

URL
воскресенье, 21 января 2018
23:59 Никого нет дома
Пытался установить драйвер. Через setup.exe драйвер не поставился, выскочил файл в блокноте с инструкцией о том, как ставить из inf-файла. Но это, хвала богам, я умел и так. Операционная система Windows 7.

Однако при попытке установки выскакивало сообщение "Установка драйвера провалилась. Не удаётся найти указанный файл".

Окей, я согласен найти ему указанный файл. Но какой? Не говорится. Это был мастер обновления драйвера, поэтому окно не содержало в себе никаких дополнительных сведений.

Запустил своего большого друга -- procmon.exe. Установщик копирует файлы, поэтому поставил в фильтры запрос CreateFile, а программу -- mmc.exe (установку драйверов производит непосредственно Microsoft Management Console). Результат -- иной чем SUCCESS.

Это, однако, не дало необходимого результата. Я видел, что в процессе установки не находятся некоторые файлы. Они были во временной папке с GUID в качестве имени. Я скопировал туда все файлы, которые имели отношение к драйверу (я знал, где они лежат), но при следующей установке... создалась новая папка с другим именем. В которой, ясное дело, файлы обнаружены опять не были. Стало ясно, что дело не в этом. Походу, mmc просто проверял, что файлов НЕ существует, чтобы их туда скопировать.

Тогда я включил отображение всех операций от mmc и обнаружил, что он пишет в лог. Постоянно. Ура! Я открыл этот лог и нашёл там то, что искал -- сообщения об ошибке при поиске файла. Он не мог найти файл "DeviceName_E_Series.dll". Остальные файлы с подобными именами (A_Series, B_Series...) он успешно нашёл. Включая файл, соответствующий моему устройству.

Я зашёл в папку с файлами драйвера и обнаружил там файл "DeviceName E Series.dll". Приплыли. Именно для устройства этой серии разработчики случайно поставили пробел вместо нижнего подчёркивания!

В общем, драйвер встал, хотя я остался крайне недоволен, что для установки драйвера устройства нужно наличие ВСЕХ файлов, даже не касающихся его напрямую. У меня есть основания полагать, что остальные файлы просто не эксплуатируются.

Почему же я не мог при помощи проц-мона обнаружить те файлы, которые хотел скопировать mmc?

Потому что он их открывал не при помощи CreateFile. Для этого он использовал запрос QueryDirectory (!). Который в случае отсутствия файла возвращал NO SUCH FILE. Даже не знаю, какой функции API он соответствует. Единственная схожая по названию функция существует только в драйверском API, который при установке, даже драйверов, использоваться, по идее, не должен...

@темы: Программы, Борьба с техникой

URL
суббота, 20 января 2018
23:59 Свистать всех наверх
Сегодня с утра был снегопад. И именно сегодня мне приспичило поехать кое-куда на машине. Мдаа...

В таких условиях до этого я ездил один раз. Но тогда это была папина машина -- полноприводная. И это было совсем другое дело.

Но даже на полном приводе я умудрился люто сфейлиться. Шоссе было более-менее расчищено, а обочина -- нет. Было пора сворачивать на прилегающую дорогу. И я на слишком высокой скорости в'ехал на обочину с толстым слоем снега. Слишком высокой -- километров 30 в час)) . Машина повернулась на 45 градусов и поехала боком. Я стал крутить руль -- но он никак не влиял на направление движения машины. Тормоза, естественно, не работали тоже. Остановился в полуметре от отбойника. Фууух.

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

В общем, обнаружилось, что машину начинает заносить уже при трогании с места. И вообще ощущения своеобразные. Как будто не едешь -- а плывёшь по снежной реке. Раскачиваешься. Потому что всё время немного заносит.

Но если скорость прибавить хотя бы до 20 км/ч, заносить начинает меньше. Почему?

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

В общем, снег и песок в этом смысле оказались схожи. А именно: при быстром воздействии вещество не успевает "прогнуться". Это называется простым словом "вязкость".

@темы: Автомобили, Наблюдения, Очевидное-невероятное

URL
пятница, 19 января 2018
23:59 Untitled [515]
Если ваши религиозные чувства могут быть оскорблены, не читайте далее этот текст.

Крест, что он нёс, был тем крестом, что он на себе поставил.
***
Она поставила на нём кельтский крест.
***
Это вышивание не крестиком, а крестцом.

@темы: Викторика

URL
четверг, 18 января 2018
23:59 Программа, электроника и механика: надёжность
Под надёжностью я понимаю среднее время, через которое в устройстве происходит сбой. Это не гостированное определение, но для рассуждений удобное.

Когда-то я обнаружил, что электронщики матерятся сильнее, чем программисты. И понял, почему. Ошибки и неполадки в электронных схемах сложнее диагностировать и устранить.

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

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

Откуда же берётся, что механическое устройство такое надёжное? Дело в сложности. Те механические устройства, которые надёжные, содержат в себе, к примеру, сотни элементов. Они перемещаются, к примеру, 10 раз в секунду, не больше. Или просто вертятся без остановки. А процессор? Сколько в нём транзисторов? Зависит от процессора, но, к примеру, 731 млн (2008 год, Core i7 "Bloomfield"). А частота -- 2 ГГц (он же). Это частота, с которой могут перекидываться транзисторы внутри. Если бы механическое устройство состояло из такого же количества частей, оно бы проработало весьма недолго. Ибо поломка любой детали -- кирдык.

Вот и получается, что если пересчитать на время работы, то электронное устройство может отказывать быстрее, чем механическое.

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

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

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

@темы: Программирование, Борьба с техникой, Мысли, Электроника, Наблюдения

URL
среда, 17 января 2018
23:59 Герострат
Когда человек что-то спрашивает у окружающих, но при этом может найти информацию самостоятельно, ему иногда говорят "тебя что, в гугле забанили?"

Однако в гугле действительно могут забанить. Но банят там не ищущих. А тех, кого ищут. И я познал это на собственном опыте.

Мой дневник на пару дней пропал из выдачи гугла по запросам, связанным с Pixel Dungeon -- а это у меня основной источник незнакомых людей. Почему -- не знаю. Потом появился снова.

Так вот, когда банят в гугле -- это не очень приятно!

@темы: Борьба с техникой

URL
вторник, 16 января 2018
23:59 Заразный пофигизм
Есть у нас в соседнем отделе человек с очень интересной способностью.

Допустим, устройство, за которое отвечает он, не работает (а точнее, работает неправильно). Сроки горят -- надо чтобы срочно заработало. Что делать -- неизвестно. Я весь обеспокоен по этому поводу. Нервничаю. Иду к нему.

Рассказываю, мол, так-то и так-то. Что делать, всё пропало!

Он такой: Ну...

И начинает что-то рассказывать про это устройство. И уже через 2-3 минуты я понимаю. Что да, действительно, устройство не работает... ну и пёс с ним. И так спокооойно, хорошооо становится.

Понять бы, как он это делает!

@темы: Восприятие, Борьба с техникой

URL
понедельник, 15 января 2018
23:59 О типологии языков для чайников
Я сам чайник и я прочитал Википедию. От чайника к чайнику. Замечания, предложения принимаются (особенно будёт клёво, если вы обнаружите ошибки в грамматике и поможете их исправить).

И я про типологию человеческих языков, а не программирования. И не языки, на которых разговаривают чайники, имеются ввиду.

В своей жизни я учил четыре языка (включая русский -- родной). Французский, правда, забросил. Я не филолог, но с учётом обстоятельств я не мог не заинтересоваться вопросом того, какие языки бывают.

У заметки (хотя получилась уже статья) две цели:
1. Понятно об'яснить что такое агглютинация (характерная для японского языка).
2. Поделиться моим открытием колеса: я понял, почему свободный слов порядок русском языке в.

(читать)

@темы: Японский язык, Статьи

URL
воскресенье, 14 января 2018
23:59 Untitled [514]
Если анекдот несмешной, то это -- постмодернизм.

@темы: Мысли

URL
суббота, 13 января 2018
23:58 Untitled [513]
-- Ох, эта кружка с трещиной. Надо её выбросить. Примета плохая.
-- Подтверждаю. У меня бабушка пила из треснутой кружки и умерла. Десять лет пила.

@темы: Викторика

URL
пятница, 12 января 2018
23:38 Страус
[Тут про первое применение.]

-- Слушай, я придумал маленькой подушке ещё одно применение!.. И я не о том, чтобы об неё дрочить...
-- Хм... а некоторые так делают. И что за применение?
-- Смотри, можно голову положить на основную подушку, а маленькой голову накрыть сверху! Это прикольнее, чем укрыться с головой одеялом. И можно так сделать, чтобы только носик наружу торчал!
-- Мда. Уж лучше бы ты об неё дрочил...

@темы: Викторика

URL
четверг, 11 января 2018
23:46 Виды ответственности
Вот тут Воля Д. показывает картинку:


Тут наблюдается конфликт: чья ответственность за преступление? Совершившего преступление или его жертвы?

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

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

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

(читая дальше, я соглашаюсь, что тема преступника и жертвы меня не слишком сильно волнует)

@темы: Мысли

URL
среда, 10 января 2018
23:59 Обед по расписанию
Высказали сегодня на работе интересную мысль, что рабочее совещание не должно длиться дольше часа. А то народ устаёт и эффективность снижается.

@темы: Мысли

URL