Введение в Prolog
Хочу такой туториал, с которым все понятно, куда коней запрягать. А его нет. Напишу тогда свой.
Итак, Пролог это не обычный язык программирования. Самый лучший пример использования это решение логической задачи типа
5 разных человек в 5 разных домах разного цвета, курят 5 разных марок сигарет, выращивают 5 разных видов животных, пьют 5 разных видов напитков. Вопрос: кто выращивает рыбок?
Подсказки:
- Норвежец живет в первом доме.
- Англичанин живет в красном доме.
- Зеленый дом находится левее белого.
- Датчанин пьет чай.
- Тот, кто курит Rothmans, живет рядом с тем, кто
- выращивает кошек.
- Тот, кто живет в желтом доме, курит Dunhill.
- Немец курит Marlboro.
- Тот, кто живет в центре, пьет молоко.
- Сосед того, кто курит Rothmans, пьет воду.
- Тот, кто курит Pall Mall, выращивает птиц.
- Швед выращивает собак.
- Норвежец живет рядом с синим домом.
- Тот, кто выращивает лошадей, живет в синем доме.
- Тот, кто курит Philip Morris, пьет пиво.
- В зеленом доме пьют кофе.
Для решения задач такого типа очень подходит Prolog.
Язык оперирует всего тремя понятиями, это Факт (Fact), Правило (Rule) и Запрос (Query).
Пожалуй, самым точным определением будет слово «осознанность».
Пожалуй, самым точным определением будет слово «осознанность». Нон-конформизм это тоже своего рода крайность, так как бывает сопротивление ради сопротивления, особенно в пубертатном возрасте. Уметь оценивать и признавать противоположную точку зрения, вот что по-настоящему ценно.
Некоторые мои знакомые приходят к осознанности разными путями, кто-то через стремные духовные практики, кто-то через упражнения с ножом или бритвой.
Но всегда осознанность означает правильно настроенный жизненный компас.
Brief introduction to the Kubernetes.
Kubernetes is a winner in docker cloud orchestration, so let’s get a brief introduction in what it is and what kind of problems it solves.
Kubernetes is a set of tools designed to solve a problem of deployment of your lovely tailor-made application to a cloud. It does not matter which cloud you choose, AWS, Azure or Google, or even IBM, because Kubernetes provides you with a set of tools which are platform independent.
Согласен по всем пунктам!
Согласен по всем пунктам!
Я для себя выделил ещё один признак, это умение проводить собственные размышления над проблемой, особенно если они противоположны общепринятой точке зрения. И, конечно, умение вести дискуссию пользуясь логическими построениями, вместо «ойнувсе».
Noteworthy Clojure projects
Recently I again dived deeply into Clojure development with my Bank Statements — ERP sync tool and started to investigate what’s new in Clojure world. It appears a lot of great things happend in 2017!
Every of following tools drops my jaw down. Here is my list:
- Lightmod and Nightcode really great editors for Clojure/Clojurescript beginners. Zach Oakes included useful examples to jump into Clojure development train.
- Dynadoc, documentation exploration tool which makes your work with documentation more effective and interactive.
- Dirac is a Clojurescript REPL right in your Chrome browser!
- Vase a rapid declarative Pedestal and Datomic based microservice development tool by guys from Cognician.
- Boot build tool became very popular because of custom and modular build workflow. When you feel yourself limited by Leiningen, give Boot a try. It suites even for blog publishing!
Вещи в веб-деве, которые меня действительно впечатлили
Lightmod и Nightcode редактор с подсветкой синтаксиса, где Clojure и ClojureScript работают из коробки и есть несколько хороших примеров кода прямо в той же коробке.
Удивительно, какие вещи может сделать один человек. Проекты также содержат интерактивный REPL прямо на странице ClojureScriptа. Впрочем, это лучше показать.
ClojureScript REPL right in your Google Chrome Dirac. Лучше всего за себя скажет сам скриншот Dirac. Отличная поддержка ClojureScript прямо в вашем браузере!
В этом же контексте имеет смысл посмотреть на paren-soup онлайн редактор для Clojurescript.
Про редакторы и IDE
Я люблю время от времени тыкать палочкой в различные редакторы и пробовать их в своей работе.
Сейчас появилось очень много интересных и быстрых штук типа Sublime, Atom, LightTable. Ребята из Jetbrains создают отличные (но медленные и прожорливые) IDE типа WebStorm, RubyMine, PyCharm.
Также небезынтересно было посмотреть, что и как используют сейчас в качестве редактора другие программисты https://github.com/A/code-screenshots.
И, конечно, незабвенные Vim и Emacs. Уверен, что постигнуть нужно оба редактора. Первый, обязательно, за дружелюбность к пальцам, которая перерастает при помощи двигательной памяти в такую производительность управления текстом, которую очень непросто достигнуть конкурентам. И, кстати, именно поэтому практически все вышеперечисленные редакторы предлагают режим эмуляции Vim. Включая Emacs. И, кстати, о Emacs.
Моноколесо Ninebot One S2: Ремонт прокола камеры своими руками
Однажды ехал вечером домой и не заметил достаточно глубокую яму. После обследовал колесо: включается-выключается, крутится, но шина спущена. Взял в руки потерпевшего и понес 🙂 Насмотрелся видео с разбором колеса до хорошего доступа к шине, также посмотрел видео, где кто-то умудрился заклеить колесо не разбирая. Но у меня не настолько хороши навыки гинеколога, чтобы повторить подобную процедуру.
Что понадобилось мне для ремонта: шестигранники, маленький чтобы открутить небольшой винт снизу педали, побольше для раскрутки основных винтов, которые держат крышку и еще чуть больше, чтобы открутить педали. Хорошая крестовая отвертка. Плоская железка или кусок крепкого пластика, чтобы поддеть шину для разбортировки. Также потребуется велосипедный набор для ремонта камер, в него входит наждак для зачистки поверхности резины, резиновый клей и заплатки.
Quick fix for rubygems SSL error
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.org/ — SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
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
Compare Postgres speed within Docker and without
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.21.0).