Оказывается такой удобный инструмент для борьбы с ДДОС атаками (или вернее со спамботами) как DDoS Deflate (который применяется тогда, когда в iptables отсутствует возможность использовать модуль connlimit), после инсталяции неправильно склонен себя конфигурировать. Это приводит к тому, что защита не работает.
Вячеслав Радионов @Slaver
веб-разработчик
Сравнение MemCache и MongoDb для сетевого кэша
7 min
9.9KВозникла достаточно неординарная идея: виде средства сетевого кеша взять не MemCache, а MongoDb и сравнить их производительность. Но для представления и сравнения показателей этих двух «механизмов кеширования» взяли еще и другие средства, позволяющие ускорить работу нашего App (APC, RamFS, TmpFS, XCache).
В статье приведены данные и графики сравнения этих механизмов с описанием и рассуждением полученных данных и графиков.
В статье приведены данные и графики сравнения этих механизмов с описанием и рассуждением полученных данных и графиков.
+29
Форки движка MySQL: MariaDB, Percona. who is who?
3 min
89KMySQL стал собственностью Oracle, есть ли альтернативы и как быстро движение вперед?.. Вроде как обобщающего обзорчика «who is who?» еще не было. Итак, обзорчик для тех кто «не в теме»
+90
Баланс
7 min
1KДо недавних пор база данных нашего ресурса обслуживалась на пару двумя серверами: Bonnie и Clyde. Clyde — основной сервер проекта, отвечающий на все запросы, Bonnie — сервер, поддерживающий базы других проектов и слейв-клиент базы суперхабра.
Clyde хорошо справляется со своим делом, была проведена большая работа по оптимизации базы, так что он вполне перемалывал все обращения при генерации миллиона с лишним документов в сутки. Однако, в моменты непредсказуемых пиковых скачков нагрузка время от времени переваливала за допустимые пределы.
Учитывая постоянно растущий объём данных и нагрузку, настала пора предпринять шаг в сторону масштабирования аппаратных ресурсов базы данных.
Clyde хорошо справляется со своим делом, была проведена большая работа по оптимизации базы, так что он вполне перемалывал все обращения при генерации миллиона с лишним документов в сутки. Однако, в моменты непредсказуемых пиковых скачков нагрузка время от времени переваливала за допустимые пределы.
Учитывая постоянно растущий объём данных и нагрузку, настала пора предпринять шаг в сторону масштабирования аппаратных ресурсов базы данных.
+74
Авторизация через ВКонтакте
2 min
62KСколько процентов пользователей вашего сайта являются также пользователями ВКонтакте? Как по вашему, сколько человек ничего не пишут / комментируют / добавляют (нужное подчеркнуть), лишь потому, что им лень регистрироваться на еще одном непонятном сайте в 100й раз? Предлагаю ответить для себя на эти 2 вопроса, прежде, чем ругать ВКонтакте и Open API.
В моем случае на сайт из ВКонтакте каждый день приходят около 1500 человек и обеспечить им простой и удобный способ регистрации, как мне кажется, является моим долгом.
Вряд ли я открою что то новое, но если, хотя бы еще 1 сайт станет немного удобнее после этой статьи — значит я не зря потратил свое время на написание этого текста.
В моем случае на сайт из ВКонтакте каждый день приходят около 1500 человек и обеспечить им простой и удобный способ регистрации, как мне кажется, является моим долгом.
Вряд ли я открою что то новое, но если, хотя бы еще 1 сайт станет немного удобнее после этой статьи — значит я не зря потратил свое время на написание этого текста.
+55
Смотрим YouTube на домашнем медиа-центре
2 min
1.9KДоброго времени суток, уважаемое Хабра-сообщество.
Для просмотра дома фильмов, ТВ, DVD и прочих радостей современного медиа-мира я использую отдельный стационарный компьютер, подключенный к ТВ.
В качестве ОС установлена Windows 7. Соответственно основной программой для развлечений является MediaCenter.
И все было хорошо, пока не возник вопрос — «А можно ли ролики YouTube смотреть, не отрывая руки от любимого пульта Microsoft Remote Control?»
Для просмотра дома фильмов, ТВ, DVD и прочих радостей современного медиа-мира я использую отдельный стационарный компьютер, подключенный к ТВ.
В качестве ОС установлена Windows 7. Соответственно основной программой для развлечений является MediaCenter.
И все было хорошо, пока не возник вопрос — «А можно ли ролики YouTube смотреть, не отрывая руки от любимого пульта Microsoft Remote Control?»
+38
Когда Photoshop отображает совсем не то, что надо
3 min
290K
Такая вот ситуация: дизайнер присылает макет, а у верстальщика открывается какая то лабуда светлая, или темная (если верстальщик испольует МасOS, а дизайнер Win.). Или же верстальщик сохраняет картинку, а там цвета другие стали.
Разберемся почему так и как с этим жить.
+143
Простое сравнение изображений с помощью php
3 min
27KАлгоритм возможно не новый, и не является идеалом, но, на удивление, работает. Никаких графов и корелляции.
Для начала, стоит отметить, что сравнение очень приблизительно (по крайней мере, на данном этапе), временами две совершенно разные фотографии оказываются похожими процентов на 60%, так же не учитываются жесткие модификации (повороты, инверсия, обрезка) – для этого нужно доводить и доводить. Лично для меня самым главным оказались два параметра: скорость, независимость от разрешения изображения и возможность сравнивать «изображения» прямо в базе данных.
Для начала, стоит отметить, что сравнение очень приблизительно (по крайней мере, на данном этапе), временами две совершенно разные фотографии оказываются похожими процентов на 60%, так же не учитываются жесткие модификации (повороты, инверсия, обрезка) – для этого нужно доводить и доводить. Лично для меня самым главным оказались два параметра: скорость, независимость от разрешения изображения и возможность сравнивать «изображения» прямо в базе данных.
+145
Реализация компонентов в Kohana
2 min
2.9KПредставим себе ситуацию, что у нас на сайте есть виджет. Этот виджет повторяется на сайте на каждой странице. Как нам сделать дизайн кода так, чтобы забыть про этот виджет и сконцентрировать внимание на других проблемах?
Конечно мы не можем себе позволить обращаться к области данных из шаблона, иначе это указывало бы на нашу неграмотность. Во многих фрейверках есть для этого свои решения. Но я проведу аналогию с symfony. В последнем имеется такое понятие как компонент. Выглядит это примерно так: вы вызываете в шаблоне статический метод с указанием названия компонентов, далее происходит обращение к одноименному контроллеру, извлекаются данные из области данных и передаются в фрагмент шаблона, последний рендерится и код вставляется в нативный шаблон. Таким образом получается архитектура MVC вложенная друг в друга. Я немного упростил эту схему, сразу говорю, но суть передал точно.
Так вот. В Kohana готового решения нет. Поэтому я и написал простой способ реализации компонентов который решается в три строчки кода.
И так. Пишем хелпер widget.php и кидаем его в папку application/helpers. Содержание хелпера следующее:
В классе контроллера пишем метод обычного содержания только вместо рендеринга шаблона мы его возвращаем т.е пишет return. Я всегда использую немного переопределенный контроллер Template_Controller. Пример метода контроллера:
Имя шаблона указываем с нижнего подчеркивания, что бы не путаться.
Теперь в любом шаблоне достаточно написать
И все — теперь вместо этой строки у нас отрендерится наш виджет. Вот так вот просто. Если необходимо то можем передать в компонент необходимые значения третьим аргументом в виде массива.
Кстати partial (symfony like) реализовываются простым включением в шаблон
partial — это простое включение шаблона (для тех кто не знает)
P.S. Только давайте не будем разводить холивары по поводу Smarty(и т.п.) vs Native Template.
Есть много наработок по поводу Kohana — со временем опубликую цикл статей на блоге и здесь.
UPD. Перенести пост в блог Kohana немогу. Не хватает кармы
Конечно мы не можем себе позволить обращаться к области данных из шаблона, иначе это указывало бы на нашу неграмотность. Во многих фрейверках есть для этого свои решения. Но я проведу аналогию с symfony. В последнем имеется такое понятие как компонент. Выглядит это примерно так: вы вызываете в шаблоне статический метод с указанием названия компонентов, далее происходит обращение к одноименному контроллеру, извлекаются данные из области данных и передаются в фрагмент шаблона, последний рендерится и код вставляется в нативный шаблон. Таким образом получается архитектура MVC вложенная друг в друга. Я немного упростил эту схему, сразу говорю, но суть передал точно.
Так вот. В Kohana готового решения нет. Поэтому я и написал простой способ реализации компонентов который решается в три строчки кода.
И так. Пишем хелпер widget.php и кидаем его в папку application/helpers. Содержание хелпера следующее:
Copy Source | Copy HTML
- <?php
- class widget
- {
- public static function paste($className,$functionName,$parameters = null)
- {
- $controllerName = $className.'_Controller';
- $controller = new $controllerName;
- $controller->$functionName($parameters)->render(true);
- }
- }
- ?>
В классе контроллера пишем метод обычного содержания только вместо рендеринга шаблона мы его возвращаем т.е пишет return. Я всегда использую немного переопределенный контроллер Template_Controller. Пример метода контроллера:
Copy Source | Copy HTML
- public function widget_example()
- {
- return View::factory('_example.php',array('var' => 'Привет мир!'));
- }
Имя шаблона указываем с нижнего подчеркивания, что бы не путаться.
Теперь в любом шаблоне достаточно написать
Copy Source | Copy HTML
- <?php widget::paste('Index','widget_example')?>
И все — теперь вместо этой строки у нас отрендерится наш виджет. Вот так вот просто. Если необходимо то можем передать в компонент необходимые значения третьим аргументом в виде массива.
Кстати partial (symfony like) реализовываются простым включением в шаблон
Copy Source | Copy HTML
- <?php View::factory('template')->render() ?>
partial — это простое включение шаблона (для тех кто не знает)
P.S. Только давайте не будем разводить холивары по поводу Smarty(и т.п.) vs Native Template.
Есть много наработок по поводу Kohana — со временем опубликую цикл статей на блоге и здесь.
UPD. Перенести пост в блог Kohana немогу. Не хватает кармы
+5
Масштабируемая картинка на фоне сайта
4 min
20KЗадача:
Дизайнер нарисовал макет страницы, на заднем фоне которой была картинка. Я сначала было решил, что это фон который увеличивается по ширине в зависимости о разрешения монитора.
Но не тут то было. Дизайнер настаивал на то, что это масштабируемая картинка, которая сужается / растягивается при изменение окна приложения и по ширине и по высоте.
Заранее предупредив заказчика – что картинка будет грузиться 1 и в максимальном разрешении – его определили как 1600, приступил к работе.
Дизайнер нарисовал макет страницы, на заднем фоне которой была картинка. Я сначала было решил, что это фон который увеличивается по ширине в зависимости о разрешения монитора.
Но не тут то было. Дизайнер настаивал на то, что это масштабируемая картинка, которая сужается / растягивается при изменение окна приложения и по ширине и по высоте.
Заранее предупредив заказчика – что картинка будет грузиться 1 и в максимальном разрешении – его определили как 1600, приступил к работе.
+37
Сравнение PHP-фреймворков: CakePHP, CodeIgniter и Yii
11 min
47KНе так давно на Хабре проскакивал пост о появлении нового PHP-фреймворка под названием Yii.
После ознакомления, этот фреймворк показался мне интересным, перспективным и достойным внимания.
Недавно Daniel Carrera выложил в своем блоге интересную статью «Comparison of PHP frameworks» о сравнении CakePHP, CodeIgniter и Yii.
С целью популяризации Yii среди русскоговорящего (и плохо-по-английски-читающего) населения я решил сделать перевод.
После ознакомления, этот фреймворк показался мне интересным, перспективным и достойным внимания.
Недавно Daniel Carrera выложил в своем блоге интересную статью «Comparison of PHP frameworks» о сравнении CakePHP, CodeIgniter и Yii.
С целью популяризации Yii среди русскоговорящего (и плохо-по-английски-читающего) населения я решил сделать перевод.
+85
Верстка скругленных границ и острых углов
4 min
21KСложность элементов интерфейса увеличивается с каждым новым макетом, что доставляет немало хлопот верстальщикам. Развивающиеся технологии позволяют создавать в WEBе сложные приложения (Google не даст мне соврать), поэтому дизайнеры себя не сдерживают и рисуют всё более навороченные вещи. Как правило, это приводит к большому количеству графики на страницах.
В этой статье приводится пара полезных на взгляд автора рецептов. Возможны вы уже с ними знакомы, а возможно вынесите для себя что-то новое, решать вам.
В этой статье приводится пара полезных на взгляд автора рецептов. Возможны вы уже с ними знакомы, а возможно вынесите для себя что-то новое, решать вам.
+176
Форматирование длинных SQL-запросов
1 min
16KВступил недавно в локальный оффлайн-холивор на тему форматирования длинных SQL-запросов.
Собственно, весь холивор сводится к тому, что удобнее читать — INNER JOIN ДО таблицы, или ПОСЛЕ неё, а так же — AND — до или после обьявления условия.
Два варианта и вопрос к хабровчанам под катом:
Собственно, весь холивор сводится к тому, что удобнее читать — INNER JOIN ДО таблицы, или ПОСЛЕ неё, а так же — AND — до или после обьявления условия.
Два варианта и вопрос к хабровчанам под катом:
+17
Почему Jabber свободен от спама?
2 min
4.2KTranslation
Вольный перевод текста от Peter Saint-Andre, одного из самых активных участников Jabber/XMPP community.
1. В XMPP, адрес отправителя задается не на компьютере отправителя в программе-клиенте, а на сервере. Так что, клиент не может подделать адрес «От:». (Конечно, если вы — администратор сервера jabber.org, в принципе, вы можете отослать сообщение от имени любого пользователя этого сервера. Но только этого сервера. Отослать сообщение от имени пользователя другого домена вы не сможете).
2. В XMPP, сервера проверяют друг друга с помощью протокола «dialback» (RFC 3920 / XEP-0220), основанного на DNS, или с помощью сертификатов сервера. Так что, если я запустил сервер на домене jabber.org, я не смогу отсылать сообщения от имени microsoft.com или whitehouse.gov. (Кроме того, сообщения доставляются от сервера отправителя к серверу получателя напрямую, минуя промежуточные jabber-сервера. Подделывать адреса сообщения в процессе доставки некому.)
1. В XMPP, адрес отправителя задается не на компьютере отправителя в программе-клиенте, а на сервере. Так что, клиент не может подделать адрес «От:». (Конечно, если вы — администратор сервера jabber.org, в принципе, вы можете отослать сообщение от имени любого пользователя этого сервера. Но только этого сервера. Отослать сообщение от имени пользователя другого домена вы не сможете).
2. В XMPP, сервера проверяют друг друга с помощью протокола «dialback» (RFC 3920 / XEP-0220), основанного на DNS, или с помощью сертификатов сервера. Так что, если я запустил сервер на домене jabber.org, я не смогу отсылать сообщения от имени microsoft.com или whitehouse.gov. (Кроме того, сообщения доставляются от сервера отправителя к серверу получателя напрямую, минуя промежуточные jabber-сервера. Подделывать адреса сообщения в процессе доставки некому.)
+84
Что может и чего не может Opera
1 min
544Многих пользователей Opera из числа веб-разработчиков постоянно интересует вопрос о том, какие веб-стандарты норвежский браузер поддерживает полностью, какие — частично, а чего лучше вообще не касаться, т.к. Opera всё равно не поддерживает данный стандарт. С недавнего времени на официальном веб-сайте появилась подробная таблица со списком всех поддерживаемых веб-спецификаций. Всем, кто интересуется данным вопросом — добро пожаловать в специализированный раздел.
+29
Разница между разметкой и представлением
4 min
1.4KПрочитав комментарии к заметке Firefox 3: * {display: block } bug, понял что заметная часть читателей Хабра, в том числе серьёзно занимающиеся веб-разработкой, не совсем верно представляют себе что-то же такое HTML, и почему теги отображаются так, а не иначе.
+135
Отладка PHP средствами Firebug
2 min
25K
Отладка PHP-скриптов определенно недостаточно освещена в интернете. Потому многие, очень многие довольствуются print_r-ками. Очевидный недостаток такого способа — нельзя отладить AJAX, SOAP-сервисы, генераторы картинок и вообще скрипты, не отдающие непосредственно HTML-документов.
Javascript-разработчики используют для отладки Firebug. Как я им всегда завидовал. Лепота — выделенная консоль, net-монитор, отладчик, и все это в любимом браузере.
Так вот, нашел такое расширение Firebug — FirePHP. Оно позволяет выводить информацию в консоль Firebug непосредственно из PHP. Делается это довольно простым вызовом:
+68
Рабочая библиотека веб-типографа и контент-менеджера
4 min
7.6KНесмотря на то, что основной инструмент работы веб-типографа и контент-менеджера — это Интернет, пока ещё не весь корпус полезных для нас материалов переведён в электронную форму. Поэтому я решил перечислить те бумажные книги, которые стоят у меня на отдельной полке, и на которые не успевает оседать пыль из-за постоянного их использования.
Список книг будет разбит на группы по темам, и каждая из них — на группы «обязательно прочесть и иметь» и «можно прочесть и иметь» (это выделение безусловно субъективно, так что спорить насчёт него не буду точно). В принципе, большинство книг есть в широкой продаже, в том числе и в крупнейших российских интернет-магазинах. Некоторые есть в отсканированном виде и их можно найти в Интернете.
Я решил охватить следующие темы, которые либо всё время всплывают в процессе работы, либо необходимы для общего образования дизайнеров, интересующихся веб-типографикой, и контент-менеджеров:
Список книг будет разбит на группы по темам, и каждая из них — на группы «обязательно прочесть и иметь» и «можно прочесть и иметь» (это выделение безусловно субъективно, так что спорить насчёт него не буду точно). В принципе, большинство книг есть в широкой продаже, в том числе и в крупнейших российских интернет-магазинах. Некоторые есть в отсканированном виде и их можно найти в Интернете.
Я решил охватить следующие темы, которые либо всё время всплывают в процессе работы, либо необходимы для общего образования дизайнеров, интересующихся веб-типографикой, и контент-менеджеров:
- типографика бумажных изданий,
- шрифты,
- русский язык и создание текстов,
- справочники редактора и корректора,
- оформление графиков и диаграмм.
+78
Эхо или печать?
3 min
37KВопрос: «Что быстрее — echo или print?» не перестаёт будоражить умы тех, кто считает себя профессиональным программистом на PHP. Руководство пользователя осторожно упоминает об имеющемся различии, но отсылает к статье стороннего авторства; та, в свою очередь, утверждает, что echo быстрее, но не приводит доказательств; трудно найти объективное сравнение, и всё это придаёт проблеме некий мистический ореол, на что клюют многие и многие.
Так не будем же оставаться в стороне и постараемся раз и навсегда разгадать эту загадку!
Так не будем же оставаться в стороне и постараемся раз и навсегда разгадать эту загадку!
+148
Делаем свой webfile
4 min
13KОтчего-то всегда хотел сделать свой сервис для загрузки файлов. Всевозможные slil/zalil не устраивали своей скоростью. ifolder — обилием рекламы. Пользовался не очень популярным (от этого он ни чуть хуже не становился) сервисом up.spbland.ru. Но это как-то не правильно. И тут я решил написать свой сервис. Не буду вдаваться в подробности и рутину, только концепция.
+125
Information
- Rating
- Does not participate
- Location
- Минская обл., Беларусь
- Date of birth
- Registered
- Activity