Pull to refresh
53
0

Software engineer

Send message

Плавный переезд

Reading time3 min
Views11K
После того, как мне попались на глаза рассказы о переезде информационной инфраструктуры компании с места на место, я подумал, что переезд среднего контентного интернет-проекта с одной площадки на другую — тоже довольно интересная тема. Особенно интересно то, как сделать это с минимальными перебоями в работе.

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

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

Рассказ рассчитан на подготовленную аудиторию и не является точным пошаговым руководством к действию.

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

HTML5 File API: множественная загрузка файлов на сервер

Reading time7 min
Views87K
Когда передо мной в очередной раз встала задача об одновременной загрузке нескольких файлов на сервер (без перезагрузки страницы, само собой), я стал блуждать по интернетам в поисках довольно корявого jQuery-плагина, который позволяет имитировать ajax-загрузку файла (того самого плагина, который со скрытым фрэймом: от java- и flash- плагинов сразу было решено отказаться). В процессе поиска я вспомнил, что в грядущем стандарте html 5 возможности по работе с файлами должны быть существенно расширены, и часть этих возможностей доступна уже сейчас. В итоге было решено опробовать их в действии.

Рассматривать возможности File API будем на примере одновременной загрузки нескольких картинок на сервер. В конце статьи приводится готовое решение, оформленное в виде jQuery-плагина.
Читать дальше →

Скриншоты сайтов своими руками

Reading time2 min
Views13K
Проблема создания скриншотов web-страниц прямо на сервере встает достаточно редко, но, как говорится, метко. Хватишься иной раз, так гугль дает ссылки на какой-нибудь парсер уже существующего сервиса. Но, господа, это же не наш метод!

Покопавшись, можно найти что-нибудь типа связки xvfb (виртуальный фреймбуффер) с каким-нибудь браузером, например xvfb+opera, или khtml2png, который тянет за собой фигову тучу kde'шных либ. А ведь так хочется какого-нибудь легкого standalone скриптика...

Решив посвятить немного времени изучению вопроса, обстоятельно исследовал имеющийся инструментарий.

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

Реализация паттерна Observer средствами PHP 5.3

Reading time3 min
Views11K
Прочитав недавно нововведения PHP 5.3, я обратил внимание на несколько интересных особенностей, скомпоновав которые можно получить реализацию шаблона проектирования Observer, гораздо красивее, чем имеющиеся в pear и symfony, причём вся реализация займёт всего несколько строк кода.
Читать дальше →

Фанатам фреймворка Kohana — сделал клон репозитория (155+ модулей для v.3)

Reading time1 min
Views3.2K
imageФанатам фреймворка Kohana — сделал клон репозитория (155+ модулей для v.3)

Если знаете еще модули для KO3 (пришлите в приват)

Текущие модули:
Читать дальше →

Деревья в админке django

Reading time2 min
Views12K
Редактировать модели, представляющие собой деревья в админке django очень неудобно и ненаглядно. Сразу возникло желание выводить вместо списка объектов дерево, для этого можно использовать замечательную библиотеку jstree.
Чтобы эффективно работать с деревьями в django существует mptt, которая добавляет в модель поля для эффективной выборки и методы для этого, а также шаблонные теги для вывода деревьев и т.п.
Если вы не используете mptt, у вас есть просто ссылка на parent — jstree можно подключить к с помощью одного javascript, про это — отдельная статья.
Далее про модели, использующие mptt.
Читать дальше →

MySQL шпаргалки

Reading time3 min
Views827K
Часто, когда разрабатываешь сайт, замечаешь, как на одни и те же грабли наступают разработчики при проектировании базы данных.

Сегодня я решил опубликовать свои шпаргалки, на самые часто встречающиеся ошибки при работе с MySQL.

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

UTF-8 + FreeBSD 8

Reading time1 min
Views8.3K
Начиная с 8.0-RELEASE, FreeBSD будет поддерживать юникод в консоли.
Уже сейчас в восьмой ветке можно подключить UTF-8, проделав следующие шаги:
  1. Добавить в конфигурацию ядра строки options TEKEN_UTF8 и options TEKEN_XTERM
  2. Заменить 'cons25' на 'xterm' в /etc/ttys
freebsd-vt-unicode.png

Впечатляющие анимационные эффекты

Reading time2 min
Views115K
С появлением jQuery, у веб-программистов появилась возможность создавать впечатляющие визуальные эффекты, не прибегая к использованию технологии flash. В данной статье представлено несколько ярких примеров того, каких потрясающих результатов можно достичь, используя стандартные средства браузера и свое воображение.
Читать дальше →

StaticGenerator Pro

Reading time3 min
Views1.5K
Jared Kuolt создал небольшой скрипт кэширования для Django. Всем замечателен: и простотой и размером.

Но у скрипта StaticGenerator и nginx-конфига, приведенного Jared-ом, есть недостатки:
1) актуально только для сайтов без регистрации;
2) работа с ссылками только простого вида;
3) генерация только при изменении/добавлении контента и/или комментариев.

Я исправил эти недочеты, добавил кое-что интересное в скрипт, и получился StaticGenerator Pro.
Читать дальше →

Обработка Excel файлов с использованием Python

Reading time4 min
Views209K
image
По работе пришлось столкнуться с задачей обработки xls файлов средствами python. Немного по гуглив, я натолкнулся на несколько библиотек, с помощью которых можно работать с файлами excel.
Читать дальше

Генерирование изображений-заглушек

Reading time3 min
Views59K
Сегодня мне кинули ссылку на прикольный сервис для быстрого генерирования изображений-заглушек. Может пригодиться для html-верстки. На мой взгляд, это удобно тем, кто и так использует заглушки — экономит время при вёрстке, т.к. сами заглушки уже готовы. Можно цвета/размеры подбирать, меняя только числа/буквы в коде, не отвлекаясь на сам файл картинки — и сразу видеть эффект. И сами размеры видеть написанными, если нужно, чтоб к коду не возвращаться для проверки. Или вместо размеров можно текст добавить, чтоб всегда знать, для чего эта заглушка (типа «Бан(н)ер» или там «Лого», или «Фотография»).

На сервисе не нужна регистрация — и вообще на сайт можно не заходить, чтобы его использовать. Пишете сразу у себя в коде, например:
<img src="http://placehold.it/350x50" />
и получаете:


Update. Благодаря усилиям k0rv1n, найден вариант этого сервиса, только лучше :)
Во-первых, там поддерживается кириллица. Во-вторых, там даны ссылки на исходники для разных языков.
Автор dummyimage.com — тот же Russell Heimlich, что и у placehold.it. У placehold.it есть ещё один автор, но будем считать, что он делал дизайн (дизайн там правда круче, но видимо как раз из-за понтового шрифта Unicode и не выходил).

Примеры (см. под хабракатом) я поменял с placehold.it на dummyimage.com, раз уж он функциональнее…
Ещё насколько примеров под катом

Paginator 3000

Reading time1 min
Views3.1K
Вдохновленный этим топиком я написал модуль для друпала, который организует такую постраничную навигацию.

Добавлена прокрутка колесом мышки, исправлены некоторые косяки, добавлена стандартная навигация при отключенном js, адаптировано под друпал. Никаких настроек: включили модуль — работает, выключили — вернулись к стандартной навигации.

UPD: Перенес подключение css и js в init модуля, дабы работало везде, исправил конфликт с другими GET параметрами.
UPD2: Исправил баг со ссылками «Первая» и «Последняя». Спасибо gothica.
Скачать можно здесь.

Paginator3000 и колёсико мыши

Reading time2 min
Views2.9K
Потребовалось однажды реализовать пейджер постраничной навигации а-ля дёти.
Далеко в лес ходить я не стал, а решил найти, что же это за зверь такой раскопированный на множестве сайтов, а оказалось, что это детище karaboz. И даже есть аналог, переделанный под jQuery.

Но у каждой версии есть, как мне показалось, огромный недостаток, игнорирование колесика мыши. «Но ведь с этим было бы удобнее!» — воскликнул я и решил немного переписать, чтобы пейджер прокручивался на событие mousewheel. А также есть другие недостатки, которые я освещу под катом.
Читать дальше →

Простой и эффективный метод отразить http DDoS от 50мбит с помощью nginx и iptables

Reading time7 min
Views67K
Здравствуй, Хабр!
Предлагаю твоему вниманию простой и в то же время эффективный метод борьбы с http DDoS. На основе сервера Xeon 2.5GHz / 4Gb RAM / SAS можно отражать атаку примерно до 300 Мбит/с (значение получено методом экстраполяции).

Способ реализация

Производится тонкая настройка параметров системы. Так что север будет способен выдерживать больше подключений от ботнета, чем канал до сервера сможет пропустить.

Область применения

Борьба с Http DDoS на выделенном сервере или ВПС. Максимальная возможная мощность сдерживания DDoS атаки ограничивается физическими возможностями сервера и пропускной способностью канала.

SEO под DDoS-ом

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

Стоимость и эффективность

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

Модные «жесты» jQuery

Reading time2 min
Views3K
Включите распознавание сложных жестов мышью (жесты могут описывать буквы, символы других алфавитов и иные символы, включая Ваши собственные знаки) на Вашем сайте!

Возможности
  1. Можно создавать свои собственные жесты;
  2. Можно иметь множество областей на странице, которые будут способны распознать жесты;
  3. Есть визуальная обратная связь;
  4. Работоспособность во всех основных браузерах.
Благодарности

Этот скрипт инициирован из скрипта распознавания жестов мыши от Didier Brun.

Демонстрация

Запустить демонстрацию распознавания жестов мыши

Скриншот модных жестов jQuery

скриншот
Читать дальше →

Перевод: Шаблонизаторы в PHP

Reading time8 min
Views49K
Первод статьи, автором которой является Fabien Potencier, ведущий разработчик и идеолог Symfony. Статья поднимает обсуждение о шаблонизаторах PHP в целом и представляет Twig — быстрый и функциональный шаблонизатор.
Читать дальше →

Full Hierarchy — иерархические структуры в базах данных

Reading time5 min
Views16K
Здравствуйте. В этой статье я хотел бы написать про один очень интересный способ хранения иерархических структур в базах данных, не относящийся при этом к общепринятым и общеизвестным трём (Adjacency List, Nested Set, Materialized Path). Я не встречал в интернете упоминания о нём, о чём очень удивлен, ведь, по моему мнению, — это лучший и единственный способ хранить иерархические структуры. При разработке console-like форума я воспользовался именно этим способом, о чём ни на грамм не жалею. Это авторская статья и ни одно предложение не было вставлено метотодом копипаста.

Под катом способ, который я назвал Full Hierarchy

Плавный скроллинг в Opera

Reading time1 min
Views4K
$("html:not(:animated), body:not(:animated)").animate({scrollTop: $(this).position().top});

При использовании это кода в опере скроллинг начинается не с текущей позиции, а с самого верха страницы, очень неприятный эффект. Пример

Исправить это можно, если оставить анимацию только у html:
$("html:not(:animated)"+( ! $.browser.opera ? ",body:not(:animated)" : "")).animate({scrollTop: $(this).position().top});
Пример 2

Information

Rating
Does not participate
Registered
Activity