Как стать автором
Обновить
208
0
Григорий Жижилкин @StopDesign

Chief technology officer

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

TAG_ADD Plugin

Время на прочтение3 мин
Количество просмотров1.1K
Привет, %username%
Как-то раз мне пришлось писать форму для добавления постов в блог. Помимо стандартных полей (название, дата, текст и.т.д.) необходимо было привинтить юзабельную форму добавления тегов.
Т.к. я кодю в jQuery, то и выбор был однозначным.
Вот необходимые задачи, которые я поставил перед собой:
  1. Легко в настройке
  2. Все теги храняться в одном файле (в кэше)
  3. Минимальная нагрузка на сервер и клиента
  4. Список тегов — подсказок открывается только для выбранного запроса на определенный тег.

Инструкция, ссылки и.т.д.
Всего голосов 55: ↑50 и ↓5+45
Комментарии40

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

HTTP4E

Время на прочтение1 мин
Количество просмотров1.1K
Eclipse HTTP Client (http4E) — дополнение для Eclipse позволяющее производить HTTP и REST запросы. Он упрощает тестирование и разработку веб сервисов. Очень удобен для фальсификации заголовков.

image
Читать дальше →
Всего голосов 42: ↑39 и ↓3+36
Комментарии15

О пользователях и непользователях

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

Самые частые вопросы, которые задают все интересующиеся развитием интернета в России (и особенно любят журналисты): «Сколько в России пользователей, и как будет расти интернет в дальнейшем, повлияет ли кризис на рост интернета?» и «Что происходит с интернетом вне столиц, и насколько регионы страны действительно интернетизированы?»

Объем аудитории интернета в нашей стране исследуют много, но подробного исследования по всем субъектам федерации не было уже давно. Ещё большим дефицитом является информация о тех людях, которые пока интернетом не пользуются, но могут начать. Именно объем и настроения этого «интернет-резерва» определяют, как  и где будет расти интернет в России.

При поддержке Яндекса Фонд «Общественное мнение» не так давно (в марте 2009, т.е. уже в кризисные времена) провел крупномасштабное исследование, в ходе которого в 68 субъектах федерации в 1920 населенных пунктов были опрошены 34 тысячи человек. Всем, кто сказал, что интернетом не пользуется, задавали дополнительные вопросы – чтобы понять, кто из таких «непользователей» может в ближайшем будущем пополнить ряды аудитории интернета и что является главным препятствием по дороге в интернет.

Как показывает картинка, больше половины жителей России пока с интернетом лично не знакомы. При этом взрослая (18+) месячная аудитория в марте составила 34,9 млн человек.  Вот как распределились ответы на вопрос «Когда вы последний раз пользовались интернетом?»

Пользователи и непользователи

Насчитывающая десятки миллионов человек «серая зона» на этой диаграмме внутри очень неоднородна: в ней есть и те, кто осознает преимущества интернета, но не имеет возможности (чаще всего – финансовой) ими воспользоваться, и принципиально не готовые стать пользователями. При этом доля резерва составляет почти треть от всех «непользователей».

Структура непользователей

Другими словами, интернет-аудитория России может вырасти еще на треть, если доступ в интернет станет дешевле и проще, а вот дальнейший рост уже зависит от разъяснительной и просветительской деятельности. Причем если «резерв» состоит в основном из молодежи, то остальные группы представлены старшими возрастами, так что работать предстоит с ними. И начинать надо будет не с интернета, а с элементарной компьютерной грамотности: 36% всех опрошенных признались, что никогда не имели дела с компьютером.

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

Географическое распределение суточной аудитории

В короткой заметке невозможно даже конспективно пересказать массу интересных фактов и выводов из отчета объемом в полторы сотни страниц, поэтому приглашаем всех, кто заинтересовался – и у кого возникли вопросы к сказанному выше – скачать полную версию исследования ФОМ с Яндекса  — или непосредственно с сайта ФОМа.

Андрей Себрант, любитель интересных цифр


Всего голосов 55: ↑40 и ↓15+25
Комментарии21

django-headline или @font-face средствами Django

Время на прочтение3 мин
Количество просмотров2.8K
На этой неделе в очередной раз столкнулся с проблемой «нестандартных» шрифтов, и если ранее можно было иногда обойтись самой обычной нарезкой в графическом редакторе или использовать какие-то клиентские приёмы подмены, то в этот раз задача стоит наиболее глобально. Динамических заголовков в надвигающемся проекте реально много.

Своими мыслями, поиском и конечным решением я и хотел бы поделиться с вами.

Читать дальше →
Всего голосов 33: ↑29 и ↓4+25
Комментарии52

Небольшой архив значков (пиктограмм)

Время на прочтение1 мин
Количество просмотров2.9K
Доброго времени суток. Хочу представить вашему вниманию мою подборку значков (пиктограмм), размером 16х16. Все значки бесплатны для личного и коммерческого использования.
Архив содержит:
  • SILK ICONS (www.famfamfam.com/ by Mark James)
  • Fugue Icons версия 1.8.1 (www.pinvoke.com/ by Yusuke Kamiyamane)
  • Silk Companion (www.damieng.com by Damien Guard)
  • Xiao (www.ineversay.com by Delacro)
  • Vaga (www.tenbytwenty.com by Ed Merrit)
  • Sizcons (www.randomjabber.com by RandomJabber)
  • Free Web Design Icon Set (www.semlabs.co.uk by SEM Labs)
  • 3 сета бесплатных иконок от IcoJoy (www.icojoy.com)

Посмотреть preview и скачать можно тут или скачать с Народа
Всего голосов 70: ↑48 и ↓22+26
Комментарии27

Фильтр для типографики

Время на прочтение2 мин
Количество просмотров1.4K
Недавно Игорь Кононученко выложил версию типографа, написанного на Питоне. Игорю большое человеческое спасибо. А я скромно решил сделать из библиотеки типографический фильтр для django. Не то, чтобы это сложно — но новичкам, вроде меня, может пригодиться. Что, собственно, получилось.
Читать дальше →
Всего голосов 32: ↑29 и ↓3+26
Комментарии19

Хитрости с логированием в однопоточных неблокирующих серверах.

Время на прочтение6 мин
Количество просмотров2.8K
Хочу рассказать об очередном результате моих изысканий в области оптимизации производительности Web-серверов.
На этот раз речь пойдет об оптимизации сложного логирования в однопоточном неблокирующем вэб-сервере.
Читать дальше →
Всего голосов 69: ↑61 и ↓8+53
Комментарии105

Плагин для быстрой смены кодировки открытого файла в Gedit

Время на прочтение2 мин
Количество просмотров23K
В Gedit есть возможность выбирать кодировку файла при его открытии. И при открытии файлов вкодировке отличной от системной в Gedit, возникают проблемы кракозябры. Вроде бы есть и автоопределение кодировки, но оно у меня ни разу не работало :-(.
Читать дальше →
Всего голосов 43: ↑42 и ↓1+41
Комментарии38

Используем память разумно, или mod_wsgi на 256 мегабайтах

Время на прочтение2 мин
Количество просмотров3.2K
Какое-то время назад потребовалось перенести проекты с выделенного сервера на VPS. Для этих целей был выбран slicehost. В общем и целом контора нравится и готов её рекомендовать всем.

Случилась лишь одна проблема: начали приходить уведомления о слишком сильном использовании диска (чтение/запись). Долгое время проблема не находила решения из-за отсутствия времени, но это вылилось в непонятные отказы, сопровождавшиеся статистикой в >200% CPU usage. После долгих извращений, была найдена проблема, а затем и её решение.
Читать дальше →
Всего голосов 42: ↑37 и ↓5+32
Комментарии97

JS Charts — генератор графиков и схем.

Время на прочтение1 мин
Количество просмотров16K
image
JS Charts является бесплатным JavaScript-генератором графиков и схем, который требует минимум знаний программирования. С JS Charts рисование диаграмм становится простой и легкой задачей. Он не требует никаких дополнительных плагинов и серверных модулей. Просто подключите скрипты, подготовьте данные для схемы в XML или массиве JavaScript и ваша таблица готова.
Читать дальше →
Всего голосов 71: ↑66 и ↓5+61
Комментарии33

Структуры данных в memcached/MemcacheDB. Часть 1

Время на прочтение8 мин
Количество просмотров4.9K
Достаточно часто нам приходится хранить данные в memcached или MemcacheDB. Это могут быть относительно простые данные, например, закэшированные выборки из базы данных, а иногда необходимо хранить и обрабатывать более сложные структуры данных, которые обновляются одновременно из нескольких процессов, обеспечивать быстрое чтение данных и т.п. Реализация таких структур данных уже не укладывается в комбинацию команд memcached get/set. В данной статье будут описаны способы хранения некоторых структур данных в memcached с примерами кода и описанием основных идей.

Memcached и MemcacheDB в данной статье рассматриваются вместе, потому что имеют общий интерфейс доступа и логика работы большей части структур данных будет одинаковой, далее будем называть их просто «memcached». Зачем нам нужно хранить структуры данных в memcached? Чаще всего для распределенного доступа к данным из разных процессов, с разных серверов и т.п. А иногда для решения задачи хранения данных достаточно интерфейса, предоставляемого MemcacheDB, и необходимость в использовании СУБД отпадает.

Иногда проект разрабатывается изначально для нераспределенного случая (работа в рамках одного сервера), однако предполагая будущую необходимость масштабирования, лучше использовать сразу такие алгоритмы и структуры данных, которые могут обеспечить легкое масштабирование. Например, даже если данные будут храниться просто в памяти процесса, но интерфейс к доступа к ним повторяет семантику memcached, то при переходе к распределенной и масштабируемой архитектуре достаточно будет заменить обращения к внутреннему хранилищу на обращения к серверу (или кластеру серверов) memcached.
Читать дальше →
Всего голосов 47: ↑47 и ↓0+47
Комментарии23

Модальность за рамками диалоговых окон

Время на прочтение3 мин
Количество просмотров3.1K
Статью написал jagoterr. Если эта статья наберет +50 то автор получит инвайт на Хабрахабр.

Аза не так давно опубликовал заметку о модальных оверлеях (Здесь и далее по тексту используется именно такой перевод слова overlay, наименее “русский”, но зато не искажающий сути данного понятия). О тех самых диалоговых окошках, которые внезапно выскакивают и блокируют то, что находится позади них. Вы полностью свободны в своих действиях в рамках модального окна, но вы не можете использовать ни один “перекрытый” им элемент до тех пор, пока это окно не исчезнет.

Обычно, когда мы говорим о модальных окнах, мы говорим именно о диалогах, таких как на приведённом ниже фрагменте приложения Google Documents. Критика Аза относится как раз к модальным окнам такого рода. После того, как вы открыли диалог поиска/замены, вы не можете кликнуть мышью нигде, кроме как внутри этого диалога. Это означает, что вы не можете пролистать документ, находящийся под диалогом, или скопировать слово из документа и вставить его в строку поиска, не закрывая диалог.

image

Читать дальше →
Всего голосов 270: ↑239 и ↓31+208
Комментарии34

South — новый клёвый syncdb

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

А добавление или удаление полей в уже существующие модели превращается в настоящий pain in ass — приходится «подсматривать» за тем, как ORM создала бы таблицы заново (manage.py sqlall) и вручную делать ALTER TABLE для изменившихся столбцов таблиц.

То есть, ORM в Django так или иначе предполагает активный трах с SQL shell, потому что в процессе прототипирования эти поля в моделях изменяются просто пачками.

Погуглив, я нашел несколько способов...
Всего голосов 35: ↑34 и ↓1+33
Комментарии34

Шаблоны Django. Наследование.

Время на прочтение5 мин
Количество просмотров77K
Прочитал статью «Фрагментарное кэширование в MVC веб-фреймворках». Статья описывает проблему кеширования фрагмета отображения, а именно проблему полного разделения контроллера и отображения — контроллер отрабатывает полностью до вызова отображения. Если в отображении мы кешируем фрагмент, это ничего не меняет — контроллер-то уже отработал! В статье описан способ этого избежать: сделать запрос данных «ленивым».

Начав писать, как это должно быть сделано правильно, решил написать, как устроены шаблоны Django, чтобы не-джанговодам тоже было понятно.

Как это сделано в Django?

Читать дальше →
Всего голосов 48: ↑45 и ↓3+42
Комментарии43

Наблюдаем за пользователем

Время на прочтение1 мин
Количество просмотров1.1K
image Сервис userfly даёт возможность визуально посмотреть, что и как делал пользователь на вашей странице.
Пока все это в разработке и видимо еще много чего нужно сделать, но основу уже можно попробывать

После регистрации userfly генерирует небольшой Яваскрипт, который нужно вставить в header страниц. После этого все передвижения пользователей будут записыватся, а вы вскоре сможете посмотреть, как небольшой видеоролик, что-же делают посетители на вашей странице, что ищут, какие функции используют чаще и т.д.
Читать дальше →
Всего голосов 65: ↑61 и ↓4+57
Комментарии70

Управление потоком в CSS: создаём контекст форматирования

Время на прочтение4 мин
Количество просмотров5.3K
Управлять потоком можно не только свойствами clear или overflow. Возможно, вы найдёте полезным для себя использование display:inline-block или display:table-cell, способных полностью заменить вам упомянутый overflow, избавляя вас от опасности указания размеров элемента, а также предоставляя дополнительные возможности.

Статья не содержит универсальных решений, но открывает вашему взору дополнительный инструментарий для управления потоком.
Читать дальше →
Всего голосов 66: ↑63 и ↓3+60
Комментарии34

Критерии 100% читаемости сайтов

Время на прочтение5 мин
Количество просмотров3.4K
Перевод статьи Oliver Reichenstein «The 100% Easy-2-Read Standard».

Большинство сайтов доверху наполнены мелким текстом, который больно читать. Но зачем? Нет причины вжимать так много информации в экран. Это глупая коллективная ошибка, которая относится к временам когда экраны были действительно маленькими. Так что…

screen vs magazine
Экран и журнал: 100%-размер шрифта — это не много. Фотограф: Wilson Miner.

Не заставляйте нас изменять размер шрифта

Мы не хотим изменять настройки браузера каждый раз когда посещаем новый сайт!

Читать дальше →
Всего голосов 100: ↑91 и ↓9+82
Комментарии133

Полнотекстовый поиск и его возможности

Время на прочтение6 мин
Количество просмотров202K
Многие СУБД поддерживают методы полнотекстового поиска (Fulltext search), которые позволяют очень быстро находить нужную информацию в больших объемах текста.

В отличие от оператора LIKE, такой тип поиска предусматривает создание соответствующего полнотекстового индекса, который представляет собой своеобразный словарь упоминаний слов в полях. Под словом обычно понимается совокупность из не менее 3-х не пробельных символов (но это может быть изменено). В зависимости от данных словаря может быть вычислена релевантность – сравнительная мера соответствия запроса найденной информации.

В статье рассказывается как работать с полнотекстовым поиском на примере БД MySQL, а так же приведу примеры «нестандартного» использования данного механизма.

Читать дальше →
Всего голосов 81: ↑77 и ↓4+73
Комментарии36

Favicon и заголовок окна

Время на прочтение2 мин
Количество просмотров7.5K
imageВозможно, у вас вызовет сомнение тот факт, что иконка сайта и заголовок окна имеют какое-то отношение к веб-типографике, спешу вас заверить. Имеют! Как корешок книги к её обложке. Не буду лить воду и сформулирую правила оформления иконки и заголовка окна, созданые для повышения удобства при навигации по вкладкам.
Читать дальше →
Всего голосов 114: ↑105 и ↓9+96
Комментарии58

Информация

В рейтинге
Не участвует
Откуда
Индонезия, Индонезия
Дата рождения
Зарегистрирован
Активность