Translimit.sh patch

Поднимая в очередной раз тему моего NAS'a, хочу обратить внимание владельцев на поломанный translimit.sh. Это скрипт, который запускается по крону и производит ротацию ваших торрентов, что бы они запускались или останавливались, нарабатывали ratio и т.п. В версии выложенной на сайте и форуме readynas, есть ошибка и поэтому он не работает с новыми версиями transmission.

Ошибка заключается в неправильном парсинге переменных с помощью awk, видимо api поменялось, а пропатчить забыли. Для решения проблемы, можно скачать готовый файл и заметить им существующий, либо поправить руками.

Строку:

RATIO="$($REMOTE $TRANSOPT -t $ID -i | grep Ratio | awk '{ print $2; }')"

Заменить на:

RATIO="$($REMOTE $TRANSOPT -t $ID -i | grep Ratio: | awk '{ print $2; }')"

nas, torrents      

Про ценообразование при разработке сайтов.

Наткнулся на замечательный текст, от парня из OwlBox. Хочу сохранить сюда на память, что бы перечитывать когда в очередной раз мне предложат "помочь с сайтом" за кегу пива.

Каждый раз, когда я начинал трогать мышку менее чем за 1000$ я потом сильно жалел, не бывает "простеньких сайтов", аппетит приходит во время еды, требования плывут, и все в рот имели итеративный подход, если итерации сопровождаются соответствующими выплатами и этапами по договору. Это даже с точки зрения бухгактерии не выгодно. Это нижний порог. У хороших студий эта планка в 10 раз выше. На мой взгляд это правильная политика. При скудном бюджете есть миллион разных способов продвижения в интернете своих услух, не требующих сайта, работающего на имидж или выполняющего роль инструмента продаж.
Если обсуждается сумма ниже 1000$ — мы друг–друга просто не поймем, может быть кто–то другой поймет. От заказов нужно уметь оказываться.

Имидж — это декларация того, что мы можем потратить приличные бабки за хороший, годный, красивый и эффективный относительно целей заказчика сайт. Возможны комбинации. Но ключевой момент — потратить бабки и какие–то положительные свойства сайта. Я принципиально против того, что унитаз, покрытый позолотой эквивалентен золотому унитазу и вообще когда одно выдается за другое. Так как то, что король голый, как правило, все равно очевидно. Ну если вы не являетесь говносыночком пидораса из говноправительства, заказывающего сайт для говносколково.

Средний ценник среднего проекта под ключ у меня получается в районе $5000. Всякая верстка — это 1–15% от объема работ работы. Основной объем падает на тестирование и удовлетворение меняющихся требований. Пусть дизайн будет 1000$, программирование — 1000$ верстка и изготовление графического контента — еще $1000. На пальцах — это расклад при котором все участники процесса довольны.

С огромной вероятностью стоимость проекта относительно объема работ в итоге составит 5000–10000$ — косвенные расходы, непредвиденные работы, тестирование, изменений, детализация требований, дополнительные встречи с заказчиком, переговоры и т.д. Вот и получилось x2.

Если натягивается готовый шаблон на готовый движок, то все равно внезапно окажется что у нас не два уровня иерархии разделов, а все–таки 3, секретарша не справляется с wysywig редактором, гамма должна быть несколько светлее, внезапно образуется еще 200 единиц графического контента, шаблон выглядит как полное говно в IE6, которым пользуется заказчик из–за своей внутрикорпоративной политики и т.д.

Если вы не поняли — именно на это говно уйдет половина вашей работы. Если вам заказывают сайт по вашей оценке на 10k$, но бюджет заказчика позволяет всего лишь 7,5k$ а сам он видел что "что–то такое же" вообще делали за штуку и считает что за такие бабки получит священный грааль с элексиром вечной молодости, то это не клевый крупный заказ. Это плохая мерзкая жопа в которую вы гарантированно влезете. К тому же, с большой вероятностью, вы и объем работ оценили неправильно и он не на 10k$, а на 15k$ или больше.

Другой взгляд: если заказчик хочет хоть как–то заниматься продвижением, то либо сам сайт или его услуги должны быть просто замечательными, а это либо дорого либо сложно, соответственно, либо, если, это хоть сколько ни будь конкурентный рынок и область продвижения, стоимость продвижения будет составлять большое количество штук баксов. Очень странно, если конечная точка, куда приходит посетитель, будет стоит 100$

Кто в итоге будет в пролете — выбирайте сами. Приведенные в качестве примера суммы можно уменьшить или увеличить, суть при этом не очень меняется.


работа      

Picasa vs. Flickr

Опять я оказался в ситуации, когда являюсь не типичным пользователем. На этот раз проблема коснулась фотографий. Ситуация следующая: у меня есть оплаченный google storage на 20 или 25 гб, есть огромное колличество фотографий в пикасе, есть много новых фотографий которые я хочу залить в хранилища, знать что они в безопастности и иметь возмножность показывать их друзьям и родственникам, но у меня нету возможности.

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

Наверно тут стоит бросить камень в сторону Aperture, которым я пользуюсь как инструментом для обработки и каталогизации фотографий. Для меня всегда было странно, что подобные, крупные, программы или сервисы не делают все возможное для расширения. Да, безусловно, можно установить PicasaUploader, который позволит загружать выбранные фотографии в пикасу, но мне это не нравится. Я хочу, что-бы можно было нажать кнопочку "Sync this gallery" и далее она будет автоматически синхронизироваться с сервисом, а именно вносить изменения в фотографии если я сделал их у себя, обновлять/удалять определенные фото ну и остальные приятныем мелочи.

Для меня не понятно, почему поддержка flickr есть из коробки, а picasa нету.

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

К слову говоря, про Aperture, для меня остается загадкой, почему в 2012 году, они не научились делать некоторые фотографии скрытыми. Нельзя сделать как в пикасе, отметить несколько фотографий в альбоме как скрытые и их показ будет возможен только после ввода пароля.

Что делать в итоге - не решил. Ясно, что использовать пикасу, по определенным обстоятельствам, у меня не получится, но и пользоваться фликром желания тоже нету. Хотя, видимо это вопрос времени и если я не научусь делать свои плагины, то сдамся и начну переезд на фликр.


aperture, flickr, picasa, Фото      

PHP - fastcgi_finish_request

А вы знаете про эту замечательную функцию?

Если кратко, то используя ее можно заставить приложение отдавать контент пользователю гораздо быстрее, разделяя логику приложения на "это необходимо пользователю" и "это пользователю не очень важно". Когда php работает в fastcgi режиме, например в популярной связке nginx+php-fcgi, у вас появляется возможность сначала посчитать все данные которые необходимы что бы отдать пользователю страницу, а уже потом, когда страница отдана и nginx отдает ее клиенту, можно выполнить все остальные действия, например отправить письма или обновить кэш или запустить некие механизмы очистки.

Нужно отдельно упомянуть, что для правильной работы, fastcgi_finish_request должен запускать после session_write_close и ob_* функций.

Простой пример:

import someshit

print(123)
echo 'Hello word';

// В данной реализации, данные отдадутся в клиенту сразу,
// а если закомментировать вызов fastcgi_finish_request(),
// клиент будет ждать 10 секунд, до того, как получит ответ.
fastcgi_finish_request();

sleep(10);

php      

Yet another conference 2011

yac2011]

Посетил сегодня YAC2011, сейчас решил оставить заметку, а то завтра забуду, потом воспоминания перейдут из недавней памяти в долгосрочную и, как обычно, писать не захочется. В целом, огромное спасибо Яндексу за организацию столь масштабного мероприятия. Организация действительно на высоте, абсолютно все, начиная от входа, до питания было действительно замечательно. Конкурсы, подарки, отличная атмосфера интересные доклады и все это за бесплатно - это очень хорошо.

Но к сожалению доклады в этом году мне не понравились, они были хорошими, но по большому счету "ни о чем". То есть очень много воды и мало практической информации. Я наверно слишком избалован последними узкотематическими конференциями которые посещал в последнее время, но к сожалению не смог узнать сегодня что-либо принципиально новое и то, чем бы захотелось, вот прям все бросить и пойти заняться. Те доклады которые я посетил, были примерно следующего содержания: "Привет, у нас тут вот такая ситуация, мы подумали и решили ее таким способом".

Больше всего меня разочаровал доклад Нигмы "В поисках математики", я ожидал, что они расскажут как они высчитывали там супер-алгоритмы для своего поиска, а они рассказали как они сделали свой WolframAlpha. Ну может я лох, что не прочитал более подробный анонс к докладу, но меня не покидало чувство, что меня наебали.

Хотя, вполне возможно конкретика была на мастер классах, но т.к. верстка меня интересует достаточно мало, то их я посещать не стал. Зато в кулуарах атмосфера была гораздо жарче чем на самих докладах и различные споры были гораздо интереснее самих докладов. Очень понравился конкурс для сисадминов, по настройке nginx на скорость и дальнейшем тесте на стресс, хотя чувак из организаторов который отвечал за эту секцию был уж очень нервный, нужно менее эмоционально реагировать, когда зрители заступают за линию.

Но в целом это мелочи, главное что такие события происходят и становятся традицией.

Еще раз спасибо Яндексу


яндекс      

9 million hits/day with 120 megs RAM

Оставлю у себя в закладках.

After checking this for about 9 months, I can tell you this almost always reads that number: 300 microseconds. This is about one third the time a camera flash illuminates. That’s, well, pretty quick. When I started, my software was taking about 0.25 seconds (250 000 microseconds) to produce the front page of my website. I needed to improve performance by over 800x.

Далее


memcache, nginx, php      

Обновления в блоге

Кроме обновления дизайна, я начал приводить в порядок остальные мелкие детали, которые делали меня грустным.

Кроме внешних изменений я полностью пересобрал свой блог. Старый хоть и был хорошим, но жил с начала второй ветки вордпресса, что очень сказывалось на его производительности.

Одно из гланвых изменений, я перенименновал свой канал на feedburner. Теперь RSS доступен по адресу:

http://feeds.feedburner.com/rpsl

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

Кстати странно, но фидбернер не умеет делать редирект после переименнования, это очень плохо. Тот же livejorunal, после того как я переименновал свой аккаунт, зарезервировал мой старый ник и оставил с него редирект на новый журнал, хотя там это платно.


blog, rss      

Node Saver

Примерно в марте месяце, пока мне было скучно и хотелось поиграться с MongoDB, я решил сделать свой аналог замечательного сайта peeep.us. Дело в том, что peeep.us хоть и жутко удобный, но не совсем безопастный, добавленные туда страницы потом хрен удалишь и самое ужасное, он открыт к индексации. Кстати все кто хочет почитать лепру но не имеют туда доступа могут ..., ну короче намек поняли, все как с мегафоном.

save.rpsl.info

Первую версию, которая на момент публикации поста, живет на save.rpsl.info я написал часа за четыре, из них примерно два часа я искал у кого своровать дизайн :D

После этого, я решил что связка php и mongodb для такой микрозадачи не нужна и решил переписать ее на node.js. За несколько вечеров я разобрался и сделал и то, что хотел. В конечном варианте полностью отказалася от MongoDB и заменил его на Memcached. Зачем мне тут монго? Данные я кладу на несколько дней, данных мало, заодно и решится вопрос с их очисткой, а то, что не надежно, ну и фиг с ним. Ничего ценного там хранить смысла нету, а статистика ребута memcached'a на серваке говорит о том, что если раз в полгода я и потеряю данные, то ничего страшного не произойдет.

И все бы было хорошо, но я не решил главную проблему - сохранение работает только для открытых источников, как передавать страницу с сайта, которая закрыта basic auth я не придумал. У меня есть конечнонесколько идей, но проверять их мне слишком лениво. Вторая проблема в том, что мне не хочется из-за этой мелочи поднимать на боевом серваке Node.JS, в какой-то момент пробовал взять виртуалку у clodo.ru, заодно потестировать его, но тесты оказались плачевными, потом хотел у alice2k стрельнуть кусочек vds, но уехал в Испанию и снова забил на это.

В итоге с марта месяца, у меня на рабочем столе лежит папка node, которую я все время хочу удалить и в последний момент вспоминаю, что этого делать не стоит. Несколько раз приходилось доставать из бэкапа.

Сегодня мне захотелось ее удалить, поэтому я решил выложить сорцы на github

В общем форкайте меня, все дела. https://github.com/Rpsl/node-saver


memcache, mongodb, nodejs, php      

Проверка multi_query в mysqli

Увидел сегодня красивое решение проверки выполнения мультизапроса в mysqli.

Если кто не в курсе, то можно сформировать в одну строку кучу запросов, разделяемых точкой с запятой, а потом отдать это на выполнение. Так вот проверять ошибки можно разными способами, а можно просто в конец добавить некий абстрактный SELECT 'complete'. Это подходит для запросов типа INSERT, DELETE, UPDATE.

Eще, у меня в примере указан не прямой вызов multi_query, а обертка для запросов, думаю что это и зачем вам объяснять не нужно.

if ( $DB()->multi("
    UPDATE someshit SET bla=bla-1 WHERE id='%d';
    DELETE FROM someshit WHERE category='%d';
    DELETE FROM someshit WHERE id='%d';
    SELECT 'complete';",
    $id, $category, $id) != "complete" )
{
    self::$resultCode = self::DB_ERROR;
    return false;
}
self::$resultCode = self::SUCCESS;

mysql, php      

Обновил NAS

nas

У меня дома, уже почти год живет ReadyNAS Duo, вчера мне было скучно и я подумал, что будет неплохо обновить его.

Изначально планировал купить в него второй жесткий диск, т.к. с момента покупки, в нем живет только один seagate на полтора террабайта и бэкапам time machine, в последнее время, там очень тесно. Хотел купить второй такой-же, но почитав документацию, обнаружил, что покупка второго hdd не позволит увелить общий объем устройства, а позволит сделать только raid. Так как raid на 1.5 террабайта мне совсем не нужен, я решил отказаться от этой идеи и потом, когда будут ресурсы, купить жесткий диск от 3 террабайт.

Таким образом, из возможного обновления, мне оставалась только оперативка. По спецификации, в него можно засунуть до 1гб оперативной памяти, SODIMM на 200pin. В целом, мне вполне хорошо жилось и на 256. Nas тихо стоит в шкафу, качает торренты, принимает бэкапы и ничего больше не делает, но когда кол-во активных торрентов переваливает 10-15, то веб-интерфейс начинает жутко тупить.

Почитав несколько заметок и упоминаний на сайте производителя, что этому величеству не всякая память подходит, остановил свой выбор на "Crucial CT12864X40B". Заказал, проехался до магазина, привез, запустил.

Вообще я не ожидал сильных изменений, да и на глаз ничего нового не увидел. Работать, вроде, стал шустрее, торренты качаются, time machine стала работать быстрее, но т.к. никаких тестот я не проводил, мне кажется все эти улучшения эффект плацебо.


nas, netgear