Ошибка epmd rabbitmq в Docker контейнере

На той недели, при разворачивание тестового окружения, столкнулись с проблемой запуска RabbitMQ в Docker контейнере.

Почему-то rabbitmq падал с ошибкой:

ERROR: epmd error for host build189: address (cannot connect to host/port)

Самое интересное, что проблема воспроизводится не всегда, поэтому отловить и отдебажить ее было проблематично.

Запускали rabbitmq следующей командой(выкинул все лишнее):

docker run -d -h build189.rabbitmq.test.local --name rabbitmq rabbitmq

В гугле много раз упоминается данная проблема, но ни одно из решений нам не помогло. Но раз из ошибки следует, что rabbimq не знает хост build189, мы решили добавить его в /etc/hosts завернув его на 127.0.0.1 и больше баг не проявлял себя.
В Docker’e это делается просто:

docker run -d -h build189.rabbitmq.test.local --name rabbitmq --add-host build189:127.0.0.1 rabbitmq

Отчет о проведенном хаккатоне

У нас прошел первый в компании хакатон. Он проходил два дня в рамках только нашего отдела. В 17:00 второго дня всем необходимо было продемонстрировать результаты своей работы. Темы можно было предлагать любые. В нем приняли участие четыре команды. Наша команда была под номером — 3. О нашем опыте я и расскажу.

Continue reading

Crontab, перевод строки после последней задачи

Маленькая заметка о том, что при размещение задач в crontab необходимо всегда заканчивать их переводом строки, иначе задача не будет выполнена. Не зная этой особенности иногда можно потратить много времени на решение проблемы, почему не выполняется последняя задача из crontab? Будьте внимательны. В сети можно найти валидаторы crontab, онлайн или на каких-либо скриптовых языках. На php тоже есть примеры реализации.

Hackaton — первый день

Подходит к концу первый день хакатона. Небольшой отчет по первому дню.

Что получилось сделать за этот день:

  • Реализовали прототип удаленного управления нашими стробоскопами. С помощью него каждый может попробывать поиграться с нашим прототипом, заходите сюда, единственное задержка на нашем канале youtube примерно 30 секунд. Реализованы две веб-морды на PHP — Silex’e и Boostrap’e и Erlang — Chicago Boss. К этому всему добавилась логика в Arduino nano и магия с настройками сетей)
  • Убедились, что ethernet-кабелю можно запитывать лампы. По ним мы будем питать наши лампы.

Проблемы с которыми сегодня столкнулись:

  • Для работы Arduino ей необходимо какое-то время на инициализацию, соотвественно не возможно с ней работать по схеме сервер-клиент, клиенту приходится выставлять таймауты, что есть очень ни очень. Решили проблему, написав небольшой сокет сервер, который по сути открывает блочное устройство на чтение \ запись и вещает на свободный порт. Все внешние приложение уже общаются с портом прозрачно.
  • Инфраструктура. Из нас ни кто не имеет реального опыта в работе с arduino и вообще железом. Приходится подтягивать мат.часть на ходу.
  • Не успели все, что хотели подготовить к завтрашнему дню по аппаратной части.

Завтра должно быть продакшен решение, поэтому будет жарко. Смотрите за нами на нашем канале и нашими друзьями.

Vagrant box маппинг на существующую виртуальную машину VirtualBox

Иногда есть необходимость указать Vagrant’у, чтобы он запускался на существующей виртуальной машине VirtualBox’a. Стандартный кейс, когда Vagrant при старте создал новую виртуальную машину, а вам нужна старая, к примеру из-за того, что вы увеличили \ уменьшили количество оперативной памяти для VM. Поскольку сам столкнулся с этим в очередной раз, решил написать заметку.

Continue reading

Полезные команды для переноса данных между серверами linux

Есть у меня один проект на phpBB и на днях решил его перенести с сервера на сервер и за одно обновить ему версию. Проект не сложный и требовалось перенести только БД и само приложение. Больше проблем возникло с переходом на более новую версию phpBB, пришлось поковыряться, но об этом я не буду рассказывать. А расскажу о полезных linux командах, которые помогают совершить такой перенос. Continue reading

MySQL, изменение кодировки в SELECT

Появилась необходимость сделать выборку из таблиц и отдать результат людям, которые ни какого отношения не имеют к ИТ. Все было бы хорошо если бы не одна из колонок не была бы в utf8_bin в которой хранятся различные символы, которые отображаются как: d0a4d0bed180d182d183d0bdd0b0 и простому смертному не совсем понятны) Не много погуглив доку оказалось MySQL умеет это делать прямо в запросе.
[sql]SELECT user_id, username COLLATE utf8_general_ci AS username FROM table;[/sql]
В моем примере колонка username имеет кодировку utf8_bin и прямо в запросе я ее конвертирую в utf8_general_ci, чтобы все было для людей) Может кому пригодится и я не забуду 😉

WiFi Points или 200 коммитов к бета версии

Живя в Таиланде уже почти с полгода и греясь на солнышке, возникла необходимость поиска WiFi интернета. Как оказалось достойных сервисов не нашлось. Поэтому необходимость переросла в идею, а идея в реализацию сервиса WiFi Points, который должен помочь найти WiFi в любом уголке нашего земного шара.

За две недели между ходами в Героях 3 и волейболом, было произведено 200 коммитов и это привело нас к бета версии WiFi Points.

Не много расскажу о том как устроен процесс разработки.
Проект реализовывали в команде из 3х человек: дизайнер, фронт-энд и бэк-энд разработчики. Код лежит в SVN’e на Assembla. Roadmap в гугл доках, а различные мелкие задачки на листочках :), по возможности конечно не забываем и их переносить в доки, чтобы не чего не забыть. На бэк-энде конечно же используется Yii. На фронт-энде Google Map, JQuery. Все это дело крутится на nginx + php-fpm + mysql. Про железо говорить бессмысленно, т.к. нагрузки ни какой нет… а 8 ядер и 16гигов оперативы просто простаивают). Для наполнения была идея спарсить какие-то базы WiFi точек, но подумав отказались от этой идеи, т.к. может быть очень много старой и не правдивой информации.

Функционал, который сейчас доступен ;):

  • Просмотр всех точек на карте.
  • Поиск по адресу, по названию точек пока поиска нет и пока не решили будет ли он.
  • Авторизация через: Facebook, Twitter, Vkontakte.
  • Привязка аккаунтов.
  • Добавление точек.
  • Редактирование и удаление собственных точек.
  • Доступно два языка: английский, русский.

Основная идея проекта, помочь себе и другим в поисках интернета в любом уголке мира. Особенно актуально для людей, которые много путешествуют. Так что пользуемся, не забываем добавлять точки, которых еще нет на карте. Если есть какие-то мысли по развитию проекта, добавления функционала, находите ошибки, пишите — всегда рады получить фидбэк. Если есть вопросы, задавайте.

Ну а так же вы можете следить за обновлениями в:

Представление редактирование отношения MANY_MANY в Yii

Давно лежит данная заметка в черновиках. Решил наконец выложить…

Почему-то часто вызывает сложности редактирования связи MANY_MANY, но самое просто это использовать мультиселект. Когда нужно выбирать из больших списков, то это действительно становится не удобным и лучше использовать какие-то расширения. Самые главные плюсы мультиселекта, что это быстро, просто и работает из коробки)) Ну и естественно пример:

<?php echo $form->labelEx($model, 'categories'); ?>
<?php echo $form->dropDownList($model, 'categories', CHtml::listData(
    Category::model()->active()->findAll(), 'id', 'title'
), array('multiple'=>'multiple', 'size'=>'7', 'encode'=>false)); ?>
<?php echo $form->error($model, 'categories'); ?>

Поясню что здесь написано.
categories — Это отношение MANY_MANY в модели $model.