All streams
Search
Write a publication
Pull to refresh
12
0
Сергей Колосов @m17

User

Send message
Не смотря на то что в документации указана вот такая сигнатура метода:

void postMessage(<DOMString> data)

на самом деле можно передавать объект, а не строку, и поэтому вместо изобретения своего текстового протокола, можно писать что-то вроде:

// injected script
opera.extension.postMessage({
    topic: 'GetContentLength',
    data: uri
});

// background script
function onMessage(event) {
    var message = event.data;
    if (message.topic === 'GetContentLength') {
       var uri = message.data;
       getContentLength(uri, event);
    }
}

Уже давненько принимаю контрастный душ. И до сих пор каждый раз это доставляет ощущении эйфории, а порой и неконтролируемый смех :-) Такие дела.
Добавлю, что вижу проблему Zend Framework не в самом ZF, а в PHP. К сожалению, для ZF ещё не случилось The Great Decoupling, тем не менее, приближаясь к ZF2, он становится заметно стройнее и логичнее.

А вообще, если бы у разработчиков ZF был Ruby, то они бы написали Rails.
Спасибо за мнение! Сам уже давно задумал побег с ZF, как только будет релиз третьей рельсы.

Я думаю, низкая скорость разработки, первое время, это естественный overhead знакомства с новым фреймворком. В конечном итоге, полагаю, стройность рельсы и синтаксический сахар Ruby дадут явное преимущество. Такие вещи, как например, named scopes, хоть и вполне реализуемы в PHP+ZF, выглядят в последнем инопланетными костылями, когда в Rails это нечто изящное и естественное.
Я после каждой подобной статьи вспоминаю «День совершенства» Айры Левин. Правда это, цитируя википедию: «гуманная антиутопия, где не наказывают, а только лечат».
Купил «Чистый код», узнав о книге именно благодаря этому топику. Да, действительно, кроме того что книга хороша сама по себе, перевод, на удивление, очень качественный, удачный.
Спасибо за объяснение. Да, действительно весьма спорный вопрос. Теперь я смог взглянуть иначе.
Тут вы безусловно правы, да.

Автор, мне кажется, имел ввиду в этом утверждении то что за границу языка, так или иначе, выходит String. На следующем слайде он формулирует задачу: «The challenge: Maintaining type safety across language boundaries», а затем, упоминает, к примеру, те же параметризованные запросы.

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

А в чём ошибка утверждения о «Strings»?
Да в любом случае и до и после надо обрабатывать. «filter input, escape output», ведь так?
Ой, у меня deja vu. По-моему теме уже месяца полтора.

Вообще, прежде чем комментировать или критиковать, обязательно посмотрите слайды Interpolique:
www.scribd.com/doc/33001026/Interpolique

Там всё рассматривается гораздо глубже, нежели описано в статье, например вопросы сессий в web, и в общем type safety в программировании.
ВКонтакте.ру Downloader 0.2.55:
addons.mozilla.org/addon/151188/versions/0.2.55?src=external-habr

Пока новая версия в статусе «Not Reviewed», поэтому на основной странице расширения ещё не отображается. Процесс утверждения новых версий, обычно, от пары дней, до недели.
Я обдумал и решил что так лучше, да.

Что-то такое выходит:

ВКонтакте.ру Downloader: отображение битрейта
Лично я, пожалуй, тоже хотел бы видеть среднее значение, но, как пишут выше, более красиво если округлять. Наверное, стоит спросить у пользователей.
Очевидно, для VBR будет несколько привирать, но тут уж нужен компромисс: либо округлять, либо выводить среднее значение.
С некоторыми изменениями принято в репозиторий.
DileSoft, спасибо!

Скачать ВКонтакте.ру Downloader 0.2.54 можно отсюда:
http://dl.dropbox.com/u/818053/dev/vk-hg54.xpi

Чуть позже появится на addons.mozilla.org.

Картинка:
ВКонтакте.ру Downloader 0.2.54: получение битрейта

Вот .patch, если кому интересно:
http://dl.dropbox.com/u/818053/h/VK_rev54.patch

Вкратце, округляем битрейт вот так:

var rates = [320, 256, 224, 192, 160, 128, 112, 96, 80, 64, 56, 48, 40, 32];
for (i in rates) {
    if (bitrate >= rates[i]) {
        bitrate = rates[i];
        break;
    }
}


Судя вот по этому, vpleer так же теги не дёргает, а просто делит.

vpleer bitrate calculated

vpleer bitrate real

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

Вообще говоря, примерно месяц назад брался за это дело, и временно отложил. Данные о битрейте находятся в заголовке фрейма mp3, а структура mp3 файла такова, что вначале, перед всеми фреймами, могут оказаться ID3v2x метаданные, включая непредсказуемых размеров album art, поэтому даже стянув первые N килобайт, не обязательно наткнёшься на битрейт.
Я автор оригинального расширения. А что, правда такую функциональность надо кому-то? Это, в общем-то, плюс строчка кода.

Information

Rating
Does not participate
Location
Россия
Registered
Activity