воскресенье, 29 июля 2012 г.

Чем отмыть суперклей с платмассовой и других поверхностей?

Если вы приклеивали к своему телефону что-либо на суперклей или он просто лежал не в том месте и не в то время и суперклей попал на пластмассовую поверхность, то обычный ацетон или скипидар не подойдут, т.к. они не растворят суперклей, а ацетон еще и попортит пластиковую поверхность.

Для того, чтобы смыть суперклей, нужен Димексид, продается в бутылочках в аптеках, стоит не дороже 50 рублей, нужно немножко намочить ватку, и оттирать клей, после его растворения нужно тут же протирать сухой тряпкой, т.к. раствореный суперклей снова застынет и останутся некрасивые белые пятна.

суббота, 28 июля 2012 г.

Колхозный тюнинг HTC Desire A8181 Bravo (установка крутого динамика)

Первое что мне не понравилось в десайре - слабый аккумулятор, но это частично решилось покупкой нового увеличенного аккумулятора, а вот второе - ужасный динамик, на котором не слышно ни каких нормальных рингтонов кросе стандартных пищалок.

Т.к. у меня телефон относительно убитый и особо терять во внешнем виде нечего, то я сделал вот что:

1. Достал старый сломаный ноутбук Acer и вытащил из него динамик, который сразу вмонтирован в акустическую коробку

2. Просверлил в крышке маленькое отверстие и пропустил через него провод от динамика внутрь








3. Облудил проводочки и обрезал до минимальной длины, чтобы не коротнуть плату
4. Облудил контакты на плате

5. Припаял проводочки, пропустив их сразу через 2 крышки

+ и - не были отмечены ни на плате ни на динамике, так что определение полярности было произведено вручную, при помощи аккумулятора

Прикладываем к аккумулятору, если полярность верная, то динамик сдвигается вверх, иначе вниз, но тут следует быть предельно осторожным, прислонять аккумулятор к динамику нужно очень быстро, чтобы не спалить сердечник.


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

А теперь сравните штатный и мой динамик)))

вторник, 24 июля 2012 г.

tinymce размер (ширина и высота) блока

1. По умолчанию ширина и высота блока tinymce берется от размера соответствующего <textarea>

2. Ширину и высоту можно задать при инициализации (в пикселях)
    tinyMCE.init({
         .......
        language : "ru",
        width : "500", 
        height : "200",
        ......  

3. Если вы меняете размер блока, то он сохраняется в кукисах, чтобы отключить эту штуку и сделать так, чтобы ширина при обновлении страницы возвращалась к значениям по умолчанию (которые заданы стилями или параметрами), то нужно прописать соответственную опцию в инициализацию

theme_advanced_resizing_use_cookie : false

4. Если вы пожелаете отключить возможность изменения размеров

theme_advanced_resizing: false





5. Запретить изменение ширины, но оставить возможность изменение высоты блока
theme_advanced_resize_horizontal: false


6. Задать максимальные и минимальные значения ширины или высоты
theme_advanced_resizing_max_height:25,
theme_advanced_resizing_max_width: 500,
theme_advanced_resizing_min_height: 20,
theme_advanced_resizing_min_width: 200








Более подробно читайте тут

понедельник, 23 июля 2012 г.

Ultrabook(Ультрабук) DNS(ДНС) X300 0147454/0147453 + Ubutu Linux 12.04 тачпад/touchpad Sentelic определяется как мышка

Наконец то нашлось временное решение с тачпадом Sentelic на ноутбуке DNS X300, проблема была в том, что тачпад определялся как мышка

Вывод команд был примерно такой
$ synclient 
Couldn't find synaptics properties. No synaptics driver loaded?

$ xinput 
⎡ Virtual core pointer                        id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                  id=4    [slave  pointer  (2)]
⎜   ↳ ImExPS/2 Generic Explorer Mouse             id=11    [slave  pointer 
(2)]
⎣ Virtual core keyboard                       id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard                 id=5    [slave  keyboard (3)]
    ↳ Power Button                                id=6    [slave  keyboard (3)]
    ↳ Video Bus                                   id=7    [slave  keyboard (3)]
    ↳ Power Button                                id=8    [slave  keyboard (3)]
    ↳ Sleep Button                                id=9    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard                id=10    [slave  keyboard
(3)]



Т.е. тачпад определялся как мышка ImExPS/2 Generic Explorer Mouse, временное решение такое:

1. Обновляем ядро до 3.2.0-26 (в убунте 12.04 это последнее на данный момент)

2. Открываем файл /etc/default/grub
в строку

GRUB_CMDLINE_LINUX_DEFAULT="quiet"
добавляем параметр i8024.nomux, получается что то вроде

GRUB_CMDLINE_LINUX_DEFAULT="quiet i8024.nomux"

3. Запускаем обновление загрузчика
sudo update-grub

После перезагрузки, тачпад определяется нормально и его можно настраивать утилитой synclient, а это уже выходит за рамки данной статьи, кто не сможет включить тап, круговую прокрутку и контексное меню кликом двумя пальцами - пишите в комментах и не забывайте о том, что написано в шапке этого блога зелеными буквами.


Следим за данной темой на багрепорте
https://bugzilla.kernel.org/show_bug.cgi?id=45101

вторник, 17 июля 2012 г.

WebAsyst Shop Script сравнение продуктов из разных категорий.

1. Открываем файл 
published/SC/html/scripts/modules/product/_methods/comparison_products.php
приводим начало файла к такому виду (бордовым цветом помечены те строки, которые добавил, остальное вставлено для того, чтобы вы могли сориентироваться куда вставлять)

<?php
$Register = &Register::getInstance();
/*@var $Register Register*/
$PostVars = $Register->get(VAR_POST);
$smarty = &$Register->get(VAR_SMARTY);
/*@var $smarty Smarty*/


/*Add by Pavel Belyaev*/
if (isset($PostVars["comparison_products"]))
{
    if (isset($_SESSION["comparison_products"])) $_SESSION["comparison_products"].=" ".trim($PostVars["comparison_products"]);
    else $_SESSION["comparison_products"]=trim($PostVars["comparison_products"]);
}
else
{    
    $_SESSION["comparison_products"] = "";
    header ("location:/");
}

$productIDArray = array_unique(explode( " ", $_SESSION["comparison_products"]));
$_SESSION["comparison_products"] = implode (" ", $productIDArray);
if (count($productIDArray)>8) $_SESSION["comparison_products"] = "";
/*end add*/

$showProductCategoryPath = true;
$products = array();

После этих модификаций, список сравнения не будет затираться при следующих отправках из категорий, можно из разных категорий накидать товары для сравнения, теперь есть задача сделать так, чтобы можно было почистить этот список, иначе он будет всё расти и расти, наполняясь ненужными товарами.

2. Открываем файл 
published/SC/html/scripts/templates/frontend/comparison_products.html

В конец дописываем


<center>
    <form metod="post" action="/category/1/compare/">
        <input type="submit" value="Очистить список сравнения">
    </form>
</center>





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

четверг, 12 июля 2012 г.

tinyMCE и Jquery Form Plugin

Суть проблемы такова: при отправке формы при помощи ajax плагина jquery поля, которые с tinymce редактором, отправляются устаревшие.

Для того, чтобы разобраться в проблеме, посмотрим как устроен tinymce, он скрывает (не путать с удалением) нужные <textarea> и на их месте создает свой блок с текстовым редактором. Улавливая событие отправки формы, tinymce вставляет из своих блоков текст в блок <textarea> и отправляет форму.

А плагин JqueryForm переопределяет событие отправки на себя, тем самым tinymce не успевает вписать изменения и форма отправляется со старыми данными в textarea, решение вопроса такое:

 $(document).ready(function()
{
       $('#ajax_form').submit(function() {     
            tinyMCE.triggerSave();
            $(this).ajaxSubmit();
            return false;
       })
});




P.S. (Как всегда не всё по плану)
Я не сразу нагуглил эту инфу и решил написать свой аналог tinyMCE.triggerSave(), может кому то пригодится в целях изучения jquery


function text_save_tiny (obj)
{

  $(obj).find('textarea').each( 
  function(){
  //если у textarea нет id, делаем id=name
  if (!$(this).attr('id')) $(this).attr('id',$(this).attr('name'));                $(this).val(tinyMCE.get($(this).attr('id')).getContent());
});

}

воскресенье, 8 июля 2012 г.

Разбор нетбука Eee PC 1015BX (замена жесткого диска)

Часто после падения нетбука у него происходит сотрясение жесткого диска, это выражается в виде жутких тормозов, невозможности загрузиться системе, треску при чтении. Сегодня я расскажу как менять жесткий диск в нетбуке EEE PC 1015BX

1. Убираем батарею и под ней выкручиваем 4 болтика

2. Аккуратно тоненькой отверткой, ногтем или еще чем-нибудь отковыриваем клавиатуру (она на защелках)


3. После снятия клавиатуры убираем два шлейфа (два окошка правее вентилятора), это шлейфы от тачпада и клавиатуры





4. Откручиваем болтики под клавиатурой, один из них под бумажной пломбой, будьте внимательны. Далее снимаем верхнюю крышку.

5. Слева материнская плата, справа плата с юсб портами и сетевым разъемом RJ-45, чтобы докопаться до жесткого диска, можно отсоединить 2 шлейфа, которые тянутся над ним, но я это вам не советую, т.к. шлейфы на ужасных креплениях, которые сложно будет открыть и потом обратно закрыть, так что лучше открутить маленькую плату, которая находится справа.
6. Теперь откручиваем жесткий диск, который крепится на 2х болтах, откручиваем от него крепления и прикручиваем на новый жесткий диск, потом вставляем в ноут новый жесткий и всё делаем в обратном порядке (собираем)



Кстати у этого нетбука, как и у двух аналогичных  от других производителей, которые были у меня в ремонте, ужасное охлаждение. Процессор атомовский не должен так греться, но тут он нагревается под 70 градусов практически в простое. Я думал что причина в пыли, но оказалось что у него нет радиатора как такогового, тепловая трубка припаяна к верхней крышке вентилятора а ребер нет.



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


Продолжение, как слить данные с битого жетского диска (отпишусь завтра)

среда, 4 июля 2012 г.

Динамическая подгонка блоков javascript


Извиняюсь за корявый рисунок, осваиваюсь с планшетом и гораздо удобнее быстро от руки нарисовать, чем в гимпе.

В общем суть вопроса такова, допустим у нас есть интернет-магазин, в котором на витрине товары расположены сеткой, если это сверстано на дивах, то нам нужно или делать блоки статического размера или делать их резиновыми, но группировать по строкам.

Если мы группируем по строкам блоки с товарами (отмечены голубыми квадратами), то возникает новая проблема - если наполнение в блоках разное, то они будут "плясать", т.е. один блок больше, второй меньше, третий еще меньше.

Статическая высота не подходит, т.к. если ее сделать с запасом, то страница может растянуться в длину, если сделать поменьше, то текст может не влезть.

Допустим у нас у голубых блоков класс .blue, а у оранжевых .orange


Пишем такой скрипт:
$(window).load(function()
{
   $(".blue").css('height', function(){return $(this).parent().height()-10; });
})

Где 10 - разница высоты голубого блока и оранжевого, эта разница считается по верхним и нижним padding и margin в соответствующих блоках, можно дописать скрипт, чтобы он сам узнавал эти параметры, но если стили страницы неизменны, то зачем лишние операции на стороне браузера?