![](http://webcf.waybackmachine.org/web/20201102131123im_/https://habrastorage.org/getpro/habr/avatars/35b/44f/fe7/35b44ffe76e9518b5d07c5748372937f.png)
Мне 17 лет и я уже несколько месяцев делаю клон мобильного приложения Хабра, назвав его соответствующе, модно, со стилем и пафосной точкой в конце — habra. Получилось реализовать несколько фич, которых пока нет ни в официальном приложении из плей маркета, ни на самом сайте.
Ссылка на web-приложение для самых нетерпеливых — habra.js.org. Всех остальных — прошу под кат.
Привет, Хабр! Меню зовут Юрий Богомолов, и вы (возможно) можете меня знать по моей работе над серией #MonadicMondays в твиттере, по каналу на ютьюбе или статьям на Medium или dev.to. В русскоязычном сегменте интернета очень мало информации по функциональному программированию на TypeScript и одной из лучших экосистем для этого языка — библиотеке fp-ts, в экосистему которой я достаточно активно контрибьютил некоторое время назад. Этой статьей я хочу начать рассказ о ФП на TypeScript, и если будет положительный отклик от хабрасообщества, то продолжу серию.
Думаю, ни для кого не станет откровением то, что TypeScript является одним из самых популярных надмножеств JS со строгой типизацией. После включения строгого режима компиляции и настройки линтера на запрет использования any
этот язык становится пригодным для промышленной разработки во многих сферах — от CMS до банковского и брокерского ПО. Для системы типов TypeScript были даже неофициальные попытки доказательства полноты по Тьюрингу, что позволяет применять продвинутые техники тайп-левел программирования для обеспечения корректности бизнес-логики при помощи техник «making illegal states unrepresentable».
Всё вышеперечисленное дало толчок к созданию для TypeScript замечательной библиотеки для функционального программирования — fp-ts
за авторством итальянского математика Джулио Канти. Одна из первых вещей, с которой сталкивается человек, желающий ее освоить, — весьма специфичные определения типов вида Kind<URI, SomeType>
или interface SomeKind<F extends URIS> {}
. В этой статье я хочу подвести читателя к пониманию всех этих «сложностей» и показать, что на самом деле всё очень просто и понятно — стоит только начать раскручивать этот паззл.
Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 8.0 RC 3 и видеообзоры новых возможностей, Composer 2, завершение разработки Faker (теперь в новой организации), два новых RFC для PHP 8.1, порция полезных инструментов, статьи, видео с прошедших митапов.
Приятного чтения!
Примечание: код для этой статьи выложен на мой Github [здесь].
Осторожно / Caution / Achtung: под катом заботливо спрятаны в спойлеры далеко не самые эстетичные фотографии операции на глазах. Если в Quake III Arena вы не любили играть за Orbb (на фото выше), то заглядывать в спойлеры не рекомендуется.
Данная история состоит из трёх частей, т.к. я выпустил три игры:
● Beasts Battle
● Necromancer Returns
● Magicians Legacy
В прошлых частях я рассказал, как я пришел к разработке гексагональной пошаговой игры Beasts Battle и как не отбились мои расходы на игру Necromancer Returns.
Здесь можно почитать первую и вторую статьи.
Фальстарт
В феврале 2018 года вышла игра Necromancer Returns, которая не оправдала мои ожидания по продажам, и я ушел в депрессию. Но в апреле 2018 года у меня возникла мысль сделать следующую игру на основе этого движка, только чтобы вся графика была уже нарисована в 3D и отрендерена под 2D в изометрии. Мысль была такая: “по-быстрому” придумать новый мир, нарисовать его, запихнуть новых юнитов — и готово. Я списался с художником, который подключился в конце разработки Necromancer Returns и стал для меня основным. Он полностью перерисовал весь интерфейс для мобильной версии Necromancer Returns, а потом мы обновили и версию в Steam.
Занимаетесь разработкой, но еще не знаете, что такое Kubernetes? Не переживайте, мы расскажем:
Добро пожаловать под кат.
Человеческая жизнь слишком коротка, чтобы тратить ее на интеграцию и документацию. С помощью контрактов и кодогенераторов можно сократить рутинные операции и переписывание кода, обеспечить недосягаемое иными способами покрытие и достигнуть невыразимой чёткости бытия тестировщиков, разработчиков и систем.
Я занимаюсь автоматизацией тестирования в Яндексе с 2013 года. Из них более четырёх лет автоматизирую тестирование REST API-сервисов. На Heisenbug я рассказал об использовании OpenAPI-спецификации как основы для приёмочных тестов, а также о том, как легко поддерживать автотесты на огромное количество REST API-сервисов и добавлять автотесты на новые проекты.
Под катом — видеозапись и расшифровка моего доклада. Примеры из доклада есть на GitHub.
Директор завода Афанасий Альбертович прямо-таки излучал радость и доброжелательность. Его парадный твидовый пиджак был тщательно вычищен, локти аккуратно зашиты кожаными вставками, а сам директор приятно пах тройным одеколоном.
— Здесь вы видите наш чертёжный отдел, — обратился он к японской делегации.
В кабинете один из инженеров, спокойно сидевший до этого на стуле, вдруг начал делать странную вещь. Взяв ножницы, он аккуратно начал вырезать из листа ватмана кусок чертежа, над которым только что работал.