IT — Объединение javascript файлов
Эпоха тёплого лампового WEB 1.0 давно прошла, и в последнее время мы имеем дело со страницами, которые кишат так называемой динамичностью. Динамичность может быть обеспечена при помощи JavaScript, VbScript и плагинами вроде Java, Flash, Silverlight. В этой статье я хочу затронуть одну из возможных оптимизаций web-сайта — объединение всех javascript файлов в один.
IT — 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 нашла целую кучу разрешений экрана, которые этот монитор не поддерживает :) В общем счёте, на всё про всё ушло два часа с гаком. В винде таких проблем не возникает :)
IT — Opera и загрузка файлов в CKeditor 3
Столкнулся с проблемой в Opera - после загрузки файла в диалоговом окне редактора CKEditor, если повторно загрузить файл, запрос для загрузки файла на сервер идёт не на заданный вами в настройках URL, а на два таких адреса. Как оказалось, виной тому использование события для тега body — onbeforeunload, которое срабатывает всякий раз, когда document закрывается или перегружает страницу. Сие событие не функционирует в Opera, а так как форма для загрузки файлов не меняется до тех пор, пока диалоговое окно не будет закрыто, URL в нём "складывается".
Решение проблемы - использовать тег <base>, при формировани ответа на серверной стороне. В нём можно указать такой относительный URL, который заставит все относительные ссылки на странице складывать не с реальным Location документа, а с его Base модификацией. Но! не стоит забывать о том, что мир не стоит на месте, и когда-нибудь onbeforeunload появится и в опере... а посему костыль, решающий эту проблему сейчас может насолить в будущем :)
IT — Javascript: Double → Int32
В Javascript для чисел используется тип double (8 байт, числа с плавающей запятой). Мне понадобилось создать имитацию одного Delphi приложения при помощи JavaScript. В ходе сего процесса я наткнулся на проблему переполнения 2147483647 + 10
- JS (Double): 2147483657
- Delphi (Integer): -2147483639
Создать переменную типа Int в JS нельзя. Но как оказалось привести 2147483657 к - 2147483639 можно без бубнов и плясок добавив побитовое или:
- JS: 2147483647 + 10 | 0 == -2147483639
Спасибо stackoverflow :) Более подробно про логические операторы можно прочесть здесь.
IT — Opera Dragonfly
Любой современный браузер должен обладать инструментами для web-разработчика, Opera в их числе, её "инструмент" зовётся стрекозой (Dragonfly). К сожалению, сие насекомое сильно уступает по удобству и функционалу Firebug-у и Chrome Developer Tools-ам. Но что есть, то есть. Среди прочих недостатков стрекозы — она расположена на сервере производителя, и не смотря на то, что её файлы сохраняются в кеше, он обновляется слишком часто, что может служить серьёзной преградой для её использования на работе или со сверх-дорогим интернет-каналом.