Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Замена главной иконки браузера Firefox

15.07.2012 | Категория: Software | Автор: ManHunter

Замена главной иконки браузера Firefox

Сегодня я познакомлю вас с еще одной настройкой браузера Firefox. Оказывается, можно поменять его иконку на любую другую, при этом даже не придется ковыряться во внутренностях исполняемого файла редакторами ресурсов. Зайдите через Проводник или любой файловый менеджер в папку с установленным браузером и проверьте наличие в ней подпапки "\chrome\icons\default". Туда складывают иконки различные расширения браузера, поэтому не исключено, что такая папка на диске уже есть. Если нет, то создайте ее. Папка "chrome" обязательно должна быть, поэтому сперва в ней создайте папку "icons", а затем уже в ней папку "default". В итоге должно получиться что-то наподобие такого пути:

C:\Program Files\Mozilla Firefox\chrome\icons\default\
Теперь идем на сайт с бесплатными иконками, выбираем нужную и сохраняем ее с расширением ico. Дальше переименовываем файл иконки в main-window.ico и переносим его в созданную папку "default". Все, осталось быстренько перезапустить браузер и, если все сделано правильно, наслаждаться результатами. Поддерживаются не только обычные, но и мультииконки (когда в одном файле содержатся иконки разных размеров). После замены иконки браузер можно переустанавливать, обновлять, делать с ним что угодно, новая иконка будет подгружаться до тех пор, пока файл main-window.ico будет находиться на месте.

Читать статью целиком »
Просмотров: 14149 | Комментариев: 15

Как удалить неудаляемые расширения Firefox

02.06.2012 | Категория: Software | Автор: ManHunter

Неудаляемое дополнение Firefox

Разработчики некоторых программ считают себя слишком умными, и пытаются принимать решения за пользователя. Одним из проявлений такой "заботы" является установка в браузеры каких-то непонятных плагинов и дополнений. Более того, такие дополнения часто нельзя удалить штатными средствами браузера, а можно только отключить. Сейчас я научу вас, как избавляться от подобных "данайских подарков" на моем примере - расширении SmartPrintButton, его впаривает инсталлятор принтера HP LaserJet Pro при установке. Как вы видите на скриншоте, кнопка "Удалить" действительно неактивна.

Читать статью целиком »
Просмотров: 52174 | Комментариев: 38

Fake YB for Firefox 1.0

04.04.2012 | Категория: Мои программы | Автор: ManHunter

Скриншот программы Fake YB for Firefox

Эта небольшая программа предназначена для изменения строки UserAgent браузера Firefox таким образом, чтобы можно было качать с файлообменника Яндекс.Народ без ввода контрольных цифр. Обычно это достигается только установкой Яндекс.Бара, который лично я считаю вредоносной троянской программой. В версиях Firefox до 3.x включительно, подменить UserAgent можно было через обычные настройки браузера, но, начиная с 4-й версии Firefox, разработчики убрали эту возможность. Всю теорию по этому вопросу вы можете почитать здесь. Поместите программу Fake YB for Firefox в папку с установленным браузером или же выберите вручную файл application.ini из папки Firefox. При необходимости измените версию Яндекс.Бара на нужную вам, затем нажмите кнопку "Patch". Для восстановления исходного состояния нажмите кнопку "Restore". Возможность восстановления сделана специально, если изменение UserAgent конфликтует с обновлением браузера, плагинов или дополнений. После применения патча или восстановления обязательно перезапустите браузер, чтобы изменения вступили в силу.

Читать статью целиком »
Просмотров: 4566 | Комментариев: 14

Какая может быть максимальная длина URL?

23.11.2011 | Категория: Web-мастеру и не только | Автор: ManHunter
Однажды, при разработке одного из проектов, я столкнулся с тем, что требовалась передача большого количества данных из формы методом GET, то есть через адресную строку. У меня под браузером Firefox все работало как надо, а вот у манагеров, сидящих на Internet Explorer, выдавалась ошибка, что запрошенная страница не может быть отображена. Как оказалось, проблема была в том, что получался слишком длинный адрес URL, и ограничения браузера не позволяют его открыть. Причем у Firefox по всей видимости, этот лимит выше, чем у Internet Explorer. Это натолкнуло меня на мысль протестировать различные браузеры на предмет максимально допустимой длины URL, и вот что у меня получилось. Для опытов был написан коротенький скрипт:
  1. if ($_GET['long']) {
  2.     echo '<script>document.write(document.location.href.length);</script>';
  3. }
  4. else {
  5.     $long=1;
  6.     for ($i=0$i<23$i++) {
  7.         $long=ceil(2*$long);
  8.         echo '<a href="test.php?long='.$long;
  9.         echo '#chk='.str_repeat('x',$long).'_end!">'.$long.'</a><br>';
  10.     }
  11. }    
Сразу могут возникнуть вопросы: почему в адресе используется именно анкор, а не обычный параметр, и почему для подсчета длины используется JavaScript, а не что-то типа str_len(getenv('REQUEST_URI'))? Да, первый вариант тестового скрипта был именно таким, но я сразу же столкнулся с ограничением сервера Apache на предельно допустимую длину GET-запроса. При обращении к странице сервер выдавал вместо нее ошибку 414 - Request-URI Too Large. Попытки изменить значения параметров LimitRequestLine в конфигурации Apache привели к другой ошибке:

LimitRequestLine "65535" must not exceed the precompiled maximum of 8190
То есть для изменения порогового значения надо перекомпилировать сервер с нужными значениями, а это я сделать не могу, тем более на хостинговом сервере. Пропатчить все проверки в локальной версии сервера тоже не удалось, ограничение все равно оставалось. Поэтому пришлось извернуться через анкор и JavaScript.

Читать статью целиком »
Просмотров: 26144 | Комментариев: 10

Определение мобильных браузеров на PHP

30.04.2010 | Категория: Web-мастеру и не только | Автор: ManHunter
С быстрым развитием рынка мобильных устройств становится актуальной тема создания сайтов для них. Это могут быть самостоятельные страницы сайтов, или же просто облегченные версии страниц с минимумом графики, особыми стилями, версткой, чтобы сайт можно было комфортно просматривать на маленьком экранчике мобильного телефона или КПК. И лучше делать это автоматически, не заставляя пользователя искать на основном сайте какие-то дополнительные ссылки. Например, если вы откроете с мобильного телефона любую страницу моего сайта, то вас автоматически переадресует на облегченную версию этой же страницы для мобильных устройств. Определять браузер средствами PHP мы уже умеем, главная сложность - выделить сигнатуры браузеров мобильных устройств. К счастью, это уже сделано на сайте Detect Mobile Browsers. Весь сайт целиком посвящен только одному скрипту для определения мобильных браузеров, но сам скрипт обвешан ненужными наворотами и написан каким-то жутким стилем, так что в исходном виде практически бесполезен. А вот позаимствовать из него сигнатуры и некоторые другие методы определения вполне можно, что и было сделано. Код полностью вычищен и оптимизирован.
  1. //--------------------------------------------------------------------
  2. // Функция проверки принадлежит ли браузер к мобильным устройствам
  3. // Возвращает 0 - браузер стационарный или определить его не удалось
  4. //            1-4 - браузер запущен на мобильном устройстве
  5. //--------------------------------------------------------------------
  6. function is_mobile() {
  7.   $user_agent=strtolower(getenv('HTTP_USER_AGENT'));
  8.   $accept=strtolower(getenv('HTTP_ACCEPT'));
  9.  
  10.   if ((strpos($accept,'text/vnd.wap.wml')!==false) ||
  11.       (strpos($accept,'application/vnd.wap.xhtml+xml')!==false)) {
  12.     return 1// Мобильный браузер обнаружен по HTTP-заголовкам
  13.   }
  14.  
  15.   if (isset($_SERVER['HTTP_X_WAP_PROFILE']) ||
  16.       isset($_SERVER['HTTP_PROFILE'])) {
  17.     return 2// Мобильный браузер обнаружен по установкам сервера
  18.   }
  19.  
  20.   if (preg_match('/(mini 9.5|vx1000|lge |m800|e860|u940|ux840|compal|'.
  21.     'wireless| mobi|ahong|lg380|lgku|lgu900|lg210|lg47|lg920|lg840|'.
  22.     'lg370|sam-r|mg50|s55|g83|t66|vx400|mk99|d615|d763|el370|sl900|'.
  23.     'mp500|samu3|samu4|vx10|xda_|samu5|samu6|samu7|samu9|a615|b832|'.
  24.     'm881|s920|n210|s700|c-810|_h797|mob-x|sk16d|848b|mowser|s580|'.
  25.     'r800|471x|v120|rim8|c500foma:|160x|x160|480x|x640|t503|w839|'.
  26.     'i250|sprint|w398samr810|m5252|c7100|mt126|x225|s5330|s820|'.
  27.     'htil-g1|fly v71|s302|-x113|novarra|k610i|-three|8325rc|8352rc|'.
  28.     'sanyo|vx54|c888|nx250|n120|mtk |c5588|s710|t880|c5005|i;458x|'.
  29.     'p404i|s210|c5100|teleca|s940|c500|s590|foma|samsu|vx8|vx9|a1000|'.
  30.     '_mms|myx|a700|gu1100|bc831|e300|ems100|me701|me702m-three|sd588|'.
  31.     's800|8325rc|ac831|mw200|brew |d88|htc\/|htc_touch|355x|m50|km100|'.
  32.     'd736|p-9521|telco|sl74|ktouch|m4u\/|me702|8325rc|kddi|phone|lg |'.
  33.     'sonyericsson|samsung|240x|x320vx10|nokia|sony cmd|motorola|'.
  34.     'up.browser|up.link|mmp|symbian|smartphone|midp|wap|vodafone|o2|'.
  35.     'pocket|kindle|mobile|psp|treo|android|iphone|ipod|webos|wp7|wp8|'.
  36.     'fennec|blackberry|htc_|opera m|windowsphone)/'$user_agent)) {
  37.     return 3// Мобильный браузер обнаружен по сигнатуре User Agent
  38.   }
  39.  
  40.   if (in_array(substr($user_agent,0,4),
  41.     Array("1207""3gso""4thp""501i""502i""503i""504i""505i""506i",
  42.           "6310""6590""770s""802s""a wa""abac""acer""acoo""acs-",
  43.           "aiko""airn""alav""alca""alco""amoi""anex""anny""anyw",
  44.           "aptu""arch""argo""aste""asus""attw""au-m""audi""aur ",
  45.           "aus ""avan""beck""bell""benq""bilb""bird""blac""blaz",
  46.           "brew""brvw""bumb""bw-n""bw-u""c55/""capi""ccwa""cdm-",
  47.           "cell""chtm""cldc""cmd-""cond""craw""dait""dall""dang",
  48.           "dbte""dc-s""devi""dica""dmob""doco""dopo""ds-d""ds12",
  49.           "el49""elai""eml2""emul""eric""erk0""esl8""ez40""ez60",
  50.           "ez70""ezos""ezwa""ezze""fake""fetc""fly-""fly_""g-mo",
  51.           "g1 u""g560""gene""gf-5""go.w""good""grad""grun""haie",
  52.           "hcit""hd-m""hd-p""hd-t""hei-""hiba""hipt""hita""hp i",
  53.           "hpip""hs-c""htc ""htc-""htc_""htca""htcg""htcp""htcs",
  54.           "htct""http""huaw""hutc""i-20""i-go""i-ma""i230""iac",
  55.           "iac-""iac/""ibro""idea""ig01""ikom""im1k""inno""ipaq",
  56.           "iris""jata""java""jbro""jemu""jigs""kddi""keji""kgt",
  57.           "kgt/""klon""kpt ""kwc-""kyoc""kyok""leno""lexi""lg g",
  58.           "lg-a""lg-b""lg-c""lg-d""lg-f""lg-g""lg-k""lg-l""lg-m",
  59.           "lg-o""lg-p""lg-s""lg-t""lg-u""lg-w""lg/k""lg/l""lg/u",
  60.           "lg50""lg54""lge-""lge/""libw""lynx""m-cr""m1-w""m3ga",
  61.           "m50/""mate""maui""maxo""mc01""mc21""mcca""medi""merc",
  62.           "meri""midp""mio8""mioa""mits""mmef""mo01""mo02""mobi",
  63.           "mode""modo""mot ""mot-""moto""motv""mozz""mt50""mtp1",
  64.           "mtv ""mwbp""mywa""n100""n101""n102""n202""n203""n300",
  65.           "n302""n500""n502""n505""n700""n701""n710""nec-""nem-",
  66.           "neon""netf""newg""newt""nok6""noki""nzph""o2 x""o2-x",
  67.           "o2im""opti""opwv""oran""owg1""p800""palm""pana""pand",
  68.           "pant""pdxg""pg-1""pg-2""pg-3""pg-6""pg-8""pg-c""pg13",
  69.           "phil""pire""play""pluc""pn-2""pock""port""pose""prox",
  70.           "psio""pt-g""qa-a""qc-2""qc-3""qc-5""qc-7""qc07""qc12",
  71.           "qc21""qc32""qc60""qci-""qtek""qwap""r380""r600""raks",
  72.           "rim9""rove""rozo""s55/""sage""sama""samm""sams""sany",
  73.           "sava""sc01""sch-""scoo""scp-""sdk/""se47""sec-""sec0",
  74.           "sec1""semc""send""seri""sgh-""shar""sie-""siem""sk-0",
  75.           "sl45""slid""smal""smar""smb3""smit""smt5""soft""sony",
  76.           "sp01""sph-""spv ""spv-""sy01""symb""t-mo""t218""t250",
  77.           "t600""t610""t618""tagt""talk""tcl-""tdg-""teli""telm",
  78.           "tim-""topl""tosh""treo""ts70""tsm-""tsm3""tsm5""tx-9",
  79.           "up.b""upg1""upsi""utst""v400""v750""veri""virg""vite",
  80.           "vk-v""vk40""vk50""vk52""vk53""vm40""voda""vulc""vx52",
  81.           "vx53""vx60""vx61""vx70""vx80""vx81""vx83""vx85""vx98",
  82.           "w3c ""w3c-""wap-""wapa""wapi""wapj""wapm""wapp""wapr",
  83.           "waps""wapt""wapu""wapv""wapy""webc""whit""wig ""winc",
  84.           "winw""wmlb""wonu""x700""xda-""xda2""xdag""yas-""your",
  85.           "zeto""zte-"))) {
  86.     return 4// Мобильный браузер обнаружен по сигнатуре User Agent
  87.   }
  88.  
  89.   return false// Мобильный браузер не обнаружен
  90. }
Функция возвращает false, если браузер стационарный или по каким-то причинам его не удалось определить. Если браузер запущен на мобильном устройстве, то результат будет от 1 до 4, это код метода, которым он был определен. Сигнатуры на сайте время от времени пополняются, так что можете брать их оттуда самостоятельно и дополнять эту функцию.

Просмотров: 33098 | Комментариев: 14

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2021
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.17 сек. / MySQL: 3 (0.0679 сек.) / Память: 5 Mb
Наверх