• Искусственный рассвет

    Началось всё год назад. Перед Новым 2014 годом несколько пришел в упадок жизненный тонус. Процесс самокопания привел к следующей мысли:



    — А, что ж так темно-то, Господи? © День радио.

    Впрочем, для человека, живущего зимой по летнему времени — мысль вполне естественная.
    Что же делать?
  • Открыт прием заявок на LVEE 2010

      LVEE 2010 logoШестая международная конференция разработчиков и пользователей свободного программного обеспечения Linux Vacation / Eastern Europe пройдет с 1 по 4 июля на территории турбазы “Химик” в Гродненской области. Открыт прием докладов и заявок на участие, приглашаются к сотрудничеству спонсоры. Подробности — на сайте lvee.org
      Читать дальше →
    • Иммунная система человека: биологический антивирус. Антивирусные базы

        Прошу простить за нереально огромный перерыв после первой части :(

        Линк на первую часть (врожденный иммунитет)

        Итак, нечто, проникшее в организм, было признано враждебным и уничтожено. Но каждый раз определять посторонние сущности по общим неспецифичным признакам — далеко не оптимальная концепция поведения, так как патогены могут выработать систему маскировки, которая предотвратит их обнаружение. Для того, чтобы обнаруживать этих микроорганизмов (а также увеличить эффективность реагирования по отношению ко всем остальным), возникла специфичная (она же приобретенная) иммунная система, которая включает в себя T-лимфоциты и B-лимфоциты, производящие антитела.
        Читать дальше →
      • How-to install gitosis (мануал с учётом проблем возникающих при установке) + интеграция в redmine

          gitosis — программное обеспечение для хостинга Git репозиториев


          image

          Установка:


          Появился скрипт авто установки пока тестируется
          sudo apt-get install python-setuptools git-core -y
          mkdir ~/src
          cd ~/src
          git clone git://github.com/sc0rp1us/gitosis-tools.git
          cd gitosis-tools/gitautoinstall
          sudo bash main

          Дальше следуем инструкциям скрипта


          Но вернёмся к статье
          Для начала установим необходимые компоненты для запуска gitosis:
          • Для debian & ubuntu выполните следующие команды от пользователя root

          apt-get update
          apt-get upgrade
          apt-get install python-setuptools git-core -y
          cd ~/src
          git clone git://eagain.net/gitosis.git
          cd gitosis
          python setup.py install



          Далее зайдём в учётную запись через которую будем управлять gitosis'om (назовём её gitadmin), выгрузим дистрибутив и установим его

          Настройка:


          Теперь нам нужно будет создать пользователя который будет владеть хранилищем(имя может быть любым, но я предпочитаю использовать просто git), к тому же на одном сервере может быть несколько аккаунтов владеющих хранилищами, такому аккаунту не нужен пароль, но необходим действующий shell иначе SSH откажется с ним работать:
          P.S. вы конечно можете использовать уже существующую учётную запись, но по соображениям безопасности, крайне не рекомендуется этого делать
          Читать дальше →
        • Резервное копирование mysql-базы. мой путь =)

            Задача стояла такая – часто бэкапить базу + экономить место на харде.
            Прочитав одну статейку по созданию инкрементального бэкапа для дампов через diff понял что это всё бредятина какая-то.
            Промелькнула мысль – а почему бы не заливать дамп базы в git? Ведь можно будет и откатиться на нужный коммит, и склонировать репозиторий для экспериментов, и вкушать все прелести данной системы. =)
            Сразу определися – я делал всё под FreeBSD. Следовательно под Linux нужно будет подпилить напильничком.
            Ну, начинёмс! Сначала ставим гит (если нет в системе)!
            Предварительно обновив порты пишем cd /usr/ports/devel/git && make install clean
            Git поставился. Выбираем место для папки с бэкапом базы и создаём папку mkdir /backup/bases/test
            Далее cd /backup/bases/test и инициализируем там репозиторий командой git init
            Я написал скрипт который дампит базу потаблично, добавляет файлы в репозиторий и создаёт коммит с датой бэкапа

            #!/usr/local/bin/bash
            backupurl=”/backup/bases/test”
            for i in `/usr/local/bin/mysql -e “use test;show tables;” -uUSER -pPASS|tr -d “|”|grep -v “Tables_in_”`;do /usr/local/bin/mysqldump –quick –skip-extended-insert –dump-date=false –compact=true -uUSER -pPASS test $i >$backupurl/$i.sql;done
            /usr/local/bin/mysqldump -uUSER -pPASS –no-data test > $backupurl/structure.sql #отдельно бэкапим структуру базы
            cd $backupurl
            /usr/local/bin/git add . #добавляем файлы
            sleep 2
            /usr/local/bin/git commit -am “backup `date +%d.%m.%y.%H.%M`” #коммит с чилом и временем


            Запечатываем данный скрипт в файл, делаем его исполняемым и плюхаем в крон.
            Далее после нескольких бэкапов заходим в папку с бэкапом базы и пишем git log – вам выведется история наших бэкапов.
            Напоследок:

            • Читайте документацию по гиту
            • Поставьте в крон (в зависимости от объёмов базы… лично у меня раз в сутки) команду cd /backup/bases/test && git gc – это серьёзно сжимает репозиторий
            • Для отката желательно склонить репозиторий и сделать откат через git reset HEAD^^
            • Опция –skip-extended-insert ОБЯЗАТЕЛЬНА. она запрещает расширеные инсерты которые сводят на нет всю мою затею с гитом
          • Хранение паролей в Android

              Предисловие: Этот обзор был написан после прочтения топика “Свободный Android — золотая жила для Google” и комментариев к нему. Автору перевода данного топика я хочу сказать свое спасибо.
              Кроме того, хочу поблагодарить форум androidfan.ru за их ветку с описанием приложений, где собственно и были найдены рассматреваемые экземпляры.

              История вопроса



              Два года назад, 21 октября 2008 года мобильная платформа Android перестала быть лишь виртуальной основой для разработчиков и вышла в реальный мир в образе коммуникатора T-Mobile G1 (HTC Dream). С момента первого выхода система претерпела множество изменений, как по качеству кода, так и по количеству возможностей, предоставляемых ей. Однако, как справедливо было замечено некоторыми хабровчанами, качество и популярность платформы зависят не только от интенсивности ее разработки и качества собственного кода, но и от приложений, которыми она позволяет пользоваться.

              Кроме того, если вы любите обращать внимания на маленькие детали, то могли заметить, что Android, как операционная система, быстро приобрел большую популярность не только у простых пользователей, но также и у производителей мобильных устройств – ведь они достаточно быстро стали выпускать коммуникаторы бизнес-класса.
              Осторожно, много скриншотов!
              Подробнее о хранении паролей
            • Hеroвый root или как получить полноценный русифицированный HTC Hero с приложениями Google из «обрезанного»


                Многие засматриваются в сторону телефона на OS Android.
                И, среди доступных вариантов, именно HTC Hero для многих является заветной мечтой.
                К превеликому сожалению, Google почему-то не любит украинских граждан и не разрешает официально продавать в Украине телефоны с Android Market — даже с его бесплатной версией…
                И кроме того на сером рынке доступно много телефонов из других стран, в которых нет русского или также отсутствует market.
                Но, прелесть OS Android в её открытости… Так что под катом постараюсь рассказать, как можно перепрошить телефон полноценной прошивкой с полноценным Android Market, русификацией и возможностью покупки платных программ.
                Данный мануал особо актуален для официальных украинских HTC Hero, но подойдет для владельцев любых Hero, которые хотят сменить прошивку своего телефона или открыть доступ к дополнительным фукциям своего телефона.
                Читать дальше →
              • Подойдет ли телефон на Android OS Алексу Экслеру или безболезненный переход с Windows Mobile на Android.Часть 1

                  Предисловие: В феврале этого года у себя в блоге Алекс Экслер опубликовал достаточно интересный материал о переходе с Windows Mobile на Айфон. В нем он описал наиболее часто используемые функции смартфона и их реализацию в АйфонОс. Вот и захотелось мне примерить его обзор для достаточно молодой еще (по сравнению с айфоном и тем более с винмобайл) Android Os. Сразу оговорюсь, что я буду проводить обзор с использованием моего телефона HTC Magic for Vodaphone, то есть т.н. Гугловскую модель. Потом расскажу, почему это важно. Прошивку для обзора я буду использовать Cyanogen, которая в принципе не сильно отличается внешне от родной прошивки, которая шла с моим телефоном.То есть все программы о которых я буду говорить не требуют специфической перепрошивки телефона. Если кто пропустил, тут я размещал свой первый обзор этого телефона.
                  Для сохранения копирайтов А.Экслера, его текст я буду обозначать италиком.
                  Под катом- очень длинный пост:
                  Читать дальше →
                • Git и публикация сайта

                  • Translation
                  При попытке отредактировать этот старый пост слетело всё форматирование. Может быть я его когда-нибудь исправлю.

                  Я потратил несколько месяцев на борьбу с глюками Git-svn и обдумывание разных вариантов, прежде чем пришёл к этому методу организации рабочего процесса с сайтом — простому, гибкому и удобному в работе.

                  Основные преимущества:
                  • Делая push из удалённой копии мы автоматически обновляем live-копию сайта
                  • Правки файлов на сервере не будут разрушать историю коммитов
                  • Простота, не нужны особые правила выполнения коммитов
                  • Можно применить к уже запущенному сайту, без повторного деплоя или перемещения файлов
                  посмотреть, что там такое
                • QJson как библиотека для работы с JSON в Qt

                  • Tutorial

                  Привет, хабр!

                  На хабре еще не писали про QJson — отличный и очень простой инструмент для работы с JSON на Qt. Вообще Qt рекоммендуют использовать XML — но мне кажется что в очень многих случаях он бывает чересчур уж избыточным или лишним. В некоторых случаях лучше использовать JSON. В этой заметке я расскажу как скачать, собрать и использовать QJson для работы с JSON в Qt.

                  Внимание! Этот пост — заметка. Все что вы тут прочитаете можно найти в гугле и на офф сайте проекта — но я думаю что такая заметка не будет лишней.
                  Читать заметку...
                • Почему читабельность кода имеет значение?

                  • Translation
                  Понятно, что напрашивающийся (и правильный) ответ — «Потому что код приходится не только писать, а и читать». Едва ли этот ответ стоит целого поста, но автор им не ограничивается.

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

                  Впрочем, меня беспокоит не качество кода — не настолько, как напряжение зрения и случайные ошибки чтения, которые тоже определяют качество кода. Мы часто бьемся над ошибками, которых можно было бы избежать, если бы не спешка и недопонимание.

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

                  Читать дальше →
                • Инструкция-шпаргалка для начинающих

                  • Tutorial
                  Если в один прекрасный момент вам ударило в голову желание насадить разумное, доброе, вечное, и пересадить всех с SVN на GIT, сразу встают три проблемы:
                  • Объяснить зачем это нужно разработчикам и руководству
                  • Ввести в обиход новую схему работы с кодом
                  • Научить ничего не подозревающих девелоперов новым техникам
                  Читать дальше →
                • Алгоритм: Как оформить баг на ядро Linux

                  Мой опыт в разработке и отладке Parallels Virtuozzo Containers позволил обобщить и сформулировать список пожеланий к описанию проблемы пользователя, который позволяет существенно уменьшить время диагностирования и решения проблемы в ядре операционной системы Linux. Прошу отметить, что при всей очевидности некоторых рекомендаций многие участники open-source сообщества по-прежнему пренебрегают ими. Алгоритм представлен подкатом.
                  Читать дальше →
                • GitHowTo — тур обучения гиту на русском

                    image

                    Спешу поделиться радостной новостью о запуске проекта GitHowTo — интерактивного тура-обучалки основам Git.

                    За основу были взяты идеи gitimmersion.com, но переведены на русский язык и немного изменены под реалии не-ruby разработки, поэтому спешите любить и жаловать — githowto.com!

                    Буду чрезвычайно рад любым замечаниям и пожеланиям к проекту.
                  • Атомарная группировка, или Ни шагу назад!

                      0. Присказка


                      В некотором царстве, в некотором государстве жил-был программист. Звали его, как полагается, Иван. Был он настоящим спецом, обладал всеми Тремя Великими Добродетелями Программиста, то есть был ленив, спесив и нетерпелив. Случилась в том царстве печаль великая: кризис. И выгнали Ваню с работы без выходного пособия. Горевал Ваня долго, а потом собрался с духом и разослал резюме по всему белу свету. Долго ли, коротко ли, вызвали Ваню на собеседование. Требований к соискателю было много, но главное — требовалось хорошо владеть регулярными выражениями. До собеседования — почти месяц, готовься — не хочу. Будучи человеком серьёзным, готовиться Иван решил обстоятельно. 3 недели и 3 дня он лежал на печи, почитывал Хабр и думал, как же неслыханно обстоятельно он будет готовиться. До собеседования остался 1 день. Ванюша мысленно обругал работодателей, которые назначают собеседование так скоро, что совсем подготовиться не успеваешь, слез с печи, сдал пивные бутылки и на вырученные деньги купил книжку по регексам. Читал он её до полного изнеможения, пока не отключился. Утром мы найдём сонную физиономию Ванюши лежащей, как на подушке, на этой самой книжке под Хабракатом.
                      Читать дальше →
                    • HTML 5 в Internet Explorer

                        image

                        Вкратце: как заставить новые теги из HTML 5 работать в Internet Explorer.

                        Любой веб-разработчик смотря на HTML 5 плачет от счастья, которое наконец-то пришло в наш дом. Для большинства функций (такие как WebGL, многопоточность и веб-сокеты) придётся ждать поддержки от браузеров (а в самых правильных эти возможности уже есть), но новые удобные теги мы можем использовать уже сейчас.

                        Однако Internet Explorer (даже последней, 8-ой версии) и тут сумел споткнуться — новые теги вне HTML 4 он просто не замечает — на них нельзя повесить стили.

                        В IE проблем даже две — отдельно нужно включать поддержку HTML 5 тегов в обычном документе, и отдельно в содержимом, которое добавляется динамически (например, через AJAX).
                        Читать дальше →
                      • Чек-лист вёрстки. Что можно отдавать клиенту, а что надо переделывать

                          Идеальная вёрсткаВы PM. Как узнать – готова ли вёрстка к реальному использованию?
                          Вы заказчик. Как убедиться, что работа выполнена качественно?
                          Как оценить качество вёрстки?

                          Когда я стал тим-лидом, а позже PM, передо мной стала задача проверять вёрстку наших проектов. Нужно было выработать формальные, легкопроверяемые критерии, соответствие кода которым, должно было давать некую гарантию, что не будет факапов и ни клиент, ни программеры не сказажут потом “WTF?”.

                          Клиенту неважно насколько красив ваш код, но ему важен результат. Качественный код нужен фирме, т.к. он надёжней и в будущем его будет легче поддерживать.

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

                          Итак что же это за список?

                          Краткая версия теперь доступна на html5checklist.com (github), где можно вносить pull-request'ы.

                          История обновлений:
                          • 2015/08/11: Актуализировал рекомендации по оптимизации скорости загрузки. Добавил требование поддержки Retina. Дополнил «19. Мелочи» требованием что изображения должны масштабироваться в зависимости от размера окна.
                          • 2015/08/10: актуализирован список исключений для CSSLint
                          • 2015/07/29: актуализирован пункт №13 «плохо»/«хорошо»
                          • 2015/04/08: добавлено требование использования препроцессоров и рекомендация использования систем сборки
                          • 2013/04/25: добавлены анализаторами качества кода: CSSLint и JSHint, указан сайт подбора css font stack (спасибо @fliptheweb), мелкие уточнения (работу интерактивных элементов страницы, что не пропадает фон на высоких разрешениях, не должно быть пустых презентационных блоков, при проверках контента — пробовать удалять заголовки, менять местами блоки)
                          • 2013/04/24: добавил пункт об минимизации каскада (БЭМ-техники, MCSS, SMACSS), необходимости вписывания в экран моб. устройства, заменил ссылку на проверочный текст отображения стандартного html на код с normalize.css, поправил пример где в рекомендации встречался длинный каскад, упомянул про Opera на Presto и новый уровень семантики — в именах классов BEM.
                          • 2012/04/12: отсортировал пункты проверки в порядке важности, выделил главные, дополнил статью подробностями
                          • 2011/12/07: дополнил согласно доклада на WSD Минск'2011.
                          • 2011/07/19: добавлено про повышение надёжности вёрстки благодаря html5-тэгам, про необходимость favicon/apple-touch-icon, отсутствие багов при ресайзе textarea
                          • 2011/06/15: добавил пояснения какие ошибки валидации допустимы, рассказал про отсутствие официальной кнопки «HTML5 Valid» и про официальное лого HTML5 на сайте.


                          Далее с примерами - как проверить html, даже если вы ничего не понимаете в вёрстке.