• Магия SSH

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

      Оглавление:

      1) Local TCP forwarding
      2) Remote TCP forwarding
      3) TCP forwarding chain через несколько узлов
      4) TCP forwarding ssh-соединения
      5) SSH VPN Tunnel
      6) Коротко о беспарольном доступе
      7) Спасибо (ссылки)
      Читать дальше →
    • $mol: reactive micromodular ui-framework

        Сколько нужно времени, чтобы просто вывести на экран большой список, используя современные фреймворки?


        Список на 2000 строк ReactJS AngularJS Raw HTML SAPUI5 $mol
        Появление списка 170 ms 420 ms 260 ms 1200 ms 50 ms
        Обновление всех его данных 75 ms 75 ms 260 ms 1200 ms 10 ms

        Напишем нехитрое приложение — личный список задач. Какие у него будут характеристики?


        ToDoMVC ReactJS AngularJS PolymerJS VanillaJS $mol
        Размер ( html + js + css + templates ) * gzip 322 KB 326 KB 56 KB 20 KB 23 KB
        Время загрузки 1.4 s 1.5 s 1.0 s 1.7 s 0.7 s
        Время создания и удаления 100 задач 1.3 s 1.7 s 1.4 s 1.6 s 0.5s

        Небольшая головоломка: перед вами синхронный код, загружающий и обрабатывающий содержимое 4 файлов, но с сервера они грузятся параллельно. Как такое может быть?


        Синхронная параллельная загрузка ресурсов


        А теперь прошу за мной в кроличью нору, настало время удивительных историй...


        Читать дальше →
      • Подводные камни Bash

        • Translation


        В этой статье мы поговорим об ошибках, совершаемых программистами на Bash. Во всех приведённых примерах есть какие-то изъяны. Вам удастся избежать многих из нижеописанных ошибок, если вы всегда будете использовать кавычки и никогда не будете использовать разбиение на слова (wordsplitting)! Разбиение на слова — это ущербная легаси-практика, унаследованная из оболочки Bourne. Она применяется по умолчанию, если вы не заключаете подстановки (expansions) в кавычки. В общем, подавляющее большинство подводных камней так или иначе связаны с подстановкой без кавычек, что приводит к разбиению на слова и глоббингу (globbing) получившегося результата.


        Читать дальше →
      • Подборка подкастов по программированию на русском и английском языках

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

          Подкасты представляют собой звуковые файлы, которые можно слушать в любое время на вашем компьютере или другом устройстве (IPod, IPad, смартфон и т.д.). Это самый портативный способ потреблять контент и узнавать что-то новое. Популярность подкастов росла на протяжении многих лет и теперь они охватывают очень широкий круг вопросов.

          И да, есть много интересных и популярных подкастов для разработчиков и программистов. Подкасты невероятно полезны, они будут держать вас в курсе всего что происходит в интересующей вас сфере, а также помогут вам развить более широкий взгляд на постоянно развивающуюся область информационных технологий.
          Читать дальше →
        • Анализ трафика Android-приложений: обход certificate pinning без реверс-инжиниринга

            Иногда нужно исследовать работу бэкенда мобильного приложения. Хорошо, если создатели приложения не заморачивались и все запросы уходят по «голому» HTTP. А что, если приложение для запросов использует HTTPS, и отказывается принимать сертификат вашего корневого удостоверяющего центра, который вы заботливо внедрили в хранилище операционной системы? Конечно, можно поискать запросы в декомпилированом приложении или с помощью реверс-инжиниринга вообще отключить применение шифрования, но хотелось бы способ попроще.

            image
            Читать дальше →
          • Контроль над браслетом в ритме BlueZ

              В исследовательском проекте мне потребовался прототип медицинского браслета. Устройство должно было периодически измерять пульс, предупреждая об этом пациента, и отправлять результаты вместе с уровнем заряда батареи в облачный сервис. Таким устройством вполне мог стать и фитнес-браслет со стационарным ретранслятором вместо смартфона. Поэтому, прежде чем попытаться собрать прототип своими руками, я решил поэкспериментировать с чем-нибудь готовым. Так у меня появился новый Xiaomi mi band 1S Pulse (обзор на Geektimes) с оптическим датчиком частоты сердечного ритма.
              Читать дальше →
            • Отлаживаем правила RewriteRule, или немного об интимной жизни mod_rewrite

                У меня RewriteEngine всегда был довольно стрессовой темой. Только вот недавно я вдруг обнаружил, что все как-то улеглось и стало более или менее понятно. Поскольку я совершенно обычный человек, я уверен, что ситуация ошибки конфигурации веб-сервера «доставала» не одного лишь меня, и я спешу поделиться своим опытом.

                Получилось нечто среднее между руководством по использованию модуля mod_rewrite и своеобразным справочником по конфигурированию веб-сервера с помощью файла .htaccess. Попутно хотелось бы заострить внимание на особо сложных или неочевидных моментах.

                Предполагается, что читатель использует урл-рерайтинг в своей работе, знает, в общих чертах, что такое RewriteEngine и уже провел несколько часов за его настройкой. Эта статья не совсем для начинающих, но и не для супер-профи, конечно.

                Читать дальше →
              • Front-end шаблонизатор

                  Прошлую свою статью я посветил описанию «велосипеда» (загрузчика и шаблонизатора в рамках «легкого» framework’а). Волею судеб, для пары проектов я был вынужден выделить шаблонизатор и сделать его standalone версию, обогатив при этом рядом новых возможностей. Именно об front-end шаблонизаторе и пойдет речь.

                  Но чтобы сэкономить ваше время, прежде я обозначу тех, кому эта статья может быть интересной (ибо букв будет много):

                  • Вы front-end разработчик, и вам интересно использование шаблонов.
                  • Вы back-end разработчик, и вам интересно использование шаблонов на front-end’е.
                  • Вы давно ищете какой-нибудь инструмент для систематизации своей коллекции UI-control'ов, накопившуюся за несколько лет.
                  • Вы интересуетесь разработкой web-компонентов.
                  • Вам хочется высказать критические замечания и порекомендовать angularJS.
                  • У вас есть свободное время и вам интересно почитать об очередном велосипеде.
                  • У вас нет свободного времени, но вам интересно.
                  • Вы хороший и любознательный человек.

                  Читать дальше →
                • Рудольфу Свореню — 89! Как книга «Электроника шаг за шагом» — изменила жизнь людей

                    Про Рудольфа Свореня (автора книги «Электроника шаг за шагом») мы делали несколько постов. И в частности про кампанию по переизданию этой культовой книги. В анкету на предзаказ уже отметилось почти 500 человек, охват удивительный — города от Калининграда, до Сахалина. Из Канады и США. Из эстонского Таллина. Киев, Харьков. Минск. Вильнюс. Несколько заявок из Казахстана.

                    И в частности некоторые отзывы:

                    "Читал несколько раз и каждый раз обнаруживал что-то новое. Даже после «искусства схемотехники», которая по сути является ВУЗовским учебником, перечитывать «Шаг за шагом» было поучительно. Как она на меня повлияла: начинал как электронщик, но сейчас работаю DSP-программистом. Если бы не прочитал её и не подхватил бы её дух — вряд ли стал бы разработчиком. Благодаря этой книге я проникся системой ценностей инженеров и стал инженером."

                    "Читал почти все книги. Изменила жизнь..."

                    "Мой первый электро букварь :)"

                    "Эта книга дала мне билет в будущее, если бы в своё время она не попала мне в руки, я не знаю чем бы я сейчас занимался."

                    "Прочитана до дыр. Книга дала серьезный толчок для дальнейшего развития в этой области. Именно из-за этой книги я связал свою жизнь с электроникой. Спасибо!"

                    "Электроника шаг за шагом — вдохновляет к творчеству."

                    В это воскресенье 29 мая — у Рудольфа Анатольевича был День Рождения — 89 лет!, в честь этого дня — мы решили сделать небольшой подарок — и попросили людей написать отзыв о том, как именно книги Р.А. повлияли на их жизнь — на выбор будущей профессии. И для тех кто не читал книгу — было бы интересно узнать, что же такого особенного в этой книге что она смогла объединить стольких людей?
                    Читать дальше →
                  • Автоматические жалюзи на Arduino



                      Идея автоматизации жалюзи зародилась в моей голове достаточно давно. Особенно сильно этому способствовало специфичное расположение окон моей комнаты: после обеда в мои окна бьет яркий солнечный свет, мешающий работе за компьютером и отбивающий всяческое желание заниматься продуктивной деятельностью. В тоже время, находиться в комнате с закрытыми створками жалюзи удовольствие, на мой взгляд, сомнительное. Мне хотелось получить систему, позволяющую автоматически менять угол поворота створок, в зависимости от интенсивности солнечного света, а так же обладающую возможностью ручного управления с дистанционного пульта.
                      Читать дальше →
                    • Symfony и Command Bus

                      Уже больше года использую паттерн Command Bus в своих Symfony-проектах и наконец решил поделиться опытом. В концев концов обидно, что в Laravel это есть «из коробки», а в Symfony, из которого Laravel во многом вырос — нет, хотя самому понятию Command/Query Separation уже не менее 10 лет. И если с буквой «Q» из аббревиатуры «CQRS» еще понятно что делать (лично меня вполне устраивают custom repositories), то куда приткнуть букву «C» — неясно.

                      На самом деле, даже в банальных CRUD-приложениях Command Bus дает очевидные преимущества:

                      • контроллеры становятся «худыми» (редкий «экшен» занимает более 15 строк),
                      • бизнес-логика покидает контроллеры и становится максимально независимой от фреймворка (в результате ее несложно повторно использовать в других проектах, даже если они написаны не на Symfony),
                      • упрощается unit-тестирование бизнес-логики,
                      • сокращается дублирование кода (когда, например, необходимо реализовать «фичу» как через Web UI, так и через API).

                      КДПВ
                      Читать дальше →
                    • Настройка sendmail для отправки почты через gmail.com

                      Долго искал внятное объяснение как заставить локальный sendmail, установленный на компьютере во внутренней сети, отправлять почту во внешний мир. В качестве relay был выбран smtp.gmail.com.

                      Перекопал и испробовал кучу описаний в сети как это должно делаться. Результат оказался пшиком.

                      Предлагаю скомпилированный из разных источников и собственных ошибок результат действий который увенчался успехом. Возможно кому-нибудь сэкономит время.
                      Читать дальше →
                      • +18
                      • 39k
                      • 7
                    • Все уроки по ардуино

                        Однажды появилась необходимость собрать все уроки, обучающие материалы (tutorials) с habrahabr и geektimes в одном месте и немного их систематизировать. В этом сборнике обучаек представлены более 100 статей на тему ардуино с пометкой «tutorial», либо содержащие несложные для новичков проекты на ардуино, а также немного видеоуроков по смежным темам. Статьи разделены на 10 тематик по сферам применения собранных устройств. Также хочется напомнить, что весь обучающий материал, опубликованный на habrahabr и geektimes является интерактивным: в любой момент можно задать вопрос автору в комментариях к статье. Как правило авторы на них отвечают. Этот сборник будет дополняться новыми обучайками (tutorials) по мере их публикации.

                        Читать дальше →
                      • Как использовать именованные конструкторы в PHP

                        • Translation
                        • Tutorial
                        tl; dr — Не ограничивай себя одним конструктором в классе. Используй статические фабричные методы.

                        PHP позволяет использовать только один конструктор в классе, что довольно раздражительно. Вероятно, мы никогда не получим нормальную возможность перегрузки конструкторов в PHP, но кое-что сделать все же можно. Для примера возьмем простой класс, хранящий значение времени. Какой способ создания нового объекта лучше:

                        <?php
                        $time = new Time("11:45");
                        $time = new Time(11, 45);
                        

                        Правильным ответом будет «в зависимости от ситуации». Оба способа могут являются корректным с точки зрения полученного результата. Реализуем поддержку обоих способов:
                        Читать дальше →
                      • Переезд из Windows в Linux Ubuntu 14.04 LTS вместе с Jetbrains IntelliJ Idea 14.1.5

                        Некоторое время назад появилось желание переехать со всем программным обеспечением необходимым для написания Java кода под Linux. В качестве системы назначения был выбран дистрибутив Ubuntu 14.04.3 LTS. Пост не откроет никаких тайн супертонкой настройки операционной системы — все уже давно известно и на тематических форумах все обсуждено. Я лишь опишу проблемы или, возможно, особенности, которые возникли при работе с Jetbrains IntelliJ Idea 14.1.5. Возможно, читатель и не знает, что у него есть проблемы, а значит для него данные решения станут «improve» фишками.
                        Читать дальше →
                      • Ускоряем PHP (с ReactPHP)

                          В этом посте я хотел бы поделиться не совсем обычным, для мира PHP, способе построения приложения, если угодно — архитектурой. Данный подход позволяет средствами PHP увеличить количество обрабатываемых запросов в разы. Так же я поделюсь своими наработками в этом направлении. Конечно данный подход не бесплатен, в плане требований к коду, но давайте всё по порядку.
                          Читать дальше →
                        • Научные мультфильмы, что показывать детям без вреда для них?

                          image
                          Объяснение закона гравитации из мультфильма «Физика для самых маленьких»

                          У меня растет два очень любознательных сына в возрасте три и пять лет. Они очень любят научные мультики, особенно по физике и астрономии, как только в их руки попадает планшет, маленькие пальчики начинают быстро перебирать видеоролики из YouTube в поисках интересного контента. И что же они там находят? Поскольку я не только отец двоих детей, но еще и существенную часть жизни посвятил методике преподавания физики для маленьких детей, я знаю, что показывают детям учителя, а также заботливые родители и добрые бабушки. Скажу сразу, не все из этого стоит показывать детям.
                          Осторожно! Под катом горькая правда
                        • Arduino DIY Watch — самодельные часы на Arduino



                            После нескольких лет знакомства с Arduino захотелось сделать что-то действительно интересное и полезное. Было решено сделать наручные часы. Но не просто часы, а действительно компактные, удобные, внешне не очень страшные и самое главное с длительным временем автономной работы часы.
                            И так встречайте самодельные часы на Arduino или DIY Arduino Watch!
                            Читать дальше →
                          • Альтернатива .sortable — новое решение сортировки списка на jQuery

                              Существует масса решений для сортировки списков, например nestable, sortable, tableDTD, tableSorter и прочих, которые имеют широкий функционал, но при этом — большой код.
                              Моё решение использует jQuery, имеет компактный код (52 строки без комментариев, 1.8 кб) и предусматривает перемешивание элементов (относительно позиционированных) в пределах родительского контейнера по вертикальной оси.
                              Весь ход мыслей прокомментирован в JavaScript.

                              Посмотреть в действии на jsFiddle (некомментированный код).
                              Читать дальше →
                            • Почему я больше не использую MVC-фреймворки

                              • Translation


                              Уважаемые хабравчане.

                              Поскольку дискуссия вокруг статьи идет весьма активно, Жан-Жак Дюбре (он читает комментарии) решил организовать чаты в gitter.

                              Вы можете пообщаться с ним лично в следующих чатах:
                              https://gitter.im/jdubray/sam
                              https://gitter.im/jdubray/sam-examples
                              https://gitter.im/jdubray/sam-architecture

                              Также автор статьи разместил примеры кода здесь: https://bitbucket.org/snippets/jdubray/

                              По поводу кода он оставил следующий комментарий:
                              I don't code for a living, so I am not the best developer, but people can get a sense of how the pattern works and that you can do the exact same thing as React + Redux + Relay with plain JavaScript functions, no need for all these bloated library (and of course you don't need GraphQL).
                              Читать дальше →