• 50 цитат о программировании всех времён

    • Перевод
    Перевёл после прочтения комментариев к статье «О ненависти к C++». В цитатах можно найти ответы на большинство возникших там вопросов.

    50. Программирование сегодня — это гонка разработчиков программ, стремящихся писать программы больше и с лучшей идиотоустойчивостью, и вселенной, которая пытается создавать больших и лучших идиотов. Пока вселенная побеждает.
    — Rick Cook

    49. Lisp — это не язык, а строительный материал.
    — Alan Kay

    48. Ходить по воде и разрабатывать программы, следуя спецификации, очень просто… если они заморожены.
    — Edward V Berard
    Читать дальше →
  • zsh и bash: что выбрать

    Для тех, кто ещё не знаком с Z Shell, а так же тем, кто находится на распутье в выборе шелла для повседневных задач, посвящается эта заметка.
    Надо сказать, о преимуществах zsh написано уже достаточно много материалов. Что касается этой скромной заметки, она призвана показать читателю возможности обеих оболочек на конкретных примерах конфигурационных файлов. Упор сделан таки на zsh, ибо в понимании автора bash, как правило, пригоден к использованию изначально, zsh без собственных настроек лучше не использовать вовсе.
    Полные конфигурационные файлы автора можно забрать с github.
    Читать дальше →
  • Создание «островка сетевой свободы» на основе VPS за 30 минут

    В связи с вступлением в силу нашумевшего закона 149-ФЗ у многих хабравчан возник вопрос: а что будет дальше? Неужели в России появится аналог Великого Китайского Фаервола, который будет блокировать всё и вся? В данном туториале я хотел бы рассмотреть один из самых эффективных и безопасных способов обеспечения себе свободы информации — собственный VPS сервер, находящийся далеко за границей и связанного с вами с помощью зашифрованного VPN туннеля. В отличие от tor или i2p конфиденциальность передаваемой информации гарантированна, вряд ли кто-то будет пытаться расшифровать ваши данные или устраивать рейд на заграничный сервер (если конечно вы не хакер мирового масштаба).
    Читать дальше →
  • Плагин для записи процесса редактирования файла

      Обнаружил на просторах интернета забавный плагин для VIM — Homura.
      Он позволяет записывать историю редактирования и преобразовывать её в
      интерактивный HTML, с возможностью перемотки и управлением скоростью
      проигрывания.
      Читать дальше →
      • +20
      • 3,2k
      • 5
    • Теплый и ламповый VPN

      • Tutorial

      Ничего не предвещало беды, как вдруг в 2 часа ночи раздался телефонный звонок.

      — Алло, милый! У меня youtube не работает!
      — Прекрасно, иди спать!
      — Нууу! Там новая серия вышла!
      — Завтра всё сделаю!
      — Ну Заяя, нуууу!
      — Ладно! Ладно! Сейчас.


      Из этого поста вы узнаете ответы на следующие вопросы:
      Как спасти свою милую от стресса в 2 часа ночи? Как вернуть доступ к youtube.com, если ваш провайдер его заблокировал? Как быстро поднять VPN и настроить клиентские устройства (Android, Windows, Debian, dd-wrt) для работу с ним? Как безопасно серфить интернет на открытых точках доступа? Как заработать карму в глазах своей возлюбленной? Если вам это интересно, добро пожаловать под кат!
      Читать дальше →
    • Функциональное программирование в шелле на примере xargs

      • Tutorial
      Abstract: рассказ о том, как быстро и красиво делать обработку списков в шелле, немного мануала по xargs и много воды про философию то ли программирования, то ли администрирования.

      Немного SEO-оптимизации: карринг, лямбда-функция, композиция функций, map, фильтрация списка, работа с множествами в шелле.

      Пример



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

      Это не реальная «задача», это учебный пример, решая который (в решении будет однострочник) я расскажу про очень необычный и мощный инструмент системного администрирования — линейное функциональное программирование. Линейное оно, потому что использование пайпа "|" это линейное программирование, а использование xargs позволяет превратить сложную программу с вложенными циклами в однострочник функционального вида. Целью статьи будет не показать «как найти размер библиотек» и не пересказать аргументы xargs, а объяснить дух решения, пояснить стоящую за ним философию.

      Лирика


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

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

      Даже словами видно, что второй вариант короче.
      Читать дальше →
    • Sublime Text 2

        Пару месяцев назад я случайно наткнулся на массу положительных отзывов о текстовом редакторе Sublime Text 2. Попробовав его в деле, я не разочаровался. Теперь это мой основной рабочий инструмент.

        Sublime Text 2 — это платный текстовый редактор, написанный на C++, который:

        • Работает в Linux, OS X и Windows
        • Обладает приличной скоростью работы
        • Приятным интерфейсом (включая всевозможные анимации)
        • Гибко настраиваем (правда, не в GUI, а в json-конфигах)
        • Имеет множество плагинов, число которых растёт как на дрожжах
        • Поддерживает VIM-режим
        • Использует fuzzy-поиск
        Читать дальше →
      • Упорядочивание аудиотеки. Практические советы

          Введение


          Вообще, я во многих вопросах перфекционист. Если есть — нужно, чтобы было безупречно (иногда это сказывается отрицательно, но сейчас не об этом). Свою аудиоколлекцию я тоже привык держать в чистоте. Но со временем, при пополнении стало накапливаться много мелких неприятностей. Вот некоторые из них:
          • Разные шаблоны для имен файлов: 4 — Звезда | 04 — Звезда | 04. Звезда
          • Разные имена исполнителей в тегах: Чиж & Co | Чиж и Ко. | Mylene Farmer | Mylène Farmer
          • Не указаны исполнители альбома (что приводит к полному бардаку в альбомах-компиляциях)
          • Не совсем корректная информация об альбомах, состоящих из нескольких дисков
          • Путаница в годах изданий и переизданий (ремастеринг, и т.д.)
          Ну и прочие мелочи.
          Часто у пользователей коллекции составляют несколько тысяч, а иногда — несколько десятков тысяч записей. Так что, перелопачивать все вручную — долго и неэффективно.

          Данное руководство предназначено для того, чтобы с минимальными затратами привести аудиоколлекцию к максимально упорядоченному виду. В отличие от общедоступной информации, которую можно найти в Интернет, здесь также присутствует мой личный опыт (как положительный, так и отрицательный). В итоге получаем полностью пересортированную коллекцию. Все нижесказанное можно применять для любых коллекций, однако оптимальный вариант — если коллекция по большей части состоит из полных официальных альбомов, с минимальным содержанием разрозненных треков.

          Итак, начнем...
        • Топик якобы из песочницы

          Итак, кроме обычных топиков есть еще и топики из песочницы, при этом их можно публиковать с какой угодно кармой, так что можно опубликовать топик с кармой меньше нуля, для этого (далее на примере хрома): лезем в Developer Tools -> Element -> Search topic-type, меняем значение поля на sandbox и вуаля, топик якобы из песочницы, как подтверждение теории я публикую этот топик с кармой -4.

          P.S. т.к. мне терять нечего то если меня забанят то пусть так и будет.

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

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

          Читать дальше →