пятница, 4 апреля 2025 г.

Послушник. Глава 2

Сегодня тяжёлый день, потому что отец Анхель поручил съездить в город за продуктами. Тяжёлый день в череде таких же тяжёлых дней, наполненных трудом во имя Создателя. 

Отец Анхель любил повторять - люби Создателя и он полюбит тебя. 

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

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

Отец Анхель был великим воином ещё 10 лет назад. Как и другие отцы отец Анхель прошел обязательное обучение владению мечом, кулаком и разумом. 

Ян прекрасно помнил как всего два года назад отец Анхель на празднике в городе по просьбе губернатора выступил с боем против главного полицмейстера. 

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

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

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

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

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

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

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

Когда, возвращаясь из города в Храм, Ян спросил отца, что нужно, чтобы научиться так драться, старик только усмехнулся и повторил, что нужно любить Создателя. И Ян любил. Ему не было причин не верить словам мудрого воина.

Монахи Пути славились за свое воинское искусство далеко за пределами империи Ханаан. Ян читал в книгах по истории, что изначально последователи учения о Создателе были мирными проповедниками. Но прошло много сотен лет и настоящий глава церкви, светлейший Леопольд, всячески поощрял и развивал военное искусство церкви, которой он волею Создателя управлял, справедливо полагая что с помощью клинка и доброго слова можно добиться намного больше, чем с помощью просто доброго слова. Воины храма часто помогали империи при выполнении опасных военных миссий, если это не противоречило Пути Создателя. И император Ханаана благоволил этой дружбе, которая сложилась за десятилетия с церковью. Даже храме Пути, где жил Ян, старшие братья часто помогали городской страже при поимке особо опасных убийц и насильников. И хотя плата за это никогда не требовалась, глава храма никогда не отказывался от щедрых пожертвований со стороны города, тем самым укрепляя столь выгодную всем дружбу.

понедельник, 10 февраля 2025 г.

Послушник. Глава 1

Никогда не верьте, что Мир появился давно. 

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

Мир появился вдруг!

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

Но тем не менее, где-то в глубине своего молодого сердца я понимал: Мир появился ВДРУГ!

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

Но главный вопрос, который меня мучил - как появилось Время?

Я долго не мог уснуть ночами, вглядываясь в темное небо, пытаясь нащупать ответ на этот вопрос, пока не пришел к той самой фразе, которая стала ответом: Мир появился вдруг.

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

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

Сколько лет прошло от момента создания мира? Иногда мне казалось, что если бы великий Создатель услышал подобный вопрос, он бы просто улыбнулся по-доброму и пошел бы дальше заниматься своими делами, не желая тратить время на то, чтобы объяснять столь очевидные вещи. Он создал и Время и Пространство сразу и Мир стал величественно разворачиваться во Времени и Пространстве, как газ заполняя все доступное ему место. Стало существовать наше прошлое, так же как и будущее, и хотя с нашей точки зрения нам еще предстояло его прожить, приятно осозновать, что оно существует. Будущее. равно как и прошлое.

...

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

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

- Истина первая: Верь в Создателя!

- Истина вторая: Верь в Его верных ангелов!

- Истина третья: Верь в Его Послания!

- ...

- Ладно, все, садись Ян - старик опираясь на свой посох двинулся к доске, явно довольный моим рвением. 

Я молниеносно сел на свое место. Отец Анхель развернулся, прокашлялся и, открыв большой толстый фолиант, проскрипел:

- Приготовьте тетради, ученики. Тема сегодняшнего урока - Третья Война Владетелей!

За окном качнулась ветка, с которой вспорхнула птица, испуганная грозными нотками в голосе отца Янхеля, но я поторопился сосредоточить свое внимание на рассказе:

- Итак, как вы все должно быть знаете, Третья Война Владетелей началась в 3141 году и стала крупнейшей катастрофой третьей эпохи, унеся миллионы жизней всех трех рас, живущих на планете...  


 

суббота, 13 июня 2020 г.

Google выпустил новый фреймворк для логгирования в Java

Перевод статьи "Google Releases New Java Logging Framework" 

Недавно Google объявил о выпуске нового open-source Java-фреймворке логгирования под названием Flogger. Признавая мир логгирования на Java чрезвычайно перенасыщенным, Google все же утверждает, что Flogger предлагает разработчикам много преимуществ по сравнению с уже существующими решениями. Улучшения в Flogger включают в себя снижение падения производительности при отключенном логгировании, улучшение читаемости логов и повышение расширяемости системы логгирования.

Flogger - эффективный симбиоз fluent API и логгирования, утверждает, что одним из его главных преимуществ является то, что отключение логгирования обходится практически бесплатно. В то время как другие фреймворки даже при отключении логгирования как правило вносят в байт-код дополнительные вызовы, Flogger стремится полностью избежать этого.

Если конкретнее, обычно в системах логгирования при вызове методов используется varargs, вместо того, чтобы иметь сотни или даже тысячи разнообразных сигнатур. Использование varargs приводит к дополнительным инструкциям на уровне байт-кода, например для выделения памяти под Object[] для хранения аргументов методов логгирования. И хотя эти дополнительные инструкции не являются типичной проблемой, они становятся особенно важными в приложениях с очень детализированными логами или при логгировании, которое происходит в циклах.

Flogger избегает таких дополнительных затрат благодаря разработке собственного API. Цепочка вызовов методов Flogger всегда начинается с вызова селектора для определенного уровня логгирования, например atInfo(). Этот селектор возвращает реализацию, соответствующую выбранному уровню логгирования, а в случае отключения логов - возвращает ничего не делающий синглтон.

Читаемость является еще одной областью, на которой сосредоточился Flogger. По словам Google, Flogger позволяет использовать "самодокументируемый код журналирования" за счет использования более выразительного API. В качестве примера рассмотрим типичный код логгирования сообщения вместе с возникающим исключением

log.error("The arg, '{}' caused an error", arg, exception)

с помощью Flogger то же самое делается так

logger.atError()
	.withCause(exception)
	.log("The arg, ‘%s’ caused an error", arg);

Дополнительно к этому, Flogger был разработан с расчетом на расширяемость. Можно расширить API Flogger и добавить собственные методы в цепочку вызовов fluent API.

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

logger.at(INFO)
    	.forUserId(id)
        .log("Message: %s", param);

Дополнительная информация о проекте Flogger можно найти на Github вместе с руководством для начинающих и документацию с лучшими практиками.

понедельник, 25 мая 2020 г.

Распознавание текста с Tesseract

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

суббота, 9 мая 2020 г.

Нотификация в PostgreSQL


Здравствуй, дорогой друг!
Многие из вас, кто уже работает разработчиком, конечно знают, что база данных - это фундамент абсолютного большинства создаваемых систем. Это средоточие информации, сердце практически любой системы.
Но, возможно, вы не знаете, что база данных - это не только ценный мех хранилище, но и отличный мессенджер =)
В этой статье мы обсудим, как обмениваться сообщениями в СУБД PostgreSQL.
Поехали!

среда, 29 апреля 2020 г.

Задачи по программированию


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



пятница, 23 августа 2019 г.

Учи таблицу умножения с Бэтменом

Доброе утро али день, мой дорогой друг!
Через несколько дней наступит долгожданная и ненавистная пора школьных занятий и миллионы юных и сонных неучей устремятся в школы за знаниями.
Там их будут мучить домашними заданиями, тестами и прочими контрольными.
А самые юные из них начнут свое знакомство с НЕЙ - великой и ужасной - Таблицей Умножения!
Конечно, родители дома будут продолжать мучить несчастных, неожиданно задавая вопрос посреди разговора: "семь умножить на восемь, быстро??", от чего становится еще тоскливее и печальнее...
Вот было бы классно, если можно выучить таблицу умножения с другом. Причем, с таким другом, который, конечно, круче самих родителей... Например, с Бэтменом!
А у меня и телефончик его завалялся=)
Эй, Рыцарь Ночи, помоги выучить таблицу умножения, будь другом!