misc/class
lib/jquery_pnotify, lib/moment, lib/lodash, misc/notification, site/engine, misc/social
if( $.browser.msie && $.browser.version <= 8 ) include('lib/respond'); $._social.__cfg = {"init":[{"service":"basic"},{"fb_app_id":"1997094873850041","service":"fb"},{"vk_app_id":"2978320","service":"vk"},{"service":"twi"}],"like":[{"service":"fb"},{"service":"vk"},{"via":"","channel":"","hash_tag":"","service":"twi"}]}; window._SiteEngine = new classes.SiteEngine( { user_id: 0, controller: 'content_tape', action: 'view', content_css_version: '1459538664', social_enabled: 0} );

Faiwer

Блог web-программиста

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

14 октября 2011

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

For in в JavaScript

14 октября 2011

Встраивая 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 файлов

12 октября 2011

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

подробности…

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

25 сентября 2011

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

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

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

Opera и загрузка файлов в CKeditor 3

27 мая 2011

Столкнулся с проблемой в Opera - после загрузки файла в диалоговом окне редактора CKEditor, если повторно загрузить файл, запрос для загрузки файла на сервер идёт не на заданный вами в настройках URL, а на два таких адреса. Как оказалось, виной тому использование события для тега bodyonbeforeunload, которое срабатывает всякий раз, когда document закрывается или перегружает страницу. Сие событие не функционирует в Opera, а так как форма для загрузки файлов не меняется до тех пор, пока диалоговое окно не будет закрыто, URL в нём "складывается".

Решение проблемы - использовать тег <base>, при формировани ответа на серверной стороне. В нём можно указать такой относительный URL, который заставит все относительные ссылки на странице складывать не с реальным Location документа, а с его Base модификацией. Но! не стоит забывать о том, что мир не стоит на месте, и когда-нибудь onbeforeunload появится и в опере... а посему костыль, решающий эту проблему сейчас может насолить в будущем :)