Analitycs

вторник, 18 декабря 2012 г.

Google Adsense тестирует тизеры?

Сегодня в интерфейсе Gmail заметил нечто - безумно напоминающее тизер.

Я что-то пропустил?

понедельник, 17 декабря 2012 г.

Apt-git

Суровые будни запаренного человека - пишу в консоли
$ sudo apt-git install make
и удивляюсь - почему не работает ;-)

вторник, 11 декабря 2012 г.

Imsanity - Wordpress Image Upload Resizer

Если дать пользователям  активно пользоваться Wordpress - тут же начинается бесконтрольная загрузка больших картинок по 4-5-6 мегабайт каждая.

Да, WP использует различные размеры картинок, но их ОРИГИНАЛЫ  остаются огромными, безумно расходуя дисковое пространство на сервере.

Погулив, наткнулся на кучу безумных советов и реплик, из которых "труъ" (с) вариантом оказался плагин Imsanity.

"Must have" (с), однозначно.

среда, 28 ноября 2012 г.

Ищется 3D моделер Blender

Ищется 3D моделлер, оплата - сдельная по каждому заказу, направление - скульптурка/предметка в Blender.

Если есть навык работы с моделями под 3D рост - хорошо, Украина - совсем отлично. ;-)

Писать и слать портфолио сюда.

суббота, 24 ноября 2012 г.

Nginx accept() failed (24: Too many open files)

При достижения определенного уровня нагрузки на сайт Nginx начинает сыпать ошибками

2012/11/12 20:12:53 [alert] 5554#0: accept() failed (24: Too many open files) while accepting new connection on X.X.X.X:80

Диагноз

Диагноз, кстати -очевиден - слишком много открытых файлов

Лечение

Две строчки

1) в скрипт иницаилизации - например /etc/init.d/nginx

ulimit -n 65535

2) в конфиг nginx-  сразу после worker_processes

worker_rlimit_nofile 20480;

Рестарт.... и шерсть вашего любимца снова мягкая и шелковистая ;-) ;-)

вторник, 20 ноября 2012 г.

nginx Connection reset by peer) while reading response header from upstream

Иногда некоторые скрипты, запущенные на PHP-FASTCGI или  PHP-FPM кидают в лог nginx странную ошибку

Connection reset by peer) while reading response header from upstream

Погуглив - нашел много танцев с конфигами nginx и бубнами, ни один из которых не помог, кроме одного... БЕЗУМНОГО совета, который как водится - сработал в моем случае ;-)

Вы не поверите... ;-)

/sbin/service php-fpm restart

Установка Wordfence Security на Wordpress - прошла успешно ;-)

четверг, 15 ноября 2012 г.

.htaccess -> nginx конвертор

"Must have" (с) -  я считаю

http://winginx.ru/htaccess

Сэкономили мне сегодня минут пятнадцать на настройку rewrite_rules. Но нужно обязательно проверять - мне например пришлось break; заменять на last;.

НО - Большое человеческое спасибо!

пятница, 2 ноября 2012 г.

Google готовится переводить Blogger для пользователя?

По некоторым косвенным данным появилось подозрение, что Google в ближайшее время собирается переводить блоги на Blogspot с помощью Google Translate.

1) Первый звоночек - в статистике Google Adsense несколько месяцев назад начали появляться зеркала блога - такие как

michael-xiii.blogspot.cz
michael-xiii.blogspot.au

и так далее.

2) Вчера заметил, что теперь блоги с суффиксом *.blogspot.com перенаправляются на домен *.blogspot.ru .

Например http://massivevoodoo.blogspot.com

А решение было бы удачное - автоперевод блогов в зависимость от языка пользователя + локализованная реклама...

Трафик растет, рекламодатели довольны, доходы Google растут... ;-)


четверг, 25 октября 2012 г.

Stream - мультфильмы для детей. Disney и Союзмультфильм в одном флаконе

На нашей видео-платформе выпущено новое приложение для iPad - на этот раз для детей и их родителей. Подписка - 3.9$ за месяц - все лицензионное и никакой рекламы.







пятница, 19 октября 2012 г.

From Skyrim to Tamriel - шаг за шагом

С каждым выходом нового DLC Bethesda потихоньку гнет свою линию...

Почитав кучу негативных отзывов про DLC: Hearthfire - удивился. 

Многие игроки за деревьями и рудой не видят не только лес, но и то, что из этого леса  можно будет построить. А можно будет построить многое - но только уже в  The Elder Scrolls Online - ведь это готовая заготовка для целого раздела изготовления предметов, домов и прочих радостей жизни, столь любимых игроками.

Вслед за возможностью строить домики и изготавливать предметы - тянется линия добычи полезных ископаемых и переработки их в материалы - а затем приходит и экономика. Ведь чтобы добыть руду - можно искать и копать, можно купить - а можно и убить. ;-) Сразу вспоминается моя любимая когда-то Entropia Universe - с полноценным торговым рынком, завязанным на реальные деньги. 

И через пару лет за несколько Iron Ingot, необходимых для достройки своего домика у озера -  игроки будут убивать друга в PVP зоне ;-)

Так что Hearthfire - это не отстойный DLC: The Elder Sims - а весьма приличный такой заход на крафтинг в будущей онлайн версии игры.

Двигаемся дальше...

Только что анонсированный DLC: Dragonborn - всем известный остров Solstheim, неподалеку от Vvangerfell.

Явно прослеживается линия работы  разработчиков - берем какой-то промежуточный уже ГОТОВЫЙ кусок территории, импортируем его в новый движок, затем доводим-дополировываем и выкладываем на тест большому количеству пользователей по всем у миру. Всяко проще чем рисовать с нуля ;-)

Следующий шаг - втихаря импортируем и доделываем детали на Cyrodiil из Oblivion и Vvangerfell из Morrowind. 
И вот уже по факту, вместе со Skyrim - получаем больше трети территории для будущей онлайн версии. Также, и ведь из Daggerfall можно наверняка что-то позаимствовать.

Вот так вот, тихой цапой - шаг за шагом с каждым DLC мы движемся к Tamriel.

четверг, 18 октября 2012 г.

Язык Google Go - кто, куда и зачем?

Кстати, вот вспомнился активно продвигаемый Google язык Go. "Многие спрашивают" (с) - кто go, куда go - и главное - ЗАЧЕМ go?

Мне кажется - все гораздо проще. На японском языке - ГО - это язык...

  • Японский язык - НихонГО
  • Русский - РусияГО
  • Новый типа "прикольный" язык программирования - ГО.

Ну вот как то так, скорей всего.

понедельник, 15 октября 2012 г.

Нужен тестировщик [API, mobile]

Ищем тестировщика в команду. Цитирую

"Нужно будет заниматься тестированием API, вероятно мобильных клиентов (на девайсах – Android (штук 10 планшетов), iOS, W8). Вот для этого сервиса: http://www.stream.ru/ . Хорошо, если желающий будет знать JS/Python/Bash.

Офис на Васильевском острове (7я линия). Из плюсов – дмс, отличная команда (заинтересованные в тестировании девелоперы, которые, конечно куксятся и обижаются, но слушают), хорошее руководство (по опыту скажу, очень редко встречаются люди такой квалификации и адекватности, по мне так один из огромнейших плюсов работы тут), достаточно гибкий график работы, масса оборудования (мне как гику это приятно).

Нужен средне- (а лучше сильно-) опытный тестировщик, не потерявший желания учиться и умеющий, хотя бы немного программировать (научу тестировать API через node.js – Selenium нервно курит в сторонке). " (с)

Писать можно и нужно на адрес asergeev@stream.ru

"Все вышесказанное подтверждаю, записано с его слов верно" (с)

суббота, 13 октября 2012 г.

Как выставить chmod 664 файлам, а 775 каталогам?

Хронический склероз - как выставить всем файлам 664, а каталогам - 775.

find ./* \( -type d -exec chmod 775 '{}' \; \) , \( -type f -exec chmod 664 '{}' \; \)

Может хоть так запомню - в стиле ориентира - "лежит где-то там" (с). ;-)

Wordpress - Briefly unavailable for scheduled maintenance. Check back in a minute.

Если вдруг ваш обнаглевший Wordpress после попытки обновления начинает грязно ругаться матом в стиле

Briefly unavailable for scheduled maintenance. Check back in a minute.

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

Взлетели. ;-)

понедельник, 1 октября 2012 г.

Как вывести массив из PHP в JSON без всяких UTF конвертаций?

Если нужно вывести кириллический массив в JSON для последующей обработки в Javascript, генерируя его посредством PHP, да еще и в Windows-1251 (без всяких UTF-8, encoding и прочего)  - да, да - "мсье знает толк в извращениях" (с) ;-) ,

то можно воспользоваться вот такой жуткой конструкцией.

function php2js($a=false)
{
  if (is_null($a)) return 'null';
  if ($a === false) return 'false';
  if ($a === true) return 'true';
  if (is_scalar($a))
  {
    if (is_float($a))
    {
      // Always use "." for floats.
      $a = str_replace(",", ".", strval($a));
    }

    // All scalars are converted to strings to avoid indeterminism.
    // PHP's "1" and 1 are equal for all PHP operators, but
    // JS's "1" and 1 are not. So if we pass "1" or 1 from the PHP backend,
    // we should get the same result in the JS frontend (string).
    // Character replacements for JSON.
    static $jsonReplaces = array(array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'),
    array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"'));
    return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $a) . '"';
  }
  $isList = true;
  for ($i = 0, reset($a); $i < count($a); $i++, next($a))
  {
    if (key($a) !== $i)
    {
      $isList = false;
      break;
    }
  }
  $result = array();
  if ($isList)
  {
    foreach ($a as $v) $result[] = php2js($v);
    return '[ ' . join(', ', $result) . ' ]';
  }
  else
  {
    foreach ($a as $k => $v) $result[] = php2js($k).': '.php2js($v);
    return '{ ' . join(', ', $result) . ' }';
  }
}

Страшно, да...  но работает ;-). "Костыли - это кошерно" (с)

Найдено в дебрях PHP.net

пятница, 14 сентября 2012 г.

"Довакин, довакин, наал ок зин вас вахриин" (с)


Показываю нашу последнюю работу для NorthStarModels, мои - консультации в процессе разработки мастера, сборка и окраска.
Фигура доступна для заказа у производителя, подробности и больше фото тут.

суббота, 8 сентября 2012 г.

MacOS X Lion: Finder съедает всю память

После обновления MacOS  X до Lion достаточно часто появляется странная проблема с Finder - без всяких видимых причин он начинает активно есть память, отъедая 1.5 и даже больше 2 Гб.

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

Решение

Обновить Dropbox. Так как у него нет автоматического обновления - старая версия может плохо работать на новой ОС.

В моем случае обновление было с версии 1.4.1 до 1.4.17 - помогло


воскресенье, 19 августа 2012 г.

Почему умирают IT-блоги?

Будучи "в этих ваших интернетах" с 1997 года (с перерывами на учебу, работу и военную службу)  заметил одну интересную особенность.

А именно - практически любой блог ITшника, который пишет на профессиональные темы - рано или поздно обречен на угасание и умирание.

Причины вымирания IT блогов просты как грабли

  • Человек развивается - то, о чем он писал полгода назад активно и с горящими глазами, сейчас не представляет для него никакого интереса
  • Если человеку по прежнему интересно писать - то зачастую он  продолжает писать уже на другую тему, не связанную с той, с которой он начинал. Соответственно - теряются те читатели, которые подписались на него раньше из-за его профессиональных постов
  • Технологии стагнируются и сворачиваются - раньше в фокусе внимания был Delphi и - где он сейчас?
  • Чем более профессиональным ITшником становится человек со временем - тем меньше времени у него на написание текстов. Время - деньги ;-)

По этим причинам IT-шные блоги через несколько лет

  • превращаются в "днявочки" / "жжшечки", в которых человек начинает общаться со своими знакомыми, 
  • тупо закрываются 
  • забрасываются
  • продаются на сторону.

В плане сообществ - все еще грустнее

Профессиональные сообщества - выживают только за счет user-generated контента - смотрите, кто сейчас на плаву в IT среде? ХабраХабр да Stack-Overflow либо специализированные форумы с не сильно большой посещаемостью.

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

Единственное исключение - это те люди, чья деятельность напрямую зависит от их ИЗВЕСТНОСТИ - это тренеры, консультанты, фотографы и так далее.  То есть те люди, которые совершают сделки с большим количеством разных людей/организаций за действия, совершаемые за небольшие периоды времени.

Программисты и сисадмины к этому не стремятся - они, как правило - работают на одну-две организации долгое время, по этой причине - известность им не сильно помогает в профессиональной деятельности. Ну... если только они не закоренелые фрилансеры. ;-)

Но вот если программист хочет стать учителем-"гуру" - тогда да, блоггерство имеет смысл - генерируем контент, нагоняем учеников и продаем им секреты мастерства. Но увы - эти секреты зачастую устаревают или просто становятся неактуальными со временем - не забывайте, что если программист ДЕЙСТВУЮЩИЙ - плодить потенциальных конкурентов ему просто не выгодно.

По этому на плаву держаться либо сообщества с тысячами студентов, генерирующих сообщения ( с кнопками оценки like / facepalm, ) - в которые профессионалы иногда заходят поржать а иногда уделяют свое время  чтобы написать небольшой ответ к умным вопросам (типа StackOverflow), либо небольшие групки-сообщества, зачастую закрытые от публичного доступа.

А личные IT-блоги - потихоньку вымирают, ибо многим авторам просто не нравится вещать в пустоту...

Если что - то я так... мимо проходил. Я обычный графоман - свои мысли записываю, чтобы навык их формулировать и записывать не пропадал...

Особых надежд на этот блог не возлагаю - это записная книжка ;-)

суббота, 18 августа 2012 г.

Блокировка аккаунта.

Здравствуйте,

 Ваш профиль будет заблокирован, в связи с жалобой, поступившей к администрации 14.08.2012.

Согласно пункту 14.3 пользовательского соглашения, Google оставляет за собой право временно приостановить либо прекратить предоставление услуг Google Mail, своевременно уведомив об этом пользователя.

Опровергнуть заявление можно, пройдя аутентификацию: http://support.google.com/cgi-bin/?start?unblocked=2008474861215660

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

Жалобе присвоен номер id2008474861215660.

С уважением, Google Team

Получено с адреса teame.suport.corp@gmail.com

"Божественно" (с) - я считаю... ссылка подменена, URL другой, но дизайн - один в один ;-)

четверг, 9 августа 2012 г.

FileMerge exited - Compare Script Error


Диагноз

При попытке сделать Diff файла в Coda -  не происходит вообще ничего.
При попытке сделать Diff в Versions вываливается такая ошибка.


FileMerge exited with the following error:

You have not agreed to the Xcode license agreements, please run 'xcodebuild -license' (for user-level acceptance) or 'sudo xcodebuild -license' (for system-wide acceptance) from within a Terminal window to review and agree to the Xcode license agreements.

Решение

Собственно - нужно сделать то, чего вам и рекомендуется ;-)

xcodebuild -license

потом Space - для пролистывания лиценций и печатаем agree - для того чтобы согласится.

Теперь - можно пользоваться. Что это было - не понял, либо обновление XCode (что вероятнее), либо Mountan Lion.



вторник, 7 августа 2012 г.

Ubuntu sudo без пароля

sudo visudo
Добавляем в самый конец строчку где superpuperuser - ваш логин
superpuperuser ALL=(ALL) NOPASSWD: ALL
Готово

понедельник, 30 июля 2012 г.

Stream.ru Кинотеатр на iOS с дешевым месячным абонементом

А это собственно говоря, чем мы занимаемся - обзор нашего приложения Stream.ru на iPhones.ru.

Постепенно российский App Store наполняется интересными развлекательными приложениями для любителей кино, способными в какой-то мере заменить американский iTunes, славящийся своим выбором сериалов и голливудских лент. Так, ранее на страницах iPhones.ru уже рассматривались такие приложения как MaxiFilm и aikino!, но герой сегодняшнего обзора хоть и ориентирован на ту же самую сферу и в некоторой степени пересекается с упомянутыми приложениями функционально, но при этом все же имеет ряд серьезных отличий, главное из которых — это система видеопроката.

 При первом запуске клиент Stream для iOS, который является универсальным приложением, раскрывает все карты, не оставляя никакой интриги. Ну и правильно, так как без подсказки могут возникнуть вопросы, без ответов на которые разобраться с программой можно далеко не сразу.

Читаем, ставим, смотрим лицензионное видео в хорошем качестве на большинстве девайсов БЕЗ рекламы - iOS, Android, PC, TV.

понедельник, 16 июля 2012 г.

Как найти долгие запросы в Tornado?

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

Пример лог-файла

[I 120704 17:24:50 application:264] 200 GET /session/info/ (xxx.33.251.70) 138.56ms
[I 120705 18:17:15 application:264] 200 GET /catalog/xxxx/(xxx.33.251.70) 572.84ms
[I 120706 12:24:53 application:264] 200 GET /session/info/ (xxx.33.251.70) 127.04ms
[I 120706 13:03:12 application:264] 200 GET /session/login/ (xxx.33.251.70) 10.36ms
[I 120706 13:05:04 application:264] 200 GET /session/info/ (xxx.33.251.70) 209.89ms
[I 120706 13:06:59 application:264] 200 GET /session/info/ (xxx.33.251.70) 10.08ms
[I 120710 16:50:53 application:274] 200 GET /session/info/ (xxx.33.251.70) 171.46ms

Команда

# grep '200 GET' ./log/webapp.log |  sed 's/ms/ ms/g' | awk '{ if ($9 > 100 ) print $p0'}

Где 100 - минимальное время запроса

среда, 4 июля 2012 г.

Как восстановить ну ОЧЕНЬ большой dump MySQL?

Если дамп базы с боевого сервера MySQL весит НУ ОЧЕНЬ много, то для ускорения импорта в mysqld имеет смысл ВРЕМЕННО выставить следующие значения в my.cnf

set autocommit=0

unique_checks=0

foreign_key_checks=0

и перезапустить сервер

#sudo service mysqld restart

После импорта дампа -  нужно вернуть на место родные значения.

Для восстановления из бекапов - этот способ не рекомендуется,  он скорее - для разработческих серверов/копий.

понедельник, 25 июня 2012 г.

Как перемещать 3D камеру в Blender на MacBook?

Занесла меня тут нелегкая в 3D - с которым лет 10-15 уже дела не имел ;-) Последний раз чего то пытался рисовать еще в 90-е годы в институте в VRML. Понял, что не мое - но тут - НАДО! ;-)

Скачал Blender под MacOS, поставил и вот нужно мне некоторые предметы рассмотреть в трехмерке весьма тщательно и подробно - ан нет.

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

Все, думаю - кранты - необходимый мне предмет ну никак не рассмотреть... ;-(

Рецепт

Идем в User Preferences -> Input и включаем галки

[v] Emulate 3-button mouse
[v] Emulate Numpad

В итоге с помощью цифровых клавиш  2<->8 и  4<->6 можно хоть как-то крутить камеру в трехмерке. Неудобно - но хоть как-то
И да, оказывается тут еще и на Python можно писать... Ляпота ;-) ;-)

суббота, 23 июня 2012 г.

Windows Phone 7 Outlook Error Error code: 80072F0D

Если Ваш новый телефон на Windows Phone 7 не может присоединится к Exchange с самоподписанным сертификатом, выдавая что-то в стиле

Outlook Error
Not updated
There is a problem with the certificate for mymailserver.ru. Contact a support person or your service provider.
Error code: 80072F0D

То нужно попросить админа Вашего почтового сервера выслать Вам сертификат на любой другой почтовый ящик - например на gmail.com.

И установить его, собственно - прямо из письма. Краткое содержание предыдущих 500 серий.

понедельник, 18 июня 2012 г.

Как скрыть версию nginx?

В конфиг nginx в раздел http добавляется строка

server_tokens off;

а в php.ini

expose_php = Off

суббота, 9 июня 2012 г.

The Elder Scrolls Online: Full Gameplay

В моей жизни было три онлайн игры которые меня заинтересовали - Ultima Online, Eve Online и  Entropia Universe. После Энтропии - не могу смотреть ни на одну онлайн игру, но ЭТО...

Ролик с геймплеем The Elder Scrolls Online с выставки E3.

Ординаторы, Vvangefell, родные пенаты и многое другое...

"Я просто оставлю это здесь" (с)

четверг, 31 мая 2012 г.

Как передавать проекты? Или какая нужна документация?

Один старый друг задал мне хороший вопрос - как подготовить программный проект к передаче другому менеджеру - какая документация необходима?

Исходя из своего прошлого - описал ему свое видение - "на мой выпуклый глаз" (с) - как обычно это происходит в больших разработках. Потом подумал и решил оставить это тут - мало ли кому еще пригодиться?

Итак, хороший тон - есть корпоративная wiki + feature/bug-тракер, в которых ведутся документация и разработка соотвественно - они  и есть основной источник всех знаний о проекте.

Большие компании обычно используют связку Jira+Confluence (но не обязательно) - есть и много других вариантов (Redmine, MantisBT и прочие). Хотя на мой вкус, сравниться с грамотно настроенной Jira, которая проинтегрирована в Конфу - не может никто ;-)

В Wiki и ведется общая документация, то есть - составляются изначальные технические требования к продукту, пишется roadmap по версиям, рисуются usecase использования и т.д.

Исходя из тех требований и версий - собственно, потом и расставляются задачи по людям в зависимости от версий и так далее.

Степень готовности проекта оценивается исходя из "выполненности" задач разработчиками и тестерами.

Все вышесказанное - хороший путь - если ресурсы позволяют делать "по уму".

Если же нет - то от продукта "в общем" необходима следующая документация - что-где-когда? - я тут смешаю технические и менеджерские знания.

Что имеет смысл запросить от предыдущего владельца?

  • изначальные технические требования к продукту и список того, что поменялось за время разработки - чего должно быть?
  • архитектура и используемые технологии - как оно работает?
  • usecases использования - желательно в UML - как используется?
  • расписанный roadmap по версиям - когда, собственно?
  • текущее положение проекта - что уже сделано, что осталось? 
  • estimate - когда сделается?
  • схема и описание инфраструктуры проекта. Это список репозиториев с кодом, production/staging/test серверов, баз данных и так далее с доступами. Собственно - где и что крутится?
  • How-to / база знаний - например, как настроить/развернуть новый сервер?
  • имеющиеся проблемы в проекте"в-общем" и предлагаемые способы их решения - как технические, так общие и по людям, занятым в проекте (например, тестер Ипполит пьет горькую и опаздывает на работу ;-) )
Ну вот как-то так...

среда, 30 мая 2012 г.

Adsense Spam или простейший способ "слить" свой рекламный бюджет

Меня каждый раз удивляют контекстные объявления, откровенно сливающие бюджет рекламодателей.

Пример




Объявления
  • Spam Veggie Pita Pockets - Server 8
  • French Fry Spam Casserole - Bake 30-40 minutes
  • Spam Imperial Tortilla Sandwiches - To serve each roll in half
Показываются в папке Spam от Gmail русскоязычному пользователю, а значит - немалые деньги рекламодателя фактически просто  вылетают в трубу уходят в Google...

А простейшая настройка компании - несколько стоп-слов и фильтр по стране-языку сэкономил бы кое-кому массу денег...

Контекстная реклама - гениальное средство для законного отъёма денег у населения в карман владельца системы. Просто... и гениально.

вторник, 29 мая 2012 г.

Webmoney для iPhone

Ну в-общем, как и предполагал ранее - клиент Webmoney для iOS не заставил себя долго ждать.


Приятно.

Качать тут.

Интересно, сколько времени у них approve от Apple занял? И с какого раза

понедельник, 21 мая 2012 г.

Memcache не запоминает данные больше чем на 30 дней (expiration time)

При при попытке сохраненить данных в Memcache на срок больше чем на 30 дней (2 592 000 секунд) - данные не запоминаются ВООБЩЕ.

Кто виноват и что делать?

Сохранять в timestamp + expiration time - на Tornado/Python это выглядит как-то так

from datetime import datetime, timedelta
import tornado.escape

class MyApplication():

    def get_expire_time(self):
        start = datetime.now()
        session_length = self.settings['session_time']
        
        delta = timedelta(seconds=session_length)
        expires = start + delta
        return expires

    def save_session(self, data)
        end_time = time.mktime(self.get_expire_time().timetuple())
            
        self.mc.set(key, tornado.escape.json_encode(data), end_time)

Навеяно StackOverflow

четверг, 17 мая 2012 г.

Корректная кодировка в email - Python+UTF8

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

Вчера понадобился аналогичный вариант для Python c UTF-8 с использованием quopri

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import quopri

def QuoHead(String):
    s = quopri.encodestring(String.encode('UTF-8'), 1, 0)
    return "=?utf-8?Q?" + s.decode('UTF-8') + "?="

FIOin = "Андрей Петрович"
emailout = "some@test.ru"
emailin = "some2@test.ru"

msg = MIMEMultipart()
msg["Subject"] = QuoHead("Добрый день " + FIOin).replace('=\n', '')
msg["From"] = (QuoHead("Ирина Федоровна") + "  <" + emailout + ">").replace('=\n', '') 
msg["To"] = (QuoHead(FIOin) + "  <" + emailin + ">").replace('=\n', '')
m = """Добрый день.
  Это тестовое письмо.
Пожалуйста, не отвечайте на него."""


text = MIMEText(m.encode('utf-8'), 'plain', 'UTF-8')
msg.attach(text)
print(msg.as_string())


Найдено тут.

понедельник, 14 мая 2012 г.

Как установить MySQL SSH tunnel?

Если вам нужно приконектится к внешнему MySQL, а его порт 3306 закрыт firewall, то быстрейший способ получить желаемое (кроме установки пива админу) - это установить свой собственный SSH tunnel - с гейшами и шахматами.

Делается это так.

ssh -f -L 8080:my.super.puper.host.ru:3306 -l remote_user another.my.super.system.org sleep 60

Понятно, что SSH на firewall должен быть открыт.

После установки туннеля - уже обращаемся к самому себе:

mysql -h 127.0.0.1 -P 8080 -u user -p database

Можно жить.

суббота, 5 мая 2012 г.

Mail.ru втихую удаляет редиректы на другие почтовые сервисы

Восстанавливая пароль на один свой аккаунт, вспомнил, что зарегистрировал его на старый ящик на mail.ru, с которого уже года 4 как идет редирект на Gmail.

Винни-Пух подождал пять минут - письма не было. Он посмотрел на часы и подождал еще 10 минут... письма не было....

После чего Винни-Пух матюгнулся и полез на web-интерфейс Mail.ru. Письмо нашлось... вместе с 4724(!!!) письмами за полгода.

Причина наипростейшая - в настройках Mail.ru редиректа ВНЕЗАПНО исчез мой адрес на Gmail. При опросе знакомых выяснилось, что случай такого деликатного слива - далеко не единичный.

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

понедельник, 30 апреля 2012 г.

Facebook не посылает email сообщения?



Сегодня, зайдя в Facebook, заглянул в личные сообщения и с большим удивлением увидел два предложения об удаленной работе, датируемые - одно октябрем 2011, другое - декабрем 2011 + еще одно общего характера.


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

Оповещения на email я не получал, кстати - это точно. Единственый вариант - это то что они вдруг свалились в спам, хотя обычно этого не происходит.


Что самое обидное - в то время я еще был достаточно свободен, а сейчас - уже нет сил и возможности, да и не актуально скорей всего

Погуглив, понял, что проблема не единичная, так что теперь - буду смотреть внимательно.

воскресенье, 29 апреля 2012 г.

Востребованность Python Tornado/Twisted

Кстати - об асинхронных фреймворках и их востребованности.

Решил пробить количество вакансий на асинхронные фреймворки на Python - Twisted и Tornado.

Далее факты - и ничего кроме фактов.

Linkedin

  • python twisted - 10 вакансий против 1026 участников
  • python tornado - 14 вакансий  против 815 участников

HH

  • python tornado - 0
  • python twisted - 1 вакансия

Moikrug

  • python twisted - 2 вакансии
  • python tornado  - 1 вакансия

То есть в мире - на 1 открытую вакансию на асинхронный питон приходится 100 кандидатов для twsted и 59 - tornado.

Что интересней -  linkedin по запросу python django дает 208 вакансий 18469 участников - на 1 вакансию 71 потенциальный кандидат.

Что как-бы намекает...

Ну а php -  вообще полный ахтунг - 2060 вакансий и 634347 кандидатов -> 308 человек на одну позицию.

Кстати, хороший Python-dev с Торнадой/Twisted по прежнему - ищется.

пятница, 27 апреля 2012 г.

Яндекс-Директ тестирует новый дизайн объявлений?

Сегодня несколько раз заметил случайное появление нового дизайна Яндекс-Директа на сайте.

Выглядело это так

Вид объявления - более плотный, резко изменен стиль и цвет заголовка блока, ссылка "Все объявления" выделена серым background с фигурной "фишечкой".

При перезагрузке страницы - дизайн объявления резко сменился на обычный.


Экспериментируют, видимо...

 
Qzminn
Мы действительно тестируем новый дизайн блока на небольшой доле трафика. Для эксперимента цвета подбираются автоматически; в дальнейшем вы сможете гибко настраивать все элементы в блоке.
Для нас важно ваше мнение, поэтому мы будем рады любым отзывам о новом дизайне.

среда, 25 апреля 2012 г.

MacOS X - использование mysql из Zend Server

Для использования MySQL клиента из Zend Server под MacOS вместо установленного из портов (зачем тащить еще один порт - если mysql уже есть в системе? ) нужно сделать следующее:

1) проверить есть ли /etc/zce.rc -

$ /usr/local/zend/mysql/bin/mysql
/etc/zce.rc doesn't exist!

2) создать/отредактировать его

ZCE_PREFIX=/usr/local/zend
if [ -z "$LIBPATH" ];then
   LIBPATH=/lib:/usr/lib:/usr/local/zend/lib
else
   LIBPATH=$LIBPATH:/usr/local/zend/lib
fi
export LIBPATH
APACHE_VER=2.2.11
WEB_USER=qtmhhttp
WEB_GROUP=nogroup
APACHE_PID_FILE=
PRODUCT_NAME=ZendServer
PRODUCT_VERSION=5.0.0
export INSTALLATION_UID=091708121207
DIST=pe
JB_EN=true
ZEND_TMPDIR=/tmp

3) Сделать симлинк на зендовский клиент

sudo ln -s /usr/local/zend/mysql/bin/mysql  /usr/bin/mysql

Теперь можно работать - ну или собираем из портов, либо ставим MAMP (не люблю).

вторник, 17 апреля 2012 г.

Аниме Mass Effect: Paragon Lost - Teaser

И тут говорит, "нас так попёрло..." (с) 

Предыстория качка Джеймса Веги из Mass Effect 3, как он бодался с коллекционерами, и проимел свой отряд, по поводу чего несколько рефлексировал в игре.

Вот теперь нормальные гаражки скорей всего появятся, а то e2046 зажала перелить PVC фигурку Liara T'Sony от Kotobukyia.

пятница, 13 апреля 2012 г.

Supervisord soft-reload

Чтобы мягко перезапустить supervisord (без убивания процесса), набираем

sudo supervisorctl reread
sudo supervisorctl update

вторник, 10 апреля 2012 г.

"Pretty print" - плагин JSON-formatter для Safari

Для человекочитаемого JSON в Safari ставим вот это расширение с GitHub - safari-json-formatter .

Мелочь, а приятно. ;-)

понедельник, 9 апреля 2012 г.

Ошибка: C compiler cannot create executables / can't read "build.cmd": Failed to locate 'make' in path

Если при установке/запуске MacPorts (или еще чего-нибудь консольно-компилятельного) вылезла ошибка

$ sudo /opt/local/bin/port install sshfs
Warning: The Command Line Tools for Xcode don't appear to be installed; most ports will likely fail to build.
Warning: See http://guide.macports.org/chunked/installing.xcode.html for more information.
--->  Computing dependencies for sshfsError: Unable to execute port: can't read "build.cmd": Failed to locate 'make' in path: '/opt/local/bin:/opt/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin' or at its MacPorts configuration time location, did you move it?
To report a bug, see http://guide.macports.org/#project.tickets

То нужно
  • установить XCode
  • зарегестрироваться как разработчик (благо теперь можно это делать бесплатно)
  • пойти в Xcode -> Preferences -> Downloads и установить Command Line Tools


суббота, 7 апреля 2012 г.

Немного о РИТ++ 2012

Съездил на РИТ++ 2012...

Если честно - уже лет так как 6-7 на конференции не "ездун", а тут была возможность - решил воспользоваться. Как оказалось - не зря, были достаточно интересные доклады.

 Выкладываю немного фото, не все мне нравятся - ну да и шут с ним.

В первый день, понедельник 2 апреля была очень хорошая погода - поэтому решил немного поснимать столицу "на подходе".




Прелюдия















Обратите внимание  - у коллеги на MacbookAir крутится Windows - достаточно необычное сочетание. К слову сказать, концентрация яблок на квадрадный метр - зашкаливала, ноуты с Бубунтой были редкостью.



Докладчики 



 Почему-то самым фотогеничным из докладчиков оказался финн из PostgreSQL



Аль-Джазира

Badoo



Момент, когда докладчика из Google спалили за использованием iPhone - на что он отмазался - дескать, вот и рабочий Андроид (из другого кармана) - а это подарок любимой жены на Рождество и вообще - фото на iPhone - это доказательство того, что я ДЕЙСТВИТЕЛЬНО читаю  доклад на конференции в России, а не пью с друзьями в ближайшем пабе. ;-) ;-)



Обед

Кстати, накормить несколько сотен голодных стартаперов (и не только) - задача нетривиальная, я бы даже сказал - "высоконагруженная"  ;-)



А в это время в кулуарах

Интриги, скандалы, расследования ;-)








Доклады

На client-side отделение не ходил (ну не мое ;-) ) - послушал доклады по backend, db, sysadm и немного общего руководства

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

Тезисы всех докладов http://ritconf.ru/2012/abstracts/