Что нам стоит на КМП построить?
Рассказываю с цифрами в руках о сокращении трудозатрат разработки под несколько платформ при использовании Kotlin Multiplatform
Рассказываю с цифрами в руках о сокращении трудозатрат разработки под несколько платформ при использовании Kotlin Multiplatform
В данной статье рассмотрим один из способов работы со сложностью, возникающей в ходе разработки ПО. Рассмотрим принципы SSOT, FRP (Combine), SRP и дойдём до архитектурного шаблона «Мрак в Моделях» (далее MM), являющегося комбинацией этих принципов. Примеры будут для iOS на Swift, но всё описанное, конечно, применимо не только на платформах Apple.
Многие в iOS начинали свой путь с размещения практически всего кода в UIViewController'ах, т.к. любой экран в iOS есть ни что иное, как экземпляр UIViewController. Так куда класть код, если не в этот самый видимый экран? Кнопки-то ведь на экране? Следовательно, и реакции на кнопки должны быть там же. С этого и начнём.
Создадим крошечное приложение, позволяющее начинать звонок двумя способами:
Выглядеть оно будет минималистично:

В июле с помощью Matter.js реализовал прыжки колобка из-под платформы и подкидывание стрелы.
В июне сделал набросок собственного инструмента для дальнейшей разработки "Колобка" с помощью HTML, Matter.js и JSON.
В мае мне удалось вернуть стрелы, повреждение окна, а также сделать набросок подпола, но рассказать сегодня я хочу о промежуточных итогах.
На апрель выпал переезд с GDevelop на Phaser, к которому пришлось прибегнуть после опроса в предыдущей мартовской статье, где мы определили приоритеты реализации возможностей, которые стоит добавить в игру:
На текущий момент колобок может выбраться из избы, перебраться через забор во дворе и начать своё путешествие. Однако избе и двору чего-то не хватает.
Прежде чем мы решим, что это будет, расскажу кратко о сделанном за две недели.
Создание "Колобка" началось для меня 13-го февраля, когда я решил по совету коллеги глянуть инструмент GDevelop. Через неделю я уже опубликовал статью, в которой призывал всех неравнодушных присоединиться.
Рассказываю, что произошло с проектом за прошедшие две недели.
Ранее я описывал свои занятия по программированию с ребятами лет двенадцати. Пандемия в прошлом году сделала проведение подобных очных занятий невозможным, поэтому в текущем году я всё-таки надеюсь на возобновление очного формата. В этом же году я решил повысить планку интерактивности и перейти от игры, где нужно выбирать шары одного цвета, к игре, где можно бегать и прыгать (но не грабить караваны). На видео результат, которого удалось добиться на текущий момент. И вот на этом этапе я хочу узнать, что, на ваш взгляд, следует добавить в создаваемую игру...

In 2013 Canonical tried to crowdfund Ubuntu Edge smartphone. Its main feature could be the ability to use the smartphone as a full-fledged PС. Unfortunatly, the crowdfunding campaign did not accumulate enough money, so a dream of having a universal device remained to be the dream.
I've been searching for universality, too, on the software side, not the hardware one. Today I can confidently say I found the necessary combination: Git and JavaScript.
As you know, I have already described the benefits of browser applications (nCKOB static site generator) and the benefits of using Git instead of yet another back-end with API (GitBudget to track personal spendings). Once GitBudget was out, I spent the remaining 2020 to build a system allowing one to create browser applications right inside browsers. GitJS is the name of that system.

В 2013 году компания Canonical пыталась собрать средства на выпуск смартфона Ubuntu Edge. Особенностью продукта должна была стать возможность преобразовывать смартфон в полноценный ПК. Увы, необходимую сумму собрать не удалось, поэтому мечта создать универсальное устройство так и осталась мечтой.
Со своей стороны я давно искал универсальность со стороны программного обеспечения, не железа. Сегодня с уверенностью могу сказать, что нашёл необходимую комбинацию: Git и JavaScript.
Ранее я уже описывал как преимущества браузерных приложений на примере генератора статических сайтов nCKOB, так и преимущества замены очередного сервера с АПИ на Git для общения с внешним миром на примере приложения учёта трат ГитБюджет. После выпуска ГитБюджета оставшуюся часть 2020 года я потратил на систему, позволяющую создавать браузерные приложения прямо в браузере. Эту систему я назвал GitJS.
Hi, folks, let me share my experience of creating an application to keep track of my spendings. Specifically, let me do it by answering the following questions:
1. Why keep track of spendings in an application?
I, like many people out there, wanted to become rich and successful. To become rich, one is often advised to run a personal budget, that's what I started to do several years ago. I'd like to point out that running my personal budget hasn't made me rich and successful, and I increased income simply by moving to Moscow.
Здравствуйте, господа, в этой статье я поделюсь опытом создания приложения учёта трат, в частности отвечу на следующие вопросы:
1. Зачем мне приложение учёта трат?
Как и многие другие люди я давно хотел стать богатым и практиковать успешный успех. Одной из рекомендаций в таких случаях часто выступает предложение вести собственный бюджет, чем я и занялся несколько лет назад. Скажу сразу, что ведение бюджета не сделало меня богатым и успешным, а своё материальное положение я улучшил обычным переездом в Москву.

Hi, my name is Michael Kapelko. I'm a professional software developer. I'm fond of developing games and teaching folks to program.
Preface
Autumn 2019 was the third time I participated as one of the teachers in the course to teach 10-15-year-old folks to program. The course took place from mid. September to mid. December. Each Saturday, we were studying from 10 AM to 12 PM. More details about the structure of each class and the game itself can be found in the 2018 article.
I have the following goals for conducting such courses:

Здравствуйте, меня зовут Михаил Капелько. Занимаюсь профессиональной разработкой ПО. Увлекаюсь разработкой игр и обучением программированию.
Предисловие
Осенью 2019-го я в третий раз участвовал в курсе обучения ребят 10-15 лет программированию в качестве одного из преподавателей. Наши курсы проходили с середины сентября по середину декабря. Каждое занятие было в субботу с 10:00 до 12:00. Подробнее о структуре каждого урока и деталях создаваемой на курсе игры можно узнать из статьи за 2018-й год.
Лично для себя я выделил две основные цели, к которым иду с помощью курсов:

Hi, my name is Michael Kapelko. I have been developing software professionally for more than 10 years. I develop games and game development tools in my spare time.
This article describes my first durable application for desktop PCs: PSKOV static site generator.
Durability
A durable application is an application that functions without a single change on operating systems released in years 2010-2030. In other words, a durable application has backward compatibility of 10 years and has the stability to run for 10 years. Actually, PSKOV runs even under Windows 2000, so PSKOV has backward compatibility of 19 years.

Здравствуйте, меня зовут Михаил Капелько. Занимаюсь профессиональной разработкой ПО более 10 лет, в свободное время разрабатываю игры и средства для их создания.
В этой статье я расскажу о своём первом долговечном приложении для настольных ПК — генераторе статических сайтов ПСКОВ.
Под долговечным приложением я понимаю такое приложение, которое работает без единого изменения на операционных системах, выпущенных в период 2010-2030 годов. Иными словами, долговечное приложение обладает 10-летней обратной совместимостью и 10-летней прочностью. Впрочем, ПСКОВ работает даже на Windows 2000, так что у него 19-летняя обратная совместимость.
Hi. My name is Michael Kapelko. I've been developing software professionally for more than 10 years. Recent years were dedicated to iOS. I develop games and game development tools in my spare time.
Overview
Today I want to share my experience of teaching kids to program. I'm going to discuss the following topics:
Здравствуйте. Меня зовут Михаил Капелько. Занимаюсь профессиональной разработкой ПО более 10 лет. Из них последние годы связаны с iOS. В свободное время разрабатываю игры и средства для их создания.
Обзор
Сегодня хочу рассказать о своём опыте обучения детей программированию, в частности мы рассмотрим: