Порядок модулей-расширений при загрузке php

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

Порядок указания расширений в  файле extensions.ini имеет значение!

Не вдаваясь в подробности, должно быть так (лучше всего ставить в конец файла):

extension=recode.so
extension=mysql.so
extension=imap.so
extension=sockets.so
extension=pspell.so

Вывоз барабанов

Сегодня в почту пришло феерическое (не спам!). Цитирую без купюр:

По многолетнему опыту работы нашей компании мы знаем, с какими трудностями сталкиваются клиенты, чтобы утилизировать старые барабаны. Идя навстречу нашим заказчикам, мы предлагаем новую дополнительную услугу -вывоз барабанов.
Вам более не придется искать способ избавиться от барабанов — мы возьмем это на себя. Данная акция ставит перед собой следующие цели:
-это удобно и выгодно Вам;
-объемы заказов постоянно увеличиваются и часть средств в состоянии направить на эту услугу.
Узнавайте подробности у наших менеджеров.
Тел/факс: (495) 487-54-33

На мой взгляд — это прекрасно! 🙂 Неподготовленный человек «не в теме» если вчитается — будет в шоке. 🙂

С другой стороны, на мой личный взгляд, народ пытается заработать на спичках. С барабанами все всегда работают в том же режиме, что с бутылками воды для офисных кулеров: обмениваясь каждый следующий раз. Да и вообще, лично мне всегда мешались только 14-е барабаны — они много места занимают и без спец.техники неудобны в работе. А вот 12-е в хозяйстве всегда пригодятся. 🙂 Да и выкинуть их в обычный контейнер можно…

Причуды прогресса

В HTML-элементе LI есть простое как два пальца свойство «value», которое просто и ненавязчиво позволяет установить номер элемента в нумерованном списке. Работает с любыми типами нумераций (например, с римскими числами тоже), ненапряжно устанавливается через JavaScript ( <элемент>.value=»10″ без каких-либо ухищрений), не создавая большого overhead’а и не сильно загрязняя код позволяет легко оперировать нумерацией, так как следующий элемент после того, которому мы установили value продолжает нумерацию от него (т.е. если в value поставили «5», то у следующего LI даже без установленного value сразу будет номер «6» и не важно, что было у предыдущих)… Одним словом — хорошее и полезное свойство, не вызывающее никаких спорных вопросов и, с моей точки зрения, не создающее проблем с точки зрения семантики.

Однако де, W3C решил несколько иначе и с HTML 4, а также во всех XHTML это свойство осуждается и валидный код можно получить только установив DOCTYPE в Transitional. Казалось бы — ну по любому, умные дяди решили так не зря и нам предлагают что-то более удобное, простое или хотя бы — более функциональное. Однако же, нам предлагают концепцию «CSS Counters«, которая, если в тезисах, состоит в следующем:

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

    ol {
    counter-reset: section; /* Set the section counter to 0 */
    list-style-type: none;
    }

  • Значения этих переменных локальны для каждого списка (!!!).
  • Изменять значения этих переменных можно опять же либо через CSS-команду counter-reset, указывая конкретное значение, либо через counter-increment, чтобы увеличить его (например, на каждом пункте списка):

    li {
    counter-increment: section; /* Increments only this instance of the section counter */
    }

  • Вставка непосредственно номеров элементов осуществляется через генерацию контента процедурами counters() и counter() в свойстве content в псевдоклассах :before и :after, например:

    li:before {
    content: counters(section, ".") " "; /* Adds the value of all instances of the section counter separated by a ".". */
    }

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

<li style="counter-reset: my-counter 5;">

вместо

<li value="5">

При этом простое и семантичное свойство заменяется набором из костылей - каких-то процедур, вставкой контента, переменных, - которые добавили в CSS, предназначенный изначально тупо для оформления! И черт с ними с несовместимостями и т.п. - мне вполне достаточно, что созданный в :after и :before контент пользователь не сможет выделить и скопировать. И дело не в недостатках before/after - если на них делать то, для чего они и предназначены (например, уголки круглые навешивать на блоки), то таких проблем и не возникает. А вот если пытаться чесать ухо рукой пропущенной под коленкой...

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

Сам себе режиссер

Два тезиса: Россия — парадоксальная страна, и: что русскому хорошо, то немцу — смерть. Во всем цивилизованном мире идет последовательная борьба правительств за последовательное расширение сферы действия «большого брата»: всяческую установку разнообразных камер в хитрых местах и прочие варианты слежки за гражданами. Граждане, в свою очередь, пытаются бороться против этого, прессуют то правительства, обвиняя в том, что толку от камер никакого (в плане борьбы с преступлениями), а вот слежка — имеет место быть; то тот же Гугл — заставляя его замазывать лица на снимках в Google Maps и т.п.

В нашей же стране — все с точностью до наоборот. Большинство сознательных граждан активно ратует за массовые установки камер ДПС для автоматизации выписки штрафов — чтобы все было четко и не создавались «поводы для общения» с сотрудниками ДПС. Государство камеры вроде ставит, но — не включает, т.к. неизвестно, кто из VIP’ов может под эти самые камеры попасть вместе с остальными обычными гражданами… 🙂 Те же обычные граждане уже осознали и открыто пропагандируют друг другу, что всегда нужно иметь с собой видео-камеру или хотя бы стараться находиться в зоне видимости каких-нибудь стационарных: ведь только видеозапись становится реальным аргументом в споре с чиновниками и прочими VIP’ами, ежели они с этим обычным человеком совершат какой-либо акт насилия или иной не вполне добропорядочный. 🙂 Более того, постоянно слышатся высказывания, что, мол, если бы скандального Евсюкова не засняли камеры в магазине — то по любому его бы отмазали… И так далее.

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

Однако, вся эта ситуация расстраивает меня абсолютно с иных позиций, нежели тех демократических товарищей, которые хнычут в блогах и форумах об ограничении их свободы снимать что угодно и где угодно. 🙂 Расстраивает меня то, что на поверхности оказывается очередной факт, демонстрирующий если и не полное отсутствие, то как минимум неэффективность так рьяно создаваемой у нас имперской вертикали власти. Ведь по сути имеет место быть отнюдь не вертикаль, а все продолжающаяся с 90-х анархия, в которой чиновникам и прочим VIP’ам очень легко и удобно существовать. Раньше я был готов согласиться с теми, кто ставил в заслугу политическому руководству страны после 2000-х годов — наведение порядка (в т.ч. в регионах) и выстраивание какой-никакой системы управления. Сейчас же я вижу, что принципиально ничего не изменилось, только одни «смотрящие» заменились другими — как это гениально, в частности, описал Пелевин в «Числах». Так вот, повторяю, это очень печально. Получается, что те, кто сейчас пытаются бороться с произволом власти, должны сначала эту полноценную власть создать, чтобы было с чем бороться. Или же другими словами, демократические призывы, парадоксальным образом, сводятся как раз к тому, что чтобы было меньше произвола и коррупции в имеющейся вертикали власти — надо таки эту самую вертикаль власти все же построить. 🙂

Интерфейс/middleware для IPTV-приставки D-Link DIB-120

Update -> https://skylord.ru/2010/07/19/interfejs-dlya-iptv-stb-d-link-dib-120-s-onlajn-servisom/

Интерес провайдеров к IPTV какой-то сезонный. Был в начале осени 2009, потом все пропали. Потом в районе Нового Года и снова все пропали. И вот сейчас за последние пару недель опять очень многие обращаются по этому вопросу. В этой связи немного систематизирую информацию, чтобы можно было давать сразу ссылку всем заинтересованным. Итак.

1) Видео и описание некоторых функций интерфейса тут: https://skylord.ru/2009/07/18/interfejs-dlya-prosmotra-iptv-kanalov-na-d-link-dib-120/

2) Он позволяет смотреть на приставке каналы, которые транслируются по сети мультикастом. RAW UDP multicast. Приставка не поддерживает http и иные способы доставки. Поддерживает RTSP, но это для VoD и поддержка достаточно косячная.

3) Интерфейс [пока] не претендует на большее, чем показано на приведенном выше видео. Планов — очень много, но времени на их реализацию пока нет. 🙁 Как только будет что-то новое — напишу об этом.

4) Стандартные коммерческие условия приведены тут: http://tinfocom.ru/page/resheniya-iptv. Я открыт для любых альтернативных предложений, готов обсуждать любые варианты и т.п. Вариант полной покупки исходников тоже возможен, но подумайте — зачем они вам нужны? Если вы имеете опыт разработки на JavaScript и работы с embedded — то вы такой же наклепаете и сами. Но это не так просто — иначе бы Нетрис не брал бы с людей такие деньги за свои решения. 🙂

5) Чтобы протестировать интерфейс в реале — присылайте на me@skylord.ru список каналов и ваши внешние IP-подсети.

6) Лучше не звоните мне по телефону, а пишите в почту или в указанные в контактах ICQ/Skype. По телефону эти вещи неудобно обсуждать…

Stable — это вам не current!

В портах FreeBSD дефолтную версию php проапгрейдили до 5.3.2 — http://forums.freebsd.org/showthread.php?t=13149

Что это значит? Значит, уже можно думать о переходе на 5.3 — раз уж в FreeBSD сочли возможным не делать отдельный порт, а проапгрейдить имеющийся… Стоит дождаться обновления всяких связанных проектов и где-то через месяцок вполне себе употреблять. Там же, кстати, и php-fpm подтянется или кто-нибудь порт для него более-менее адекватный сделает… Опять же, APC уже есть, eAccelerator почти тоже, а все остальное можно и руками будет поправить, ежели чего…

В общем, уже потираю руки в ожидании того, когда буду собирать себе свежий сервер под хостинг с FreeBSD 8 и всем самым свежим без разного decrecated и прочего старья. 🙂

Корректные «чистые» URL на nginx для Drupal

Запишу, чтобы самому же не забыть в следующий раз. Почти все конфиги для поддержки «чистых» URL в nginx для адекватной работы Drupal — неправильные. Точнее, в некоторых старых этот момент учтен (которые через «if (!-e $request_filename)» и т.п. сделаны), а в новых — красивых и цивильных — нет. В частности — в том, который в FAQ самого nginx дается. Корень зла в том, что Друпалу в запросе передается URI целиком вместе с первым слэшем, а это — неправильно. Т.е. надо передавать не q=/node/1, а q=node/1. Самое печальное, что в .htaccess по умолчанию, который идет в комплекте, правила тоже неправильные: «RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]» вместо «RewriteRule ^/(.*)$ index.php?q=$1 [L,QSA]». При этом все работает нормально, а косяки вылезают, например, при создании мультиязычного сайта — на всех языках, кроме default ничего не открывается — page not found.

Соответственно, достаточно вставить маленький rewrite в location @drupal в описании сервера для nginx’а:

rewrite        ^/(.*)$          $1  break;
fastcgi_param  QUERY_STRING     q=$uri&$args;

И все тут же становится хорошо…

То ли DDoS, то ли спам…

Уже второй день валят кучи спама на адреса в этом домене. Валят достаточно по-умному: по куче коннектов в секунду, но с разных адресов, а после отлупа — ждут около 30 секунд и только потом соединяются с этого же адреса. Можно было бы подумать, что спам, но идет на совершенно идиотские адреса, тоннами, только на этот домен и совершенно тупо — отрубается уже на уровне проверки домена отправителя в HELO и т.п. Так что наверное все-таки DDoS… Но зачем? Странно как-то…
Заметил поздно, а до того мой несчастный хилый VDS тормозил и страдал. Теперь заблочил около 3 тыс. адресов ботнета и думаю — чего теперь делать. Глупость какая-то…

Чувство Родины

Копаясь в фотках нашел прекрасное:

Сделано около трех лет назад уж не помню точно где. Главное, разумеется, не текст объявления, а то, что пара «квиточков» с него кем-то оторваны — значит не оскуднела пока земля русская на молодежь, имеющую чувство Родины… И это замечательно! 🙂

Все там будем

Куда катится мир? Сегодня утром по Вестям24 видел страницу из Луркоморья — когда про Эдуарда Хиля рассказывали. Что дальше? bash.org.ru уже был? Или Лепра? Хотя на нее, наверное, у ВГТРК инвайта нет. 😉