Analitycs

пятница, 9 сентября 2011 г.

Что не нужно в Python?


  • быстродействие
  • многопоточность 
  • компилятор
  • проверка типов
  • приватные методы
  • паттерн-матчинг
  • хвостовая рекурсия
  • switch-case
  • карринг
  • ленивость
  • алгебраические типы
  • округление результатов
  • соглашение об именовании 

Python - Да все это не нужно!

Я как бы НЕМНОГО переживаю из-за урезанной многопоточности но терпеть - можно.
И признайтесь честно - все это вам ДЕЙСТВИТЕЛЬНО нужно? ;-)

Проблема в PHP+cURL+CURLOPT_POSTFIELDS - после обновления

Обновив PHP и cURL поймал забавность - старая конструкция, нормально работавшая несколько месяцев

 $data = array(
  'id' => $id,
 );
 
 $ch = curl_init();

 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_POSTFIELDS, implode('&', $data));

 $result = curl_exec($ch);

 curl_close($ch);
  
 return json_decode($result);

перестала отправлять в POST данные.

Покурив маны, нашел ошибку в коде - не нужно implode на массив

 $data = array(
  'id' => $id,
 );
 
 $ch = curl_init();

 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

 $result = curl_exec($ch);

 curl_close($ch);
  
 return json_decode($result);

Нет, ну понятно - как бы косяк, но тогда вопрос - ПОЧЕМУ ЭТО РАБОТАЛО?

P.S. "Чем дальше в лес - тем толще партизаны" (с) Ненавижу...

четверг, 8 сентября 2011 г.

Как посмотреть количество соединений по статусам через netstat?

# netstat -an | grep ":80" | awk '/tcp/ {print $6}' | sort -nr | uniq -c

     58 TIME_WAIT
      2 SYN_RECV
      1 LISTEN
     22 FIN_WAIT2
    319 ESTABLISHED

среда, 7 сентября 2011 г.

Python+MySQL+Bit fields = Error: invalid literal for int() with base 10: '\x01'

Причина - не нужно сравнивать значения, полученные из битового поля MySQL сразу с  int значениями - 0 и 1.

Методически грамотно - преобразовывать:

if int(result) != ord(row['bit_filed']):
    bla-bla-bla

Как вставить копию данных в ту же самую таблицу MySQL с изменениями?

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

INSERT INTO megatable (id, server_name, server_ip, type, params, notification, account_id, status, is_active) SELECT 0, server_name, server_ip, 'ping', params, notification, account_id, status, is_active FROM megatable;

Работает ли на других диалектах? - мне не ведомо... ;-)

вторник, 6 сентября 2011 г.

Habrahabr - такой хабр... осеннее обострение?


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

Опрос про опыт работы PHP кодера и место его работы (офис/фриленс)

Разумеется, вариант "я PHP кодер, стаж больше 5 лет, и перешел нахрен на другой язык (python/ruby)" - автор забыл, но ему напомнили... После некоторого глумления в комментах пост исчез. Скриншотов снять не успел.

Создаём сайт на PHP без использования расширения в именах файлов

Здравствуй, Хабр! 
Многие из нас видели сайты, страницы которых не содержат расширения файла. Например, компания Google для поиска использует файл вида /search?q=%s. Многие также знают, что, как правило, такие сайты написаны с использованием технологии Java. Однако не все знают, что также можно делать и для php-скриптов. Если Вам стало интересно, прошу под кат.

Мне стало БЕЗУМНО интересно, но увы - пост уже ушел...

Анализируем производительность сервера

То человек, ВСЕРЬЕЗ предлагающий для построения графиков нагрузки серверов у кластера использовать Excel. Было тут, кеш Гугля

Аренда сервера или виртуальной машины в сети становятся все доступнее. На момент написания статьи аренда мощного 4-х ядерного сервера с неограниченным трафиком обходится всего в 70-100 долларов в месяц. 


По этой причине многие компании, веб-мастера и разработчики арендуют сервер для нескольких проектов вместо использования разделяемого хостинга. Преимущества очевидны: больший контроль над работой приложений и полное использование ресурсов сервера для своих проектов. Как определить, что производительности сервера стало недостаточно и пора производить обновление или замену? Какой из компонентов стал бутылочным горлышком? Эта статья поможет самостоятельно ответить на вопрос — требуется ли серверу замена? — используя сводные таблицы Microsoft Excel. 


Применяя описанный метод, для вас не составит труда подготовить красивый иллюстрированный отчет руководству, а также быстро найти узкие места в системе. Картинок будет много! Нам понадобятся две вещи: данные и инструмент их анализа. Для анализа данных производительности мы будем использовать «Сводные таблицы» из Microsoft Excel. В качестве примера данных используется записанный в CSV файл результат работы Perfomance Monitor. Это стандартный инструмент Windows Server, однако аналогично можно обработать данные, полученные на любой системе. 

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

Кстати, в третьем варианте человек-то именно Excel знал очень неплохо - судя по скриншотам. ;-)

понедельник, 5 сентября 2011 г.

Как скопировать dict в Python? copy.deepcopy

При частом переключении с PHP на Python часто ловишь баги и проблемы с копиями объектов, особенно - ассоциативных массивов/dict.
Что бы избежать неявных изменений данных - нужно делать deepcopy - полное копирование.

Вариант новичковый

    node_params = {}
    for key, value in data['params'].iteritems():
        node_params[key] = value

Вариант true pythonic ;-)

    from copy import deepcopy
    ...
    node_params = deepcopy(data['params'])    
Внимательнее с копиями ;-)