Простой способ защиты от HTTP DDoS — включить syn-cookies и заблокировать подонков. Но что делать если атакует 5к-10к хостов да еще и с динамическими IP? Тут нам на помощь придет frontend-backend архитектура c промежуточным кэшированием! Почему с промежуточным кэшированием? А потому что в моем случае от шквала запросов от frontend'а backend умирал унося за собой систему.
Maxim W @maximw
backend developer
Mac OS X в эмуляторе QEMU под Linux
2 мин
27KЗдравствуйте хабровчане. Недавно понадобилось писать на Objective C под Mac OS X. Железо у меня не самое подходящее для всяких сборок, да и сидеть полностью в этой ОС религия не позволяет. Решил поставить Mac OS X в на виртуальную машину Qemu в Linux.
+84
Привычка не думать
1 мин
5.9K![Thinking.png](https://habrastorage.org/getpro/megamozg/post_images/505/38d/5cd/50538d5cd69bb24d640f0b0f20b5b011.png)
До сих пор не знаю, насколько соответствует правилам Хабра публикация ссылок на внешние ресурсы, но, надеюсь, вы простите мне желание поделиться с думающей аудиторией очень ценным, на мой взгляд, ресурсом.
Автор блога — учитель математики в школе и много пишет о современном образовании. Но вообще темы очень разнообразны и, думаю, найдут отклик у многих. Его статьи всегда дают встряску для ума, заставляют проснуться сознание и приводят в порядок мысли.
Сложно в двух словах описать тематику статей — она, как я сказал, очень широка. Поэтому ниже просто приведу несколько тем, которые сохранил в закладки.
+163
wysiwyg своими руками
3 мин
24KСуществует куча платных\бесплатных визуальных редакторов на любой вкус и цвет. Но что, если они работают не во всех браузерах, Вас не устраивает дизайн или функциональность, или просто душа лежит к написанию своего собственного? Ответ на вопрос, как это сделать —
+52
Краткий обзор движков таблиц MySQL
3 мин
78KЦель этой статьи — дать краткий, очень сжатый обзор движков, для того, чтобы статьей можно было пользоваться при выборе движка на этапе проектирования \ создания \ оптимизации таблицы. Предполагается, что читатель знает суть вопроса по крайней мере поверхностно и способен сам отыскать всю дополнительную информацию (вопросы в комментах можно задавать всегда :) )
+93
Как учить английские слова
2 мин
82KМоя учительница по английскому языку когда-то говорила, что грамматика и аудиозаписи – это просто отлично, но без знания слов далеко продвинуться нельзя. Поэтому сегодня напишу небольшую заметку о том, как я учу английские слова.
+78
Ищу инструменты статического анализа кода для поиска уязвимостей
1 мин
3.2KРазыскиваются инструменты статического анализа кода на разных языках программирования, предназначенные для поиска уязвимостей путём анализа потоков данных, в особенности для веб-приложений.
Для понятности приведу пример одного такого известного мне инструмента – Pixy.
Для понятности приведу пример одного такого известного мне инструмента – Pixy.
+2
14 бесплатных Web-приложений для совместной работы
4 мин
77KПеревод
«Люди не являются островами в открытом океане». Это высказывание успешно можно использовать особенно в том случае, если вы — дизайнер или разработчик. Несмотря на существование платных средств, как Basecamp и Zimbra, вы можете использовать ещё и бесплатные, которые, пожалуй, не уступают платным (а порой и обгоняют их).
В этой статье мы рассмотрим 14 бесплатных Web-приложений для совместной работы в сети Интернет. Нужен вам простой редактор с самыми основными возможностями или полнофункциональное приложение для управления проектами, вы сможете обнаружить здесь по крайней мере одно приложение, удовлетворяющее вашим требованиям.
В этой статье мы рассмотрим 14 бесплатных Web-приложений для совместной работы в сети Интернет. Нужен вам простой редактор с самыми основными возможностями или полнофункциональное приложение для управления проектами, вы сможете обнаружить здесь по крайней мере одно приложение, удовлетворяющее вашим требованиям.
+117
Бумага как способ резервного копирования
4 мин
13KПеревод
Нам, программистам, иногда приходится работать с кодированием текста. Но есть ещё один вид кодирования, который мы выполняем постоянно и так быстро, что не замечаем этого и забываем о нем. Я говорю о визуальном кодировании — распознавании символов алфавита, которое вы делаете прямо сейчас при чтении этого текста. Для машин с оптическим распознаванием символы алфавита ничем не отличается от любого другого потока входящих данных, кроме того, что машины в данном случае — это мы.
Но насколько эффективен алфавит как способ кодирования данных? Рассмотрим несколько разных технологий визуального представления данных, которые можно увидеть на бумаге или на мониторе:
Перфокарта IBM 5081: до 80 букв и цифр
![codinghorror-5081-punch-card.png](https://habrastorage.org/getpro/habr/post_images/f05/497/f5a/f05497f5a73642334dfb621e5ab4f10b.png)
Но насколько эффективен алфавит как способ кодирования данных? Рассмотрим несколько разных технологий визуального представления данных, которые можно увидеть на бумаге или на мониторе:
Перфокарта IBM 5081: до 80 букв и цифр
![codinghorror-5081-punch-card.png](https://habrastorage.org/getpro/habr/post_images/f05/497/f5a/f05497f5a73642334dfb621e5ab4f10b.png)
+103
Принципы разработки ПО для iPhone с использованием акселерометра
11 мин
23KВ статье рассмотрено принципы работы iPhone акселерометра, показаны примеры приложений, использующие акселерометр в качестве главного компонента, наведены рекомендации по использованию акселерометра. Также показано, как использовать акселерометр в веб-приложениях. Часть материалов была взята из статьи «Скроллинг при помощи акселерометра».
Обратимся к Википедии:
Apple — не первая компания, которая внедрила акселерометр в мобильный телефон, но первая, у которой это получилось хорошо.
Что такое акселерометр?
Обратимся к Википедии:
Акселерометр (от лат. accelero — ускоряю и μετρέω — измеряю) — прибор, измеряющий проекцию кажущегося ускорения. Кажущееся ускорение есть равнодействующая сил не гравитационной природы, действующая на массу и отнесённая к величине этой массы. Акселерометр может применяться как для измерения проекций абсолютного линейного ускорения, так и для косвенных измерений проекции гравитационного ускорения. Последнее свойство используется для создания инклинометров. Акселерометры входят в состав инерциальных навигационных систем, где полученные с их помощью измерения интегрируют, получая инерциальную скорость и координаты носителя. Электронные акселерометры часто встраиваются в мобильные устройства (в частности, в телефоны) и применяются в качестве шагомеров, датчиков для определения положения в пространстве, автоматического поворота дисплея и других целей. В игровых приставках акселерометры используются для управления без использования кнопок — путем поворотов в пространстве, встряхиваний и т. д.
Apple — не первая компания, которая внедрила акселерометр в мобильный телефон, но первая, у которой это получилось хорошо.
+77
Опыт компиляции Veency для iPhone
4 мин
2.4KПредисловие
Не смотря то, что Apple предоставляет довольно полный SDK для iPhone, иногда необходимо приложение, выходящие за рамки документированных возможностей. Пример такого приложения — Veency, VNC сервер для джейлбрейкнутых iPhone'ов.
Я бы хотел поделиться опытом компиляции Veency «с нуля». Надеюсь, что этот пост окажется познавательным.
Проблема
Необходимо внести небольшие изменения в код VNC сервера для джейлбрейкнутого iPhone'а, перекомпилить и установить на девайс. Имеется: девайс, Ubuntu 9.04 и мак.
Решение
+5
Организация среды веб-разработки
4 мин
5.9KПродуктивность коллектива веб-студии напрямую зависит от удобства среды разработки. У нас сложилась стройная система организации работы с проектами, включающая в себя набор таких неотъемлемых компонентов, как IDE, SCM, PM-система, багтрекер и development-сервер. Этим постом я бы хотел начать цикл статей, посвященных настройке и использованию этих компонентов в нашей студии.
В первой части я расскажу о самом основном — среде разработки (о том, как мы организовали совместный доступ к проектам).
В первой части я расскажу о самом основном — среде разработки (о том, как мы организовали совместный доступ к проектам).
Идеи
- Среда разработки должна быть единой для всех сайтов.
- Девелоперы не должны тратить время на настройку каждый своей серверной части.
- Работает ли над проектом один человек или несколько — контроль версий необходим.
- Если рабочий каталог (IDE workspace) находится на сервере, то можно поработать и дома, не тратя время на повторную настройку окружения на домашнем десктопе или ноуте.
+41
Использование составных ключей для манипуляции данными в memcached
7 мин
3.1KЧасто, при работе с memcached, возникает ситуация, когда необходимо удалить данные в самых различных местах. Например, при добавлении нового комментария, необходимо обновить не только кеш самих комментариев этой страницы, но и ленты комментариев на главной странице, списока комментариев пользователя, счетчика комментариев пользователя, общего счетчика комментариев сайта, счетчика комментариев статьи и т.д. Можно запомнить все ключи этих данных и множество раз вызвать delete() с этими ключами.
Как известно, memсached хранит данные плоско, то есть одному ключу соответствует всегда одно значение. Вложенных ключей не существует. Так же нет возможности удалить группу ключей, скажем по маске. Хорошо бы было, если бы можно было сделать, например, так: $cache->delete('comments*'); Но так нельзя.
Но если нельзя, но очень хочется, то можно ;)
<?php
$cache->delete('comments_art123');
$cache->delete('comments_tape');
$cache->delete('comments_user123');
$cache->delete('comments_counters_art123');
$cache->delete('comments_counters_user123');
......
?>
* This source code was highlighted with Source Code Highlighter.
Как известно, memсached хранит данные плоско, то есть одному ключу соответствует всегда одно значение. Вложенных ключей не существует. Так же нет возможности удалить группу ключей, скажем по маске. Хорошо бы было, если бы можно было сделать, например, так: $cache->delete('comments*'); Но так нельзя.
Но если нельзя, но очень хочется, то можно ;)
+16
Redis — высокопроизводительное хранилище данных
2 мин
102KБодрый день, хаброчеловеки!
Redis — это высокопроизводительное нереляционное распределённое хранилище данных. В отличие от Memcached, который может в любой момент удалить ваши данные, вытесняя старые записи новыми, Redis хранит информацию постоянно, таким образом он похож на MemcacheDB.
API для работы с Memcached (MemcacheDB) позволяет хранить массивы, но эти массивы будут сериализованы и сохранены как строки, таким образом атомарные операции над такими массивами не возможны.
Redis позволяет хранить как строки, так и массивы, к которым можно применять атомарные операции pop / push, делать выборки из таких массивов, выполнять сортировку элементов, получать объединения и пересечения массивов.
110000 запросов SET в секунду, 81000 запросов GET в секунду на Linux-сервере начального уровня (тесты).
Высокая скорость работы Redis обеспечивается тем, что данные хранятся в оперативной памяти и сохраняются на диск либо через равные промежутки времени, либо при превышении определённого количества не сохранённых запросов. Из этого вытекает, что используя Redis, вы можете потерять результаты нескольких последних запросов, что вполне приемлимо для большинства веб-приложений, учитывая, что обращение к Redis по скорости сравнимо с обращением к оперативной памяти. Тем не менее, потерь можно избежать через избыточность — Redis поддерживает неблокирующую master-slave репликацию.
Redis, как и Memcached, может работать как распределённое хранилище на многих физических серверах. Такой функционал реализуется в клиентских библиотеках, и к сожалению, «из коробки» этот функционал реализован пока только в Ruby API, однако это не мешает вам хешировать ключ самостоятельно и получать ID сервера, к которому с этим ключом обращаться.
API доступно для следующих языков:
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. Оф.сайт.
Что такое 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. Оф.сайт.
+71
Бэкапим без расходов
9 мин
4.5K![image](http://files.getdropbox.com/u/82091/dcentre.jpg)
Бэкапы — это вечная проблема: то объемы данных сумасшедшие, то вообще забываешь про них. В своем предыдущем проекте dvice.ru (он пока закрыт, так что без ссылки) я допустил досадную ошибку в самом начале его запуска. Я написал небольшой крон, который в 12 часов ночи удалял всех неактивированных пользователей, зарегистрировавшихся больше 24 часов назад. Но я ошибся в запросе и потерял данные пользователей, которые зарегистрировались до первого запуска этого запроса. Слава Богу, у меня были все данные в сессиях, поэтому я восстановил всех тех, кто логинился и ставил галку на чекбоксе — запомнить меня. Обидно и глупо, но на ошибках учатся. Поэтому перед запуском своего крайнего проекта — inwhite.ru, я сделал систему бэкапов.
Бэкапы делались и копились, старые удалялись, и все было отлично. Пока внезапно я не понял, что страдаю полной фигней. Бэкапы-то я делаю, а вот забирать — не забираю. Объемы данных, лежащих на моем VPS, не такие большие, но по почте тоже особо не наотправляешься. Покупать еще один VPS и складывать туда все по FTP/SVN/CVS/SSH не особо хочется, хотя тоже вариант интересный.
До вчерашнего дня я был озадачен мыслью: а как все же забирать эти данные? И вот вечером меня осенило.
+75
Управление доменами
2 мин
8.8KДень добрый, Хабралюди.
В данном посте хочу попросить совета как лучше управляться с доменами.
Ситуация следущая: так получилось, что постепенно создавались сайты у разных хостеров, там же регистрировались домены и к сегодняшнему дню получился большой разброс по управлению ими. Например один домен паркуется на петерхосте, пара в ру-центре и т.д. Управляться с ними в связи с этим не очень удобно.
Хочется иметь отдельный аккаунт, где бы хранились все домены, где можно было бы легко и быстро менять записи, осуществлять продление и т.д.
Что посоветуете в связи с вышесказанным? Где складируете свои домены?
Удобный интерфейс нашел на r01, кто пользуется, насколько там всё гибко?
Заранее спасибо.
АПдейт:
В данном посте хочу попросить совета как лучше управляться с доменами.
Ситуация следущая: так получилось, что постепенно создавались сайты у разных хостеров, там же регистрировались домены и к сегодняшнему дню получился большой разброс по управлению ими. Например один домен паркуется на петерхосте, пара в ру-центре и т.д. Управляться с ними в связи с этим не очень удобно.
Хочется иметь отдельный аккаунт, где бы хранились все домены, где можно было бы легко и быстро менять записи, осуществлять продление и т.д.
Что посоветуете в связи с вышесказанным? Где складируете свои домены?
Удобный интерфейс нашел на r01, кто пользуется, насколько там всё гибко?
Заранее спасибо.
АПдейт:
+22
Иконза
1 мин
1.6KБывает так, что для какого-то сайта или интерфейса или блога нужны иконки. Где их взять? Можно заказать у дизайнеров за деньги, а можно использовать иконки из бесплатных наборов. С дизайнерами и деньгами все более-менее понятно. Поговорим про бесплатные наборы иконок. Например, сайт или блог имеет какой-то особенный дизайн и трудно найти подходящие иконки. Или авторы сайта хотят, чтобы значки были эксклюзивными. Или, вдруг, нужны одинаковые иконки, но разных цветов. (всякое бывает)
Мы долго думали над всем этим и наконец придумали вот такой проект:
![image](https://habrastorage.org/getpro/habr/post_images/cc5/b0d/82e/cc5b0d82ef9c21af7b7349db3b81ee0a.png)
Иконза — веб-приложение, которое дает доступ к коллекции бесплатных иконок, но коллекция эта непростая. Иконки в Иконзе можно перекрашивать в любые цвета. Плюс, можно менять размер иконок. Таким образом, можно получить очень много «уникальных» значков.
Чтобы научно-популярно объяснить, что такое Иконза и как она работает, мы сняли комичный скринкаст (лучше смотреть напрямую с YouTube):
Мы долго думали над всем этим и наконец придумали вот такой проект:
![image](https://habrastorage.org/getpro/habr/post_images/cc5/b0d/82e/cc5b0d82ef9c21af7b7349db3b81ee0a.png)
Иконза — веб-приложение, которое дает доступ к коллекции бесплатных иконок, но коллекция эта непростая. Иконки в Иконзе можно перекрашивать в любые цвета. Плюс, можно менять размер иконок. Таким образом, можно получить очень много «уникальных» значков.
Чтобы научно-популярно объяснить, что такое Иконза и как она работает, мы сняли комичный скринкаст (лучше смотреть напрямую с YouTube):
+124
Processing.js
2 мин
13KДанный язык уже был на хабре, однако пост был посвещен самому Processing, думаю многим будет интерессно почитать и про Processing.js.
Processing.js — это открытый язык программирования для визуализации в вебе который представляет собой портированный Processing на JavaScript. Processing.js использует Js для анимации и тег canvas для работы с изображением. Сразу же можно заметить некоторый минус данного подхода, он не особо дружен с IE, причем по заявлениям Microsoft поддерживать тег canvas они и в дальнейшем не собираются. Во всяком случае 8 работать отказался. Синтаксис реализации очень похож на синтаксис Java.
Processing.js — это открытый язык программирования для визуализации в вебе который представляет собой портированный Processing на JavaScript. Processing.js использует Js для анимации и тег canvas для работы с изображением. Сразу же можно заметить некоторый минус данного подхода, он не особо дружен с IE, причем по заявлениям Microsoft поддерживать тег canvas они и в дальнейшем не собираются. Во всяком случае 8 работать отказался. Синтаксис реализации очень похож на синтаксис Java.
+24
Raphaël
2 мин
38KПривет, Хабр
В этом коротком очерке хотел бы рассказать о маленькой (по словам авторов) библиотеки на JavaScript — Raphaël. Данная библиотека использует для работы SVG и VML и служит, как не сложно догадаться для облегчения работы с векторная графикой в вебе.
Так же по утверждению создателей работает во всех актуальных на даных момент браузерах, а именно Firefox 3.0+, Safari 3.0+, Opera 9.5+ and Internet Explorer 6.0+. К сожалению обошли создатели внимание вторую лису, хотя сюда по данным лайвинтернета на ней приходится почти 2% пользователей, что вообще немало.
+45
Simpla — движок для великолепных интернет-магазинов
7 мин
14K![](https://habrastorage.org/storage/e791dd48/0094f0d7/498901b5/3cb0d7a8.jpeg)
Последние 5 лет я создавал интернет-магазины. Много магазинов. Хороших и разных. Я был сам себе программистом, верстальщиком, дизайнером и менеджером.
Нельзя быть профессионалом в нескольких областях сразу, скажете вы. И, наверное, будете правы. Я не профессионал в дизайне и окучивании клиентов. Но интерес к этим областям и необходимость соответствующей деятельности дали мне кое-что. Тысячи вопросов за техподдержкой, бесконечные консультации клиентов и их контент-менеджеров, изучение чужих целевых аудиторий, общение с программистами, дизайнерами и верстальщиками от заказчиков подарили мне неплохой опыт. И главное — опыт не в одной области, а опыт во всех гранях процесса создания интернет-магазина. От программирования и дизайна, до общения с клиентом и анализа его бизнес-процессов.
Обычная история
Думаю, многим знакома ситуация, когда после создания сайта, на протяжении нескольких месяцев вам звонят с вопросом «как вставить картинку на сайт» сначала заказчик, потом его секретарша, потом новая секретарша, потом менеджер по продажам (секретарша в отпуске). А потом звонит их новый «компьютерщик», чтобы узнать какой файл ковырять, чтобы вставить красную бегущую строку справа от логотипа. И так далее, и тому подобное.
+203
Информация
- В рейтинге
- 5 408-й
- Откуда
- Россия
- Зарегистрирован
- Активность
Специализация
Специалист
Lead