Сегодня было обсуждение нового проекта, со сроком на реализацию 2 месяца. И собственно постал вопрос на каком фреймверке писать. Было взято два варианта Twisted(мой любимый фрейм) и Django(самый раскрученый фрейм). До сего момента я никогда не юзал Django так как считал его копией Symfony но только для Питона. Но так как сроки довольно узкие то решил взять его в сравнение (так как имеет довольно много готовых модулей).
После двух часов изучения мануалов установки и связки lighttpd->fcgi->django+PostgreSQL были проведены первые тесты. И тут как бы я немножко офигел. На моем слабеньком ноуте Интел центрино 1.8 Django выдал 60rps против 670rps у Twisted.
В тесте выполнялся один селект из БД + генерация простого темплейта в пару байт.
В итоге я искренне не понимаю фанатов Django ибо как по мне то это полная лажа. Конечно можно врубить кеши и прочее, но как бы в Твистеде тоже. И в итоге выходит что можно экономить на мощностях в 10-15 раз, что поверте очень неплохо. Нет я понимаю, что сейчас привкли считать что главное не экономия а удобство и что легче докупать сервера, но не настолько же. Я как бы лучше потрачу лишний месяц на работу но буду экономить 90% на стоимости железа на весь период жизни железа.
Как по мне то программер должен писать код который экономит деньги, а не тот который их тратит.
Вообщем люди если вам дороги деньги не юзайте Django.
Спасибо Гуглу за приятные возможности.
Что бы понять всю суть советую почитать две неплохие статьи на эту тему:
Код для работы с этим всем прилагается:
country = 'fr' device = "Nokia N95 8Gb" user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' mmap_url = 'http://www.google.com/glm/mmap' geo_url = 'http://maps.google.com/maps/geo' from struct import pack, unpack from httplib import HTTP import urllib2 def fetch_latlong_http(query): http = HTTP('www.google.com', 80) http.putrequest('POST', '/glm/mmap') http.putheader('Content-Type', 'application/binary') http.putheader('Content-Length', str(len(query))) http.endheaders() http.send(query) code, msg, headers = http.getreply() result = http.file.read() return result def fetch_latlong_urllib(query): headers = { 'User-Agent' : user_agent } req = urllib2.Request(mmap_url, query, headers) resp = urllib2.urlopen(req) response = resp.read() return response fetch_latlong = fetch_latlong_http def get_location_by_cell(cid, lac, mnc=0, mcc=0, country='fr'): b_string = pack('>hqh2sh13sh5sh3sBiiihiiiiii', 21, 0, len(country), country, len(device), device, len('1.3.1'), "1.3.1", len('Web'), "Web", 27, 0, 0, 3, 0, cid, lac, 0, 0, 0, 0) bytes = fetch_latlong(b_string) (a, b,errorCode, latitude, longitude, c, d, e) = unpack(">hBiiiiih",bytes) latitude = latitude / 1000000.0 longitude = longitude / 1000000.0 return latitude, longitude def get_location_by_geo(latitude, longitude): url = '%s?q=%s,%s&output=json&oe=utf8' % (geo_url, str(latitude), str(longitude)) return urllib2.urlopen(url).read() if __name__ == '__main__': print i,get_location_by_cell(20465, 495, 3, 262) print get_location_by_cell(20442, 6015) print get_location_by_cell(1085, 24040) print get_location_by_geo(40.714224, -73.961452) print get_location_by_geo(13.749113, 100.565327)
Сделано:
Сегодня обновил онлайн генератор резюме. http://create-cv.appspot.com или http://creotiv.in.ua/create_cv
Теперь он имеет более простой и не напрягающий дизайн.
Генерация резюме производится в формат PDF.
Вот пример сгенерированого резюме:
На данный момент сервис базируется на Google Engine.
Мне крайне интересно ваше мнение по поводу данного сервиса. Нужен ли он вам и стоит ли его развивать.
Все коментарии по сервису просьба оставлять в Реформал.ру (синяя кнопка с правой стороны страницы)
I create some binding for z3c.rml and reportlab packages so it can work under Google App Engine.
In z3c.rml i replaced lxml.etree with ordinary xml.etree.ElementTree
And in reportlab replaced loader (if i don’t mistake) so it can work with zipLoader. Thanks to the heldermanlaw
You can get this all from my gitgub http://github.com/creotiv/RML-to-PDF-converter-for-Google-Engine
Ввиду большого интереса к Google Application Engine решил перевести переводчик азбуки Морзе на него.
Что получилось можно лицезреть здесь http://morze-code.appspot.com/
Как и ожидалось использование GAE крайне простое и приятное. Особенно радует статистика в режиме лайв и версионинг приложения.
Маленьким расдражителем лишь является то что нельзя руками установить регион для которого работает приложение, этим GAE занимается сам. В результате этого возможны тормоза в начале, так как вас могут связать с сервером в США.
А так все чудесно и крайне приятно)
Месяц назад в моей голове родилась идея по разведению стартапов. Благо идей хватает и остается лишь их грамотно реализовать. И вот тут то я понял, что к этому делу нужно создать грамотный подход абы не уйти в минуса не только по деньгам но и по времени.
Для начала нужно понять что такое стартап, что бы понимать откуда растут ноги.Хотя в сети и так много чего написано, но как мне кажется это не совсем то что есть на самом деле.
Стартап – это не проект и тем более не бизнес, а лишь проба пера для ощупывания реальности. До начала стартапа у людей есть лишь идея, иногда хорошая, иногда не очень. Создавай стартап вашу идею оценивает живая аудитория, и именно здесь вы понимаете идет ваша идея в архив, на свалку или преобразовывается в проект, а в последствии и бизнес. Вот что для меня лично означает стартап.
Теперь мы понимаем что ресурсы для стартапа должны жестко лимитироваться, так как это всего лишь проба, коих может быть несметное множество. Поэтому важно разработать для себя быструю и дешевую схему для создания стартапов.
Google Application Engine (GAE) – на мой взгляд идеальное решение данной задачи. Лимитирование для бесплатного приложения довольно таки человеческие http://code.google.com/intl/ru-RU/appengine/docs/quotas.html
Развертывание до ужаса простое. В итоге имеем идеальную площадку для взращивания стартапов за 0$ ))
I read many articles on the net and all of them are wrong, cause all of these people simple didn’t read the manuals)
Base problem not in the encoding of data to generate, but in the Font Unicode supporting.
Fore example just download this Unicode-based font: CODE2000
Thats all Folks)
Мы молодая компания, но имеющая за плечами немалый опыт работы в сфере ИТ и Консалтинга. И наша основная цель это делать отличные проекты за хорошие деньги.
В мире где практически каждая компания пытается создать что-то немыслимо функциональное и всеобъемлющее, мы акцентируем свое внимание на простоте, проработке деталей и специфике области применения нашего решения. Мы не стремимся сделать все, мы стремимся сделать меньше но идеально. Потому, что бизнес не терпит ошибок и мы это понимаем и именно поэтому мы создаем проекты которые решают проблемы, а не создают новые.
Чуть больше о нашей компании вы можете узнать на нашем официальном сайте Imaginarium