Search
Write a publication
Pull to refresh
1
0
jj_killer @jj_killer

User

Send message

Альтернативный способ записи IP-адресов

Reading time1 min
Views61K
Наверное, некоторые знают такую штуку, но думаю, далеко не все.

Как мы все знаем, адрес IPv4 представляет собой 32-битное число. Традиционно IP-адрес записывается в виде 4-х октетов, разделенных точкой, в десятичной системе счисления. Например: 77.88.21.8.
Однако существуют и другие, менее распространенные варианты записи.

Во-первых, каждый из 4-х октетов можно записать в восьмеричной или шестнадцатеричной системах счисления:
77.88.21.8 = 0x4d.0x58.0x15.0x8 = 0115.0130.025.010, или даже можно смешивать 77.88.0x15.010.

Во-вторых, адрес можно записывать в виде числа:
77 * 2563 + 88 * 2562 + 21 * 2561 + 8 * 256О = 1297618184.
Аналогично п.1 это число можно записывать в восьмеричной и шестнадцатеричной системах счисления: 1297618184 = 011526012410 = 0x4D581508.

Честно говоря, не нашел RFC, в котором описываются эти форматы, но это работает везде: в браузере, команде ping и т.д. Попробуйте сами.

Текст любой ценой: PDF

Reading time12 min
Views93K
Продолжаем разбирать текстовые форматы на предмет получения текста. Итак, обещанный ранее PDF.

С portable document format'ом не всё так просто, как DOCX или ODT, что мы рассматривали в прошлый раз, но всё же это всё ещё изначально текстовый, а не бинарный формат. Вы удивлены? Тогда давайте посмотрим на то, что там внутри. Дальше действительно много текста.

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

Файловый AIO в nginx

Reading time2 min
Views17K
В последних версиях nginx (начиная с 0.8.11) появилась поддержка асинхронного файлового ввода-вывода. Потенциально, эта фича способна устранить одно из узких мест веб-сервера — полную блокировку процесса при файловом IO.

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

Раньше, эта проблема решалась увеличением количества процессов-воркеров. Теперь есть альтернативное решение. :) Однако, перед тем, как включать файловый AIO, стоит учесть ряд нюансов.

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

Во-вторых, файловый AIO работает только на FreeBSD 4.3 и выше, либо в Linux, с версии ядра 2.6.22 и выше.

В-третьих, AIO во FreeBSD имеет смысл включать только в версиях FreeBSD-6.4 STABLE, FreeBSD 7, или новее. В более ранних версиях, при включении AIO, сетевая подсистема начинает использовать Giant Lock, что означает невозможность одновременного выполнения какого-то другого системного вызова. Другими словами, почти никаких выгод от асинхронности мы не получим.

Ну и наконец, при использовании AIO под Linux надо также включать directio. Также, если я всё понял правильно, в линукс пока невозможно использовать AIO для подгрузки данных для sendfile, поскольку включение directio отключит использование sendfile автоматически.

Если вы по-прежнему считаете, что оно вам нужно, AIO включается очень просто. Для Linux, фрагмент конфига будет выглядеть примерно так:

aio on; # включаем AIO
directio 512; # включаем O_DIRECT для файлов, размером 512 байт или больше
output_buffers 128 512k; # зная размер и примерное количество одновременно отдаваемых файлов, можно подобрать более подходящие значения


Ссылки:
Описание AIO в документации на Nginx
Changelog

GMail — проверка новых писем из командной строки

Reading time1 min
Views6K
Не будем тянуть кота за хвост. Сразу к делу

curl -u username:password --silent "https://mail.google.com/mail/feed/atom" | tr -d '\n' | awk -F '<entry>' '{for (i=2; i<=NF; i++) {print $i}}' | wc -l

Результатом будет количество новых писем у вас в ящике.

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

Первый интерактивный онлайн сериал

Reading time1 min
Views652
О сериале:

Сериал «Погружение» — первый сериал, чей сюжет развивается в зависимости от желания зрителя. Управление происходит простыми кликами мышки на видео-объекты. Для простоты, в момент появления кликабельного видео-объекта, отображается красный индикатор, кликнув на который включится указатель всех интерактивных объектов.

Для просмотра сериала требуется установленный Silverlight от компании Microsoft.


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

HTTP сервер за 15 минут

Reading time2 min
Views203K

Задача


За минимальное время написать HTTP сервер, который после запуска сможет корректно ответить браузеру и отдать простую HTML страничку (минимальное время, чтобы кода было мало, чтобы новичку вникать было проще).
У меня это заняло около 15 минут. Сервер вроде справляется с поставленной задачей.

Суть примера — показать что такое Socket, ServerSocket, InputStream, OutputStream, и Thread.

смотреть исходники

Список полезных инструментов для CSS разработчика

Reading time8 min
Views71K
Это не попытка создать список всех существующих инструментов для CSS разработки. Только некоторые, наиболее полезные были отобраны и размещены в соответствующих категориях.


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

zenity + wget = GUI wget

Reading time5 min
Views9K
Топик посвящается тем, кто не любит качать тяжелые файлы браузером из файлообменников, а также для тех кто хочет получше понять работу zenity.

В Linux есть много различных качальщиков от консольных до тяжелых java-приложений и мой скрипт это не еще один новый качальщик, это всего лишь приятная для глаз (eye-candy) обертка для стандартного Wget. Хотя в потенциале он умеет все что умеет Wget, но я реализовал только самые его основные функции. Цель данного скрипта — запустить закачку через wget (отвязав ее от браузера) и показывать ход ее выполнения.
Читать дальше →

Continuous integration для php

Reading time9 min
Views14K
Эту статью написал мой добрый приятель и бывший коллега fred, работающий в команде программистов над большим и сложным проектом, который должен работать 24х7. Если кто-то решит пригласить его на хабр — с удовольствием вышлю его email по хабрапочте. Пожелания и комментарии приветствуются, а я обязуюсь передавать ответы автора в меру своих возможностей.

Меня давно посещала мысль запустить CI-сервер для рабочего проекта. База модульных тестов уже достаточно внушительных размеров, а количество людей в проекте немного увеличилось. Можно было бы наблюдать за тем, как изменяется покрытие тестами кода и соблюдаются стандарты кодирования. И наказывать провинившихся. Шучу.
Некоторое время назад была прочитана книжка Непрерывная интеграция. Улучшение качества программного обеспечения и снижение риска и статья Quality Assurance Tools for PHP, которые и послужили отправной точкой.
Читать дальше →

Годятся ли CSS-спрайты для шрифтов?

Reading time1 min
Views1.7K
Возникла мысль: а нельзя ли использовать CSS-спрайты для того, чтобы выводить заголовки необычными шрифтами?

Кажется, что сделать это не так и сложно.
  1. Нужно подготовить CSS-спрайт — вывести все буквы в картинку и сделать CSS, в котором для каждой буквы есть свой класс, позиционирующий фон на нужное место в картинке.
  2. Помечаем строку, которую нужно преобразовать, специальным классом.
  3. В момент загрузки выбираем все помеченные строки и для каждой их буквы создаем span с классом, соответствующим букве из спрайта.
  4. Оригинальный текст скрываем. Возможно, прозрачностью.

Наконец, можно сделать серверный код, который бы из шрифта (TrueType, например), автоматом бы делал спрайтовую заготовку.

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

Кто-нибудь видел такое решение?

Update:
Благодаря хабраюзеру nuxdie нашлась готовая реализация этой идеи: fontjazz.com. Не позволяет только текст из заголовка копировать.

Update 2:
Хабраюзер Magarich предлагает свою реализацию — 5socks.net. Здесь можно и копировать. Жалко, что из-за прозрачности текста выделение тоже совсем не видно.

Выбор Шрифтов для Презентаций, Печати и Веба

Reading time5 min
Views73K
Любовь к шрифтам – это болезнь. Скорее всего большинству людей этого не понять – ведь мы живем в стране где вывески и витрины оформлены с такой безграмотностью что порой хочется достать фотоаппарат и сфотографировать это «счастье» да выложить в интернет дабы показать до чего может довести человеческое безразличие. Поэтому человек у которого на столе лежит каталог FontFont и который иногда бурчит что де «неплохо еще вот этот шрифт купить» воспринимается порой как немного «не в себе». Тем не менее, изрядная доля моего времени уходит на то чтобы потеоритизировать на тему того, какие шрифты где уместны, и как выработать свой уникальный стиль для презентаций, веб-типографики и печатной типографики. В этом посте – несколько мыслей насчет того что работает/не работает, и что бы хотелось попробовать.
Читать дальше →

Mac OS X в эмуляторе QEMU под Linux

Reading time2 min
Views27K
Здравствуйте хабровчане. Недавно понадобилось писать на Objective C под Mac OS X. Железо у меня не самое подходящее для всяких сборок, да и сидеть полностью в этой ОС религия не позволяет. Решил поставить Mac OS X в на виртуальную машину Qemu в Linux.
Читать дальше →

Hardened Gentoo: описание

Reading time3 min
Views20K
Для начала расскажу, зачем я публикую эту статью. Дело в том, что большинство пользователей Gentoo Linux до сих пор не использует Hardened Gentoo. И вызвано это обычно тем, что они либо не знают, что это такое, либо считают что это слишком сложно, либо считают что от этого пострадает стабильность, функциональность или производительность системы. Вот эти опасения я и хочу попытаться развеять.

Hardened Gentoo — это несколько изменений в компиляторе и ядре, которые увеличивают общую защищенность системы от взлома. Например, hardened-ядро умеет блокировать массу потенциально опасных операций, а hardened-gcc позволяет защитить компилируемые им программы от взлома типовыми методами а-ля переполнение буфера. Грубо говоря, если у вас стоит «дырявая» версия программы X, и её пытается взломать хакер, то в обычной системе у него это получится, а в hardened — не получится, да ещё и в лог запись пойдёт.
Читать дальше →

Про Git на пальцах (для переходящих с SVN)

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

Защищаемся от HTTP DDoS и прочих Хабраэффектов

Reading time5 min
Views11K
Простой способ защиты от HTTP DDoS — включить syn-cookies и заблокировать подонков. Но что делать если атакует 5к-10к хостов да еще и с динамическими IP? Тут нам на помощь придет frontend-backend архитектура c промежуточным кэшированием! Почему с промежуточным кэшированием? А потому что в моем случае от шквала запросов от frontend'а backend умирал унося за собой систему.
Читать дальше →

Особенности национальной типографики

Reading time6 min
Views8.5K
Не знаю, от чего, но мне почему-то очень интересны все эти закорючки и значки, вроде запятых, тире, кавычек, точек и прочей, вроде бы, бессмысленной ерунды, которая не воспринимается всерьез большинством людей. Нетрудно догадаться, что развился этот интерес после знакомства с Ководством, которое включало в себя популяризированное и наглядное объяснение основных норм употребления этих типографических знаков в русском языке. И когда я принялся за более-менее глубокое изучения английского, я стал обращать внимание на своеобразность его правил в этой области и определенные отличия, многие из которых на первый взгляд кажутся весьма необычными. Об этом-то я и хочу поведать; быть может, кому это тоже покажется любопытным, а может даже полезным.

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

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

Что там дальше?

WPA теперь может быть взломан за 1 минуту

Reading time1 min
Views6.5K

Исследователи из Японии (Toshihiro Ohigashi из университета Hiroshima и Masakatu Morii из университета Kobe) разработали способ для взлома шифрованного соединения WPA всего за одну минуту.
Атака производится чтением шифрованного трафика между компьютером и роутерами, использующими шифрование WPA.
Ранее, в ноябре прошлого года, сообщалось о возможности обхода защиты за 15 минут.

Атака работает только на WPA системах, использующих алгоритм Temporal Key Integrity Protocol (TKIP), но не работает на системах, использующих WPA с шифрованием AES.

Согласно отчету авторов атаки, существуют значительные ограничения для ее использования, тем не менее, следует избегать шифрования WPA с TKIP, равно как и протокола WEP, давно считающегося очень ненадежным.

Оригинал: ZdNet.com

Хабр и data:image

Reading time1 min
Views20K
Я только что заметил, что на Хабре используется довольно прогрессивное средство клиентской оптимизации: замена ссылок на изображения механизмом data:image, скорее всего ради уменьшения запросов на сервер.



Возможно, этот механизм используется на Хабре давно или даже с самого начала. В любом случае, я хотел бы напомнить этим постом о существовании data:image и его пользе. Для более подробного ознакомления с data:image можно почитать эту статью.

PS: но лучше всего начинать знакомство с data:image со статьи webo.in/articles/habrahabr/29-all-about-data-url-images за авторством перевода sunnybear (спасибо за напоминание heroOfOurTime)

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Registered
Activity