• svn + bash = пишем консольный svn браузер

      Для тех кто пользуется svn в командной строке, а так же для тех кто интересуется программированием bash-скриптов, в топике рассмотрен пример написания интерактивного bash-скрипта «svn-браузера», работающего в терминале и позволяющего делать несколько «ежедневных» операций с деревом репозитория, а именно:
      • Серфить по репозиторию
      • Просматривать логи
      • Копировать директории для создания tags/branchs
      • Создавать/удалять/переименовывать директории
      • Извлекать/экспортировать (checkout/export)
      При этом любая операция делается нажатием одной-двух кнопок, не считая ввода комментариев, и не требует помнить/вводить длинные пути, такие как:<br><br>
      $svn cp "http://workserver.com/_main_repository/embedded_system/product_xxx/_trunk/main_task/ http://workserver.com/_main_repository/embedded_system/product_xxx/_tags/"

      Под катом обзор внутренностей, результат можно скачать по ссылке svnb
      Сделать исполняемым, запускать в директории — рабочей копии svn (запустить можно в любом месте, но тогда придется ввести путь до репозитория с которым вы хотите поработать).

      P.S. В конце статьи добавил еще одно решение для улучшения юзабилити command line svn — автодополнение пути.
      что же внутри...
    • NAT не firewall, повторим еще разок



        Посмотрите на рисунок. Вот так конфигурируется классический NAT на маршрутизаторе Cisco, допустим там больше ничего не сконфигурировано. А теперь ответьте сами себе на вопрос. Может ли при определенных условиях кто-либо обратиться извне на RDP порт (TCP 3389) супер секретного сервера 192.168.0.250 и попытаться подобать пароль к нему. Уточним, что сервер стоит одиноко в сети и никуда сам не обращается (имеется в виду, что на нем нет никаких троянов, автоматических обновлений и прочих прелестей).

        Считаете — нет? Вспомним анекдот.

        Лекция по филологии. Старый профессор рассказывает:

        — В некоторых языках мира двойное отрицание означает согласие. В других, двойное отрицание так и остается отрицанием. Но, нет ни одного языка в мире, в котором двойное согласие означает отрицание. Голос с задней парты:
        - Ну да, конечно, профессор.
      • Демоны на PHP

        Памятка начинающему экзорцисту.

        Прежде, чем начать: я знаю, что такое phpDaemon и System_Daemon. Я читал статьи по этой тематике, и на хабре тоже.

        Итак, предположим, что вы уже определились, что вам нужен именно демон. Что он должен уметь?
        • Запускаться из консоли и отвязываться от неё
        • Всю информацию писать в логи, ничего не выводить в консоль
        • Уметь плодить дочерние процессы и контролировать их
        • Выполнять поставленную задачу
        • Корректно завершать работу

        Отвязываемся от консоли


        // Создаем дочерний процесс
        // весь код после pcntl_fork() будет выполняться двумя процессами: родительским и дочерним
        $child_pid = pcntl_fork();
        if ($child_pid) {
            // Выходим из родительского, привязанного к консоли, процесса
            exit();
        }
        // Делаем основным процессом дочерний.
        posix_setsid();
        
        // Дальнейший код выполнится только дочерним процессом, который уже отвязан от консоли
        

        Читать дальше →
      • AzaThread — многопоточность для PHP с блэкджеком

          В сети гуляет довольно много решений для эмуляции многопоточности в php. Чаще всего они основываются на форках, но есть и вариации на тему с использованием curl, proc_open и т.п.

          Все встреченные варианты по тем или иным причинам меня не устроили и пришлось написать свое решение.
          Набор требований у меня был следующий:
          • Использование форков;
          • Синхронный режим с сохранением интерфейса при отсутствии необходимых расширений;
          • Многократное использование дочерних процессов;
          • Полноценный обмен данными между процессами. Т.е. запуск с аргументами и получение результата по завершении;
          • Возможность обмена событиями между дочерним процессом-«потоком» и основным процессом во время работы;
          • Работа с пулом потоков с сохранением многократного использования, передачи аргументов и получения результатов;
          • Обработка ошибок выполнения;
          • Таймауты на выполнение работы, ожидание работы потоком, инициализацию;
          • Максимум производительности;

          В результате получилась библиотека AzaThread (старое название — CThread).
          Подробности
        • Живой пример применения гибкого подхода к разработке ПО в российском стартапе


            Привет, хабрадруг. Считаешь ли ты, что waterfall (каскад) при разработке ПО — это единственный расово-верный подход? Да или нет — спеши под кат.
            Читать дальше →
          • Mikrotik-Qos Приоритезация по типу трафика и деление скорости

              Mikrotik-Qos Приоритезация по типу трафика и деление скорости



              imageДоброго времени суток, сегодня речь пойдет о наболевшем, а именно о том, как грамотно разделить интернет канал, чтобы все ваши пользователи были максимально довольны.
              Читать дальше →
            • Русский перевод официальной документации PHP снова стал доступным!

              Добрый день, Хабрасообщество!

              Спустя 3 месяца после призыва о помощи, команда переводчиков документации PHP спешит рассказать как много мы достигли вместе с вами, читатели Хабра.
              Самое главное: русская документация PHP снова в строю!

              Прогресс сообщества PHPDoc-RU


              С 1 августа и по 12 ноября объем переведенной документации вырос в 4 раза и составил более чем четвертую часть общего количества файлов и больше трети от их объема.



              Подробности под катом (Графика: ~ 65Кб).
              Читать дальше →
            • Tsung: Нагрузочное тестирование Web-приложений


                Tsung — это распределенная система нагрузочного тестирования, написанная на Erlang'е. Заявлена поддержка HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP and XMPP/Jabber. В этой статье я опишу как протестировать обычный web сайт на нагрузку.
                Читать дальше
              • Очень быстрый способ выключить зимнее время для тех, кто проспал

                  Для тех новичков, кто проспал в выходные, и забыл озаботиться выключением перевода своих Debian-систем на зимнее время – эта мини-статья. Способы это сделать – очень быстрые, не претендующие на самую правильность, но работающие. Рассмотрены будут два поколения, до Lenny и соответственно после него. Ввиду того, что у некоторых сервера работают годами, то наличие таких «древностей» еще имеет место.

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