• Создание компактных приложений на VC++

      Примечание: Автором статьи является Алексей Fahrenheit Захаренко. Хороший человек и специалист.

      С экспоненциальным ростом объемов памяти и дискового пространства создание действительно маленьких программ бывает нужно достаточно редко, однако иногда встречаются задачи, когда просто жалко терять несколько сотен лишних килобайт на каждой мелкой утилите.
      Данная статья рассказывает, как можно получать действительно компактные программы, используя актуальные средства разработки – Microsoft Visual Studio 2008.
      В качестве примера портируем консольный архиватор 7-zip и оценим эффект от этого.
      Под катом - детали и пример применения
    • Скачиваем Google Docs без браузера

        Скриптик выглядит как-то так:

        #!/bin/bash
        token=$(curl -s www.google.com/accounts/ClientLogin -d Email=user.name@gmail.com -d Passwd=qwerty -d accountType=GOOGLE -d service=writely -d Gdata-version=3.0 |cut -d "=" -f 2)
        set $token
        curl --silent --header "Gdata-Version: 3.0" --header "Authorization: GoogleLogin auth=$3" "http://docs.google.com/feeds/user.name@gmail.com/private/full" | tidy -xml -indent -utf8 -quiet > /tmp/gdocs.xml
        file=(doc1 doc2 doc3 doc4)
        resourceId=(document:0ASpnxqo7zPlfZGQ3Z2Zwc183NWZteDNiM2Y ...) # и ещё 3 resourceId
        i=0
        while (( i < 4 )) # match num_files
        do
        wget --header "Gdata-Version: 3.0" --header "Authorization: GoogleLogin auth=$3" "https://docs.google.com/feeds/download/documents/Export?docID=${resourceId[$i]}&exportFormat=txt" -O /tmp/${file[$i]}.txt

        sleep 2
        i=$i+1
        done

        А теперь, как принято, разоблачение.
        Читать дальше →
      • Использование runit для своих сервисов

          Супервизор сервисов runit позиционируется как замена стандартным скриптам инициализации Unix.

          Но на практике оказалось, что runit идеален для управления сервисами безотносительно инициализации и т.п.

          Введение


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

          Для большинства операционных систем runit уже входит в репозитории пакетов (apt-get install runit). Кроме того, мы имеем уже готовый набор рецептов для популярных сервисов (nginx, apache etc.).

          Читать дальше →
        • No Canvas

            Возможно, это лучше перенести в «Я пиарюсь» или «JavaScript» (принимаются предложения). А может, стоит оставить всё как есть. Тем не менее...

            3D с z-buffer-ом, субпиксельной точностью и освещением по Гуро на javascript? Да кто угодно сможет это сделать, используя canvas!

            Можно долго и вкусно описывать преимущества канваса, но статья не про это; не менее интересно
            посмотреть, чем же канвас плох.

            Так чем же?
          • Двунаправленный асинхронный обмен данными в веб-приложениях

              Одной из основных черт современного веба эксперты называют RIA, что часто расшифровывается как тренд, когда веб-приложения по функциональности приближены к настольным приложениям. Тем не менее, это приближение весьма условно. Подавляющее большинство «обогащеных» веб-приложений по-прежнему построены по модели «запрос-ответ». Т.е. события на стороне клиента могут быть отражены на стороне сервера, никак не наоборот. Для того чтобы реализовать такую банальную вещь как чат приходиться прибегать к изощренным уловкам. Спасибо Алексу Расселу (Alex Russell) из Dojo, у нас есть даже имя для подобной техники – Comet.
              Читать дальше →
            • Системы коллективного комментирования в отладке сайтов

                В этом обзоре мы проанализировали несколько систем коллективного комментирования веб-страниц и постарались найти идеальный инструмент для удаленного обсуждения и отладки work-in-progress сайтов с заказчиком и другими участниками работы.

                image
                Читать дальше →
              • Правильно поставленная задача время бережет

                  Хочу поделиться своими мыслями по оптимизации общения адекватного руководителя и адекватного исполнителя. Что надо делать и чего делать не стоит, для того, что бы работа была выполнена качественно и в срок?

                  Нормально построенная система взаимоотношений руководитель—подчиненный строится на интеллектуальном превосходстве руководителя и его умении прогнозировать и расставлять приоритеты не без учетов интересов исполнителя, что очень важно. Если это не так, и в роли работодателя выступает девочка-менеждер, а в роле исполнителя — программист-маньяк, то менеджер не получит результатов, а программист — денег.
                  Читать дальше →
                • Коллективная разработка с использованием git и Trac в проекте Midnight Commander

                        Действительно, в интернете сейчас можно найти достаточно много информации о настройке GIT и работе с ним, но недостаточно освещен вопрос коллективной разработки и «рабочего процесса» отдельно взятого проекта от начала и до конца.

                        Попробую восполнить этот пробел на примере открытого проекта Midnight Commander, не останавливаясь на вопросах установки необходимого ПО, так как этот момент неплохо описан в интернете, и вы сможете легко найти интересующую вас дополнительную информацию самостоятельно.
                    Читать дальше →
                  • Отключаем Supernode в Skype

                      Как известно, Skype использует p2p сеть для обмена данными. Если у Вас достаточно мощный компьютер, то Skype может решить сделать Вас Супернодом и, как следствие, скайп-трафик других участников сети будет идти через Вас.
                      Начиная с версии 3.0 программы, появилась возможность отключить такую «фичу», что бы чужой трафик скайпа не шёл через Вас.
                      Для этого необходимо залезть в реестр и создать там ветку:

                      [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Skype]
                      [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Skype\Phone]
                      "DisableSupernode"=dword:00000001

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

                      Дополнительная информация:
                      1. Guide for Network Administrator’s (.pdf) — подробное описание этой и некоторых других настроек реестра для скайпа.
                      2. Шаблон групповой политики (.adm), который позволяет более гибко настраивать параметры скайпа.
                      3. Отключение Supernode в MacOS-версии
                    • Правила работы с e-mail в нашей компании

                        За четыре года наш коллектив вырос с 3 до 70 человек, появилось три офиса плюс общение со штаб-квартирами. Поэтому по ходу пришлось менять и стиль, и правила работы в компании. В итоге в области коммуникаций это вылилось в следующий свод правил — часть уже можно встретить в литературе по тайм-менеджменту, часть придумали сами. Возможно, это будет полезно и вашей компании. Подходит для компаний, где у всех есть компьютер и e-mail.
                        Читать дальше →
                      • Применение наследования в шаблонах Mason

                          Mason — достаточно известный и распространенный фреймворк для разработки Perl-приложений. Несмотря на простой синтаксис, он обладает достаточно широкими возможностями и высокой производительностью; имеет встроенные средства для интеграции с mod_perl и memcached. Освоить работу с mason очень просто — система хорошо документирована. В то же время, есть ряд интересных тонкостей, до которых документацию дочитывают не все. Возможно, именно поэтому код, который мне доводилось видеть, до боли напоминал неудачную поделку на PHP, в которой для упрощения жизни разработчик не использовал ничего сложнее разбивки на инклюдники. Можно ли на масоне писать лучше? По-моему, да.
                          Попробуем?
                        • Про Git на пальцах (для переходящих с SVN)

                            Год назад мы с командой решили перейти с SVN на Git. Зачем это было надо — писать не буду, т.к. на эту тему уже и так много написано. А хочу я описать типичные алгоритмы работы, понятные человеку, который долгое время пользовался SVN. Ниже — памятка, написанная для команды год назад, чтобы легче было мигрировать. Надеюсь, кому-нибудь пригодится.
                            Читать...
                          • Пакетная обработка изображений в GIMP

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

                              Допустим, у нас есть куча фотографий разных размеров, с разным соотношением сторон и сохранённых в разных форматах. В общем, тяжёлый случай. Нам нужно весь этот зоопарк выровнять по размерам, учитывая пропорции, и сохранить в JPEG с заданным качеством. Да, и пусть нам иногда захочется задавать размеры не в пикселях, а процентах. Ну и пусть уже тогда захочется файлы выбирать по маске, типа «C:\images\img_01*.jpg».

                              Садимся, и калякаем на Script-Fu (доступный по умолчанию в GIMP, язык) свой
                              первый сценарий
                            • Шрифты, общие для всех (актуальных) версий Windows, и их Mac-эквиваленты

                              • Translation

                              Введение


                              В данном списке перечислены шрифты, общие для всех актуальных на данный момент операционных систем Windows (фактически начиная с Windows 98), и их эквиваленты в Mac OS. Такие шрифты иногда называют «безопасными шрифтами для браузеров» (browser safe fonts). Это небольшой справочник, которым я пользуюсь, когда делаю Web-страницы и думаю, что он будет полезен и Вам.
                              Читать дальше →
                            • Цикл статей по основам Software Configuration Management

                                Пролог


                                Что такое управление конфигурацией в разработке ПО? Зачем оно нужно? Думаю, немногие способны полностью и внятно ответить на этот вопрос. Большинство обычно вспоминает системы контроля версий, которые сами используют. Кто-то упоминает багтрекинг. Кто-то считает вершиной CM отращивание веток в любимой системе контроля версий. А кто-то вообще уходит в сторону и начинает говорить про ITIL и про то, как он записывает в какую-нибудь базу параметры всего софта, который установлен у него в фирме.

                                Несколько странно и немного досадно наблюдать за этим. Дело в том, что я проработал в SCM в общем сложности около 5 лет, из них 3 года — интегратором в Motorola, на одном из проектов по разработке софта для сотовых телефонов. По ходу дела прочитал кучу материалов по этой теме и получил большой практический опыт — в том числе по работе с одной из мощнейших систем контроля версий IBM Rational ClearCase (см. linkedin в профиле). В итоге в голове сформировалась некоторая целостная картина того, что же это на самом деле — software configuration management.
                                Ну а дальше-то что?
                              • TeX-like разметка на Javascript

                                  При написании console-like форума был задан вопрос: «какую разметку лучше использовать?». Среди вариантов были стандартный бб-код ([b]bold[/b]), вики-разметка(*bold*), или TeX-like разметка (\b{bold}). После недолгого совещания выбор был остановлен именно на TeX-like. Была написана небольшая библиотека, которая, по моему мнению, достаточно интересна, расширяема и гибка. Желающие посмотреть пример могут перейти по ссылке freecr.ru/TeX
                                  Под хабракатом у меня исходный код под лицензией LGPL, объяснение возможностей, принципов и примеры написания плагинов.
                                • Управление проектами с почасовой оплатой

                                    Расскажу о том, как превратить почасовую оплату в отличный способ управления проектом. А также о том, как заказчику (менеджеру проекта) не волноваться о завышении сроков разработчиком, а разработчику не беспокоиться, что заказчик будет его двигать по срокам.

                                    время-деньги
                                  • Opera Unite для разработчиков

                                      imageА не написать ли нам какой-нибудь сервис под Опера Юнайт? Здесь я расскажу об особенностях программирования под новинку от Оперы на примере своего сервиса "Stream media". Официальная документация пока что неполная и содержит много ошибок, и в этой статье мы попытаемся их обойти.
                                      image
                                      Далее, будем вникать в технологию постепенно. Желательно, чтобы Вы уже прочли мануал по созданию первого приложения, поскольку некоторые очевидные факты здесь опускаются.
                                      Читать дальше →