Search
Write a publication
Pull to refresh
7
0
Маслов Александр @drakmail

SRE

Send message

«Новый форумный движок XenForo» или «Каким мог бы стать VBulletin 4.0»

Reading time3 min
Views7.8K
Сегодня через одного из моих друзей до меня докатилась новость об анонсе нового форумного движка XenForo. Его авторами являются два уважаемых разработчика Майк Салливан (Mike Sullivan) и Кир Дарби (Kier Darby), благодаря которым мир увидел VBulletin 3.x таким, какой он есть сейчас.

Читать дальше →

Поиск изображений на основе содержания

Reading time5 min
Views12K
Базы данных изображений могут быть очень большими и содержат сотни тысяч и даже миллионы изображений. В большинстве случаев эти базы проиндексированы только по ключевым словам. Эти ключевые слова вносит в базу оператор, который также распределяет все изображения по категориям. Но изображения могут быть найдены в базе и на основе собственного содержания. Под содержанием мы можем понимать цвета и их распределение, объекты на изображении и их пространственное положение и т.д. В настоящее время алгоритмы сегментации и распознавания развиты недостаточно хорошо, тем не менее, сейчас уже существует несколько систем (в том числе коммерческих) для поиска изображений на основе их содержания.

Читать дальше →

Идентифицируем пользователей Skype по перехваченному HTTP траффику

Reading time1 min
Views4.3K
Приветствую, %username%!

Ребята из VEST (те же, что взломали алгоритм обфускации Skype) предлагают идентифицировать http траффик пользователей Skype по следующей схеме:

Skype при запуске лезет проверять новую версию и делает это следующим образом:
  • Коннектится на ui.skype.com
  • Выполняет запрос вида GET /ui/0/4.2.0.169./en/getlatestversion?ver=4.2.0.169&uhash=1c1cda2a959fc2926d25b5a852fc6468c, где c1cda2a959fc2926d25b5a852fc6468c (без первой единички, все правильно) — это MD5 (Skyper + имя пользователя)


Таким образом, если я ломанусь проверять новую версию, то пойду по урлу

http://ui.skype.com/ui/0/4.2.0.169./en/getlatestversion?ver=4.2.0.169&uhash=139913753c2af23ce2a42767cfdc55f79

Конечно из MD5 мы имя пользователя не узнаем, но составить список популярных ников заинтересованным лицам труда не составит. А так же можно использовать это хэш как универсальный ID пользователя. До свидания анонимность, в общем.

Функции наносят ответный удар

Reading time5 min
Views2.3K
В этом топике хочу рассказать о подходе, который эксплуатирую уже несколько лет.
Сразу предупрежу, если Вы истовый фанат ООП, огромных конструкций и монструозных диаграмм классов, не читайте.

Вкратце, суть концепции — это перенос части unix way в программирование на PHP.
А конкретно, концепции простых программ, выполняющих одну функцию.
Читать дальше →

MapReduce или подсчеты за пределами возможностей памяти и процессора (попробую без зауми)

Reading time8 min
Views92K
Давно хотел рассказать про MapReduce, а то как ни взгляшешь на подобное — такая заумь, что просто ужас берет, а на самом деле очень простой и полезный подход для многих целей. И реализовать самому — не так уж и сложно.

Сразу скажу — топик — для тех, кто не разобрался что такое MapReduce. Для тех, кто разобрался — полезного тут ничего не будет.

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

Сначала опишу как она рождалась (подход был неправильный), а потом как надо правильно делать.

Как посчитать все слова в Википедии (неправильный подход)


А родилась она, как и, наверное, везде — для подсчета частоты слов, когда обычной памяти не хватает (подсчет частоты всех слов в Википедии). Вместо слова «частота» тут скорее должно быть «количество вхождений», но для простоты оставлю «частота».

В самом простом случае мы можем завести хеш (dict, map, hash, ассоциативный массив, array() в PHP) и считать в нем слова.

$dict['word1'] += 1

Но что делать когда память под хеш кончится, а мы посчитали только одну сотую всех слов?

Читать дальше →

MapReduce: более продвинутые примеры, попробуем без зауми

Reading time9 min
Views34K
Чтобы не откладывать в долгий ящик сразу порассказываю несколько других примеров для MapReduce, обещанные в топике "MapReduce без зауми". (Если не понимаете полностью что такое MapReduce — прочитайте тот топик сначала! Без него не разберетесь)

Поговорим тут о подсчетах национальностей в городах, средних оценках и приводах учеников, ТИЦ, PageRank, входящих ссылках, нишевых ключевых словах, словах-синонимах, социальных сетях и общих друзьях. Постараемся обойтись без математических знаков и зауми.

Однако тема сама по себе сложная и все же напрячь мозги придется. Когда поймете — будет очень просто.

Входящие ссылки


Допустим у нас есть Интернет. В Интернете есть исходящие ссылки.

Допустим на входе у нас есть такие данные об ИСХОДЯЩИХ ссылках, собранные нашим паучком:

habrahabr.ru -> thematicmedia.ru, apple.ru, microsoft.com, ubuntu.com, yandex.ru
thematicmedia.ru -> habrahabr.ru, autokadabra.ru
autokadabra.ru -> habrahabr.ru, yandex.ru


Т.е. мы знаем, что Хабр ссылается на Apple, MS, Ubuntu и Яндекс но кто ссылается на Хабр? Да, вопрос примитивный, но все же разложим на MapReduce. Дальше будет интереснее и этот пример понадобится.

Читать дальше →

HTML5 для веб-дизайнеров. Часть 1: Краткая история языка разметки

Reading time7 min
Views14K
HTML5 для веб-дизайнеров

  1. Краткая история языка разметки
  2. Модель HTML5
  3. Мультимедиа
  4. Формы 2.0
  5. Семантика
  6. HTML5 и современные условия


HTML — язык, объединяющий всемирную сеть. Всего лишь посредством набора простых тегов, человечеству удалось создать несравнимую ни с чем по своим масштабам систему связанных между собой страниц и веб-узлов: от Amazon, eBay и Википедии, до личных блогов и сайтов, посвященных котам, похожим на Гитлера.

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

Как и всемирная сеть вообще, HTML — язык разметки гипертекста (HyperText Mark-up Language) — является детищем сэра Тима Берненс-Ли (Sir Tim Berners-Lee). В 1991 году он написал работу, озаглавленную «HTML Tags», в которой описал чуть меньше двух дюжин тегов, предложенных им для разметки веб-страниц.

Идея использовать для этого кодовые слова внутри треугольных скобок, впрочем, не принадлежит сэру Тиму. Такая система на тот момент уже существовала и использовалась в SGML (Standard Generalised Markup Language, стандартный обобщённый язык разметки), и вместо того, чтобы изобретать что-то с нуля, сэр Тим посчитал более рациональным взять за основу уже существующие решения. Аналогичный подход применялся и вообще на всем пути к HTML5 в процессах разработки.

Читать дальше →

Грань между личным и конфиденциальным

Reading time2 min
Views1.1K
В эпоху социальных сетей грань между личными и конфидециальными данными понемногу стирается. Многие люди сообщают всему Миру что и где они делают в данный момент с погрешностью до пяти метров, и ни у кого это не вызывает беспокойства.
Но что если эти и более конфидециальные данные доступны любому человеку без вашего ведома?
Как? Ответ прост как сама идея и удобство сервиса под названием — интернет-банкинг. Очень удобно контролировать счет и знать куда тратятся деньги с вашей кредитной карты, читая RSS ленту в любимом ридере через защищенное соединение. Удобно и безопасно, но не всегда…

Сегодня с утра, дочитав все свои каналы Google Reader и имея еще немного свободного времени, решил почитать «Рекомендованные новости». Внимание привлекла следующая запись в ленте:
Читать дальше →

“Кухня небольшой хостинг компании” – реплика

Reading time2 min
Views2.2K
Прочитал на днях вот эту статью на хабре Кухня небольшой хостинг компании. Сама статья очень понравилась и сам готов подписаться под каждым словом автора. Но все же после прочтения статьи осталось чувство незавершенности. Дело в том, что автор рассмотрел лишь одну из возможных схем создания «небольшой хостинг компании». Я же, хотел бы в этой статье рассмотреть еще один возможный сценарий создания и развития хостинг компании, а именно компании основанной на так называемом реселлинге (reseller hosting).

Как всем известно, открытие реселлерского акаунта в большинстве хостинговых компаний означает, что вы платите компании N-ую суму денег за некоторое количество мегабайт на их сервере, допустимое количество доменов, MySQL, аккаунтов FTP, mail, ну и так далее… Далее «счастливый» реселлер, как и в случае с сервером делит доступное место и все остальное на тарифы и про себя наговаривая «ловись рыбка большая и маленькая» выносит все это на рынок. При этом, как правило, тех поддержка полностью ложится на плечи реселлера. «Материнская» хостинг компания о наличии клиентов реселлера даже не знает, так что обращаться за помощью к ней, клиенту реселлера бесполезно. Это означает, что как и в случае с сервером, при отсутствии платежей от реселлера, хостинг компания вырубает всех и вся кто имел отношение к недобросовестному реселлеру.

Но это не значит, что все начинающие хостинг компании идут по этой схеме реселлерства. Тут очень важным моментом является правильный выбор «материнской» хостинг компании. Расскажу на примере компании YeapHost.com, которую и представляю. Имея за плечами опыт создания многочисленных интернет сайтов, и постоянно пользуясь услугами российских хостинг компаний, было принято решение о покупке реселлерского акаунта для размещения всех своих проектов, и продажи невостребованных ресурсов, для отбития части денег. Когда стал вопрос о выборе хостера мы поняли, что ни одина из российских хостинг компаний не может удовлетворить наших требований, в которые входило соотношение цена-качество, адекватная служба поддержки, доступность, сама система реселлинга и так далее… Тогда мы начали подбирать среди тех кто за «железным занавесом», остановив свой выбор на одной английской компании. Прежде всего, наше внимание привлекло доступность сайтов размещенных на их серверах (just-ping.com), во вторых то, что клиент реселлера видим для «материнской» хостинг компании, а это значит, что и поддержка доступна для них, и то, что в случае банкротства реселлера клиенты не останутся у разбитого корыта.

В чем же тогда наше преимущество, и почему клиент должен отдать предпочтение YeapHost.com при том, что с тем же успехом может стать прямым клиентом «материнской» хост компании? Начнем с того, что мы предоставляем русскоязычную поддержку. Во-вторых, наши тарифы отличаются от того, что предлагает «материнская» хостинг компания, и ориентированы на потребности ру-нета. В третьих, удобная для ру-нета система оплаты webmoney, а не забугорные PayPal или банковские карты.

Так, что начальные затраты в $150 приведенные в статье к которой я ссылался в начале, можно использовать более эффективно: на рекламу, службу поддержки, а это значит, что и приток клиентов больше.

Приглашаю всех на тестирование нашего хостинга. Для этих целей, был создан тариф Тест. Прислушаемся к любой критике.

В заключении хотелось бы сказать, что действительно хостинг это дело хлопотное, но «Лишь идущий осилит дорогу».

Отказ от архитектуры PowerPC

Reading time1 min
Views1.8K
У нас плохие новости для 0.1% пользователей которые все еще используют архитектуру PowerPC.

Начиная со следующей версии браузера, включая следующие сборки, мы не будем поддерживать архитектуру PowerPC для ОС Mac OS и Linux. Opera 10.6x будут последними версиями которые поддерживают PowerPC.

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

F3: маленький PHP-фреймворк с огромными возможностями

Reading time7 min
Views27K


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

Fat-Free чем-то похож на известный Ruby-фреймворк Sinatra. Автор Fat-Free помешан на минимализме и чистоте кода, что положительно отразилось на этом простом каркасе для разработки самых разнообразных приложений.

Fat-Free состоит из одного файла и весит всего 55KB. При этом фреймворк обладает таким функционалом: специфический и довольно удобный шаблонизатор, гибкое кеширование, автоматическая защита от спама, интегрированные средства для юнит тестов, профайлер кода.

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

Это, также, единственный фреймворк, который защищает Ваше приложение от хотлинкинга и DoS атак.
Читать дальше →

Проблемы зоны .local в современных Linux дистрибутивах

Reading time1 min
Views33K
Многие интернет провайдеры предоставляют для своих абонентов такой сервис, как торрент-ретрекер. Некоторые торрент-трекеры (в том числе и rutracker.org) в свои торрент-файлы добавляют информацию о таком таком универсальном ретрекер как retracker.local. Но в современных дистрибутивах (таких как Ubuntu, openSUSE и т.д.) этот адрес не резолвится правильно.

Проблема заключается в использовании сервиса avahi для анонсирования ресурсов компьютера в локальной сети, так как для этих целей используется зона .local. Чтобы решить эту проблему не обязательно избавляться от avahi. Достаточно указать, что если не удается найти поддомен, спросить об этом dns.
Читать дальше →

Компиляция. 8: оптимизация

Reading time15 min
Views3.3K
После приятного отдыха продолжаем писать компилятор для нашего джей-скрипа.
В предыдущем посте реализовали взятую с потолка эвристику для назначения регистров, и заодно начали оптимизировать код. А ещё перед этим читатели обнаружили баг в реализации присваивания.

Далее в посте:

  1. Починка бага
  2. Чистка копирований
  3. Что получилось?
  4. Сворачивание констант
  5. Реализация
Читать дальше →

Celery — распределенная очередь заданий

Reading time3 min
Views86K
На этот раз мы решили рассказать о замечательном продукте, который мы используем в нашей работе. Речь пойдет о Celery — «distributed task queue». Это распределенная асинхронная очередь заданий, которая обладает широким функционалом. В нашем конструкторе сайтов нам часто приходиться запускать асинхронные с точки зрения ответа пользователю задачи. На хабре, к сожалению, не много информации по данному продукту, а он заслуживает отдельного упоминания, это мы и хотим исправить.

Итак, что же умеет Celery:

  • Выполнять задания асинхронно или синхронно
  • Выполнять периодические задания(умная замена crond)
  • Выполнять отложенные задания
  • Распределенное выполнение (может быть запущен на N серверах)
  • В пределах одного worker'а возможно конкурентное выполнение нескольких задач(одновременно)
  • Выполнять задание повторно, если вылез exception
  • Ограничивать количество заданий в единицу времени (rate limit, для задания или глобально)
  • Routing заданий (какому worker'у что делать)
  • Несложно мониторить выполнение заданий
  • Выполнять подзадания
  • Присылать отчеты об exception'ах на email
  • Проверять выполнилось ли задание (удобно для построения Ajax приложений, где юзер ждет факта завершения)

Заинтересовало? Просим под кат.
Читать дальше →

Другая книга про XSLT

Reading time2 min
Views6.7K
Вашему вниманию предлагается небольшая по объему книга (можно называть это брошюрой), посвященная XSLT и его использованию в качестве языка шаблонизатора при создании сайтов на UMI.CMS.

Это не реклама «еще одной cms», и «еще одного шаблонизатора», а лишь предложение познакомиться с одним из подходов к использованию технологии XSLT при создании сайтов, где в качестве системы управлением контента взята UMI.CMS.
Читать дальше →

getColor.ru — online color picker, позволяющий обмениваться цветами

Reading time2 min
Views4.4K
image
Наверное не ошибусь, если скажу, что большинство полезных решений появляется только благодаря возникновению каких-либо трудностей. О паре таких трудностей и одном замечательном сервисе, который может избавить вас от них, прямо сейчас.

Color picker


Многим должна быть до боли знакома ситуация, когда внезапно требуется HEX-цвет на полтона темнее или, скажем, бирюзовее, чем есть сейчас.
Если вы до сих пор не умеете представлять точный RGB-цвет в голове — вам не обойтись без color picker’а, который сделает эту работу за вас.

Лично я знаю только три вменяемых варианта, где можно взять color picker:
  1. Отдельная программа, специально предназначенная для этого;
  2. Практически любой графический редактор;
  3. Online-сервис

Надеюсь, утверждение, что онлайн-сервис является самым простым решением, не вызовет ни у кого сомнений — количество символов в каждом пункте тому свидетель.
Читать дальше →

Программирование для Nintendo DS. Первые шаги

Reading time3 min
Views7.2K
В статье рассматриваются основы разработки программного обеспечения для Nintendo DS под Linux. Впрочем все используемые инструменты кроссплатформенные и не должно быть больших отличий для других ОС.

Для начала разберёмся, что же вообще из себя представляет эта игровая консоль. Вот, что нам говорит википедия:
* Процессор: ARM946E-S — 67 Мгц, сопроцессор ARM7TDMI — 33 МГц
* Память: 4 МБ, 656 КБ видео памяти, 512КБ памяти для текстур
* Экран: два отдельных ЖК-дисплея, диагональ 77 мм (3 дюйма), разрешение 256х192 пикселей, до 260 тысяч цветов. Расстояние между экранами — примерно 21 мм, что эквивалентно 92 «скрытым» строкам.
* Видеосистема: Поддержка 2D и 3D (T&L, преобразование координат текстур, маппинг текстур, альфа-смешивание, сглаживание, цел-шейдинг и Z-буферизация), теоретически позволяет отрисовывать 120 000 полигонов в сек (однако, имеет ограничение на отрисовку 6144 вершин или 2048 треугольников за один кадр).
* Звук: Стерео, 16-канальный ADPCM/PCM
* Накопители: 1 слот для собственных катриджей Nintendo DS, 2 слот для катриджей Nintendo Gameboy Advance
* Связь: IEEE 802.11 (Wi-Fi), для соединения используется собственный формат Nintendo. Радиус локальной сети от 10 до 30 метров в зависимости от условий.
* Управление: сенсорный экран, встроенный микрофон для голосовой идентификации, A/B/X/Y кнопки, D-Pad, шифты L/R, кнопки Start и Select
* Время работы: 6-10 часов
* Вес: 275 грамм
* Размеры: 148,7 × 84,7 × 28,9 мм
Читать дальше →

Цветовое оформление консольного вывода

Reading time1 min
Views76K
Кратко о том, как сделать для своей консольной программы или скрипта цветной вывод текста, а также дополнить его другими элементами оформления. Собственно, назначить можно цвет текста, цвет фона под ним, сделать текст жирным, подчеркнутым, невидимым и даже мигающим.
Читать дальше →

Пишем свою ОС: Выпуск 1

Reading time6 min
Views280K
Данный цикл статей посвящён низкоуровневому программированию, то есть архитектуре компьютера, устройству операционных систем, программированию на языке ассемблера и смежным областям. Пока что написанием занимаются два хабраюзера — iley и pehat. Для многих старшеклассников, студентов, да и профессиональных программистов эти темы оказываются весьма сложными при обучении. Существует много литературы и курсов, посвящённых низкоуровневому программированию, но по ним сложно составить полную и всеохватывающую картину. Сложно, прочитав одну-две книги по ассемблеру и операционным системам, хотя бы в общих чертах представить, как же на самом деле работает эта сложная система из железа, кремния и множества программ — компьютер.

Каждый решает проблему обучения по-своему. Кто-то читает много литературы, кто-то старается поскорее перейти к практике и разбираться по ходу дела, кто-то пытается объяснять друзьям всё, что сам изучает. А мы решили совместить эти подходы. Итак, в этом курсе статей мы будем шаг за шагом демонстрировать, как пишется простая операционная система. Статьи будут носить обзорный характер, то есть в них не будет исчерпывающих теоретических сведений, однако мы будем всегда стараться предоставить ссылки на хорошие теоретические материалы и ответить на все возникающие вопросы. Чёткого плана у нас нет, так что многие важные решения будут приниматься по ходу дела, с учётом ваших отзывов.
Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity