Maksym Prokopov personal blog
Idea is a something worth sharing

О красоте кода

11.08.2017

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

Из этого ограничения появились концепции ООП. Но с ООП тоже беда. Увеличивается количество уровней абстракции. И тогда в большом проекте удержать всю идею в голове становится невозможно. Функционального подхода к разработке это тоже касается, но в меньшей мере. В Clojure, например, гораздо более выразительно и логично можно бить код на куски.

Read More…

Deployment of Clojure app to a production with Docker

03.08.2017

Clojure deployment to a production itself not a very complicated task, but with the Docker it becomes more flexible solution. You can deploy your app to the Amazon EC2 or even to Amazon EC2 Container Service just in minutes! In this example we have Ring web server listening on 3000 port an some public resources, like bootstrap css and js in resources/public folder, and application-specific settings in resources/settings folder.

Caution: your Ring web server should be configured to listen on 0.0.0.0 address in order to play nicely with docker.

Read More…

Что почистить на вашем Mac?

28.07.2017

То, что раньше делал прекрасный Daisy Disk, сейчас вполне неплохо выполняет встроенная в Mac OS Sierra утилита.

Разработка фронтенда на веб катится не туда.

22.07.2017

«Спасибо скажем мы Аллаху,
за то, что он наполнил мир глупцами,
Иначе не увидели бы мы мудрецов»

Омар Хайям.

Потребовалось мне на днях запилить динамический веб на стеке React + Redux. Полез посмотреть, чем нынче пользуется уважаемая общественность. Оказывается, стандартно используют Javascript ES-2015, он же ES6. Чтобы запустить это счастье нужно, следите за руками: туго перевязанная упаковка с npm + nodejs, Webpack, Babel. npm доставит вам различные пакаджи, библиотеки типа react, redux, webpack нужен для динамической сборки и предкомпиляции приложения, babel позволит вам писать код на модных стандартах джаваскрипта не особо заботясь о совместимости с предыдущими браузерами.

Read More…

Про Docker и Ruby on Rails sprockets and precompiled assets

11.07.2017

Рельсы идут не тем путем.

По-хорошему монолит на рельсах нужно дробить, а то получается 1С:Бухгалтерия, со всеми включенными галочками по-умолчанию. В данном случае умолчания в рельсах слишком greedy.

Взять вот sprockets. Его задача вообще один раз запуститься, минифицировать css и js, и замолчать навеки. При этом он требует кучу разнообразных зависимостей типа execjs, nodejs или v8 от гугла в качестве движка минификации.

Но что делает фреймворк? Sprockets включают в Gemfile, он грузится вместе с полезным кодом, занимает кучу места, мешается под ногами и заставляет программиста танцевать с бубном вокруг задач связанных с деплоем!

Read More…

Музей Мерседес-Бенц в Штуттгарте

01.06.2017

Музей Мерседес-Бенц в Штутгарте произвел на меня неизгладимое впечатление. Легко можно потратить на его посещение целый день и даже этого будет мало. Пожалуй, начну с развенчания некоторых мифов.  У нас в сознании Мерседес-Бенц представляется одной торговой маркой, но дело в том, что Мерседес был только одной из марок автомобилей компании Даймлер, а компания Карла Бенца была основным конкурентом Даймлер вплоть до объединения в 1926г. Впрочем, все по порядку.

Read More…

Как я запускал интернет-магазин. Часть 4. Переезд.

22.03.2017

В прошлом посте я рассказывал о косяках Opencart, сегодня хочу рассказать о том, как мы переехали на новый движок интернет-магазина Хорошоп.

Самое важное в интернет-магазине это, конечно, удобство для посетителя и дизайн. И здесь у Хорошоп все очень хорошо, поскольку вы не занимаетесь выбором «шкурки» и кастомизацией миллиона параметров как это происходит с Опенкартом, а получаете готовую работу с уникальным дизайном, который везде хорош и складен, в том числе и на мобильных платформах. Мы заказали дизайн «как у Truper» и с первой попытки получили результат, который ни разу не хотелось исправить! А это дорогого стоит.

Read More…

Отличные иллюстрации работы известных алгоритмов

15.02.2017

Приятные и понятные анимации иллюстрирующие работу алгоритмов Quicksort, Binary Search, BFS.

https://illustrated-algorithms.now.sh/

Вот я и стал коммитить в Clojure опенсорц

30.12.2016

Я уже как-то признавался в любви языку программирования Clojure, но все руки не доходили до чего-то более-менее серьезного. Всем интересующимся программистам рекомендую почитать Out of the tar pit про растущую сложность создания и поддержки современных программ, и как с этим бороться.

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

Read More…

Why docker for Rails development sucks

04.11.2016

I’ve been excited about docker idea for everything, from production to development. It’s definitely ok for production, continuous integration and deployment rollouts, but sucks for development and here is why.

Development process should be as fast and responsive as possible. Responsiveness and robust feedback are critical for development. REPL should give results immediate, because human waiting for computer is really sucks!

And when you right in the middle of development process and feedback is slow because of docker this is not what makes you happy, it’s stopping your read-evaluate-print loop and adding distraction factors to your workflow.

Read More…