Архив за 19 июня 2012 - 3

в 14:17, , рубрики: pygame, python, Песочница, метки: ,

Hello world, %Username%. Я заметил, что в последнее на Хабре время достаточно много постов про python. Да, язык набирает популярность. Ура товарищи! Вот и я решил приобщиться к этому языку. Достаточо скоро надоело хэлловорлдить и захотелось мне написать что то нужное.Лирическое отстпуление: Перешел с win на ubuntu(Знаю, что попса, но ради дела, а не понта делается) и понял, что нет приемлимого аудиопроигрывателя в моем поле зрения, все проигрыватели предлагали либо выглядели не приятно, либо были слишком тяжелыми. Немного поленившись я взялся за дело.Читать полностью »

Web of Trust подключил Безопасный Поиск Яндекса (SafeBrowsing API) Компания Web of Trust (WOT) объявила о подключении к Безопасному Поиску с помощью Safe Browsing API Яндекса.

Безопасный Поиск Яндекса в автоматическом режиме осуществляет проверку сайтов на наличие в них вредоносного программного обеспечения и иных угроз безопасности.

Использование Safe Browsing API Яндекса позволяет оперативно получать информацию о найденных угрозах и предупреждать владельцев web сайтов а так-жн пользователей браузерного дополнения (add-on) WOT.

Сочетание оценки сообщества и автоматической антивирусной проверки позволяет более точно оценить потенциальную опасность web ресурса.

Читать полностью »

Intel HAXM
Каждый, кто хоть раз работал с эмулятором для разработки приложений под Android, знает, что даже на современном железе эмулятор тормозит так, что для его использования нужно нечеловеческое терпение. То есть, наверное, надо самому стать андроидом-киборгом.

Но есть и еще один метод – попроще.

Intel Hardware Accelerated Execution Manager (Intel® HAXM) — это решение, использующее аппаратные возможности виртуализации (Intel® VT) и позволяющее значительно ускорить работу эмулятора Android.

Данное решение работает в паре с эмулятором Android для х86 устройств. При этом, эмулятор будет работать со скоростью, приближенной к скорости работы реального устройства, что поможет сократить время на запуск и отладку приложения.
Читать полностью »

Всё началось с того, что мы задумали веб портал для продажи мебели. Это веб портал для продажи предметов мебели и интерьера, и что у меня самого есть множество идей, которые мы должны реализовать в рамках будущего портала. Все эти идеи были похожи на интернет-магазин, но при этом они не совсем укладывались в рамки обычного магазина. Например, товары мы должны показывать в красивых интерьерах реальных квартир — это интересно, а главное удобно для покупателя. Значит, у нас на сайте должны быть отдельно карточки и интерьеров и товаров, которые образовывают структуры. Вот еще задачка: сам портал не имеет своего склада и логистики, а только агрегирует информацию: собирает, анализирует, красиво показывает и генерирует продажи у партнеров. Значит нужно ввести различных поставщиков, показывать различные условия доставки и т.д. Поэтому перед нами встал вопрос: что мы можем использовать, чтобы создавать портал не с нуля, но при этом иметь большую гибкость при кастомизации выбранных решений. Итак, что же у нас получилось.

Выбор LAMP
Вначале мы выбрали общий стек технологий. Здесь было просто: ведь наиболее распространённый выбор технологий для веб-порталов — это LAMP (Linux, Apache, MySQL, PHP). Мы не хотели изобретать велосипед, писать все с нуля, так как это и дорого и долго. Нам нужно было максимально быстро создать портал с использованием каких-либо библиотек/фреймворков, возможно CMS/E-commerce систем. Если LAMP технологии наиболее распространены — то значит, мы сможем найти большое количество различных open-source решений, а из них сможем выбрать что-то подходящее для «фундамента» своего портала.

Готовые E-commerce системы
Как только мы выбрали PHP и все, что с ним связано, мы начали смотреть, что уже есть готового по нашей тематике. Конечно же, мы сразу начали думать про готовые E-commerce системы, например, набирающую популярность Magento. Нашли нескольких партнеров Magento, которые занимаются кастомизацией и внедрением этой системы. Попросили сделать примерную оценку того, во сколько нам обойдется «заточить» Magento под все наши требования, включая оптимизацию быстродействия, с которым у Magento, как оказалось, есть сложности, особенно у бесплатной версии. Наши расчеты показали, что по стоимости работ и дальнейшей поддержке в краткосрочном периоде — это будет даже дороже, чем, если бы мы писали все с нуля на чистом PHP. Мы посмотрели другие E-commerce решения: osCommerce, ZenCart, PrestoShop. Здесь ситуация была примерно такая же, а может даже хуже. Таким образом, мы вернулись в исходную точку поиска.

Фреймовики и библиотеки
Тогда мы решили смотреть в сторону более общих решений: фреймворков и библиотек. Мы решили остановиться на выборе 3-ех наиболее популярных фреймворков: Zend 1.11, Symfony 2 и Yii. Здесь у нас был более технологичный подход к выбору: мы хотели полную поддержку PHP 5.3, причем, желательно, чтобы сам код фреймворка предполагал стиль написания PHP 5.3, а именно как можно больше ООП, ведь нам же это все еще поддерживать потом. От Zend отказались сразу. Он очень монструозный, а нам нужно процентов 20 от его функциональности. К тому же ожидаемый 2.0 тогда был еще в форме идей на сайтах основных разработчиков. Yii был еще очень свежий на тот момент (осень 2011 года), а мы знаем, чем бывают чреваты эти «горячие пирожки» (как показало время – версия Yii 2.0 с полной поддержкой PHP 5.3 пишется до сих пор). И мы решили не рисковать и взять наиболее готовый и стабильный продукт – Symfony 2.

ORM решения
Итак, у нас были выбраны и платформа и фреймворк: LAMP + Symfony2. Нам также нужно было решить проблему с уровнем хранения и представления данных в нашем портале. Наверное, хорошо написать что-то специфическое для себя – это и работает быстрее и меньше кода. Однако основная наша проблема была в том, что мы делали свой продукт, и у нас не было четкой и постоянной спецификации. Улучшения же (читай: частые изменения) в сущностях, их взаимосвязях и бизнес-логике, требовали какого-то гибкого решения, которое мы могли бы быстро изменять и не бояться получить массу regression багов. В данном случае мы пошли хорошо проторенной дорогой. Сейчас большую популярность набирают различные ORM решения. Это не зависит от стека технологий или домена приложения. Посему после недолгих рассуждений мы выбрали ORM Doctrine 2. Тем более что она входит как стандартный модуль в Symfony 2. К тому же, мы понимали, что с ростом объемов данных и взаимосвязей между сущностями при работе на портале, мы перейдем к использованию нереляционной СУБД, например, MongoDB, а с выбранной ORM – Doctrine это также просто реализуется.

Итого у нас получился интересный набор технологий:

LAMP + Symfony 2 + Doctrine 2.

Неявным плюсом комбинации этих технологий оказалось то, что нам было очень легко в дальнейшем мотивировать сотрудников к работе в нашей команде, так как технологии, которые мы выбрали, очень свежие и перспективные. Конечно, за исключением LAMP.

Читать полностью »

image
Если при загрузке программы, показывается Splash Screen (это небольшое окно с картинкой), то к таким программам пользователи относятся лучше, чем программам, при запуске которых несколько секунд ничего не происходит.
В интернете есть много примеров изготовления Splash Screen-а в Delphi, однако обычно это квадратная форма с натянутой на ней картинкой.
Но у многих программ это не квадратная форма, а красивое окно со сглаженными краями.
Я пытался сделать такое окно с помощью регионов, но края были неровные и смотрелись неказисто.
Выходом стали «Слоистые окна» (LayeredWindow).
Читать полностью »

image

Совсем скоро разработчики мобильного ПО смогут больше узнать о системе BlackBerry 10 на Московской конференции в рамках мирового «ежевичного» турне BlackBerry 10 Jam. 26 июня в Lotte Plaza программисты и дизайнеры смогут вникнуть в тонкости обновленной платформы и задать свои каверзные вопросы.Читать полностью »

Файервол представляет из себя bash-скрипт, который интегрирует с помощью соответствующих пакетов следующие функции:

  1. Файервол внешний и внутренний (пакет iptables).
  2. Учёт трафика внешнего и внутреннего (пакет iptables).
  3. Прокси-сервер для локальных сетей (пакет Squid).
  4. Контент-фильтр для локальных сетей (пакет DansGuardian).
  5. DNS-сервер для локальных сетей (пакет BIND).

Читать полностью »

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

Оптимизация показов — большой процесс, одной из частей которого является сохранение и анализ цепочки событий, связанных с жизненным циклом баннера — показ, клик, конверсия, … всё это начинается с сохранения записей о событиях. Каждое из событий происходит на одном из множества серверов, причем, по понятной причине мы стараемся обслужить всю цепочку в одном месте — в этом случае не нужно заботиться о том как собрать в целое разбросанные части. Но в реальной жизни случается что угодно — сервера падают, сеть не работает, софт апгрейдится или перегружен — в общем, по многим причинам обслуживание последовательных событий иногда происходит на разных серверах и даже в разных датацентрах и к этому нужно быть готовым.

Задача которую нужно было решать — каким образом хранить, искать, модифицировать информацию о последовательности событий при следующих условиях:

  • события могут происходить на разных серверах и в разных датацентрах (восточный и западный берег США, Европа)
  • интервал между событиями — от долей секунды до нескольких дней
  • к моменту получения завершающего события (например конверсия) информация обо всей цепочке должна быть на руках
  • время жизни информации — примерно десять дней, после чего она должна быть удалена, желательно автоматически, через TTL
  • темп чтения/записи событий — сотни или тысячи в секунду
  • Время ответа: желательное — до 10мс, допустимое — в пределах 50мс, максимальное — до 100мс
  • информация должна быть доступна «всегда» — независимо от аварий железа, сети, апгрейдов
  • система должна легко масштабироваться: добавление новых серверов, датацентров должно происходить прозрачно для остальных сервисов (допустима деградация времени ответа в заданных пределах).

Последние два пункта очень важны для бизнеса и просто жизненно важны для опс инженеров если они хотят спокойно выполнять свои обязанности днём, и спокойно спать ночью.
Читать полностью »

Да-да. Именно размышления. Я не стану перечислять по пунктам «39 вещей, которые поднимут ваши продажи на 235%». Вместо 39 и 235 можно подставить любую другую цифру. Всякий здравомыслящий человек понимает, что ограниченные в своей конечности списки «how to’s» или «хаутусов», как я их про себя называю, нисколько не помогут в конкретной ситуации. По этому поводу есть хорошее высказывание одного ученого:

«Современному человеку, соблазненному техническим прогрессом и задавленному могуществом вездесущих технологий, не так уж легко поверить в то, что практика представляет собой вовсе не набор алгоритмов, операций и действий, но необходимо включает в самое свое существо глубокое понимание сути происходящего и производимого».

Так вот. По моему скромному разумению, глубокое понимание явлений и процессов происходит, когда человек практически работает в какой-то сфере, приобретает определенный опыт, затем рассказывает о своем опыте, а другие люди уже делают какие-то выводы лично для себя. Поэтому собственно я и хочу рассказать о своем 10-летнем опыте работы в продажах и маркетинге в IT. Сразу оговорюсь, что речь идет о западном рынке. С российским рынком дел иметь особо пока не приходилось.

Все просто: когда в конце 90х человек заканчивает лингвистический вуз, по специальности учитель английского и немецкого языка, то ясное дело, что учителем работать ну никак не хочется. И даже окончание магистратуры этому желанию не способствует. Можно было попробовать свалить куда-нибудь, к чему стремились многие однокурсники, и что некоторые сделали, но этот вариант оказался не для меня. To cut a long story short, деятельность моя в IT, начатая в качестве переводчика, плавно переросла в продажи и маркетинг.

Ситуация в то время была весьма благоприятной для людей, владеющих английским. Конец 90х -начало нулевых. В западном мире широко раскручена тема аутсорса. Толковые мозги девелоперов из постсоветского пространства востребованы весьма и весьма. Появилась кучка мелких и средних компаний, которые подвизались на аукционах проектов, или просто каким-то другим способом находили себе заказики. Некоторые особо разросшиеся, которым удалось подгрести под себя ресурсы (какое ужасное слово применительно к людям), предлагали (и до сих пор предлагают) не услуги по разработке софта на заказ, а просто мозги. Естественно, что этим компаниям были нужны менеджеры по продажам, которые могли урвать проектик на аукционе, или же успешно продавать эти самые людские ресурсы. Сразу оговорюсь, в те годы я вообще слабо себе представляла, что в IT можно делать не просто проекты на заказ и продавать разработчиков, но и делать свои (!) собственные продукты. Не спущенные на тебя клиентом, а захотеть, решить и сделать свой продукт. И еще при этом даже добиться успеха. Но я забегаю вперед. Это только с годами стало ясно, что продавать аутсорс или мозги, и делать маркетинг своего продукта – это две больших разницы, как говорил кто-то из классиков.

Поговорим немножко об аутсорсе. К чему сводились продажи:

1. Тусоваться на онлайн-аукционах проектов. Обещать сделать максимум всего за минимум. Эта работа очень похожа на то, что делает зазывала на восточном базаре: во все горло расхваливает товар, не стыдится приврать и пообещать больше, чем можно реально сделать. Ведь главное же урвать проект, а как там потом, и как поступать с такой страшной вещью, как «сhange requests» — это дело десятое. Как-нибудь разрулится. Иногда оно и в самом деле разруливалось, когда клиент понимал, что действительно он стал хотеть уже немножко не то, и требуется больше эфортов, а иногда нет. Опять же, в то время я никак не понимала, почему же эти клиенты с самого начала точно не знают, что им надо, и почему у них меняются требования. Звучит смешно сейчас, когда космические корабли и т.п. и когда agile стал мейнстримом.

2. Рассылки. Они же email marketing, они же direct mailing. Берутся базы каких-нибудь приблизительно подходящих prospects и оптом промыливаются. Рассылками до сих пор пользуются индусские разработческие фермы. Когда я натыкаюсь на этот спам в своем ящике, всякий раз удивляюсь: неужели же до сих пор находится кто-то, кто отзывается на такие предложения.

3. Пресловутый cold calling. Столь много воспетый в разнообразных книжуськах по продажам. Насколько я знаю, cold calling еще сколько-нибудь нормально мог работать в Европе. В USA люди настолько уже запуганы втюхиванием всего чего угодно, что до живого человека дозвониться очень сложно. Я ни разу не видела, чтобы из cold calling'а получилось что-то путное, хотя существуют мифы, что кто-то где-то якобы кого-то таким образом подцепил.

Читать полностью »

Преамбула

В настоящее время очень популярно заниматься визуализацией каких-либо данных на картах. Да прочем и не только визуализацией, применений множество: игры, гео-сервисы, визуализация, статистика и многое-многое другое. С одной стороны, применение canvas это хорошо и современно, с другой же — количество объектов может превышать все мыслимые и немыслимые пределы, что ведет к уменьшению скорости работы пользователя с такими сервисами, тысячи полигонов на canvas «тормозят клиента», браузеры «жрут» память в огромных количествах и т.п. Это не говоря уже о том, что хоть и редко, но необходима поддержка «старых» браузеров, не поддерживающих canvas/html5.

Простой пример

Рисуем тайлы с данными для GoogleMap на PHP
Представьте что-то подобное этой картинке, уменьшите масштаб и увеличьте тем самым количество полигонов в «кадре» до 5 000. Офисный компьютер двух- или трех-летней давности может и умереть на отрисовке такой карты. Бороться с этим можно просто добавив оверлей слой на карту со своими тайлами.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js