Задать вопрос
  • Шум в наушниках?

    Mithgol
    @Mithgol
    Наушники со встроенным микрофоном? Если да, то попробуйте заземлиться, взявшись пальцами за наружную сторону удлинителя USB.
    Ответ написан
    Комментировать
  • Тормозит Firefox

    Mithgol
    @Mithgol
    Для начала я рекомендовал бы поставить FlashBlock, потому что флэшёвые ролики (особенно когда их много) могут неимоверно тормозить браузер — а так можно будет только те флэшки запускать, которые надо, жмякая по ним мышóю.

    Кроме того, уместно устроить дефрагментацию тому диску, на котором профиль.
    Ответ написан
    4 комментария
  • Пара вопросов про DynDNS

    Mithgol
    @Mithgol
    Если перенастройка не поможет и захочется сменить клиента на альтернативный, рекомендую DynDNS Updater производства Kana Solution.
    Ответ написан
    1 комментарий
  • Произвести модификацию в jQuery UI и получить сжатый вариант?

    Mithgol
    @Mithgol
    Более радикальным методом решения этой проблемы является отказ от стандартного конструктора-упаковщика, предлагаемого на сайте jQuery UI, и переход к собственноручному склеиванию желаемых файлов джаваскрипта встык, с дальнейшей упаковкою их собственноручно же — притом с именно такой упаковкою, которая не изменяет имена методов, так что не создаёт описанной Вами проблемы.

    Для этой цели, например, можно использовать прославленный упаковщик Дина Эдвардса, поставив ему в настройках галочку «Base62 encode», но сняв галочку «Shrink variables».
    Ответ написан
    Комментировать
  • Произвести модификацию в jQuery UI и получить сжатый вариант?

    Mithgol
    @Mithgol
    Предлагаю Вам воспользоваться средством автоматической записи джаваскрипта в красивом виде, которое запишет сжатый код в структурированном виде, хотя, естественно, не восстановит первоначальные названия укороченных идентификаторов (переменных, полей, функций, методов, и так далее).

    Затем, методом пристального вглядывания, Вы сможете определить в нём имя желаемого метода (сравнив его содержимое с известным Вам содержимым первоначального несжатого кода того же метода и убедившись в их логической одинаковости). Используйте найденное имя в своём вызове, и тем невозбранно достигнете желаемого.
    Ответ написан
    1 комментарий
  • Аддон для Firefox закрывающий табы справа или слева от текущего?

    Mithgol
    @Mithgol
    Очень хорошим расширением, необычайно упрощающим многие типичные задачи при работе с вкладками, служит «Tab Mix Plus». Пункты закрытия левых и правых вкладок появляются, если поставить соответствующие галочки в настройках контекстного меню вкладки (на нижеприведённом скриншоте они видны в правом столбце):

    [настройки контекстного меню вкладки]

    После этого соответствующие пункты появляются в контекстном меню, их можно выбрать и жмякнуть мышою:

    [контекстное меню вкладки]
    Ответ написан
    Комментировать
  • JQuery: методы $.add() и $.append() работают некорректно?

    Mithgol
    @Mithgol
    Как я понимаю, Вы желаете отыскать такой аналог вызова
    $(function(){
       $("p#append").click(function(){
          $(this).append("<div class='div'></div>");
       });
    });
    
    который создавал бы элемент по имени и затем снабжал его классом, а потом присоединял бы к указанному.

    Тогда это вот что:
    $(function(){
       $("p#append").click(function(){
          $('<div />').addClass('div').appendTo($(this));
       });
    });

    Метод .add() не сгодится потому, что он используется для пополнения $-наборов. Например, его можно использовать, чтобы добавить два div-элемента вместо одного:
    $(function(){
       $("p#append").click(function(){
          $('<div />').add('<div />').addClass('div').appendTo($(this));
       });
    });

    Метод .css() не сгодится потому, что он используется для наложения CSS-свойств. Например, вот этот вызов:
    $(function(){
       $("p#append").css('color', 'red');
    });
    налагает свойство
    {color: 'red';}
    Ответ написан
    Комментировать
  • Большая нагрузка на браузер при вкл jquery?

    Mithgol
    @Mithgol
    Похоже, что в Вашем коде при каждом наведении (hover) загружается «Cloud Zoom» из Сети (getscript), что само по себе способно создать колоссальную нагрузку:
    $(document).ready(function(){
       $('#zoom1').hover(function(){
          $.getscript('js/cloud-zoom.1.0.2.min.js', function(){
             testAjax();
          });
       });
    });
    

    Уместно, по меньшей мере, переставить местами обработчики событий, чтобы сперва один раз загружался скрипт «Cloud Zoom», а затем (когда он пришёл) назначался обработчик наведения мыши на иллюстрацию (если $('#zoom1') является именно иллюстрацией):
    $(function(){
       $.getscript('js/cloud-zoom.1.0.2.min.js', function(){
          $('#zoom1').hover(function(){
             testAjax();
          });
       });
    });
    

    В скрипте «Cloud Zoom», судя по его коду, не предусмотрен собственный механизм для приостановки эффекта лупы. Вы, если искали такой механизм, можете попробовать отодрать обработчики событий от иллюстраций и галерей:
    $('.cloud-zoom, .cloud-zoom-gallery').unbind();
    

    После этого можно попробовать перезапускать эффект лупы тем способом, который в самóм плагине «Cloud Zoom» используется в самом начале кода:
    $('.cloud-zoom, .cloud-zoom-gallery').CloudZoom();
    

    Естественно, идеальная работа не гарантируется: это просто напрашивающийся «грязный трюк» («dirty hack»).

    Сразу скажу ещё, что «грязный трюк», может быть, и не нужен ещё: если достаточно того, чтобы плагин «Cloud Zoom» не начинал автоматически набрасываться на все имеющиеся картинки и галереи на странице (то есть скачивать чёртову уйму крупных иллюстраций), а начинал бы действовать только при наведении мыши на картинку, то хватит всего двух шагов.

    Во-первых, отредактируйте используемый код «Cloud Zoom», убрав оттуда автозапуск. В коде джаваскрипт автозапуска идёт в одну строку, но я для красоты напишу его в структурированном виде:
    $(document).ready(function () {
        $('.cloud-zoom, .cloud-zoom-gallery').CloudZoom()
    });
    


    Во-вторых, вместо убранного автозапуска следует вручную написать запуск, срабатывающий при наведении мыши на иллюстрацию или галерею:
    $('.cloud-zoom, .cloud-zoom-gallery').hover(function(){
       $(this).CloudZoom();
    });
    

    Если же окажется, что многократный запуск CloudZoom(), случающийся после каждого наведения мыши, создаёт неприятные эффекты, то можно пометить иллюстрации и галереи некоторой пометкою, и снимать её после запуска CloudZoom():
    $('.cloud-zoom, .cloud-zoom-gallery').addClass('CloudZoomNotRunning').hover(function(){
       var $this = $(this);
       if ($this.is('.CloudZoomNotRunning')){
          $this.CloudZoom().removeClass('CloudZoomNotRunning');
       };
    });
    

    Естественно, весь такой код, на .CloudZoom() основанный, следует запускать только после того, как код плагина «Cloud Zoom» ужé загружен getscript().

    Точно такую же цепочку .addClass(…).hover(…), несомненно, придётся по разу с нуля применять и на каждую такую новую иллюстрацию или галерею, которая добавлена на страницу AJAXом.
    Ответ написан
    1 комментарий
  • Безопасно ли вставлять JSON в HTML

    Mithgol
    @Mithgol
    <?php
    echo json_encode(array('tzt'=>'\'')); // выдаёт {"tzt":"'"}
    echo json_encode(array('tzt'=>'\"')); // выдаёт {"tzt":"\""}
    echo json_encode(array('tzt'=>'</script>')); // выдаёт {"tzt":"<\/script>"}
    echo json_encode(array('tzt'=>'<\\/script>')); // выдаёт {"tzt":"<\\\/script>"}
    echo json_encode(array('tzt'=>"\x0")); // выдаёт {"tzt":"\u0000"}
    ?>
    

    Кажется, нет способов нарушить JSON. Зато я только что нарушил парсер Хабрахабра: в последних «"»-кавычках (в комментарии) вместо пустого места должно отображаться «\u» и за ним сразу «0000».
    Ответ написан
    2 комментария
  • Вопрос относительно расширений для браузеров?

    Mithgol
    @Mithgol
    Если есть расширение для Firefox (к примеру), получающее данные с какого-либо сайта, может ли JS на произвольном сайте получить ту же информацию, выполнив тот же запрос?
    Вопрос задан расплывчато и допускает несколько толкований.



    Толкование первое. Если расширение Файерфокса получает данные с какого-либо сайта, то можно ли изменить JS-код расширения таким образом, чтобы получить аналогичную информацию на произвольном другом сайте?

    Может быть, можно… а может быть, и не выйдет.

    Зависит это от формы и цели запроса.

    Простой пример: есть расширение «Хабраголик», которое на Хабрахабре получает значения кармы и рейтинга через хабрахабровский API. И оно не позволит получить значение рейтинга на сайте FreeLance.Ru, выполнив тот же запрос потому что на «Фрилансе» нету ведь того же хабрахабровского API.

    Другой пример: вообразим расширение, которое получает значок сайта, используя общепринятый протокол, то есть сперва скачивает заглавную страницу, затем ищет в ней элемент <link rel="icon" …> (или даже <link rel="shortcut icon" …>) и выковыривает из него URL значка. Такое расширение позволит получить значок и с другого сайта, выполнив тот же запрос потому что протокол тот же самый.



    Толкование второе. Если расширение Файерфокса получает данные с какого-либо сайта, то можно ли снабдить некоторый произвольный другой сайт таким джаваскриптом, который будет работать на сайте и получать для этого сайта ту же информацию, которую получает JS-код расширения, работающий в Файерфоксе?

    Ответ, скорее всего, отрицательный. Во браузерах действует требование общего происхождения по отношению к джаваскрипту и тем ресурсам, к которым джаваскрипт обращается. Соответственно, если на сайте, с которого данные принимаются, не приняты специальные меры, то джаваскрипт с другого сайта не сможет получать данные.
    Ответ написан
    Комментировать
  • Изменение стиля при помощи javascript

    Mithgol
    @Mithgol
    Начнём с того, что раз уж речь идёт о переключении классов, то уместно сразу все стили записать в CSS:
    .bImg { /* сюда вписываем стиль обычного div */ }
    .vImg { /* сюда вписываем стиль div, жмякнутого мышою */ }
    
    Для элементов <div> после этого достаточно указывать классы (class="..." вместо style="...").

    Затем при помощи библиотеки jQuery можно немало упростить себе задачу.

    Во-первых, можно сделать проще HTML-код:
    1. Не придётся вписывать в него обработчики onclick, потому что они будут назначены позже, джаваскриптом.
    2. Не придётся и вписывать в него id, так как jQuery исполняет обработчики в контексте элементов: this указывает в обработчике на жмякнутый элемент.
    Было так:
    <div id="1" style="b-img" onclick="kodimg(id)">...</div>
    <div id="2" style="b-img" onclick="kodimg(id)">...</div>
    <div id="3" style="b-img" onclick="kodimg(id)">...</div>
    <div id="4" style="b-img" onclick="kodimg(id)">...</div>
    <div id="5" style="b-img" onclick="kodimg(id)">...</div>
    

    Стало так:
    <div class="bImg">...</div>
    <div class="bImg">...</div>
    <div class="bImg">...</div>
    <div class="bImg">...</div>
    <div class="bImg">...</div>
    

    Во-вторых, желаемое достигается простым JS-кодом для jQuery:
    $(function(){
       // после загрузки документа назначаем обработчики событий:
       $('div.bImg').click(function(){
          // в обработчике делаем две вещи:
          // 1) находим предыдущий жмякнутый div, отменяем жмякнутость
          $('div.vImg').removeClass('vImg').addClass('bImg');
          // 2) свежежмякнутому div придаём жмякнутость
          $(this).removeClass('bImg').addClass('vImg');
       });
    });
    
    Ответ написан
    2 комментария
  • PHP: отправить файл, скачанный с сервера1, post запросом на сервер2?

    Mithgol
    @Mithgol
    // читаем файл
    $fileString = file_get_contents('http://server1.ru/file1.jpg');
    
    // подготавливаем POST
    $params = array('http' => array(
       'method' => 'POST',
       'content' => $fileString
    ));
    $context = stream_context_create($params);
    
    // посылаем POST, получаем отклик
    if($remote = @fopen('http://server2.ru/filesend.php', 'rb', false, $context)){
       $response = @stream_get_contents($remote);
    }
    

    Первоисточник метода: «HTTP POST from PHP, without cURL» (автор Wez Furlong, код опубликован 15 ноября 2006 г., модернизирован 23 мая 2010 г.).
    Ответ написан
    1 комментарий
  • Сохранение старых URL сайта?

    Mithgol
    @Mithgol
    Это действительно можно сделать при помощи mod_rewrite. (Подробности изложены в пособии по серверу Apache.)

    Это действительно можно сделать и ещё как-нибудь. Например, при помощи mod_alias.
    Ответ написан
    Комментировать
  • ubuntu+Yota+ Firefox в автономном режиме

    Mithgol
    @Mithgol
    Также рекомендую установить расширение «Work Offline» в Firefox для того, чтобы иметь под рукою (в строке статуса) индикатор автономности режима, а не в меню лазать. Это сэкономит массу времени при проверке вышеизложенных рецептов.
    Ответ написан
    Комментировать
  • Как сделать, чтобы ширина div зависела от содержимого?

    Mithgol
    @Mithgol
    Как ужé говорилось выше, хороший перенос блочных элементов на новую строку может быть достигнут применением строчного блока. Рекомендую для этой цели использовать нижеследующий код строчного блока, вполне испытанный многомесячным применением его в одном из основных CSS-файлов в «Традиции», русской энциклопедии:
    /*  {{Строчный блок}}
     *  http://habrahabr.ru/blogs/css/96152/
     *  ↑ http://www.smashingmagazine.com/2010/06/10/50-new-useful-css-techniques-tools-and-tutorials/
     *    ↑ http://blog.mozilla.com/webdev/2009/02/20/cross-browser-inline-block/
     *      ↑ первоисточник
    */
    .lineBlock {
       border: 0; margin: 0.3em 0.15em; padding: 0;
     
       display: -moz-inline-stack; /* ← Firefox 2 backwards compatibility */
       display: inline-block;
       vertical-align: top;
     
       /* ↓ IE6 & IE7 «hasLayout» voodoo */
       zoom: 1;
       *display: inline;
       /* ↑ IE6 & IE7 starhack ← http://www.ejeliot.com/blog/63 */
    }

    Как видите, этот код составлен по принципам, обеспечивающим обратную совместимость с Firefox 2 и IE 6 и 7.

    Если рамка внешнего блока не будет совершенно прилегать ко границам внутренних строчных блоков, тогда непременно попробуйте и внешний блок также оформить в качестве строчного блока, то есть и ему назначить класс «lineBlock», описанный вышеприведённым CSS-кодом.
    Ответ написан
    1 комментарий
  • Оставлять логику PHP или отдавать JavaScript'у?

    Mithgol
    @Mithgol
    Если джаваскрипт в любом случае ужé необходим, то почему бы не использовать его по максимуму, тем разгружая сервер от исполнения кода?
    Ответ написан
    1 комментарий
  • Сглаживание шрифтов с помощью css?

    Mithgol
    @Mithgol
    Можно сделать менее резкою границу между текстом и фоном, если придать тексту тень при помощи text-shadow.
    Ответ написан
    1 комментарий
  • Сглаживание шрифтов с помощью css?

    Mithgol
    @Mithgol
    WebKit (Safari, Chrome) и Firefox поддерживают свойство text-rendering.
    Ответ написан
    Комментировать
  • Можно ли самостоятельно обновлять версию Android OS?

    Mithgol
    @Mithgol
    У меня мобильник HTC Desire, снабжённый некоторой версией Android. Производитель сперва выпустил обновление, а затем на некоторое время сокрыл его от общественности, но посредством особливого сочетания клавиш всё же можно было войти в режим, позволяющий наложить обновление (заранее предусмотрительно выкачанное) прямо с флэшёвой карточки (а не через эфир с отдалённого сайта). Этот режим предназначен для работников сервисных центров.
    Ответ написан
    Комментировать