Search
Write a publication
Pull to refresh
75
0
Дмитрий Копытин @dm9

User

Send message

Борьба с ленью или проблема отсроченного поощрения.

Reading time2 min
Views6.5K
Многие из Вас наверняка стакивались с ситуацией — есть дело важное, интересное, прибыльное (нужное подчеркнуть;), есть время этим делом заняться. А душа к нему не лежит. Стоит только сесть за работу, как как будто черт дергает послушать музыку, побродить по интернету, початиться с друзьями. Один — другой раз, не куда ни шло, но это происходит постоянно, и часто под самыми благовидными предлогами (например: дабы узнать новую информацию необходимую для проекта). Не иначе как происки нечистого.
Читать дальше →

Нормализация Unicode

Reading time2 min
Views22K
Однажды мне пришлось наблюдать, как спамеры очень интересным образом обходят спам-фильтр. Вместо традиционного URL типа «example.com», ссылка выглядела так:
http://example.com
Ссылка с подобной изощрённой точкой работает в IE7, FF3, Opera 9.5, Safari 3, Google Chrome и не работает в IE6.
Читать дальше →

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

Reading time3 min
Views24K
Существует куча платных\бесплатных визуальных редакторов на любой вкус и цвет. Но что, если они работают не во всех браузерах, Вас не устраивает дизайн или функциональность, или просто душа лежит к написанию своего собственного? Ответ на вопрос, как это сделать —
Читать дальше →

Подсветка текста в «TextArea»

Reading time4 min
Views20K
Эта статья покажет, как в современных браузерах можно сделать подсветку текста в поле редактирования (WYSIWYG).
Пример можно посмотреть, в google.docs или на некоторых продвинутых форумах.

Уверен, многим это будет интересно.

Атрибут contentEditable и параметр designMode


Именно contentEditable или designMode и делает для нас всю основную «грязную» работу.

Если этот атрибут поставить в тег, то всё, что внутри тега, становится автоматически редактируемым.

<html><head></head><body>
  <div contentEditable="true"><b>C</b>ontent<u>!!!</u></div>
</body></html>
работающий пример

Этот атрибут не поддерживается сейчас некоторыми старыми браузерами (например, FireFox 2.0). Но есть более «глобальный» параметр страницы, который сейчас поддерживают все браузеры, который нам может помочь —
designMode

Оптимизация изображений, часть 3: 4 шага для уменьшения размера файлов

Reading time1 min
Views4.6K
Примечание: ниже расположен перевод заметки Image Optimization, Part 3: Four Steps to File Size Reduction от Stoyan Stefanov. В ней рассматриваются наиболее популярные консольные утилиты для минимизации изображений. Мои комментарии далее курсивом.
Stoyan StefanovОб авторе: Stoyan Stefanov работает веб-разработчиком в команде Yahoo! по исключительной производительности и руководит разработкой инструмента для анализа производительности — YSlow. Он также внес значительный вклад в программы, разрабатываемые с открытым исходным кодом, выступает на конференциях и является техническим писателем: его последняя книга озаглавлена Объектно-ориентированный JavaScript.

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

Текущая заметка посвящена некоторым наиболее часто используемым инструментам, которые можно применить для уменьшения размера изображений. Идея заключается в следующем: мы можем получать все изображения от дизайнера, но не оставлять их в исходном виде, а немного уменьшать в размере, используя указанные ниже инструменты. Это позволит автоматизировать процесс без необходимости глубокого анализа структуры изображения.
Читать дальше на webo.in →

Хранимые процедуры MySQL и «out of sync»

Reading time1 min
Views19K
Сегодня очень долго выяснял причину, почему после того как я делаю MySQL запрос, в котором обращаюсь к хранимой процедуре (stored procedure) (PHP 5, MySQL 5, mysqli driver)
CALL procedureName()

то следующий за ним запрос не выполняется, а mysqli_error возвращает ошибку
Commands out of sync...

Седьмой элемент или как я искал фотошоп за 139 $

Reading time3 min
Views1.7K
В течение этого года мы, медленно но верно, заменили все ПО в офисе на лицензионное. Кроме того, навели порядок на всех компьютерах и на среднестатистическом рабочем столе уже не найдешь иконки автокада, тридмакса, флеша и пары версий офиса :).

Теперь, если кто-то просит установить ему тот или иной пакет программ, в первую очередь думаешь не о том как выкроить 15 минут на установку, а нужна-ли вообще на этом компьютере данная программа, и есть ли смысл выкладывать 699 $ за фотошоп для контент-менеджера просто потому, что ему в нем удобней кадрировать фотографии, поступающие от клиента.


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

Я неслучайно вспомнил о контент-менеджере, поскольку совсем недавно у нас возникла именно такая ситуация. В самом деле, задачи в большинстве случаев довольно простые и использовать для них дорогой фотошоп, все равно что термоядерный взрыв для выкапывания ямки в метр глубиной. С другой стороны, они часто выходят за рамки того, что предлагают десятки недорогих или совсем бесплатных программок, которые без особого труда можно найти в сети.
Читать дальше →

Интересные возможности языка PHP

Reading time3 min
Views7.9K
В данной статье я хочу рассказать о интересных, но не очень распространенных базовых возможностях языка PHP. Все, что написано далее в том или ином виде присутствует в документации к PHP в разрозненном виде. Автор вполне отдает себе отчет в том, что большинство профессиональных разработчиков все это отлично знает, но новички могут узнать что-то новое.

Содержание статьи имеет мало общего с моей прошлой статьей про использование выражений в PHP. Речь не идет об усложнении кода, скорее наоборот.

Читать дальше →

Зачем нужны иконки

Reading time3 min
Views2.1K
Зачем нужны иконки
Вы не поверите, но в 85-м году компания Apple в своем руководстве для разработчиков прямо призывала всегда, когда это возможно, стараться заменять надписи пиктограммами. Якобы пиктограммы понятнее начинающему пользователю, чем слова. Конечно, это полная чепуха. Словами намного проще высказать почти любую идею.

Если только вы не проектируете интерфейс графического редактора В этом случае, как говорится, лучше один раз увидеть, чем сто раз прочитать:

Зачем нужны иконки
Нижние 6 иконок прямо изображают результат применения соответствующих инструментов.

Такой подход применим также в интерфейсах конструкторских, архитекторских программ, и в других интерфейсах, основанных на принципе WYSIWYG. Но часто ли нам, простым дизайнерам интерфейсов из Самары, приходится прилагать руку к интерфейсам подобного софта? Признаюсь, не очень часто. Правда такова, что в современном цифровом мире мы гораздо чаще имеем дело с вещами, не имеющими визуального воплощения вовсе.

Читать дальше →

Правильный цикл работы с версиями SVN

Reading time2 min
Views25K
Я думаю многие любопытные люди уже знают, как нужно верно работать с SVN.
Но во многих статьях это описано достаточно поверхностно. Хочется немного приоткрыть завесу верного цикла версионирования, при разработке проекта, на примере TortoiseSVN.
И так, поехали
Читать дальше →

Атомарность операций и счетчики в memcached

Reading time5 min
Views8.2K
Серия постов про “Web, кэширование и memcached” продолжается. В первом и втором постах мы поговорили о memcached, его архитектуре, возможном применении, выборе ключа кэширования и кластеризации memcached.

Сегодня речь пойдет о:
  • атомарных операциях в memcached;
  • реализации счетчиков просмотров и онлайнеров.

Следующий пост будет посвящен проблеме одновременного перестроения кэшей.

Что же с атомарностью операций?

Кластеризация memcached и выбор ключа кэширования

Reading time4 min
Views24K
Серия постов под общим заглавием “Web, кэширование и memcached” продолжается. В первом мы поговорили о memcached, его архитектуре и возможном применении.

Сегодня речь пойдет о:
  • выборе ключа кэширования;
  • кластеризации memcached и алгоритмах распределения ключей.

Следующий пост будет посвящен атомарности операций и счетчикам в memcached.

Итак, поехали!

Кэширование и memcached

Reading time7 min
Views88K

Этим постом хочу открыть небольшую серию постов по материалам доклада на HighLoad++-2008. Впоследствии весь текст будет опубликован в виде одной большой PDF-ки.



Введение


Для начала, о названии серии постов: посты будут и о кэшировании в Web’е (в высоконагруженных Web-проектах), и о применении memcached для кэширования, и о других применениях memcached в Web-проектах. То есть все три составляющие названия в различных комбинациях будут освещены в этой серии постов.
Читать дальше →

Некоторые инженерные практики для улучшения качества web application на PHP

Reading time2 min
Views4.6K
Этот топик мой ответ на жалобу одного человека, что «баги достали».

Для начала, никакая методология положения не спасет. Начинать нужно с инженерных практик – внедрив их и почувствовав уверенность в своем коде можно внедрять любую методологию.

Первые задачи могут быть такие:
  • Обеспечить интеграционное тестирование, чтобы каждое обновление на production не было головной болью.
  • Обеспечить регрессионное тестирование – чтобы выявленные ошибки не возникали опять (отслеживались автоматически).

Читать дальше →

Новый вид топика-ссылки

Reading time1 min
Views559
Как известно, существует три бесплатных движка «типа Хабра». Это Livestreet, Explay и Bigstreet. Что в них хорошо — это сам факт их наличия и бесплатности. А вот что плохо — явная «вторичность» по отношению к Хабрахабру.

Но вот сегодня я заметил интересную фишку в одной из этих систем, которую уже хочется перенести на Хабр :) Это вид топика-ссылки. На Хабре при переходе по такой ссылке (например, habrahabr.ru/blogs/japan/40143habrahabr.ru/linker/go/40143offline.computerra.ru/2008/745/369540) — она просто открывается.

А вот как это могло бы выглядеть:



ohost.ru/blog/topic/379http://ohost.ru/blog/link/379/ (обратите внимание на блок в самом верху страницы) → www.press-release.ru/branches/org/48d2b3269afe9.

Лично мне очень понравилось. К тому же, идею можно развить.

Баланс

Reading time7 min
Views1K
До недавних пор база данных нашего ресурса обслуживалась на пару двумя серверами: Bonnie и Clyde. Clyde — основной сервер проекта, отвечающий на все запросы, Bonnie — сервер, поддерживающий базы других проектов и слейв-клиент базы суперхабра.

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

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

что из этого вышло

jQuery для начинающих

Reading time9 min
Views515K
jQuery Logo

jQuery — это замечательный JavaScript Framework, который подкупает своей простотой в понимании и удобством в использовании. Но изучение надо с чего-то начинать, и лично моё мнение — лучше всего начинать с наглядных примеров, и они далее…

Читать дальше →

А где вы делаете «ногти»?

Reading time2 min
Views2.7K
Когда идет речь о веб-разработках рано или поздно встаёт вопрос о том как и в чем подготавливать превью-картинки (thumbnail) на стороне веб-сервера. Вопрос о ручной подготовке отпадает автоматически, куда более приятно загрузить картинку и ни о чем больше не думать. Вот о том как не думать и пойдёт речь.
Читать дальше →

Information

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