Search
Write a publication
Pull to refresh
73
0
Дмитрий @depp

User

Send message

ОС и вебсервер — вместе веселей

Reading time3 min
Views6.1K
Привет всем. Сначала я думал, что лучше всего продолжить тему nginx на примере подчищенного и откомментированного конфига с одного из боевых серверов, но потом понял, что это потребует довольно большого объёма дополнительной информации. Поэтому, я решил попробовать, для затравки, рассказать в общих чертах о том, как nginx устроен, и почему он работает так быстро.

далее

«Виртуальная модель» или как нежно и аккуратно снять требования к проекту

Reading time3 min
Views2.4K
Жизнь — штука сложная, выкидывает порой такие забавные коленца, которые заставляют не то чтобы прыгать вперед с закрытыми глазами, скорее это похоже на попытку уехать на машине без ключей зажигания и с пустым баком. Но как показывает практика, многие веб-студии до сих пор толкают свои автомобили. Попробуем исправить это хотя бы частично.

Бывают такие проекты, когда нет возможности заниматься анализом и исследованиями так, как это принято в цивилизованном обществе. Это происходит по разным причинам: отпуска сотрудников, маленький бюджет, сжатые сроки, а иногда встречаются даже противники предварительного обследования. Практически как в известном анекдоте: «чего тут думать — трясти надо». Поэтому приходится собирать и формализовывать требования за очень короткий срок и одну-две встречи с заказчиком, который не всегда может рассказать о решаемых задачах в силу отсутствия опыта работы с сайтами.

Хлебнув несколько раз проблем с нехваткой данных для дальнейшей работы, я выработал для себя ряд мер, которые гордо назвал «виртуальной моделью» =)
П-п-п-помедленней, пожалуйста, я записываю!

Веб-аналитика: анализируй это! Часть 2. Сбор данных

Reading time5 min
Views18K
Перед тем, как анализировать данные статистики, нужно понимать, как они были собраны, какие из них могут быть неточными, и почему.

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

Есть идея!

Reading time1 min
Views1.3K
image
У меня появилась идея. Среди нас есть программисты, верстальщики, дизайнеры и т.д. У всех есть какая-то интересная идея, которую бы они хотели реализовать, но не могут, потому что не обладают достаточными знаниями в той или иной области.

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

Или пользователь айфона придумал нужную и полезную программу, но опять же не знает, как её написать и отправить в AppStore
Читать дальше →

Тюнинг nginx

Reading time8 min
Views97K
Статья написана по материалам моего доклада на CodeCamp 2009.

Для многих из нас настает тот долгожданный день, когда аудитория сайта начинает стремительно расти. Каждое утро мы, затая дыхание, смотрим на графики google analitycs и расплываемся в улыбке, когда взят рубеж в очередную тысячу посетителей в день. Как правило, рост посещаемости не совпадает с ростом технической базы и сайт начинает тормозить. Тут в игру вступает сисадмин...

У любого проекта всегда есть что оптимизировать: можно почитать советы по оптимизации на webo.in, установить eaccelerator, memcache, проиндексировать поисковые поля в базе данных. Я предполагаю, что все это уже проделано, а сайт по прежнему тормозит.

Пришло время оптимизировать nginx...

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

Партиционирование таблиц в mySQL

Reading time4 min
Views188K
Начиная с версии 5.1 mySQL поддерживает горизонтальное партицирование таблиц. Что это такое? Партиционирование (partitioning) — это разбиение больших таблиц на логические части по выбранным критериям.. На нижнем уровне для myISAM таблиц, это физически разные файлы, по 3 на каждую партицию (описание таблицы, файл индексов, файл данных). Для innoDB таблиц в конфигурации по умолчанию – разные пространства таблиц в файлах innoDB (не забываем, что innoDB позволяет настраивать индивидуальные хранилища на уровне баз данных или даже конкретных таблиц).

Как это выглядит?

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

Поиск нечетких дубликатов. Алгоритм шинглов для веб-документов

Reading time4 min
Views45K
Ранее я показал элементарную реализацию алгоритма шинглов, позволяющую определять, являются ли два документа почти дубликатами или нет. В этот раз я поясню реализацию алгоритма, описанную Зеленковым  Ю. Г. и Сегаловичем И.В. в публикации «Сравнительный анализ методов определения нечетких дубликатов для Web-документов».
Этим я начинаю серию из трех теоретических статей, в которых постараюсь доступным языком описать принцип алгоритмов шинглов, супершинглов и мегашинглов для сравнение веб-документов.
Читать дальше →

Защита пользователей почтового сервера от спаммеров — несколько шагов, которые помогут вам отослать спаммеров подальше

Reading time6 min
Views28K
image

Здравствуйте, Хабровчане!

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

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

pv — маленькая, но очень полезная утилита

Reading time2 min
Views86K
Один мой друг сказал по поводу pv следующее «Я админю семь лет, мне нужна была эта тулза десятки раз, а я даже не знал что она существует». В размышлениях над тем как заполучить инвайт на Харбе, я набрал в поиске pv. И ничего не нашел.
Читать дальше →

Siege — утилита для нагрузочного тестирования веб-серверов

Reading time7 min
Views83K
Надеюсь, что данный материал будет кому-нибудь полезен.

Siege – это утилита для нагрузочного тестирования веб-серверов. Она была создана для того чтоб дать разработчикам возможность проверить ресурсоёмкость своего кода в условиях, максимально приближенных к реальным. Так же Siege может имитировать обращения к сайту сразу нескольких пользователей. Это позволяет держать сервер как бы «под осадой» долгое время. Количество запросов, произведённых при «осаде», рассчитывается из общего количества пользователей и количества их обращений к серверу. Например 20 пользователей, обратившись по 50 раз, создают в общей сложности 1000 запросов. Результат, выводимый программой после тестирования, включает в себя время затраченное на проверку, общее количество переданной информации ( включая заголовки ), среднее время ответа сервера, его пропускную способность и число запросов на которые пришёл ответ с кодом 200. Эти данные формируются и выдаются при каждой проверке. Подробно они описываются ниже. Siege имеет 3 основных модели работы – режим регрессионного тестирования, режим имитации Интернета и режим грубой силы. Программа считывает порцию ссылок из конфигурационного файла и обращается к ним по очереди ( режим регрессионного тестирования ) или случайно ( имитация интернета ). Или же пользователь может указать один единственный адрес к которому будут производиться все обращения – режим грубой силы.

UPD: спасибо за плюсы, перенес в тематический блог.
Читать дальше →

Redis — высокопроизводительное хранилище данных

Reading time2 min
Views102K
Бодрый день, хаброчеловеки!

Что такое Redis?


Redis — это высокопроизводительное нереляционное распределённое хранилище данных. В отличие от Memcached, который может в любой момент удалить ваши данные, вытесняя старые записи новыми, Redis хранит информацию постоянно, таким образом он похож на MemcacheDB.

Чем Redis отличается от существующих решений?


API для работы с Memcached (MemcacheDB) позволяет хранить массивы, но эти массивы будут сериализованы и сохранены как строки, таким образом атомарные операции над такими массивами не возможны.
Redis позволяет хранить как строки, так и массивы, к которым можно применять атомарные операции pop / push, делать выборки из таких массивов, выполнять сортировку элементов, получать объединения и пересечения массивов.

Производительность


110000 запросов SET в секунду, 81000 запросов GET в секунду на Linux-сервере начального уровня (тесты).

Высокая скорость работы Redis обеспечивается тем, что данные хранятся в оперативной памяти и сохраняются на диск либо через равные промежутки времени, либо при превышении определённого количества не сохранённых запросов. Из этого вытекает, что используя Redis, вы можете потерять результаты нескольких последних запросов, что вполне приемлимо для большинства веб-приложений, учитывая, что обращение к Redis по скорости сравнимо с обращением к оперативной памяти. Тем не менее, потерь можно избежать через избыточность — Redis поддерживает неблокирующую master-slave репликацию.

Sharding


Redis, как и Memcached, может работать как распределённое хранилище на многих физических серверах. Такой функционал реализуется в клиентских библиотеках, и к сожалению, «из коробки» этот функционал реализован пока только в Ruby API, однако это не мешает вам хешировать ключ самостоятельно и получать ID сервера, к которому с этим ключом обращаться.

API


API доступно для следующих языков:
  • Ruby
  • Python
  • PHP
  • Erlang
  • Tcl
  • Perl
  • Lua
  • Java


API для PHP доступно как в виде модуля, написанного на C, так и в виде PHP5 класса, который общается с Redis-сервером через сокеты, таким образом не требуется устанавливать модуль.
Кроме того существует PHP5 класс от отечественного разрабочика (с именем, заслуживающим доверия. Я серьёзно.) — IMemcacheClient. (Спасибо DYPA за наводку)

Перспективы развития


Разработка ведётся очень активно, комиты происходят почти каждый день, сейчас доступна версия Redis 0.900 (1.0 release candidate 1), которая очень скоро станет версией 1.0
В ближайшем будущем авторы обещают внедрить разные интересные фичи, в том числе и сжатие данных.

Лицензия и поддерживаемые платформы


Redis — написан на ANSI C и работает на большинстве POSIX-систем (Linux, MacOS X). Это бесплатное открытое ПО под BSD лицензией =)

Up: Rediska — удобный PHP-клиент для key-value базы Redis. Оф.сайт.

Выравнивание полей формы с помощью CSS

Reading time2 min
Views166K

Задача


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

forms_1

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

Скругленные углы на чиcтом CSS без JS без картинок с анти-аллиасингом

Reading time2 min
Views7.7K
Раз уже пошла такая пьянка бурное обсуждение, то предложу и свой метод скругления углов, с характеристиками, которые можно увидеть в названии топика.

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

Итак, что же мы имеем: чистый CSS, без единой картинки, без JavaScript (хотя и с ним, для демонстрации, тоже сделаем), с анти-аллиасингом (то есть плавные переходы), прозрачные углы (то есть в фоне может быть что угодно), тянущийся по высоте и ширине и, конечно же, кроссбраузерный метод.

Не томи

Типограф в FCKEditor

Reading time1 min
Views2.7K
Пользуетесь FCKEditor и хотите чтоб ваш сайт выглядел хорошо с точки зрения типографики, но не хочется каждый раз куда-то лезть? тогда это для вас, Plugin для FCKEditor который позволяет оттипографить прямо в редакторе.

За основу моего был взят плагин http://click1.ru/book/tipograf-plagin-k-redaktoru-fck, после того как он у меня сразу не захотел работать пришлось допилить его немного ручками, в результате чего получился мой вариант этого плагина.
Читать дальше →

38 статей о создании закругленных углов на сайтах

Reading time4 min
Views12K
Моя статья на Временно.нет
38 статей о создании закругленных углов на сайтах
Часто сталкиваешься с необходимостью создания блоков с круглыми краями. Задавшись вопросом как вообще можно решить поставленную задачу, сделал подборку интересных статей и уроков на данную тему.

Здесь представлен обзор 38 статей, разбитых на 4 категории по способам реализации.
Читать дальше →

Средневзвешенная система голосования

Reading time3 min
Views3.5K
Вступление. Эту статью написал мой друг — Семён Шторкин, владелец нижегородского сайта-коммьюнити для фотографов (фотогорький). Пока его, к сожалению, нет на Хабре, но попробую этим топиком заработать для него инвайт :)

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

Tracing PHP Applications with xdebug

Reading time8 min
Views22K
Добро пожаловать во вторую серию нашего повествования про xdebug. Установка xdebug и его базовые возможности были рассмотрены в первой серии. В данной статье мы рассмотрим трассировку программы.
Предыдущая серия цикла Introducing xdebug
Читать дальше →

Организуем релевантный поиск по разнородным данным с помощью Sphinx

Reading time10 min
Views22K
В одном из текущих проектов возникла задача поиска по данным разного типа, которая была успешно решена с помощью зарекомендовавшей себя поисковой машины Sphinx, но обо всем по порядку. 

Постановка задачи


В проекте есть на данный момент 2 зоны:
  1. географическая зона, реализованная на базе Google Maps, которая отображает нанесенные пользователями на карту географические объекты (маркеры, маршруты и области);
  2. информационная зона, которая представляет собой большой иерархически организованный каталог, содержащий информационные материалы.
Необходимо было решить задачу одновременного текстового поиска по 3-м типам объектов: географическим объектам, категориям информационной зоны и материалам информационной зоны — c возможностью фильтрации по дате публикации объектов и категориям, к которым они относятся.
Решаем задачу

ООО «Снежинка» — Часть 3. Федеральный Закон от 30 декабря 2008 г. N 312-ФЗ Перерегистрация, Новые формы документов для регистрации

Reading time3 min
Views1K
С 1 июля 2009 года общества с ограниченной ответственностью будут действовать на основании единственного учредительного документа – устава. Учредительные договоры обществ с 1 июля 2009 года утрачивают силу учредительных документов. Все ООО с момента регистрации обязаны вести список своих участников. В него войдет информация об учредителях, включая данные об их адресах, сведения о принадлежащих им долях и их оплате, данные о долях, перешедших к обществу.
Обществам с ограниченной ответственностью необходимо внести изменения в свой устав. Сделать это нужно не позднее 1 января 2010 года. Изменения в устав вступают в силу с момента регистрации. То есть в срок, установленный в законодательстве, нужно успеть не только внести изменения в устав, но и зарегистрировать их. Поскольку 1 января 2010 года – нерабочий день, окончание срока переносится на первый рабочий день года.

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

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

Передача функций через JSON

Reading time3 min
Views17K
Из этого топика вы узнаете как отправить JavaScript функции, через JSON используя PHP (сама концепция может быть применена и для других языков).

PHP, начиная с версии 5.2.0, включает функции json_encode() и json_decode(). Эти функции кодируют данные в формат JSON и декодиуют JSON в ассоциативные массивы. В json_encode() не может быть закодирована функция. В ряде случаев это чертовски неудобно.
  1. Добавлен пример реализации в Zend Framework.
  2. Вопрос к кармавампирам — вы знаете вариант как передать handler для создания объекта иначе?
  3. Комментарий о том для чего и кому это нужно.
Читать дальше →

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity