Как стать автором
Поиск
Написать публикацию
Обновить
-2
0
maxic @maxic

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

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

AdMe.ru: Тэги, полнотекстовый поиск и всё такое…

Время на прочтение9 мин
Количество просмотров7.6K
В этой статье я открою секреты того, как работает adme.ru, а именно я расскажу о том как устроено хранение статей и тэгов, как работает полнотекстовый поиск, поиск по тэгам и всё такое…

В статье приведён пример структуры таблиц, рабочий конфиг Sphinx и немного php кода с примерами выборок.
Читать дальше →

Пишем свой первый Windows-драйвер

Время на прочтение5 мин
Количество просмотров136K
Итак, после моей предыдущей статьи я понял что тема про программирование драйверов Windows интересна хабровчанам, поэтому продолжу. В этой статье я решил разобрать простую программу-драйвер, которая делает только то, что пишет отладочное сообщение «Hello world!» при старте драйвера и «Goodbye!» при завершении, а также опишу те средства разработки, которые нам понадобятся для того, чтобы собрать и запустить драйвер.

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

Многопроцессовые демоны на PHP

Время на прочтение3 мин
Количество просмотров44K
Зачем может понадобиться писать демоны на PHP?
  • Выполнение трудоемких фоновых задач;
  • выполнение задач, которые длятся больше, чем время ожидания при HTTP-запросе (30 секунд);
  • выполнение задач на более высоком уровне доступа, чем серверный процесс (читай — под рутом).

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

Эмуляция многопоточности в PHP

Время на прочтение10 мин
Количество просмотров30K
Суть многопоточности (для приложения) состоит в том, что процесс может состоять из нескольких (однотипных) потоков, выполняющихся «параллельно», то есть без упорядочивания по времени — выполнился один, пошел следующий. Использование многопоточности позволяет ускорить выполнение задачи и/или снизить нагрузку, таким образом, улучшая быстродействие самого приложения.

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

Я рассмотрю простой пример, как можно достичь эмуляции многопоточности в PHP.
Читать дальше →

Полнотекстовый поиск и его возможности

Время на прочтение6 мин
Количество просмотров207K
Многие СУБД поддерживают методы полнотекстового поиска (Fulltext search), которые позволяют очень быстро находить нужную информацию в больших объемах текста.

В отличие от оператора LIKE, такой тип поиска предусматривает создание соответствующего полнотекстового индекса, который представляет собой своеобразный словарь упоминаний слов в полях. Под словом обычно понимается совокупность из не менее 3-х не пробельных символов (но это может быть изменено). В зависимости от данных словаря может быть вычислена релевантность – сравнительная мера соответствия запроса найденной информации.

В статье рассказывается как работать с полнотекстовым поиском на примере БД MySQL, а так же приведу примеры «нестандартного» использования данного механизма.

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

Верстка для мобильных устройств

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

Общая информация


Так как мобильных устройств существует великое множество, то одна модель может поддерживать какие-либо возможности HTML/CSS, а другая наоборот — либо не поддерживать, либо поддерживать неправильно.

Но большинство устройств среднего и уж тем более hi-end класса поддерживают HTML/CSS в той или иной степени. Таким образом, язык WML для разработки сайтов под мобильные устройства устарел и практически не используется. На смену ему постепенно приходит общепризнанный стандарт в разработке сайтов — XHTML/CSS. Кодировка — строго UTF-8 (No BOM).

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

Баланс

Время на прочтение7 мин
Количество просмотров1K
До недавних пор база данных нашего ресурса обслуживалась на пару двумя серверами: Bonnie и Clyde. Clyde — основной сервер проекта, отвечающий на все запросы, Bonnie — сервер, поддерживающий базы других проектов и слейв-клиент базы суперхабра.

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

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

что из этого вышло

Ajax-машина

Время на прочтение11 мин
Количество просмотров4.1K
Знали ли разработчики LiveScript из Netscape о том, какое влияние окажет их язык, позже переименованный в JavaScript, на лицо интернета — веб-сайты, или, может быть, они твердо на это рассчитывали, но факт остается фактом — JavaScript на сегодняшний день является одним из самых важных и распространенных языков в мире.

В то время, как на стороне сервера трудится разношерстная компания языков в лице php, perl, python, ruby, .net, java и многих других, на стороне клиента JavaScript существует буквально в гордом одиночестве. Фактически, из маленького дополнения к html, JavaScript превратился в полноправного члена банды «html+css+js», который, зачастую, уже командует остальными, сверкая золотым браслетом с надписью «ajax» и делая недовольное лицо $( ) при случае.
продолжить чтение

Микросайтинг

Время на прочтение1 мин
Количество просмотров2.2K
Я не буду подробно объяснять что такое микроблоггинг.
Меня всегда умиляло, когда люди умудряются вести блог в одной строчке статуса.
Я подумал-подумал и решил сделать микросайт, который, как и микроблог, можно запихнуть, например, в профиль.
Условия хостинга для микросайта минимальные: отстутствие php, mysql, запрет на css, но можно вставлять картинки и ссылки.
А что? нам этого хватит!
Итак, заведу-ка я свой микросайт, например, прямо тут, в комментах!
(А чтобы увидеть сайт, надо открыть комменты)
Внимание! В первом коменте устаревшая версия. Более юзабельную бету смотрите у меня в профиле (ainu)
Второе зеркало на примере коммента в ЖЖ: смотреть (не сочтите за рекламу и обратите внимание: в ЖЖ только одна запись, специально для примера)
А исходники тут.

upd: Тут второй пост о микросайтах.

Сделаем фотомодель по-быстрому!

Время на прочтение8 мин
Количество просмотров5.7K
Не знаю о чем Вы там подумали из названия, но знайте — я этого в виду не имел! :)
Итак, продолжим становиться «Колумбами и открывать то, что до нас знали миллионы людей», кто вспомнит откуда эта почти-цитата (подсказка: про Интернет) тому 4 балла к гик-карме. Итак…

Итак, в свободное время, когда я не создаю безумные проекты, не учу людей зарабатывать на стартапах, в это время я изучаю всяческие гик-технологии, в т.ч. одна из них прямо-таки у меня стала навязчивой идеей. А именно — взять свой городок в пригороде большого города и превратить его в 3d-уровень для какой-нибудь игры (в FarCry/Crysis я продвинулся в этом больше всего), при том с фотограмметрической точностью (погрешности в метр или меньше от реального расположения домов).

Для того, чтобы это сделать нам понадобится:
  1. 3d-модели;
  2. 3d-движок;
  3. наука со страшным названием фотограмметрия;
  4. даже математика — а то, когда читаешь про Spherical harmonics — радуешься, что приматом был некоторое время; грустишь что все-равно не понимаешь о чем там...
  5. тонна терпения (впрочем, я не был бы мировым лентяем, если бы это и правда было так);

Начнем с 3D моделей

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

MySQL Performance real life Tips and Tricks. Part 3-rd.

Время на прочтение14 мин
Количество просмотров23K
Решил продолжить цикл заметок по данной тематике. В данной статье особое место хотел уделить профайлингу MySQL запросов. Описать средства, которые предоставляются MySQL для профайлинга, и что нужно делать для определения узких мест запроса.

Также, после опубликования первых двух статей я получил пару отзывов и вопросов, связанных с проектированием БД / расстановкой индексов / составлением запросов. На многие вопросы старался отвечать. С некоторыми из них поделюсь и в этой статье.

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

Zend_Auth + Zend_Acl

Время на прочтение3 мин
Количество просмотров2.9K
На днях засел за изучение Zend Framework. Решил сразу написать простенькую cms. Первым делом решил разобраться с аутентификацией и авторизацией.

И понеслось...

jQuery для начинающих. Часть 2. JavaScript Меню.

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


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

Если Вам готовый код наглядней документации, то переходим от слов к делу, т.е. на страницу с примерами.
Читать дальше →

Еще немного интересных возможностей.

Время на прочтение2 мин
Количество просмотров843
Навеяно прошлым топиком.

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

MySQL Performance real life Tips and Tricks. To be continued.

Время на прочтение6 мин
Количество просмотров8.1K
По заявкам трудящихся решил написать еще одну статью, посвященную оптимизации запросов в MySQL.

В прошлой статье habrahabr.ru/blogs/mysql/38907 рассматривались вопросы оптимизации LIMIT, GROUP BY, COUNT.

В данной статье я немного вернусь к вышеописанному и опишу пару примеров, с которыми столкнулся на проекте недавно, после этого приведу еще пару небольших примеров относительно того что такое хорошо и что такое плохо в MySQL.
Читать дальше →

jQuery in Action. Глава 2

Время на прочтение9 мин
Количество просмотров23K
Как я и обещал, вторая глава из книги «jQuery in Action» (авторы Bear Bibeault и Yehuda Katz). Как и из первой главы, выбрал все самое вкусное и интересное ;-)

Напоминаю, что первую главу можно прочесть здесь.

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

Что на самом деле сделал Google

Время на прочтение3 мин
Количество просмотров2.4K
Я осознал. Только что. Наверное, я тормоз… но пока эта мысль нигде не озвучивалась.
Итак, пока все спорят, насколько хорош браузер Chrome, меряются тестами и ждут портов на Линукс и Мак, основная революция произойдет совсем не там.
Она кроется в маленькой незаметной кнопочке «создать ярлыки приложения».
Воспользовавшись этой функцией, вы получаете на рабочем столе или в главном меню ярлык на свой любимый сайт, который откроется без панели навигации и прочих ненужных элементов. Например, я первым делом создал такой ярлык для Google Reader. И удивился, насколько шустро он стал работать. Ну собственно, ничего удивительного. Наверняка для своих приложений Гугл оптимизировал JavaScript и собственный же движок.

Ну да суть не в этом. Что я получил? Я получил отличный, удобный, шустрый RSS-reader, который ничуть не уступает своим традиционным аналогам. Потом я наткнулся на забавную статью о том, как можно тем же способом получить неплохой калькулятор. А сколько уже небольших, приятных сервисов существует в сети? Тут и календари и текстовые редакторы и даже сложные графические приложения.
А теперь вспоминаем, какие основные особенности нового браузера от Google: оптимизация работы JavaScript (ускорение просто в разы!) и самостоятельные потоки для каждого окна. То есть одно кривое приложение не подвесит и не повалит остальные (сейчас может, но это исправят). В результате мы получаем… почти идеальную платформу для приложений.

Полная кросс-платформенность. HTML и JavaScript худо-бедно, но работают на любой операционной системе (где будет Google Chrome). Простота разработки и огромное количество готовых фреймворков. Огромное количество удобных бесплатных редакторов и сред разработки. Решение проблемы с обновлениями софта. Пользователь автоматически работает с самой последней версией. Замечательная обратная связь и статистика. Вы будете совершенно точно знать, какие функции вашей программы наиболее востребованы, оценивают ли пользователи ваши гениальные идеи или применяют приложение совершенно неожиданным способом. Кстати, не удивлюсь, если в Chrome встроен сборщик статистики, который отправляет много интересной информации в Корпорацию Зла Google. Но не удивлюсь и в том случае, если он туда не встроен. :)

Теперь следующий тонкий момент: браузер с открытым исходным кодом. Значит, наработками Google смогут воспользоваться и разработчики других, альтернативных браузеров. Даже великий и ужасный IE сможет включить аналогичные функции. И вот как раз это Google и надо. Зачем распространять свой браузер, если основную фичу можно продвинуть руками конкурентов. И пусть даже доля Chrome будет два процента, но если при этом все остальные браузеры станут поддерживать интернет-приложения, Google своего добьется.

А добьется он того, к чему стремится уже очень давно: повальной миграции пользователей на веб-приложения и сервисы. И кажется, на этот раз у него это получится. Да, серьезный софт, завязанный на сложные вычисления или требующий низкоуровневой работы с железом, никуда не денется. Но посмотрите сами на свой рабочий стол. Много там таких приложений? А сколько всяких мелких утилит для ежедневной работы? А ведь приличное их количество может работать через веб, ничуть не теряя функциональности.
К слову, никто не мешает делать ссылку и на локальную копию веб-сайта. И не удивляйтесь, если завтра ваша любимая программа X выйдет не в виде исполняемого файла, а в виде кучи HTML и JS кода, распакованного на ваш жесткий диск.

В общем, скоро мы окажемся в новом мире. Которым будет править не Microsoft, но Google.

Интересные возможности языка PHP

Время на прочтение3 мин
Количество просмотров7.9K
В данной статье я хочу рассказать о интересных, но не очень распространенных базовых возможностях языка PHP. Все, что написано далее в том или ином виде присутствует в документации к PHP в разрозненном виде. Автор вполне отдает себе отчет в том, что большинство профессиональных разработчиков все это отлично знает, но новички могут узнать что-то новое.

Содержание статьи имеет мало общего с моей прошлой статьей про использование выражений в PHP. Речь не идет об усложнении кода, скорее наоборот.

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

MySQL Performance real life Tips and Tricks

Время на прочтение9 мин
Количество просмотров37K
Пообещал вчера написать статью о реальных случаях оптимизации БД MySQL.
Пришлось сегодня вставать утром пораньше чтобы воплотить обещанное в жизнь.
Централизованное управление мыслями поддерживать еще сложно, поэтому не судите строго за казусы и ляпсусы в моей статье.

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

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

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

Теория кэша (часть вторая, практическая, дополненная)

Время на прочтение7 мин
Количество просмотров6.8K
Это вторая, дополнительная (upd: дополненная), часть моей статьи посвященной кэшированию информации при веб-разработке. Первая имеет название Теория кэша.

UPD: После многочисленных коментариев я сильно переработал статью, внес в неё больше конкретики и примеров, а так же убрал спорные моменты (например, касательно memcached). Спасибо всем, за конструктивную критику.

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

Информация

В рейтинге
Не участвует
Откуда
Сейшеллы, Сейшеллы
Дата рождения
Зарегистрирован
Активность