четверг, января 31, 2008

Перезд

Решился таки.
Съезжаю на Wordpress.
Причин тому несколько.
Во-первых, полная свобода действий и в плане дизайна и в плане управления блогом.
Во-вторых, ну полюбился мне wordpress. Очень уж он мне понравился во время недавнего с ним общения.
Имя пока оставил какое есть (дурацкое), но думаю в последствии разживусь чем-нибудь более красивым. Шаблон тоже стандартный (не мой), но буду его постепенно перелопачивать, а перелопачивать есть что.

Ну и на последок самое важное, новый адресс http://maslennikov.mariweb.ru/ - милости прошу в гости.

воскресенье, января 27, 2008

Tot4top - королевство прелоадеров

Замучал меня товарищь Дибров.
Когда он в сто первый раз появился в рекламе на Дискавери, я всё таки решился взглянуть на этого зверя.
К слову сказать, я уже много чего начитался и наслушался про этот чудо-портал для интелектуалов и прочитанное и услышанное мне не особо понравилось. Вообщем, заранее сложилось представление о чём-то безполезном.
Ну вот зашёл.
Первое впечатление - чего они все крутятся? Такого количество прелоадеров разом я не виал ни на одном из сайтов. Может это конечно особенность флеш-сайтов, но что-то мне это не очень понравилось.
Дальше по впечатлениям - не совсем понятно (точнее совсем не понятно) как этим хозяйством пользоваться.
Дизайн - ну не знаю не знаю, обилие круглых углов, градиентов, глянца. Этакий веб-гламур.

Вывод один - больше туда не пойду ... пока.

вторник, января 22, 2008

2 приятных обновления

Итак свершилось, товарищи. Даже 2 раза свершилось.

Пункт номер раз - наконец-то, после двухлетней напряженной работы вышла Joomla 1.5. Вот ссылка для всех желающих переехать с более старых версий. Но делать этого сломя голову я бы пока не советовал, уж лучше всё хорошенько потестировать на локальной машине.
Пункт номер два - вышел не менее ожидаемый Zend for Eclipse.

Решил не разделять эти две новости, поскольку обновления для меня состоялись практически одновременно.
Пока не тестировал ни того ни другого, но уверен вещи получились стоящие.

среда, января 16, 2008

Javascript: :: JQuery 1.2.2

Обновился мой любимый фреймворк JQuery.
Разработчики не поскупились на множество исправлений и улучшений, ха что им и спасибо.

Что нового в библиотеке:
  1. Скорость работы $(DOMElement) улучшена на 300%
  2. Пересмотрена функция документа .ready()
    • Новая техника определения готовности для IE
    • Все браузеры теперь ждут загрузки CSS
    • Новый способ объявления $(document).bind("ready", fn); Старый вариант конечно же работатет $(document).ready();

  3. Добавлены 2 новых события .bind("mouseenter") / .bind("mouseleave").
    Теперь можно делать вот так:
    $("li").bind("mouseenter", function(){
    $(this).addClass("hover");
    }).bind("mouseleave", function(){
    $(this).removeClass("hover");
    });
  4. Тоже самое для колеса - .bind("mousewheel")
    $("div").bind("mousewheel", function(event, delta){
    if ( delta < 0 )
    $(this).append("up");
    else
    $(this).append("down");
    });
  5. А также ещё изменения, которые я упустил или не стал переводить всилу слабости моего английского.

вторник, января 08, 2008

Верстка :: оформление даты заметки

Много раз видел у разных товарищей в блогах или на сайтах очень приятное оформление даты заметки - в виде отрывного календаря. Видел давно, задался целью сделать такое - вот только сейчас.
Порыскав по "всемирной" не нашёл ровным счётом ничего, может искал не так или не там. Поэтому решил сделать самостоятельно.
Оказалось всё не так сложно, надеюсь начинающим блогерам или верстальщикам пригодится.
Если всё делать правильно должно получиться примерно так:


HTML:
Заранее прошу простит меня за оформление кода, но по своей глупости не могу понять как его вставить чтобы редактор не вырезал, ну да ладно ...

div class="date"
div class="month" Январь /div
div class="day" 07 /div
div class="year" 2008 /div
/div

Если вам не нужно показывать какой-либо из блоков - можете смело его удалить.

CSS:

.date {
background: url ('адресс картинки') no-repeat;
height:71px; width:50px; // подгоняются под размер картинки
line-height:22px; // подгоняются под размер картинки
text-align:center;
}
.month {
font: normal 10px "Trebuchet MS";
color:#FFFFFF;
margin: 0px 0px 1px;
padding: 0px;
text-align: center;
width:50px;
}
.day {
font: normal 20px "Trebuchet MS";
color: #ссс;
margin:0px 0px 1px;
text-align:center;
width:50px;
}
.year {
color:#434B4D;
font: normal 10px "Trebuchet MS";
text-align:center;
width:50px;
}

Конечно, много чего (размеры, цвета) нужно подгонять по картинке, ну тут я думаю каждый справится.

суббота, января 05, 2008

PHP :: определение версии браузера

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

Почесав свой неумудрённый знаниями мозг, написал примерно следущее:

function check_ver() {

$browsers = array('Opera', 'MSIE 7.0', 'MSIE 6.0', 'Mozilla/5.0');
$browsers_mobile = array('Windows CE', 'NetFront', 'Palm OS', 'Blazer', 'Elaine', 'Opera mini');

$user_agent = $_SERVER['HTTP_USER_AGENT'];

foreach ($browsers_mobile as $v) {
if (stristr($user_agent, $v)) return 'mobile';
}

foreach ($browsers as $v) {
if (stristr($user_agent, $v)) return 'normal';
}

}

if ('normal' == check_ver()) {
header('location: http://www.yandex.ru');
exit();
} elseif ('mobile' == check_ver()) {
header('location: http://www.rambler.ru');
exit();
}

Массивы $browsers и $browsers_mobile - это соответственно массивы браузеров обычных и моильных, которые в свою очередь можно и нужно расширять.

Скриптец конечно же простейший, но для начала думаю пойдёт.

среда, декабря 19, 2007

WEB 2.0: админки современных проектов

Веб 2.0 шагает по стране своими веб 2.0 ногами. Основные принципы современного нового дизайна понятны: строгая семантика вёрстки, минимум цветов, минимум элементов на странице, простые формы, крупные шрифты.

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

По своему опыту замечаю, что если пишу для себя, то никакой надобности в этом нет. Использую старые добрые таблички везде и повсюду. И шрифты делаю поменьше и графику почти не использую.
А вот если сайт потом отдавать другому дяде, чтобы он смог управлять и не мучил меня постоянные вопросами "а как вот это сделать?", приходится админку "осовременивать".

Интересно было бы глянуть как оформляют админки другие люди, ну или хотя бы услышать их мнение.

четверг, декабря 13, 2007

Wordpress :: количество постов в категории

Вчера в одном из проектов возникла необходимость сделать одну штуку для wordpress.
На главной странице (index.php) идёт циклический вывод постов с указанием категорий к которой они относяться. Так вот стало нужно помимо имени категории выводить ещё и общее количество постов в ней.

Т.е. должно было получиться примерно так:
  • Заголовок материала - категория 1 (5)
    • Текст материала
  • Заголовок материала - категория 2 (2)
    • Текст материала
  • Заголовок материала - категория 3 (10)
    • Текст материала
Ну и поскольку, стандартных методов я не нашёл (хотя вроде усиленно искал) пришлось делать всё самому (спасибо товарищам за консультацию).

Написал я такую функцию

function post_in_cat($mat_id) {
global $wpdb;

$taxonomys = $wpdb->get_results("SELECT * FROM $wpdb->term_relationships WHERE `object_id` = '$mat_id'");
foreach ($taxonomys as $v) { $tmp[] = $v->term_taxonomy_id; }
$taxonomys_str = implode(',', $tmp);

$numposts = $wpdb->get_var("SELECT `count` FROM $wpdb->term_taxonomy WHERE `taxonomy` = 'category' AND `term_taxonomy_id` IN ($taxonomys_str)");
if (0 < $numposts) $numposts = number_format($numposts);

return $numposts;
}

Функцию сохраняете в файл functions.php вашей темы. Сообщаете функции ID материала, в ответ получаете количество материалов в категории в которой он находитя. Да, функция лишена всякого изящества, но главное - РАБОТАЕТ :)

Как использовать
Находим место куда вы хотите вставить количество постов. В моё случае это было после вывода заголовка категории ( the_category(', ') ; ).
И вызываем нашу функцию ( echo post_in_cat($post->ID); )
И будет вам счастье.

З.Ы. Работает в wordpress версии 2.3.1

вторник, декабря 11, 2007

Разработка :: браузеры

Как практически любой вменяемый web-разработчик в своей практике пользуюсь браузером Firefox.
Да у него куча косяков. И памяти он жрёт невероятное количество и висит порою и запускается долго, но ни у одного бругого браузера нет такого ОГРОМНОГО количества аддонов.
Сразу скажу, что я не отношусь к той группе людей, которые навешивают на свой браузер все возможные примочки и потом удивляются, почему у них FF 500 мегабайт откушал.
У меня их всего 18 :).

Вот список, отсортированный по мере необходимости и моей к ним привязанности:

  1. Web Developer - среди разработчиков не нуждается в рекомендациях, а остальным он и не нужен
  2. Firebug - тоже самое, только его я использую больше когда имею дело с вёрсткой
  3. ScrapBook - хранилище всего всего. Умеет сохранять страницы полностью или частично не повреждая саму страницу. Позволяет также хранить закладки, имеет настраиваемую структуру каталогов и ещё очень много всего. За два года использования FF без переустановок в аддоне накопилось примерно 200 мегабайт всяческой информации.
  4. Gmail Manager - маленький плагинчик, показывающий состояние вашего почтового ящика (понятно, что ящик должен быть на Gmail). Помогает оперативно реагировать на входящую корреспонденцию.
  5. ColorZilla - пипетка, определяет цвет любого элемента на странице. Умеет ещё много чего.
  6. MeasureIt - линейка, измеряет линейные размеры элементов на странице.
  7. Html Validator - ну с этим понятно. Валидирует страницы, причём достаточно точно.
  8. Download statusbar - заменяет и расшираяет стандартный менеджер закачем. Аккурато прячется на нижней панели и не мозолит глаза.
  9. Flashblock - блокирует flash :) Добавить больше нечего.
  10. Adblock Plus - блокирует всё что захочеться.
  11. LoremIpsum Content Generator - генератор "рыбы". На этапе разработки бывает крайне полезен.
  12. All-in-One-Sidebar - объединяет все всплывающие окошки браузера в один сайдбар, который всегда можно скрыть.
  13. Undo Closed Tabs Button - кнопочка, позволяющая востановить случайно закрытый таб. Поддерживается история ваших путешествий.
  14. FireShot - продвинутая фоткалка экрана. Можно тутже наставить коментариев и пометок. Всё очень красиво и удобно.
  15. Speed Dial - быстрй запуск страниц. Иммитирует speed dial opera. Аддон от которого возможно вскоре откажусь. Что-то медленно странички открываются и особой надобности в нём нет.
  16. Stylish - управление пользовательскими таблицами стилей. Использую исключительно для развлечения.
  17. TorrentBar - поисковик по торрентам.
  18. Torrent Finder Toolbar - другой поисковик по торрентам. Использую два, потомучто ищут в разным местам.
Основной прнцип при расстановке панелей в браузере и рассовываний аддонов - это оставить как можно больше места под страницу.
Посмотреть мой рабочий браузер можно тут.

воскресенье, декабря 09, 2007

JavaScript: JQuery

На повестке дня два вопроса. Точнее вопрос из них только один, второе приятная вещь, которой научился недавно.

1. Вопрос про AJAX. Допустим, запрашиваем у скрипта определённое количество информации, которую потом нужно отобразить в виде таблицы. По началу я делал так: получаем данные в скрипте, там же формируем необходимый html код, возвращаем его в javascript и вставляем в нужную таблицу (метод appendTo). Вроде всё работает и всё хорошо.
Чуть погодя возник собственно вопрос - а правильно ли это?
Есть второй способ - получит данные и вернуть его ввиде JSON. После этого силами javascript на лету собирать нужную таблицу и вуаля.
Второй способ мне кажется правильнее и логичнее, но...
Плюс первого - формирование таблицы сервером пройдёт быстрее.
Минусы первого - возрастёт количество передаваемого трафика, что не может не повлиять на общую работу системы.
Плюсы второго - минимум трафика, так как передаются только необходимые данные.
Минусы второго - скорость формирования таблицы с помощью javascript оставляет желать лучшего.
Интересно, как всё же делать правильно? В общем, вопрос остаётся открытым.

2. Как я уже говорил, это не вопрос, а просто приятность, обнаруженная мною у JQuery.
Создавая объект на лету, часто приходиться задавать ему большое количество дополнительных параметров (класс, идентификатор, имя, оформление, ...).
Так вот, в JQuery можно создавать цепочки команд, применяя их к одному объекту. На примере будет всё понятно.
Можно делать так:
var object = document.createElement('div');
$(object).addClass('block');
$(object).attr('id', 'block_id');
$(object).text('#')
$(object).appendTo($(tr));
А можно так:
var object = document.createElement('div');
$(object).addClass('block').attr('id', 'block_id').text('#').appendTo($(tr));
Согласитесь, что получилось значительно короче и удобнее.

Ссылка по теме: обсуждение на хабре