Vulpo One


Я уже совсем потерян для общества?

image0

#!/usr/bin/ruby

require 'date'

puts "Enter your birthdate (YYYY-MM-DD):"
birth = Date.parse(gets, true)
today = Date.today
age   = today-birth # in days

min_age = (2 * (age - 7 * 365.25)).round
max_age = (age/2 + 7 * 365.25).round

min_birth = Date.today - min_age
max_birth = Date.today - max_age

puts "Your age pool is #{min_birth.to_s} - #{max_birth.to_s}"

puts "You're too young ^__^" if min_birth > max_birth

Comments



Psi Options —> Jabber Roster Utility (XSLT)

Сервер с моим основным аккаунтом лёг. Видимо, наконец решил оправдать своё имя — unstable.nl

Соответственно встал вопрос о переносе контактов на новый сервер. Чем это можно сделать? Конечно же Jabber Roster Utility, чем же еще? Но! JRE сначала должен получить контакты со старого, а сервер-то лежит. Ростер, конечно же, скеширован клиентом, коим у меня является Psi. Но формат-то там неподходящий! Если перебивать ручками, то проще покажется добавить ручками же контакты прямо в клиенте. Не вариант.

Сначала в голову полезла шальная мысль написать парсер, но она была сразу отброшена. Psi хранит настройки в XML, a значит можно поступить проще.

Возьмем нужный нам файл настроек: %psidatadir%/profiles/%profilename%/accounts.xml и применим к нему xslt-стиль. Стиль этот очень прост:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://psi-im.org/options">
    <xsl:output method="text"/>
    <xsl:template match="/accounts/accounts/*">
        Account <xsl:value-of select="jid"/><xsl:apply-templates select="roster-cache"/>
    </xsl:template>
    <xsl:template match="roster-cache/*">
        +,<xsl:value-of select="jid"/>,<xsl:value-of select="name"/>,none,<xsl:value-of select="groups/item"/>
    </xsl:template>
</xsl:stylesheet>

В результате мы получим ростеры всех прописанных туда аккаунтов в формате, который хавает JRE

Account jid@domain.tld
+,elem1@dom1.tld,Element 1,none,Group
+,elem2@dom2.tld,Element 2,none,Group
+,elem3@dom3.tld,Element 3,none,Group 2

Account jid2@domain2.tld
+,elem1@dom1.tld,Element 1,none,
+,elem4@dom4.tld,Element 2,none,

Вуаля, кормим JRE.

Как применить стиль?

Самый простой способ — браузер. Открываем accounts.xml (рекомендую сделать копию и издеваться над ней, а не резать по живому), вписываем первой строкой

<?xml-stylesheet type="text/xsl" href="accounts-xslt.xml"?>

копируем стиль в папку с этим accounts.xml и открываем accounts.xml в браузере.

Если не сработает, удаляем из accounts.xml строку <!DOCTYPE accounts> и элемент xmlns="http://psi-im.org/options"

Знаю, что не по фэн-шую, но мне почему-то помогло.

Скачать стиль: accounts-xslt.xml

Comments


И коротко о XSLT и браузерах

Работает везде, кроме Arora (если точнее, виноват сам QtWebkit)

Ахда, в любых XML документах нельзя указывать DTD, иначе Internet Explorer пойдет по указанному адресу его скачать. Всё бы ничего, но он этим ddos-ит www.w3.org, поэтому там забанен. А значит, он просто вместо документа покажет ошибку

Comments


XSLT и поисковики

Провел давно обещаное исследование о том как сайты на основе XSLT индексируются поисковиками.

Проверялось на примере avalon.com.ru

  1. Google

    Индексирует, игнорируя стили. Отчасти даже лучше — оформление не попадает в индекс и не мешается при поиске, но для полноты индексации надо делать sitemap.

  2. Yahoo!

    Применяет стиль и индексирует результат. Вах! То, что надо.

  3. Yandex, Rambler, Aport, Microsoft Bing, Baidu**

    Никак. Стыд и позор!

Что ж… к сожалению, такой технически удачный подход к созданию сайтов слегка нежизнеспособен.

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

Comments


Маленькое исследование HTML5 Multimedia

А точнее, поддержка элементов audio и video в современных браузерах.

Для проверки были сделаны 2 странички и использованы 4 мультимедиа файла в форматах mp3, ogg vorbis, ogg theora, x264/mp4

Итак… на сегодняшний день audio и video поддерживают:

  • Mozilla Firefox 3.5 RC (Windows, Linux) — скорее всего станет первым стабильным браузером с этой фичей
  • Mozilla SeaMonkey 2.0b1 (Windows, Linux) — ну… логично
  • Arora 0.7.1 (Linux). Виндовая почему-то не хочет…
  • Google Chrome 3.0 (Windows) — тоже пока еще development branch. Единственный конкурент Мозиллы на право первенства. Версия же под Linux пока вообще ничего не умеет

MSIE как всегда в пролете. Opera в мейнстрим пока свои наработки пускать не хочет. Safari вопреки слухам тоже пока поддержкой не обзавелся. (возможно, слухи были про MacOS)

Поддержка форматов
Где указаны 2 формата, было использовано несколько источников для элемента (см. код под катом)
 MozillaAroraChrome
mp3
ogg
mp3, oggogg
ogg
ogg, mp3ogg
ogg
mp4 (h264)
ogv (theora)
mp4, ogvogv
mp4
ogv, mp4ogv
ogv

Google Chrome понял формат mpeg, но всё равно предпочел ogv в обоих случаях независимо от порядка указания. Он просто хочет audio/mp4 в качестве MIME-типа. Подправил код и Хром сразу стал вести себя логичнее.

Arora почему-то не поняла множественные источники.

Код страничек (под катом):

Continue readingComments


SemiGreen for phpBB

semigreen

В рамках операции “смена деятельности чтоб не сдохнуть” подкорректировал и обновил шкурку SemiGreen для phpBB от товарища Semi Deus, который забросил ее в районе версии для phpBB 3.0.0

Половину шаблона выкинул — теперь используется наследование из prosilver, так проще стало поддерживать тему в актуальном состоянии. Убрал ужасное чередование цветов в просмотре тем форума и сообщений темы. К сожалению, немного попортил заголовки таблицы. Переименовал тему в SemiGreen CA. Отчасти, потому что моя редакция, пусть и немного было работы, отчасти потому, что ее нельзя скопировать поверх старой — необходимо удалять и ставить заново, иначе не подхватит механизм наследования (появился в phpBB 3.0.3)

Скачать можно с моего сайта UPD: уже нельзя :(

Comments


Бессмысленный и беспощадный

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

https://ithappens.me/story/825

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

https://ithappens.me/story/832

Индусы отдыхают. Мне страшно >__< Зато стало понятно, почему из олимпиадников и лаборантов редко получаются хорошие программеры.

Comments


BrowserShots

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

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

Comments