ЖЖ от 2007-12-02 22:07:00

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

Это, конечно же, моё частное мнение.

3 комментария

Ошибка 80108351 в PSP

Если у вас возникает внутренняя ошибка 80108351 (internal error 80108351) при попытке установить PTF-тему в PSP, сделайте так (рецепт для custom-прошивок):

  • Отключаем плагин IR Shell (если он есть)
  • Вынимаем диск из UMD-дисковода (если он там есть)
  • в Recovery выбираем Advanced -> Format flash1 and reset settings
  • восстанавливаем стандартную конфигурацию PSP
    У меня сработало. Наконец-то могу поставить что-то другое, кроме стандартного оформления. Рецент был найден на форуме PSPx.ru.

Оставить комментарий

02.12.2007

Рабочий стол Windows с иконками: Компьютер, Сеть, Корзина, AIMP2, Opera 9, Личник, WebMoney Keeper, Skype; в панели задач открыты Gmail, Firefox, Microsoft Word; время 12:31.
Этот скриншот я делал для проекта «Скринштов.Нет», где выкладывались скриншоты рабочих столов пользователей интернета

Оставить комментарий

Упячка

Упячка (25.82КиБ)

DiBR обнаружил упячку в IKEA! Если вы не в курсе что такое «упячка», то можно, например, начать знакомство со статьи «Упячка и семантическая смерть».

Судя по всему, это чья-то шутка. Я посмотрел статью «Правила чтения в шведском языке» (файл Word, 16 килобайт) Ирины Кемайкиной, слово «Uppäcka» должно читать примерно как «Ыппэкка», где двойные «п» и «к» обозначают долгий звук.

10 комментариев

[LJ2ME] Подписка на комментарии

Долго думал как лучше сделать подписку на комментарии на сайте. Очевидный способ — подписка через электронную почту мне не нравится. У меня на сайте нет собственной системы авторизации, а умеющих отдавать адрес почты OpenID пока ещё очень мало.

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

У кого-нибудь есть предложения по этому вопросу?

15 комментариев

Сжатие картинок

Вчера попробовал натравить инструменты для оптимизации картинок на свой каталог с картинками этого блога. Результат следующий: выигрыш составил около 10 процентов (больше всего у меня JPEG-файлов). Немного, но и не мало в некоторых ситуациях. Я использовал только утилиты для командной строки.

PNG. Для сжатия PNG использовался известнейший pngcrush. Интересен в режиме «brute force» (перебора), где перебираются комбинации фильтров (фильтры — это специализированные методы сжатия, например, для градиента и т. д.). Я запускал сделующим образом: «pngcrush -brute -fix -e .png1 *.png». В итоге, все файлы png у меня в папке получают свою оптимизированную копию с расширением png1. Есть опасный момент — если у вас есть файлы APNG, pngcrush их превратит в файл без анимации. Экономия получилась порядка 7%.

JPEG. В JPEG’e особо оптимизировать нечего, формат сжатия с потерями, поэтому оптимизацию без участия человека не произвести — трудно просчитать насколько критично изменился рисунок. Оптимизировать тут нечего, но можно убрать мусор — многие программы записывают в файл комментарии, лишнюю информацию. Я использовал для чистки PureJPEG, после него прошёлся своим Photoshop Crap Remover, чтобы дочистить файл. Формат запуска PureJPEG следующий: «dir /B /S /A-D *.jpg | purejpeg», в итоге все файлы с расширением jpg будут вычищены. Моя утилита написана на PHP, так что я даже не буду упоминать как её запустить — кому надо разберётся, остальным объяснить очень трудно. Экономия — около 10%.

GIF. Несмотря на то, что утилите GIFLite уже около 12 лет, мне она кажется лидером по переупаковке GIF. Утилита написана White River Software, её разработка начата ещё в 1992 году и она рабоатет под DOS, т. е. должна запускаться даже в Linux из-под какого-нибудь DOSEmu. Утилита платная, но кому платить уже непонятно — никаких координат этой фирмы в сети нет. Поэтому ищем любой ключ, запускаем giflite с ключём /R и «регистрируемся».

Запускать её сложнее, чем предыдущие — в 1992-м году длинных имён не было, да и перебирать свои методы она не умеет. Поэтому я написал небольшую batch-программу. Она проходит по всем GIF-файлам в папке, применяет на каждый один из четырёх методов (видимо выбирается какая-то стратегия для выбора словаря в LZW-сжатии), после чего выбирает файл с наименьшим размером. Экономия составила около 8%.

giflite.cmd — внутри по ссылке
giflite.cmd:

@ECHO OFF
REM Написал Евгений «BOLK» Степанищев. 2007.

MKDIR GIFLITE.$$$ 2>nul

REM Основной цикл обработки файлов GIF
FOR /R %%N IN (*.gif) DO @CALL :method %%N

REM Удаляем весь мусор, который мог остаться
DEL /Q giflite.tmp 2>nul
RMDIR /S /Q GIFLITE.$$$
EXIT

:method
REM Перебираем методы
FOR %%M IN (0 1 2 3) DO @CALL :giflite %%M %%~s1 %1

REM Сортируем полученное по размеру и забираем последний (наименьший) файл
FOR /F "usebackq skip=3" %%R IN (`DIR /B /O-S GIFLITE.$$$`) DO @CALL :getresult %%R %1
GOTO :EOF

:getresult
REM Переписываем файл на место прежнего, удаляем мусор
MOVE /Y GIFLITE.$$$%1 %2
DEL /Q GIFLITE.$$$*.*
GOTO :EOF

:giflite
REM Запускаем преобразование
GIFLITE.EXE -t -h -m%1 -o %2 GIFLITE.$$$%1 >nul 2>nul

12 комментариев

ИзнаСИлование программного кода

Видели когда-нибудь нижепроцитированное? Веб-сервер Apache на домашней машине сегодня порадовал при попытке скачать на вторую машину фильм в 3.9 гигабайта (обратите внимание на «content-length»). Корень проблемы ясен — какому-то программисту зачем-то понадобилось использовать знаковый integer для поля длины файла, соответственно всё, что больше двух гигабайт становится отрицательной длины. Чуть попозже попробую присоединить к этому файлу ещё мегабат двести и посмотреть как лопнет мозг у Apache при попытке засунуть это значение в 32 бита.

HTTP/1.1 200 OK
Date: Thu, 29 Nov 2007 18:04:09 GMT
Server: Apache/1.3.33 (Win32) PHP/5.2.0-dev
Last-Modified: Thu, 21 Jun 2007 11:27:00 GMT
ETag: "0-f702ceea-467a6084"
Accept-Ranges: bytes
Content-Length: -150810902
Connection: close
Content-Type: video/x-msvideo

Попробовал. Файл 4171 мегабайт Apache 1.3.33 показал как 74-х мегабайтный.

8 комментариев

«Ты суслика видишь? — Нет. — И я нет. А он есть!» (фильм «ДМБ»)

До протокола HTTP, известного любому, кто бывает в интернете (для чайников — посмотрите в строку браузера, видите там «http://»?), в интернете был протокол «gopher» (с английского «суслик»). Протокол был широко распространён до изобретения World Wide Web, занимал 70-й порт и был больше похож на FTP — файловая структура с папками и документами, поддерживался тип документа (но куда более простенько, чем MIME-типы в HTTP), в том числе HTML и даже поисковые запросы.

Протокол придумала целая команда авторов  — Mark McCahill, Farhad Anklesaria, Paul Lindner, Dan Torrey и Bob Alberti из университета Минесоты в 1991-м году и теперь он медленно умирает на каких-то блогами забытых серверах в дальних, тёмных уголках интернета.

Сейчас в интернете насчитывается около 100 gopher-серверов. Если у вас FireFox или Lynx, то можете попытаться зайти на один из последних серверов этого типа. Konqueror поддерживает протокол лишь частично, Safari и Opera не поддерживают (точнее, «Опера» требует использование специального прокси), в Internet Explorer поддержка отключена ещё в июле 2002-го. Как не странно, поклонники протокола существуют до сих пор. Есть протокол расширения Gopher+ и основанный на нём трёхмерный GopherVR.

10 комментариев

Минздрав предупреждает!

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

Пока ты находишься в табачном плену, сосед-спортсмен еб… твою жену (48.42КиБ)

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

15 комментариев

Это у американцев странные законы?

Нашёл на блоге «HeavyWave» ссылку на статью в «BBC Russian» «Саудовская Аравия: 200 розг жертве насилия». Выдержка:

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

Мужчина оказался приятелем девушки. Однако совсем не он выступил в роли насильника.

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

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

Их жертвам тоже определили наказание — по 90 ударов плетьми каждому за «незаконные отношения».

Однако потом суд решил ужесточить действия в отношении 19-летней девушки и увеличил количество ударов плетьми до 200, а также назначил ей тюремное заключение сроком на полгода.

Адвоката, вызвавшегося защищать девушку, не допустили в зал суда, а затем и вовсе лишили лицензии на адвокатскую деятельность.

5 комментариев

Транскриптор

Как-то упустил на сайте студии Лебедева прекрасный инструмент — «транскриптор». Обычно, если я встречаю в тексте на иностранных сайтах имя, фамилию, незнакомое название, я не беру на себя ответственность за транскрибированние этих слов (т. е. запись их на русском с приблизительным сохранением звучания), пишу как есть, тем более, откуда мне знать как, к примеру, на чешском звучат «Jůza» или «Třeblický».

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

5 комментариев

«Очистка» плавающих блоков

В блоге «Life Style» полезная статья «„Очистка“ плавающих блоков». Новое решение старой проблемы — плавающие блоки не растягивают внешний контейнер, которая обычно решается добавлением дополнительного элемента с «clear: both». Вкратце, рецепт выглядит следующим способом, но рекомендую взглянуть и на полную статью:

div.container {
    overflow: auto;
    width: 100%
}

В комментариях подсказали ссылку на первоисточник: http://www.quirksmode.org/css/clearing.html.

2 комментария

Генсек (general sexual)

Дарю два новых свежепридуманных слова: «гетеросятина» и «гетеросек».

5 комментариев

Размер имеет значение

Мне тут подумалось, что мониторы 16:9 удачный ход для производителей мониторов — на прилавке чисто визуально кажется, что wide-мониторы (16:9) имеют большую площадь по сравнению с «традиционными» (4:3) при той же диагонали. Много раз видел в глазах недоверие, когда сообщал людям, что дела обстоят ровно наоборот. Попробуем подсчитать?

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

4 * x * 3 * x = S4:3 16 * x * 9 * x = S16:9

или

12 * x² = S4:3 144 * x² = S16:9

Теперь осталось найти величину «x». Расчитать её просто по теореме Пифагора (сумма квадратов катетов равна квадрату гипотенузы, если кто позабыл что это такое):

(4x)² + (3x)² = D²4:3 (16x)² + (9x)² = D²16:9

Для определённости можно взять диагональ 20 дюймов. Попробуем найти «x» и подсчитать площади:

x² = 20² / (4² + 3²) ; S4:3 = 12 * (400 / 25) ; S4:3 = 192 x² = 20² / (16² + 9²) ; S16:9 = 144 * (400 / 337) ; S16:9 = 171

Вывод: монитор 4:3 с диагональю 20′′ больше монитора 16:9 с той же диагональю на 21 дюйм² (на 135 см²).

18 комментариев

I see a fire in the hole

Наверное многие видели в американских фильмах как Крутые Парни на боевых операциях подают друг другу определённые знаки. Многие из них понятны, но есть и очень специфические вещи, которые понять трудно. В интернете есть замечательная страничка «Standardized Hand Signals For Close Range Engagement (C.R.E.) Operations», где на картинках всё прекрасно понятно. Язык английский, но на уровне первого класса.

Сигнал «снайпер» (14.56КиБ)

Например, на рисунке выше солдат показывает сигнал «снайпер».

3 комментария

Великарусский англицкий

Смешно, но некоторые новые сленговые слова, которые употребляют программисты и люди, приближенные к компьютеру, были когда-то в русском языке. Конечно, это были не те же самые слова, а просто звучат так же. Итак, моё исследование словаря Даля (особенно мне нравится, что в словосочетании «грязных хак» есть правда):

ЛОЧИТЬ (от «to lock», «лочить файл») что, влад. вят. (лочу; лочет и локчет) лакать. Собака лочет, локчет или лакает. Лоча ж. бурда, помои, поганое или дурное питье, похлебка. Лочкан м. лочканье собират. перм. татарин, татарва, бусурмане. Лочича? растен. Lampsana communis, бородавник, бородавница, бересква.

АСЕЧКА (ICQ), аська ж. перм. шапка без ушей, с круглым верхом.

БРИК (от искажённого «to break», точка останова при отладке) м. двухмачтовое мореходное судно, военное или купеческое, близко подходящее к корвету (трехмачтовому); купеческий бриг от 150 до 300 тонн. Бриговый, бричный, относящийся ко бригам, им свойственный.

ХАК (от «to hack», например, «сделать хак») м. и хаки мн. астрах. персидск. соляные грязи.

ФРЯ (одно из названий freeBSD) несклон. ж. укорно: важная особа. Эка фря! ты что за фря такая? Фрякаться вят. подымать нос, зазнаваться, важничать собою. Фрякать кем? тул.-каш. кланяться, поклонничать, просить? Я вами не фрякаю, не нуждаюсь в вас.

КРЯК (от «to crack», например, «найти кряк к программе») м. лягушачья икра, клек, вакотье, норост.

ПАЧИТЬ (от «to patch», производный глагол от «пачт» или (более редкий вариант) «пач») или пачиться, твер. прислуживать, прислуживаться кому и хлопотать. Не пачте, — сь, не беспокойтесь, не трудитесь.

РАСШАРИВАТЬ (от «to share», «расшарить папку») , расшарить что, шаря раскидать, разбросать. -ся, быть расшарену.

БУТ (от «boot», загрузочная область диска) м. ниж.-арз. слепень, овод (бутускать? или будить, будоражить?)

ТАСК (от «task», задача), буксир. Взять судно в таск.

ЛАГ (от «to lag», задержка от нехватки ресурсов компьютера или сети в играх) м. морск. одна сторона, бок корабля, относительно к пушкам.

БАЖИТЬ (от «bug», «бажить» — работать с ошибками) вологодск. перм. новг. яросл. ниж., бажить яросл. вят., бажанить новг. желать, хотеть чего, сильно и прихотливо просить, как больной или ребенок; жаждать, алкать чего.

ХОСТ («host», сервер в интернете) арх.-мез. Идти в хост, идти на промысел, за морским зверем, по плавучему льду.

КАТ (от «to cut», «убирать под кат») м. южн. зап. палач или заплечный мастер.

СКРИН (от «screen», экран компьютера) м. скринка ж. скриночка, стар. скрыня южн. малорос. (от скрыть, крышка?) укладка, сундук, коробья, коробейка; ларец.

СКИПАТЬСЯ (от «to skip», «текст поскипался», «ну, я скипнул») скипеться, твердеть кипением, становиться комом.

МОНЯ (от «monitor», не столько распространённое как «моник» название монитора) ж. кур. твер. брюхо, чрево, пузо, желудок.

БАНИТЬ (от «to ban», лишать доступа куда-либо) что, стар. южн. зап. мыть, чистить водою.

БОТ (программа, иммитирующая действия человека) м. оренб. перм. и др. ботало, шест с поперечною дощечкою, брусочком, для ботания, сгонки рыбы, особенно форели, пеструшки, хариусов, в речушках.

ДЕМА (от «demonstration», демонстрационная версия программы), демка? об. твер. обманщик, плут.

НИК (от «nickname», псевдоним) м.затылок, загривок, задняя сторона шеи.

КУКА (от «cookie», специальные файлы данных браузера) ж. кулак, сжатая ладонь.

ЛАН (от «LAN», локальная сеть) м. южн. вор. тул. поле, нива, пашня; большая засеянная полоса, около десятка десятин

В скобках мои добавления — какой термин я имею ввиду. Дополнения приветствуются.

13 комментариев

Непрозрачное поведение Gecko

У Данила Иванова в блоге нашёл упоминание о том как лечить некорректное поведение браузеров на базе Gecko (FireFox, Camino, Flock, Seamonkey и так далее) при смене CSS-свойства «opacity»:

Время от времени сталкиваюсь с бажным поведением Gecko при смене opacity. То блок не туда встанет, то скролл обнулится. Хозяйке на заметку: помогает opacity:.99

Ни разу не сталкивался, но знать о таких вещах полезно.

Оставить комментарий

Анимация в вебе

Как известно, единственный формат анимированных картинок, который был доступен в вебе до недавнего времени — Animated GIF. Его недостатки общеизвестны — поддерживается только 256 цветов, нет полупрозрачности (альфа-канала). На смену GIF, теоритически, должен прийти более совершенный PNG, с выходом Internet Explorer 7, который стал поддерживать альфа-канал почти так же хорошо, как его младшие братья, ситуация всё улучшается, но…

В PNG, увы, нет анимации. Три новых формата, которые пока знакомы редкому веб-мастеру — APNG, MNG и SVG позволяют, в какой-то степени, исправить это досадное упущение.

MNG (Multiple-image Network Graphics) в данный момент поддерживается без плагинов в Konqueror и Netscape 6 и выше. Формат похож на PNG, но использует больше типов данных. Фрейм, используемый в анимации, может сохраняться в форматах PNG или JNG (JPEG Network Graphics, по сути — JPEG с прозрачностью).

Анимированный PNG (10.98КиБ)

APNG (Animated PNG) — формат расширяющий PNG и совместимый сверху вниз. Если ваш браузер не поддерживает APNG, вы увидите просто статичную картинку. В настоящее время формат поддерживают Opera 9.50 и далёкий пока от релиза FireFox 3. Картинка выше этого абзаца — тест, поддерживает ли ваш браузер APNG. Если вы видите «Your browser does support Animated PNG», значит поддержка есть.

SVG (Scalable Vector Graphics) — относительно молодой векторный формат, который поддерживают достаточно много браузеров: Opera с восьмой версии, Safari 3 и выше, FireFox с версии 1.5, а так же все браузеры на движке Gecko, начиная с версии 1.8. Это XML формат, который для меньшего размера можно сжать алгоритмом GZip (формат SVGZ). Обычно, анимацию в SVG делают при помощи внедрённого туда EMCAScript, сменяя кадры из картинок в любом другом формате. Не совсем то, но поддерживается почти любым современным браузером, хотя в стандарте SVG есть собственные методы анимации, по этой теме можно почитать статью на несложном английском «Advanced SVG Animation Techniques».

2 комментария

ЖЖ от 2007-11-21 17:20:00

Время от времени пересекаюсь с гражданами, которые (в XXI веке!) упорно считают, что им принадлежит место, в границах которого они родились. Причём граница их «владений» у них совпадает с границей их двора/города/страны, в зависимости от того, с кем им нужно дистанцироваться. И что ещё интересно — граница не фиксируется на момент их рождения, она… ползёт. Изменяется граница города или страны — изменяется и то, что они считают «своим местом», даже если они пальцем не пошевилили, чтобы граница подвинулась.

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

17 комментариев

Собаку съел, а хвост отдал врагу

Как наверное многим известно, некоторые народные пословицы со временем редуцировались, а их исходный смысл многих совершенно потерялся. Из таких примеров я помню только «собаку съел (хвостом подавился)». Решил посмотреть какие ещё примеры такой народной забывчивости существуют. В качестве источника взял книгу Эдуарда Вартаньяна «Путешествие в слово» и то немногое, что удалось найти в Яндексе.

  • чудеса в решете (дыр много, а вылезти некуда)
  • в ступе воду толочь (вода будет)
  • голод не тетка (пирожка не подсунет)
  • собака на сене (лежит, сама не ест и скотине не дает)
  • не все коту масленица (будет и великий пост)
  • собаку съел (только хвостом подавился)
  • палка, о двух концах (туда и сюда бьет)
  • бабушка (гадала, да) надвое сказала (то ли будет, то ли нет, то ли дождик, то ли снег)
  • славны бубны за горами (а к нам придут, что лукошко)
  • новая метла (чисто метёт)
  • пьяному море по колено (а лужа по уши)
  • мокрая курица (а тоже петушится)
  • пожалел волк кобылу (оставил хвот да гриву)
  • (от овса кони не рыщут) от добра добра не ищут
  • игла в стог сена (упала пиши пропало)
  • (менять ухо на ухо) баш на баш (без придачи)
    Дополнение от читателей:
  • смех смехом (а шутка на сторону)
  • с миру по нитке (нищему рубаха, с бору по сосенке — мёртвому кафтан)
  • слово серебро, а молчание золото (если лоб медный)
  • курочка по зёрнышку клюёт (а весь двор обо…ран)
  • за одного битого двух не битых дают (да и то не берут)

7 комментариев