Компресор Scheppach Airforce 5 (5906142901)

Scheppach Airforce 5 (5906142901) се оказа доста полезна придобивка. Напомпването на гуми на велосипед или кола става лесно и бързо. Маркуча е оборудван с бърза връзка, а не с навиващ се накрайник. Работи както на 220-240V, така и от запалката на колата, което го прави изключително удобен за всякакви ситуации. Помпането е бързо, като предварително с бутоните се задава целевото налягане. А резултатът – равномерно напомпени гуми. Изглежда стабилно направен и надежден компресор. Лично за мен е много полезна и готина добавка за гаража. Взех го в промоция на цена около 115лв. Кратко видео, как се справя:

Share and Enjoy !

Shares

Топ 20 съвета на Уорън Бъфет към начинаещите инвеститори

Уорън Бъфет, известен като “Оракулът от Омаха”, е един от най-успешните инвеститори в света. Неговите съвети са ценни, особено за начинаещи инвеститори. Ето топ 20 от тях:

  1. Инвестирайте в себе си: Най-добрата инвестиция е в собствените ви умения и знания. Admirals
  2. Вярвайте в собствените си решения: Развийте увереност в собствените си анализи и не се поддавайте на мнението на тълпата. BusinessGlobal
  3. Обградете се с качествени хора: Околният ви кръг влияе на вашия успех; избирайте внимателно с кого общувате.
  4. Не задържайте излишни парични средства: Парите губят стойност с времето; инвестирайте ги разумно. Admirals
  5. Диверсифицирайте разумно: Не разпределяйте прекалено; фокусирайте се върху качествени инвестиции, които разбирате. Benchmark
  6. Разбирайте бизнеса, в който инвестирате: Инвестирайте само в компании с ясен и разбираем за вас бизнес модел. BusinessGlobal
  7. Не плащайте прекалено за акции: Дори добра компания може да бъде лоша инвестиция, ако платите твърде висока цена. Benchmark
  8. Мислете дългосрочно: Инвестирайте с перспектива от поне 10 години; не се влияйте от краткосрочни колебания. Benchmark
  9. Избягвайте кредитните карти: Високите лихви могат да изядат печалбите ви; използвайте кредит разумно. Admirals
  10. Реинвестирайте печалбите: Позволете на сложната лихва да работи във ваша полза, като реинвестирате спечеленото. Admirals
  11. Бъдете търпеливи: Успехът изисква време; не очаквайте бързи печалби. Admirals
  12. Приемайте загубите философски: Грешките са неизбежни; учете се от тях и продължавайте напред. Admirals
  13. Инвестирайте в прости и разбираеми компании: Сложните бизнес модели могат да крият рискове; простотата често е ключът към успеха. Admirals
  14. Рискът идва от незнанието: Намалете риска, като се образовате и разбирате в какво инвестирате. Admirals
  15. Бъдете контраинтуитивни: Купувайте, когато другите продават, и обратно; пазарните паники могат да създадат възможности. Admirals
  16. Не следвайте тълпата: Масовите настроения често водят до грешки; доверявайте се на собствените си анализи. Benchmark
  17. Не се опитвайте да предвиждате пазара: Фокусирате се върху стойността на компаниите, а не върху пазарните прогнози. Admirals
  18. Продължавайте да се учите: Постоянното образование е ключът към успешното инвестиране. Admirals
  19. Живейте под възможностите си: Контролирайте разходите си, независимо от доходите; финансовата дисциплина е важна. Benchmark
  20. Инвестирайте в индексни фондове: За повечето инвеститори, пасивното инвестиране в широки пазарни индекси е разумен избор. Admirals

Следвайки тези съвети, начинаещите инвеститори могат да изградят стабилна основа за своите инвестиционни начинания.

Share and Enjoy !

Shares

FM честоти на радиостанции в Пловдив

  1. 88.1 – Хоризонт
  2. 89.1 – FM+
  3. 89.9 – Фокус
  4. 90.6 – Energy
  5. 91.1 – City
  6. 91.7 – Христо Ботев
  7. 94.0 – Радио Пловдив
  8. 94.6 – BG Radio
  9. 95.5 – Радио 1
  10. 97.0 – Витоша
  11. 97.7 – Magic FM
  12. 100.4 – Katra FM
  13. 102.0 – N-Joy
  14. 102.7 – BG On Air
  15. 103.3 – Fresh
  16. 103.7 – Z-Rock
  17. 105.4 – Дарик
  18. 106.0 – The Voice
  19. 106.5 – Веселина
  20. 104.3 – Радио 1 Rock

Share and Enjoy !

Shares

Linux simple useful commands

Някои полезни команди, които ползвам в Linux.

// Листване на всички директории, чието съдържание е по-малко от 100 000 байта:
du --max-depth=1 | awk '$1<100000 {print $1 "\t" $0}'

// Листване пълния път на всички файлове и селектиране на тези с най-дълъг път
find $PWD | awk 'length>200 {print length "\t" $1}'

// Конвертиране на множество png-картинки в анимиран gif
convert -delay 10 -dispose 3 -loop 0 *.png animated.gif

// Сравняване на две директории рекурсивно
diff -qr A B

Share and Enjoy !

Shares

Chrome Extension – how to. Кратък урок за създаване на Chrome добавка.

Ще се опитам да опиша простичко, как се разработва прост extension add-on за Chrome. Понякога е много полезно да се работи с подобни скриптове, особено при скрапване на web-съдържание, когато конвенционалните методи не работят или изискват прекалено много усилия.
За да се създаде подобен скрипт с потребителски интерфейс ще са ни необходими няколко файла:
manifest.json – всяка добавка (extension) за Chrome (а и за другите браузери) съдържа подобен скрипт, който предоставя важна информация на браузера. Повече тук: Manifest File Format
popup.html – стандартно наименование на файла с потребителския интерфейс, който се появява при клик с мишката върху добавката. Разбира се, можем да създадем добавка, която няма нужда от потребителски интерфейс, но в случая аз искам да имам. Името на този файл се посочва в manifest.json.
popup.js – файл, който се зарежда чрез popup.html. Можем и да нямаме подобен файл и да поместим javascript кода направо в popup.html. Но тенденциите в модерното програмиране съветват да се диференцира всичко – стилове, скриптове, html. В моя случай popup.js е двигателя на Chrome добавката. Той посочва какво, кога и къде да се активира.
getPagesSource.js – файл за инжектиране в web-страницата и извлича информацията от нея. Този файл се зарежда от popup.js.
icon.png – някаква иконка, която да се показва в листата с добавките на Chrome.

Нека създадем скрипт, който извлиза съдържанието на определени тагове, като използваме javascript функцията querySelectorAll(). Много приятна функция, която заменя в известна степен нуждата от XPath при web-скрапинга.

Да започваме! Първо създаваме manifest.json, като описваме какво прави тая добавка:

1
2
3
4
5
6
7
8
9
10
11
{
  "name": "Simple web scraper",
  "version": "1.0",
  "manifest_version": 2,
  "description": "Get content from tags through querySelector",
  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },
  "permissions": ["tabs", "<all_urls>"]
}

След това си правим потребителския интерфейс popup.html – бутончета, поленца, форми, стилове, каквото ни е кеф. В случая ще се огранича на минимума за моите нужди – текстово поле, бутон, слой за резултата:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html style=''>
<head>
 
</head>
<body style="width:400px;">
 
	<input type="text" id="selector" style="width:300px;" />
	<button id="getselector">Get Selector</button><br /><hr />
 
	<div id='message'>Injecting Script....</div>
 
	<script src='popup.js'></script>
</body>
</html>

В по-горния скрипт се вижда, че зареждам popup.js. Неговото съдържание е следното:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
chrome.runtime.onMessage.addListener(function(request, sender) {
  if (request.action == "getSlectedContent") {
    message.innerHTML = request.source;
  }
});
 
document.querySelector('#getselector').addEventListener('click', winLoad);
 
function winLoad() {
 
  var message = document.querySelector('#message');
  var inputSel = document.querySelector('#selector').value;
 
  var queryInfo = {
    active: true,
    currentWindow: true
  };
 
  chrome.tabs.query(queryInfo, function(tabs) {
    chrome.tabs.sendMessage(
      tabs[0].id, {
        customSelector: inputSel
      },
      function(response) {
    });
  });
 
  chrome.tabs.executeScript(null, {
    file: "getPageContent.js"
  }, function() {
    if (chrome.runtime.lastError) {
      message.innerText = 'There was an error injecting script : \n' + chrome.runtime.lastError.message;
    }
  });
}

Чрез popup.js зарежда javascripta, който се инжектира в страницата – getPageContent.js:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
chrome.runtime.onMessage.addListener(function(request, sender) {
  selElements(document, request.customSelector);
});
 
function selElements(document_root, s){
 
  // Tova go dobaviam zaradi kefa da polzvam foreach() v JavaScript
  var forEach = function (array, callback, scope) {
    for (var i = 0; i < array.length; i++) {
    callback.call(scope, i, array[i]);
    }
  };
 
  var myNodeList = document.querySelectorAll(s);
  var concatenateall = '';
  forEach(myNodeList, function (index, value) {
    concatenateall = concatenateall + value.innerHTML + "<hr />";
  });
 
  // return concatenateall;
  chrome.runtime.sendMessage({
    action: "getSlectedContent",
    source: concatenateall
  });
}

Това е.
Сега остава да заредим добавката в Chrome. Това става като отворим More Tools -> Extensions. След това кликаме на бутона Load unpacked и избираме директорията с файловете на нашата добавка.
На базата на тази добавка могат да се направят много други, тъй като съдържа базата за писане на добавки за Chrome.

Сорс кода може да се изтегли от тук: Chrome_Extension-Simple.zip

Кратко видео, което показва как може да се ползва добавката:

Share and Enjoy !

Shares




Realtek HD audio – both headphones and speakers

Понякога, при преинсталация на Windows, забравям от къде в Realtek HD Audio се включваха едновременно слушалите и говорителите. Обикновено слушалките са ми перманентно включени в предния панел. Не знам защо от Realtek са решили, че щом съм си включил слушалките, значи не искам да слушам през говорителите.
Ей така се оправя проблема:
Start -> Run: Realtek
Избира се приложението Realtek HD Audio Manager:
Realtek HD Audio
След това посочваме, че не искаме да детеква дали са включени или изключени слушалките, като чекваме “Disable front panel jack detection“:
Realtek HD audio - both headphones and speakers
Realtek HD audio - both headphones and speakers

Share and Enjoy !

Shares




Гепене на забранени книжки от Читанката – видео

Читанка забранено за сваляне
В читанката има много готини книжки, които искам да прочета, но за съжаление са с гриф “Произведението е временно забранено за четене. Ще бъде достъпно отново през 2018-а година.“. Много неприятно. Обаче открих, че тия книжки спокойно могат да се свалят на мобилно устройство в epub-формат през OPDS-каталога на читанка: https://chitanka.info/catalog.opds. Което си е гот. Обаче пък е неудобвство после да си преравяш телефона, за да ги прехвърлиш на компа или в архива ти с книжки на преносимия хард.
За моето решение на проблема е необходим само инсталиран Firefox.
Ето и кратко видео, как се прави пиниза:

Share and Enjoy !

Shares

Почистване на глава на мастиленоструен принтер

Няколко пъти ми се е налагало да се опитвам да отпуша дюзите на глава на мастилено струен принтер. Пробвал съм с какво ли не – спирт, дестилирана вода, лакочистител, кислородна вода, бабешко баене и други магии. Почти нищо не дава добри резултати.
Сега вече знам! Единственият начин за почистване на глава на мастиленоструен принтер става с екстракционен бензин! С клечки за уши и малко екстракционен бензин се случват чудеса!
Такъв бензин може да се вземе в Пловдив от Рай-хим. Цената е прилична – 10лв без ДДС:
Екстракционен бензин - Рай Хим
Каталог на Рай-Хим химикали 2016-та
Освен това, екстракционният бензин може да се ползва и за други неща – много добър обезмаслител, почиства петна, дори от перманентен маркер, може да извлича различни масла от растителни и животински продукти.
Защо, чак сега го разбрах…. 🙁

Share and Enjoy !

Shares