Записи июня 2009
Стихотворение
Юзек просыпается среди ночи, хватает её за руку, тяжело дышит:
«Мне привиделось страшное, я так за тебя испугался…»
Магда спит, как младенец, улыбается во сне, не слышит.
Он целует её в плечо, идёт на кухню, щёлкает зажигалкой.
Потом возвращается, смотрит, а постель совершенно пустая,
- Что за чёрт? – думает Юзек. – Куда она могла деться?..
«Магда умерла, Магды давно уже нет», – вдруг вспоминает,
И так и стоит в дверях, поражённый, с бьющимся сердцем…
Магде жарко, и что-то давит на грудь, она садится в постели.
- Юзек, я открою окно, ладно? - шепчет ему на ушко,
Гладит по голове, касается пальцами нежно, еле-еле,
Идёт на кухню, пьёт воду, возвращается с кружкой.
- Хочешь пить? – а никого уже нет, никто уже не отвечает.
«Он же умер давно!» - Магда на пол садится и воет белугой.
Пятый год их оградки шиповник и плющ увивает.
А они до сих пор всё снятся и снятся друг другу.
Елена Касьян
Новый PHP-фреймворк
По ходу дела так вышло, что с утра сегодня написал основу нового PHP-фреймворка, теперь с базой данных. Очень маленький, с ограниченной функциональностью, но для развёртки простого сайта очень удобен. Красивые URL, регистрация и авторизация опциональны, новостная колонка, шаблоны.
Новостная колонка в работе, бэкэнд тоже.
Нужно, чтобы пароли были уникальными. Особый пароль административный.
Объявляется конкурс на лучшее название. Или идею названия.
Из чего складывается разработка сайтов
1. Изучение ТЗ (технического задания). Переговоры с заказчиком, уточнение общей концепции и немаловажных деталей, обсуждение вариантов, нахождение компромиссов между желаемым и возможным. Вопреки сложившемуся мнению, это тоже работа, и часто тяжёлая.
Отдельно: оценка времени и стоимости работ.
2. Разработка концепции сайта. Принятие решений относительно типа дизайна, стилистики, привлекаемых образов, типа вёрстки, программной основы, хостинга и т.п.
3. Варианты дизайна (общего для всех типов шаблонов сайта или для главной и некоторых внутренних страниц), обсуждение с заказчиком.
4. Создание окончательного дизайна для всех типов шаблонов страниц сайта. Проработка деталей для конкретных страниц.
5. Вёрстка шаблонов. Параллельно: тестирование на разных типах мониторов (жидкокристаллические и ЭЛТ) с разными разрешениями (800, 1024, 1280, 1400, 1650 пикселей по ширине), в разных браузерах (Internet Explorer, Firefox, Opera, Safari и другие) разных версий под разными операционными системами (Windows, Linux, MacOS) разных версий; устранение неполадок, возникающих из-за несовместимости некоторых технологий с конкретным браузером, и непрогнозируемых браузерных ошибок. Отладка после валидации на соответствие стандартам Консорциума WWW.
6. Деплоймент (развёртка, установка) программной основы (движка, engine, фреймворка) с системой управления содержимым (CMS). Либо (в особых случаях) написание программной основы с нуля. Проектирование структуры страниц и уровней сайта, проектирование базы данных. Тестирование.
7. Интеграция свёрстанных в соответствие с гайдлайнами дизайна шаблонов в систему. Отладка вёрстки на тестовом сервере.
8. Написание недостающей программной функциональности (отдельные фрагменты кода или целые модули системы). Тестирование.
8. Работа с контентом (содержимым), тестирование сайта, наполненного содержимым. Обработка графики, текстов, редактирование, корректура.
9. Настройка системы: виртуальные пользователи и их полномочия, почтовые уведомления, отладка работы с RTE (Rich Text Editor, текстовый редактор для визуального форматирования текста), файлового менеджера, пользовательских настроек.
10. В необходимых случаях деплоймент дубликата системы на тестовом сервере для демонстрации заказчику. Тестирование в новом окружении.
11. Деплоймент сайта на «живом» сервере, тестирование всей системы.
12. Работы по увеличению посещаемости сайта, по оптимизации для поисковых механизмов, обмену ссылками, регистрации в баннерообменных сетях.
Продолжительность всех этапов оценивается по-разному в зависимости от поставленных задач, сложности и объёма работ.
Простые задачи
Иногда возникает необходимость делать на JavaScript какие-то вещи постоянно, так что проще иметь под рукой какое-то количество кода, а потом составить из него свою библиотеку, откуда можно брать функции и не думать о том, чтобы каждый раз писать одно и то же. Первой среди таких функций наверняка будет функция переключения видимости:
function showHide(id) {
document.getElementById(id).style.display =
(document.getElementById(id).style.display=='block') ?
'none' : 'block'
}
Если блок скрыт, то при вызове функции он показывается. Если показан, то скрывается.
А в нужном месте достаточно будет вызвать эту функцию с нужным идентификатором блока.
Ну а когда таких функций наберётся достаточное количество, можно оформить их в свой фреймворк и включать в каждый проект.
Oh girl...
Я вошёл в последний зал и прямо перед собой увидел девушку своей мечты. Стройная, в светлом легчайшем платье, высокая — с чуть приподнятым подбородком, с лучистыми глазами, невообразимо тёплого цвета волосами волнами на плечи, курносым носиком и едва-едва насмешливой улыбкой. Она стояла передо мной во всей красе, улыбалась, и я не мог вымолвить ни слова.
Потом подвинул скамеечку и сел перед картиной, на которой была изображена эта девушка. Я не знал, какая сила будет в состоянии оторвать меня от неё. Я просто, не сдерживая восхищения, смотрел и пытался запомнить её облик, осанку, взгляд, улыбку, движение руки с веером,— у меня было ощущение, что она вот-вот оживёт. Шагнёт в зал, убежит, и только лёгкий звук шагов останется для меня — я любовался её ногами, почти целиком скрытыми длинным платьем.
Я вздохнул, поднял глаза выше, и тут она, мило улыбнувшись, показала мне язык.
Я вздрогнул и вскочил. И вовремя, потому что в зал входила старушка смотрительница. Если бы она увидела меня спящим перед картиной, получилось бы очень неловко. Я кинул ещё один взгляд на девушку и вышел из музея на вечернюю улицу.
2 июня 2009
Горизонтальное центрирование блока с неизвестной шириной, часть 2
CSS:
div.top-bar {
width: 100%;
}
div.top-bar-container {
position: relative;
float: right;
right: 50%;
}
div.top-bar-container-center {
position: relative;
right: -50%;
}
HTML: внешний блок с классом
top-bar, в нём блок top-bar-container, в нём, в свою очередь, блок top-bar-container-center, а уже в нём содержимое. Громоздко, но кроссбраузерно...