Как стать автором
Обновить
30
0
otaqsun @otaqsun

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

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

AtomJS — миниатюрный JavaScript фреймворк

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

Всем привет! Вторая часть про миниатюрный javascript фреймворк Atom (бывший Nano).
Теперь из Core убрано всё лишнее, вес — 1 кб.
Как и прежде — полный отказ от устаревших браузеров.
Dom, Class, Ajax и т.п. — подключаются как плагины.
Поменялся адрес репозитария: github.com/theshock/atomjs
Под катом — расскажу, что нового и опишу, как создавать плагины
Читать дальше →
Всего голосов 62: ↑57 и ↓5+52
Комментарии75

Как устроить DoS атаку на сервер баз данных одной строчкой

Время на прочтение2 мин
Количество просмотров17K
40 МБит / сек — неплохой трафик для DoS атаки. Именно на столько внезапно вырос входящий трафик до одного из наших серверов. Сайт мужественно держался. Время начала всплеска аномально высокого трафика подозрительно точно совпадало с временем выкладывания одного крупного релиза, что и навело на мысль о том что мы DoS`им себя сами.
Читать дальше →
Всего голосов 112: ↑103 и ↓9+94
Комментарии24

PHPLego: Плагины к сайту своими руками

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


Доброго утра, дорогие Хаброчитатели!

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

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

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

Итак, для себя я сформулировал задачу по следующим криетриям:

1) Каждый модуль должен содержать все необходимое для работы в одной папке — и шаблоны, и модель, и контроллер. Дабы его легко можно было скопипастить, подправить — и вуаля — новый модуль.
2) Модуль ничего не должен знать о тех, кто его создает — все необходимые ему для работы данные он получает через конструктор. Это для того, чтобы модуль работал не только на моем сайте, но и на всех сайтах моих друзей и клиентов без всякого допиливания напильником.
3) Для того, чтобы пользоваться модулем его не должно быть нужно где-либо регистрировать или инклудить дополнительные файлы. Это тупо раздражает.
4) Модуль может состоять из модулей. Т.е. должна быть поддержка вложенных модулей.
5) Ссылки (a href=...) внутри шаблонов модулей должны быть относительными, не зависящими от того, на какой глубине вложенности находится модуль. Чтобы банально не править шаблоны, если мы перемещаем модуль из одного родительского модуля в другой.
6) Сам сайт тоже должен быть модулем, раз уж на то пошло. Дабы можно было купить у друга уже рабочий сайт, положить себе в папку и встроить весь его на какую-нибудь страницу без лишних переделок.

Ну вот, для одной статьи я думаю достаточно, приступим к реализации.
Читать дальше →
Всего голосов 59: ↑47 и ↓12+35
Комментарии51

Как найти в статистике сайта продающий трафик?

Время на прочтение2 мин
Количество просмотров2.2K
Безусловно любой активный участник партнерских программ знает структуру посещаемости своего сайта или блога. Счетчики статистики отслеживают переходы с поисковых систем, контекстной рекламы, социальных сетей. Однако мало кто глубоко анализирует эти данные и использует найденные закономерности для улучшения результатов своих продаж.

Ниже три полезных совета как проанализировать свой трафик и его влияние на продажи на основе данных Google Analytics.
Читать дальше →
Всего голосов 12: ↑5 и ↓7-2
Комментарии0

Как верстать красиво или чем плохи css-фреймворки

Время на прочтение8 мин
Количество просмотров33K
Преимущества дивной вёрстки, семантичной разметки и разделения содержимого и дизайна описаны десятки, сотни раз, но все-равно находятся люди, которые не понимают самой идеи html и css, пишут в коде такие ужасные вещи, как
<span style="color:blue">

, когда хотят расскасить текст в синий цвет и искренне считают, что эта запись чем-то лучше, чем
<font color="blue">

, наивно веря в этом деле валидатору. А ведь правильный подход в написании html и css лежит на поверхности. Достаточно просто посмотреть историю развития этого языка, почитать статьи десятилетней давности и проанализировать. Я, при поддержке theshock, постаралась в этот статье упорядоченно и коротко изложить наше видение этого вопроса.

Читать дальше →
Всего голосов 200: ↑166 и ↓34+132
Комментарии174

Кейс «Проектирование веб-сервиса бронирования билетов». Бизнес-анализ. Описание существующих бизнес-процессов (AS-IS)

Время на прочтение2 мин
Количество просмотров30K
После того как стало понятно, в какой ситуации мы находимся и кто является основными агентами, необходимо описать бизнес-процессы, которые требуют автоматизации или изменения. Это поможет понять, что и в какой последовательности происходит, в применении к данному кейсу — как в общем происходит покупка билета и бронирование?

III. Описание процесса в графической форме


В виде диаграмм бизнес-процесс можно описывать с помощью различных нотаций: ARISVAD и EPC, IDEF0, BPMN и др. Нотаций много, у каждой есть свои достоинства и недостатки, в рамках этой статьи эта тема не затрагивается.

Основной плюс использования диаграмм — наглядность. Основные минусы — сложно изображать все возможные варианты ветвлений и долго вносить изменения.


Посещение кинотеатра без предварительного бронирования билетов (в нотации VAD)


Читать дальше →
Всего голосов 34: ↑30 и ↓4+26
Комментарии32

Настоящее скругление углов картинок на клиенте

Время на прочтение3 мин
Количество просмотров27K
О скруглении углов в html-верстке сказано уже столько, что я пойму тех кто прочитав заголовок иронично улыбнется и подумает «опять 25, ну сколько можно...». Поэтому я постараюсь кратко изложить суть, и сразу предупрежу, что этот метод вы едва ли могли видеть раньше.
Читать дальше →
Всего голосов 161: ↑143 и ↓18+125
Комментарии122

runkit 1.0.2

Время на прочтение1 мин
Количество просмотров4.1K
Ничто не предвещало ничего (с)

После 5 лет молчания и отсутствия развития, runkit разродился новой версией (даже двумя) и, потенциально, новым мейнтейнером (dzenovich).

Пока в официальном pecl-репозитории он отсутствует, но когда это нас останавливало:
pecl install github.com/downloads/zenovich/runkit/runkit-1.0.2.tgz

Код проекта находится по адресу: github.com/zenovich/runkit.

Читать дальше →
Всего голосов 49: ↑43 и ↓6+37
Комментарии20

Как FriendFeed использует MySQL для хранения данных без схемы

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

Условия


Мы используем MySQL для хранения любых данных FriendFeed. Наша база данных растёт вместе с числом пользователей. Сейчас у нас более 250 миллионов записей, это записи пользователей (post'ы), комментарии, оценки («likes»)

По мере того как росла база данных, мы время от времени имели дело с проблемами масштабируемости. Мы решали проблемы стандартными путями: slave-сервера, используемые только для чтения, memcache для увеличения пропускной способности чтения и секционирование для увеличения пропускной способности записи. Однако, по мере роста, использованные методы масштабируемости привели к затруднению добавлению новой функциональности.

В частности, изменение схемы базы данных или добавление индексов к существующим 10-20 миллионов записей приводили к полной блокировке сервера на несколько часов. Удаление старых индексов требовало времени, а не удаление ударяло по производительности, так как база данных продолжала использовать их на каждом INSERT. Существуют сложные процедуры с помощью которых можно обойти эти проблемы (например создание нового индекса на slave-сервере, и последующий обмен местами master'a и slave), однако эти процедуры настолько тяжелые и опасные, что они окончательно лишили нас желания добавлять что-то новое, требующее изменение схемы или индекса. А так как наши базы сильно распределены, реляционные вещи MySQL как например JOIN никогда не работали для нас. Тогда мы решили поискать решение проблем, лежащее вне реляционных баз данных.

Существует множество проектов, призванных решить проблему хранения данных с гибкой схемой и построением индексов на лету (например CouchDB). Однако, по-видимому ни один из них не используется крупными сайтами. В тестах о которых мы читали и прогоняли сами, ни один из проектов не показал себя стабильным, достаточно зрелым для наших целей (см. this somewhat outdated article on CouchDB, например). А все это время MySQL работал. Он не портил данные. Репликация работала. Мы уже в достаточной мере понимали все его узкие места. Нам нравился MySQL именно как хранилище, вне реляционных шаблонов.

Все взвесив, мы решили создать систему хранения данных без схемы поверх MySQL, вместо использования полностью нового решения. В этой статье я попытаюсь описать основные детали системы. Так же нам любопытно как другие сайты решили эти проблемы. Ну и мы думаем, что наша работа будет полезна другим разработчикам.
Читать дальше →
Всего голосов 116: ↑110 и ↓6+104
Комментарии60

Flattr: Новая система онлайн-платежей от создателя The Pirate Bay

Время на прочтение1 мин
Количество просмотров2.5K
Петер Сунде, один из основателей всем известного торрент-трекера The Pirate Bay, занялся созданием новой системы, призванной переосмыслить оплату цифрового контента.

Flattr (игра слов flatter — угождать, льстить — и flat rate — равная стоимость) представляет собой систему так называемых социальных микроплатежей: пользователь оценивает понравившийся ему контент одним нажатием. Схема работы очень похожа на Digg — создатели и распространители контента смогут поместить на свой сайт кнопку со счетчиком нажатий, каждое из которых — небольшая часть регулярно пополняемого баланса пользовательского Flattr-аккаунта.
Читать дальше →
Всего голосов 95: ↑88 и ↓7+81
Комментарии116

Ограничение доступа в интернет для приложений в Linux

Время на прочтение2 мин
Количество просмотров26K
Иногда бывает необходимо запустить программу, предварительно заблокировав для неё доступ в интернет. Существует довольно простой трюк для решения этой задачи.

Итак, идея заключается в том, чтобы при запуске приложения устанавливать особый ID группы, который будет сигналом блокировки доступа для netfilter.

Шаг 1. Создаём группу-маркер и добавляем себя в неё


Создаём группу (В нашем случае группа будет называться noinet):
sudo groupadd noinet

Добавляем в неё текущего пользователя:
sudo gpasswd -a `id -un` noinet
Читать дальше →
Всего голосов 83: ↑76 и ↓7+69
Комментарии34

Преодолеваем хабраэффект при помощи Coral CDN

Время на прочтение3 мин
Количество просмотров4.2K
Вы выкладываете на Хабрахабре гиперссылку на интересный сайт, а он вскорости обрушивается под наплывом посетителей, начинает подтормаживать или вообще перестаёт отвечать.

Вы помещаете в свою блогозапись иллюстрацию с другого сайта, а она вскорости не выдерживает напора зрителей, перестаёт отображаться или сменяется на уродливое уведомление о превышении объёмов выделенного ей траффика.

Таковы бывают неприятные проявления хабраэффекта — естественного DDoS, аналогом которого на Заокраинном Западе является слэшдот-эффект.

Ну а как противостоять естественному DDoS?

Первыми приходят на ум наиболее бесхитростные способы.

Читать дальше →
Всего голосов 146: ↑132 и ↓14+118
Комментарии47

Простой консольный прогрессбар на питоне

Время на прочтение3 мин
Количество просмотров31K
В связи с некоторыми вычислениями на питоне (например, подсчётом коэффициента симметрии карты реликтового излучения) мне захотелось сделать процесс более наглядным. Ну хотя бы добавить прогресс-бар. Скучно, знаете ли, сидеть перед пустой консолью и втыкать на запущенную команду. То ли работает, то ли висит… с ходу не понять. А делать какой-нибудь лог исполнения не хочется, так как потом в полученом хаосе глаз теряется.
Недавно нашёл выход: модуль progressbar.
Всего голосов 67: ↑63 и ↓4+59
Комментарии30

Физика на Flash. Box2D Engine

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

Быстрый, удобный и мощный физический движок с открытым исходным кодом. Под катом — ссылки, небольшой туториал и пример использования.
Читать дальше →
Всего голосов 81: ↑75 и ↓6+69
Комментарии40

Riak — веб-ориентированная система хранения данных

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


Немного статей на хабре посвящены новому движению в IT индустрии — NoSQL. Я решил изменить это и написал статью-перевод-обзор об одном из докладов с конференции NoSQL прошедшей 5 октября в Нью-Йорке. В этой статье будет говорится о системе Riak, с которой мне довелось иметь счастье работать последнее время.

Что такое Riak? Многие модные слова популярные сейчас, можно отнести к Riak. Riak — это документно-ориентированная база данных. Riak — это децентрализованное key-value хранилище данных, с поддержкой стандартных операций — get, put и delete. Riak — это распределенное, масштабируемое, отказоустойчивое решение для хранения информации. А так же Riak — это система с открытым исходным кодом и поддержкой обращений с помощью HTTP, JSON и REST. Ну и конечно RIAK — это NoSQL.

Читать дальше →
Всего голосов 80: ↑74 и ↓6+68
Комментарии32

51 Веб Приложение для Дизайнеров и Разработчиков

Время на прочтение11 мин
Количество просмотров13K
Веб дизайн и разработка претерпели значительные изменения в течении последних лет, точно так же изменились используемые технологии и инструменты. Эти изменения придали жизнь таким инструментам, которые сделали нашу жизнь проще, и дали возможность предоставлять нашим клиентам более качественные услуги. Коммуникации и совместная работа на огромных расстояниях уже не проблема и управление проектом стало весьма простой задачей.

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

Данная статья представляет 51 веб приложений для дизайнеров и разработчиков.
Идем дальше...
Всего голосов 101: ↑86 и ↓15+71
Комментарии26

Работаем с Google Protocol Buffer в РНР

Время на прочтение9 мин
Количество просмотров14K
pb4php_logoВ проекте, который я сейчас разрабатываю, возникла необходимость смены протокола, который используется для обмена данными между частями приложения. Сейчас, на уровне внутренних сервисов, обмен происходит через передачу сериализированных массивов РНР поверх TCP сокетов. Так как по обе стороны находятся приложения на РНР, проблем не возникает, формат пакета данных также стандартный, поэтому особых сложностей нет. Разве что часто меня не удовлетворяет скорость обработки, а также то, что мы сильно завязаны на язык и платформу. Если придется стыковать с другой системой или же переписать что-либо, будут сложности — ведь сериализированный формат поймет лишь родной язык, а писать парсер мне не очень хочется. Первоначальный выбор был более чем оправданным — скорость разработки и отладки были приоритетными, сейчас есть немного времени и желания посмотреть на архитектуру с высока и другим взглядом.

Следует сказать, что данные передаются самые простые — строки (различной длины, на практике длинее килобайта или десятка почти нет, обычно это сотни байт), целые числа (в том числе и unix timestamp), некоторый набор констант, true/false флаги, только в одном случае передаются значения с плавающей точкой. В принципе, все сводится к трем типам данных — строка, целое число, число с плавающей точкой. Если хотеть, можно выделить еще поле кода команды, которое можно отнести к перечисляемому виду (количество команд ограничено и конечно, хоть и растет с ростом системы). В сериализированном виде такой пакет занимает достаточно много места, и хоть передаются данные по сокетах в пределах локальной машины, это все равно не выход — изначально система такая, что должна допускать динамическое расширение на несколько узлов кластера.

Узнать, что далее...
Всего голосов 33: ↑26 и ↓7+19
Комментарии83

PHP-AMQP Что нового у Друзей?

Время на прочтение4 мин
Количество просмотров6.9K
При построении социальной сети по типу шардинга встает проблема обмена данными между шардами. Традиционная репликация в данном случае не подходит по разным причинам. Тема шардинга — это отельная большая тема и не является предметом данной статьи.
В данной архитектуре для реализации «ленты Друзей» или «Новостной ленты» лучше использовать сервер очередей используя систему: Подписка-Уведомление. В качестве брокера обмена предлагается использовать сервер очередей RabbitMQ, реализующий протокол AMQP, который был выбран по причине хорошей масштабируемости. Серверная часть реализована на PHP, используя расширение php-rabbit (описание АПИ).
Читать дальше →
Всего голосов 29: ↑22 и ↓7+15
Комментарии62

Интеграция Doctrine в kohana 3

Время на прочтение3 мин
Количество просмотров1.9K
Здравствуйте,

После выхода Kohana 3 хочется ее использовать в новых проектах, и использование Doctrine показало, что инструмент очень удобный, потому поделюсь рецептом интеграции.
Читать дальше →
Всего голосов 27: ↑23 и ↓4+19
Комментарии36

Инструменты быстрого прототипирования

Время на прочтение9 мин
Количество просмотров205K
Прототипы, как инструменты дизайна, находятся на подъёме, и вот почему. Я твёрдо верю, что прототипирование помогает нам в процессе создания качественных пользовательских интерфейсов. Мы работаем в мире богатых, обладающих динамикой интерфейсов пользователя как в сети, так и на наших устройствах. Интерфейсы, которые мы создаём, интерактивны, откликаются на воздействие пользователя и обладают эмоциями. Прототипы позволяют сформулировать чувства и функции дизайна так, как этого не могут сделать простые экранные формы. Но как выбрать лучший инструмент прототипирования для работы?
Много текста. Читать дальше
Всего голосов 63: ↑58 и ↓5+53
Комментарии52

Информация

В рейтинге
Не участвует
Откуда
Республика Крым, Россия
Дата рождения
Зарегистрирован
Активность