Обновить
38
0.1

Пользователь

Отправить сообщение

Быстрый автокомплит с использованием libscgi

Время на прочтение3 мин
Количество просмотров1.8K
Недавно была опубликована статья "libscgi — эффективное решение для простых и быстрых скриптов". Хотелось бы продолжить ранее представленую тему с более практической стороны. Как уже догадались из название — речь пойдет об скрипте автокомпита.

Пользователей, и меня в частности, всегда разражали эти уж медленные автокомплиты. Бывает наберешь уже почти все слово, как появляется выпадающая менюшка. Понятно, что JavaScript сам по себе медленный. Но если еще автокомплит будет тормозить на стороне сервера, то вообще как-то кисло получается. Выход есть, если на серверной части использовать, что-то более быстрое, как вариант можно использовать бинарный скрипт с использованием libscgi. Исходники тут. Чуть ниже подробности.
Читать дальше →

libscgi — эффективное решение для простых и быстрых скриптов

Время на прочтение4 мин
Количество просмотров5K
Очень часто необходимо реализовать простое легкое решение, которое должно отработать довольно быстро. А с использованием технологии AJAX это стало еще актуальнее. Это может быть как скрипт автокомплита, скрипт специфического поиска, вывод информации из справочника. Ранее использовались cgi скрипты. При больших нагрузках они оказались не очень эффективными и были разработаны протоколы fcgi и scgi. Следует заметить что производительность scgi сервера довольно-таки высокоя (более 1500 запр/сек) и памяти занимает всего 600K.

Протокол Simple Common Gateway Interface (SCGI) — это протокол по взаимодействию приложений с веб (http) серверами. Большинство современных WEB-серверов (Apache/nginx/lighttpd) имеют встроенную поддержку scgi. Ниже дано краткое описание использование простой библиотечки, которая представляет собой scgi сервер.

Исходники тут.
Читать дальше →

PHP модуль для Tarantool

Время на прочтение6 мин
Количество просмотров7K
imageTarantool это разработка компании Mail.ru. Представляет высокопроизводительное key/value no-Sql решение.Отсутствие портов для популярных языков программирования сдерживает популярность данной БД. Попытался восполнить данный пробел.
Ветка экспериментальная. Исходники
Далее примеры.
Читать дальше →

Tarantool Данные и Протокол

Время на прочтение5 мин
Количество просмотров6.2K

Tarantool это замечательное высокопроизводительное no-Sql решение, разработка компании Mail.Ru. Исходники

Данное решение позволяет использовать как режим key/value, так и выборку множества записей в рекордсет по одному или нескольким критериям (полям поиска). Аналогов в рунете и не только, я пока не встречал. С натяжкой можно сравнить редис. Но в редисе — списковые данные и их нельзя выбирать по ключу. Судя до утверждениям разработчиков, скорость доступа по ключу превосходит memcache, при этом еще в бэдграунде осуществляется постоянное сохранение данных на диск. Но к сожалению, данная разработка имеет единственный perl клиент для доступа к данным, из-за чего не имеет такой популярности, как например у redis или memcache.

В doc/box-protocol источников есть описание Протокола, которое я в настоящее время переработал для написания клиента на Си и PHP. Изучив Протокол, вы можете реализоать нативный клиент на любимом Вам языке. Надеюсь, данная статья в этом Вам пригодится.

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

VK notifer на java

Время на прочтение5 мин
Количество просмотров41K
Однажды мне довелось работать над проектом, заказчик которого поддерживал обратную связь исключительно с помощью социальной сети Вконтакте. Так как я — не особо активный пользователь данной социальной сети, то возникла проблема в плане скорости получения посланных мне сообщений. Так случилось, что я потянул поясницу и пару дней провел на койке. Так как делать лежа, причем с больной спиной, особо нечего, то я решил махом убить несколько проблем:
  • Скрасить время своей реабилитации
  • Решить проблему с доставкой сообщений
  • Попробовать себя в написании программ на java

Итоги получившейся java терапии под катом.
Читать дальше →

Посылаем SMS самому себе через Google Calendar

Время на прочтение2 мин
Количество просмотров8.8K
Наткнулся недавно на статейку SMS Уведомления + Логирование событий в Google Calendar на PHP

И решил тоже сообразить данный велосипед
Читать дальше →

В чем причина засора? Cтатистика веб-приложений

Время на прочтение5 мин
Количество просмотров13K
В прошлом нашем посте внимательный хабраюзер dovg отметил скриншот с красивым графиком. На нем было отражено время выполнения различных операций поиска. А поскольку статистика и анализ производительности высоконагруженных проектов – тема довольно актуальная, мы решили рассказать про систему, которую используем для сбора и анализа статистики «Мамбы». Как и в случае поиска, мы используем собственное решение, но в отличие от него BTP (никто не помнит, как эта аббревиатура появилась на свет, но почему-то именно она стала названием) находится в открытом доступе, и при желании вы можете установить её на своих серверах.

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

Презентация: «Sphinx — полнотекстовый поиск на сайте, просто и доступно»

Время на прочтение4 мин
Количество просмотров20K
Вкратце: хочу сделать презентацию и пару раз выступить на конференциях интернет магазинов. Написал текст презентации, нужны отзывы. Надеюсь на вашу помощь в составлении грамотного и доступного текста.

Текущий текст презентации под катом
Читать дальше →

Пример Sphinx поиска на реальном проекте — магазин автозапчастей Tecdoc

Время на прочтение9 мин
Количество просмотров98K
Вкратце: статья будет полезна тем программистам, кто уже заинтересовался релевантным поиском и прочитал статьи по стартовой установке сфинкс поиска, погонял на тестовых примерах и таких же синтетических задачах. Часто эти примеры не дают ответа на вопрос, а как же ощутить реальную пользу от поискового модуля Sphinx в сравнении с другими более простыми вариантами поиска. Примеры кода в статье — на php+smarty, Sphinx 2.0.1-beta, база данных — mysql, исходники и дамп структуры базы выложены отдельным архивом в подвале. В статье описан пример использования таких особенностей сфинкса, как:
  • Создание единого конфиг файла для windows development и linux production
  • SetMatchMode(SPH_MATCH_EXTENDED2) и почему SPH_MATCH_ANY и другие не подходят для реального поиска
  • SetSortMode(SPH_SORT_RELEVANCE), SetFieldWeights — сортировка по релевантности и установка весов для полей индекса
  • SetLimits(0,20) — ограничение вывода результатов
  • AddQuery, RunQueries — построение мультизапросов
  • SetFilter, ResetFilters — добавление фильтрации в мулльтизапросе для ограничения получаемых данных
  • Wordforms — использование синонимов и преодоление ограничений для нестандартных словоформ, как «C#»

Также хочется внести свой вклад в развитие проекта и откровенно недостаточной русской документации при том, что проект создан и поддерживается русскоязычным программистом. Поэтому решено: непрекращающийся поток блокер задач идет лесом, вместо него в качестве благодарности разработчикам сфинкса в общем и пользователю Андрей Аксёнов ака shodan я пишу эту статью.
Читать дальше →

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

Время на прочтение6 мин
Количество просмотров15K
Данный пост предназначен для начинающих руководителей проектов и руководителей проектов, впервые начинающих работать с государственными органами, собирающихся вести проекты сложнее сайта визитки и планирующих в дальнейшем работать с госорганом, для чего понадобится не только завершить проект, но и создать благоприятное впечатление. Проекты, в которых пилятся деньги за воздух, не рассматриваются в рамках данного поста.

Это небольшие выводы сделаны на небольшом личном опыте работы с госорганами, и не претендуют на истинность. В ближайшем будущем планирую переходить на работу в госорган, поэтому ждите ещё и поста о построении работы изнутри.
Читать дальше →

Веб-студии, не залезайте в черную дыру. Там денег нет

Время на прочтение3 мин
Количество просмотров14K
Черная дыра в диапазоне стоимости сайтовДавно никто не писал в этот блог. Все работают, работают, работают… А стоит ли? )
Наверняка, многие руководители веб-студий согласятся со мной, что бизнес под названием «разработка сайтов» — не такой уж и сложный. Он не предполагает высокого порога вхождения на рынок, все делается под одной крышей, специалистов на рынке достаточно, спрос на услуги тоже есть. Но еще больше руководителей студий поддержат меня в том, что за этим простым бизнесом кроются очень высокие риски. Человеческий фактор сводит на нет все ожидаемые и, казалось бы, легкие доходы. Если не выбрать правильную модель работы, вы достаточно быстро разочаруетесь в этом бизнесе. Давайте копнем сразу в глубь любой обычной веб-студии.
Читать дальше →

Черная дыра рынка в диапазоне стоимости сайтов?

Время на прочтение3 мин
Количество просмотров16K
На сегодняшний день диапазон цен на рынке веб-сайтов колеблется от 500 рублей до 50 000 евро и выше. Давайте разберемся, сколько стоит сайт и почему. Простой расчет поможет убедиться в справедливой стоимости профессионально выполненного сайта и наведет заказчиков на несколько полезных жизненных выводов. Выводы навеяны опытом работы и отзывами наших клиентов. Интервалы цен приведены, по большей части, для региона «Центр».
Читать дальше →

Шаблонные сайты VS эксклюзивные сайты

Время на прочтение5 мин
Количество просмотров62K


Говоря о шаблонных сайтах, мы нередко слышим, что такие проекты не живут дольше нескольких месяцев. Потенциальные клиенты, услышав слово «шаблонный», не хотят продолжать разговор и делают обиженные лица. Студии, которые делают «шаблонные» решения – часто лишены должного уважения в профессиональном сообществе. И, наконец, сайты, которые дешевле 20 000 руб часто называют, простите, «говносайтами». Вы тоже так думаете? Давайте разберемся насколько это действительно так и восстановим мировой баланс (если он существует).
Читать дальше →

Задача о назначениях

Время на прочтение12 мин
Количество просмотров86K

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

Give us the tools, and we will finish the job

Кроссбраузерная одноцветная полупрозрачность

Время на прочтение3 мин
Количество просмотров13K
В этой статье я рассмотрю метод создания блоков с одноцветным полупрозрачным фоном.
Например, таких:


Сразу оговорюсь, что я не буду использовать opacity и абсолютное позиционирование, чтобы разместить контент поверх полупрозрачного блока.
Читать дальше →

Как проверить заказчика «на вшивость»

Время на прочтение2 мин
Количество просмотров2.2K
При выполнении разных заказов я лично и много моих знакомых
сталкивались с вопросом — как до начала работ определить, что после выполнения заказа все останутся довольны?

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

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

Popup с затухающим фоном с помощью jQuery

Время на прочтение8 мин
Количество просмотров43K
imageМногие из нас сталкивались с всплывающими окнами, когда при этом постепенно потухает фон. Взгляд пользователя невольно фокусируется только на той части экрана, где что-то требуется от этого самого пользователя. Достаточно полезно, не правда ли?

Конечно же, не претендую на какую-то новизну, и данная заметка будет больше полезна начинающим с jQuery (коим и сам являюсь), чем людям, имеющим существенный опыт с данным javascript фреймворком.

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

Кеширование блоков с помощью nginx

Время на прочтение6 мин
Количество просмотров15K
nginx + SSIМногим разработчикам знакома ситуация когда кешировать страницы сайта, скажем, на 5-10 минут нельзя всего из-за одного небольшого блочка, актуальность которого нужно поддерживать если не в реальном времени, то с временем «старения» не больше 5-10 секунд. При этом посещаемость сайта продолжает расти, растет время генерации страниц и c этим надо что-то делать…
  • Вариант решения 1: Подкрутить то, до чего не доходили руки последнее полгода. Все Вас поймут и передвинут сроки на другие задачи. Вы будете в роли «Супермена» один спасать сайт от непомерной нагрузки, решая проблему «бесплатно» (без доп. вливаний в оборудование). Вам может пригодиться статья «Тюнинг nginx».
     
  • Вариант решения 2: Улучшить техническую базу (докупить мозгов на сервер, улучшить дисковую систему, поставить под БД отдельный сервер). В принципе проблема не решена, а скорее отложена. Теперь у Вас есть время «окопаться» и подготовиться ко второй волне наплыва нагрузки, она будет больше и накроет сильнее.
     
  • Вариант решения 3: Ваш вариант, о котором я, вероятно, узнаю из комментариев.
     
Позвольте предложить и мне проверенное и относительно простое решение на базе одной из старейших технологий в Web-разработке.
Читать дальше →

Подводные камни при использовании кэширования в nginx

Время на прочтение10 мин
Количество просмотров58K
В web-сервер и reverse-proxy nginx встроены очень мощные возможности по кэшированию HTTP-ответов. Однако в ряде случаев документации и примеров не хватает, в результате не все получается так легко и просто, как хотелось бы. Например, мои конфиги nginx-а местами написаны кровью. Этой статьей я попробую немного улучшить ситуацию.

В этой статье: а) подводные камни при полностраничном кэшировании; б) кэширование с ротацией; в) создание динамического «окна» в закэшированной странице.

Я буду предполагать, что вы используете связку nginx+fastcgi_php. Если вы применяете nginx+apache+mod_php, просто замените имена директив с fastcgi_cache* на proxy_cache*

Если выбирать, кэшировать ли страницу на стороне PHP или на стороне nginx, я выбираю nginx. Во-первых, это позволяет отдавать 5-10 тыс. запросов в секунду без каких-либо сложностей и без умных разговоров о «высокой нагрузке». Во-вторых, nginx самостоятельно следит за размером кэша и чистит его как при устаревании, так и при вытеснении нечасто используемых данных.

Кэширование всей страницы целиком


Если на вашем сайте главная страница хоть и генерируется динамически, но меняется достаточно редко, можно сильно снизить нагрузку на сервер, закэшировав ее в nginx. При высокой посещаемости даже кэширование на короткий срок (5 минут и меньше) уже дает огромный прирост в производительности, ведь кэш работает очень быстро. Даже закэшировав страницу всего на 30 секунд, вы все равно добьетесь значительной разгрузки сервера, сохранив при этом динамичность обновления данных (во многих случаях обновления раз в 30 секунд вполне достаточно).
Читать дальше →

Оповещения из Zabbix телефонным звонком

Время на прочтение2 мин
Количество просмотров17K
Всем привет.
Я давно использую zabbix и давно читаю хабр.

Мысль научить заббикс разговаривать голосом посещала меня давно, и даже делал систему которая чудным голосом сообщала ночным саппортам что случилось.
Сегодня я прочитал пост mxx про nagios`ом по телефону и меня срочно настигла мысль привинтить это к моей системе.

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

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

Информация

В рейтинге
3 287-й
Откуда
Россия
Зарегистрирован
Активность