Важных изменений там много. В частности правообладатель должен сначала попытаться досудебно урегулировать вопрос. Обязательно указывать конкретный урл (на самом деле очень большая дыра, способная вообще все запреты нивелировать — урл поменять не проблема для большинства CMS, да и просто настарные пользователи будут заливать и заливать). Предусмотрена процедура обжалования. То есть если хостер по жалобе тебе «забанил», то после подачи встречной пртензии, он должен «разбанить».
Да, чем дальше в лес, тем больше дров. Я привёл node-get как пример инструмента, способного преодолевать редиректы — а есть инструменты куда более функциональные; не только restler, но также ещё и superagent(см. коди документацию),и request,и fetch,и shred,и http-get — это только наиболее известные.
1. Я сейчас работаю на фултайм (зарабатываю на учебу); с одной стороны, пишу на Rails, с другой, времени не очень много. По мере возможности я слежу за разработкой, но моего вклада в Rubinius пока нет.
2. Зайдите на #rubinius на irc.freenode.net ) Даже если вы просто расскажете, как работает (или, возможно, не работает) тот ваш проект на 2.0.0pre, это все равно будет полезно. Ну и, конечно, вам объяснят, что и как писать.
Мне тоже можете задавать вопросы, низкоуровневую часть Ruby я вроде как себе представляю.
Я кстати выработал в себе привычку оставаться прстегнутым в полете, после того как прочитал "Раздумья ездового пса" Ершова.
На юге посветлело. Фронт кончался, проглянула полоска вечерней зари, и мы приняли решение идти домой по трассе Канск — Красноярск.
Где-то в районе Заозёрного дорогу нам ещё преграждал небольшой хвост, как раз на нашей высоте, и мы запросили снижение с 1200 до 900 м, норовя поднырнуть. Уже прямо по курсу виден был закат, и только этот хвост, южная оконечность фронта, вуаль, вроде бы ничем не угрожающая нам, тянулась на юг ещё километров на полсотни.
Мы снизились; получалось, что пройдём как раз под нижней кромкой. Командир из осторожности снизился ещё на пятьдесят метров, хотя в этом и не виделось особой нужды.
Какой-нибудь километр пути. Десять секунд — и мы на свободе: дальше чисто, оранжевый закат на полнеба; а на севере…но мы уже убежали.
Хорошо, что мы выработали привычку в полёте быть всегда пристёгнутыми. Самолёт выдернуло из-под нас так резко, что мелочь из незастёгнутого кармана рубашки фонтаном брызнула в потолок и разлетелась по кабине. Грузный командир пушинкой взлетел под потолок, выпустив штурвал, но удержался не слишком затянутым ремнём; я пристегнулся потуже и усидел, а вот слабо затянувший ремень бортмеханик от рывка растянул поясницу. Вдобавок ещё два амбарных замка — от входной двери и двери пилотской кабины, — болтающиеся на трубке его сиденья, сгуляли в потолок и оттуда рикошетом проехались ему по лысине. Радист не пострадал, упёршись ногами в перегородку своей тесной каморки.
Самолёт провалился всего-то метров на пятьдесят. Акселерометра на нем не было, и не известно, какую отрицательную перегрузку выдержало его толстое крыло.
И все. Радист сходил в салон. Пассажиры сидели очень смирно. Глаза у всех были круглые, а лица мокрые от пота и очень грязные: от броска сорвало и перевернуло панели пола, и вся грязь и пыль, взлетевшая с них, медленно оседала на лица разом взмокших людей. Парень на последнем кресле засунул руку под ремень своей подруги и до посадки не отпускал.
Этим уже ничего насчёт ремней объяснять не надо.
Кстати очень хорошо человек про авиацию пишет, всем рекомендую, кто не знаком.
Было бы неплохо упомянуть, что пакет runit это развитие (форк) DJBшного пакета daemontools. Софт DJB отличается надёжностью и простотой, но DJB очень не любит добавлять ненужные лично ему фичи — дабы не усложнять и не плодить баги. Пакет runit разрабатывается с учётом принципов DJB, автор тоже крайне неохотно добавляет новые фичи и стремится сохранить простоту кода, но всё-таки фич там больше и пользоваться runit удобнее, чем daemontools.
Стабильность runit, в принципе, не хуже, чем у daemontools — фактически я знаю только про один баг, который проявляется буквально у нескольких пользователей (включая меня, к сожалению), и который много лет не могут поймать (автору runit этот баг повторить не удаётся). Впрочем, для этого бага есть workaround, так что в результате всё работает много лет без нареканий.
Было бы неплохо упомянуть, что runit состоит из нескольких независимых частей: процесс N1 (т.е. замена стандартному /sbin/init), супервизор сервисов (который описан в статей) и утилита для управления логами. И можно пользоваться как всеми тремя составляющими, так и отдельно любой из них.
Мы много лет используем runit и для загрузки систем (вместо стандартного /sbin/init) и для запуска всех сервисов (вместо скриптов в /etc/init.d/). Для Gentoo пакет с runit, с примерами скриптов для загрузки системы и пакеты со скриптами для типовых сервисов доступны в моём оверлее для portage.
Так же мы используем супервизор сервисов из runit для запуска и управления всеми сервисами необходимыми для наших веб-проектов, при этом и супервизор и сервисы запускаются под обычным юзерским аккаунтом.
В статье не упомянуто одно из основных достоинств runit — он не использует .pid-файлы для контроля сервисов, т.к. это не атомарно и не надёжно. Вместо этого каждый сервис контролируется отдельным процессом-родителем, который в случае креша сервиса гарантированно и моментально получит SIGCHLD и перезапустит сервис.
Что касается каталогов /etc/sv/ и /etc/service/ — насколько я помню официальную позицию автора runit, рекомендуется использовать немного другие каталоги. Но вообще пути к каталогам нигде не прошиты, указываются параметром и можно выбирать их по своему вкусу — например, у меня это /service/ и /var/service/.
Что касается «демонизирования», то в статье это описано некорректно. Во-первых runit ничего не демонизирует (процесс демонизации несколько шире чем просто запуск процесса в фоне). Во-вторых runit не требует того, чтобы сервисы не демонизировали себя, в частности не отцеплялись от STDIN/OUT/ERR — он требует только того, чтобы сервисы не форкались в фоновый процесс. Логи сервисы не обязаны выводить на STDOUT/ERR, хотя это предпочтительный вариант. Впрочем, даже если сервисы выводят логи в файлы самостоятельно (как apache и mysql, к примеру), то это не мешает на месте файлов access_log, etc. разместить FIFO-шки, из которых будут читать svlogd-сервисы и выводить логи в традиционном для runit формате (у нас всё работает именно так).
А вот мой джентельменский набор: authlogic — авторизация пользователей paperclip — загрузка и обработка картинок enum_column3 — поддержка enum для MySQL will_paginate — постраничный пэйджинг для отображения данных delayed_job — фоновая обработка любых заданий
Ну эта тема гораздо обширнее, чем 200 параметров libx264 степень влияния на результат которых, может свести с ума =)
Вам же требуется многомерная оптимизация по следующим характеристикам:
1) результирующее качество
2) битрейт
3) флуктуации битрейта
4) время сжатия
Могу по своим наблюдениям сказать: один из самых сильно влияющих параметров — это qpmin
Если он ниже 25, то условно SD на атоме не сжимается. Если выше, то сжимается с запасом.
Второй очень важный параметр — subme. Если его опустить с 5 до 3, то скорость сжатия может без особого изменения битрейта увеличиться в два-три раза.
Остальные параметры так же важны, но они не на каждом видео дают такой же резкий и хорошо наблюдаемый результат.
попробуйте расширение MusicSig Vkontakte для хрома — дублей будет значительно меньше, добавятся ссылки на скачку песен и видео и еще куча всяких косметических изменений. Раньше еще позволяло в обход приватности получать дополнительные сведения о контактах, часто с доступом в фотоальбомы.
Поиск, индукция, инсайт.
www.youtube.com/watch?v=ojCkgU5XGdg&feature=player_detailpage#t=290s
Или http://pivotallabs.com/users/dwfrank/blog/articles/1972-giving-rails-2-the-asset-pipeline- более подробно о том как вкручивать asset pipeline в rails 2.3.
$(document).ready(function(){
(function() {
window.___gcfg = {lang: 'ru'};
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
po.src = 'https://apis.google.com/js/plusone.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();
});
ну и такими гадостями как у меня в коменте я не занимался. просто через console — писал window.blur()? а код выше это уже идея как можно напакостить.
нашел такой баг в ИЕ когда в одном месте проекта был вот такой кусочек кода
фиксил через:
тут наверное интересно еще то что в ИЕ возвращается всегда то-ли window то-ли document
в FF есть ничего не найдено — просто пустой jQ массив
2. Зайдите на #rubinius на irc.freenode.net ) Даже если вы просто расскажете, как работает (или, возможно, не работает) тот ваш проект на 2.0.0pre, это все равно будет полезно. Ну и, конечно, вам объяснят, что и как писать.
Мне тоже можете задавать вопросы, низкоуровневую часть Ruby я вроде как себе представляю.
На юге посветлело. Фронт кончался, проглянула полоска вечерней зари, и мы приняли решение идти домой по трассе Канск — Красноярск.
Где-то в районе Заозёрного дорогу нам ещё преграждал небольшой хвост, как раз на нашей высоте, и мы запросили снижение с 1200 до 900 м, норовя поднырнуть. Уже прямо по курсу виден был закат, и только этот хвост, южная оконечность фронта, вуаль, вроде бы ничем не угрожающая нам, тянулась на юг ещё километров на полсотни.
Мы снизились; получалось, что пройдём как раз под нижней кромкой. Командир из осторожности снизился ещё на пятьдесят метров, хотя в этом и не виделось особой нужды.
Какой-нибудь километр пути. Десять секунд — и мы на свободе: дальше чисто, оранжевый закат на полнеба; а на севере…но мы уже убежали.
Хорошо, что мы выработали привычку в полёте быть всегда пристёгнутыми. Самолёт выдернуло из-под нас так резко, что мелочь из незастёгнутого кармана рубашки фонтаном брызнула в потолок и разлетелась по кабине. Грузный командир пушинкой взлетел под потолок, выпустив штурвал, но удержался не слишком затянутым ремнём; я пристегнулся потуже и усидел, а вот слабо затянувший ремень бортмеханик от рывка растянул поясницу. Вдобавок ещё два амбарных замка — от входной двери и двери пилотской кабины, — болтающиеся на трубке его сиденья, сгуляли в потолок и оттуда рикошетом проехались ему по лысине. Радист не пострадал, упёршись ногами в перегородку своей тесной каморки.
Самолёт провалился всего-то метров на пятьдесят. Акселерометра на нем не было, и не известно, какую отрицательную перегрузку выдержало его толстое крыло.
И все. Радист сходил в салон. Пассажиры сидели очень смирно. Глаза у всех были круглые, а лица мокрые от пота и очень грязные: от броска сорвало и перевернуло панели пола, и вся грязь и пыль, взлетевшая с них, медленно оседала на лица разом взмокших людей. Парень на последнем кресле засунул руку под ремень своей подруги и до посадки не отпускал.
Этим уже ничего насчёт ремней объяснять не надо.
Кстати очень хорошо человек про авиацию пишет, всем рекомендую, кто не знаком.
Стабильность runit, в принципе, не хуже, чем у daemontools — фактически я знаю только про один баг, который проявляется буквально у нескольких пользователей (включая меня, к сожалению), и который много лет не могут поймать (автору runit этот баг повторить не удаётся). Впрочем, для этого бага есть workaround, так что в результате всё работает много лет без нареканий.
Было бы неплохо упомянуть, что runit состоит из нескольких независимых частей: процесс N1 (т.е. замена стандартному /sbin/init), супервизор сервисов (который описан в статей) и утилита для управления логами. И можно пользоваться как всеми тремя составляющими, так и отдельно любой из них.
Мы много лет используем runit и для загрузки систем (вместо стандартного /sbin/init) и для запуска всех сервисов (вместо скриптов в /etc/init.d/). Для Gentoo пакет с runit, с примерами скриптов для загрузки системы и пакеты со скриптами для типовых сервисов доступны в моём оверлее для portage.
Так же мы используем супервизор сервисов из runit для запуска и управления всеми сервисами необходимыми для наших веб-проектов, при этом и супервизор и сервисы запускаются под обычным юзерским аккаунтом.
В статье не упомянуто одно из основных достоинств runit — он не использует .pid-файлы для контроля сервисов, т.к. это не атомарно и не надёжно. Вместо этого каждый сервис контролируется отдельным процессом-родителем, который в случае креша сервиса гарантированно и моментально получит SIGCHLD и перезапустит сервис.
Что касается каталогов /etc/sv/ и /etc/service/ — насколько я помню официальную позицию автора runit, рекомендуется использовать немного другие каталоги. Но вообще пути к каталогам нигде не прошиты, указываются параметром и можно выбирать их по своему вкусу — например, у меня это /service/ и /var/service/.
Что касается «демонизирования», то в статье это описано некорректно. Во-первых runit ничего не демонизирует (процесс демонизации несколько шире чем просто запуск процесса в фоне). Во-вторых runit не требует того, чтобы сервисы не демонизировали себя, в частности не отцеплялись от STDIN/OUT/ERR — он требует только того, чтобы сервисы не форкались в фоновый процесс. Логи сервисы не обязаны выводить на STDOUT/ERR, хотя это предпочтительный вариант. Впрочем, даже если сервисы выводят логи в файлы самостоятельно (как apache и mysql, к примеру), то это не мешает на месте файлов access_log, etc. разместить FIFO-шки, из которых будут читать svlogd-сервисы и выводить логи в традиционном для runit формате (у нас всё работает именно так).
authlogic — авторизация пользователей
paperclip — загрузка и обработка картинок
enum_column3 — поддержка enum для MySQL
will_paginate — постраничный пэйджинг для отображения данных
delayed_job — фоновая обработка любых заданий
Вам же требуется многомерная оптимизация по следующим характеристикам:
1) результирующее качество
2) битрейт
3) флуктуации битрейта
4) время сжатия
Могу по своим наблюдениям сказать: один из самых сильно влияющих параметров — это qpmin
Если он ниже 25, то условно SD на атоме не сжимается. Если выше, то сжимается с запасом.
Второй очень важный параметр — subme. Если его опустить с 5 до 3, то скорость сжатия может без особого изменения битрейта увеличиться в два-три раза.
Остальные параметры так же важны, но они не на каждом видео дают такой же резкий и хорошо наблюдаемый результат.
Все точно так же
Кодим:
ffmpeg -i source.file -s 640x360 -f mp4 -vcodec libx264 -vpre hq -threads 0 -b 1500k -bt 1500k -r 25 -g 25 -acodec libfaac -ab 96k -ar 22050 filename.mp4
Хинтим:
MP4Box -inter 500 filename.mp4
Натачиваем кривоватый h264.code-shop.com/trac/wiki/Mod-H264-Streaming-Nginx-Version2
PROFIT!