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

backend developer

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

Защищаемся от HTTP DDoS и прочих Хабраэффектов

Время на прочтение5 мин
Количество просмотров10K
Простой способ защиты от HTTP DDoS — включить syn-cookies и заблокировать подонков. Но что делать если атакует 5к-10к хостов да еще и с динамическими IP? Тут нам на помощь придет frontend-backend архитектура c промежуточным кэшированием! Почему с промежуточным кэшированием? А потому что в моем случае от шквала запросов от frontend'а backend умирал унося за собой систему.
Читать дальше →
Всего голосов 160: ↑152 и ↓8+144
Комментарии55

Mac OS X в эмуляторе QEMU под Linux

Время на прочтение2 мин
Количество просмотров27K
Здравствуйте хабровчане. Недавно понадобилось писать на Objective C под Mac OS X. Железо у меня не самое подходящее для всяких сборок, да и сидеть полностью в этой ОС религия не позволяет. Решил поставить Mac OS X в на виртуальную машину Qemu в Linux.
Читать дальше →
Всего голосов 94: ↑89 и ↓5+84
Комментарии41

Привычка не думать

Время на прочтение1 мин
Количество просмотров5.9K
Thinking.png

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

Автор блога — учитель математики в школе и много пишет о современном образовании. Но вообще темы очень разнообразны и, думаю, найдут отклик у многих. Его статьи всегда дают встряску для ума, заставляют проснуться сознание и приводят в порядок мысли.

Сложно в двух словах описать тематику статей — она, как я сказал, очень широка. Поэтому ниже просто приведу несколько тем, которые сохранил в закладки.
Читать дальше →
Всего голосов 193: ↑178 и ↓15+163
Комментарии64

wysiwyg своими руками

Время на прочтение3 мин
Количество просмотров24K
Существует куча платных\бесплатных визуальных редакторов на любой вкус и цвет. Но что, если они работают не во всех браузерах, Вас не устраивает дизайн или функциональность, или просто душа лежит к написанию своего собственного? Ответ на вопрос, как это сделать —
Читать дальше →
Всего голосов 70: ↑61 и ↓9+52
Комментарии47

Краткий обзор движков таблиц MySQL

Время на прочтение3 мин
Количество просмотров78K
Цель этой статьи — дать краткий, очень сжатый обзор движков, для того, чтобы статьей можно было пользоваться при выборе движка на этапе проектирования \ создания \ оптимизации таблицы. Предполагается, что читатель знает суть вопроса по крайней мере поверхностно и способен сам отыскать всю дополнительную информацию (вопросы в комментах можно задавать всегда :) )
Читать дальше →
Всего голосов 123: ↑108 и ↓15+93
Комментарии73

Как учить английские слова

Время на прочтение2 мин
Количество просмотров82K
Моя учительница по английскому языку когда-то говорила, что грамматика и аудиозаписи – это просто отлично, но без знания слов далеко продвинуться нельзя. Поэтому сегодня напишу небольшую заметку о том, как я учу английские слова.
Читать дальше →
Всего голосов 102: ↑90 и ↓12+78
Комментарии184

Ищу инструменты статического анализа кода для поиска уязвимостей

Время на прочтение1 мин
Количество просмотров3.2K
Разыскиваются инструменты статического анализа кода на разных языках программирования, предназначенные для поиска уязвимостей путём анализа потоков данных, в особенности для веб-приложений.

Для понятности приведу пример одного такого известного мне инструмента – Pixy.
Читать дальше →
Всего голосов 12: ↑7 и ↓5+2
Комментарии24

14 бесплатных Web-приложений для совместной работы

Время на прочтение4 мин
Количество просмотров77K
«Люди не являются островами в открытом океане». Это высказывание успешно можно использовать особенно в том случае, если вы — дизайнер или разработчик. Несмотря на существование платных средств, как Basecamp и Zimbra, вы можете использовать ещё и бесплатные, которые, пожалуй, не уступают платным (а порой и обгоняют их).

В этой статье мы рассмотрим 14 бесплатных Web-приложений для совместной работы в сети Интернет. Нужен вам простой редактор с самыми основными возможностями или полнофункциональное приложение для управления проектами, вы сможете обнаружить здесь по крайней мере одно приложение, удовлетворяющее вашим требованиям.

Читать дальше →
Всего голосов 129: ↑123 и ↓6+117
Комментарии59

Бумага как способ резервного копирования

Время на прочтение4 мин
Количество просмотров13K
Нам, программистам, иногда приходится работать с кодированием текста. Но есть ещё один вид кодирования, который мы выполняем постоянно и так быстро, что не замечаем этого и забываем о нем. Я говорю о визуальном кодировании — распознавании символов алфавита, которое вы делаете прямо сейчас при чтении этого текста. Для машин с оптическим распознаванием символы алфавита ничем не отличается от любого другого потока входящих данных, кроме того, что машины в данном случае — это мы.

Но насколько эффективен алфавит как способ кодирования данных? Рассмотрим несколько разных технологий визуального представления данных, которые можно увидеть на бумаге или на мониторе:

Перфокарта IBM 5081: до 80 букв и цифр
codinghorror-5081-punch-card.png

Читать дальше →
Всего голосов 115: ↑109 и ↓6+103
Комментарии100

Принципы разработки ПО для iPhone с использованием акселерометра

Время на прочтение11 мин
Количество просмотров23K
В статье рассмотрено принципы работы iPhone акселерометра, показаны примеры приложений, использующие акселерометр в качестве главного компонента, наведены рекомендации по использованию акселерометра. Также показано, как использовать акселерометр в веб-приложениях. Часть материалов была взята из статьи «Скроллинг при помощи акселерометра».

Что такое акселерометр?


Обратимся к Википедии:
Акселерометр (от лат. accelero — ускоряю и μετρέω — измеряю) — прибор, измеряющий проекцию кажущегося ускорения. Кажущееся ускорение есть равнодействующая сил не гравитационной природы, действующая на массу и отнесённая к величине этой массы. Акселерометр может применяться как для измерения проекций абсолютного линейного ускорения, так и для косвенных измерений проекции гравитационного ускорения. Последнее свойство используется для создания инклинометров. Акселерометры входят в состав инерциальных навигационных систем, где полученные с их помощью измерения интегрируют, получая инерциальную скорость и координаты носителя. Электронные акселерометры часто встраиваются в мобильные устройства (в частности, в телефоны) и применяются в качестве шагомеров, датчиков для определения положения в пространстве, автоматического поворота дисплея и других целей. В игровых приставках акселерометры используются для управления без использования кнопок — путем поворотов в пространстве, встряхиваний и т. д.


Apple — не первая компания, которая внедрила акселерометр в мобильный телефон, но первая, у которой это получилось хорошо.
Читать дальше →
Всего голосов 85: ↑81 и ↓4+77
Комментарии26

Опыт компиляции Veency для iPhone

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

Предисловие


Не смотря то, что Apple предоставляет довольно полный SDK для iPhone, иногда необходимо приложение, выходящие за рамки документированных возможностей. Пример такого приложения — Veency, VNC сервер для джейлбрейкнутых iPhone'ов.
Я бы хотел поделиться опытом компиляции Veency «с нуля». Надеюсь, что этот пост окажется познавательным.

Проблема


Необходимо внести небольшие изменения в код VNC сервера для джейлбрейкнутого iPhone'а, перекомпилить и установить на девайс. Имеется: девайс, Ubuntu 9.04 и мак.

Решение

Читать дальше →
Всего голосов 11: ↑8 и ↓3+5
Комментарии5

Организация среды веб-разработки

Время на прочтение4 мин
Количество просмотров5.9K
Продуктивность коллектива веб-студии напрямую зависит от удобства среды разработки. У нас сложилась стройная система организации работы с проектами, включающая в себя набор таких неотъемлемых компонентов, как IDE, SCM, PM-система, багтрекер и development-сервер. Этим постом я бы хотел начать цикл статей, посвященных настройке и использованию этих компонентов в нашей студии.

В первой части я расскажу о самом основном — среде разработки (о том, как мы организовали совместный доступ к проектам).

Идеи

  1. Среда разработки должна быть единой для всех сайтов.
  2. Девелоперы не должны тратить время на настройку каждый своей серверной части.
  3. Работает ли над проектом один человек или несколько — контроль версий необходим.
  4. Если рабочий каталог (IDE workspace) находится на сервере, то можно поработать и дома, не тратя время на повторную настройку окружения на домашнем десктопе или ноуте.

Концепция и реализация
Всего голосов 53: ↑47 и ↓6+41
Комментарии61

Использование составных ключей для манипуляции данными в memcached

Время на прочтение7 мин
Количество просмотров3.1K
Часто, при работе с memcached, возникает ситуация, когда необходимо удалить данные в самых различных местах. Например, при добавлении нового комментария, необходимо обновить не только кеш самих комментариев этой страницы, но и ленты комментариев на главной странице, списока комментариев пользователя, счетчика комментариев пользователя, общего счетчика комментариев сайта, счетчика комментариев статьи и т.д. Можно запомнить все ключи этих данных и множество раз вызвать delete() с этими ключами.

<?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*'); Но так нельзя.

Но если нельзя, но очень хочется, то можно ;)
Читать дальше →
Всего голосов 36: ↑26 и ↓10+16
Комментарии52

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

Время на прочтение2 мин
Количество просмотров102K
Бодрый день, хаброчеловеки!

Что такое 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. Оф.сайт.
Всего голосов 79: ↑75 и ↓4+71
Комментарии126

Бэкапим без расходов

Время на прочтение9 мин
Количество просмотров4.5K
image
Бэкапы — это вечная проблема: то объемы данных сумасшедшие, то вообще забываешь про них. В своем предыдущем проекте dvice.ru (он пока закрыт, так что без ссылки) я допустил досадную ошибку в самом начале его запуска. Я написал небольшой крон, который в 12 часов ночи удалял всех неактивированных пользователей, зарегистрировавшихся больше 24 часов назад. Но я ошибся в запросе и потерял данные пользователей, которые зарегистрировались до первого запуска этого запроса. Слава Богу, у меня были все данные в сессиях, поэтому я восстановил всех тех, кто логинился и ставил галку на чекбоксе — запомнить меня. Обидно и глупо, но на ошибках учатся. Поэтому перед запуском своего крайнего проекта — inwhite.ru, я сделал систему бэкапов.

Бэкапы делались и копились, старые удалялись, и все было отлично. Пока внезапно я не понял, что страдаю полной фигней. Бэкапы-то я делаю, а вот забирать — не забираю. Объемы данных, лежащих на моем VPS, не такие большие, но по почте тоже особо не наотправляешься. Покупать еще один VPS и складывать туда все по FTP/SVN/CVS/SSH не особо хочется, хотя тоже вариант интересный.

До вчерашнего дня я был озадачен мыслью: а как все же забирать эти данные? И вот вечером меня осенило.
Читать дальше →
Всего голосов 101: ↑88 и ↓13+75
Комментарии41

Управление доменами

Время на прочтение2 мин
Количество просмотров8.8K
День добрый, Хабралюди.
В данном посте хочу попросить совета как лучше управляться с доменами.

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

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

Что посоветуете в связи с вышесказанным? Где складируете свои домены?
Удобный интерфейс нашел на r01, кто пользуется, насколько там всё гибко?

Заранее спасибо.

АПдейт:
Читать дальше →
Всего голосов 30: ↑26 и ↓4+22
Комментарии100

Иконза

Время на прочтение1 мин
Количество просмотров1.6K
Бывает так, что для какого-то сайта или интерфейса или блога нужны иконки. Где их взять? Можно заказать у дизайнеров за деньги, а можно использовать иконки из бесплатных наборов. С дизайнерами и деньгами все более-менее понятно. Поговорим про бесплатные наборы иконок. Например, сайт или блог имеет какой-то особенный дизайн и трудно найти подходящие иконки. Или авторы сайта хотят, чтобы значки были эксклюзивными. Или, вдруг, нужны одинаковые иконки, но разных цветов. (всякое бывает)

Мы долго думали над всем этим и наконец придумали вот такой проект:

image

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

Чтобы научно-популярно объяснить, что такое Иконза и как она работает, мы сняли комичный скринкаст (лучше смотреть напрямую с YouTube):
Всего голосов 192: ↑158 и ↓34+124
Комментарии103

Processing.js

Время на прочтение2 мин
Количество просмотров13K
Данный язык уже был на хабре, однако пост был посвещен самому Processing, думаю многим будет интерессно почитать и про Processing.js.
Processing.js — это открытый язык программирования для визуализации в вебе который представляет собой портированный Processing на JavaScript. Processing.js использует Js для анимации и тег canvas для работы с изображением. Сразу же можно заметить некоторый минус данного подхода, он не особо дружен с IE, причем по заявлениям Microsoft поддерживать тег canvas они и в дальнейшем не собираются. Во всяком случае 8 работать отказался. Синтаксис реализации очень похож на синтаксис Java.
Читать дальше →
Всего голосов 30: ↑27 и ↓3+24
Комментарии17

Raphaël

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

Привет, Хабр


В этом коротком очерке хотел бы рассказать о маленькой (по словам авторов) библиотеки на JavaScript — Raphaël. Данная библиотека использует для работы SVG и VML и служит, как не сложно догадаться для облегчения работы с векторная графикой в вебе.
Так же по утверждению создателей работает во всех актуальных на даных момент браузерах, а именно Firefox 3.0+, Safari 3.0+, Opera 9.5+ and Internet Explorer 6.0+. К сожалению обошли создатели внимание вторую лису, хотя сюда по данным лайвинтернета на ней приходится почти 2% пользователей, что вообще немало. Да, и не смотря на то, что Хром не заявлен, в нем тоже все работает как часы.
Читать дальше →
Всего голосов 69: ↑57 и ↓12+45
Комментарии33

Simpla — движок для великолепных интернет-магазинов

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


Последние 5 лет я создавал интернет-магазины. Много магазинов. Хороших и разных. Я был сам себе программистом, верстальщиком, дизайнером и менеджером.

Нельзя быть профессионалом в нескольких областях сразу, скажете вы. И, наверное, будете правы. Я не профессионал в дизайне и окучивании клиентов. Но интерес к этим областям и необходимость соответствующей деятельности дали мне кое-что. Тысячи вопросов за техподдержкой, бесконечные консультации клиентов и их контент-менеджеров, изучение чужих целевых аудиторий, общение с программистами, дизайнерами и верстальщиками от заказчиков подарили мне неплохой опыт. И главное — опыт не в одной области, а опыт во всех гранях процесса создания интернет-магазина. От программирования и дизайна, до общения с клиентом и анализа его бизнес-процессов.

Обычная история


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

Читать дальше →
Всего голосов 233: ↑218 и ↓15+203
Комментарии446

Информация

В рейтинге
5 408-й
Откуда
Россия
Зарегистрирован
Активность

Специализация

Специалист
Lead