• Флаги 254 стран одним спрайтом

      Однажды, nickivanov нарисовал миниатюры для кучи разных флагов и выложил их в свободный доступ. А недавно, artpolikarpov собрал их в один спрайт и написал к нему удобный css, который позволяет легко отобразить любой флаг просто указанием нужного класса.

      Вполне возможно, что однажды этот набор сохранит кому-нибудь много времени при работе над сайтом.

      И был бы этот топик топиком-ссылкой, да по необъяснимым причинам не разрешает Хабр в топиках-ссылках указывать авторов, заслуживающих похвал. Так что вот они ссылки:
      Описание: artpolikarpov.ru/projects/flags
      Архив с флагами: artpolikarpov.ru/projects/flags/flags.zip
    • Знакомство с Arduino

        Введение


        Торжественно открываю новый блог на Хабре, посвящённый Arduino! Блог об универсальном opensource-микроконтроллере Arduino, который будет интересен всем любителям микроэлектроники, самодельных гаджетов и всем, кто не боится взять в руки паяльник.

        Внешний вид платы Arduino Diecimila Arduino представляет собой линейку электронных блоков-плат, которые можно подключать к компьютеру по USB, а в качестве периферии — любые устройства от светодиодов до механизмов радиуоправляемых моделей и роботов. Программы для него пишутся на простом и интуитивно понятном си-подобном языке Wiring (c возможностью подключения сторонних библиотек на C/C++, например, для управления LCD-дисплеями или двигателями), компилируются и загружаются в устройство одной кнопкой, после чего вы тут же получаете работающий автономный гаджет. Никакого ассемблера, никаких лишних проводов и дорогущих деталей и программаторов — чистое творчество, включай и работай!
        Читать дальше →
      • Dropbox как Git репозиторий



          Хочу поделиться хорошим способом хранения главного репозитория.

          Делается это созданием bare—репозитория в папке Dropbox'a:

          ~/Project $ git init
          ~/Project $ git add .
          ~/Project $ git commit -m "first commit"
          ~/Project $ cd ~/Dropbox

          ~/Dropbox $ mkdir Repos/YourProject.git
          ~/Dropbox $ cd Repos/YourProject.git
          ~/Dropbox $ git init --bare
          ~/Dropbox $ cd ~/Project

          ~/Project $ git remote add origin ~/Dropbox/Repos/YourProject.git
          ~/Project $ git push origin master

          Клонируем проект из Вашего репозитория, привязанного к Dropbox аккаунту:

          clone ~/Dropbox/Repos/YourProject.git

          Теперь можно совершать любые Git операции, которые будут синхронизированы со всеми рабочими машинами.
          Все то же самое можно сделать с любым gui клиентом для Git.
          Читать дальше →
        • Инструкция-шпаргалка для начинающих

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

            Недавно в RSS пришла статья, которую хотел оформить переводом — So you just deleted your production database — what now?. Однако комментарии к статье, да и последний абзац заставили задуматься — а на сколько просто восстановить удаленную базу данных.
            И дабы не плодить непроверенной информации — перевод перевоплотился в исследование метода восстановления информации из случайно удаленной базы MySQL.
            Подробности подкатом...
          • Еще одна версия алгоритма сравнения изображений

              Эта статья с месяц висела у меня в черновиках, пока кто-то мне наконец не привел карму к тонусу. Не знаю кто, но спасибо тебе

              Сегодня, зайдя в очередной раз на хабр, наткнулся на вот эту интересную статью. Там описывается алгоритм хэширования изображений. Когда я читал эту статью, мне пришла в голову мысль, как можно изменить этот алгоритм, чтобы он кушал изображения, у которых сильно различается, например, яркость (но сами изображения при этом идентичны).
              Читать дальше →
            • Массовое надписывание и загрузка изображений в Picasa Web Albums

                Пролог


                Люди, публикующие изображения в Интернете, наверняка задумывались о том, чтобы хоть как-то обозначить своё авторство.

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

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

                Вторая рутинная операция фотографа-блогера-графомана — загрузка изображений на уютный хостинг.

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

                Посему скрипт. Поэтому я люблю Линукс. Поэтому я люблю Picasa Web Albums: Google отдал нам на растерзание googlecl — очень простую утилиту для работы с сервисами Корпорации Добра из командной строки (про неё уже кратко рассказывалось на Хабре).

                Скрипт очень прост и легко подстраивается под новые неожиданные нужды.

                Довольно лирики
              • Qt. Создание виджета-консоли для графического приложения

                Привет добрым людям.
                При прочтении этого заголовка читатели могут подумать: зачем смешивать консольные и графические приложения – консоль в GUI-приложении не нужна. А вот и нет, смею заметить. Иногда совмещение функциональной консоли с полным набором команд и графического отображения для удобной навигации и просмотра данных может дать в итоге мощный инструмент.
                И у меня есть пример.
                Начав использовать быстрое key-value хранилище данных Redis для своих проектов, я обнаружил, что на данный момент нет ни одного вменяемого desktop-приложения для просмотра, редактирования и администрирования баз данных Redis. Есть только консоль от разработчиков, веб-интерфейс Redis Admin UI, который для своей работы требует .NET (что само по себе уже отпугивает) и пару Ruby-приложений, сделанных, похоже, на скорую руку, на коленке.
                Хотелось бы иметь что-то удобное и быстрое, как сама база данных Redis. Поэтому я решил восполнить этот пробел и написать такой инструмент. Так как нужен быстрый – то C++, так как нужен кроссплатформенный – то Qt.

                RedisConsole

                Из-за того, что все возможности базы данных не реализуешь, да они и могут появляться каждый день новые, нужно было добавить в графический интерфейс консоль. На основе какого виджета в Qt ее имитировать, и как, и хочу вам рассказать.

                Читать дальше →
              • виджет кармы для awesome wm

                  Сильно не пинайте, решил просто поделиться.
                  Пишем xml парсер, который вытягивет данные о карме и хабрасиле:
                  #!/usr/bin/perl
                  
                  use XML::Simple;
                  use Net::HTTP;
                  
                  my $s = Net::HTTP->new(Host => "habrahabr.ru") || die $@;
                  #поменяйте на свой username
                  $s->write_request(GET => "/api/profile/%username%/", 'User-Agent' => "Mozilla/5.0 (+http://www.reid.ru/freebsd/?page_id=15)");
                  my($code, $mess, %h) = $s->read_response_headers;
                  
                  while (1) {
                      my $buf;
                      my $n = $s->read_entity_body($buf, 1024);
                      die "read failed: $!" unless defined $n;
                      last unless $n;
                      $data = $buf;
                  }
                  
                  my $s = XMLin($data);
                  $karm = $s->{karma};
                  $rating = $s->{rating};
                  print "$karm\/$rating";
                  


                  В rc.lua пишем:
                  -- определяем виджет
                  karma_text = widget({ type = "textbox", align = "right" })
                  function get_karm()
                   -- указываем путь к скрипту
                   local karm =  awful.util.pread("~/.config/awesome/zoom/bin/karma")
                   karma_text.text = "" .. setFg("#e8ef1b", karm) .. ""
                  end
                  ...
                  -- указываем где он должен располагаться
                  mywibox[s].widgets = {
                  ...
                   karma_text
                  ...
                  }
                  -- вызываем его при запуске awesome
                  get_karm()
                  -- и вызываем каждые 15 минут
                  awful.hooks.timer.register(900, function() get_karm() end)
                  


                  Результат (для полноты показываю весь трей):
                  image

                  Внимательно ознакомьтесь с правилами API хабра.
                • GeoIP, попытки нетрадиционного использования

                  Делать было вечером, делать было нечего...

                  Предыстория


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

                  Но больная голова покоя рукам не дает, так что сейчас я вам покажу один забавный и не несущий смысловую нагрузку эксперимент.
                  image
                  Это выборка всех возможных координат IP-шников (с округленные до целых).
                  Можно сказать, что это фотография интернета ареал обитания TCP/IP

                  Внимание, автор не является кодером в хорошем смысле этого слова, поэтому лиц, которых может шокировать копрокод прошу удалиться.
                  Читать дальше →
                • Заставим клавишу Switch Display на ноутбуке работать по-своему!

                    Вам нравится как работает gnome-display-properties (это тот, который «Система -> Параметры -> Мониторы») и клавиша переключения монитора на ноутбуке? Да? Тогда можете проходить мимо, топик не для вас :)

                    Самое большое неудобство этого аплета — невозможность вручную настроить порядок переключения режимов: current configuration -> mirror -> extended desktop -> laptop only -> external only -> и снова current configuration. Не слишком удобно, не правда ли?.. Вот эту задачу мы и будем решать.

                    Задача


                    — заставить клавишу Switch Display переключать всего два режима:
                    1) экран ноутбука включен, внешний монитор отключен
                    2) экран ноутбука отключен, внешний монитор включен
                    — сделать так, чтобы ноутбук не уходил в режим ожидания по захлопыванию крышки, если включен внешний экран
                    Читать дальше →
                  • Использование макросов в LibreOffice

                    • Перевод
                    Хабравчане, хочу вам представить перевод от юзера rze. Его ещё нет на Хабрахабре, но он не отказался бы от инвайта. Отправить можно на почту mail@worze.org.

                    АПД: спасибо Mithgol, инвайт получен. :)

                    Привет, хабражители!
                    Сегодня я хочу Вам рассказать об использовании макросов в LibreOffice.

                    Предисловие
                    Каждый день дома и на работе мы пользуемся офисными приложениями для выполения каких-либо задач. Часто бывает так, что Вы специализируетесь на одной работе и в итоге выполняете одни и те же задачи: вставляете один и тот же текст, форматируете его, используя большое количество горячих клавиш. Во всех этих случаях можно сэкономить Ваше ценное рабочее время, автоматризировав некоторую Вашу работу.
                    Далее в статье я Вам расскажу об использовании макросов в LibreOffice.
                    Читать дальше →
                  • Google начинает учитывать в выдаче мета-теги rel="author" и rel="me"

                      С 7 июня Google начал учитывать в поисковой выдаче авторский мета-тег HTML5 (rel="author") со ссылкой на личный профиль автора.

                      Written by <a rel="author" href="../authors/mattcutts">Matt Cutts</a>

                      По правилам использования авторских мета-тегов личная страница автора обязательно должна располагаться на том же домене, что и авторский текст. Для связывания страниц на разных доменах с одним автором используются взаимные ссылки с пометкой XFN (rel="me"). Если на Хабре стоит ссылка на личную страницу автора,

                      <a rel="me" href="http://mattcutts.com">Read more about Matt</a>

                      то на домене mattcutts.com должна быть обратная ссылка на Хабр:

                      Matt has also written <a rel="me" href="http://mattcutts.habrahabr.ru/blog/">lots of articles for the Habrahabr</a>.
                      Читать дальше →
                    • Playboy c видео рекламой Marlboro или возвращение плеера из журнала Vogue

                        Зимой всё сообщество гиков было взбудоражено появления в журнале VOGUE нового типа рекламы, сделанного по технологии Video-in-Print®. В первый же день его появления партия была сметена, на второй день в некоторых местах были найдены остатки и тоже сметены. Тираж был ограничен и всем желающим журнал с рекламой не достался. Ходили споры, что такой рекламы больше не будет, она очень дорога, это разовая акция. Но он вернулся!!! Легендарная реклама с легендарным плеером.
                        Читать дальше →
                      • VNC-монитор из плеера Playboy/Vogue «для чайников»

                          Доброго времени суток, господа.

                          Мои знакомые, прочитав эту статью попросили меня написать пошаговую инструкцию с «картинками» по установке VNC-клиента на плеер Playboy с машиной на Ubuntu 11.04. А то многие обладая плеерами, не могли нормально их использовать натыкаясь на непонимание терминов и отсутствие навыков использования Linux.
                          Надеюсь с этим материалом многие вопросы отпадут.

                          Фото результатов:


                          Читать дальше →
                        • Календарь древних майя — как вычислить дату?

                          Здравствуй, читатель!

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

                          В своём повествовании я покажу как получить дату календаря майя из даты привычного нам григорианского календаря, приводя примеры алгоритмов на языке Python.
                          Читать дальше →
                        • Возможности для студентов, о которых вы, возможно, не знали

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

                            Итак, поехали…
                            Читать дальше →