Pull to refresh
33
0
Сергей Кузнецов @cr0t

Разработчик

Send message

Как стать Zend PHP 5 Certified Engineer

Reading time3 min
Views27K
Свершилось, ура! Теперь я имею почетный статус ZCE :)

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

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

Пособие: Красивая и удобная выпадающая панель для входа/регистрации

Reading time2 min
Views3.4K
Помните мою выпадающую панель для входа/регистрации, реализованную с помощью Mootools 1.2? Я подумал, что её можно было бы улучшить как с точки зрения дизайна, так и с точки зрения функциональности, и я это сделал! Но с этого времени уже на jQuery.

screenshot and demo
Читать дальше →

phpThread: нити в PHP? Запросто

Reading time2 min
Views2.2K
Если вы хотите научиться писать многопоточные приложения на PHP или здорово упростить себе жизнь — статья для вас.

Раньше для этих целей я пользовался либо запуском несколько копий скрипта, либо же использовал pcntl на более низком уровне, чем хотелось бы. Это, а от части и Java-идеология работы с потоками, побудили меня к написанию пакета phpThread.
Читать дальше →

Как правильно использовать исключения

Reading time3 min
Views15K
Жаль, если ваше изучение концепции исключений закончится чтением соответствующего раздела официальной документации по вашему языку.

Изучив синтаксис конструкции try{...}catch(Exception $e){...}, узнав о возможности создавать собственные классы исключений, наследуя их от класса Exception и поверхностно осознав мощь оказавшегося в ваших руках механизма, дальше вы можете пойти по одному из двух путей:
  • Начать тут же использовать исключения. Скажем, прикручивать их к системе, в которой они никогда не использовались. Или приколачивать их к проекту, в котором ООП и не пахнет. Или, что самое ужасное, пытаться использовать их повсеместно, особенно там, где это не нужно.
  • Попытаться понять, где их применять, как делать это правильно, и зачем они нужны.

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

Как качать с Rapidshare.com «free user», используя curl или wget

Reading time5 min
Views5.1K
Появившаяся почти год назад статья про скачивание с многими любимого кладезя почти легальной вами же забэкапленной информации Rapidshare.com вызвала одобрение у публики хабра. За последнее время рапида убрала с себя капчу, сделала не столь долгим ожидание между загрузками, в общем, всем своим видом показывает, что с ней очень приятно работать. А если это можно делать ещё и бесплатно… так почему же нет?!
Читать дальше →

Сравнительное тестирование криптоконтейнеров и шифрованных файловых систем

Reading time15 min
Views12K
Неделю назад нарисовалась нетривиальная задача по определению возможностей использования шифрованных контейнеров или файловых систем на вынесенном untrusted хостинге.

Основные задачи:
— Возможность бекапирования данных в любом виде для аварийного восстановления.
— Исключение доступа к этим данным неавторизованных лиц.
— Невозможность доступа к файлам при аварийном выключении сервера и загрузке с внешнего носителя.
— Прозрачная работа пользователей с файлами и любым содержимым находящемся на сервере.
— OS FreeBSD 7.2 и максимальный простор для фантазии в выборе вариантов реализации.
После энного количества времени сложилась следующая тестовая конфигурация:
GELI — GEOM_ELI (встроенная во FreeBSD подсистема шифрования использующая crypto(9) framework(аппаратное и программное шифрование))
GBDE — GEOM_BDE [Geom Based Disk Encryption] (встроенная во FreeBSD подсистема шифрования)
TrueCrypt — Портированная версия TrueCrypt 6.1a (использует fuse)
cryptofs — cryptofs использующая fuse
encfs — encfs использующая fuse

UPD: Таблица сравнения скоростей чистой и шифрованной файловых систем.
Читать дальше →

Скучный эксплойт для одной широкой дыры

Reading time2 min
Views2.3K
Хаброюзер allan_sundry во флейме про ботнет под Mac OS X не поверил, что недавняя уязвимость в Linux-овом udev действительно широка, глубока и в ряде случаев даже опасна. В ответ я решил написать этот топик, демонстрирующий, что создать рабочий эксплойт для опубликованной уязвимости нередко может даже фриланствующий студент-недоучка, потратив пару-тройку часов воскресным вечером.
Читать дальше →

Тюнинг nginx

Reading time8 min
Views97K
Статья написана по материалам моего доклада на CodeCamp 2009.

Для многих из нас настает тот долгожданный день, когда аудитория сайта начинает стремительно расти. Каждое утро мы, затая дыхание, смотрим на графики google analitycs и расплываемся в улыбке, когда взят рубеж в очередную тысячу посетителей в день. Как правило, рост посещаемости не совпадает с ростом технической базы и сайт начинает тормозить. Тут в игру вступает сисадмин...

У любого проекта всегда есть что оптимизировать: можно почитать советы по оптимизации на webo.in, установить eaccelerator, memcache, проиндексировать поисковые поля в базе данных. Я предполагаю, что все это уже проделано, а сайт по прежнему тормозит.

Пришло время оптимизировать nginx...

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

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

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

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

CodeIgniter Debug Toolbar

Reading time1 min
Views4.6K
CodeIgniter Debug Toolbar
Многие видели девелоперский тулбар для фреймворка Kohana (слизанный, в свою очередь, с Symfony), который недавно выкладывали на хабре. Мне он очень понравился — захотелось поиметь такой и для себя.

Немножко поколдовав, получилось нечто похожее…
Читать дальше →

8 отличных хитростей jQuery

Reading time4 min
Views28K
imageКому не нравится jQuery? Это быстрая и простая javascript-библиотека стала очень популярной в 2008 году. В этой статье я собрал список восьми очень полезных jQuery-техник, советов и хитростей.
Читать дальше →

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

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

резервное копирование rsync-ом

Reading time4 min
Views144K
Если у тебя на компьютере не хранится дорогих тебе фотографий или
документов, эта заметка будет тебе не интересна. Если ты уже делаешь резервные копии и механизм работы с ними тебя полностью устраивает, эту заметку тоже лучше пропустить. Если ты считаешь, что хорошо разбираешься в linux, то вряд ли почерпнёшь в ней что-то новое. Для остальных — делюсь
своим опытом

Заключаем договор на создание технического задания

Reading time6 min
Views39K
Кому интересен договор на сайт, смотрим тут: Договор навороченный, Договор простой (удален автором).

Этот топик про более редкую ситуацию, когда перед собственно проектом нужно сделать ТЗ, а это большая и серьезная работа. На нее нужен договор и цена.
Читать дальше →

Сколько стоит сайт построить: перезагрузка

Reading time5 min
Views3.6K
Наткнулась намедни на статью Игоря Сухинина по поводу стоимости веб-разработок. И аж несколько дней затронутая автором тема прыгала, скакала и корчила рожи, не давая о себе забыть. И все это ради того, чтобы я наконец-то вспомнила про уже запылившийся на полке диск.

На диске одна питерская компания (кому-то, наверняка, знакомая — Юмисофт) делится соображениями по поводу настоящего и будущего рынка сайтостроения. Покатавшись по городам и весям, ребята ужаснулись: в регионах веб-разработка в полной… упадке. Почесали репу и решили разобраться, что к чему и почём.

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

Собеседования на должность PHP разработчика

Reading time3 min
Views71K

Довольно часто (постоянно) мне приходиться проводить собеседование людей желающих устроитсья в мой отдел на должность «junior PHP developer» и «PHP developer». И, с завидным постоянством, я и team-lead отдела задаем одни и те же вопросы…
Читать дальше →

Разгони свой сайт: gamma-версия

Reading time4 min
Views979
Примерно три недели назад стартовал проект, посвященный методам оптимизации времени загрузки веб-страницы на клиенте.

Почему оптимизация?



На мой взгляд, на текущий момент веб-разработчики очень мало уделяют внимания доступности (accessibility) и удобству пользования (usability) проектов, над которыми работают. Для них сайт — это килобайты кода и пара картинок, которые нужно как-то показать клиенту. О пользователе никто при этом не думает, в лучшем случае, прикрываясь такими выражениями, как: «у меня отсюда и так все быстро грузится» или «каналы сейчас не те, что 10 лет назад».

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

Почему клиентской части?



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


Естественно, это совсем не так. Загрузка страницы это не только HTML. Существует множество инструментов, которые позволяют в этом убедиться, проанализировать процесс целиком и найти в нем слабые места. Но именно такой анализ, который находится, фактически, на стороне пользователя и должен быть проведен в первую очередь при оценке доступности веб-сайта, зачастую вообще не проводят либо делают быстро и некачественно. А ведь он может позволить уменьшить время загрузки страниц на порядок.

WEBoptimizator

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

О чем не стоит забывать, когда верстаешь HTML

Reading time2 min
Views2.2K
Когда верстаешь (X)HTML, порой не знаешь или забываешь о многих фичах, которые стоит использовать. Перечислю те, о которых вечно забываю сам, а зря :)
Читать дальше →

8 самых важных расширений Firefox для web-разработчиков

Reading time4 min
Views4.7K
Хочу описать хабрачеловекам восемь самых важных расширений (или плагинов) для браузера Mozilla Firefox.
Эти расширения хорошо помогают в работе. Помогают ее организовать, уменьшить затрачиваемое время на работу и…да что тут говорить, читайте сами и решайте что вам подходит и как вам это может быть полезно.
8 расширений Firefox для web-разработчиков
Эта заметка уже была опубликована вчера на Блоге Стрельбана, теперь предлагаю ознакомиться с ней хабрачеловекам.
Да, чуть не забыл: расширения будут идти в обратном порядке. Т.е. самые важные находятся в конце!

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

Про резиновую верстку

Reading time1 min
Views29K
Навеяно этим.

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

Как сделать? min-width и min-height.

#site {
  margin: 0 auto; /*это чтоб центрировать контент при превышении max-width*/
  min-width: 980px;
  max-width: 1500px;
}


Но ведь IE их не поодерживает. А expression слишком нагружает браузер… Спокойно, други! Я выведу вас к свету из тьмы!
Пишем далее.



А в ie.js помещаем

window.attachEvent('onload', mkwidth);
window.attachEvent('onresize', mkwidth);

var minwidth = document.getElementById("site").currentStyle['min-width'].replace('px', '');
var maxwidth = document.getElementById("site").currentStyle['max-width'].replace('px', '');
function mkwidth(){
    document.getElementById("site").style.width = document.documentElement.clientWidth < minwidth ? minwidth+"px" : (document.documentElement.clientWidth > maxwidth ? maxwidth+"px" : "100%");
};


В чём особенная вкусность приведённого метода? А в том, что минимальное и максимальное значение нужно задавать только в одном месте, ну и вообще.

Пользуйтесь, короче, на здоровье!

Information

Rating
Does not participate
Location
Швеция
Registered
Activity