• PostgreSQL: Приемы на продакшене

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

      image
      Читать дальше →
    • Робот-конструктор «Хватоход»



        Известно что дети любят разбирать игрушки и гаджеты чтобы исследовать их устройство. Как правило, ничем хорошим для объекта изучения это не заканчивается. Чтобы удовлетворить любопытство юных исследователей существует целый класс игрушек которые продаются в изначально разобранном виде. Многие из нас в детстве собирали модельки из россыпи пластиковых деталей которые надо было склеивать и потом раскрашивать, но все эти модельки были макетами которые не ездили и не летали. Робот-конструктор «Хватоход» не такой — он может ездить, подбирать и перемещать небольшие предметы подчиняясь командам дистанционного управления. Под катом обзор, включающий анбоксинг, сборку и ходовые испытания Хватохода.
        Читать дальше →
      • Arduino Mega Server

        image

        Да, это снова Ардуино, но не спешите закрывать страничку, на этот раз вас ждёт нечто действительно новое и интересное. В основном в этой статье речь пойдёт о микроконтроллерных платах Arduino Mega и плате сетевого интерфейса Ethernet Shield W5100 и о том чуде, которое можно с ними сотворить если позволить себе выйти за рамки стереотипов.
        Читать дальше →
      • Как мы робота «WayBot» собирали или цикл статей «Как стать инженером». Часть 1

        В 2013 году на научной выставке в Москве я увидел интерактивного промо-робота. Идея показалась мне интересной, но опыта для построения копии у меня не было. В то время я заканчивал 4 курс университета и работал на себя в сфере систем безопасности. Ходил в детстве на радиокружок, хорошо понимал зачем нужны те или иные радиоэлементы, но вот с программированием микроконтроллеров и настройке unix-like систем опыта не было. Для получения опыта в этой сфере я решил собрать копию этого робота, улучшив некоторые моменты. Конечно сразу стартовать с такого проекта было бы глупо, и в качестве теста был собран 3д-куб 5х5х5, потом увлёкшись идеей был собран 3д-куб посерьёзней разрешающей способностью 10х10х10 пикселей:

        image

        Набравшись ещё опыта на несложных проектах, было решено приступить к давней идее, а именно собрать промо-робота. В лучших традициях жанра на кухне вечером обсудили функционал и заложили основные принципы построения. Если с платформой и технической реализацией было в принципе понятно, то как сделать корпус, голову, и вообще красивый внешний вид, понятия мы не имели.
        Читать дальше →
      • Памятка пользователям ssh

          abstract: В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые не боятся шелла. В отличие от большинства руководств, которые кроме ключей и -L/D/R опций ничего не описывают, я попытался собрать все интересные фичи и удобства, которые с собой несёт ssh.

          Предупреждение: пост очень объёмный, но для удобства использования я решил не резать его на части.

          Оглавление:
          • управление ключами
          • копирование файлов через ssh
          • Проброс потоков ввода/вывода
          • Монтирование удалённой FS через ssh
          • Удалённое исполнение кода
          • Алиасы и опции для подключений в .ssh/config
          • Опции по-умолчанию
          • Проброс X-сервера
          • ssh в качестве socks-proxy
          • Проброс портов — прямой и обратный
          • Реверс-сокс-прокси
          • туннелирование L2/L3 трафика
          • Проброс агента авторизации
          • Туннелирование ssh через ssh сквозь недоверенный сервер (с большой вероятностью вы этого не знаете)
          Читать дальше →
        • Как Python и Jinja могут облегчить жизнь FPGA разработчику

            Всем привет!

            Так бывает, что используемые языки программирования накладывают ограничение на то, что мы хотим сделать, доставляя неудобство при разработке. Что с этим делают разработчики? Либо смиряются, либо как-то пытаются выйти из положения.

            Один из вариантов — использование автогенерации кода.

            В этой статье я расскажу:
            • как можно обойти одно из ограничений языка Verilog, применяемого при разработке ASIC/FPGA, используя автогенерацию кода с помощью Python и библиотеки Jinja.
            • как можно ускорить разработку IP-ядер, сгенерировав модуль контрольно-статусных регистров из их описания.


            Если интересно, добро пожаловать под кат!
            Читать дальше →
          • Учёные сделали гибкую электронную бумагу, получающую питание от нажатий

              image

              Китайские и американские учёные создали электронную бумагу, которая способна создавать электрический ток от нажатий на неё. Из такого материала можно делать не требующие источника питания небольшие и гибкие экраны, интерактивные книги, реагирующие на нажатие протезы и охранные системы.

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

              Но исследователи пошли ещё дальше и научились добывать из неё ток. Для этого они сделали сэндвич из двух листочков такой бумаги, покрытых углеродными нанотрубками. При этом один из листочков дополнительно покрыт тонкой (30 мкм) плёнкой из полиэтилена, которую подвергли действию сильного электрического поля, в результате чего она приобрела отрицательный заряд. После того, как два листочка соединяют вместе, оставляя небольшое пространство между ними, другой листочек становится положительно заряженным.
              Читать дальше →
            • Создание робота для соревнований Roborace

              Специфика Roborace


              image

              Roborace – это состязания, в которых соревнуются роботы-автомобили на специальной кольцевой трассе. Можно провести некоторую аналогию между Roborace и гонками Формулы 1, за исключением двух моментов.
              • Во-первых, вместо полномасштабных гоночных болидов участвуют уменьшенные модели авто и оригинальные конструкции с габаритными и весовыми ограничениями (максимальные ШхД=25х50 см и вес до 3 кг).
              • Во-вторых, вместо пилотов автомобилем управляет бортовой компьютер, который анализирует показания различных датчиков и ориентирует автомобиль на трассе, выбирает скорость движения, предотвращает столкновения с препятствиями и соперниками. Собственно “поведение” авто на трассе определяется управляющей программой бортового компьютера.

              Roborace проводится в виде чемпионата, состоящего из этапов, которые организуются в различных городах Беларуси и за рубежом. Участие в чемпионате принимают как конструкции начального уровня (например, на базе конструктора типа LEGO), так и сложные робототехнические устройства. Регламенты соревнований формируются таким образом, чтобы охватить как можно более широкий спектр характеристик и возможностей робототехнических конструкций.
              Читать дальше →
            • 36 млн запросов в час, 10000+ постоянно работающих клиентов, на одном сервере, nginx+mysql

              Сложилась ситуация, что участвую в проекте, который работает с достаточно большой нагрузкой. Как уже написал — 36 млн запросов в час. Я много чего прочитал и перепробовал за последний месяц, настраивая сервер; хотелось бы просто сжато и компактно выдать тезисно то, что работает хорошо в такой конфигурации.

              Первое, что я заметил — множество советов как все настроить под большую нагрузку. Читайте их внимательно, обычно в тексте найдете, что речь про «высокую нагрузку» в 15-20 тысяч клиентов в сутки. У нас клиентов примерно миллион, активных, ежедневных.

              У нас нет денег и мы все делаем за свой счет, поэтому экономим. Итог — весь миллион клиентов обслуживается на одном сервере, вот на таком — EX-60 на hetzner.
              Читать дальше →
            • Использование LevelDB

                Столкнулся с ситуацией, когда мои коллеги для организации локального персистентного key-value хранилища используют SQLite, MemcacheDB, Redis игнорируя встраиваемые хранилища такие как LevelDB, Sophia, HamsterDB и т.д.

                Я разбил статью на две части:
                1. небольшое введение в api LevelDB;
                2. использование LevelDB, для хранения временных рядов.

                Подробности
              • 5 причин для Angular-разработчиков в пользу использования Meteor

                • Перевод
                image

                Если вы еще не слышали о Meteor, то как раз пришло время для знакомства. Meteor обеспечит вас поддержкой real-time режима в ваших приложениях, а также предоставит full-stack среду разработки под javascript/nodejs. Эта платформа является наиболее «звездной» в числе nodejs-фрейворков(а также входит в 10-ку самых «звездных» репозитариев на Github). Так что же, все эти людей просто ошибаются?
                Читать дальше →
              • Миграция данных из Oracle в PostgreSQL

                  «Ландшафт» СУБД в проектах нашей компании до недавнего времени выглядел так: большую часть составляла Oracle, существенно меньшие — MS SQL и MySQL.

                  Но, как известно, нет ничего вечного, и недавно к нам поступил запрос о применимости Postgres в одном из наших проектов. К этой СУБД мы присматривались в последние пару лет очень пристально — посещали конференции, meetup’ы, но вот попробовать ее в «боевых» условиях до недавнего времени не доводилось.
                  Читать дальше →
                • Replication slots в PostgreSQL

                  До девятой версии в PostgreSQL для создания «теплого» резервного сервера использовался WAL archiving. В версии 9.0 появилась потоковая репликация с возможностью создания «горячего» read-only сервера. В следующей версии PostgreSQL 9.4 появится новый функционал для создания потоковой репликации под названием replication slots.
                  Читать дальше →
                • Построенные на века: понимание сейсмостойкого строительства

                  • Перевод

                  Перевод поста Yu-Sung Chang "Built to Last: Understanding Earthquake Engineering".
                  Код, приведенный в статье (со всеми использованными математическими моделями), можно скачать здесь.
                  Выражаю огромную благодарность Кириллу Гузенко за помощь в переводе.

                  На прошлой неделе мир был потрясен новостями о крупных землетрясениях и разрушительных цунами в Японии. События всё ещё разворачиваются и могут стать одними из самых трагических стихийных бедствий в новейшей истории.

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

                  Примечание: динамические примеры в этом посте были созданы с помощью Mathematica. Загрузите файл формата (CDF) для взаимодействия с моделями и дальнейшего исследования темы.

                  Во-первых, давайте начнём с локаций. Следующая визуализация основана на американской базе данных по землетрясениям Geological Survey (USGS), произошедших между 1973 и началом 2011, с магнитудами более 5. Как можно увидеть, эпицентры сконцентрированы в узких областях, обычно на границах тектонических плит. В частности, существует серьезная сейсмическая активность вокруг Тихого океана, а именно в “Огненном кольце”. Так получилось, что Япония находится прямо в середине этой весьма активной области.

                  Earthquake map

                  Читать дальше →
                • STM32, C++ и FreeRTOS. Разработка с нуля. Часть 1

                  • Tutorial

                  Введение


                  Не так давно мой отдел столкнулся с трудностями поиска новых инженеров программистов для разработки встроенного ПО. Опытным и умным не нравился уровень зарплаты, а молодых просто нет в нашем городе. Поэтому под патронажем нашей доблестной глобальной компании со штаб квартирой где-то в Сент Луисе, мы начали сначала набирать студентов в интернатуру, а потом, решили пойти другим путем и сделать целых два курса по разработке ПО, а уже там самим выбирать самых “толковых” если понадобятся вдруг новые сотрудники. Это намного дешевле и позволяет охватить максимальное количество претендентов.
                  Немного отступлю от темы, сам я программировал последний раз очень давно, и вообще больше на С#, а последний глобальный проект на микроконтроллере (PIC16 на зыке Си) был сделан в далеком 2007 году.
                  Поэтому мне предстояло разобраться с современными микроконроллерами, языком С++ и операционной системой реального времени.
                  Конечно все наши проекты уже сейчас используют ОСРВ и пишутся на С++, но как разработчик я в них не учувствую, а занимаюсь тунеядством управлением проектами разработки такого ПО.

                  Выбор


                  Времени у меня на все про все было дано 1 месяц. С начала июня 2015 до начала июля 2015, потому что потом я собирался в отпуск, а после отпуска обычно полно работы. Надо было делать все быстро и четко.
                  Немного проконсультировавшись с коллегами, выяснил, что модное направление ARM Cortex различные ядра и из доступных отладочных плат можно заказать Olimex STM32P152 которые стоили 25 долларов. Они пришли очень быстро — 6 плат по цене примерно 2000 рублей. Стоит заметить, что эти платы были закуплены нами для университета, где собственно и будет проходить этот курс.
                  image
                  Читать дальше →
                • Цена ошибки и ее последствия в Google

                    Эту историю я услышал на первой неделе моей летней практики в Гугле, во время ознакомления с компанией. Рассказывал ее один бывалый инженер имя которого я теперь не вспомню, как и не вспомню мелких деталей истории, например конкретные числа. Однако, посыл этой истории очень важен, и показывает как «нетрадиционные» методы менеджмента могут оказаться довольно продуктивными. Речь пойдет об ошибке стоимостью в несколько сотен тысяч долларов, и о ее последствиях.
                    image
                    Читать дальше →
                  • Гроза, молния и средства защиты электросети своими силами

                      По итогам майских гроз пришлось провести ревизию сгоревшего оборудования и хотя ущерб был не так велик материально, но выход из строя некоторого оборудования нарушил устоявшийся комфорт проживания в собственном доме. Так я решил обратиться к специалистам в своей области, проконсультироваться и расширить систему защиты.

                      Исходные данные: дом, 3 фазы (15 кВт на дом), заземление штырем в 3 м длиной, автономная электросистема на базе солнечных батарей



                      Читать дальше →
                    • «pip -t» — простая альтернатива virtualenv

                      • Перевод

                      TL;DR


                      Чтобы просто установить и изолировать зависимости проекта, virtualenv часто оказывается слишком тяжелым решением. Предлагаем простую альтернативу:
                      1. добавить ./.pip в переменную окружения PYTHONPATH,
                      2. установить пакеты локально с помощью pip install -t .pip,
                      3. запускать python из папки проекта.

                      Читать дальше →
                    • Гаджеты для умного дома

                        image

                        Концепция «умного дома» появилась давно, уже 20 лет назад. Но в те времена интернет был неудобной диалапной экзотикой, а идея о том, что твой холодильник будет по сети продукты заказывать, казалась неудачной шуткой. Однако вода камень точит и с годами производители начали робко выпускать различную технику, которую можно было интегрировать в систему умного дома. Со временем на Западе сформировалось преимущественно утилитарное отношение к идее умного дома. Загадочная же русская душа, напротив, представляет себе умный дом примерно как в песне: «Вкалывают роботы, а не человек».

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

                        Развитие интернета вещей вдохнуло новую жизнь и в идею умного дома. Зачем ограничиваться только бытовыми приборами, если можно объединить в сеть всё, что угодно? Главное — придумать обоснование. Тем не менее, в этой сфере встречаются интересные и полезные продукты, которыми мы и сами не прочь оснастить свои квартиры и дома.
                        Читать дальше →
                      • Выставка достижений робототехники — MakerFaire 2015 в китайском Шэньчжэне



                          В очередной раз побываем с вами на грандиозной выставке достижений робототехники и электроники MakerFaire в столице hi-tech — Шэньчжэне. Выставка проходила 19-21 июня 2015. В этом году площадь выставки выросла в 4 раза — теперь уже был выделен отдельный квартал.

                          Напомню, MakerFaire — это выставка, что была задумана журналом MAKE, и впервые прошла в 2006 году. Целью выставки/фестиваля является популяризация движения «мейкеров» — людей кто что-то делает своими руками, направление DIY, творчества, сейчас на ней можно увидеть робототехнику, 3д печать, квадрокоптеры. Это международное явление.

                          Начнем нашу экскурсию по MakerFaire в Шэньчжэне.
                          Читать дальше →