• Альтернативное управление окнами в Linux

      Я из тех, кто ставит на Caps Lock переключение раскладки потому, что лень нажимать 2 клавиши, когда можно нажимать одну. Я бы даже хотел 2 ненужные клавиши: одну бы я использовал для включения английской раскладки, а вторую для русской. Но вторая ненужная клавиша — это вызов контекстного меню, которая настолько ненужная, что выпиливается многими производителями ноутбуков. Так что приходится довольствоваться тем, что есть.


      А ещё я не хочу при переключении окон искать их иконки на панели задач, ловить взглядом названия при листании через Alt+Tab, листать рабочие столы и т. д. Я хочу нажать комбинацию клавиш (в идеале вообще одну, но свободных ненужных клавиш уже нет) и сразу попасть в нужное мне окно. Например так:


      • Alt+F: Firefox
      • Alt+D: Firefox (Private Browsing)
      • Alt+T: Terminal
      • Alt+M: Калькулятор
      • Alt+E: IntelliJ Idea
      • и т. д.

      Причём, по нажатию, например, на Alt+M я хочу видеть калькулятор вне зависимости от того, запущена ли в данный момент эта программа. Если запущена, то её окну надо передать фокус, а если нет — запустить нужную программу и передать фокус когда она загрузится.


      На случаи, которые не покрываются предыдущим сценарием, я хочу иметь универсальные комбинации клавиш, на которые можно легко назначить любые из открытых окон. Например, у меня назначены 10 комбинаций от Alt+1 до Alt+0, которые не привязанные ни к каким программам. Я могу просто нажать Alt+1 и окно, которое сейчас в фокусе, будет получать фокус при нажатии Alt+1.


      Под катом описание ещё пары фич и ответ на то, как можно это сделать. Но сразу предупрежу, что подобная кастомизация «под себя» может вызвать сильную зависимость и даже ломку при необходимости использовать Windows, Mac OS или даже чужой компьютер с Linux.

      Читать дальше →
    • Магия 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) Спасибо (ссылки)
        Читать дальше →
      • О Legacy-коде без максимализма: что делать



          Представьте, что вам дали задачу поправить часть кода. В голове возникнет много мыслей. Кто его написал? Когда? А может он — legacy? Где документация? Давайте попробуем разобраться с «наследием» основательно и со всех сторон. Поможет нам в этом вопросе Андрей Солнцев @asolntsev (http://asolntsev.github.io/), разработчик из таллинской компании Codeborne. Начнём.

          — Андрей, вы знакомы с трудами Michael Feathers, например, «Working Effectively with Legacy Code»? В книге акцентируется внимание на важности тестирования и выделяется одно из ключевых отличий legacy от не legacy-кода — это наличие тестов. Вы согласны с этим мнением?

          Абсолютно согласен! Скажу больше: юнит-тесты — необходимое, но недостаточное условие. И с юнит-тестами можно навалить так, что сам Геракл не разгребёт.
          Что для настоящего джедая мастхав, так это:
          1. TDD — то есть тесты ДО кода.
          2. Чистый код (и чистые тесты).


          Я очень люблю книгу Robert C. Martin «Clean Code» («Чистый код»). Это для меня настольная библия. Категорически всем советую. Кстати, его блог тоже великолепен.

          Читать дальше →
        • 11 важных вещей, которые нужно знать про DevOps — часть первая

          • Перевод

          От переводчика


          В 2009 года за рубежом возникло движение, которое назвало себя DevOps. На первый взгляд это разработчики с навыками сисадминов и сисадмины с навыками разработчиков. Но на самом деле это отнюдь не так. Данное подход имеет четкие цели, философию, инструменты и методы, которые только некоторые русскоязычные компании начинают использовать. Мне кажется, что данный подход у нас незаслуженно игнорируется и мне хотелось бы рассказать об 11 вещах, которые нужно знать о DevOps, в частности:
          • что такое DevOps
          • каковы его ценности
          • как он внедряется
          • кому он приносит пользу

          Надеюсь, этот текст вам понравится.

          Читать дальше →
        • Вы не знаете Node: краткий обзор основных возможностей

          • Перевод


          Ремарка от автора
          Это статья новая, но она не о новых возможностях. Она о core, то есть о платформе и о том что многие кто просто используют grunt, или webpack могут не подозревать, так скзать about fundamentals.

          Более подробно читайте:

          комментарии rumkin:
          habrahabr.ru/company/mailru/blog/283228/#comment_8890604

          комментарии Aiditz:
          habrahabr.ru/company/mailru/blog/283228/#comment_8890476

          комментарии Suvitruf:
          habrahabr.ru/company/mailru/blog/283228/#comment_8890430


          Идея этой публикации была навеяна серией книг Кайла Симпсона «Вы не знаете JavaScript». Они являются хорошим началом для изучения основ этого языка. А Node — это практически тот же JavaScript, за исключением небольших отличий, о которых я расскажу в этой статье. Весь код, приведённый ниже, вы можете скачать из репозитория, из папки code.

          Зачем вообще переживать насчёт Node? Node — это JavaScript, а JavaScript используется почти везде! Мир был бы лучше, если бы большинство разработчиков в совершенстве владели Node. Чем лучше приложения, тем лучше жизнь!

          Эта статья представляет собой реалистичный взгляд на наиболее интересные основные возможности Node. Ключевые моменты статьи:

          1. Цикл событий: освежаем ключевую концепцию, позволяющую реализовать неблокирующие операции ввода/вывода.
          2. Глобальный объект и процесс: как получить больше информации.
          3. Эмиттеры событий: интенсивное введение в событийную модель (event-based pattern)
          4. Stream’ы и буферы: эффективный способ работы с данными
          5. Кластеры: форкай процессы как профессионал
          6. Обработка асинхронный ошибок: AsyncWrap, Domain и uncaughtException
          7. Аддоны на C++: внесение своих наработок в ядро и написание собственных аддонов на С++
          Читать дальше →