Search
Write a publication
Pull to refresh
18
0
Владимир Шишминцев @Pingvi

Разработчик Web решений

Send message

Нестандартная оптимизация проектов на PHP

Reading time5 min
Views29K
В данной публикации хочу рассказать о том, как нетрадиционными методами мы смогли снизить нагрузку на серверы и ускорить время обработки страницы в несколько раз.

image

Традиционные методы, думаю, всем известны:
  • Оптимизация SQL-запросов;
  • Поиск и исправление узких мест;
  • Переход на Memcache для часто используемых данных;
  • Установка APC, XCache и подобных;
  • Клиентская оптимизация: CSS спрайты и т.п.


В нашем же проекте всё это было сделано, но при этом проблема скорости обработки страниц сохранялась. Средняя скорость обработки страницы была в районе 500мс. В один прекрасный момент пришла идея проанализировать, какие ресурсы есть, и на что они могут тратиться.
Читать дальше →

Улучшаем релевантность поиска в sphinxsearch

Reading time4 min
Views59K
Sphinxsearch является поисковым движком для быстрого fulltextsearch, может получать данные из mysql, oracle и mssql, может выступать сам хранилищем(realtime индексы). Также sphinx имеет режим работы через api и через sphinxql — аналог протокола sql(с некоторыми ограничениями), что позволяет подключить поиск через sphinx на сайте с минимальным изменением кода. Это один из немногих великих, крупных и открытых проектов разработанный в России. На моей жизни я видел как sphinx обрабатывает порядка 100-200 поисковых запросов на 2 миллиона записей из mysql и при этом сервер свободно дышал и его не тошнило, mysql начинает умирать уже на 10 запросах в секунду на аналогичном конфиге.

Основная проблема документации sphinx на мой взгляд малое количество примеров для большинства интересных настроек, сегодня постараюсь рассказать в примерах о них. Опции которые я затрону касаются в основном алгоритмов и вариаций поиска. Все кто плотно работает со sphinx не узнают ничего нового, а новички надеюсь смогут улучшить качество поиска на своих сайтах.

Sphinx содержит две независимые программы indexer и searchd. Первый строит индексы по данным взятым из базы данных, второй производит поиск по построенном индексу. А теперь перейдем к настройкам поиска в sphinx.

morphology

Позволяет задать морфологию слов, я использую только стемминг. Алгоритм стемминга с помощью набора правил для языка обрезает окончания и суффиксы. Стемминг не использует готовые базы слов, а основан на определенных правилах обрезания для языка, что делает его маленьким и быстрым, но это же и добавляет ему минусы так как он может совершать ошибки.

Пример нормализации слова стеммингом на русском.
Слова “яблоко”, “яблока”, “яблоку” будут обрезаны в “яблок” и любой поисковый запрос с вариацией слова “яблока” будет тоже нормализован и найдет записи со словами которые были описаны выше.
Читать дальше →

Как создать веб-сайт, используя видео с YouTube в качестве фона?

Reading time9 min
Views86K


Большие видео на заднем плане веб-сайтов — довольно популярный тренд в веб-дизайне. Умело примененные видео могут сделать веб-сайт более драматичным и привлекательным для пользователей.

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

Существуют компании, как, например, Powerhouse или Adidas, которые используют видео в качестве заднего плана сайта, чтобы донести до пользователя определенное сообщение или историю о продукте или услуге.

Хотя и наиболее популярным способом создания видео-фона является использование HTML5 видео тега вместе с некоторыми параметрами CSS, стоит также обратить внимание на альтернативные источники видео, например, YouTube. В этом случае, вам не придется переживать о медленном ответе сервера, потому что запрос будет отправляться напрямик в YouTube.

В этой статье, я покажу вам, как можно построить клевый сайт, использующий видео с YouTube в качестве фона. Мы будем использовать jQuery.mb.YTPlayer.js для редактирования и управления внешним видом нашего видео. Итак, приступим!

Скачать исходники
Демо
Читать дальше →

Самые популярные торрент-сайты: рейтинг на начало 2015 года

Reading time2 min
Views52K
В начале 2015 года KickassTorrents вырвался на первое место по трафику, а следом за ним идёт Torrentz. «Икона» файл-шаринга The Pirate Bay пока ещё не работает, но его суммарные клоны, копии и последователи участвуют в рейтинге совместно.

Остальные пункты списка заняты уже известными сайтами. С прошлого года произошла лишь одна замена – место выбывшего Bitsnoop.com занял Limetorrents.cc. Один из старейших сайтов, Demonoid, вернувшийся в онлайн после долгого отсутствия, хоть и не попал в рейтинг, но неуклонно карабкается вверх. Мы ещё можем увидеть его в чарте.

Итак, сам чарт (основан на данных от Alexa и U.S. Compete, и некоторых других показателях):
Смотреть чарт

Распознавание лиц в 4 строки на JQuery

Reading time3 min
Views25K


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

Я расскажу о том, как в несколько строк реализовать распознавание любого количества лиц на любой фотографии или видео в браузере с помощью JavaScript и JQuery плагина FaceDetection.

Кому интересно, прошу под кат.
Читать дальше →

Проблема «7-го января»

Reading time2 min
Views42K
Во время работы над одним из проектов обнаружился довольно интересный баг, который, как потом выяснилось, проявляется не только в «самописных» календарях, но и в популярных open-source библиотеках. Проблема заключается в невозможности выбрать 7 января. В некоторых календарях эта дата просто отсутствует:
image
Если выбирать 6-е число (которое стоит на месте 7-го), то выбирается… 6-е число.

Баг наблюдается (по предварительным оценкам) под Windows 8.

UPD: Природа проблемы раскрыта здесь. Все дело в RTZ2 после Microsoft Update KB2998527.

UPD2: 0xy: проблема наблюдается не только в Firefox, но и в мобильных версиях различных браузеров. Подробнее (плюс баг-фикс).

Некоторые подробности под катом.
Читать дальше →

Пространства имен в PHP

Reading time9 min
Views52K
На хабре можно найти немало статей о пространствах имен в PHP, но мне помогла именно эта, и именно ей я хочу поделится. Наверняка найдутся те, кому этот перевод поможет.

Путь к поддержке пространств имен в PHP был тернистым. Но к счастью она была добавлена к языку в версии PHP 5.3, и структура PHP кода значительно улучшилась с тех пор. Но как именно нам их использовать?

Что такое пространства имен?


«Не забывайте обратный слеш, когда Вы храните имя пространства имен в виде строки!»

Представьте себе пространство имен, как ящик, в который Вы можете положить все что угодно: карандаш, линейку, кусок бумаги и так далее. Это Ваши вещи. Прямо под вашим ящиком, располагается еще чей-то ящик, и его хозяин хранит те же вещи в нем. Чтобы избежать использования предметов друг друга, Вы решили маркировать ящики так чтобы стало ясно, что кому принадлежит.
Читать дальше →

WordPress для параноиков, часть 1

Reading time9 min
Views63K
Итак, если вы счастливый владелец nginx, знатный параноик и за каким-то чертом решили поставить wordpress, то… Первое, что пришло в голову — это «надо ограничить сему творению свободу!».

Настройки учетной записи, как и настройки php5-fpm, я опущу, так как у каждого свои тараканы, а кто-то вообще на apache запускает. Но вот общие для Wordpress я опишу в этой части. Напишу о том, что сделал, что получилось и почему.
Читать далее

PHP создан, чтобы умирать

Reading time8 min
Views157K
Дисклеймер: у меня за спиной более десяти лет разработки на PHP. Я начал использовать его, когда PHP4 был совсем малышом, а PHP5 — только мечтой компании Zend. С помощью него я сделал многое, я любил его, проклинал и не без стыда наблюдал за тем, как он растёт и развивается. Я всё ещё использую его в некоторых доставшихся по наследству проектах, но предпочитаю больше его не применять. Также хочу отметить, что я не сотрудничаю с создателями фреймворков или инструментов, упомянутых в статье.

TL;DR (англ. too long; didn't read. Так, в частности, говорят, когда лень читать статью целиком — прим. пер.): если ваш проект основан на функциях фоновых процессов (фоновых служб, демонов — прим. пер.), избегайте PHP.

По-моему, в большинстве случаев ненавистники PHP упускают один весьма важный момент: PHP создан, чтобы умирать. Это не значит, что довольно способный (в какой-то степени) язык программирования исчезнет в никуда; это всего лишь означает, что ваш PHP код не может выполняться вечно. В настоящее время, спустя 13 лет после первого официального релиза в 2000 году, эта мысль до сих пор кажется мне вполне обоснованной.
Читать дальше →

Проектирование новостной ленты в социальных сетях

Reading time9 min
Views40K


Так сложилось, что за последние пару лет я успел поучаствовать в разработке нескольких социальных сетей. Главная задача, которую приходилось решать в каждом из этих проектов, заключалась в формировании новостной ленты пользователя. При чём важным условием была возможность масштабирования этой ленты в условиях роста числа пользователей (точнее, числа связей между ними) и, как следствие, — количества контента, который они деливерят друг другу.

Мой рассказ будет о том, как я, превозмогая трудности, решал задачу формирования новостной ленты. А также я расскажу о подходах, которые наработали ребята из проекта Socialite, и которыми они поделились на MongoDB World.
Читать дальше →

Розыгрыш призов в честь Дня программиста

Reading time3 min
Views83K


Привет, Хабр. Сегодня канун профессионального праздника таких важных, нужных и полезных людей, как программисты. И в честь этого события мы стартуем гик-розыгрыш призов, который совместно проводят Mail.Ru Group и Хабрахабр.

Принять участие в розыгрыше может каждый, у кого есть аккаунт на Хабре, даже read-only. Сделать это проще простого: достаточно авторизоваться, перейти на страницу розыгрыша и нажать там на кнопку. Призов для победителей розыгрыша заготовлено много, и все ценные, так что рекомендуем принять участие. Подробности — под катом.
Читать дальше →

Обзор Bluetooth-спикерфона Parrot MINIKIT Neo: разговор «без рук» в машине

Reading time5 min
Views61K
Отказаться от разговоров за рулем практически невозможно. Исключение могут составлять разве что автомобилисты, выезжающие на дорогу несколько раз в неделю или те, кому разговаривать попросту не скем. В противном случае приходится заботиться о том, чтобы минимально отвлекаться на телефон при вождении. То есть позаботиться о неком дополнительном устройстве с функцией hands-free. В результате внимание не рассеивается, руки остаются на руле, а ценный звонок не пропущен. Далеко не все граждане приобретают автомобили в комплектации, отличной от базовой. Как результат встроенная громкая связь по умолчанию отсутствует – и встает необходимость изучения способов «безрукого» управления телефоном. Целенаправленный поиск привел меня к девайсу под названием Parrot Minikit Neo. Это ни что иное как спикерфон – устройство громкой связи с подключением к телефону по Bluetooth.


Картинки и текст под катом

Привет от NASA: необычная куртка с термометром

Reading time4 min
Views54K
Тема одежды с дополненным функционалом поднималась на Хабре уже несколько раз. Зачастую, такие гаджеты, как майка с барабанами, футболка с зарядкой для телефона, LED-белье, кепка с определением сети Wi-Fi или кроссовки со светодиодами обладают дополнительными возможностями, но скорее являются объектами for fun.

Владение ими не предполагает серьёзного использования встроенного допфункционала. Как правило, такие арт-гаджеты рассчитаны на любителя.

Да, да, именно так я думал, пока не встретил героя своей статьи, вернее героиню =)

Фото работы с tombanwell.blogspot.com
Читать дальше →

«Будист»: социальная сеть взаимопомощи в пробуждениях

Reading time1 min
Views8.9K
Позавчера (13 февраля 2012 г.) во блоге «You HTC» появился рассказ о занятной социальной сети «Будист», участники которой используют друг друга в качестве будильника.

Установив приложение «Будист» на Android или iOS, участник социальной сети («соня») может ставить будильник на любое время (с шагом 5 минут, как видно) и ожидать телефонный звонок, который его разбудит. Также он может видеть список других «сонь», в сáмое ближайшее время ожидающих пробуждения — и звонить им по телефону в указанное ими самими время, чтоб разбудить их.

Регистрируясь, участник сообщает своё имя, пол, возраст, город. Социальная сеть «Будист» использует эти сведения, соединяя разнополых собеседников (чтобы молодых людей пробуждали девушки, и наоборот). Но если в заданное время ни один человек не позвонит «соне», то тогда его побудку совершит бот.

Приятно, что всё это устроено бесплатным (и программа, и звонки), а номера телефонов не раскрываются собеседникам.

В программе предусмотрена и вкладка «Общение» — но там требуется, к сожалению, учётная запись «ВКонтакте». (Могли бы предусмотреть и побольше способов авторизации.)

Напоследок скажу, что идея «Будиста» кажется мне достаточно нетривиальною для того, чтобы заинтересовать сетевой люд. Но, вообразив ежесуточно катящуюся с востока на запад волну пробуждений, нетрудно увидеть и её крайние точки: скорее всего, «соням» наиболее восточных областей России станет недоставать побудчиков, а «будистам» западной части России некого будет будить.

jQuery SnowFall — снегопад на сайте

Reading time1 min
Views3K
До Нового Года осталось меньше недели, а соответствующего настроения всё еще нет. И этим вечером решил сам себе сделать новогоднее настроение с помощью плагина jQuery SnowFall.
Читать дальше →

Браузерный зоопарк

Reading time8 min
Views48K
image

Уважаемые Хабравчане! Хотел поделиться с Вами статьей своего сотрудника. Думаю, она будет полезной.

Hello world! Меня зовут Слава, я работаю верстальщиком в агентстве Coalla. Эта статья не о разжигании холивара и рассуждения о том, какой браузер лучше, как бы всем легко жилось без Internet Explorer’a, а мой недавний полезный опыт по установке всех необходимых браузеров и их версий на одну операционную систему, а именно на Microsoft Windows 7 Ultimate x64.
Читать дальше →

Опыт заказа в китайских интернет-магазинах

Reading time5 min
Views578K
В данной статье хотелось бы поделиться с читателями своим личным опытом о китайских интернет-магазинах, в которых мне (или моим друзьям) приходилось делать покупки. Речь пойдет именно про электронный сегмент товаров. Сразу перейду к сути, и приведу обзоры этих самых магазинов с заключительной оценкой:
Читать дальше →

Мировой финал MSI Master Overclocking Arena 2011

Reading time5 min
Views826
thumb_logo
Снова осень, снова мировой финал оверклокерских соревнований и снова русские оверклокеры участвуют! Но впервые наша команда Team Russia пробилась на финал MOA — Master Overclocking Arena. Благодаря компании MSI я получил возможность посетить это мероприятие (кстати, я был единственным из русскоязычных журналистов), помочь парням бороться и конечно же поведать вам о том, что же происходило в столице Тайваня — Тайпее 7 октября 2011 года. *Внимание, очень много фотографий! ТРАФИК!*
Читать дальше →

Как использовать API сайта, у которого нет API?

Reading time4 min
Views81K
У меня достаточно часто появляется задача получить данные от стороннего сайта, при этом далеко не всегда этот сайт предоставляет возможность удобно получить эти данные через API. Единственное решение в таком случае — парсить html содержимое страниц. Когда-то я писал регэкспы, потом появились библиотеки, позволяющие получить нужное содержимое по css-селектору, а сейчас и это кажется сложной задачей, которую хотелось бы упростить.

Сегодня я хочу рассказать вам о моей небольшой библиотеке, позволяющей описать в API-стиле http-запросы и парсить ответ сервера в нужный вам формат.
Читать дальше →

Information

Rating
Does not participate
Location
Каменск-Уральский, Свердловская обл., Россия
Date of birth
Registered
Activity

Specialization

Backend Developer, Web Developer
Lead