Как стать автором
Обновить
10
0.1
Виктор Павлович Гришко @Yeah

Пользователь

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

текст под произвольным углом без флеш и js

Время на прочтение3 мин
Количество просмотров30K
Ранее здесь была представлена статья о том как сделать вертикальный текст картинками, генерируемыми php.

Теперь я хочу вам рассказать о том как сделать поставленную задачу без картинок, флеш и js, только средствами html и css. К тому же стало возможно сделать текст под произвольным углом. В конце статьи есть готовый пример.

вертикальный текст и текст под углом
Читать дальше →
Всего голосов 181: ↑170 и ↓11+159
Комментарии115

SVN merge for dummies

Время на прочтение7 мин
Количество просмотров29K
Простыми словами и с большим количеством картинок на примере Eclipse рассказывается, как сделать svn merge. Статья будет полезна тем, у кого выполнение слияния веток еще не стало повседневной частью работы.
читать дальше
Всего голосов 18: ↑17 и ↓1+16
Комментарии8

Интересная задачка для знатоков

Время на прочтение2 мин
Количество просмотров862
В процессе написания плагинов для jQuery столкнулся с необходимостью добавлять расширенные атрибуты к некоторым известным тэгам для облегчения передачи параметров плагинам (получается красиво и просто), но так же хочется без проблем проходить валидацию страницы. Небольшой эксперимент поставил перед выбором: или валидный html или расширенные атрибуты…
Подробности и вопрос
Всего голосов 33: ↑30 и ↓3+27
Комментарии60

Юнит-тестирование в PHP

Время на прочтение13 мин
Количество просмотров187K
Язык PHP очень легок для изучения. Это, а так же обилие литературы «Освой _что_угодно_ за 24 часа» породило большое количество, мягко говоря, некачественного кода. Как следствие, рано или поздно любой программист, который выходит за рамки создания гостевой книги или сайта-визитки сталкивается с вопросом: «а если я здесь немножко добавлю, все остальное не ляжет?» Дать ответ на этот вопрос и на многие другие может юнит-тестирование.

В самом начале хочется оговориться — здесь речь не будет идти о TDD и методологиях разработки ПО. В данной статье я попробую показать начинающему PHP-разработчику основы использования модульного тестирования на базе фреймворка PHPUnit
Начнем?..
Всего голосов 97: ↑90 и ↓7+83
Комментарии90

SoapClient: параллельные асинхронные запросы, реконнект, обработка тайм-аутов

Время на прочтение3 мин
Количество просмотров8K
Dklab_SoapClient — это расширенная версия стандартного PHP-класса SoapClient, предназначенная для параллельного (асинхронного) удаленного вызова процедур в высоконагруженных проектах.

При помощи этой библиотеки вы можете, например, строить страницу вашего сайта из блоков, как из конструктора. Каждый блок запрашивается через SOAP отдельно и независимо от других, при этом все запросы происходят параллельно. Если один из блогов не уложился в отведенное ему время (тайм-аут), то его можно не отображать на странице.

По сравнению со встроенным в PHP SoapClient, поддерживаются дополнительные возможности:
  • Одновременное, параллельное выполнение запросов к нескольким удаленным процедурам — ключевая особенность библиотеки. Если страница на вашем сайте собирается из 5 удаленных блоков, каждый из которых генерируется по 100ms, их можно запустить параллельно и получить всю страницу целиком не за 500ms, а за те же самые 100ms.
  • Реконнект при невозможности установления связи. К сожалению, мир несовершенен, и из-за случайной потери пакетов первая попытка соединения с SOAP-сервером может закончиться тайм-аутом. Это особенно часто происходит, когда проект располагается в нескольких датацентрах. Dklab_SoapClient позволяет задать тайм-аут на время открытия соединения (например, 1 секунду) и, в случае неудачи, повторить попытку указанное число раз. На практике это снижает вероятность итогового сбоя в тысячи раз, т.к. реконнект почти всегда помогает при утере пакета.
  • Поддержка тайм-аута на получение данных. Если страница собирается из удаленных блоков, то в случае «подвисания» одного из них «зависает» и вся страница. В то же время, отсутствие одного из блоков при наличии остальных — не такая большая беда. Вы можете указать, сколько времени Dklab_SoapClient должен ждать ответа от удаленной процедуры; если время превышено, возникает исключение PHP, которое вы можете обработать по своему усмотрению, не прерывая загрузку остальных блоков.
Читать дальше →
Всего голосов 38: ↑34 и ↓4+30
Комментарии29

Zend Framework: подключаем OpenID

Время на прочтение8 мин
Количество просмотров2.1K
В своем проекте (Вопросы и ответы для программистов) на Zend Framework мне стало необходимо подключить OpenID и после часа работы я успешно подключил стандартный зендовский сервис. Думаю класс, как легко и удобно(как и все в зенде), но как оказалось этот сервис не работает с OpenId 2.0, да — он просто не дописан.

Немного порывшись в исходниках я это подтвердил — Consumer.php * todo OpenID 2.0 (7.3) XRI and Yadis discovery
Потом посмотрел по багтрекеру и оказалось что это весит уже давно(очень) и никто не спешит доделывать. Тогда я и начал искать альтернативу. Выбор попал на openidenabled.com/php-openid.

Далее приведу пример, который позволит тем кто еще только собирается подключать сделать это минут за 15.
Читать дальше →
Всего голосов 29: ↑24 и ↓5+19
Комментарии28

JS-TrackBar, четвертая версия бегунков

Время на прочтение3 мин
Количество просмотров7.2K
Не так давно на Хабре был опубликован сей труд: «Еще раз о трекбаре», в котором описывается простой скрипт для создания таких вот ползунков:
TrackBar

Благодаря откликам пользователей возможности первой версии скрипта были существенно расширены. Она выросла до v3.0, с одновременным обновлением статьи, описывающей новый функционал. Однако, некоторые изменения откладывались «на потом», т.к. требовали более серьезного вмешательства в код. И вот долгожданное «потом» настало и вышла четвертая версия JS-TrackBar.

Читать дальше →
Всего голосов 52: ↑49 и ↓3+46
Комментарии67

Автогенерация CSS Sprites

Время на прочтение2 мин
Количество просмотров727
Свершилось. Долгие бессонные ночи не прошли даром и мысль, заявленная Вадимом aka pepelsbey, обрела более-менее физические очертания.

sprites.webo.in (сырая-сырая альфа-версия) — название, собственно, говорит само за себя. Вводим URL CSS-файла — на выходе получаем архив с минимизированным (никакой сортировки селекторов, просто базовая минимизация) CSS-файлом и набором свеженьких спрайтов. Здорово?
Читать дальше →
Всего голосов 76: ↑72 и ↓4+68
Комментарии43

Полный AJAX. Теория и Примеры. Фишки и Фичи

Время на прочтение8 мин
Количество просмотров34K
По многочисленным просьбам начинающих (и не только) AJAX разработчиков, решил выделить часть своего времени для описания некоторых хитростей и приемов, которыми пользуюсь при построении сложных, динамических веб-приложений. Статья представляет из себя смесь теоретических выкладок и практических примеров.

Наибольшие трудности при построении сайтов c применением AJAX возникают при реализации механизма AHAH (Asynchronous HTML and HTTP). Особенно выполнение на лету подгружаемых Javascript-ов. Также есть куча дополнительного «гемороя» при разработке AJAX сайтов и веб-приложений. Вы можете ознакомится с детальным описанием некоторых существующих проблем. Из-за указанных сложностей, многие разработчики отказываются от более насыщенного внедрения AJAX.

Однако, мало кто знает, что перечисленные проблемы можно решить.
Читать дальше →
Всего голосов 112: ↑95 и ↓17+78
Комментарии141

MySQL: Хранимые процедуры и динамический SQL

Время на прочтение1 мин
Количество просмотров51K
Если кто-либо из вас пытался сделать вроде бы очевидную вещь, а именно, создать sql запрос внутри процедуры передав ей имя таблицы, пользователя и т.п., то скорее всего натыкались на ошибку, о том, что нельзя использовать динамический sql.

SET @mytable='users';
SELECT * FROM @mytable;

Такая конструкция работать не будет. А что же делать, чтобы она заработала?
Читать дальше →
Всего голосов 69: ↑65 и ↓4+61
Комментарии26

Прогрессивные технологии, как способ выжать из сервера максимум

Время на прочтение5 мин
Количество просмотров12K

Вступление


Просто красивый rrdtool =)
Забавно, но когда программист разрабатывает какой-либо продукт, он редко задумывается над вопросом могут ли на одну кнопку в один момент времени нажать одновременно 2000 человек. А зря. Оказывается могут. Как ни странно но большинство движков, написанных такими программистами, очень плохо ведут себя под большими нагрузками. Кто бы подумал, а всего один лишний INSERT, не проставленный index, или кривая рекурсивная функция могут поднять load averages чуть ли не на порядок.

В этой статье я опишу как мы, разработчики проекта, сумели выжать из одного сервера с Pentium 4 HT / 512Mb RAM, максимум, держа одновременно 700+ пользователей на форуме и 120,000 на трекере. Да, проект этот — торрент трекер. Предлагаю сразу оставить в стороне разговоры о копирайтах и правах, мне это не интересно, что действительно интересно — это HighLoad.
читать дальше
Всего голосов 318: ↑314 и ↓4+310
Комментарии184

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

Время на прочтение4 мин
Количество просмотров11K
imageДлительное время я использовал джаббер только в роли меседжера, однако несколько недель назад мне попался адрес джаббер бота, который был словарем, что представилось мне крайне удобным в использовании. В скором времени мой ростер пополнился десятком удобных ботов, и в поиске новых я, в том числе, исследовал хабр, но не нашел ничего. Я решил заполнить эту нишу и создать сводный список ботов, известных мне, которые, по-моему мнению, могут заинтересовать.
Читать дальше →
Всего голосов 217: ↑208 и ↓9+199
Комментарии56

Расширения для Firebug

Время на прочтение2 мин
Количество просмотров4.1K
Последнее время появляется все больше и больше различных дополнений для Firebug'a. Решил сделать краткое описание для этих плагинов.
Здесь были описаны только 4 плагина.
Постараюсь описать все известные плагины для Firebug'a
Статья на украинском языке
Читать дальше →
Всего голосов 117: ↑109 и ↓8+101
Комментарии38

Firebug: Part 1 — console

Время на прочтение2 мин
Количество просмотров7.7K
Данной статей я хочу начать серию, посвященную всеми любимому Add-on к Firefox под названием Firebug.

Весь цикл: Console, Commands, Debugging ,Profiling

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

Если у вас его еще нету, то можно скачать со страницы http://getfirebug.com.

Читать дальше →
Всего голосов 106: ↑101 и ↓5+96
Комментарии46

Тривиальные задачи по вёрстке

Время на прочтение4 мин
Количество просмотров60K
image

Начинаю вести серию статей Это статья про вёрстку html css js, начинаю с самого простого, потом планирую описать более сложные вещи и всякие тонкости и этим видимо так и закончил

Читать дальше →
Всего голосов 275: ↑251 и ↓24+227
Комментарии160

Восстановление базы MySQL из бинарных логов

Время на прочтение2 мин
Количество просмотров43K
Базы данных иногда пропадают. Человеческий фактор и всё-такое… Если вы не делали бекапов (а надо бы) или они уже устарели, не отчаивайтесь, — есть ещё возможность восстановить утерянную информацию.

Подробнее
Всего голосов 65: ↑60 и ↓5+55
Комментарии28

Демон конвертации видео в FLV

Время на прочтение3 мин
Количество просмотров3.7K
Решил поделиться недавно написанным кодом демона для видеохостинга.
Принцип демона прост. Демон смотрит в папку, куда загружаются видеофалы, и при появлении там новых, копирует в другую папку, запускает в фоне процесс конвертации, создает превьюшку, и копирует полученное видео в папку пользователя.
Читать дальше →
Всего голосов 40: ↑39 и ↓1+38
Комментарии31

Умный экспорт из SVN при помощи TortoiseSVN

Время на прочтение2 мин
Количество просмотров8.7K
Достаточно давно я столкнулся с проблемой, что в хорошей и правильной программе TortoiseSVN (по-русски «тортойс эС-Ви-эН»), нету такой необходимой и желанной вещи, как экспорт только тех файлов, которые были затронуты определенными ревизиями. Особенно начинаешь страдать, когда приходится перезаливать на сервер весь проект, куда входят достаточно увесистые библиотеки и фреймворки. Можно, конечно, не включать библиотеки в Subversion, но это уже тема для другой беседы.
И вот, совсем недавно, один очень хороший гуру и друг совершенно ненавязчиво рассказал мне, как изящно и красиво решить эту проблему.
Ну, а я перескажу все это дело вам
Всего голосов 19: ↑19 и ↓0+19
Комментарии40

Тюнинг Zend Framework + Doctrine

Время на прочтение8 мин
Количество просмотров2.6K

Скрещиваем двух «зверей»



В принципе, скрестить Zend Framework с Doctrine не так уж сложно. Но прежде поговорим о подготовительной работе. По мнению автора, предлагаемую по умолчанию структуру файлов проекта Zend Framework можно сделать чуть более оптимальной.

Так выглядит структура файлов проекта Zend Framework по умолчанию:

/
  application/
    default/
      controllers/
      layouts/
      models/
      views/
  html/
  library/

Читать дальше →
Всего голосов 44: ↑39 и ↓5+34
Комментарии29

Javascript: Visual Event

Время на прочтение1 мин
Количество просмотров8.9K
Отменнейшая JS библиотека, базированная на jQuery. Позволяет простым наведением мыши на объект увидеть все event'ы, которые на него повешены. Запускается через букмарклет.

Подробности на странице автора.

http://www.sprymedia.co.uk/article/Visual+Event

P.S. Я хотел разместить пост-ссылку, но хабру, видимо, не нравится плюс в URL…
Всего голосов 36: ↑31 и ↓5+26
Комментарии22

Информация

В рейтинге
3 392-й
Откуда
Харьков, Харьковская обл., Украина
Дата рождения
Зарегистрирован
Активность