Хочется странного

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

По мере роста посещаемости сайта уже не так удобно скачивать лог с сервера и смотреть его «текстовым редактором F4». Распространенный софт наподобие awstats считает только «усредненные» значения. Это, конечно, тоже интересно, но для скрытых вуайеристов совсем не подходит.

В общем, хочется софтину, которая могла бы:

  • Показывать «стандартную» веб-статистику — количество посещений, хиты, рефереры, поисковые запросы — в общем, подобие awstats
  • Детализированно показывать визиты пользователей — то есть фактически отображать данные из лога
  • Иметь возможность показать визиты пользователей с выбранным реферером или поисковым запросом
  • … и прочие подобные радости

В принципе, есть даже идеи, как такое реализовать. Естественно, софтина должна быть «оффлайновой» — для детализированного просмотра информации по визитам на сайт надо фактически создавать копию лога — а это очень немаленький объем данных. Чтобы не изобретать велосипед — осведомлюсь у публики — кто что знает «по теме»?

Близок к тому, что мне хочется, SmartLog, но он платный (и довольно дорогой), что мне не нравится. Платный «оффлайновый» софт я тоже рассматриваю, так как там эмулятор кошелька с баксами найти проще.

Хорошие новости

Временно вырубил антилич.

Одновременно договариваюсь с хостером на предмет добавления rewrite в конфигурацию nginx, а не Apache — так будет работать быстрее и с меньшей нагрузкой на сервер.

Скрипт антилича запущен на сайте и доступен для скачивания

Все в подробностях читаем тут:

http://shura.luberetsky.ru/plaginy-dlya-wordpress/antileech/

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

Хитрый антилич

Все могут оценить здесь:

http://fabrika.luberetsky.ru/markertest/

По ссылке — страница с картинками. Как легко убедиться, картинки «чистые», безо всяких надписей. Если же кто-то разместит ссылку на картинку на «чужом» сайте, то получит вот это:

Поперек картинки — жирная красная надпись. (Если не видно с первого раза или, что более вероятно, картинки на сайте содержат надпись — нажмите Crtl+F5 или что там в вашем браузере перегружает страницу целиком, не используя кеш).

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

А вот такой опросик

[info]gutnik_real натолкнул своим сегодняшним постом на идею опроса. Из 13 фамилий русских эмигрантов нужно выбрать те, которые вам известны. Яндексом, Гуглом и прочими википедиями не пользуемся.

[poll id=»4″]

Для пользователей ЖЖ опрос отображается с глюками, надо перейти на мой сайт и голосовать отсюда.

Про .htaccess

Как-то не выходит написание файла .htaccess, работающего по следующему принципу — «при запросе изображения с пустым или неправильным реферером перенаправлять на someimg.gif». Написал примерно так:

RewriteEngine On
RewriteCond %{HTTP_REFERER} ^$ [OR]
RewriteCond %{HTTP_REFERER} !^http:\/\/(www\.)?domain\.luberetsky\.ru/ [NC]
RewriteRule .*\.(gif|jpe?g|png)$ /someimg.gif

Почему-то не работает. Ошибок найти не могу.

Кто-нибудь в этом деле разбирается?

UPD Лучше всех в этом разбирается [info]knutov, поставивший на серверах хостинга очень злобный nginx. Правда, теперь этот nginx можно отключать. Все работает, можно не волноваться.

Антикризисные колонки, часть последняя

После сборки двух динамиков и усилителя остается только соединить все вместе. В общем, лучше один раз увидеть и один раз услышать. Во второй половине ролика играет «Коррозия металла».

Делаем усилитель для колонок

Also available in English: http://shura.luberetsky.ru/2009/04/25/the-quick-and-dirty-amplifier/

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

Изготовление усилителя начинается, естественно, с выбора элементной базы. Можно делать на лампах, на транзисторах или на микросхемах (формально, все равно на транзисторах, но гемора меньше). Я пошел по пути наименьшего сопротивления в магазин «Кварц» и купил микросхему KA2026 производства Samsung.

KA2206 собственной персоной
KA2206 собственной персоной

Почему именно KA2206? Просто она оказалась самой дешевой (18 рублей) среди подобных микросхем. Аналоги выпускает множество фирм, назову лишь самые популярные: LA4180, LA4182, LA4183, LA4550, LA4555, LA4558, TEA2025. Микросхема содержит двухканальный усилитель аудиосигнала, допускающий, кстати, «мостовое» включение — когда два канала «объединяются» для работы на общую нагрузку. Параметры вполне приемлемы для «мультимедийной» акустики — при питании 9-12 В усилитель на нагрузке 8 Ом развивает мощность порядка 2 Вт при коэффициенте нелинейных искажений 10%. Кстати, не верьте надписям типа «300 ватт» на активных компьютерных колонках и «бумбоксах». Большинство из них оснащены усилителем на подобной микросхеме, которая чисто физически не сможет обеспечить такую мощность.

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

Схема электрическая принципиальная
Схема электрическая принципиальная

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

Модный навесной монтаж
Модный навесной монтаж

В качестве провода для подсоединения питания и аудиоразъема удобно использовать проводники из компьютерной «витой пары» — отлично лудятся и здорово паяются.

Готовый усилитель
Готовый усилитель

Доделав усилитель, подключаем к нему наши динамики — для левого и правого каналов. В качестве БП очень удобно использовать компьютерный блок питания, выдающий в том числе и напряжение 12 В, или батарейку «Крона» — 9 В тоже ничего. На яблоках или лимонах пока не запускал. Все, «активные колонки» для компьютера или плеера готовы. Испытания показали, что качество звучания не уступает китайским «активным колонкам» с гордыми надписями «300 W PMPO».

Антикризисные батарейки

А вот камрад [info]dlinyj озаботился вопросом электропитания в период экономического кризиса.

http://easyelectronics.ru/zaryazhaem-ipod-ot-limonov.html

Для подзарядки плеера-который-нельзя-называть была изготовлена «батарея» из 17 лимонов. Эксперимент прошел успешно, все остались довольны, кроме Чубайса. Кстати, вместо лимонов можно использовать яблоки. В общем, электричества хватит надолго.

Кошмар Чубайса
Кошмар Чубайса

Страшный диагноз

Что бывает, когда паяльная болезнь отягощена патологической ленью?

Да в общем-то, ничего. Но даже когда мне готовы отдать более-менее работающие колонки (можно перепаять конденсатор и наслаждаться), я предпочитаю соорудить свои — из пенопластовых тарелочек. Просто лень ехать куда-то далеко, а в закромах нашлась микруха KA2026 и кучка конденсаторов.

Завтра будет фотоотчет.

Антикризисный динамик

Also available in English: http://shura.luberetsky.ru/2009/04/25/anti-crisis-loudspeaker/

В общем-то, в условиях экономического кризиса Паук советует, например, уехать в деревню и заняться свиноводством, так как свиньи жрут всякий кал, например. В общем-то, в деревне надо слушать «Коррозию металла», поэтому, например, нужна мощная аудиосистема, чтобы производить адов угар. Сегодня пойдет речь о сборке крутых колонок из мусора, например. Автор оригинальной конструкции — Хосе Пино (Jose Pino) из Мексики.

Инструменты и материалы
Инструменты и материалы

Все, что понадобится — это несколько магнитов, бумага, кусок картона, тонкий эмальпровод (где достать — разъясню по ходу дела) и пенопластовый «подносик» (или тарелка) из ближайшего супермаркета.

Радость токсикомана
Радость токсикомана

Кроме того, нужен будет клей. Бумагу я клеил «Моментом», для пенопласта использовал UHUpor.

Наши магниты
Наши магниты

Магниты можно достать в магазине канцтоваров или свистнуть откуда-нибудь.

Итак, приступим. Для начала надо намотать на магните (я сложил вместе три «средненьких» магнита) несколько слоев бумажной ленты.

Магниты и бумага
Магниты и бумага

А потом — поверх первого слоя бумаги намотываем второй. Получаются два бумажных цилиндра — побольше и поменьше.

Бумажные цилиндры и магнит
Бумажные цилиндры и магнит

Маленький выкидываем, а большой послужит основой для катушки, которую мы будем наматывать эмальпроводом. Здесь надо использовать эмальпровод возможно меньшего диаметра, в моем случае — что-то между 0,1 и 0,2 мм.

Если пойти на радиорынок и попытаться купить эмальпровод, то продадут его только целой бухтой, примерно по 1500-2000 рублей за килограмм (для провода в 0,1 мм — это 14 километров). Поэтому никто эмальпровод не покупает, а добывают его самостоятельно из трансформаторов, электродвигателей, отклоняющих систем кинескопов и прочих подобных мест. У меня как раз завалялся выходной трансформатор от трехпрограммного приемника «Маяк-202», в котором нашелся подходящий провод.

Кривоногий и хромой трансформатор
Кривоногий и хромой трансформатор

Крепим бумажный цилиндр к центру «тарелочки» и начинаем наматывать катушку (внутрь бумажной основы можно положить магнит, чтобы не смять ее), оставив свободный кусок провода в 15-20 см.

Наматываем катушку
Наматываем катушку

Сопротивление катушки должно быть порядка 8-32 Ом. Я сделал 100 витков, после чего закрепил провод бумажкой с клеем:

Готовая катушка
Готовая катушка

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

Проверяем катушку
Проверяем катушку

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

А кроме того, я уменьшил высоту катушки, срезав лишнюю бумагу
А кроме того, я уменьшил высоту катушки, срезав лишнюю бумагу

Теперь делаем два отверстия для провода в картонке, намазываем клеем магнит и держатели (осторожно — не приклейте магнит к катушке!) и приклеиваем все это на место.

Динамик в сборе
Динамик в сборе

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

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

Про картинки

Некоторые картинки с моего сайта стали медленно расползаться по разнообразным форумам. Это все, конечно, здорово — но у меня ограничен трафик (5 Гб в месяц — это на самом деле очень немного при посещаемости выше 150-200 человек в день), а посетителей на сайт это все не привлекает. В результате «отдача» от «картиночного» трафика — практически нулевая.

Мне лично известно два метода борьбы с «bandwidth theft», как это называют на озабоченом трафиком Западе. Первый — выдача вместо картинок «левого» изображения при «неправильном» HTTP-Referer. Недостаток метода применительно к моему сайту — картинки не будут отображаться в ЖЖшных френдлентах — а это совершенно не нужно.

Второй метод — вставка во все картинки «клейма», или Watermark. Наглядный пример — всем известный фотоархив Life. Для защиты от копирования — очень здорово, а делая watermark на основе адреса сайта — получим еще и какой-то ПЕАР :) Проблема — навязчивый watermark на страницах собственного сайта видеть, честно говоря, не хочется.

Собираюсь совместить эти два метода. Для этого достаточно при проверке Referer перенаправлять не на «фиксированную» страницу, а на PHP-скрипт с параметром, соответствующим запрошенной картинке. Скрипт и будет вставлять заданную надпись, например, вот так:

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

Единственная проблема, которую необходимо как-то решить — кеширование запрашиваемых картинок. А именно, обработка изображений — довольно ресурсоемкая задача (а для шаред хостинга — тем более). Если картинка запрашивается раз в год — то естественно, можно и «поработать». Но при ежеминутных запросах сервер быстренько «отрубится». Сохранять копии всех картинок с ватермарком — тем более бессмысленно, далеко не на все загруженные на мой сайт картинки кто-то ссылается. Видимо, поступать будем аналогично известному плагину для WordPress — сохранять «доработанные» картинки в отдельную директорию, запоминая время создания копии. При очередном запросе будем удалять «старые» сохраненные картинки.

В общем, еще одна простая, но интересная задача по программированию.

Про выпайку разъемов из материнки

Третий пост с упоминанием так называемого «кризиса» за сегодняшний день.

Вчера выпаивал разъемы из дохлой материнки. Две штуки D-SUB 9, D-SUB-25, и еще всякая дрянь, типа USB и mini-DIN (более известных, как PS/2) в период «временных экономических трудностей» на дороге не валяются. Технология простая — греем ногу разъема паяльником до расплавления припоя, а затем убираем расплавленный припой оловоотсосом (такая штука наподобие шприца).

Когда грел очередной контакт, разогретый до 400 градусов (а иначе задолбаешься ждать, пока прогреется шестислойная плата) паяльник соскочил и чиркнул мне по большому пальцу левой руки. Посмотрел на палец — в месте касания паяльника он бледно-желтый с черными «обгоревшими» пятнами. Думаю, все, поджарил палец, хана. Вторая мысль — интересно, боль от ожога совсем не чувствуется. Потер — и «страшный обугленный ожог» мгновенно исчез, им оказался счистившийся об палец нагар с жала паяльника.

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

PLC в доме напротив

То, о чем так долго говорили большевики чего я боялся, свершилось. Кто-то в доме напротив поставил себе PLC-модем «в частном порядке», для организации «домашней локалки».

В итоге КВ полностью загажен булькающими несущими, расположенными через каждые 30 кГц. Это еще полбеды — из-за большого уровня несущих перегружается входной усилитель приемника, и АРУ «зажимает» усиление до минимума. В результате слышны лишь наиболее мощные станции.

Похоже, надо просить у Дедушки Мороза не Degen или «Вегу», а дробовик вместе с лицензией на отстрел особо тупорылых граждан. Или в свете последних новостей про кризис, перебираться в деревню для разведения свиней по методу Паука. Интересно, как будет выглядеть блоггинг, когда единственным окном в мир станет 6660 кГц USB с Зоотехником и прочими свиноводами в эфире?

Кризисное

Сегодня покупал в «Никсе» картридж Canon EP-22. Неприятно удивила цена — в сравнении с мартом прошлого года картридж подорожал на 300 рублей. Видать, в связи с так называемым кризисом.

Кстати, говорят, что «кризис» заметен только в России и Штатах. И, как мне кажется, у нас «кризис» — это только повод к увольнениям, задержкам зарплаты и прочим «оптимизациям расходов». Если кто-то из экономически грамотных камрадов имеет другое мнение — пишите в комменты.

Мега-цоколь

Искал сегодня по всему дому куда-то запрятанную принципиальную схему от электрофона «Арктур-004 стерео». В итоге нашел ее в ящике с разнообразным радиобарахлом. А кроме того, в ящике обнаружилась лампа 6П3С с оригинально сломанным цоколем.

Слева — нормальный ламповый цоколь с пластиковым «ключом» посередине, позволяющим вставить лампу в панельку единственно возможным способом. Справа — цоколь с обломанным ключом. Что удивило — так это то, что вместе с ключом не обломали штенгель («хвостик», возникающий при запайке стеклянной колбы).

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

Ликбез по djvu

Удивляет тотальное незнание народа о замечательном формате djvu (читается déjà vu). Поэтому сегодняшний пост будет посвящен этому замечательному графическому формату. Для начала — немного истории.

Где-то в начале 90-х возникла проблема перевода существующих «бумажных» архивов в электронный вид. Для фирмы AT&T эта проблема стояла еще более остро — за годы работы накопилось огромное количество технической документации, содержащей не только текст, но и рисунки, графики, схемы и формулы. Естественно, никто не стал бы «набивать» все эти данные заново, поэтому в 1996 году был разработан формат djvu специально для эффективного хранения сканированных документов.

Естественно, djvu относится к семейству графических форматов, использующих компрессию с потерями. Но сжатие в djvu намного более эффективно, чем, например, jpeg. Просто приведу числа. Сканированная страница формата A3, при разрешении сканирования 300 точек на дюйм и 24-битном цвете занимает при использовании формата без компрессии около 50 Мб. Сжатием без потерь (вроде ZIP или RAR) удается сократить размер примерно до 30-40 Мб. JPEG при сохранении «читабельности» текста «сожмет» файл до 1 Мб. В djvu эта же страница будет «весить» около 200 Кб. Результат впечатляющий.

Дальше будут картинки, они уменьшены, чтобы не рвать френдленту, полная версия — по щелчку.

Медвед-1892, скан 300 dpi
Медвед-1892, скан 300 dpi

За счет чего достигаются такие выдающиеся показатели? При сжатии в djvu изображение «разбивается» на несколько слоев. Один слой содержит «четко выделяющиеся» элементы изображения, такие как текст и графики — он называется foreground, «передний план», другой — background, «фон». К ним применяются различные алгоритмы сжатия.

Фон от того же медведа
Фон от того же медведа

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

Передний план от медведа
Передний план от медведа

В качестве «переднего плана» программа сжатия выделила некоторые контрастные элементы рисунка. Здесь также применяется сжатие с потерями, но работающее по другому алгоритму. В результате наложения переднего плана на фон получим такую картинку:

Медвед после жестокого djvu-сжатия
Медвед после жестокого djvu-сжатия

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

Сверху - оригинал, снизу - djvu
Сверху - оригинал, снизу - djvu

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

Скан 300 dpi
Скан 300 dpi

Как нетрудно заметить, при наборе текста используется не больше сотни отдельных литер (включим сюда разнообразные умляуты и прочие «радости» некоторых европейских языков). Это обстоятельство было учтено при разработке djvu, и при сжатии текста в этом формате сначала выделяются символы с похожим начертанием, а потом в тех местах, где они встречаются, сохраняется лишь информация об отличиях от «эталонного» начертания. Более того, слой «текста» — монохромный, что позволяет добиться очень высокой степени компрессии.

Текст в djvu
Текст в djvu

К сожалению, тут не обошлось без недостатков. В оригинале имеются довольно сильные дефекты печати, которые оказались «не по зубам» djvu-формату. Но там, где текст достаточно хорош, сжатие позволило даже улучшить читаемость за счет повышения контрастности.

И еще немного сжатого в djvu текста
И еще немного сжатого в djvu текста

Совершенно незаменим формат djvu при сканировании книг со «сложным» текстом, насыщенным формулами или графиками. «Среднюю» книгу, например, по математике — около 500 страниц A5, в djvu можно сжать до 5-10 Мб. 10 Кб на страницу — это очень неплохо. Пожалуй, меньше будет только текст книги в TeX. Качество же — вполне на уровне, можно даже печатать:

Всяческие формулы
Всяческие формулы

Впрочем, и книги по совершенно гуманитарным дисциплинам в этом формате выглядят неплохо. Если нет времени на «вычитку» OCR — то вполне можно воспользоваться djvu, «потомки скажут спасибо». Для сравнения, в PDF со сравнимым качеством двухсотстраничная книга «весит» 27 Мб, а в djvu — всего лишь 5 Мб.

Кстати, в djvu предусмотрен еще один слой, о котором я еще не сказал. Это так называемый OCR-слой, предназначенный для хранения текста. В него можно добавить распознанный «читалкой», например ABBYY Fine Reader, текст. Из djvu-документа с вставленным таким образом текстом можно копировать отдельные части, в нем можно искать какие-то слова — фактически, работать, как с простым текстовым файлом.

В ближайшее время напишу еще один пост, посвященный конкретным программам для работы с djvu. Отдельно уделю внимание созданию djvu-документов.