Читать дальше
maxic @maxic
Пользователь
Структуры данных в memcached/MemcacheDB. Часть 1
8 min
5.1KДостаточно часто нам приходится хранить данные в memcached или MemcacheDB. Это могут быть относительно простые данные, например, закэшированные выборки из базы данных, а иногда необходимо хранить и обрабатывать более сложные структуры данных, которые обновляются одновременно из нескольких процессов, обеспечивать быстрое чтение данных и т.п. Реализация таких структур данных уже не укладывается в комбинацию команд memcached
Memcached и MemcacheDB в данной статье рассматриваются вместе, потому что имеют общий интерфейс доступа и логика работы большей части структур данных будет одинаковой, далее будем называть их просто «memcached». Зачем нам нужно хранить структуры данных в memcached? Чаще всего для распределенного доступа к данным из разных процессов, с разных серверов и т.п. А иногда для решения задачи хранения данных достаточно интерфейса, предоставляемого MemcacheDB, и необходимость в использовании СУБД отпадает.
Иногда проект разрабатывается изначально для нераспределенного случая (работа в рамках одного сервера), однако предполагая будущую необходимость масштабирования, лучше использовать сразу такие алгоритмы и структуры данных, которые могут обеспечить легкое масштабирование. Например, даже если данные будут храниться просто в памяти процесса, но интерфейс к доступа к ним повторяет семантику memcached, то при переходе к распределенной и масштабируемой архитектуре достаточно будет заменить обращения к внутреннему хранилищу на обращения к серверу (или кластеру серверов) memcached.
get
/set
. В данной статье будут описаны способы хранения некоторых структур данных в memcached с примерами кода и описанием основных идей.Memcached и MemcacheDB в данной статье рассматриваются вместе, потому что имеют общий интерфейс доступа и логика работы большей части структур данных будет одинаковой, далее будем называть их просто «memcached». Зачем нам нужно хранить структуры данных в memcached? Чаще всего для распределенного доступа к данным из разных процессов, с разных серверов и т.п. А иногда для решения задачи хранения данных достаточно интерфейса, предоставляемого MemcacheDB, и необходимость в использовании СУБД отпадает.
Иногда проект разрабатывается изначально для нераспределенного случая (работа в рамках одного сервера), однако предполагая будущую необходимость масштабирования, лучше использовать сразу такие алгоритмы и структуры данных, которые могут обеспечить легкое масштабирование. Например, даже если данные будут храниться просто в памяти процесса, но интерфейс к доступа к ним повторяет семантику memcached, то при переходе к распределенной и масштабируемой архитектуре достаточно будет заменить обращения к внутреннему хранилищу на обращения к серверу (или кластеру серверов) memcached.
+47
Атаки на беспроводные сети. Часть 2
3 min
21KЭто продолжение предыдущей статьи, об атаках на беспроводные точки доступа с WEP-защитой.
Во второй части цикла статей о безопасности беспроводных сетей мы рассмотрим некоторые нетрадиционные атаки на WEP.
Во второй части цикла статей о безопасности беспроводных сетей мы рассмотрим некоторые нетрадиционные атаки на WEP.
+48
Пишем Referrer tracker: мал да удал, с хранимыми процедурами MySQL
4 min
3.6KЧасто возникает желание посмотреть отуда приходят люди на ваш сайт, дабы пойти туда почитать что про нас любимых пишут, и рьяно вступить в полемику не отходя от кассы. Казалось бы, такая популярная штука как Google Analitycs должна делать это, но есть одна проблема — в отчете отрезаются GET-параметры, и если вы видите что ссылка с огромного форума, то вам еще предстоит найти нужную тему, что отнимает время (стоит упомянуть, что Google Analitycs требует дополнительного JS кода на страницах, что также отнимает время и трафик).
+34
Атаки на беспроводные сети. Часть 1
5 min
71KВ прошлой статье о беспроводных сетях мы рассмотрели первый этап — сбор информации, или wardriving. Сейчас же, продемонстрируем несколько способов получения несанкционированного доступа к беспроводным сетям, а также рекомендации по защите от них.
+113
Отладка Javascript в различных браузерах и средах
3 min
20KВсе мы прекрасно знаем как отлаживать JavaScript в FireFox — конечно же это FireBug. Какие же аналоги существуют в других браузерах…
+13
Отправка комментариев пользователей сайта вам на Jabbеr
1 min
6KВо время шумихи с аськой и предложениями перехода на jabber я решил разобраться: что же такое джаббер и как он мне может пригодиться кроме прямого общения.
Применение нашлось само собой – хочется получать комментарии с сайта себе в мессенжер. Этот подход оказался очень удобным и простым в реализации.
Поскольку я только начал разбираться с джаббером решил использовать готовую библиотеку для php (так как мой сайт работает на нем).
Итак, на сайте протокола xmpp (jabber) xmpp.org/software/libraries.shtml я скачал баблиотеку xmpphp (она мне понравилось больше всех своей простотой в понимании) и закачал ее на свой хост.
В функцию добавления комментария на сайте я добавил строки:
Где: джабберовский сервер — сервер через который отправляются сообщения (я указал тот же на который и приходят сообщения).
Внимание! Текст сообщения должен быть с кодировке UTF-8.
Вот собственно и все…
P.S. Спасибо за приглашение на хабр! Решил перенести свою статью из песочницы в блог.
Применение нашлось само собой – хочется получать комментарии с сайта себе в мессенжер. Этот подход оказался очень удобным и простым в реализации.
Поскольку я только начал разбираться с джаббером решил использовать готовую библиотеку для php (так как мой сайт работает на нем).
Итак, на сайте протокола xmpp (jabber) xmpp.org/software/libraries.shtml я скачал баблиотеку xmpphp (она мне понравилось больше всех своей простотой в понимании) и закачал ее на свой хост.
В функцию добавления комментария на сайте я добавил строки:
include ‘XMPPHP/XMPP.php’; $conn = new XMPPHP_XMPP('джаберовский сервер', 5222, 'логин', 'пароль', 'xmpphp', 'jabber.ru', $printlog=false, $loglevel=XMPPHP_Log::LEVEL_INFO); try { $conn->connect(); $conn->processUntil('session_start'); $conn->presence(); $conn->message('ваш джаббер', 'текст сообщения'); $conn->disconnect(); } catch(XMPPHP_Exception $e) { die($e->getMessage()); }
Где: джабберовский сервер — сервер через который отправляются сообщения (я указал тот же на который и приходят сообщения).
Внимание! Текст сообщения должен быть с кодировке UTF-8.
Вот собственно и все…
P.S. Спасибо за приглашение на хабр! Решил перенести свою статью из песочницы в блог.
+145
25 самых опасных ошибок в программировании
8 min
2.9KTranslation
Всем привет.
Под катом — перевод статьи Джеффа Атвуда, в которой он приводит список 25 наиболее опасных ошибок в программировании от Common Weakness Enumeration со своими комментариями.
Сразу хочу сказать. Большинство ошибок, перечисленных там — общеизвестны и многим набили оскому. Несмотря на это, мы продолжаем вновь и вновь наступать на те же грабли. И я в том числе.
Под катом — перевод статьи Джеффа Атвуда, в которой он приводит список 25 наиболее опасных ошибок в программировании от Common Weakness Enumeration со своими комментариями.
Сразу хочу сказать. Большинство ошибок, перечисленных там — общеизвестны и многим набили оскому. Несмотря на это, мы продолжаем вновь и вновь наступать на те же грабли. И я в том числе.
+69
Организуем древовидные комментарии к статьям c помощью JavaScript
2 min
10KСразу оговорюсь, что не являюсь профессиональным web-разработчиком, а занимаюсь этим just for fun, а также для саморазвития.
Потребовалось реализовать в моих разработках возможность комментирования. Простые структуры комментариев меня уже не интересуют, поэтому захотелось древовидности.
На первых порах старался реализовать ее самостоятельно, но потом решил обратиться к ресурсам интернета за чертежами изобретенных колес )))
Потребовалось реализовать в моих разработках возможность комментирования. Простые структуры комментариев меня уже не интересуют, поэтому захотелось древовидности.
На первых порах старался реализовать ее самостоятельно, но потом решил обратиться к ресурсам интернета за чертежами изобретенных колес )))
-2
Что делать девелоперам под iPhone из России?
1 min
2.3KХотел бы поинтересоваться у общественности о тонкостях становления Registred Apple Developer и о продаже через Apple Store в целом. Из того что я знаю:
Дальше одни вопросы:
- Для того чтобы продавать программы через Apple iTunes Store нужно купить участие в Apple Developer Connection за $99.
- Разработка только на Mac, Леопард. IDE бесплатно.
Дальше одни вопросы:
- Участие в Apple Developer Connection покупается за $99 через тот же Apple Store, но России в списке нет (насколько я понимаю они не работают в РФ). Предлагается отписаться в саппорт. Письмо автоматом пинают в европейское отделение, там они и гибнет: прошла неделя – ответа нет. Пытаться зарегаться в другой стране?
- У кого есть опыт покупки, чем там оплата? Российская Visa classic проходит?
- Если ты девелопер из штатов, с тебя удерживают налог. Если нет, то тебя просят это подтвердить, в какой форме? Насколько я знаю там нужно показать не пасспорт, а аналог штатовкого SSN. ИНН?
- Если программа продается, возможные варианты вывода денег? Только чеки или wire тоже возможен. Если первое, то сколько идет чек, и насколько просто его обналичить.
- Apple удерживает 30% с продаж. Какие еще минусы? Стоимость перевода чека?
+25
Интерактивная каптча
1 min
1.2KПоскольку сегодня 15 января — международный CAPTHA-day, то и я предложу свой вариант.
Моя идея в интерактивном взаимодействии с пользователем, чтобы понять что это не робот. Для начала нужно задать пользователю какую-то несложную задачу. Символы, введённые с клавиатуры немедленно отправлять на сервер с помощью AJAX и таким образом определять — человек это или нет. Если слово введено за одну миллисекунду — значит это робот. Опять-же можно интерактивно менять задачу и следить за реакцией пользователя. Как это могло бы быть в несколько утрированном виде можно увидеть на картинке McBernar, в каждой шутке лишь доля шутки ;-)
Моя идея в интерактивном взаимодействии с пользователем, чтобы понять что это не робот. Для начала нужно задать пользователю какую-то несложную задачу. Символы, введённые с клавиатуры немедленно отправлять на сервер с помощью AJAX и таким образом определять — человек это или нет. Если слово введено за одну миллисекунду — значит это робот. Опять-же можно интерактивно менять задачу и следить за реакцией пользователя. Как это могло бы быть в несколько утрированном виде можно увидеть на картинке McBernar, в каждой шутке лишь доля шутки ;-)
+13
Флеш-дизайнеру на заметку (прелоадеры)
1 min
2.2KБывает у вас так, что дизайн разработан отличный, всю эту красоту технично собрали и заанимировали, а вот прелоадер как то остался на последнюю очередь и силы уже иссякли… А если учесть, что это первый элемент который встречает посетителя, то положение приобретает серо-тоскливые оттенки.
Специально для попавших в такую ситуацию, ресурс для вдохновения (подчеркиваю!) prettyloaded.com
Специально для попавших в такую ситуацию, ресурс для вдохновения (подчеркиваю!) prettyloaded.com
+27
Создание собственной темы оформления. Часть 0: Введение.
1 min
3.5K
Под хабракатом Вы уведите некоторый план статей, которые будут составляющими цикла «Создание собственной темы оформления для Opera». Этот цикл статей будет представлять из себя перевод статьи с dev.opera.com: Opera Skinning, но с моими комментариями. Я буду пытаться создать тему оформления по этим же шагам и к концу статьи должна получится полноценная тема оформления. Некоторые моменты в этой теме по мере её создания я бы хотел обсуждать с вами.
+46
Управление потоком в CSS: создаём контекст форматирования
4 min
5.4KУправлять потоком можно не только свойствами
Статья не содержит универсальных решений, но открывает вашему взору дополнительный инструментарий для управления потоком.
clear
или overflow
. Возможно, вы найдёте полезным для себя использование display:inline-block
или display:table-cell
, способных полностью заменить вам упомянутый overflow
, избавляя вас от опасности указания размеров элемента, а также предоставляя дополнительные возможности.Статья не содержит универсальных решений, но открывает вашему взору дополнительный инструментарий для управления потоком.
+60
+104
Создание чистого CSS-шаблона для Joomla 1.5 — часть 4, последняя
8 min
13KTranslation
Это заключительная часть цикла статей о шаблонах Joomla 1.5.
Предыдущие части:
Создаем шаблон Joomlа по стандартам — часть 1
Создаем шаблон Joomlа по стандартам — часть 1 (продолжение)
Создание чистого CSS-шаблона для Joomla 1.5 — часть 2.1
Создание чистого CSS-шаблона для Joomla 1.5 — часть 2.2
Создание чистого CSS-шаблона для Joomla 1.5 — часть 2.3
Создание чистого CSS-шаблона для Joomla 1.5 — часть 2.4
Создание чистого CSS-шаблона для Joomla 1.5 — часть 3
Joomla 1.5 предлагает ряд продвинутых функций шаблонов, которые существненно расширяют их возможности. Мы уже видели один из примеров в этом цикле статей — возможность создания «chrome», или кастомизированного отображения модулей.
Давайте теперь рассмотрим следующие функции:
Предыдущие части:
Создаем шаблон Joomlа по стандартам — часть 1
Создаем шаблон Joomlа по стандартам — часть 1 (продолжение)
Создание чистого CSS-шаблона для Joomla 1.5 — часть 2.1
Создание чистого CSS-шаблона для Joomla 1.5 — часть 2.2
Создание чистого CSS-шаблона для Joomla 1.5 — часть 2.3
Создание чистого CSS-шаблона для Joomla 1.5 — часть 2.4
Создание чистого CSS-шаблона для Joomla 1.5 — часть 3
Продвинутые возможности шаблонов
Joomla 1.5 предлагает ряд продвинутых функций шаблонов, которые существненно расширяют их возможности. Мы уже видели один из примеров в этом цикле статей — возможность создания «chrome», или кастомизированного отображения модулей.
Давайте теперь рассмотрим следующие функции:
- Параметры шаблонов
- Переопределения шаблонов
+4
Как отправлять уведомления с сайта по SMS?
3 min
88KНа днях озаботился доставкой SMS уведомлений с нашего сайта по абонентскому обслуживанию компьютеров в Киеве, пользователи создают тикеты, администраторы должны уведомляться о проблеме у клиента моментально.
Уже сейчас работает уведомление по e-mail, icq.
Но как быть, если администратор в дороге, и не имеет доступа к почте и мессенджеру? Нужно сделать уведомление SMSкой. Это будет полезно как админу, так и пользователю, т.к. последний сможет уведомиться об обработке его проблемы/заявки.
Уже сейчас работает уведомление по e-mail, icq.
Но как быть, если администратор в дороге, и не имеет доступа к почте и мессенджеру? Нужно сделать уведомление SMSкой. Это будет полезно как админу, так и пользователю, т.к. последний сможет уведомиться об обработке его проблемы/заявки.
+39
+22
Российский софт и outsourcing в Германии
2 min
816Вычитал я, что российские производители ПО нуждаются в представлении за рубежом. Живя и работая в Берлине, решил я соорудить каталог российских производителей ПО на немецком языке.
Под производителями ПО я имею в виду те коллективы, которые а) делают ПО и продают его как собственный продукт и б) делают ПО под заказ как outsourcing-коллективы. Собственно в реализации такого каталога нет ничего сложного, кроме того, что необходимо инвестировать свой труд по сбору данных, их переводу на немецкий и реализации самого каталога. А я не ленивый.
Мотивирует меня в основном тот факт, что такого каталога для немецкоговорящих стран нет, да и на английском языке информация далеко не полная, а фрагментируется по разным страницам, что сильно усложняет поиск нужного производителя заинтересованным лицам.
В связи с апдейтами и дополнительной информацией пост разросся. поэтому хабракат
Под производителями ПО я имею в виду те коллективы, которые а) делают ПО и продают его как собственный продукт и б) делают ПО под заказ как outsourcing-коллективы. Собственно в реализации такого каталога нет ничего сложного, кроме того, что необходимо инвестировать свой труд по сбору данных, их переводу на немецкий и реализации самого каталога. А я не ленивый.
Мотивирует меня в основном тот факт, что такого каталога для немецкоговорящих стран нет, да и на английском языке информация далеко не полная, а фрагментируется по разным страницам, что сильно усложняет поиск нужного производителя заинтересованным лицам.
В связи с апдейтами и дополнительной информацией пост разросся. поэтому хабракат
+21
Улучшение для дерева коментариев хабра
2 min
772
Например, вот на этом снимке экрана легко запутаться в уровнях коментариев.
Мне хотелось чтобы дерево коментариев было оснащено такими вертикальными линиями с минусиками к которым мы привыкли во многих современных редакторах. И я это сделал на выходных.
Сравните со снимком экрана после.
+120
Information
- Rating
- Does not participate
- Location
- Сейшеллы, Сейшеллы
- Date of birth
- Registered
- Activity