Pull to refresh
14
0
Dmitry @p00h

Программирование, сети

Send message

Рецепты хорошей типографики

Reading time7 min
Views57K
Судя по результатам голосования, которое я проводил в своём блоге, большинство пользователей никак не типографируют тексты перед публикациями (НЛО не считается). Те, кто работают над текстами, в большинстве своём делают это вручную, поэтому я решил попробовать собрать воедино рецепты экранной типографики, дабы не забывать самому и напомнить другим. Не думаю, что статья будет чем‐то новым для опытных верстальщиков. Новички узнают, профи исправят :)

Содержание

  1. Дефисы, тире, минусы и другие палочки
  2. Кавычки и чёрточки
  3. Скобки
  4. Многоточие
  5. Заголовки, списки

Читать дальше →
Total votes 154: ↑133 and ↓21+112
Comments92

Dklab_Cache: тэги в memcached, namespaces, статистика

Reading time6 min
Views4.6K
Memcached community предприняло немало попыток написать «родные» патчи для кода memcached, добавляющие в него поддержку тэгов. Наиболее известный из таких патчей — проект memcached-tag. К сожалению, memcached-tag все еще очень далек от стабильной версии: нетрудно написать скрипт, приводящий к зависанию пропатченного memcached-сервера. Похоже, на момент написания данной статьи не существует ни одного надежного решения проблемы тэгирования на уровне самого memcached-сервера.

Библиотека Dklab_Cache


Dklab_Cache — это (в основном) библиотека поддержки тэгирования ключей для memcached, использующая интерфейсы Zend Framework. Сама библиотека написана на чистом PHP. Вот полный список возможностей библиотеки:
  • Backend_TagEmuWrapper: тэги для memcached и любых других backend-систем кэширования Zend Framework;
  • Backend_NamespaceWrapper: поддержка пространств имен для memcached и др.;
  • Backend_Profiler: подсчет статистики по использованию memcached и др. backend-ов;
  • Frontend_Slot, Frontent_Tag: каркас для высокоуровневого построения систем кэшиирования в сложных проектах.
Собственно, для поддержки тэгов имеется класс TagEmuWrapper. Он представляет собой декоратор («обертку») для backend-классов кэширования Zend Framework. Другими словами, вы можете с его помощью «прозрачно» добавить поддержку тэгов в любую подсистему кэширования Zend Framework. Мы будем рассматривать backend для работы с memcached: Zend_Cache_Backend_Memcached, но, если в вашем проекте используется какой-то другой backend-класс, вы можете подключить тэгирование и к нему без каких-либо особенностей.

TagEmuWrapper реализует стандартный backend-интерфейс Zend_Cache_Backend_Interface, поэтому с точки зрения вызывающей системы он сам является кэш-backend'ом. Вообще, Zend Framework хорош тем, что на уровне интерфейса он поддерживает тэги с самого начала! Например, в методе save() уже имеется параметр, позволяющий снабдить ключ тэгами. Однако ни один из backend-ов в составе Zend Framework тэги не поддерживает: попытка добавить тэг к некоторому ключу вызывает исключение (в частности, для Zend_Cache_Backend_Memcached).

Технические подробности, документацию, а также примеры использования можно посмотреть тут: dklab.ru/lib/Dklab_Cache

Что такое тэги?


Работа с типичной кэширующей системой (в том числе с memcached) заключается в выполнении трех основных операций:
  • save($data, $id, $lifetime): сохранить данные $data в ячейке кэша с ключом $id. Можно указать «время жизни» ключа $lifetime; спустя это время данные в кэше «протухнут» и удалятся.
  • load($id): загрузить данные из ячейки с ключом $id. Если данные недоступны, возвращается false.
  • remove($id): очистить ячейку кэша с ключом $id.
Читать дальше →
Total votes 73: ↑59 and ↓14+45
Comments57

Асинхронная загрузка javascript файлов. Ускорение и оптимизация процесса, увеличение производительности

Reading time8 min
Views31K
Продолжаем цикл статей на тему построения сайтов (веб-приложений) ориентируясь на максимальное применение AJAX технологии. Зачастую, при работе сайтов и приложений использующих AHAH требуется вместе с подгружаемым HTML контентом догружать файлы скриптов, которые не использовались ранее на страницах сайта. Одним из моментов обработки догружаемого AJAX-ом контента является выделение из получаемого контента файлов скриптов, с последующим их применением к текущему документу (DOM). Благо, на данный момент практически все основные библиотеки умеют это делать. Однако, если копнуть глубже в реализацию процесса обработки догружаемых скриптов, то текущая ситуация совсем «не радужная». Не все хорошо известные библиотеки умеют это делать хорошо, а тем более оптимально. Давайте рассмотрим указанный процесс изнутри, разберем существующие проблемы и узнаем пути их решения.
Читать дальше →
Total votes 58: ↑52 and ↓6+46
Comments39

Атомарная группировка, или Ни шагу назад!

Reading time8 min
Views16K

0. Присказка


В некотором царстве, в некотором государстве жил-был программист. Звали его, как полагается, Иван. Был он настоящим спецом, обладал всеми Тремя Великими Добродетелями Программиста, то есть был ленив, спесив и нетерпелив. Случилась в том царстве печаль великая: кризис. И выгнали Ваню с работы без выходного пособия. Горевал Ваня долго, а потом собрался с духом и разослал резюме по всему белу свету. Долго ли, коротко ли, вызвали Ваню на собеседование. Требований к соискателю было много, но главное — требовалось хорошо владеть регулярными выражениями. До собеседования — почти месяц, готовься — не хочу. Будучи человеком серьёзным, готовиться Иван решил обстоятельно. 3 недели и 3 дня он лежал на печи, почитывал Хабр и думал, как же неслыханно обстоятельно он будет готовиться. До собеседования остался 1 день. Ванюша мысленно обругал работодателей, которые назначают собеседование так скоро, что совсем подготовиться не успеваешь, слез с печи, сдал пивные бутылки и на вырученные деньги купил книжку по регексам. Читал он её до полного изнеможения, пока не отключился. Утром мы найдём сонную физиономию Ванюши лежащей, как на подушке, на этой самой книжке под Хабракатом.
Читать дальше →
Total votes 87: ↑86 and ↓1+85
Comments42

Debug Toolbar

Reading time2 min
Views3.6K

Kohana Debug Toolbar

Debug Toolbar — это модуль для Коханы, который упрощает отладку приложений, написанных на этом PHP-фреймворке. Благодаря различной статистической и отладочной информации, процесс разработки становится проще и приятней для программиста.

Под катом краткая инструкция по установке, описание возможностей и ссылки на дополнительную информацию.
Читать дальше →
Total votes 33: ↑25 and ↓8+17
Comments35

7 простых способов протестировать кроссбраузерную совместимость

Reading time4 min
Views70K
Эта статья предназначена для дизайнеров, верстальщиков, разработчиков и всех остальных людей, бьющихся с тестированием сайтов в нескольких браузерах.

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

В этой статье, мы рассмотрим 7 простых инструментов для тестирования кроссбраузерной совместимости; инструментов, которые справляются со своей задачей очень легко, и к тому же, каждый из этих инструментов можно использовать бесплатно.
Читать дальше →
Total votes 99: ↑96 and ↓3+93
Comments57

Python для смартфонов на базе S60: начало

Reading time3 min
Views15K
image
Решил написать серию статей про написание программ на Python для смартфонов Nokia на базе Symbian S60.
Python для S60 (или сокращенно PyS60) является open source проектом компании Nokia по портированию языка Python на смартфоны, работающие на платформе S60. Он предоставляет все возможности языка Python а также доступ к специфичным для телефонов функциям, таким как: работа с камерой, календарем, телефонной книгой, GPS, запись и воспроизведение аудио и видео, передача данных через Bluetooth, WiFi и GPRS.
PyS60 является open source проектом и распространяется под лицензиями Apache 2 и Python. На момент написания статьи последняя версия 1.9.1
Итак, начнем!
Читать дальше →
Total votes 75: ↑69 and ↓6+63
Comments31

qpimg — динамическое создание CSS спрайтов

Reading time2 min
Views3K
При разработке сайтов все чаще и чаще приходиться использовать технологию CSS спрайтов, дабы уменьшить кол-во изображений загружаемых на странице. Создание и редактирование таких изображений является не простой задачей, на которую тратится довольно таки много времени: изначально нужно скомпоновать изображения в графическом редакторе, а после описать позиционирование и размеры каждого элемента в файле стилей (CSS). Редактирование элементов и изменение их размеров может повлечь глобальный пересмотр спрайта, вплоть до полного его пересоздания.

Читать дальше →
Total votes 65: ↑57 and ↓8+49
Comments29

Начало пути — Часть 1. Программные решения.

Reading time8 min
Views28K
Доброго времени суток всем читателям нашего блога! Это первая статья из серии «Начало пути», в которой я расскажу о программной части нашей маленькой звукозаписывающей «студии». В течении недели будет опубликовано еще три статьи — одна про «железо», вторая про базовые термины, которые могут нам повстречаться и еще одна про основы сведения. Эта серия в первую очередь полезна новичкам, знатоки скорее всего ничего полезного для себя не откроют.
Итак, поехали!
Total votes 96: ↑88 and ↓8+80
Comments98

Оптимизации системы разделения прав доступа в веб-приложении

Reading time19 min
Views7.4K
После написания прошлой статьи про реализацию системы разделения прав доступа в веб-приложении, появилось множество интересных комментариев. В них в основном велись споры о том, что можно сделать её ещё лучше.

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

В этой статье я рассмотрю:
  1. Битовые поля, оптимизация
  2. Serialize с денормализацией таблиц БД
  3. Вы узнаете, как работает система, подобная Zend ACL

Читать дальше →
Total votes 38: ↑30 and ↓8+22
Comments47

JavaScript, AJAX, Socket и Flash/ActionScript — исследуем вопрос передачи данных в AJAX-приложениях

Reading time8 min
Views5.5K
socket_1667_128Как то в последнее время я начал активно повышать свои навыки и знакомиться не только и не столько с новыми технологиями. Например, я уже более-менее освоил Java, а именно — занимаюсь сетевыми сервисами. Также начал работать с ActionScript 3, хотя мое мнение относительно применимости в AJAX-приложениях Flash-компонентов не изменилось — их надо использовать там, где они дают максимальное преимущество, а вот вся «обвязка», например, интерфейс пользователя, можно сделать при помощи стандартных технологий. При разработке AJAX-приложений у разработчика есть достаточно большой выбор для решения задачи обмена данными с сервером. В основном, общение с сервером заключается в…
Читать дальше →
Total votes 52: ↑47 and ↓5+42
Comments44

Знакомство с jabber ботами

Reading time4 min
Views11K
imageДлительное время я использовал джаббер только в роли меседжера, однако несколько недель назад мне попался адрес джаббер бота, который был словарем, что представилось мне крайне удобным в использовании. В скором времени мой ростер пополнился десятком удобных ботов, и в поиске новых я, в том числе, исследовал хабр, но не нашел ничего. Я решил заполнить эту нишу и создать сводный список ботов, известных мне, которые, по-моему мнению, могут заинтересовать.
Читать дальше →
Total votes 217: ↑208 and ↓9+199
Comments56

Модуль для иерархических представлений (View) для Коханы

Reading time4 min
Views1.6K
Речь пойдет о первом моем модуле для фреймворка Kohana.

image
Признаюсь честно, при первом и последующих взглядах на этот фреймворк он мне очень понравился. Но как известно нет ничего идеального. Как мне показалось, одно из самых слабых мест в Кохане — довольно примитивные представления (View). По сути они предствляют из себя plain-php файл с экспортированными в глобальную область видимости переменными и доступным по ссылке $this контроллеру. Это очень удобно, когда вам нужно представление для вывода данных, нет ничего лишнего, можно сосредоточиться на коде. Но когда нам нужно вывести макет страницы со сложным расположением элементов, которые могут меняться от раздела к разделу… Что делать? Собирать все из мелких вьюшек в контроллере? Не удобно, особенно если контроллеров много — не дай бог, например, поменяется количество столбцов в разметке, придется в каждом контроллере перераспределять блоки с контентом по столбцам. Наверное по этому в версии 2.4 появится (я надеюсь) модуль интеграции со Смарти.
Читать дальше →
Total votes 34: ↑29 and ↓5+24
Comments15

Превьюшки дизайнов — 2

Reading time2 min
Views890
MakePreview.com - сервис для вебдизайнеров

В сентябре прошлого года я под действием очередного wow-импульса сделал веб-утилитку, хотя ладно, чего уж там — Сервис MakePreview.ru! — который решал одну маленькую, но надоедливую проблему: декоративное обрамление дизайна сайта окном браузера (самизнаетеоткого пошла такая мода, в историю вопроса углубляться не буду).

Так вот, все это время я не спеша совершенствовал сервис...
Total votes 83: ↑73 and ↓10+63
Comments90

Статья по мотивам моего выступления на PHPConf. Общий обзор Flex-а и связки PHP&Flex

Reading time17 min
Views2K
Статья будет полезна тем, кто хочеть познакомиться с Flex и его интеграцией с PHP, оценить плюсы и минусы использование этого решения в продакшен. Хочу заметить выступление почти двух годичной давности, однако многое (практически все=) до сих пор актуально.

PHP&Flex, «новая» альтернатива для создания Rich Internet Applications

Читать дальше →
Total votes 60: ↑55 and ↓5+50
Comments29

Разработка модуля для Apache 2.x

Reading time16 min
Views11K

Предисловие



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

Читать дальше →
Total votes 94: ↑93 and ↓1+92
Comments24

Обзор Jabber клиентов под Windows

Reading time4 min
Views176K
При переводе друзей и знакомых с icq на jabber столкнулся с проблемой: на какой клиент перевести пользователя? В процессе перехода выясняется, что клиентов достаточно много, а пользователей по большому счёту интересует внешний вид клиента. Под катом краткий обзор jabber клиентов под Windows.
далее
Total votes 153: ↑127 and ↓26+101
Comments202

Веб-сервисы в теории и на практике для начинающих

Reading time9 min
Views611K

Что такое веб-сервисы?



Прежде всего, веб-сервисы (или веб-службы) — это технология. И как и любая другая технология, они имеют довольно четко очерченную среду применения.

Если посмотреть на веб-сервисы в разрезе стека сетевых протококолов, мы увидим, что это, в классическом случае, не что иное, как еще одна надстройка поверх протокола HTTP.

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

Но и сам Интернет — разнороден, т. е. различные приложения на различных узлах сети функционируют на разных аппаратно-программных платформах, и используют различные технологии и языки.

Чтобы связать все это и предоставить возможность одним приложениям обмениваться данными с другими, и были придуманы веб-сервисы.
Читать дальше →
Total votes 62: ↑61 and ↓1+60
Comments30

Фоновый .png и IE 6 — принуждаем к миру.

Reading time2 min
Views2.2K
Известен следующий баг «народного» браузера — картинки в формате .png, содержащие участки с альфа-прозрачностью отображаются неправильно. А именно — область этих участков заливается серым цветом (спасибо dreamhelg за лаконичное описание сути происходящего в данном случае).

Сегодня в в своей RSS-ленте обнаружил ссылку на очередную статью о конфронтации .png и IE. Воспринял ее, пожалуй, как и бóльшая половина удививших заголовок выше — с предубеждением (мол, опять двадцать пять). Тем не менее, выяснилось много интересного. Например, теперь фоновые .png отлично подчиняются свойствам background-position и background-repeat.
Читать дальше →
Total votes 80: ↑74 and ↓6+68
Comments77

Information

Rating
Does not participate
Location
Челябинск, Челябинская обл., Россия
Date of birth
Registered
Activity

Specialization

Fullstack Developer, Network Engineer
Lead
From 200,000 ₽