Zubashev Stepan's blog

jQuery().ready

Многие используют $( document ).ready( fn ) или упрощённую запись $( fn ) для выполнения js-кода по окончанию загрузки DOM-модели страницы. Это удобно и кроссбраузерно, однако результат выполнения следующего кода:

<html>
    <head>
        <title>Test .ready</title>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"
            type="text/javascript"></script>
        <script>$( function() { error.error + 'error'; /* Error :) */ } ); </script>
        <script>
            $( function() { alert( 'All right' ); } );
            alert(2);
        </script>
    </head>
    <body> </body>
</html>

может вас разачаровать. Дело в том, что если одна из поставленных в очередь на .ready функций “заглючит”, остальные не выполнятся. Вы не увидете ‘All right’, только ‘2’. Т.е. какой-либо мелочный глюк в одном модуле может привести к полной неработоспособности javascript-а на странице.

Потерянный $_POST

Внедряя на crew.kz робокассу, я столкнулся с тем, что в реальных, боевых условиях, на сервер приходят “не правильные ответы” от платёжного сервиса. Дело в том, что $_POST был пуст, в то время как настройки мерчанта были указаны правильные. Проблема оказалась проста — в настройках аккаунта я указал в качестве адреса crewative.ru, а не http://www.crewative.ru, что приводило к 301-редиректу и потери POST-данных. Такая вот мелкая оплошность, может стоить нескольких часов поиска :)

For in в JavaScript

Встраивая jQuery-дерево (dynatree) на сайт, я столкнулся с 1 нюансом javascript-а, который, возможно, вам ещё не попадался. Оказывается конструкция for [key] in [object] в разных браузерах работает по разному:

a = { 5:5, 3:3, 8:8, 12:12 };
for( var name in a )
{
    console.log( name );
}

Результат выполнения:

  • Opera 12, Google Chrome: 3 5 8 12 // сортировка по алфавиту
  • Firefox: 5 3 8 12 // полное соответствие

Пришлось переписать часть кода :)

Объединение javascript файлов

Эпоха тёплого лампового WEB 1.0 давно прошла, и в последнее время мы имеем дело со страницами, которые кишат так называемой динамичностью. Динамичность может быть обеспечена при помощи JavaScript, VbScript и плагинами вроде Java, Flash, Silverlight. В этой статье я хочу затронуть одну из возможных оптимизаций web-сайта — объединение всех javascript файлов в один.

Read more

1001-ый способ смены разрешения экрана в Ubuntu

Сломался старый монитор, установил другой. Убунта радостно улюлюкая сообщила мне, что настройки от старого монитора не подходят и влепила 1024х768. Я полез менять — нельзя, максимальный режим. Полез менять xorg, используя самые разные найденные мною методики. Самое большее чего я добился - уменьшил макс.разрешение до 640х480. В итоговом счёте меня спасло следующее:

  • Открываем xorg.conf в редакторе: sudo gedit /etc/X11/xorg.conf
  • Ищем текущий секцию с текущим монитором, у меня это был Monitor0 (CRT-1)
  • Удаляем данные о HorizSync и VertRefresh
  • Внимательно изучаем свой монитор на предмет его наименования, в моём случае это CTX S960A
  • Ищем по нему спецификацию, в моём случае хватило этого
  • Нас интересует графа “Частота развертки”, копируем новые данные в секцию монитора, взамен старых HorizSync и VertRefresh
  • Перегружаем ось (или иксы, по идее должно хватить)
  • Выбираем подходящее разрешение экрана и частоту в настройках (я использовал NVidia X Server Settings)

Самое интересное - NVidia нашла целую кучу разрешений экрана, которые этот монитор не поддерживает :) В общем счёте, на всё про всё ушло два часа с гаком. В винде таких проблем не возникает :)