PHP → Программирование в PHP для командной строки
Предисловие
Ubuntu предоставляет в комплекте с пакетом apache2 утилиты для включения\выключения виртуальных хостов и модулей. Однако, создание конфигов для виртуальных хостов отнимают дополнительное время. Поэтому, мне захотелось исправить этот недостаток. Можно было, конечно, сделать автоматические поддомены для апача, но я решил написать скрипт, который создает файлы конфигурации виртуальных хостов для апача, а так же, при необходимости, добавляет имя хоста в файл /etc/hosts. Я не очень хорошо пишу скрипты в bash'e, поэтому решил использовать PHP для моей довольно простой задачи, который я, к тому же, знаю довольно неплохо.
Итак, в этой статье мы сделаем сразу две полезных вещи: ознакомимся с операциями ввода\вывода командной строки в PHP и напишем скрипт, который совсем немного упростит нам жизнь.
Каскадные Таблицы Стилей → Тюнинг резинового текстового поля из песочницы
Думаю, что многим верстальщикам (и не только) приходилось верстать текстовые поля (<input type=«text» />), задавая им произвольные размеры. Но как сделать данный элемент резиновым и удовлетворить условиям:
- Возможность установки любых горизонтальных и вертикальных отступов у текста;
- Элемент должен занимать весь контейнер, в который он помещен;
- Клик мышью в любое место текстового поля устанавливает в нем курсор.
Ответ достаточно прост и решается следующим методом:
Блог компании DevExpress → Что скрывается за формой редактирования сложного объекта?
В этой статье мы продолжаем знакомить вас с подходами, реализованными в планировщике XtraScheduler. В предыдущей статье мы рассказывали о синхронизаторе данных, на этот раз поговорим о формах.

Довольно часто в приложениях можно встретить формы, которые предназначены для ввода или редактирования объектов с большим количеством зависимых свойств. Построение таких форм ввода вызывает «головную боль» у разработчиков: рутинная работа по размещению редакторов, написание кода инициализации, валидации, обработчиков событий…
Так как же делать такие формы быстро и надежно?

Довольно часто в приложениях можно встретить формы, которые предназначены для ввода или редактирования объектов с большим количеством зависимых свойств. Построение таких форм ввода вызывает «головную боль» у разработчиков: рутинная работа по размещению редакторов, написание кода инициализации, валидации, обработчиков событий…
Так как же делать такие формы быстро и надежно?
Интерфейсы → Календарный период — улучшаем интерфейс
Работая над интерфейсом очередного крупного проекта я старался дотошно проработать каждый его элемент. Конечно нет предела совершенству и, как это обычно бывает, заканчивая один проект ты уже видишь кучу его недостатков, делаешь анализ и выводы на будущее.
Тем не менее, в результате, работая над drop-down выбором календарного периода, в голову пришла интересная мысль не разбивать дату на две отдельные формы «С» и «По», как это всегда делают, а объединить их в одну форму и выпадающий блок.
Конечно кодеру предстоит в данном случае немного больше попотеть, но пользователю очевидно будет намного легче ориентироваться в календаре. Выбирая начальную дату он сразу же наглядно и быстро может выбрать конечную дату своего запроса, в том же окне, и не надо держать в голове и пытаться запомнить что же ты выбрал в предыдущей форме. Тем более в input-формах практически никогда не выводят день недели и, в процессе выбора конечной даты запроса, зачастую забываешь какой день недели собственно был у первой выбранной даты?
Если короче, сейчас сплошь и рядом, в том числе на именитых туристических сайтах, используют две отдельные формы для определения календарного периода, при чём одновременно, как правило, можно открыть только одну из них:

Пример обычной формы на Booking.com. Календари «С» и «По» разнесены в разные блоки
Тем не менее, в результате, работая над drop-down выбором календарного периода, в голову пришла интересная мысль не разбивать дату на две отдельные формы «С» и «По», как это всегда делают, а объединить их в одну форму и выпадающий блок.
Конечно кодеру предстоит в данном случае немного больше попотеть, но пользователю очевидно будет намного легче ориентироваться в календаре. Выбирая начальную дату он сразу же наглядно и быстро может выбрать конечную дату своего запроса, в том же окне, и не надо держать в голове и пытаться запомнить что же ты выбрал в предыдущей форме. Тем более в input-формах практически никогда не выводят день недели и, в процессе выбора конечной даты запроса, зачастую забываешь какой день недели собственно был у первой выбранной даты?
Если короче, сейчас сплошь и рядом, в том числе на именитых туристических сайтах, используют две отдельные формы для определения календарного периода, при чём одновременно, как правило, можно открыть только одну из них:

Пример обычной формы на Booking.com. Календари «С» и «По» разнесены в разные блоки
jQuery → Плагин, превращаем input text в «калькулятор»
По долгу службы написал плагин zeninput для jQuery, многим он понравился, решил поделиться с общественностью.
Пользователям нашего сервиса часто приходится вводить несколько сумм и дабы не утруждать их поисками калькулятора был написан данный плагин, он превращает обычный intput text в калькулятор.

В плагине обрабатываются события onready, onerror, onfocus, onblur и т.д. поэтому его можно расширить как захочется. Также блокируется ввод неподходящих символов.
Работоспособность проверялась в IE6-8 и Браузерах.
Поиграться с плагином можно на странице с демками, там же выложено более подробное описание, событий.
UPD1 dohlik :)
Пользователям нашего сервиса часто приходится вводить несколько сумм и дабы не утруждать их поисками калькулятора был написан данный плагин, он превращает обычный intput text в калькулятор.

В плагине обрабатываются события onready, onerror, onfocus, onblur и т.д. поэтому его можно расширить как захочется. Также блокируется ввод неподходящих символов.
Работоспособность проверялась в IE6-8 и Браузерах.
Поиграться с плагином можно на странице с демками, там же выложено более подробное описание, событий.
UPD1 dohlik :)
Каскадные Таблицы Стилей → Про цвета и input'ы
Вступление
Привет, Хабр!
Это мой первый хабратопик. Надеюсь, его прочитает хотя бы полтора верстальщика. Если после этого хотя бы один сайт станет лучше, я буду очень рад.
Ничто не предвещало беды
Как и любой слегка красноглазый линуксойд, я люблю экспериментировать. До сборки релиз-кандидатов ядра и ковыряния в экзотических оконных менеджерах дело не дошло, но в поисках приключений я все же пересел на тестовую ветку моего дистрибутива, что привело к переезду на четвертую версию КДЕ.
Несколько месяцев до переезда я присматривался к новым кедам в виртуальной машине, игрался с плазмой и новым оформлением. В один прекрасный день решил я попробовать темную цветовую схему «Wonton Soup», да так на ней и остался, хотя всю жизнь использовал светлые схемы.
Суровая реальность
Все было замечательно, плавные градиенты радовали глаз, мелкие шероховатости были уничтожены опытными руками и напильником. Но осталась одна глобальная проблема, с которой сталкиваются все пользователи темных цветовых схем: дизайнеры и верстальщики абсолютно не задумываются над тем, что кто-то может использовать нестандартные темы. Оформленные в светлых тонах страницы сами по себе не страшны, если постоянно не переключаться с темных страниц на светлые.
Неприятности появляются при сочетании двух факторов:
- браузер использует системные стили и цвета для input'ов на страницах. Абсолютное большинство современных браузеров именно так и поступает для лучшей интеграции в окружение
- верстальщик прописывает в CSS свой цвет текста для полей ввода, кнопок или списков, но оставляет дефолтный фон. Либо наоборот, меняет только цвет фона
Но в темных схемах может случится конфуз, и мы увидим темно-серый текст на темном же фоне. Т.е, ничего не увидим.
Доска позора
Приведу скриншоты с некоторых популярных сайтов, посещение которых вызывает у меня желание послать луч ненависти верстальщикам.
Персональные блоги → FF — интересный момент, которого раньше не знал
Сразу к делу.
В форме сделал такую конструкцию для автокомплита (два инпута внутри одного label):
И обнаружил, что при таком раскладе текстовое поле не может получить фокус после клика мышью (курсор появляется и тут же исчезает, если начать ввод с клавиатуры — ничего не происходит). После выяснил: если оба инпута сделать текстовыми, то отчетливо видно, что делается: при клике на второй инпут (mouseDown) курсор там появляется, но при mouseUp он тут же перескакивает на первый инпут. Раньше такого не знал, да и поиск не шибко помог (может, конечно, плохо искал), вот и решил опубликовать.
Да, кстати, если перемещаться по форме с помощью Tab — все нормально, фокус не теряется. И еще — в хроме такого эффекта нет, больше нигде не смотрел.
В форме сделал такую конструкцию для автокомплита (два инпута внутри одного label):
label
-> input type=hidden
-> input type=text
И обнаружил, что при таком раскладе текстовое поле не может получить фокус после клика мышью (курсор появляется и тут же исчезает, если начать ввод с клавиатуры — ничего не происходит). После выяснил: если оба инпута сделать текстовыми, то отчетливо видно, что делается: при клике на второй инпут (mouseDown) курсор там появляется, но при mouseUp он тут же перескакивает на первый инпут. Раньше такого не знал, да и поиск не шибко помог (может, конечно, плохо искал), вот и решил опубликовать.
Да, кстати, если перемещаться по форме с помощью Tab — все нормально, фокус не теряется. И еще — в хроме такого эффекта нет, больше нигде не смотрел.
jQuery → Плагин helpInput (мой велосипед)
Здравствуйте. На днях возникла задача оформить на одном проекте мини-подсказки в полях input(подобно тому, как оформлено поле «поиск по сайту», которое вы можете увидеть в правом верхнем углу Хабры). Проект, на котором надо было оформить поля, написан с использованием jQuery, поэтому решил воспользоваться плагином для этой библиотеки. Пробежался по уже готовым решениям и не нашёл полностью устраивающее меня. Решил мастерить свой велосипед. На мой взгляд, получилось неплохо, хотя в процессе разработки не раз натыкался на подводные камни. Из-за скудного выбора плагинов, решающих эту задачу, я и решил выложить своё «творение» на Хабру. Необходимость в оформлении полей подобным образом встречается часто, авось кому-нибудь и пригодится.UPD: В ходе обсуждений было предложено пару дельных идей, которые я и реализовал:
1. Обрабатывается не только Tab, но и Shift+Tab
2. Плагин научился работать с автозаполнением (если надо отключить эту возможность — при инициализации установите в значение false ключ autoComplete)
3. Изменились имена ключей(приобрели смысловую нагрузку понятную не только мне)
JavaScript → Исследование на тему замены стандартных кнопок
В процессе работы над интерфейсом одного продукта, появилась надобность в изготовлении собственного дизайна кнопок. За это время код, который заменяет стандартную кнопку на требуемую несколько раз переписывался и в данный момент тоже далёк от идеала. Учитывая все текущие проблемы кросс-браузерности, за это время выяснились и получилось нижеописанное.
Допустим, что она должна выглядеть примерно так:

Допустим, что она должна выглядеть примерно так:

Интерфейсы → Тонкости свойства disable у кнопок формы, отправляемой на сервер (Как делать кнопки неактивными)
Уже неоднократно на хабре (вот в этой публикации и в этой) ставился вопрос о том, что было бы хорошо кнопкам формы, отправляемой на сервер, ставить свойство
Однако, до сих пор так и не разобрались, зачем это нужно и как все-таки это делать. Казалось бы, что может быть проще и о чем здесь вообще можно разговаривать, ан нет — на поверку все оказалось не так тривиально. Сразу замечу, что нижеследующие рассуждения применимы к обеим типам форм: как отправляемым через обычный SUBMIT, так и с помощью AJAX.
disabled = "disabled".Однако, до сих пор так и не разобрались, зачем это нужно и как все-таки это делать. Казалось бы, что может быть проще и о чем здесь вообще можно разговаривать, ан нет — на поверку все оказалось не так тривиально. Сразу замечу, что нижеследующие рассуждения применимы к обеим типам форм: как отправляемым через обычный SUBMIT, так и с помощью AJAX.