• Ubuntu Customization Kit, свой LiveCD убунту за полчаса без плясок с бубном

      Устанавливая Ubuntu или пользуясь LiveCD Ubuntu, встречались ли Вы хотя бы с одной из этих проблем:
       — необходимость каждый раз после установки ubuntu доустанавливать нужный софт, подключать дополнительные репозитории;
       — однообразная и длительная настройка внешнего вида gnome после установки;
       — Вам нравится openbox, lxde или любой другой desktop, на базе которого нет ни одного дистрибутива ubuntu;
       — Ваше оборудование требует дополнительной настройки и установки дополнительных драйверов после установки Ubuntu;
       — LiveCD не содержит необходимый для Вашей работы софт или Вы наоборот хотите облегчить его, удалив все ненужное.

      А может Вы просто хотите сделать оригинальный подарок другу/подруге в виде шуточного, красочного, собственноручно оформленного дружелюбного дистрибутива Linux. Если Вы еще не слышали о Ubuntu Customization Kit, то разрешите представить его Вам.
      Читать дальше →
    • Reconstructor, свой LiveCD убунту за полчаса без плясок с бубном. Часть 2

        В прошлый раз я Вам рассказывал про инструмент изменения дистритива убунту — Ubuntu Customization Kit, также упомянув про аналогичный пакет Reconstructor. На этих выходных у меня была отличная возможность познакомиться, как и с пакетом для установленный системы, так и с онлайн сервисом. Так что спешу поделиться своими впечатлениями и сравнением текущих вариантов кастомизации дистрибутива Убунту далее.
        Читать дальше →
      • Ubuntu, KVM и proxy_arp — как обмануть злого провайдера

          Одна фирма расположила на колокейшне серверочек для внутренних нужд и сразу купила /30 адреса для соих потребностей. Сконфигурено это было как алиасы (eth0:0, eth0:1 и т.п.). Все работало великолепно, пока по прошествии некоторого времени появилась здравая идея разнести разные сервисы на разные виртуальные машины. Поскольку в качестве хоста использовался Ubuntu Server, то выбор KVM в качестве виртуализатора произошел сам собой. И здесь, и в остальном нете уже немало умных слов было написано по установку и настройку KVM и сетевого окружения, не буду на этом останавливаться, расскажу лишь про маленькие детские грабельки, удобно подложенные со стороны провайдера.
          Продолжение повествования
        • Сервер на стероидах: FreeBSD, nginx, MySQL, PostgreSQL, PHP и многое другое

            Нравится мне эта картинка, у меня, вот никогда такие красивые графики в какти не получались =(

            Введение


            С момента написания мной предыдущей статьи по оптимизации этой связки прошло довольно много времени. Тот многострадальный Pentium 4 c 512Мб памяти, обслуживающий одновременно до тысячи человек на форуме и до 150,000 пиров на трекере уже давно покоится на какой-нить немецкой, свалке, а клуб сменил уже не один сервер. Всё сказанное в ней всё ещё остаётся актуальным, однако есть вещи которые стоит добавить.
            Статья большая, так что будет поделена на логические блоки:

            0. Зачем вообще что-то оптимизировать?
              
            1. Оптимизация ОС (FreeBSD)
              1.1 Переход на 7.х 
              1.2 Переход на 7.2
              1.3 Переход на amd64
              1.4 Разгрузка сетевой подсистемы
              1.5 FreeBSD и большое кол-во файлов
              1.6 Softupdates, gjournal и mount options
              
            2. Оптимизация фронтенда (nginx)
              2.1 Accept Filters
              2.2 Кеширование
              2.3 AIO
              
            3. Оптимизация бэкенда
              3.1 APC
              3.1.1 APC locking
              3.1.2 APC hints
              3.1.3 APC fragmentation
              3.2 PHP 5.3
              
            4. Оптимизация базы данных
              4.1 MySQL 
              4.1.1 Переход на 5.1
              4.1.2 Переход на InnoDB
              4.1.3 Встроеный кеш MySQL - Query Cache
              4.1.4 Индексы
              
            4.2 PostgreSQL
              4.2.1 Индексы
              4.2.2 pgBouncer и другие.
              4.2.3 pgFouine
              
            4.3 Разгрузка базы данных
              4.3.1 SphinxQL
              4.3.2 Не-RDBMS хранилище
              4.4 Кодировки
              4.5 Асинхронность
              
            Приложение. Мелочи.
              1. SSHGuard или альтернатива.
              2. xtrabackup
              3. Перенос почты на другой хост
              4. Интеграция со сторонним ПО
              5. Мониторинг
              
             6. Минусы оптимизации

            Кому что-нибудь из этого списка интересно, жмём сюда...
          • Первый миллион всегда самый трудный



              Мы рады объявить о том, что менее чем за год после окончания закрытого бета-тестирования у Evernote уже более одного миллиона зарегистрированных пользователей! Это очень много. Это, например, население целого Челябинска или Ростова-на-Дону и даже целых стран, таких как Катар, Кипр или Черногория. Только подумайте: если все пользователи Evernote встанут в ряд, это будет очередь из миллиона человек!

              График роста:

              Читать дальше →
            • Простой способ восстановить удаленные файлы

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

                И так любителям rm -rf посвящается:

                Читать дальше →
              • Закрепляем jQuery — 25 отличных советов

                • Translation
                Перевод отличной статейки. Думаю, будет полезна как новичкам, которые только приступили к использованию jQuery, так и тем, кто уже какое-то время с ним работает. А кого-то, возможно, заставит глянуть эту чудесную библиотечку. Многие советы имеют отношение не только к jQuery, но и к JavaScript в целом. Лично для меня была весьма и весьма познавательной, посему и захотелось донести это «до масс». Перевод не дословный, но передающий смысл и максимально адаптированный к русскому языку.

                Далее все написано от имени автора оригинальной статьи.

                Введение


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

                Я не эксперт в jQuery. И даже не претендую, поэтому, если встретите ошибки, смело поправляйте меня и вносите предложения по улучшению (поправлять и присылать поправки нужно автору статьи, а не перевода — зам. пер.).

                Я называю себя «среднестатистическим» пользователем jQuery и я думаю, что всем остальным будет интересно почитать и что-нибудь почерпнуть из «фишек», «трюков» и техник, которые я освоил за последний год. Статья получилась куда длиннее, чем я предполагал изначально, так что в самом начале я привел «содержание» для более удобной навигации и возможности при желании пропустить не интересующие моменты.

                Содержание


                1. Загружайте фреймворк с Google Code
                2. Используйте «шпаргалку» (cheat sheet)
                3. Соединяйте все ваши скрипты и уменьшайте размер файла
                4. Используйте возможности Firebug для ведения логов
                5. Минимизируйте операции выборки в пользу кэширования
                6. Сводите манипуляции с DOM-деревом к минимуму
                7. Оборачивайте все в единый элемент, когда речь идет о любой вставке в DOM
                8. Используйте «id» вместо классов, где это возможно
                9. Задайте контекст своим селекторам
                10. Используйте последовательности вызовов методов с умом
                11. Научитесь правильно использовать анимацию
                12. Научитесь назначать и делегировать события
                13. Используйте классы для сохранения состояния
                14. Еще лучше — используйте встроенный в jQuery метод data() для сохранения состояния
                15. Пишите собственные селекторы
                16. Подготавливайте HTML и модифицируйте его, когда страница загружена
                17. Используйте «отложенную загрузку» (lazy loading) для определенного контента для выигрыша в общей скорости и преимуществ для SEO
                18. Используйте служебные функции jQuery
                19. Используйте «noconflict» для переименования глобального объекта «jquery», когда используете его с другими фреймворками
                20. Как узнать что картинки загружены?
                21. Всегда используйте последнюю версию
                22. Как проверить, что элемент существует?
                23. Добавляйте класс «JS» в элемент «html»
                24. Возвращайте «false» для отмены поведения по-умолчанию
                25. Короткая запись для события готовности документа


                Rock'n'Roll!
              • Стать мэинтейнером. Часть четвертая

                  В то время, как фанаты экзотики на хабре активно пьют чашки с Java, принимают дозы F# и вкалывают себе прочий Haskell, мы с вами учились собирать их творения в deb-пакеты. За прошедшее с предыдущей части время у кого-то наверняка уже накопилось несколько готовых пакетов, а в официальный репозиторий Debian и Ubuntu мы их пока помещать даже не пробовали. Поэтому настало время подумать, каким бы образом организовать всё накопленное богатство в один большой красивый репозиторий, который не стыдно будет предложить для использования и другим пользователям.
                  (Части 1, 2 и 3)
                  А как это делается?
                  • +25
                  • 6.4k
                  • 9
                • Стать мэинтейнером. Часть третья

                    И был день третий, и задумался хабрапользователь-убунтоид: а как мне запаковать свой любимый пакет, чтобы был он красивый и правильный и чтобы гордость от его кошерности распирала ого-го как. Именно этим мы с вами сегодня и займёмся.
                    (Части 1, 2 и 4)
                    А где зарыта собака?
                  • Стать мэинтейнером. Часть вторая

                      На второй день мы уже пообвыклись с идеей, что в дебиане и убунту любят действительно свободное программное обеспечение и уже начинаем задумываться о том, как бы нам начать собирать свой первый пакет. Но стоп! А какими программами мы вообще умеем пользоваться? Что?! OpenOffice.org Writer и Kopete? Не, ну так дело не пойдёт. Сегодня я расскажу вам обязательный минимум, который понадобится каждому будущему сопровождающему пакеты (я решил принять этот термин, оставив заморское слово «мэинтейнер» только в заголовке, как дань первой статье), да и просто любому убунтоводу пригодится в жизни.
                      (Части 1, 3 и 4)
                      Какие тайны нас ждут под хабракатом?
                    • Частые ошибки программирования на Bash (окончание)

                      • Translation
                      Окончание перевода Bash Pitfalls. Предыдущие части доступны в блоге «Оболочки» (часть 1, часть 2) и в моём блоге.

                      22. echo "Hello World!"


                      Проблема в том, что в интерактивной оболочке Bash эта команда вызовет ошибку:
                      bash: !": event not found

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

                      Очевидное решение здесь не работает:
                      $ echo "hi\!"
                      hi\!

                      какое же тогда неочевидное решение?
                      • +43
                      • 15.2k
                      • 7
                    • Частые ошибки программирования на Bash (продолжение)

                      • Translation
                      Продолжаю знакомить сообщество с переводом Bash Pitfalls.
                      Часть первая.
                      Первоначальная публикация перевода.

                      11. cat file | sed s/foo/bar/ > file


                      Нельзя читать из файла и писать в него в одном и том же конвейере. В зависимости от того, как построен конвейер, файл может обнулиться (или оказаться усечённым до размера, равному объёму буфера, выделяемого операционной системой для конвейера), или неограниченно увеличиваться до тех пор, пока он не займёт всё доступное пространство на диске, или не достигнет ограничения на размер файла, заданного операционной системой или квотой, и т.д.
                      Что же делать?
                    • Частые ошибки программирования на Bash

                      • Translation
                      Качество скриптов, используемых для автоматизации и оптимизации работы системы, является залогом ее стабильности и долголетия, а также сохраняет время и нервы администратора этой системы. Несмотря на кажущуюся примитивность bash как языка программирования, он полон подводных камней и хитрых течений, способных значительно подпортить настроение как разработчику, так и администратору.

                      Большинство имеющихся руководств посвящено тому, как надо писать. Я же расскажу о том, как писать НЕ надо :-)

                      Данный текст является вольным переводом вики-страницы «Bash pitfalls» по состоянию на 13 декабря 2008 года. В силу викиобразности исходника, этот перевод может отличаться от оригинала. Поскольку объем текста слишком велик для публикации целиком, он будет публиковаться частями.

                      Поехали!
                    • iPhone версия ROR сайта

                        Как бы вы не относились к iPhone, вы не можете отрицать, что этот телефон захватил хороший кусок рынка мобильных устройств. И, по моему мнению, именно он дал возможность нормально пользоваться интернетом с телефона. Но хотя встроенный safari полноценен (спасибо, Webkit), многим хочется сделать специальную версию сайта для iPhone, выглядящую как настоящее айфоновское приложение (например, iweather.yandex.ru).
                        iweather  iphone.livecookbook.ru
                        Одной из наиболее популярных библиотек для создания адаптированной версии сайта является iUI.
                        Прочитать про iUI и ее интеграцию
                      • Защита от DDos. Простой, но эффективный скрипт

                          Недавно озаботился поиском адекватного решения для защиты некоторых подконтрольных ресурсов от DDos атак.
                          Первое что посоветовали — Cisco Guard. Но так как требовалось что то легкое и не столь дорогое, то решил посмотреть в сторону софтверных продуктов.
                          После непродолжительного гугления наткнулся на небольшой скриптик (D)DoS-Deflate
                          Читать дальше →
                        • jQuery для JavaScript-программистов

                          • Translation
                          Примечание: ниже расположен перевод статьи «jQuery for JavaScript programmers», в которой автор высказывает свое мнение об этой библиотеке, ориентируясь, в первую очередь, на продвинутых программистов, и приводит несколько десятков примеров ее использования.

                          Когда jQuery увидела свет в январе 2006, я подумал: «очередная красивая игрушка». Выбор CSS-селекторов в качестве базиса было, конечно, изящной идеей (подробнее о ней в моей заметке getElementsBySelector), но использование цепочек преобразований выглядело немного замысловато, и сама библиотека, по-видимому, не покрывала всех возможных случаев. Я расценивал тогда jQuery только как временное и проходящее решение.

                          Только несколько месяцев спустя понял я, насколько же ошибался по отношению к ней. jQuery является просто произведением инженерного искусства. Она умело покрывает достаточно широкой диапазон повседневных функций и предоставляет при этом удобный API для расширений, с помощью которых можно добавить любую другую функциональность. Абстрактность в ней заложена на уровне ядра — речь идет о выборе DOM-элементов — и она извлекает из него максимум пользы. И что важнее всего, использование этой библиотеки подразумевает следование хорошему стилю в программировании и хорошо сочетается с другими частями JavaScript-кода.

                          Большинство современных обзоров jQuery делают упор на дизайнеров и неопытных разработчиков. Я попытаюсь объяснить, почему она также нужна и опытным программистам.

                          Читать дальше →
                        • 10 шагов к созданию сайта (для клиента)

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

                            Если у вас уже есть функционирующий сайт, который вас чем-то не устраивает, можно считать, что вам повезло — у вас есть бесценный опыт, который можно проанализировать, оценить достоинства и недостатки старого сайта и сформулировать пожелания к новому. Если же вы заказываете сайт впервые, вам будет немного сложнее. Однако в любом случае лучше иметь под рукой определенный план действий, действуя по которому вы сможете получить действительно тот результат, который вам нужен.
                            Читать дальше →
                          • TextMate средствами gedit



                              Так вышло, что в офисе я работаю за Маком, а вот ноут — «17 MacBook Pro — не самый лучший, на мой взгляд, вариант в разрезе производительность/цена. Anyway, это тема другого разговора. Ноут под Ubuntu.
                              А теперь вопрос: если кодить на Ruby/RoR — кто ваш лучший ТекстовыйПриятель? Все верно, Textmate — Великий Фетиш и Идол всех программистов на Ruby под Mac. Итак задача была предельно проста — найти инструмент под Linux, максимально приближенный к Textmate по тому объему функционала который я использую в работе.
                              Читать дальше →
                            • Шаг 2. Настройка интернета

                                В первом шаге я рассмотрел установку Ubuntu и детали, которые очень важны при этом.
                                Пойдем дальше и посмотрим на вещи, которые следует настраивать сразу после установки Ubuntu.

                                Настройка интернета


                                Несмотря на пакет network-manager, с настройкой интернета на Ubuntu могут возникнуть проблемы.
                                Если ваша сеть настраивается без статических IP, то, возможно, вам повезло и вся настройка пройдет в GUI.

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