You are viewing [info]skaurus's journal

Так вот; если у вас есть заданная через
state $cb = sub { ... };
процедура, и содержимое процедуры этой лезет за какими-нибудь переменными наружу, во внешний scope, и меняет эти переменные, а вы на эти изменения рассчитываете - то вы в жопе.
Видимо, внешняя переменная возьмется только в первый раз.
Особенно актуально для mod_perl, fast_cgi и прочих таких штук.
Tags:
 
 
Я тут недавно стоял в старбакс с айпадом и расплачивался золотой банковской картой. Ещё и выглядел прилично. Внезапно стало стыдно - потому что, понимаете ли, я неожиданно попал в архетип успешного хипстера, ну или там молодого кофаундера.
Попал в некий популярный образ, который ко мне на самом деле не имеет отношения, к тому, какой я человек.

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

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

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

Или вот если бы я купил мотоцикл, и меня завтра же стали бы одобрительно хлопать по плечу мотоциклисты, а знакомые говорить фразы "ну ты крут!", вот тогда я бы ощущал себя полным дебилом.
Потому что я всего лишь купил некую вещь.

Критерий оценки этой вещи один - её крутость, то есть хвастаться рациональностью покупки - начинание с большинством собеседников на редкость безнадежное. Я пробовал как-то, "мой телефон круче - умеет все то же самое, но намного дешевле!" :) Очень всех удивил.
 
 
В лоб:

EXPLAIN select array_to_string(array(select substr('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', trunc(random() * 61)::integer + 1, 1) from generate_series(1, 8)), '');
QUERY PLAN
--------------------------------------------------------------------------------
Result (cost=27.50..27.51 rows=1 width=0)


Поизящнее:
EXPLAIN SELECT substr(md5(random()::text), 1, 8);
QUERY PLAN
------------------------------------------
Result (cost=0.00..0.02 rows=1 width=0)
 
 
Смотрите сами - эмоции я свои выражать не люблю и не умею, а если выражаю - делаю это кратко. Типа, "это круто" или в минуты большой радости - "да, это очень круто!". Для меня вообще мозг важнее эмоций, что, конечно, лишает примерно половину человечества шансов получать долговременное удовольствие от общения со мной.

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

Ещё я скептик и перфекционист, для меня отлично - это нормально. То есть я же всегда найду до чего доебаться, и это при том, что мне таки все равно в целом скорее всего понравилось - потому что я понимаю, что идеала не достичь, в основном в силу крайней непонятности, где же этот идеал и как померить близость к нему.

К тому же я терпеть не могу врать, даже если честность сделает кому-то больно.
Совсем отвратительно, что я фанат справедливости (честности, равновесия, оптимальности - программист-весы, чо вы хочете от миня), и поэтому с трудом переношу чьи-то неоправданные выпады. Или выводы. Ещё и норовлю искать компромисс или "третий выход" ежели компромисс не ищется.

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

Из всего это вытекает много других гадостей, которые я не в силах держать в голове одновременно, чтобы вовремя вспомнить.
 
 
Это несложно. В Инструментах веб-мастера идем на страницу "Диагностика -> Просмотреть как Googlebot" и вбиваем адрес файла robots.txt
 
 
05 August 2011 @ 10:35 am
Если не забуду, буду пополнять по мере тестов)

1. Глиняные

Качественный представитель - Everclean. Состав - глина, активированный уголь. Достаточно мелкие гранулы.
Обещают 100%-ное очищение от пыли, по факту, когда сыпешь, облако мелкой пыли таки поднимается...
Бывает ароматизированный вариант, но я и у этого отчетливо ощущаю приятный запах... Несмотря на вечно заложенный нос. А девушка - нет. Так что сомнительный пункт)
Комкуется, хотя не обещали.
Прямоугольная картонная упаковка с ручкой (6кг). Средней удобности - у выдавливаемой горловины какое-то недоприсобление типа для удобства насыпания. Но "недо", так что может его лучше и не было бы вообще.

Достоинства:

  1. Коту нравится - похоже на песочек) Ну или по другой причине, не настаиваю
  2. Комкуется
  3. Запах держит неплохо


Недостатки:

  1. Глина, поэтому пыль
  2. Мелкий, поэтому на лапах разносится около лотка (и это с лотком-домиком. С прежним лотком, несмотря на загнутые широкие бортики, вообще сыпалось во все стороны)



Более другой представитель - SaniCat Professional: Clumping Gold (картонная коробка).
Общие черты те же; но хуже комкуется, хуже держит запах. Очень удобный откидывающийся носик у упаковки.

А вот Catsan комкующийся - говно. Запах держит хуево, разносится по всей квартире, стоит дорого. Но продается сука везде. Все-таки постарайтесь найти место, где вы 24 часа в сутки сможете купить хоть какой-то приличный наполнитель, кроме этого.


2. Силикагелевые

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

Достоинства:

  1. Разносится за пределы лотка меньше глины.


Недостатки:

  1. Запах не держит, вообще. Ну ок, очень плохо держит. Пахнет очень долго, несмотря на закрытый домик.
  2. Не комкуется. Просто желтеет, регулярно надо перемешивать, чтобы был равномерно желтый %)


В общем, по главной характеристике - запаху - сосет. Комкование тоже очень полезно, его опять же нет. Ацтой.

3. Деревянные

CatsBest Gold - нетипичный представитель, так как неплохо комкуется.

Достоинства:

  1. Комкуется
  2. Крупный, мало разносится
  3. Приятный запах


Недостатки:

  1. Дорогой


К сожалению, редко попадается...
 
 
ЖЖ то ли глючит в силу последних дней, то ли по жизни, но этот пост я пытался написать сначала здесь, и у меня не получилось - при сохранении или предпросмотре 500-ки.

Ну окей.

http://surfingbird.ru/about/blog/2011/07/29/surfingbird-async-script-loading/
 
 
Решили сравнить LWP, AnyEvent::HTTP и Mojo::Client.

5000 итераций, на каждой итерации загружался случайный урл из списка:
http://bambra.net/
http://navalny.livejournal.com/
http://demotivation.ru/
http://afisha.ru
http://google.com
http://www.google.ru/intl/en_com/images/srpr/logo1w.png

perl ~/http_bench.pl
Benchmark: timing 5000 iterations of any, lwp, mojo...
any: 1613 wallclock secs ( 4.13 usr + 1.30 sys = 5.43 CPU) @ 920.81/s (n=5000)
lwp: 2495 wallclock secs ( 8.71 usr + 0.90 sys = 9.61 CPU) @ 520.29/s (n=5000)
mojo: 1486 wallclock secs (16.91 usr + 3.04 sys = 19.95 CPU) @ 250.63/s (n=5000)

Чем выше число после собаки, тем быстрее та или иная реализация. Что Mojo медленный, не удивительно, а про AnyEvent::HTTP не все ещё знают, наверно.
Ещё бы проверить POST-запросы и ещё чаво-нибудь, но скорее всего будет лень.

PS. AnyEvent тестировался с блокировкой после каждого урла.
 
 
perl -Mojo -e 'f("http://auth.mail.ru/cgi-bin/auth", {Login => "skaurus\@mail.ru", Password => "bwahaha"}); g("http://win.mail.ru/cgi-bin/addressbook")->dom->at("table.adr_book")->find("td.mail a")->each( sub { print shift->all_text . "\n" } )'

ну, надо ещё перебор страниц прикрутить, ещё кое-что, а так - работает... написано минут за 10, СЛАВА ГИПНОЖАБЕ!

PS. Mojolicious, ojo, github edition
Вполне рекомендую.
 
 
06 February 2011 @ 08:31 pm
Почему-то церковь на примере Христа учит смирению. Я бы на том же примере учил умению делать трудный, но правильный выбор, бороться и не сдаваться.