Maksym Prokopov personal blog
Idea is a something worth sharing

Quick fix for rubygems SSL error

24.10.2017
In case you get ERROR: SSL verification error at depth 2: certificate has expired (10) ERROR: Certificate /C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA expired at 2014–01–28T12:00:00Z ERROR: SSL verification error at depth 2: certificate has expired (10) ERROR: Certificate /C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA expired at 2014–01–28T12:00:00Z ERROR: SSL verification error at depth 2: certificate has expired (10) ERROR: Certificate /C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA expired at 2014–01–28T12:00:00Z ERROR: Could not find a valid gem ‘cocoapods’ (>= 0), here is why: Unable to download data from https://rubygems.
Read More…

Compare Postgres speed within Docker and without

07.09.2017
I decided to compare if there will be significant differences between dockerized and non-dockerized Postgres. Here is my test environment: rails 5 application with rich test suite, about 628 examples, macOS Sierra 10.12.6, Docker 17.06.0-ce-mac19. I use Postgres docker version alpine 9.6 which is 37,7Mb and raw Postgres 9.6 with GUI for Mac which is 379Mb. Rails run locally, database.yml connects to the localhost postgres with pool 5 using gem pg (0.
Read More…

Gitlab: continuous delivery setup for Clojure/Java with Docker

05.09.2017
Recently I was doing a microservice with Server Sent Events and Pedestal in Clojure and I though it should be a good idea to implement automatic build and deployment to docker registry container. I already have Gitlab installed and started to play around. Long story short, here my .gitlab-ci.yml which took me a couple of days to figure out what is the “artifact” in Gitlab and how is it suppose to survive between artifact builds and docker builds.
Read More…

Fully automated docker mysql database backup from remote host

17.08.2017
The main idea is to have fully automated docker database backup from low end D-Link NAS DNS-320. I believe, that host, which hosts backups should be responsible for doing whole backup process, not the web-servers, which nowadays designed to be ephemeral. Solution design is following: My backup box will copy backup.sh script to the remote coreos-03 host. Then remote host copies backup.sh script into database container. Backup box executes docker command «docker exec itservice_db_1 backup.
Read More…

Ansible Containers

15.08.2017
Long story short. Ansible decided to create separate orchestration tool for the managing application containers, which is obviously a mainstream now. And this is straightforward next step after development tools for server state management like Ansible. ansible/ansible-container _ansible-container - Ansible Container is a tool to build Docker images and orchestrate containers using only Ansible…_github.com But I was really disappointed with Ansible 2.3, because docker_service module is still broken. I tried all possible combinations of docker, docker-py and docker-compose python modules for ansible on remote host with CoreOS and all of combinations failed with different weird errors like “Dockerfile could not be found” and so on.
Read More…

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

11.08.2017
Когда программист программирует, он начинает разбивать код на модули только потому, что имеет ограничение в своем неокортексе на количество одновременных элементов в памяти. А я ведь когда-то писал на ассемблере, и легкой прогулкой это никак нельзя было назвать, в основном из-за простыней однообразного кода, в котором было легко потеряться. Из этого ограничения появились концепции ООП. Но с ООП тоже беда. Увеличивается количество уровней абстракции. И тогда в большом проекте удержать всю идею в голове становится невозможно.
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.
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…