Pull to refresh
6
0
Сергей Ларионов @progit

Web Team Leader

Send message

phpDaemon — фреймворк асинхронных приложений

Reading time6 min
Views44K
Сегодня речь пойдет о phpDaemon — асинхронном модульном демоне-фреймворке, который берёт на себя обработку I/O (libevent) и другие низкоуровневые задачи, присущие демонам. С его помощью легко писать правильные сетевые приложения с блэкджеком и шлюхами.
Из коробки идут сервера FastCGI, HTTP, CGI, FlashPolicy, Telnet, WebSocket (!) — да-да тот самый волшебный пендаль новый протокол от Google. И клиенты mysql, memcached, mongodb… И многое другое, полный список под катом. Работать с сетью действительно просто. Программист средней руки может написать, к примеру, IRC-бота за считанные часы.
В качестве наглядного примера я реализовал вот этот чат на phpDaemon + WebSocket + MongoDB + jQuery. Он наглядно демонстрирует преимущества этой технологии: доставка сообщений мгновенна, накладные расходы при обмене данными минимальны, высока производительность, приложение масштабируется горизонтально. Исходники этого чата (в данный момент 17 кб). Прошу заметить, чат тестировался и работает в Chrome, FF, IE6+, Iron, Safari.
Читать дальше →
Total votes 114: ↑99 and ↓15+84
Comments103

Реляционные базы данных обречены?

Reading time14 min
Views156K
Примечание переводчика: хоть статья довольно старая (опубликована 2 года назад) и носит громкое название, в ней все же дается хорошее представление о различиях реляционных БД и NoSQL БД, их преимуществах и недостатках, а также приводится краткий обзор нереляционных хранилищ.

image
В последнее время появилось много нереляционных баз данных. Это говорит о том, что если вам нужна практически неограниченная масштабируемость по требованию, вам нужна нереляционная БД.

Если это правда, значит ли это, что могучие реляционные БД стали уязвимы? Значит ли это, что дни реляционных БД проходят и скоро совсем пройдут? В этой статье мы рассмотрим популярное течение нереляционных баз данных применительно к различным ситуациям и посмотрим, повлияет ли это на будущее реляционных БД.
Читать дальше →
Total votes 125: ↑101 and ↓24+77
Comments131

Обзор плагинов ++

Reading time2 min
Views3.4K
Очередной топик с обзором нескольких интересных плагинов jQuery.

Mobily Map




Позволяет сделать интерфейс, подобный google-картам, на основе собственных изображений (возможность перетаскивать, ставить маркеры на изображении, реагировать на нажатие по ним и др.).
Узнать больше (англ.) | Посмотреть в действии


Читать дальше →
Total votes 162: ↑148 and ↓14+134
Comments22

Полнотекстовый поиск в InnoDB

Reading time12 min
Views37K
Привет, Хабрачитатель!
Полнотекстовый поиск данных в InnoDB – это известная головная боль многих разработчиков под MySQL / InnoDB. Для тех, кто не в курсе дела я объясню. В типе таблиц MyISAM есть полноценный полнотекстовый поиск данных, однако сама таблица исторически имеет ограничения, которые являются принципиальными в отдельных проектах. В более «продвинутом» типе таблиц InnoDB полнотекстового поиска нет. Вот и приходится мириться бедным разработчикам либо с ограничениями MyISAM, либо с отсутствием поиска в InnoDB. Я хочу рассказать о том, какие есть способы организовать полноценный поиск в InnoDB без магии и исключительно штатными средствами. Также будет интересно сравнить скоростные характеристики каждого способа.
Читать дальше →
Total votes 79: ↑73 and ↓6+67
Comments55

Ищем быстро, еще быстрее

Reading time3 min
Views22K
Натолкнулся в разделе QA на интересный вопрос. Ответ на него заставил написать эту статью как бОлее полный ответ на вопрос «как организовать поиск по множеству параметров, как в Яндекс-маркете, например».

Я знаю, что на Хабре, да и вообще есть много сторонников noSQL решений (сам не без греха), но все же я сторонник сначала подумать, а уже потом выбирать решение.

Итак, что имеем в «ДАНО»
  • Имеем 120 чекбоксов — вариант 1/0
  • Имеем 30 «радио» с выбором «да/нет/не важно»
  • Имеем 2-3 слайдера для указания диапазона цен/размера чего нить
  • Имеем самое главное: 12 млн записей в БД.
  • Имеем Select * From tovar Where (wifi=true) and (led=false) and (type=3) and ….остальные параметры …; со временем выполнения близкому к истерике клиента.

Читать дальше →
Total votes 184: ↑180 and ↓4+176
Comments117

Анимированные баннеры на Javascript — это просто*

Reading time7 min
Views20K
*) На самом деле все равно сложно, но зато проще, чем было раньше.

История началась с постановки задачи: нужно сделать анимированный баннер с примерно тридцатью объектами средствами HTML+javascript за один день. За день, конечно, баннер сделан не был, а был сделан за два усилиями трех человекодней. После выполнения задания осталась библиотека пакетной анимации, которую я назвал Scenario. О её доработанной версии я и хочу рассказать.

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

Запуск сценария из любого места предельно прост:

var newScenario = [...];
$.scenario(newScenario, {
    complete: function(time) {
        alert('Готово!');
    }
});

Осталось только разобраться, что писать вместо трех точек в примере :)
Читать дальше →
Total votes 163: ↑158 and ↓5+153
Comments65

Юзабилити почтовых рассылок

Reading time2 min
Views6.4K
Доброго утра понедельника, %%username%%

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

Какова цель рассылки? Своевременно донести до адресата актуальную информацию о своей компании/услугах/новинках. Но большинство составителей подобных рассылок зачастую не продумывают психологический фактор, который играет немалую роль. Интересно? Добро пожаловать под кат.
Читать дальше →
Total votes 40: ↑33 and ↓7+26
Comments23

Обёртки для создания классов: зло или добро?

Reading time4 min
Views24K
Раз за разом я читаю, что удобные библиотеки для создания классов на Javascript, видите ли, не соответствуют идеологии языка и тем, кто их использует просто необходимо учить язык. Такое говорят невежды, которые и сами толком не разобрались ни в самом языке ни в библиотеках, которые они критикуют. И так часто говорят, что я решил написать этот топик и просто давать ссылку
var Foo = new Class({
	Extends: Bar,
	initialize: function(firstname, lastname) {
		this.parent(firstname);
		this.lastname = lastname;
	},
	sayHello: function(){
		alert(this.lastname || this.firstname);
	}
});

Читать дальше →
Total votes 77: ↑67 and ↓10+57
Comments113

Некоторые тонкости ИТ-аутсорсинга

Reading time11 min
Views6.8K
С огромным интересом посмотрел статьи, посвященные ИТ-аутсорсингу, которые размещены на хабре.
Как владелец не большой аутсорсинговой компании, позволю себе выразить свое мнение по поводу плюсов и минусов данного явления. Рассказать с какими трудностями приходится сталкиваться при работе в этой сфере, и как их можно избежать.

Сразу хочется сказать, что я не хочу останавливаться на теоретических аспектах построения ИТ-систем (ITIL, ITSM). В них описываются стандарты и подходы, к которым необходимо стремиться (что я стараюсь делать изо всех сил), но которые на практике не совсем все удается реализовать

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

Аутсорсинг — это ОТВЕТСТВЕННОСТЬ ЗА ПРОЦЕСС, которую берет на себя сторонний подрядчик.

Именно процесс целиком. ИТ-аутсорсинг — соответственно ответственность за ИТ-процессы компании-клиента. Процесс — упорядоченный и регламентированный набор действий для достижения поставленных целей. Если ИТ-процессов нет, или они не четкие — задача аутсорсера создать или нормализовать их. Как мне всегда казалось, и в чем я убеждаюсь сейчас — только такой подход «полной ответственности за процесс» даст возможности аутсорсеру получить максимальную прибыль и верных клиентов.
На практике мы наблюдаем ряд услуг, которые предлагают решить только часть проблем в поддержании работоспособности ИТ-систем. Я осмелюсь их классифицировать и дать свою оценку.
Читать дальше →
Total votes 58: ↑54 and ↓4+50
Comments30

Использование нескольких proxy в Opera

Reading time3 min
Views16K
В корпоративных и домашних сетях, содержащих внутренние web-ресурсы, порой возникает необходимость в наличии инструмента более функционального, чем общеизвестная опция «не использовать прокси для локальных адресов».

Однако, если Ваша корпоративная/домашняя сеть подключена к нескольким(более одного) провайдерам или же есть необходимость сэкономить на трафике наиболее часто посещаемых ресурсов, а также учитывая, что у многих провайдеров есть web-ресурсы, доступ к которым предоставляется бесплатно, то использование нескольких proxy становится оправданным.

Далее пойдет речь о том, как удобно использовать несколько, предварительно настроенных proxy, в браузере Opera, позволяющем выполнить данную задачу без установки дополнительных модулей и прочего ПО как под win так и под nix системами.
Читать дальше →
Total votes 74: ↑57 and ↓17+40
Comments43

Используем быстрые селекторы для jQuery

Reading time3 min
Views40K
Как Вы знаете — в разработке объёмного JS-приложения где используется популярнейшая библиотека jQuery наступает момент когда остро встаёт проблема производительности. Все силы кидаются на амбразуру профайлера, каждый вызов скрупулёзно исследован, каждый функционально нагруженный кусок реализации обнюхан со всех сторон и выправлен. Но беда поступает не с той стороны, откуда её ждут 90% разработчиков. Селекторы — Как много в этом слове.
Давайте разберёмся — как работает эта магия и почему поиск DOM-элементов может стать причиной падения производительности приложения.
Читать дальше →
Total votes 159: ↑155 and ↓4+151
Comments31

Валидатор микроразметки — новый инструмент в Яндекс.Вебмастере

Reading time2 min
Views2.8K
В этом году много запусков и нововведений для вебмастеров было посвящено содержимому сайта и различным способам акцентировать это содержимое в результатах поиска Яндекса или в соответствующих поисковых сервисах (Яндекс.Авто, Яндекс.Недвижимость и др.). Данные о содержимом сайта можно передать различными способами. Одним из способов является разметка HTML-кода страницы микроформатами.

Для того чтобы облегчить владельцам сайтов работу с разметкой страниц микроформатами, в Яндекс.Вебмастере сегодня появился новый инструмент – валидатор микроразметки. С помощью него вы можете проверить, как наш поисковый робот видит и обрабатывает предложенную вами семантическую разметку страницы, а также выяснить, есть ли в коде разметки ошибки, которые могут помешать корректной обработке данных.

Сейчас мы поддерживаем четыре вида микроформатов:
  • hCard — формат разметки контактной информации (адресов, телефонов и т.д.);
  • hRecipe — формат для описания кулинарных рецептов;
  • hReview —  формат разметки отзывов;
  • hProduct —  формат разметки товаров; сейчас используется в партнерской программе «Отзывы об автомобилях» для разметки информации об автомобилях.
Также мы поддерживаем microdata – международный стандарт семантической разметки, позволяющий с помощью атрибутов описать смысл информации, содержащейся в HTML-коде страниц. Такие атрибуты позволяют роботам-обработчикам находить и извлекать нужные данные. В настоящий момент в Яндексе микроданные  используются для разметки словарных и энциклопедических статей, терминов и определений.Подробнее узнать о том, какие данные можно передать Яндексу, смотрите на странице «Передача данных о содержимом сайта». А о микроформатах и микроданных читайте в Помощи.

Также мы рассказывали о семантической разметке и использовании микроформатов на июльском Яндекс.Субботнике. Послушать выступление и посмотреть текст доклада вы можете здесь.
Total votes 54: ↑54 and ↓0+54
Comments21

CMS своими руками. Теория велосипедостроения

Reading time8 min
Views25K
Как много веселых ребят
И все делают велосипед.
А один из них как-нибудь утром
Придумает порох.
Виктор Цой.

image

Сначала я хотел написать в раздел «Я пиарюсь» статью о том какой я молодец и какую замечательную штуку сделал но, немного поискав в сети, я без удивления обнаружил, что я совсем не единственный в своем роде. Тогда я решил пойти от обратного: наверное, практически каждый Веб-программист хотя бы раз в своей жизни пытается написать полноценную CMS. При этом, в процессе проектирования (а это процесс, зачастую, наступает уже во время написания кода) у разработчика непременно возникают вопросы. С этими вопросами он обращается к поисковикам и попадает на сайты тех, кто по подобным граблям уже прошествовал.

Итак, я стал смотреть, по каким же запросам попадают ко мне начинающие «разработчики велосипедов», и постарался осветить некоторые вещи, которые для меня самого были неочевидны в начале работ.

Ну-с, показывайте ваши синяки...
Total votes 168: ↑147 and ↓21+126
Comments208

Автоматическая преднастроенная установка Ubuntu: isolinux и preseed

Reading time11 min
Views69K
Как известно, Ubuntu Linux уже давным-давно содержит полный набор инструментов, необходимых для работы большинства офисных сотрудников. А то, что не содержит, можно доустановить, либо же запустить с сервера, например, с помощью FreeRDP и Remmina. В результате — экономия средств и сильное упрощение администрирования клиентов. Многие фирмы уже начали потихоньку заменять свой парк машин на тонкие клиенты и полноценные компьютеры с Linux. И если вы тоже хотите пересадить пару отделов на Ubuntu, то возможно я смогу помочь вам сэкономить немного времени.

В этой статье я расскажу, как создать на основе Ubuntu (а так же любых её модификаций, включая Ubuntu Sever) или Debian преднастроенную, автоматически устанавливающуюся систему. Разобравшись в описанном ниже весьма несложном материале вы сможете делать свои собственные сборки Ubuntu с необходимыми вам приложениями и настройками, которые будут способны устанавливаться в полностью автоматическом режиме как с диска, так и по сети. В итоге при желании вы сможете добиться того, что вам будет достаточно просто включить компьютер и пойти пить чай, чтобы вернувшись увидеть установленную и полностью настроенную под ваши запросы систему со всем необходимым вам для работы софтом.

Подробнее...
Total votes 86: ↑78 and ↓8+70
Comments26

text-overflow в Firefox и все, все, все

Reading time9 min
Views14K
Многие наверняка сталкивались с проблемой, когда какой-нибудь текст нужно выводить в одну строку. При этом текст может быть весьма длинным, а ширина блока, в котором этот текст находится, обычно ограничена, хотя бы тем же размером окна браузера. На эти случаи придумано свойство text-overflow, которое внесено в рекомендацию CSS3, а впервые было реализовано в IE6, очень давно. В случае использования этого свойства для блока, если его текст больше по ширине чем сам блок, то текст обрезается и в конце ставится многоточие. Хотя тут не все так просто, но вернемся к этому чуть позже.
С Internet Explorer'ом все понятно, что же относительно других браузеров? И хотя в настоящий момент из спецификации CSS3 свойство text-overflow исключено, Safari его поддерживает (по крайней мере, в 3-й версии), Opera тоже (с 9-й версии, правда называется свойство -o-overflow-text). А Firefox — нет, не поддерживает, и даже в 3-й версии не будет. Печально, но факт. Но может можно что-то сделать?

Читать дальше →
Total votes 63: ↑58 and ↓5+53
Comments48

jQuery плагин для добавления ссылок в буфер обмена

Reading time3 min
Views19K
У многих из нас есть блоги, интернет-магазины, новостные сайты etc… Понятное дело стараемся опубликовывать оригинальный контент, но что же происходит после появления контента в интернетах, его конечно же просматривают и если он интересный, пользователи иногда обмениваются ссылкой на страничку с контентом. Новые переходы на нужную страницу и нам очень хорошо, а что если наш отличный текст просто взяли скопировали и скинули в аську\скайпик\почту — наш текст ушел, а перехода нету :(.

addtocopy plugin

Запретить копирование, это очень неправильно, весело и смешно ©, но мы ведь можем при копировании добавить в буфер обмена ссылку на наш сайтик. Рассмотрим как же нам это лучше сделать:

Читать дальше →
Total votes 101: ↑80 and ↓21+59
Comments49

Популярные продукты для электронной коммерции с открытым исходным кодом

Reading time4 min
Views30K
imageНас часто просят порекомендовать продукты eCommerce, которые могут интегрироваться с CMS или использоваться совместно с к.л. CMS. Ниже опубликован список ПО с открытым исходным кодом, пригодного для этих целей.
Примечание: русскоязычных пользователей, прежде всего, интересует наличие локализованных версий, поддержка отечественных платёжных систем и русское сообщество. В комментариях по тексту, выделенных курсивом, по-возможности указана эта информация.
Чертова дюжина движков под катом
Total votes 70: ↑54 and ↓16+38
Comments79

Your Personal DNS — еще немного о DNS хостинге

Reading time2 min
Views2.2K
Как уже не раз говорилось, в вопросе хостинга DNS есть ненулевое количество нюансов.
Часть из них, под девизом «мой провайдер предоставляет DNS сервера», описаны например вот тут:
http://habrahabr.ru/blogs/hosting/94496/
http://habrahabr.ru/blogs/hosting/90533/

Помимо оного существует еще ненулевое количество других вопросов. Начиная от фразы «Какие еще TXT записи? Какой еще sip?» и заканчивая «А сегмент сети, в котором наши DNS сервера из вашей %%%%%% не доступен. Нам очень жаль»

Мы думали, думали и решили, что наш лунный модуль будет, ну, как минимум, не хуже существующих.
А тут еще и EveryDNS продали.
Вообщем, если вкратце — то еще одним публичным и бесплатным DNS менеджером прибыло.

Читать дальше →
Total votes 102: ↑95 and ↓7+88
Comments186

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity