27 апреля 2009

Поболтайте с Винсентом

25 апреля 2009

Кино будет, но пленку еще мотают

Привет всем!

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

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

Короче на конвейере стоит:
  1. Как установить Google Chrome под Linux (никакого wine, сборка официальной beta под Linux).
  2. Инструменты для анализа посещаемости сайта (точно не первым пунктом стоит, нужно материалов пособирать, чтобы написать статью).
  3. Инструменты для общения и обмена контентом. Хранилища файлов.
  4. Краткий обзор по виртуальным ОС (Cloud computing).
  5. Инструменты FullAJAX.
  6. Краткий обзор AJAX GUI Frameworks.
  7. Эмуляция Java 2 ME на сайте.
  8. Трюки и примеры GIMP, рассмотрение статей по Adobe Photoshop в контексте GIMP.
  9. Анимация на JavaScript.

Пока занят на недельку. Через неделю будет новый дизайн блога, новые сервисы и некоторые интересные технологии, которые я также опишу и расскажу как их реализовать на движке Blogger.
Такие дела =) Никак не могу придерживаться графика минимум 1 нормальный пост в неделю. Времени катастрофически нет.

Прошу всех голосовать в комментариях - о чем написать из приведенного выше списка. Можно также предложить тему, отсутствующую в списке, я рассмотрю заявку и занесу в график.


20 апреля 2009

Пишите документацию к проекту и коду!

  • Часто ли вы пишете документацию или хотя бы подробные комментарии к своему коду?
  • Как вы себя чувствуете когда вам приходится работать над проектом, который был написан другим человеком и в нем нет никаких комментариев, а код достаточно большой?
  • Во время разработки вы не писали документацию? Прошел год и вам пришлось вернуться к этому проекту? Как ощущения? =)


В последнее время мне часто приходится буквально "разгребать" непонятный код раскиданный по непонятно как структурированным файлам. Дело в том, что я продолжаю разработку проектов, которые когда-то были начаты другими людьми.

Люди эти, к моему глубокому сожалению не обременили себя написанием хотябы скромных комментариев к коду, либо не нашли на это времени.

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

И ладно бы, я человек спокойный и терпеливый. Ну разобрался бы в итоге. Но существует заказчик, которому никак не объяснить почему вроде бы не такая сложная задача не может быть решена за один день и почему предыдущий разработчик (автор того самого недокументированного кривого кода) делал все быстрее. Заказчик не может понять, что мне нужно переварить груду этого толком неструктурированного кода, чтобы сделать умозаключения о дальнейшей разработке. Мало того, когда заказчик задает вопросы о сроках разработки на начальном этапе передачи проекта, то в данном случае я затрудняюсь ответить - еще не ясно что меня ждет дальше и насколько удобоваримый код я буду рад лицезреть.

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

Честно признаюсь, этот крик души не одинок! Не хочу копировать посты, просто присоединяюсь к замечательному блогу Станислава Малкина.

16 апреля 2009

Высота таблиц и центрирование контента

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

Итак, первый вопрос о высоте таблиц.

Почему при установке DOCTYPE в начале документа не работает атрибут HEIGHT у таблицы?

<table height="100%">
<tr>
<td>
Таблица
</td>
</tr>
</table>

Проблема в том, что вообще в спецификации HTML нет атрибута height у таблицы. Т.е. его использование - это ошибка изначально.Так почему же это работает когда не указан DOCTYPE? Дело в том, что режим рендеринга страницы браузером определяется именно типом документа (DOCTYPE). Но когда DOCTYPE не указан браузер отрисовывает страницу в так называемом "quirks mode" не пытаясь соответствовать какому-то конкретному стандарту.

В режиме соответствия стандартам это работать не будет. Т.е. если у страницы указан полный DOCTYPE или если указан DOCTYPE XHTML, то браузер отрисовывает страницу в режиме соответствия стандартам, если же DOCTYPE отсутствует или же присутствует, но без URL его XML-описания, то отрисовка будет в режиме совместимости (quirks mode).


Так зачем мне указывать DOCTYPE?
Отвечу кратко - это гарантирует, или по крайней мере позволяет надеяться, что страница будет одинакого выглядеть в разных браузерах, а во-вторых - следование стандартам - это к тому же правило хорошего тона и в некоторых случаях может избавить вас от лишних проблем.


Так как же сделать, чтобы это работало?
Чтобы работал именно атрибут height - никак, а вот чтобы добиться того же результата нужно использовать CSS.


Для начала нужно задать CSS самого тела страницы:

html, body {
margin: 0px;
padding: 0px;
height: 100%;
border: none;
}

Для чего это нужно?
Дело в том, что таблица растягиваться на всю высоту элемента, в котором она содержится, т.е. в данном случае на высоту элемента BODY. Но он может не иметь высоту области отображения страницы в браузере, поэтому нам нужно задать высоту BODY принудительно.


Теперь создадим стиль для нашей таблицы:

#full_height_table {
height: 100%;
}

Ну а HTML должен быть таким:

<body>
<table id="full_height_table">
<tr>
<td>
Таблица
</td>
</tr>
</table>
</body>

Теперь у нас все замечательно работает и таблица имеет высоту в 100%.


Теперь второй вопрос.
Как в XHTML центрировать контент из блочных элементов?

Атрибут ALIGN="center" теперь нам не поможет. Чтобы центрировать блочный элемент по горизонтали нужно задать для него CSS со праметрами margin-left и margin-right.

#my_centered_div {
margin-left: auto;
margin-right: auto;
}

Центрированный элемент

Это касается блочных элементов, чтобы центрировать текст нужно использовать CSS text-align: center;


Чтобы центрировать по вертикали нужно использовать свойство CSS родительского элемента vertical-align, но это подойдет только для текста, для блочного элемента следует добавить свойство display: table-cell;. Однако в Internet Explorer это работать не будет. Приемы как сделать вертикальное центрирование блочного элемента в IE можно посмотреть тут.

#my_centered_div_container {
vertical-align: middle;
display: table-cell;
}

Центрированный элемент


Небольшое демо:

Блочный элемент

Свойства CSS (кликайте и смотрите результат выше):
margin-left: 0px; margin-right: auto;
margin-left: auto; margin-right: auto;
margin-left: auto; margin-right: 0px;



И в заключение

Старайтесь задавать все параметры внешнего вида через CSS и вынесите CSS в отдельный файл, не прописывайте стили внутри страницы. В дальнейшем это избавит вас от многих проблем, если вы захотите изменить внешний вид и поведение страницы.



Jet Profiler для MySQL

Искал недавно инструмент, чтобы анализировать производительность сервера MySQL. Просто было очень интересно какая нагрузка на сервер идет в некоторых местах моих PHP-скриптов, работающих с базой данных.



Требовалось что-нибудь достаточно простое, наглядное и удобное. И нашел. Вот интересный инструмент - Jet Profiler.

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

Работает Jet Profiler как под Linux, так и под Windows и Mac.

Для работы потребуется Sun Java 2 SE VM версии 1.6. И не надо сразу так скептически относиться к данному ПО. У меня Java всегда есть и устанавливаю я ее чуть-ли не первым компонентом после установки самой ОС и драйверов. Если у вас нет Java VM, то скачать можно тут.

Jet Profiler отслеживает какие запросы к БД производились за определенный промежуток времени, строит графики количества запросов, времени выполнения. Сигнализирует о самых низкопроизводительных моментах в работе, анализирует SQL-запросы и предлагает варианты по оптимизации для повышения производительности. Jet Profiler так же предоставляет другую статистическую информацию о работе сервера MySQL.

В целом - замечательный инструмент. Жаль, что бесплатная версия очень урезана в функциональности, но даже этого хватает чтобы представить поверхностную картину о производительности вашей БД и ее "узких местах".

15 апреля 2009

Теперь я обитаю и в Twitter'е

Теперь вы можете наблюдать за мной в Twitter'e.

Зовут меня там Count_Raven.

Также здесь в блоге справа появилась панель моего Twitter'а с последними 5-ю сообщениями...

Наблюдайте и наблюдаемы будете =)

04 апреля 2009

Рекомендую блог для дизайнеров, программистов, веб-мастеров использующих ОС Ubuntu Linux

Всем рекомендую, хороший блог.
Вот линк: http://my.opera.com/area42/blog/

A blog for designer, artists and developers programming websites, painting icons, creating multimedia content, doing dtp or constructing in 3D space using (Ubuntu) Linux.