Analitycs

понедельник, 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())


Найдено тут.