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

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

Идея за разтегателно легло (extendable bed idea)

Хрумна ми една идея за разтегателно легло и реших да я запиша. Някой ден може да реализирам или да направя нещо друго на базата на тази идея. Точно такова разтегателно легло не съм виждал, а мисля, че има смисъл в подобна конструкция. Може да се ползва в ограничени пространства или като легло за гости. Боунус е възможността за монтиране на голямо чекмедже. Ренднах в Blender няколко картинки, които показват, каква точно ми е идеята за разтегателно легло.
Това е свития, компактен вариант на леглото:
Разтегателно легло, extendable bed
Разтягането става, като се издърпа лявата страница:
Разтегателно легло, extendable bed
Разтегателно легло, extendable bed
Скарата на леглото е изградена от летвички 950x40x20mm, а материал примерно липа:
Разтегателно легло, extendable bed
Разтегателно легло, extendable bed
Разтегателно легло, extendable bed
Летвичките са разположени шахматно. На плъзгащата част е монтирана ограничаваща летвичка.
Разтегателно легло, extendable bed
Разтегателно легло, extendable bed
Матрака може да е двойно сгъваем с размери на отделните части 820x950x100mm. При разпъване се получава матрак 1900x820x100mm. За по-голямо удобство, след разтягане може да се метне отгоре един топ-матрак, примерно от тук:
топ матрак
Летвичките профил 4x2cm могат да се вземат от тук:
летвички липа 40x20x2000
Корпуса на леглото е проектиран от ЛПДЧ 18mm. Страниците и дъното на чекмеджето са проектирани от суров МДФ 12mm.
Има какво още да се помисли, като например при компактния вариант на леглото има луфт от страни между матраците и страницата. Като ми дойде музата, ще помисля, как мога да го подобря.

Ето и кратко видео, което показва цялата ми идея за разтегателно легло:

If your browser doesn’t support HTML5 video. Here is a link to the video instead.

Blender файл на проекта с размери 1:1: leglo_divan-82x190cm.zip

Blender 2.79 тест на 2 нови функции – Denoising и Filmic Color Management

Днес е ден за айляк и докато се ровех за нещо интересно с изненада установих, че в новата версия на Blender са добавени 2 много готини функции. Една драстично намаля шума и времето на ренване – Denoising. Другата функция нормализира динамичния баланс, така че да се избегне прегаряне в рендваното изображение – Filmic Color Management. Засърбяха ме ръчичките да направя набързо един тест и много се накефих на новите опции!
Blender файла: Kyshticha_v_ezero-v.001.zip
Blender 3D - къщичка в езеро

Viber Export Conversation – експортиране на разговори от Viber

Viber Export Conversation
Viber е удобен чат клиент, но възможностите за експортиране на разговор са никакви. За това написах проста програмка на AutoIt, която да експортира разговор с избран потребител до по-достъпен формат. За сега експортира до Excel и HTML. Програмката се казва Viber Export Conversation. Сорса е много прост и е писан набързо, колкото да свърши работа. За сега е тествана под Windows 7 64bit. Няма си на идея, дали ще работи под други Windows-и. Ще съм благодарен, ако някой намери бъг или не може да подкара програмата и ми сподели като коментар.

Може да се изтегли от тук: Viber Export Conversation-v0.02.zip

В архива се намира и сорса за компилиране с AutoIt.
За да се ползва програмката, трябва да се разархивира. Конвертираните файлове (excel или html) се записват в директорията на exe-то.
PS: Имах желание да портна програмата до Android, но ще иска root, за да чете базата данни на Viber, а не всеки потребител иска да си рутва телефона. За това, поне за сега я оставям във версия за PC.

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

Кортизол – неговата роля при стрес, възпаление и индикации за диетична терапия

Позволих си да преведа една статия относно кортизола. Малко хора си дават сметка до каква степен този хормон участва в живота ни, как ни влияе върху заболявания, напълняването, психическото състояние, репродуктивната функция. Срещал съм много статии по темата, но рядко са засягали сериозните проблеми, които нанася нерегулираното ниво на кортизола. Статиите обикновена са били за спортисти, фитнес-маняци или хора на диета, а всъщност всички страдаме от незнанието си. Мисля, че е важно това знание да се споделя. Надявам се, да съм превел статията сравнително правилно, но бих бил благодарен, ако някой реши да ме поправи.

Кортизол – неговата роля при стрес, възпаление и индикации за диетична терапия

От Дина Арънсон, MS, RD

Кортизола е глюкокортикоид (стероиден хормон), който се произвежда от холестерол в двете надбъбречни жлези, разположени на върха на всеки бъбрек. Обикновено се освобождава в отговор на събития и обстоятелства, като сутрешно събуждане, физически упражнения и силен стрес. Кортизола има важна роля в стремежа на организма да осъществява процесите си и да поддържа стабилна и нормална хомеостазата.

Надбъбречни жлези

Кортизола има важно значение за хората, които спазват диета. Регулира енергията, като избира правилното необходимото количество въглехидрати, мазнини или протеини от които тялото се нуждае, за да задоволи нуждите си. При хронично повишение кортизолът може да има вредно въздействие върху теглото, имунната система и да увеличи риска от хронични заболявания.

Кортизола (заедно с неговия партньор адреналин) е най-известен с участието си в реакции на организма от типа “бий се или бягай” (fight-or-flight response) и се отделя в организма, за да задоволи временна незабавна нужда от енергия, за сметка на процеси, които не са жизнено необходими за оцеляване. В следствие се получават биохимични и хормонални дисбаланси (в идеалния случай), които постепенно отшумяват благодарение на хормонално задвижвана отрицателна обратна връзка.
fight-or-flight - бий се или бягай
Следния механизъм за оцеляване е типичен пример за реакция на организма при стрес:

  1. Индивидът е изправен пред стресово събитие.
  2. Следва сложна хормонална каскада, а надбъбречните жлези отделят кортизол.
  3. Кортизолът подготвя тялото за реакция на “бой или бягство”, наводнявайки го с глюкоза и осигурявайки източник на енергия за мускулите.
  4. Кортизолът възпрепятства производството на инсулин в опит да предотврати съхранението на глюкозата, осигурявайки незабавната и употреба от организма.
  5. Кортизолът стеснява артериите, докато адреналинът увеличава сърдечната честота, като и двете спомагат кръвта да се изпомпва по-бързо и по-бързо.
  6. Индивидът адресира и решава ситуацията.
  7. Нивата на хормоните се нормализират.

Та какъв е проблема? Накратко, теорията е, че с нашия постоянно подчертан бърз начин на живот, телата ни изпомпват кортизол почти постоянно, което може да причини сериозни вреди на нашето здраве. Този процес, управляван от хормоните и имунната система, идентифицира кортизола като един от многото играчи. Но изолирането на неговата роля спомага за поставянето му в контекста на много сложни механизми, които водят до специфични физиологични увреждания.

Ефекти върху тялото при повишено производство на кортизол

Дисбаланс в нивата на кръвната захар и диабет

При стресови състояния кортизолът осигурява на тялото глюкоза, като го залива с протеини чрез глюконеогенеза в черния дроб. Тази енергия може да помогне на организма при реакции от типа “бой или бягство”. Въпреки това, повишеният кортизол в дългосрочен план постоянно произвежда глюкоза, което води до повишаване на нивата на кръвната захар.

Теоретично, този механизъм увеличава риска от диабет тип 2, въпреки че причинителят остава неизвестен. Тъй като основната функция на кортизола е да се предотврати ефектът от инсулина, тялото остава в обща инсулинова резистентност, като нивата на кортизол са хронично повишени. С течение на времето панкреасът се бори да се справи с високото търсене на инсулин, нивата на глюкозата в кръвта остават високи, клетките не могат да получат нужната захар и цикълът продължава.

Нарастване на теглото и затлъстяване

Повтарящото се повишаване на кортизола може да доведе до повишаване на теглото. Един от начините е чрез съхранение на висцерални мазнини. Кортизола може да мобилизира съхранените триглицериди и да ги премести във висцерални мастни клетки (тези под мускулите, дълбоко в корема). Кортизолът също подпомага развитието на адипоцитите в зрели мастни клетки. Биохимичният процес на клетъчното ниво е свързан с ензимен контрол (11-хидроксистероид дехидрогеназа), който превръща кортизона в кортизол в мастната тъкан. Повече от тези ензими в висцералните мастни клетки могат да означават по-големи количества кортизол, продуциран на тъканно ниво, като добавят сол в раната (тъй като надбъбречните жлези вече изпомпват кортизола). Също така, висцералните мастни клетки имат повече кортизолови рецептори, отколкото подкожната мастна тъкан.

Вторият начин по който кортизолът може да участва в нарастването на теглото, ни връща отново към кръвната захар и инсулиновия проблем. Постоянно високите нива на глюкозата в кръвта, заедно с потискането на инсулина води до клетки гладни за глюкоза. Но тези клетки се нуждаят от енергия и един от начините за регулиране на енергийният баланс е чрез изпращането на гладни сигнали към мозъка. Това може да доведе до преяждане. И, разбира се, неизползваната глюкоза в крайна сметка се съхранява като телесна мазнина.

Има връзка между ефектът на кортизола върху апетита и глада за висококалорични храни. Кортизолът може директно да повлияе върху апетита, като се свързва с рецепторите на хипоталамуса в мозъка. Може да повлияе и индиректно чрез модулиране на други хормони и фактори, които реагират на стреса и за които е известно, че стимулират апетита.


Потискане на имунната система

Ролята на кортизола е да намали възпалението в организма. Но с течение на времето тези усилия потискат имунната система. Хроничните възпаления, причинени от начина на живот, като нездравословен режим на хранене и стрес, помагат да се поддържа високо ниво на кортизола, което води до поражения на имунната система. В следствие могат да се наблюдават множество проблеми: повишена чувствителност към настинки и други заболявания, повишен риск от рак, тенденция за развитие на хранителни алергии, повишен риск от стомашно-чревни проблеми и евентуално повишен риск от автоимунно заболяване.

Стомашно-чревни проблеми

Кортизолът активира симпатиковата нервна система, причинявайки всички описани по-горе физиологични реакции. По правило парасимпатиковата нервна система трябва да бъде потисната, тъй като двете системи не могат да работят едновременно. Парасимпатиковата нервна система се стимулира по време на спокойни дейности като хранене, което е важно, защото тялото най-добре използва енергията на храната. Ензимите и хормоните, контролиращи храносмилането и абсорбцията, така работят най-добре.

Представете си какво се случва в тяло, натоварено с кортизол, когато се консумира храна: храносмилането и абсорбцията са компрометирани, развива се лошо храносмилане и лигавицата се раздразнява и възпалява. Това може да ви звучи познато. Язвите са по-чести по време на стресови ситуации и много хора със синдром на раздразнени черва и колит съобщават за подобрение на симптомите си, когато овладеят стреса. И, разбира се, полученото възпаление на лигавицата води до повишено производство на кортизол, а цикълът продължава тъй като тялото все повече се затормозява.

Сърдечно-съдови заболявания

Както видяхме, кортизолът свива кръвоносните съдове и увеличава кръвното налягане, за да увеличи доставянето на кръв богата на кислород. Това е предимство при ситуации на “бой или бягство”, но не и за постоянно. С течение на времето такова артериално свиване и високо кръвно налягане могат да доведат до увреждане на съдовете и натрупване на плаки – перфектният сценарий за сърдечен удар. Това може да обясни защо личностите от тип А (и новопризнатата тип D) са изложени на значително по-голям риск от сърдечни заболявания, отколкото по-спокойните личности от тип В.

Проблеми с фертилността (способност за зачеване)

Повишеният кортизол, свързан с продължителен стрес, може да доведе до еректилна дисфункция или нарушаване на нормалната овулация и менструалния цикъл. Освен това, андрогенните полови хормони се произвеждат в същите жлези като кортизола и адреналина, така че излишната продукция на кортизол може да възпрепятства оптималното производство на тези полови хормони.

Други проблеми

Дългосрочният стрес и повишеният кортизол също могат да бъдат свързани с безсъние, синдром на хроничната умора, нарушения на щитовидната жлеза, деменция, депресия и други състояния.

Оценка на нивата на кортизола

Най-предпочитания тест за функцията на надбъбречните жлези е чрез изследването на слюнка – индиректен стрес индекс (ASI). Това е неинвазивна, надеждна индикация за нива на кортизол в организма. Резултатите от този тест трябва да бъдат разгледани и интерпретирани от специалист, тъй като трябва да бъдат отчетени множество фактори: възраст, пол, време на менструален цикъл, бременност, кърмене, пушене, приемане на медикаменти, консумация на кофеин и алкохол, калориен прием и др..

Индиректният стрес индекс ASI се предлага като комплект за ползване в домашни условия. В определени моменти се взимат четири проби на слюнка и след това се изпращат в лаборатория за анализ. Същият тест, освен кортизол, измерва още дехидроепиандростерон, антитела срещу глиадин, маркер за чревно възпаление, Candida инфекции и чувствителност към съдържащи глутен зърна. Трябва да се обърне внимание, че този тест не може да определи окончателно чувствителността към глутен.

Тестовете, провеждани от медицински специалист в здравно заведение се считат за недостатъчно достоверни, поради няколко причини – изследва се кортизола само в даден момент, самото отиване на лекар може да доведе до стрес и съответно повишени нива на кортизол, в такива случаи обикновено се взима кръв и се изследва общото ниво на хормоните, вместо на отделни компоненти.

Добрата новина

От казаното до тук изглежда, че хората подложени на стрес са обречени на влошено здраве, въпреки техните добри намерения. За щастие могат да се направят много неща за да се обърне цикъла на влошаване на здравето. Най-добрия подход за поддържане на оптимални нивата на кортизола е чрез управлението на стреса и оптимизиране на хранителната диета.

Управление на стреса

Винаги могат да се препоръчат стратегии за ефективно управление на стреса. Книги като “The Source” на Woodson Merrell дават мощни и всеобхватни насоки за премахване на стреса и възстановяване на оптимално здраве. Някои стратегии включват осигуряване на повече и по-качествен сън, работа върху дишането, акупунктура, кардио и релаксиращи упражнения, справяне с психологически и емоционални проблеми. Намаляването на стреса често изисква комплексен подход.

Антивъзпалителната диета

Системното възпаление на организма, което беше споменато по-горе, причинява повишени нива на кортизол. Ако можем да намалим възпалението в организма и да сведем до минимум стреса, в следствие ще имаме понижени нива на кортизола, което води до намаляване на риска от хронични заболявания и подобряване на здравето. Биохимичните процеси, които водят до намаляване на възпалението, са сложни и многостранни, но като експерти по диетичното хранене и начина на живот ние можем да видим значителна разлика.

Няма една универсална, перфектна, противовъзпалителна диета, която да управлява дадено състояние. Въпреки това, въз основа на познатите свойства на храните и клинични изследвания, ние можем да създадем нисковъзпалителна диета, която да подобряваме леко с течение на времето. Очевидно максимизирането на противовъзпалителните храни и минимизирането на провъзпалителните храни е голяма стъпка към контролиране на възпалението.

  • Начина на живот и хранене обикновено са най-важните модулатори на възпалението на организма. По-долу е даден общ списък на факторите, които имат най-голямо влияние:
  • високо гликемично натоварване;
  • наситени и транс мастни киселини;
  • кофеин;
  • алкохол в излишък;
  • недостатъчен прием на микронутриенти и антиоксиданти;
  • диета с ниско съдържание на фибри;
  • заседнал начин на живот; и
  • наднормено тегло

За да се сведе до минимум възпалението, се препоръчва следното:

  • диета с нисък гликемичен товар;
  • елиминиране на транс-мазнини и минимален прием на наситени мазнини;
  • елиминиране или намаляване на кофеина;
  • умерен прием на алкохол или изобщо без;
  • увеличаване на консумацията на свежи растителни храни, за да се постигне максимален прием на фибри, антиоксиданти и фитонутриенти: със зеленчуци, плодове, цели зърна, ядки, семена и боб;
  • удовлетворяване на препоръчителния прием на омега-3 мастни киселини;
  • редовни физически упражнения;
  • пробиотици, ако се налага;

Ясно е, че това са само насоки. Терапевтичните хранителни препоръки трябва да бъдат персонализирани според състоянието, предпочитанията и целите на всеки индивид.

Трябва да се има предвид, че лекарства като нестероидни противовъзпалителни средства временно облекчават възпалението, но дългосрочната употреба може да причини вреда в течение на времето и дори да изостри системното възпаление.

Резюме

Кортизолът е очарователен хормон, който е важен за науката за храненето на много нива. Разбирането на науката за него, включително поведението и взаимоотношенията му с други биохимични компоненти, имунната система и здравните резултати, е от решаващо значение за успеха при лечението на хора, които търсят хранителна интервенция за стрес, болест, умора и други често срещани оплаквания.

Прилагането на целеви подходи по отношение на диетата и начина на живот е изключително мощен начин за намаляване на стреса, намаляване на възпалението и намаляване на риска от заболяване и хронично заболяване. Вярно е, че много биохимични процеси, включващи кортизол и други хормони, стрес и възпаление и тяхното въздействие върху здравето и риска от заболявания, са комплексни и сложни. Терапевтичната диета и стратегиите за начина на живот обаче не са такива. Колкото повече научаваме за начина, по който тялото отговаря на изискванията към него, както и за изключителната му лечебна сила, толкова повече се оценяваме като професионалисти, които могат ефективно да променят живота на хората, като подобряват здравето, вдъхновяват промените и увеличават дълголетието.

Дина Аросън, MS, RD, управител на Welltech Solutions, компания за консултации по хранене и технологии.

Източник: Cortisol — Its Role in Stress, Inflammation, and Indications for Diet Therapy; By Dina Aronson, MS, RD

Bootstrap and tinyMCE examples

Bootstrap и tinyMCE са ми редовна комбинация. И за да не откривам топлата вода всеки път, ще постна малко подсетки с прост мой плъгин за tinyMCE.
Важно е да се промени javascript променливата current_host.
Bootstrap 3 and tinyMCE editor - examples
Demo
Download

Обединяване на хоризонтално и вертикално позиционирано видео с ffmpeg

Понякога правя върховната глупост да снимам видео с телефона, като го държа вертикално. После се усещам и го завъртам както си трябва и правя още едно видео. А накрая ми се иска да ги обединя. Намирането на безплатен софтуер, който да слива подобен тип вертикално и хоризонтално разположени видео файлове ме затрудни. За това се върнах отново към класиката ffmpeg.

Стъпките за обединяване на 2 подобни видео файла са следните:

  • двата файла трябва да са с едни и същи кодеци
  • конвертиране на 2-та файла до TS-формат
  • напасване на двата файла по широчина и височина, като се добавя padding (отстояния) в картината на файла, сниман вертикално
  • обединяване на двата файла

Ще си помогна с един пример:

ffmpeg video join - vertical and horisontal

video1.mp4 – хоризонтално разположено с размери на картината 1920×1080.
video2.mp4 – вертикално разположено с размери на картината 1080×1920.
out_full.mp4 – изходния файл, след обединяването на двата

Използвам по-долните команди за ffmpeg са тествани под Win7, но вероятно ще работят и под Linux.

1
2
3
4
ffmpeg -i video1.mp4 -q 1 -f mpegts out1.ts
ffmpeg -i video2.mp4 -q 1 -vf "scale=iw*min(1920/iw\,1080/ih):ih*min(1920/iw\,1080/ih),pad=1920:1080:(1920-iw)/2:(1080-ih)/2" -f mpegts out2.ts
 
ffmpeg -i "concat:out1.ts|out2.ts"  -c:a aac -b:a 128k -vcodec libx264 -preset slow out_full.mp4

Snowman – Blender 3D

Тъй като тази Коледа няма сняг и на мен и дъщеря ми ужасно ни липсва, решихме да си нарисуваме поне снежен човек.
Весели празници на всички!
Blender 3D - snowman

Сорс файл: Snejen_chovek-blender.zip
Рендер: GPU, Cycles render

Безжично сваляне и качване на файлове от и към телефона – видео урок

Тъй като локалната мрежа в къщи е малко сложно изградена, ще споделя каква техника ползвам, за да запазвам снимки, клипчета и други файлове от телефоните, а и за да си качвам музика, филмчета, карти за GPS и т.н. Мрежата ми е изградена от един кабелен рутер към който са вързани директно PC и Wi-Fi рутер. Ако PC-то ми беше вързано към Wi-Fi рутера, почти нямаше да има смисъл от тази статия, защото можех да обменям файлове директно с IE. В случая се налага да ползвам FTP-сървар, който осигурява достъпа. За пример ще кача на телефона музикална класация top 100 на Billboard за 2017 – свалял съм я от някакъв торент.

Необходими инструменти:

  • Baby FTP Server за Windows. Може да се ползва и друг FTP-сървар, но този е толкова прост и стабилен, че няма да отварям дума за други варианти. Дори не се инсталира, а само се накликва едно exe.
  • ES File Explorer File Manager – файлов експлорер за Android, набъкан яко с всякакви инструменти, включително текстов редактор и простички медиа-плеъри. Но най-вече защото има една каруца варианта за връзка с други устройства, като аз ще ползвам FTP-клиента. Това се вижда и на видеото по-долу.

Стартира се exe-то на Baby FTP Server от компютъра, след това виждате кое ви е локалното IP за вътрешната мрежа – през него излъчва FTP-сървъра и ще е необходимо при настройването на FTP-клиента от телефона. FTP-протокола обикновено слуша на порт 21.
След това се инсталира Es File Explorer на телефона (таблета, телевизора или каквато там пущина ползвате) и си стартирате FTP-клиента. Не забелязах някаква разлика в пасивния и активния режим за ftp, така че може би няма значение. Избира се опцията Anonymous, защото BabyFTP е доволно прост, той просто дава достъп до всякакви анонимници и лентяи в локалната мрежа.

Това е видео урока, за това как безжично да си обменяте файлове между телефона и компютъра:

ПС: Shift + RMB – означава да натиснете SHIFT на клавиатурата и след това десния бутон на мишката, така се вика command prompt на Winblows в текущата директория.