<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>bisko.be</title><description>Личен блог и текстове от bisko – мисли за разработката, приключенията и живота.</description><link>https://bisko.be/bg/</link><language>bg</language><item><title>Стартиране на Ollama със стари видеокарти на CachyOS</title><link>https://bisko.be/bg/posts/dev/running-ollama-with-older-gpus-on-cachyos/</link><guid isPermaLink="true">https://bisko.be/bg/posts/dev/running-ollama-with-older-gpus-on-cachyos/</guid><description>Днес мигрирах Windows 11 виртуалната си машина към Linux, за да имам по-голяма гъвкавост със сървисите, които върват на нея, и се сблъсках с проблем – Ollama не можеше да работи на старите ми видеокарти – GTX1070 и GTX970</description><pubDate>Sat, 28 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3 id=&quot;tldr&quot;&gt;TL;DR;&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;ollama-cuda&lt;/code&gt; на CachyOS идва (към момента) с поддръжка само за &lt;code&gt;compute &gt;= 7.5&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Ако имате по-стари видеокарти с по-ранен &lt;code&gt;compute&lt;/code&gt;, ТРЯБВА да направите едно от 2 неща:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Да компилирате &lt;code&gt;ollama-cuda&lt;/code&gt; от сорс кода, с поддръжка за по-старите compute цели&lt;/li&gt;
&lt;li&gt;Да инсталирате &lt;code&gt;ollama-vulkan&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Аз избрах &lt;code&gt;ollama-vulkan&lt;/code&gt; и работи чудесно!&lt;/p&gt;
&lt;h3 id=&quot;време-за-история&quot;&gt;Време за история&lt;/h3&gt;
&lt;p&gt;Днес ме споходи вдъхновението най-накрая да изключа Windows 11 виртуалната си машина и да я мигрирам към Linux.&lt;/p&gt;
&lt;p&gt;Изискванията бяха да мога да пускам:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ollama - за магия с локални модели&lt;/li&gt;
&lt;li&gt;Docker - за отдалечена разработка&lt;/li&gt;
&lt;li&gt;Steam - за игра на игри&lt;/li&gt;
&lt;li&gt;Jellyfin - за архива с домашни видеа&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Сега ще се фокусирам само върху Ollama, защото беше интересно преживяване и ме накара да се замисля защо нещата не са по-очевидни.&lt;/p&gt;
&lt;p&gt;В машината има 2 видеокарти:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GTX 1070 - 8GB&lt;/li&gt;
&lt;li&gt;GTX 970 - 4GB&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Исках да пусна Ollama на тях, за да си поиграя с локални модели и да видя как мога да го интегрирам в някои проекти. Например - анонимизиране на данни локално, неразрушителна имплементация на OpenClaw, която пасва на моите случаи на употреба, локален OCR за документи, които сканирам с телефона си, автоматизиране на някои неща в ежедневното управление на дома.&lt;/p&gt;
&lt;p&gt;Така че естествено инсталирах &lt;code&gt;ollama&lt;/code&gt; и &lt;code&gt;ollama-cuda&lt;/code&gt;, тъй като имам 2 Nvidia видеокарти, очаквайки, че ще работи без проблем, защото само преди няколко минути работеше на Windows.&lt;/p&gt;
&lt;p&gt;Стартирах Ollama, заредих &lt;code&gt;qwen3:8b&lt;/code&gt; за бърз експеримент и… работеше на процесора 🤔&lt;/p&gt;
&lt;p&gt;Видеокартите бяха напълно способни да го удържат във VRAM, но по някаква причина Ollama избираше да го върти на процесора.&lt;/p&gt;
&lt;p&gt;След като се опитах да разбера от логовете, помолих Claude да ми помогне малко и той стигна до доста обезкуражаващото откритие:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;The&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; logs&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; tell&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; the&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; story&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; clearly.&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Both&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; your&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; GPUs&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; are&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; detected&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; but&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; then&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; filtered&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; out&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; because&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; they&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; fail&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; CUDA&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; initialization:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  &quot;filtering device which didn&apos;t fully initialize&quot;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; id=GPU-eb132a13-b9f4-40e3-d85d-60f211dfd21e&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; ...&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; library=CUDA&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  &quot;filtering device which didn&apos;t fully initialize&quot;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; id=GPU-550263c8-37e2-2a25-c0b6-10cc7511ed20&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; ...&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; library=CUDA&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  The&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; reason&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; is&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; the&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; CUDA&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; library&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; bundled&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; with&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Ollama&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 0.17.4&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; was&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; compiled&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; for&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; these&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; architectures&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; only:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  CUDA.0.ARCHS&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;=750,800,860,870,880,890,900,1000,1030,1100,1200,1210&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  The&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; minimum&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; supported&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; compute&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; capability&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; is&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 7.5&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (Turing &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; RTX&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; 20xx&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; series&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;). Your GPUs are older than that:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  ┌──────────┬────────────────────┬──────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  │&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;   GPU&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    │&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Compute&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Capability&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; │&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Architecture&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  ├──────────┼────────────────────┼──────────────┤&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  │&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; GTX&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 1070&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; │&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 6.1&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;                │&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Pascal&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;       │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  ├──────────┼────────────────────┼──────────────┤&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  │&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; GTX&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 970&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  │&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 5.2&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;                │&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Maxwell&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;      │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  └──────────┴────────────────────┴──────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  Neither&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; is&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; in&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; the&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; supported&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; list,&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; so&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; CUDA&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; initialization&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; fails&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; for&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; both,&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; and&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Ollama&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; falls&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; back&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; CPU-only&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; inference.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  Your&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; options:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  1.&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Downgrade&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Ollama&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; an&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; older&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; version&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; that&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; still&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; included&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Pascal/Maxwell&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; support&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (pre-0.6.x &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;era&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; had&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; broader&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; arch&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; coverage,&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; but&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; check&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; release&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; notes&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; for&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; specifics&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  2.&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Build&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Ollama&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; from&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; source&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; with&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; CUDA_ARCHITECTURES=&quot;52;61;75;80;86&quot;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; include&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; your&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; GPU&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; architectures.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  3.&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Upgrade&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; GPUs&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; at&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; least&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; an&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; RTX&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 2060&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; or&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; newer&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (compute &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;7.5+&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Това малко ме разочарова, защото искам да използвам видеокартите максимално, преди да мина на нова.&lt;/p&gt;
&lt;p&gt;Не исках наистина да компилирам Ollama от сорс кода, тъй като трябва да поддържа нещата от кутията, и бях много объркан защо не го прави, при положение че на Windows инсталацията поддържаше тези архитектури.&lt;/p&gt;
&lt;p&gt;Тези карти дори бяха показани като поддържани на сайта на Ollama!&lt;/p&gt;
&lt;p&gt;За да скъся дългата история с ровене в Google:&lt;/p&gt;
&lt;p&gt;Оказва се, че &lt;code&gt;ollama-cuda&lt;/code&gt; идва точно с изискванията, изброени по-горе… а съветът беше да се инсталира &lt;code&gt;ollama-vulkan&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;След като го направих, всичко заработи много гладко!&lt;/p&gt;</content:encoded><category>dev</category><category>linux</category><category>llm</category><category>ollama</category><category>cachyos</category><category>vulcan</category><category>cuda</category></item><item><title>[Linux] Възстановяване на прекъсната сесия на `apt dist-upgrade`</title><link>https://bisko.be/bg/posts/dev/linux-recovering-a-disconnected-apt-dist-upgrade-session/</link><guid isPermaLink="true">https://bisko.be/bg/posts/dev/linux-recovering-a-disconnected-apt-dist-upgrade-session/</guid><description>Днес обновявах инсталацията си на Proxmox отдалечено през вградената конзола, но забравих какво правя и затворих таба по средата. Това доведе до това да не мога да се свържа отново, защото пакетите вече се обновяваха на заден план, а обновяването беше задало въпрос за замяна на файл и чакаше отговор</description><pubDate>Wed, 23 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Днес обновявах инсталацията си на Proxmox отдалечено през вградената конзола, но забравих какво правя и затворих таба по средата.&lt;/p&gt;
&lt;p&gt;Това доведе до това да не мога да се свържа отново, защото пакетите вече се обновяваха на заден план, а обновяването беше задало въпрос за замяна на файл и чакаше моя отговор.&lt;/p&gt;
&lt;p&gt;Така че можех да вляза през SSH, но не можех да направя нищо, понеже процесът все още чакаше отговор в конзола, към която не можех да се свържа, тъй като интерфейсът не се отваряше.&lt;/p&gt;
&lt;p&gt;След кратко ровене попаднах на &lt;a href=&quot;https://serverfault.com/questions/19634/how-to-reconnect-to-a-disconnected-ssh-session&quot;&gt;тема в Serverfault&lt;/a&gt;, в която се споменаваше използването на &lt;code&gt;reptyr&lt;/code&gt;, за да поемеш терминална сесия през SSH.&lt;/p&gt;
&lt;p&gt;Описвам тук какво точно направих, за да си върна сесията и да завърша обновяването:&lt;/p&gt;
&lt;p&gt;От &lt;a href=&quot;https://serverfault.com/questions/19634/how-to-reconnect-to-a-disconnected-ssh-session#comment1506308_979180&quot;&gt;този коментар&lt;/a&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;git&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; clone&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; https://github.com/nelhage/reptyr&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; reptyr&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;make&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Това инсталира &lt;code&gt;reptyr&lt;/code&gt; на машината.&lt;/p&gt;
&lt;p&gt;После потърсих всички отворени сесии с &lt;code&gt;ps ax | grep pts&lt;/code&gt;, за да намеря процеса, който ми трябваше.&lt;/p&gt;
&lt;p&gt;След това намерих най-горния родителски процес в дървото на извикванията, на който е зададен &lt;code&gt;pts&lt;/code&gt;, и се закачих за него чрез неговия PID:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;reptyr&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -T&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 1390511&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;И така успях да завърша обновяването! 🎉&lt;/p&gt;</content:encoded><category>dev</category><category>Uncategorized</category></item><item><title>Растение хибискус под утринните лъчи</title><link>https://bisko.be/bg/posts/blog/hibiscus-plant-under-the-morning-rays/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/hibiscus-plant-under-the-morning-rays/</guid><pubDate>Sun, 21 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Голям червен цвят на хибискус на фокус с пъпки над него, на фона на синьо небе с тънки облаци и къщи от селото зад него&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_2327-b97d8968.C7nMUQ33_Z1YnOwk.webp&quot; &gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>flower</category><category>flowers</category><category>nature</category></item><item><title>Таймлапс: Порто край реката</title><link>https://bisko.be/bg/posts/blog/timelapse-porto-by-the-river/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/timelapse-porto-by-the-river/</guid><description>Преди няколко дни имахме среща на екипа в Порто. Най-накрая се видях на живо с няколко колеги, които през последните две години бях виждал само по Zoom. Прекарахме няколко дни в страхотното коуъркинг пространство Porto I/O Riverside. Мястото има невероятен балкон, на който щедро се наслаждавахме и на който проведохме</description><pubDate>Tue, 07 Jun 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Преди няколко дни имахме среща на екипа в &lt;a href=&quot;https://en.wikipedia.org/wiki/Porto&quot;&gt;Порто&lt;/a&gt;. Най-накрая се видях на живо с няколко колеги, които през последните две години бях виждал само по Zoom.&lt;/p&gt;
&lt;p&gt;Прекарахме няколко дни в страхотното коуъркинг пространство &lt;a href=&quot;https://porto.io/en/location/riverside/&quot;&gt;Porto I/O Riverside&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Мястото има невероятен балкон, на който щедро се наслаждавахме и на който проведохме доста продуктивни разговори, когато не се губехме твърде много в зяпане по корабчетата, които се движеха по реката.&lt;/p&gt;
&lt;p&gt;В един от онези моменти, когато просто седяхме тихо и се любувахме на гледката, успях да хвана доста красив таймлапс.&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>Photography</category><category>Timelapse</category><category>travel</category><category>boats</category><category>Porto</category><category>Portugal</category><category>river</category><category>roofs</category></item><item><title>[Linux] Syncthing – файлова система само за четене при стартиране като услуга</title><link>https://bisko.be/bg/posts/dev/linux-syncthing-read-only-file-system-when-running-as-service/</link><guid isPermaLink="true">https://bisko.be/bg/posts/dev/linux-syncthing-read-only-file-system-when-running-as-service/</guid><description>От няколко месеца използвам Syncthing, за да синхронизирам работното си копие с локален dev сървър. В началото го стартирах ръчно през CLI след логване. Работеше добре, така че не се замислих, когато реших да го пусна като услуга.</description><pubDate>Wed, 06 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;От няколко месеца използвам &lt;a href=&quot;https://syncthing.net/&quot;&gt;Syncthing&lt;/a&gt;, за да синхронизирам работното си копие с локален dev сървър.&lt;/p&gt;
&lt;p&gt;В началото го стартирах ръчно през CLI след логване. Работеше добре, така че не се замислих, когато реших да го пусна като услуга. Стартира, синхронизира малко данни, всичко беше наред.&lt;/p&gt;
&lt;p&gt;Докато не спря да бъде, разбира се! 🙂&lt;/p&gt;
&lt;p&gt;Оказва се, че не съм забелязал куп грешки в логовете, които споменават, че файловата система на dev сървъра е само за четене и това кара Syncthing да не синхронизира нищо.&lt;/p&gt;
&lt;p&gt;Мислех, че е бъг и просто показва &lt;code&gt;Out of Sync&lt;/code&gt; за папките, но всъщност си синхронизираше. Е, грешах.&lt;/p&gt;
&lt;p&gt;След няколко часа дебъгване и без никакви следи във форумите след няколко търсения в Google, попаднах на &lt;a href=&quot;https://wiki.archlinux.org/title/syncthing#read-only_file_system_error_on_/etc_although_run_as_root&quot;&gt;статия за Syncthing в ArchWiki&lt;/a&gt;, която описваше точно моя случай:&lt;/p&gt;
&lt;p&gt;read-only file system error on /etc although run as root&lt;/p&gt;
&lt;p&gt;Това беше точно моят случай, с тази разлика, че проблемната папка не беше &lt;code&gt;/etc&lt;/code&gt;, а &lt;code&gt;/usr/local/src&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Е, след като прочетох какво пише, излезе, че ако стартираш Syncthing (или каквото и да е) през &lt;code&gt;systemd&lt;/code&gt; и имаш зададено &lt;code&gt;ProtectSystem&lt;/code&gt; на &lt;code&gt;full&lt;/code&gt; за услугата, някои директории стават само за четене по подразбиране. &lt;code&gt;/usr&lt;/code&gt; е една от тези директории.&lt;/p&gt;
&lt;p&gt;За да го поправиш, трябва да добавиш нов ред в конфигурацията на услугата и да я рестартираш (и да изпълниш &lt;code&gt;daemon-reload&lt;/code&gt;):&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ReadWritePaths=/usr/local/src&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;След това Syncthing би трябвало да работи нормално.&lt;/p&gt;</content:encoded><category>dev</category><category>Homelab</category><category>linux</category><category>permissions</category><category>read-only</category><category>syncthing</category><category>systemd</category></item><item><title>Достъпът е отказан</title><link>https://bisko.be/bg/posts/blog/access-denied/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/access-denied/</guid><pubDate>Sat, 31 Jul 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Три оси пълзят около ръждива дупка в метален стълб на порта, като една от тях е кацнала върху ключ, останал в ключалката, до бели цветя&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_4506-8e7e236d.BcqhatkL_zWajt.webp&quot; &gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>door</category><category>insect</category><category>insects</category><category>key</category><category>lock</category><category>nature</category><category>wasp</category><category>wasps</category></item><item><title>Лавандулов залез</title><link>https://bisko.be/bg/posts/blog/lavender-sunset/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/lavender-sunset/</guid><pubDate>Sat, 03 Jul 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Силуети на контражурно осветени класове лавандула, а ниското слънце грее зад най-високото стъбло на фона на синьо небе и тъмни дървета&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/image_534908fa-cab6-4233-832b-e401bab27a30.img_3963-ccdc9838.CHRt9-9J_ZxRqVE.webp&quot; &gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>Uncategorized</category><category>flower</category><category>sun</category></item><item><title>Таймлапс: Буря, която се задава</title><link>https://bisko.be/bg/posts/blog/timelapse-a-storm-rolling-over/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/timelapse-a-storm-rolling-over/</guid><pubDate>Sat, 26 Jun 2021 00:00:00 GMT</pubDate><content:encoded/><category>blog</category><category>Photography</category><category>clouds</category><category>storm</category><category>Timelapse</category><category>weather</category></item><item><title>Слънчеви лъчи върху жълтото</title><link>https://bisko.be/bg/posts/blog/sunrays-on-yellow/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/sunrays-on-yellow/</guid><pubDate>Sat, 05 Jun 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Огрени от слънцето жълти цветя на вечерна иглика с нежни тичинки на фона на размазана зелена шума и ярко небе&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/image_42f35f6f-2341-47f4-a7a0-eb0a75d3678f.img_3167-8b4daa1a.WUo3hBS8_BI9FB.webp&quot; &gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>flower</category><category>sunrays</category><category>yellow</category></item><item><title>Рози</title><link>https://bisko.be/bg/posts/blog/roses/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/roses/</guid><pubDate>Sun, 23 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Ярко червени рози в пълен разцвет и пъпки на катерлива роза на фона на синьо небе, с ръба на покрив отдясно&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_2866-bd30e710.fEDlZ8s7_Z3rCvg.webp&quot; &gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Uncategorized</category></item><item><title>Облачно с условия за лалета</title><link>https://bisko.be/bg/posts/blog/cloudy-with-a-chance-of-tulips/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/cloudy-with-a-chance-of-tulips/</guid><description>Спомен от 2013 г., когато бях на гости на дядо ми в селото. Намерих това хубаво лале, откъснато и захвърлено край пътя.</description><pubDate>Mon, 03 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Червено лале, огряно отзад от слънцето, гледано отдолу на фона на наситеносиньо небе с бели облаци, а до него се подава зелено листо&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1936&quot; height=&quot;2592&quot; src=&quot;/_astro/img_1645-bb728269.BHDQHNQt_1vNnmk.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Спомен от 2013 г., когато бях на гости на дядо ми в селото. Намерих това хубаво лале, откъснато и захвърлено край пътя.&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>clouds</category><category>flower</category><category>flowers</category><category>nature</category><category>red</category><category>sky</category><category>travel</category></item><item><title>[Linux] Изпълнение на множество команди на множество сървъри паралелно</title><link>https://bisko.be/bg/posts/dev/linux-running-multiple-commands-on-multiple-servers-in-parallel/</link><guid isPermaLink="true">https://bisko.be/bg/posts/dev/linux-running-multiple-commands-on-multiple-servers-in-parallel/</guid><description>Имам клъстер от Raspberry Pi-та вкъщи, на които върви Docker Swarm. За да ги държа в крак, те използват една и съща конфигурация – потребители, версии на Docker и т.н. Понякога някои от обновленията изискват да се изпълни едно и също нещо на всички възли в клъстера – например – създаване на нова Docker macvlan мрежа. За да</description><pubDate>Mon, 19 Apr 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Имам клъстер от Raspberry Pi-та вкъщи, на които върви Docker Swarm. За да ги държа в крак, те използват една и съща конфигурация – потребители, версии на Docker и т.н.&lt;/p&gt;
&lt;p&gt;Понякога някои от обновленията изискват да се изпълни едно и също нещо на всички възли в клъстера – например – създаване на нова Docker macvlan мрежа.&lt;/p&gt;
&lt;p&gt;За да стане това, човек трябва или да изпълни ръчно едни и същи команди на всички възли, като влиза с &lt;strong&gt;ssh&lt;/strong&gt; във всеки един от тях, изпълнява командите и преминава към следващия.&lt;/p&gt;
&lt;p&gt;Тъй като се опитвам в дългосрочен план да си намалям работата и да направя нещата възможно най-подредени, започнах да търся начини да изпълнявам команди на всички възли едновременно.&lt;/p&gt;
&lt;h3 id=&quot;итерация-1-собствен-python-скрипт&quot;&gt;Итерация 1: Собствен Python скрипт&lt;/h3&gt;
&lt;p&gt;Първата ми идея беше да напиша собствен Python скрипт. От една страна, така щях да науча Python малко по-добре, а от друга – не можах да намеря добър начин да изпълнявам команди по по-„роден“ начин.&lt;/p&gt;
&lt;p&gt;Както може да се очаква (хей, все още имам малко опит с езика 🙂 ), много бързо се превърна в раздут хаос и беше много податлив на счупвания.&lt;/p&gt;
&lt;p&gt;Трябваше да намеря друг начин, без да се налага да си припомням наново какво съм направил преди 3 седмици и какво се е счупило миналия път.&lt;/p&gt;
&lt;h3 id=&quot;итерация-2-pssh&quot;&gt;Итерация 2: &lt;code&gt;pssh&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Ровейки в Google, попаднах на &lt;code&gt;[pssh](https://linux.die.net/man/1/pssh)&lt;/code&gt;, който може да изпълнява неща паралелно през SSH.&lt;/p&gt;
&lt;p&gt;Като цяло беше доста лесно да го пусна и да проработи.&lt;/p&gt;
&lt;p&gt;Проблемът беше, че за част от нещата, които исках да правя, ми трябваше &lt;code&gt;sudo&lt;/code&gt;. Подаването на пароли насам-натам не беше най-доброто решение, така че пак трябваше да потърся как да изпратя &lt;code&gt;sudo&lt;/code&gt; паролата, когато отдалеченият сървър я поиска.&lt;/p&gt;
&lt;p&gt;Оказва се, че е доста лесно, ако попаднеш на правилния &lt;a href=&quot;https://unix.stackexchange.com/a/487558/134974&quot;&gt;коментар в StackOverflow&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;кратката-версия-е&quot;&gt;Кратката версия е:&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;stty&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -echo&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;Password: &quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;read&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; PASS&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;stty&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;${&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;PASS&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;}&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;pssh&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -h&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;HOSTFIL&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;E&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -o&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; /tmp/output&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -t&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -I&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;`&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;cat&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; ./commands.sh`&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Частта &lt;code&gt;-I &quot;`cat ./commands.sh`&quot;&lt;/code&gt; трябва да се напише точно така (заобиколена с кавички и обратни кавички), иначе командите не се изпълняват правилно. Паролата ще бъде изпратена като отделна команда, а не като вход към &lt;strong&gt;sudo&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Другата уловка е, че заради начина, по който е направено всичко това, &lt;code&gt;sudo&lt;/code&gt; трябва да се изпълнява с параметъра &lt;code&gt;-S&lt;/code&gt;, за да приеме правилно паролата от входа.&lt;/p&gt;</content:encoded><category>dev</category><category>Uncategorized</category></item><item><title>Звездна нощ</title><link>https://bisko.be/bg/posts/blog/starry-night/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/starry-night/</guid><description>Наскоро бяхме на почивка в българските планини. Една от вечерите небето беше достатъчно ясно, че да пробвам новия нощен режим на iPhone 12. Първите опити се получиха малко шумни и не показваха много детайли. За щастие споделих тази снимка с братовчед ми и той ми спомена, че</description><pubDate>Tue, 09 Feb 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Наскоро бяхме на почивка в българските планини.&lt;/p&gt;
&lt;p&gt;Една от вечерите небето беше достатъчно ясно, че да пробвам новия нощен режим за снимки на iPhone 12.&lt;/p&gt;
&lt;p&gt;Първите опити се получиха малко шумни и не показваха много детайли.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Слабо зелено сияние над борови дървета и звезди, видяно от балкон под навес на покрива&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_1381-10c608c2.DVecqBvr_Z1VJ5i5.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;За щастие споделих тази снимка с братовчед ми и той ми спомена, че може да пробвам да снимам в RAW, тъй като така се запазва повече информация, която може да се нагласява след заснемането.&lt;/p&gt;
&lt;p&gt;Така и направих – включих запазването на снимките в ProRAW. Получената снимка беше подобна на горната, но после я редактирах в приложението Photos на iOS, без да използвам външни инструменти.&lt;/p&gt;
&lt;p&gt;След няколко корекции детайлите започнаха да изпъкват доста добре на фона на тъмното небе.&lt;/p&gt;
&lt;p&gt;Крайният резултат ми се струва доста приятен!&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Тъмно звездно небе с бледа светеща омара над осветени в зелено борови дървета, обрамчено от парапета на балкон&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_1380-3c06f94f.9xJS155n_VMvSG.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;И един забавен факт за снимката – ярката светлина в небето всъщност е дим от комина на хотела, който видях едва докато правех снимките, а не с очите си. Беше толкова тъмно.&lt;/p&gt;
&lt;p&gt;Определено ще продължа да експериментирам с нощната фотография в бъдеще, при по-ясно и по-тъмно небе!&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>night-photos</category><category>travel</category></item><item><title>Снежният човек Уърди</title><link>https://bisko.be/bg/posts/blog/weirdy-the-snowman/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/weirdy-the-snowman/</guid><description>Понякога снегът е прекалено замръзнал, за да се направи истинска топка за снежен човек. В такива случаи защо да не го построим тухла по тухла или слой по слой, сякаш е конструкция от Лего?</description><pubDate>Sun, 31 Jan 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Снежен човек с метална гевгирка като шапка, нос от морков, очи с червени кръгове и червена уста, с тюркоазени пръчки вместо ръце, върху заснежена дървена маса&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/image_af25d50e-4c23-444f-9224-f7c5c1bceca3.img_0953-83f032c2.C2lW_tiM_1jpdxL.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Понякога снегът е прекалено замръзнал, за да се направи истинска топка за снежен човек. В такива случаи защо да не го построим тухла по тухла или слой по слой, сякаш е конструкция от Лего?&lt;/p&gt;</content:encoded><category>blog</category><category>Uncategorized</category><category>Winter</category><category>ice</category><category>snowman</category></item><item><title>Скакалецът</title><link>https://bisko.be/bg/posts/blog/the-grasshopper/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/the-grasshopper/</guid><description>Намерих това малко създание да си почива до колата ми една доста студена сутрин.</description><pubDate>Tue, 08 Dec 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Зелен скакалец, подобен на дългоантенна скакалка, стои върху грубия сив асфалт, а дългите му антени се влачат зад него, като на заден план се вижда размазана трева&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_0416-de3b3257.C7SwA0Oo_ZcuH8m.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Намерих това малко създание да си почива до колата ми една доста студена сутрин.&lt;/p&gt;</content:encoded><category>blog</category><category>Uncategorized</category><category>Animals</category><category>cold</category><category>grasshopper</category><category>green</category><category>morning</category><category>Photography</category></item><item><title>„Моливът“</title><link>https://bisko.be/bg/posts/blog/the-pencil/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/the-pencil/</guid><description>На скорошно пътуване отидохме в планината. Беше хубаво уединено място. Само няколко къщи и един ресторант. До изоставено изкуствено езеро/язовир. Комарите и жегата бяха нашите върховни врагове, но все някак се справихме. Тъй като наоколо нямаше много за правене, се наложи да импровизираме занимания.</description><pubDate>Sun, 08 Nov 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Овехтяла изхвърлена от водата цепеница с изострен връх и няколко малки дупки, лежаща на тъмен дървен под&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_3189-041bec7e.ylsLA4bE_Zu4r9W.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;На скорошно пътуване отидохме в планината. Беше хубаво уединено място. Само няколко къщи и един ресторант. До изоставено изкуствено езеро/язовир.&lt;/p&gt;
&lt;p&gt;Комарите и жегата бяха нашите върховни врагове, но все някак се справихме.&lt;/p&gt;
&lt;p&gt;Тъй като наоколо нямаше много за правене, се наложи да импровизираме занимания. За късмет синът ми се натъкна на голям правоъгълен камък и установи, че е безкрайно забавно да го мъкне наоколо. На мен също ми се стори безкрайно интересен.&lt;/p&gt;
&lt;p&gt;Всяка страна имаше различна текстура, досущ като различни шкурки.&lt;/p&gt;
&lt;p&gt;Имахме и купчина по-стари клони, паднали от дърветата около мястото.&lt;/p&gt;
&lt;p&gt;След няколкосекундно сериозно обмисляне се впуснахме в изследването на прекрасния свят на заостряне на пръчки.&lt;/p&gt;
&lt;p&gt;Една от пръчките излезе точно като молив! Имаше дупка с идеалния размер, в която да сложим мъничко графитче от истински молив, и проработи!&lt;/p&gt;
&lt;p&gt;Рисувахме с нея по земята и беше невероятно.&lt;/p&gt;</content:encoded><category>blog</category><category>Quick &amp;amp; Easy</category><category>travel</category><category>Adventures</category><category>forest</category><category>stone</category><category>woodwork</category></item><item><title>Кокиче</title><link>https://bisko.be/bg/posts/blog/snowdrops/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/snowdrops/</guid><description>Спомен от 2007 г.</description><pubDate>Thu, 08 Oct 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Три бели кокичета със зелени шарки, които се привеждат на тънки стъбла до дънера на дърво и дървена ограда&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1024&quot; height=&quot;768&quot; src=&quot;/_astro/c7a42ddf-26db-487f-8ca3-20b5ef6704dc_1_105_c-bd84ccbc.nK60jHnF_Z1KzMGp.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Спомен от 2007 г.&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>flowers</category><category>snowdrops</category></item><item><title>Разгадаване на числова парола на ZIP файл само с команднолинейни инструменти</title><link>https://bisko.be/bg/posts/dev/guessing-a-numeric-zip-file-password-only-with-command-line-utilities/</link><guid isPermaLink="true">https://bisko.be/bg/posts/dev/guessing-a-numeric-zip-file-password-only-with-command-line-utilities/</guid><description>Днес получих месечната си фактура от доставчика ми на интернет и нещо ми се стори странно. Фактурата, съдържаща се в писмото, беше в ZIP файл с парола. Да не говорим колко странно беше да се получи прикачен файл като ZIP в наши дни (спам, зловреден софтуер, фишинг и т.н.), паролата</description><pubDate>Mon, 14 Sep 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Днес получих месечната си фактура от доставчика ми на интернет и нещо ми се стори странно.&lt;/p&gt;
&lt;p&gt;Фактурата, съдържаща се в писмото, беше в ZIP файл с парола.&lt;/p&gt;
&lt;p&gt;Да не говорим колко странно беше да се получи прикачен файл като ZIP в наши дни (спам, зловреден софтуер, фишинг и т.н.), паролата, която бяха избрали, ми се стори много слаба.&lt;/p&gt;
&lt;p&gt;Това е рожденият ден на титуляря на сметката във формат &lt;code&gt;YYMMDD&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Направих едно много грубо изчисление наум, докато бях на фитнес, и се оказа, че възможните комбинации са много малко. След като използвах онлайн инструмент за изчисляване на колко дни са минали (тъй като не всички комбинации биха довели до валидна дата) от 1900-01-01, се оказа, че комбинациите са само 44 075 (до 2020-09-14).&lt;/p&gt;
&lt;p&gt;Знаейки, че оптимизирани инструменти, използващи GPU мощност за разбиване на хешове, могат да правят догадки в милиони на секунда, исках да видя колко бързо може да се разгадае паролата без да ги използвам, а само с помощта на Linux/macOS CLI (тъй като имах достъп единствено до VPS във фитнеса).&lt;/p&gt;
&lt;p&gt;Измислих следния код, който работи на macOS:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;echo {1..44000} | xargs -P 16 -n 1 -I{} date -v &quot;-{}d&quot; +&quot;%y%m%d&quot; | xargs -P 16 -I{} sh -c &apos;unzip -qqoP &quot;{}&quot; 0417160508.zip &amp;#x26;&amp;#x26; echo &quot;{}&quot; &amp;#x26;&amp;#x26; exit 255&apos;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Командата е доста проста в работата си, въпреки че изглежда сложна.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;echo {1..44000}&lt;/code&gt; генерира числата от 1 до 44 000 и ги предава на следващата стъпка.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;xargs -P 16 -n 1 -I{} date -v &quot;-{}d&quot; +&quot;%y%m%d&quot;&lt;/code&gt; – взема входа от първата стъпка и генерира дати във формат &lt;code&gt;YYMMDD&lt;/code&gt;, като използва функционалността на &lt;code&gt;date&lt;/code&gt; да „добавя“ към дата определено количество. В случая това би извадило X дни от текущата дата. Където X е числото, генерирано в първата стъпка. По този начин можем да генерираме дати от днес назад до 1900-те.&lt;/p&gt;
&lt;p&gt;Третата стъпка е по-интересната, затова ще я разделя на две части:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;xargs -P 16 -I{} sh -c &apos;...&apos;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Това взема генерираните дати от стъпка 2 и изпълнява команда за всяка от тези дати. &lt;code&gt;-P 16&lt;/code&gt; тук означава, че това ще се изпълнява в 16 паралелни процеса, за да се ускори пресяването на данните. Същият трик е приложен и в стъпка 2, за да се ускори генерирането на дати.&lt;/p&gt;
&lt;p&gt;Втората част е мястото, където се случват догадките:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;unzip -qqoP &quot;{}&quot; 0417160508.zip &amp;#x26;&amp;#x26; echo &quot;{}&quot; &amp;#x26;&amp;#x26; exit 255&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Това, което прави, е първо да се опита да декомпресира zip файла, използвайки паролата, генерирана в стъпка 2. Ако е успешно, то ще отпечата (&lt;code&gt;echo&lt;/code&gt;) познатата парола и след това &lt;code&gt;exit 255&lt;/code&gt; принуждава &lt;code&gt;xargs&lt;/code&gt; да спре изпълнението. Не искаме да продължаваме да гадаем, ако паролата вече е намерена.&lt;/p&gt;
&lt;p&gt;Като цяло, беше доста лошо решение да се избере това за парола на файла, защото изпълнението на горната команда отнема само около 10 секунди, за да се разгадае правилната парола за моята фактура. Не много повече за когото и да било друг.&lt;/p&gt;</content:encoded><category>dev</category><category>Uncategorized</category></item><item><title>Графити от целия свят: Бургас, България</title><link>https://bisko.be/bg/posts/blog/graffiti-around-the-world-burgas-bulgaria/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/graffiti-around-the-world-burgas-bulgaria/</guid><description>Наскоро попаднах на тази снимка от един мой приятел. Определено пасва на поредицата!</description><pubDate>Tue, 08 Sep 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Цветен стенопис на улица с оранжев охлюв с жълта спирална черупка, украсена с гъби, създания с очи, НЛО и зелен извънземен&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1440&quot; height=&quot;1087&quot; src=&quot;/_astro/img_1545-6a461b59.DrLukEK8_ozvWH.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Пси-охлювът&lt;/p&gt;
&lt;p&gt;Наскоро попаднах на тази снимка от един мой приятел. Определено пасва на поредицата!&lt;/p&gt;</content:encoded><category>blog</category><category>Uncategorized</category></item><item><title>Новото колело</title><link>https://bisko.be/bg/posts/blog/the-new-wheel/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/the-new-wheel/</guid><description>При скорошно пътуване в едно планинско селце намерихме този камион, на който липсваше едно от задните колела. Синът ни не беше доволен, че камионът е пострадал, затова решихме да му импровизираме колело. След като намерихме капачка от бутилка с вода, с малко нож-магия премахнахме част от капачката, за да пасне на размера.</description><pubDate>Sat, 08 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Жълт детски камион бетонобъркачка с неподходящо, ръчно направено синьо задно колело, докато предното колело е черно с жълта главина&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_1070-1bce5de4.PNKa8g3z_Z1B6f9F.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;При скорошно пътуване в едно планинско селце намерихме този камион, на който липсваше едно от задните колела.&lt;/p&gt;
&lt;p&gt;Синът ни не беше доволен, че камионът е пострадал, затова решихме да му импровизираме колело.&lt;/p&gt;
&lt;p&gt;След като намерихме капачка от бутилка с вода, с малко нож-магия премахнахме част от капачката, за да пасне на размера.&lt;/p&gt;
&lt;p&gt;След кратка интервенция със запалка, за да разтопим пластмасата, успяхме да я заварим към оста на липсващото колело.&lt;/p&gt;
&lt;p&gt;И то наистина работи!&lt;/p&gt;
&lt;p&gt;Вижте го как се носи!&lt;/p&gt;</content:encoded><category>blog</category><category>Quick &amp;amp; Easy</category><category>Second Chances</category><category>diy</category><category>fixing</category><category>toys</category></item><item><title>Как да се справим със спагети код в PHP: използване на анонимни функции за извличане на парчета шаблонен код</title><link>https://bisko.be/bg/posts/dev/dealing-with-spaghetti-code-in-php-using-anonymous-functions-to-extract-pieces-of-template-code/</link><guid isPermaLink="true">https://bisko.be/bg/posts/dev/dealing-with-spaghetti-code-in-php-using-anonymous-functions-to-extract-pieces-of-template-code/</guid><description>Напоследък помагам на един приятел да разбере някакъв код и как да го промени, за да работи добре с асинхронни заявки към бекенда. Бонус би било да може да се напише по-модулно и преизползваемо. Кодът е WordPress плъгин, който беше написан</description><pubDate>Sat, 08 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Напоследък помагам на един приятел да разбере някакъв код и как да го промени, за да работи добре с асинхронни заявки към бекенда. Бонус би било да може да се напише по-модулно и преизползваемо.&lt;/p&gt;
&lt;p&gt;Кодът е WordPress плъгин, написан с много наследен (legacy) подход – бизнес и фронтенд логиката са смесени на едно място. Манипулации на данни, правени по средата на шаблонния код и подобни неща.&lt;/p&gt;
&lt;p&gt;Всъщност това е горе-долу онова, което сте виждали в PHP сайтовете от началото на 2000-те, преди всички страхотни ООП допълнения към езика и купчината зрели фреймуърци.&lt;/p&gt;
&lt;p&gt;Случаят, по който работих днес, беше следният – имаш таблица, която показва куп записи. Трябваше да добавим няколко филтъра към таблицата и да я накараме да работи през AJAX, за да се обновява бързо интерфейсът, без да се презарежда цялата страница на WordPress Admin.&lt;/p&gt;
&lt;p&gt;Филтрирането на данните беше лесно – един бърз inline &lt;code&gt;array_filter&lt;/code&gt;, който да филтрира данните, преди да бъдат подадени към шаблонния код (за да запазим същия стил на кода, и това беше в шаблонния файл 😇).&lt;/p&gt;
&lt;p&gt;Проблемът дойде, когато започнахме да работим по това таблицата да може да се рендерира през AJAX.&lt;/p&gt;
&lt;p&gt;Тя е по средата на куп друг шаблонен и бизнес код. Ако искахме през AJAX да връщаме само таблицата, имахме съвсем малко начини да го постигнем.&lt;/p&gt;
&lt;p&gt;Първият начин би бил да обвием HTML-а преди и след таблицата в ОГРОМНИ &lt;code&gt;if&lt;/code&gt; конструкции, за да сме сигурни, че той не се рендерира.&lt;/p&gt;
&lt;p&gt;Друг начин би бил да извадим шаблона в отделен файл и да го включим в AJAX action-а, който бихме дефинирали в кода на плъгина.&lt;/p&gt;
&lt;p&gt;Анонимните функции на помощ!&lt;/p&gt;
&lt;p&gt;Мислейки как да се справя с това по най-лесния възможен начин, опитах да дефинирам нормална PHP функция, която да съдържа кода на таблицата, но имаше проблем.&lt;/p&gt;
&lt;p&gt;Кодът се изпълнява в метод на клас. В шаблона на таблицата има препратки към &lt;code&gt;$this&lt;/code&gt;. Ако не искаме да променяме кода много, трябва да подадем &lt;code&gt;$this&lt;/code&gt; като аргумент на функцията. Е, това не работи, защото не можеш да подадеш &lt;code&gt;$this&lt;/code&gt; като параметър 🤷‍♂️.&lt;/p&gt;
&lt;p&gt;Бях малко разочарован, че ще трябва да пренапишем доста неща в шаблона, а имаше доста препратки, за които трябваше да внимаваме, за да продължи всичко да работи.&lt;/p&gt;
&lt;p&gt;Тогава си спомних, че сайтът не работи на PHP 5.2, а на PHP 7, така че анонимните функции се поддържат.&lt;/p&gt;
&lt;p&gt;А те имат полезна възможност да определиш кои променливи от извикващия обхват да бъдат подадени на функцията, когато тя бъде извикана. Например:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$table_function &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;use&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ( $pages, $current_page, $items ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;    // ... Table render code&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Това ще ти позволи директно да използваш &lt;code&gt;$pages&lt;/code&gt; или &lt;code&gt;$items&lt;/code&gt; в тялото на функцията.&lt;/p&gt;
&lt;p&gt;Страхотното тук е, че можеш да подадеш и &lt;code&gt;$this&lt;/code&gt; като променлива в обхвата на функцията!&lt;/p&gt;
&lt;p&gt;Така успяхме напълно да извадим кода за рендериране на таблицата в отделна функция, която можем да извикаме изолирано по време на AJAX заявката!&lt;/p&gt;
&lt;p&gt;Разбира се, човек трябва да внимава много с променливите, използвани в тялото на функцията, защото те трябва да са дефинирани, така че внимавай откъде може да бъде извикана AJAX функцията.&lt;/p&gt;
&lt;p&gt;За нас това означава, че ще добавим малък action в основния клас, който пак ще include-ва файла, но ще имаме повече контрол върху спирането на всички останали изходи, които иначе ще се случат.&lt;/p&gt;</content:encoded><category>dev</category><category>Snippets</category><category>lambda-functions</category><category>php</category><category>WordPress</category></item><item><title>Графити по света: Коне</title><link>https://bisko.be/bg/posts/blog/graffiti-around-the-world-horses/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/graffiti-around-the-world-horses/</guid><description>Детска площадка в София, България</description><pubDate>Wed, 08 Jul 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Стенопис на десет стилизирани кубистични конски глави в жълто, черно, лилаво, сиво, оранжево, синьо, бяло и кафяво на син и розов фон&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;6435&quot; height=&quot;2755&quot; src=&quot;/_astro/img_1222-8152ca52.D5sLohsY_Z2jrb7b.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Детска площадка в София, България&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Graffiti</category><category>horses</category><category>Photography</category><category>travel</category></item><item><title>Таймлапс: Вечерно кацане на летище Торонто Пирсън</title><link>https://bisko.be/bg/posts/blog/timelapse-evening-landing-at-toronto-pearaon-airport/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/timelapse-evening-landing-at-toronto-pearaon-airport/</guid><description>Вечерно кацане на летище Торонто Пирсън – 28 септември 2018 г.</description><pubDate>Mon, 08 Jun 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Вечерно кацане на летище Торонто Пирсън – 28 септември 2018 г.&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>travel</category><category>Airplane</category><category>Canada</category><category>Landing</category><category>Timelapse</category><category>Toronto</category></item><item><title>Жирафът</title><link>https://bisko.be/bg/posts/blog/the-giraffe/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/the-giraffe/</guid><description>Една красива шарка се появи, докато си играех с Lego Duplo</description><pubDate>Fri, 08 May 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Стена от цветни правоъгълни детски блокчета в лилаво, жълто, червено, синьо и зелено, с малка плочка жираф за измерване на ръст близо до върха&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;2734&quot; height=&quot;3645&quot; src=&quot;/_astro/img_0214-37c92416.DWchMgfS_ZILsQg.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Една красива шарка се появи, докато си играех с Lego Duplo&lt;/p&gt;</content:encoded><category>blog</category><category>Animals</category><category>Photography</category><category>blocks</category><category>building</category><category>duplo</category><category>lego</category></item><item><title>Arduino/ESP32: Изключване на task watchdog-а</title><link>https://bisko.be/bg/posts/dev/arduino-esp32-disabling-the-task-watchdog/</link><guid isPermaLink="true">https://bisko.be/bg/posts/dev/arduino-esp32-disabling-the-task-watchdog/</guid><description>Напоследък си играя с многоядрените възможности на ESP32 и закрепването на задачи към конкретни ядра. Използвах AutoConnect, за да поддържам WiFi връзка без да съхранявам паролите в кода и за OTA ъпдейти през уеб интерфейса. Това беше за проект, който щеше да управлява няколко 4-пинови CPU PWM вентилатора, които са в</description><pubDate>Wed, 29 Apr 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Напоследък си играя с многоядрените възможности на ESP32 и закрепването на задачи към конкретни ядра.&lt;/p&gt;
&lt;p&gt;Използвах &lt;a href=&quot;https://github.com/Hieromon/AutoConnect&quot;&gt;AutoConnect&lt;/a&gt;, за да поддържам WiFi връзка без да съхранявам паролите в кода и да предоставя OTA ъпдейти през уеб интерфейса.&lt;/p&gt;
&lt;p&gt;Това беше за проект, който щеше да управлява няколко 4-пинови CPU PWM вентилатора, които са в сървърния ми шкаф, за да охлаждат въздуха вътре. За целта исках да разделя логиката на две задачи.&lt;/p&gt;
&lt;p&gt;Едната задача да се занимава с API-та, четене на сензори, ъпдейти, WiFi и т.н., а другата да обработва прекъсването и PWM управлението на вентилаторите.&lt;/p&gt;
&lt;p&gt;Всичко беше наред, задачите бяха създадени, но когато пуснах кода и ESP32 влезеше в режима, в който трябва да се свържеш с него, за да му кажеш към коя WiFi мрежа да се свърже, започна да се държи странно – рестартираше контролера на всеки няколко секунди и не успявах да накарам връзката да работи.&lt;/p&gt;
&lt;p&gt;Това беше досадно, защото трябваше да демонтирам контролера от мястото му и да го свържа по USB, за да кача нов фърмуер.&lt;/p&gt;
&lt;p&gt;След като направих всичко това, забелязах, че грешката идва от watchdog-а:&lt;/p&gt;
&lt;p&gt;Task watchdog got triggered. The following tasks did not feed the watchdog in time:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;IDLE (CPU 1)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Tasks currently running:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;CPU 0: ManageTask&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;CPU 1: ControllerTask&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Поразрових се и излиза, че това се задейства от Task Watchdog-а на ESP32, който се грижи всички задачи да получават своя ред за изпълнение на процесора.&lt;/p&gt;
&lt;p&gt;Изглежда също, че AutoConnect не е особено гъвкав, когато работи в контекста на задача, в сравнение с изпълнение извън такава, директно с всичкия останал код и функционалност.&lt;/p&gt;
&lt;p&gt;След известно ровене и пробване на различни неща, излиза, че най-лесният начин да се измъкнеш от тази ситуация е просто да изключиш watchdog-а и да се надяваш нещата да се изпълнят навреме 🙂 Задачата не е критична, така че е нормално да се изчака повече, докато приключи с това, което прави.&lt;/p&gt;
&lt;p&gt;За да изключите watchdog-а, трябва да направите две неща:&lt;/p&gt;
&lt;p&gt;Първо, включете хедъра &lt;code&gt;esp_task_wdt.h&lt;/code&gt;. За целта добавете &lt;code&gt;#include &amp;#x3C;esp_task_wdt.h&gt;&lt;/code&gt; към секцията с include-ите си.&lt;/p&gt;
&lt;p&gt;Второ, накарайте watchdog-а да не рестартира контролера и да чака по-дълго. За целта трябва да добавите &lt;code&gt;esp_task_wdt_init(30, false);&lt;/code&gt; в началото на кода на вашата задача.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;cpp&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; manage_core_task&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;pv_parameters&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;    esp_task_wdt_init&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;30&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;    // .... rest of the code ...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Това ще зададе timeout на watchdog-а на 30 &lt;strong&gt;СЕКУНДИ&lt;/strong&gt; и ще изключи рестартирането на контролера, ако се задейства.&lt;/p&gt;
&lt;p&gt;Ако искате контролерът все пак да се рестартира след задействане на watchdog-а, сменете втория параметър на извикването на функцията от &lt;code&gt;false&lt;/code&gt; на &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;</content:encoded><category>dev</category><category>Uncategorized</category><category>arduino</category><category>code</category><category>esp32</category><category>espressif</category><category>multi-core</category><category>multi-threading</category></item><item><title>🌼 &amp; 🐝</title><link>https://bisko.be/bg/posts/blog/%F0%9F%8C%BC-%F0%9F%90%9D/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/%F0%9F%8C%BC-%F0%9F%90%9D/</guid><pubDate>Tue, 14 Apr 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Пчела върху бяла хризантема, наподобяваща маргаритка, заобиколена от бели, жълти, розови и червеникаво-оранжеви цветя в цветна леха&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1024&quot; height=&quot;768&quot; src=&quot;/_astro/image-1-c44a4a22.DM-UJBpr_ZsDCIE.webp&quot; &gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Uncategorized</category><category>bee</category><category>bees</category><category>flower</category><category>flowers</category></item><item><title>Когато пътуването има нужда от почивка от пътуване</title><link>https://bisko.be/bg/posts/blog/when-travel-needs-a-break-from-travel/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/when-travel-needs-a-break-from-travel/</guid><description>Когато детето усеща, че куфарите за път имат нужда от почивка.</description><pubDate>Sat, 14 Mar 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Оранжева палатка тип pop-up на закрито с матрак и три куфара вътре, в огрян от слънце хол с диван и детска пързалка&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1024&quot; height=&quot;768&quot; src=&quot;/_astro/image-ef37b29d.BszBkRqS_1jMq5e.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Когато детето усеща, че куфарите за път имат нужда от почивка.&lt;/p&gt;</content:encoded><category>blog</category><category>Uncategorized</category><category>fun</category><category>travel</category></item><item><title>Графити по света: Дъблин</title><link>https://bisko.be/bg/posts/blog/graffiti-around-the-world-dublin/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/graffiti-around-the-world-dublin/</guid><description>Преди няколко месеца бяхме на пътуване до Дъблин и бях изненадан колко много добри графити артисти има там. Ето няколко от тях.</description><pubDate>Fri, 14 Feb 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Преди няколко месеца бяхме на пътуване до Дъблин и бях изненадан колко много добри графити артисти има там.&lt;/p&gt;
&lt;p&gt;Ето няколко от тях.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Улично изкуство в стил стенсил на млада жена с малка птичка на рамото, нарисувано върху електрическо табло до витрина на Powers Irish Whiskey&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_7482-63b60082.Bxx3TjUc_1oK5zc.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Изрисувано електрическо табло с две фигури с напудрени перуки в театрална ложа, едната с дълъг нос и жълта роза в ръка, а зад тях стои мъж&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_7716-cf4a09eb.BXnFmORL_Zwb0W.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Стенопис върху електрическо табло нощем на две жени, които правят селфита с телефони, едната седнала в скута на другата, заобиколени от златни звезди&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_7465-a1ef02f7.dem_I3k3_1u9UWt.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Електрическо табло, изрисувано като ретро касетка с дъгови ивици и надписи Mixtape for Dublin и Stereo 120&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_7670-a65a7a2d.6pMYI6Bw_Z15AP4O.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Червен стенопис на брадат стар моряк, който пуши лула до малко куче, с надпис Auld Dubliner на табела в стил витраж&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_7672-dbb3a83b.DFWmxWvS_ZOjwzR.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Изрисувано електрическо табло с къдрав диригент, застанал срещу хор от оранжевокоси певци с отворени усти, облечени в бели роби&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_7362-681994c0.Cob4Td7H_2gJf3X.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>blog</category><category>Graffiti</category><category>Dublin</category><category>Ireland</category><category>Photography</category><category>travel</category></item><item><title>Настройване на YubiKey за подписване на Git комити</title><link>https://bisko.be/bg/posts/dev/setting-up-a-yubikey-for-git-commit-signing/</link><guid isPermaLink="true">https://bisko.be/bg/posts/dev/setting-up-a-yubikey-for-git-commit-signing/</guid><description>Използвам YubiKey като ключ за двуфакторна автентикация и за подписване на Git комитите си. До преди няколко дни използвах YubiKey 4. Тъй като текущият ми компютър няма никакви USB-A портове, мъкнех из раницата си USB-A към USB-C адаптери и използването на ключа беше досадно неудобство за</description><pubDate>Wed, 08 Jan 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Използвам YubiKey като ключ за &lt;a href=&quot;https://en.wikipedia.org/wiki/Multi-factor_authentication&quot;&gt;двуфакторна автентикация&lt;/a&gt; и за подписване на Git комитите си. До преди няколко дни използвах YubiKey 4. Тъй като текущият ми компютър няма никакви USB-A портове, последната година мъкнех из раницата си USB-A към USB-C адаптери и използването на ключа беше пълна мъка. Затова реших, че е време да мина на „новия“ си YubiKey 5C и да не жонглирам повече с тези адаптери.&lt;/p&gt;
&lt;p&gt;Всъщност ключът си стои у мен от доста време – поръчах го заедно със заместващ YubiKey 4, който получих заради проблема с &lt;a href=&quot;https://www.yubico.com/2017/10/infineon-rsa-key-generation-issue/&quot;&gt;Infineon TPM&lt;/a&gt;, който са открили, но чак сега реших, че е време да премина на новия ключ.&lt;/p&gt;
&lt;p&gt;Другата причина да го направя точно сега е, че старите ми GPG ключове изтекоха и трябваше да ги издам наново, така че мога да използвам ключа за подписване на Git комитите си.&lt;/p&gt;
&lt;h3 id=&quot;gpg-лудницата&quot;&gt;GPG лудницата&lt;/h3&gt;
&lt;p&gt;Ако си се занимавал с GPG ключове в миналото (или се занимаваш в момента), знаеш, че може да е доста трудно да го накараш да работи както трябва и безопасно, ако никога не си го правил. Пазене на главните ключове офлайн, местене на публични ключове, преиздаване на ключове след изтичането им, евентуално подписването им с предишни ключове за верификация, отнемане на ключове… Не е лесно да следваш най-добрите практики дори на теория. Когато стане дума за практиката, нещата стават изключително сложни.&lt;/p&gt;
&lt;p&gt;Повечето уроци в мрежата препоръчват да използваш командния ред за генериране на ключовете, да навигираш из менюта с необичаен дизайн и общо взето е болка да ги накараш да заработят. Повечето казват да използваш офлайн машина, например Raspberry PI, и/или да генерираш главните ключове и подключовете офлайн и да държиш главния ключ далеч от компютъра си.&lt;/p&gt;
&lt;p&gt;🤯&lt;/p&gt;
&lt;p&gt;Занимавам се с това всеки януари вече почти 4 години. Страхувам се от момента, в който получа следната грешка, която ми показва, че подписващите ми ключове са изтекли.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;error: gpg failed to sign the data&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;fatal: failed to write commit object&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Тази година реших, че е време да направя процеса много по-лесен и да използвам вграденото генериране на сертификати, за да избегна цялата тази каша с генерирането на GPG ключове и подобни.&lt;/p&gt;
&lt;h3 id=&quot;генериране-на-ключове-директно-върху-yubikey&quot;&gt;Генериране на ключове директно върху YubiKey&lt;/h3&gt;
&lt;p&gt;Пак ще трябва да ползваме интерфейса в командния ред, но е малко по-ясен, защото има по-малко стъпки.&lt;/p&gt;
&lt;p&gt;Първо трябва да настроим картата/устройството.&lt;/p&gt;
&lt;h3 id=&quot;настройка-на-картатаустройството&quot;&gt;Настройка на картата/устройството&lt;/h3&gt;
&lt;p&gt;Изпълни &lt;code&gt;gpg --card-status&lt;/code&gt; в терминала и трябва да видиш нещо такова:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Reader ………..: Yubico Yubikey 4 OTP U2F CCID&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Application ID …: &amp;#x3C;Serial number&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Version ……….: 2.1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Manufacturer …..: Yubico&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Serial number ….: &amp;#x3C;Device serial number&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Name of cardholder: unspecified&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Language prefs …: en&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Sex …………..: unspecified&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;URL of public key : \[not set\]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Login data …….: &amp;#x3C;e-mail or nothing&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Signature PIN ….: not forced&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Key attributes …: rsa4096 rsa4096 rsa4096&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Max. PIN lengths .: 127 127 127&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;PIN retry counter : 3 0 3&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Signature counter : 9&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ако виждаш нещо подобно и няма грешки, можеш спокойно да продължиш.&lt;/p&gt;
&lt;p&gt;Изпълни &lt;code&gt;gpg --card-edit&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ще се озовеш в интерфейс в командния ред, който показва същата информация в началото, а най-отдолу има команден промпт &lt;code&gt;gpg/card&gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Напиши &lt;code&gt;admin&lt;/code&gt; и натисни Enter.&lt;/p&gt;
&lt;p&gt;Сега можеш да напишеш &lt;code&gt;help&lt;/code&gt;, за да разбереш как да промениш информацията за собственика и PIN кодовете на картата.&lt;/p&gt;
&lt;p&gt;Нещо, което &lt;strong&gt;&lt;em&gt;ЗАДЪЛЖИТЕЛНО&lt;/em&gt;&lt;/strong&gt; трябва да направиш, е да смениш PIN кодовете по подразбиране на картата. Те са два. Първият е PIN кодът, с който достъпваш ключовете на картата. Вторият е „Admin“ PIN или PUK (Personal Unblocking Code).&lt;/p&gt;
&lt;p&gt;За целта напиши &lt;code&gt;passwd&lt;/code&gt; и ще видиш меню:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;gpg/card&gt; passwd  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;gpg: OpenPGP card no. &amp;#x3C;Serial number&gt; detected&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;1 - change PIN  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;2 - unblock PIN  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;3 - change Admin PIN  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;4 - set the Reset Code  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Q - quit&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Напиши &lt;code&gt;1&lt;/code&gt; и следвай указанията, за да смениш PIN кода. PIN кодът по подразбиране е &lt;code&gt;123456&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;След като приключиш с това, избери &lt;code&gt;3&lt;/code&gt;, за да смениш Admin PIN. По подразбиране е &lt;code&gt;12345678&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;След като смениш и двата кода, върни се в главното меню, за да довършиш обновяването на информацията за ключа.&lt;/p&gt;
&lt;p&gt;Командите, които можеш да използваш, са:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;name&lt;/code&gt; – за смяна на името на собственика на картата&lt;/li&gt;
&lt;li&gt;&lt;code&gt;login&lt;/code&gt; – за смяна на имейл адреса или логина на собственика на картата&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;След това можем да преминем към същинското генериране на ключове.&lt;/p&gt;
&lt;h3 id=&quot;генериране-на-ключове&quot;&gt;Генериране на ключове&lt;/h3&gt;
&lt;p&gt;Сега е време наистина да генерираме ключовете.&lt;/p&gt;
&lt;p&gt;За целта напиши &lt;code&gt;generate&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Ще бъдеш попитан &lt;code&gt;Make off-card backup of encryption key? (Y/n)&lt;/code&gt;, но както се споменава в документацията на YubiKey, това е само бекъп „на парче“ и няма да създаде пълен бекъп на тайните ключове, така че няма значение дали ще отговориш &lt;code&gt;Yes&lt;/code&gt;, или &lt;code&gt;No&lt;/code&gt;. Аз отговарям с &lt;code&gt;No(n)&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Ако на картата вече има запазени ключове, ще бъдеш попитан дали искаш да ги замениш:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;gpg: Note: keys are already stored on the card!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Replace existing keys? (y/N)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Увери се, че няма да заменяш нещо важно, от което нямаш бекъп, и продължи с &lt;code&gt;Y&lt;/code&gt;. Ако има нещо важно, по-добре прекъсни целия процес с &lt;code&gt;Ctrl+C&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Ще бъдеш попитан за PIN кода на картата, който зададе по-рано.&lt;/p&gt;
&lt;p&gt;После трябва да избереш за колко време ще са валидни ключовете:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Please specify how long the key should be valid.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        0 = key does not expire&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      &amp;#x3C;n&gt; = key expires in n days&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;     &amp;#x3C;n&gt;w = key expires in n weeks&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;     &amp;#x3C;n&gt;m = key expires in n months&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;     &amp;#x3C;n&gt;y = key expires in n years&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; Key is valid for? (0)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ако искаш ключовете да са валидни само 1 година, напиши &lt;code&gt;1y&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Ще бъдеш помолен да потвърдиш датата на изтичане. Провери дали всичко е правилно и потвърди.&lt;/p&gt;
&lt;p&gt;След това ще трябва да въведеш информация за собственика на ключа:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Is this correct? (y/N) y&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;GnuPG needs to construct a user ID to identify your key.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Real name: &amp;#x3C;Your name&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Email address: &amp;#x3C;Your e-mail&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Comment: &amp;#x3C;Comment is optional&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; You selected this USER-ID:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;     &quot;&amp;#x3C;Your name&gt; &amp;#x3C;comment&gt; &amp;#x3C;your e-mail&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Type `O` to confirm if everything seems correct.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;След това ще бъдеш попитан за Admin PIN или PUK. Това е необходимо, защото ще се извърши запис върху картата.&lt;/p&gt;
&lt;p&gt;После, ако всичко е наред, YubiKey ще започне да мига и ще продължи да го прави известно време (при мен отнема към пет минути).&lt;/p&gt;
&lt;p&gt;Когато приключи, ще видиш следното съобщение:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;gpg: key &amp;#x3C;Short ID&gt; marked as ultimately trusted&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;gpg: revocation certificate stored as &apos;/Users/bisko/.gnupg/openpgp-revocs.d/&amp;#x3C;LONG ID&gt;.rev&apos; public and secret key created and signed.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Запиши си &lt;code&gt;&amp;#x3C;Short ID&gt;&lt;/code&gt;, защото ще ни трябва по-късно.&lt;/p&gt;
&lt;p&gt;В този момент можеш да излезеш от GPG промпта с &lt;code&gt;quit&lt;/code&gt; или &lt;code&gt;Ctrl+C&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Сега е време да запазим публичния ключ, за да можем да го използваме на друг компютър.&lt;/p&gt;
&lt;p&gt;За целта изпълни следната команда:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;gpg&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --armor&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --export&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Short&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; I&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;D&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Short&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; I&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;D&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;.asc&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Това ще експортира публичния ключ във файл с име &lt;code&gt;&amp;#x3C;Short ID&gt;.asc&lt;/code&gt;. Той ще ти трябва в бъдеще, ако искаш да използваш YubiKey на друг компютър или ако изгубиш GPG конфигурацията си.&lt;/p&gt;
&lt;p&gt;За да възстановиш публичния ключ във връзката си с ключове (keyring), направи следното:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;gpg&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --import&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Short&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; I&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;D&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;.asc&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;gpg:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; key&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Short&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; I&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;D&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; public&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; key&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;Your Name &amp;#x3C;your@email&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; imported&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;gpg:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Total&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; number&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; processed:&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;gpg:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; imported:&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Много важна забележка.&lt;/em&gt;&lt;/strong&gt; Ако това е нова инсталация на GPG или друг компютър, GPG няма сам да разпознае ключовете на картата. Трябва да изпълниш &lt;code&gt;gpg --card-status&lt;/code&gt;, за да може да прочете картата и да засече ключовете върху нея.&lt;/p&gt;
&lt;h3 id=&quot;настройка-на-git-за-подписване&quot;&gt;Настройка на Git за подписване&lt;/h3&gt;
&lt;p&gt;За да настроиш Git да подписва комитите ти, трябва да добавиш следното в &lt;code&gt;~/.gitconfig&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;В секцията &lt;code&gt;[user]&lt;/code&gt; трябва да добавиш (или обновиш) следния ред:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;signingkey = 0x&amp;#x3C;Short ID&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;После, ако искаш да подписваш всичките си комити, добави следното в края на файла:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;ini&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;[gpg]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;  program&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; = /usr/local/bin/gpg&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;[commit]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;  gpgsign&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; = true&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Така Git ще подписва всички твои комити.&lt;/p&gt;
&lt;p&gt;За да настроиш GitHub, трябва да добавиш публичния си ключ към профила си. За целта отиди на &lt;code&gt;GitHub -&gt; Settings -&gt; SSH and GPG keys -&gt; New GPG key&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Ще видиш текстово поле, в което трябва да поставиш цялото съдържание на файла &lt;code&gt;&amp;#x3C;Short ID&gt;.asc&lt;/code&gt;, който генерирахме по-горе.&lt;/p&gt;
&lt;p&gt;Ако искаш да копираш съдържанието на файла (на macOS), можеш да направиш така:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cat &amp;#x3C;Short ID&gt;.asc | pbcopy&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Това ще копира съдържанието на целия файл в клипборда.&lt;/p&gt;
&lt;p&gt;Постави го в текстовото поле в GitHub и натисни бутона &lt;code&gt;Add GPG key&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;След това можеш да пробваш да направиш комит и push към GitHub и трябва да видиш симпатичния етикет &lt;code&gt;Verified&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;дебъгване&quot;&gt;Дебъгване&lt;/h3&gt;
&lt;p&gt;Понякога нещата не работят от раз. За да съберем повече информация, можем да опитаме следното:&lt;/p&gt;
&lt;h3 id=&quot;подписване-с-gpg&quot;&gt;Подписване с GPG&lt;/h3&gt;
&lt;p&gt;Първо опитай да подпишеш нещо с ключа:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;gpg -s &amp;#x3C;file&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ако това не успее, опитай да разбереш защо, аз не съм експерт, за да помогна с това.&lt;/p&gt;
&lt;p&gt;Погледни изхода на GitGIT_TRACE=1 git commit -am “test”&lt;/p&gt;
&lt;p&gt;Това ще ти покаже точно какво прави Git, докато се опитва да направи комита и да го подпише. Ще ти даде насока защо подписването може да се проваля.&lt;/p&gt;
&lt;p&gt;От него можеш да видиш и че Git изпълнява следната команда:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;/usr/local/bin/gpg&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --status-fd=2&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -bsau&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Key&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; I&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;D&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Можеш да опиташ да я изпълниш ръчно, за да видиш дали ще ти даде по-добра грешка.&lt;/p&gt;</content:encoded><category>dev</category><category>Snippets</category><category>Technology</category><category>git</category><category>github</category><category>gpg</category><category>key</category><category>public-key</category><category>secrets</category><category>sign</category><category>yubikey</category></item><item><title>e1000e eth0: Detected Hardware Unit Hang</title><link>https://bisko.be/bg/posts/dev/e1000e-device-id-eth0-detected-hardware-unit-hang/</link><guid isPermaLink="true">https://bisko.be/bg/posts/dev/e1000e-device-id-eth0-detected-hardware-unit-hang/</guid><description>Напоследък домашният ми сървър и VM хост на случаен принцип започна да губи мрежова свързаност. Отвън изглежда, че още работи, но не можех да го достъпя по никакъв отдалечен начин. Ethernet адаптерът изглеждаше включен според суича, така че проблемът трябваше да е някъде в софтуера. Нямаше да е</description><pubDate>Wed, 18 Dec 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Напоследък домашният ми сървър и VM хост на случаен принцип започна да губи мрежова свързаност. Отвън изглежда, че още работи, но не можех да го достъпя по никакъв отдалечен начин. Ethernet адаптерът изглеждаше включен според суича, така че проблемът трябваше да е някъде в софтуера.&lt;/p&gt;
&lt;p&gt;Нямаше да е първият път, в който драйвер причинява зависване на мрежовата връзка. В миналото съм се опарвал от бъгави WiFi драйвери както на Linux, така и на Windows компютри.&lt;/p&gt;
&lt;p&gt;След като поразрових малко системните логове, се натъкнах на следното:&lt;/p&gt;
&lt;p&gt;vmhost kernel: e1000e 0000:00:1f.6 eth0: Detected Hardware Unit Hang:&lt;br&gt;
vmhost kernel:   TDH                  &amp;#x3C;0&gt;&lt;br&gt;
vmhost kernel:   TDT                  &amp;#x3C;1&gt;&lt;br&gt;
vmhost kernel:   next_to_use          &amp;#x3C;1&gt;&lt;br&gt;
vmhost kernel:   next_to_clean        &amp;#x3C;0&gt;&lt;br&gt;
vmhost kernel: buffer_info[next_to_clean]:&lt;br&gt;
vmhost kernel:   time_stamp           &amp;#x3C;10fbc2f81&gt;&lt;br&gt;
vmhost kernel:   next_to_watch        &amp;#x3C;0&gt;&lt;br&gt;
vmhost kernel:   jiffies              &amp;#x3C;10fbc3871&gt;&lt;br&gt;
vmhost kernel:   next_to_watch.status &amp;#x3C;0&gt;&lt;br&gt;
vmhost kernel: MAC Status             &amp;#x3C;40080083&gt;&lt;br&gt;
vmhost kernel: PHY Status             &amp;#x3C;796d&gt;&lt;br&gt;
vmhost kernel: PHY 1000BASE-T Status  &amp;#x3C;7800&gt;&lt;br&gt;
vmhost kernel: PHY Extended Status    &amp;#x3C;3000&gt;&lt;br&gt;
vmhost kernel: PCI Status             &amp;#x3C;10&gt;&lt;br&gt;
vmhost kernel: e1000e 0000:00:1f.6 eth0: Reset adapter unexpectedly&lt;br&gt;
vmhost kernel: vmbr0: port 1(eth0) entered disabled state&lt;/p&gt;
&lt;p&gt;След това ресетваше мрежовия адаптер и малко по-късно го правеше пак, докато машината накрая изобщо не излезе офлайн.&lt;/p&gt;
&lt;p&gt;Търсейки отговори онлайн, попаднах на &lt;a href=&quot;https://serverfault.com/questions/616485/e1000e-reset-adapter-unexpectedly-detected-hardware-unit-hang&quot;&gt;тази тема в ServerFault&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Причина&lt;/p&gt;
&lt;p&gt;От различни източници и списъци с бъг репорти излиза, че най-лесният начин да се възпроизведе проблемът е ситуация с висока честотна лента на устройството, т.е. поточно пренасяне на големи количества данни, които насищат интерфейса.&lt;/p&gt;
&lt;p&gt;При мен това обикновено се случваше, когато стриймвам медия от локалния Plex сървър към някое устройство. Заради начина, по който е изградена мрежата, Windows VM-ът, на който върви Plex, трябва да вземе медийния файл от NFS мрежов дял на отделно устройство, да го транскодира във VM-а и после да го изпрати към устройството за възпроизвеждане.&lt;/p&gt;
&lt;p&gt;Това се натрупва до много мрежов трафик, обикновено ~40-100 mbit/s, в зависимост от устройството, което пуска файла, и от качеството на оригиналния файл.&lt;/p&gt;
&lt;p&gt;Същият проблем се появи и при стриймване на игри през Steam Link към нашия Apple TV. Връзката е кабелна, но не е необичайно мрежата да прекъсне. Мисля, че е свързано със същия проблем, но ще държа под око дали ще се повтори в бъдеще след поправката.&lt;/p&gt;
&lt;p&gt;Възможна поправка&lt;/p&gt;
&lt;p&gt;Изглежда, че възможна поправка е да се изключат &lt;strong&gt;GSO&lt;/strong&gt; &lt;em&gt;(Generic Segmentation Offload)&lt;/em&gt;, &lt;strong&gt;TSO&lt;/strong&gt; &lt;em&gt;(TCP Segmentation Offload)&lt;/em&gt; и &lt;strong&gt;GRO&lt;/strong&gt; &lt;em&gt;(Generic Receive Offload)&lt;/em&gt; на мрежовия интерфейс*:&lt;/p&gt;
&lt;p&gt;ethtool -K eth0 gso off gro off tso off&lt;/p&gt;
&lt;p&gt;Приложих това при себе си и чакам да видя дали наистина ще реши проблема в дългосрочен план.&lt;/p&gt;
&lt;p&gt;Бележки под линия&lt;/p&gt;
&lt;p&gt;* Тези опции са свързани с прехвърлянето на сегментирането на пакети към мрежовия контролер, за да се намали натоварването на процесора на машината. Повече подробности може да намерите в &lt;a href=&quot;https://en.wikipedia.org/wiki/Large_send_offload&quot;&gt;тази статия в Уикипедия&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>dev</category><category>Homelab</category><category>bandwidth</category><category>bug</category><category>network</category><category>nic</category><category>plex</category><category>proxmox</category><category>steam</category><category>streaming</category></item><item><title>Тиквата</title><link>https://bisko.be/bg/posts/blog/the-pumpkin/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/the-pumpkin/</guid><description>Снимка, направена в Simple Food Punkt</description><pubDate>Sun, 03 Nov 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Издълбана тиква в тиган? Не съм сигурен.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_8045-99331106.C4JicSzy_20be15.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Снимка, направена в &lt;a href=&quot;https://www.facebook.com/Simple.Food.Punkt/&quot;&gt;Simple Food Punkt&lt;/a&gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Uncategorized</category><category>fun</category><category>Halloween</category><category>Orange</category><category>pumpkin</category></item><item><title>Бележки: Стартиране на локален/частен swarm регистър за Docker образи</title><link>https://bisko.be/bg/posts/dev/snippets-running-a-local-private-swarm-docker-image-registry/</link><guid isPermaLink="true">https://bisko.be/bg/posts/dev/snippets-running-a-local-private-swarm-docker-image-registry/</guid><description>Днес се опитвах да генерирам Docker образ от Node.js проект и исках да го разположа на моя локален тестов swarm. За съжаление, ако човек създаде локален Docker образ, той се съхранява и е достъпен само на възела, на който е създаден, а останалите възли в swarm не могат да го достъпят. Начинът</description><pubDate>Fri, 11 Oct 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Днес се опитвах да генерирам Docker образ от Node.js проект и исках да го разположа на моя локален тестов swarm.&lt;/p&gt;
&lt;p&gt;За съжаление, ако човек създаде локален Docker образ, той се съхранява и е достъпен само на възела, на който е създаден, а останалите възли в swarm не могат да го достъпят.&lt;/p&gt;
&lt;p&gt;Решението е образът да се качи (push) в Docker регистър, от който всички възли в swarm могат да го изтеглят (pull).&lt;/p&gt;
&lt;p&gt;Създаване на регистъра&lt;/p&gt;
&lt;p&gt;За да стартирате регистър услуга в swarm, изпълнете:&lt;/p&gt;
&lt;p&gt;docker service create —name registry —publish 5000:5000 registry:latest&lt;/p&gt;
&lt;p&gt;Това ще създаде услугата registry и ще я стартира в swarm, като я направи достъпна за всички възли в swarm.&lt;/p&gt;
&lt;p&gt;Качване на образ в регистъра&lt;/p&gt;
&lt;p&gt;За да качите образ в регистъра, трябва да направите две неща – да го тагнете и след това да го push-нете.&lt;/p&gt;
&lt;p&gt;Ето пример как да build-нете и тагнете образа наведнъж:&lt;/p&gt;
&lt;p&gt;docker build . -t localhost.localdomain:5000/&lt;image-name&gt;:latest&lt;/image-name&gt;&lt;/p&gt;
&lt;p&gt;И как да го качите в регистъра:&lt;/p&gt;
&lt;p&gt;docker push localhost.localdomain:5000/&lt;image-name&gt;:latestИзползване на образа в услуга/контейнер/и т.н.&lt;/image-name&gt;&lt;/p&gt;
&lt;p&gt;За да използвате образа в услуга или контейнер, посочвате пълния път от по-горе, т.е. &lt;code&gt;localhost.localdomain:5000/&amp;#x3C;image-name&gt;:latest&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Възлите в swarm ще имат достъп до образа и ще могат да го изтеглят и стартират.&lt;/p&gt;
&lt;p&gt;Важна забележка относно адреса на регистъра&lt;/p&gt;
&lt;p&gt;В повечето уроци онлайн адресът на регистъра е даден като &lt;code&gt;localhost:5000&lt;/code&gt;. За съжаление това не работи и обикновено изтича времето за изчакване, когато се опитате да го ползвате. Ако го смените с &lt;code&gt;localhost.localdomain&lt;/code&gt;, ще заработи!&lt;/p&gt;
&lt;p&gt;Не знам защо се случва това, при положение че и &lt;code&gt;localhost&lt;/code&gt;, и &lt;code&gt;localhost.localdomain&lt;/code&gt; се разрешават до &lt;code&gt;127.0.0.1&lt;/code&gt;.&lt;/p&gt;</content:encoded><category>dev</category><category>Homelab</category><category>Snippets</category><category>Technology</category><category>docker</category><category>docker-swarm</category><category>registry</category><category>swarm</category></item><item><title>Таймлапс: Рулиране и излитане от международното летище в Орландо</title><link>https://bisko.be/bg/posts/blog/timelapse-taxiing-and-takeoff-from-orlando-international-airport/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/timelapse-taxiing-and-takeoff-from-orlando-international-airport/</guid><description>Това беше началото на пътуването ни към вкъщи, след като приключи страхотната ни Automattic Grand Meetup за 2019 г. Хубави моменти с невероятни хора! 🤩</description><pubDate>Tue, 01 Oct 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Заснето с iPhone X през прозореца на самолета&lt;/p&gt;
&lt;p&gt;Това беше началото на пътуването ни към вкъщи, след като приключи страхотната ни Automattic Grand Meetup за 2019 г. Хубави моменти с невероятни хора! 🤩&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>Photography</category><category>travel</category><category>Airplane</category><category>Flying</category><category>Orlando_FL</category><category>Timelapse</category></item><item><title>Таймлапс: Кацане в мъглив Франкфурт</title><link>https://bisko.be/bg/posts/blog/timelapse-landing-in-foggy-frankfurt/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/timelapse-landing-in-foggy-frankfurt/</guid><description>Франкфурт беше една от спирките по пътя към нашата годишна среща Automattic Grand Meetup. Този ден беше доста мъглив и кацането беше доста интересно преживяване. Летиш над вълнено одеяло от облаци и изведнъж – хоп, приземил си се на пистата! Ето и бонус снимка на това, което се виждаше от града по време на</description><pubDate>Tue, 10 Sep 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Заснето с iPhone X през прозореца на самолета&lt;/p&gt;
&lt;p&gt;Франкфурт беше една от спирките по пътя към нашата годишна среща Automattic Grand Meetup. Този ден беше доста мъглив и кацането беше доста интересно преживяване. Летиш над вълнено одеяло от облаци и изведнъж – хоп, приземил си се на пистата!&lt;/p&gt;
&lt;p&gt;Ето и бонус снимка на това, което се виждаше от града по време на спускането.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Въздушна гледка от самолет към гъсто одеяло от мъгла и облаци, през което стърчат два комина, а зад него се виждат тъмни хълмове&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_6547-fa702d62.ByzaITRP_2k3iLQ.webp&quot; &gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>Photography</category><category>travel</category><category>Airplane</category><category>Frankfurt</category><category>Landing</category><category>Timelapse</category></item><item><title>Авокадото: Покълна!</title><link>https://bisko.be/bg/posts/blog/the-avocado-sprouting/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/the-avocado-sprouting/</guid><description>Това е първият ни успешен опит да накараме авокадо да покълне!</description><pubDate>Sat, 03 Aug 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Разцепена костилка от авокадо в саксия с пръст, с тънък кафяв издънък и извито зелено връхче, които се подават от пукнатината&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_5899-f2ad7864.YgnFMYgT_1cfcKJ.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Това е първият ни успешен опит да накараме авокадо да покълне!&lt;/p&gt;</content:encoded><category>blog</category><category>The Avocado</category><category>Avocado</category><category>Gardening</category><category>Plant</category><category>Sprout</category></item><item><title>Снипети: Преместване на клавиша Section sign на Apple клавиатурите към back quote ( § към ` )</title><link>https://bisko.be/bg/posts/dev/snippets-map-apple-keyboard-section-sign-key-to-back-quote-%C2%A7-to/</link><guid isPermaLink="true">https://bisko.be/bg/posts/dev/snippets-map-apple-keyboard-section-sign-key-to-back-quote-%C2%A7-to/</guid><description>Използвам клавиатури на Apple от доста време, но когато живееш в Европа, не е лесно да се сдобиеш с американската подредба, на която съм свикнал. На macOS има „лесен“ начин да пренастроиш клавиатурата само с една команда в терминала: watch -n1 -x hidutil property -m ‘{“ProductID”:592, “VendorID”:1452}’ –set ‘{“UserKeyMapping”:[{“HIDKeyboardModifierMappingSrc”:0x700000035,”HIDKeyboardModifierMappingDst”:0x700000064}]}’ Какво прави това</description><pubDate>Wed, 31 Jul 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Използвам клавиатури на Apple от доста време, но когато живееш в Европа, не е лесно да се сдобиеш с американската подредба, на която съм свикнал.&lt;/p&gt;
&lt;p&gt;На macOS има „лесен“ начин да пренастроиш клавиатурата само с една команда в терминала:&lt;/p&gt;
&lt;p&gt;watch -n1 -x hidutil property -m ’{“ProductID”:592, “VendorID”:1452}’ —set ’{“UserKeyMapping”:[{“HIDKeyboardModifierMappingSrc”:0x700000035,“HIDKeyboardModifierMappingDst”:0x700000064}]}’&lt;/p&gt;
&lt;p&gt;Това парче код променя картографирането на клавиша Section ( § ), така че да изписва клавиша backquote/tilde ( &lt;code&gt;`/ ~&lt;/code&gt; ).&lt;/p&gt;
&lt;p&gt;Частта &lt;code&gt;watch -n1 -x&lt;/code&gt; го изпълнява всяка секунда, защото понякога macOS обича да губи настройката, обикновено когато компютърът заспи или когато клавиатурата бъде изключена и включена отново.&lt;/p&gt;
&lt;p&gt;Имай предвид, че на някои версии на macOS инструментът &lt;code&gt;watch&lt;/code&gt; не е инсталиран и трябва да се инсталира чрез нещо като &lt;a href=&quot;https://brew.sh/&quot;&gt;Homebrew&lt;/a&gt; или &lt;a href=&quot;https://www.macports.org/&quot;&gt;MacPorts&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Горният код работи с външната клавиатура на Apple с USB и европейска подредба с български букви. Може да се наложи лека корекция на шестнадесетичните стойности на клавишите за други видове клавиатури.&lt;/p&gt;
&lt;p&gt;Вариант на командата работи добре за същия тип клавиатура на самия MacBook Pro. Просто трябва да размените местата на стойностите &lt;code&gt;0x700000035&lt;/code&gt; и &lt;code&gt;0x700000064&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Мислех да напиша инструмент, който да го прави автоматично вместо мен, но в момента смятам, че е по-разумно да инвестирам в нова клавиатура с правилната подредба 🙂&lt;/p&gt;</content:encoded><category>dev</category><category>Uncategorized</category></item><item><title>Лилави цветя</title><link>https://bisko.be/bg/posts/blog/purple-flowers/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/purple-flowers/</guid><description>Видяни при пътуване до Боровец, разположен в Рила планина.</description><pubDate>Fri, 28 Jun 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Лилави цветя, наподобяващи астри, и кръгли пъпки върху космати зелени стъбла, огрени отзад от ярко слънце в синьо небе, а зад тях тъмни вечнозелени дървета&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_5256-c4ebab4e.B9-0LH79_ZcCswB.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Видяни при пътуване до &lt;a href=&quot;https://en.wikipedia.org/wiki/Borovets&quot;&gt;Боровец&lt;/a&gt;, разположен в &lt;a href=&quot;https://en.wikipedia.org/wiki/Rila&quot;&gt;Рила планина&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>flower</category><category>flowers</category><category>purple</category><category>sun</category></item><item><title>Ретро музей</title><link>https://bisko.be/bg/posts/blog/retro-museum/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/retro-museum/</guid><description>По време на лятната ни почивка на Черно море направихме бърза разходка до Варна, защото бяхме в курорт наблизо. Там се натъкнахме на един много интересен Ретро музей. Останах силно и приятно изненадан да намеря почти всички неща, които използвах като малък. Толкова хубави спомени</description><pubDate>Tue, 25 Jun 2019 00:00:00 GMT</pubDate><content:encoded>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Витрина със стари български играчки и пъзели: кубчета на Рубик, змии пъзели и настолни игри като „Не се сърди“ и „Идват танкове“&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_5095-fff7354b.B87XGoKK_spbqC.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Рафтове със съветски будилници, включително жълти будилници „Слава“ във формата на пиленце, кръгли метални и правоъгълни настолни модели&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_5094-03b89044.PJIIKBDz_ZrumKn.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Стъклена витрина, пълна със стари български банкноти в лева, наредени на пачки и ветрила, с разпръснати монети и банкови лентички&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_5092-fe5af8eb.D8cpVmlj_Z2gS5rt.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Шкаф с ретро уреди за коса: сешоари в жълто и оранжево, маши, ролки и кутийки с вибромасажори&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_5091-0793f161.ByQJsy2P_Z1u1ItY.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Две тюркоазени стари прахосмукачки с кремави краища и маркучи, лежащи в стъклена витрина&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_5090-2e051edf.CX0aDctc_Zqdst9.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Комплект технически пергел върху синьо кадифе, до цветни моливи, химикалки и бродирани ученически спортни емблеми&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_5089-f1b68d98.DkuBHl-h_Zx4MsX.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Стари перални с центрофуга и кутии с перилен препарат на пода на музея, а на заден план са паркирани стари коли&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_5088-53896321.yYoU5Fok_Z15PUQh.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Колекция от детски музикални инструменти: мелодики, флейти и хармоники, до кутия с игри и тесте карти&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_5086-09a7e3df.D4AuUo7d_Z16eSYx.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Зелена настолна игра футбол с червени и бели фигурки, заобиколена от матрьошки, кубче на Рубик и електронни игри за ръка&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_5085-b5ba1d92.CTJokrFJ_Z8Erqh.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Снимките са направени в &lt;a href=&quot;https://www.tripadvisor.com/Attraction_Review-g295392-d8441907-Reviews-The_Retro_Museum_In_Varna-Varna_Varna_Province.html&quot;&gt;Ретро музея във Варна, България&lt;/a&gt; (линкът е от TripAdvisor, защото сайтът на музея изглежда не работи).&lt;/p&gt;
&lt;p&gt;По време на лятната ни почивка на &lt;a href=&quot;https://en.wikipedia.org/wiki/Black_Sea&quot;&gt;Черно море&lt;/a&gt; направихме бърза разходка до &lt;a href=&quot;https://en.wikipedia.org/wiki/Varna&quot;&gt;Варна&lt;/a&gt;, защото бяхме в курорт наблизо. Там се натъкнахме на един много интересен Ретро музей.&lt;/p&gt;
&lt;p&gt;Останах силно и приятно изненадан да намеря почти всички неща, които използвах като малък. Докато го разглеждах, нахлуха толкова хубави спомени от детството ми.&lt;/p&gt;
&lt;p&gt;Определено е чудесно място за посещение, когато сте във Варна!&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>memories</category><category>museum</category><category>retro</category><category>Varna</category></item><item><title>Море от маргаритки</title><link>https://bisko.be/bg/posts/blog/sea-of-daisies/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/sea-of-daisies/</guid><description>Снимка, направена близо до Чорул.</description><pubDate>Fri, 31 May 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Гъста поляна с бели маргаритки с жълти средици на високи зелени стъбла, а между тревата се показват няколко розови цвята на детелина&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_4633-ced55558.CA2pVc_h_cVSP7.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Снимка, направена близо до &lt;a href=&quot;https://en.wikipedia.org/wiki/Chorul&quot;&gt;Чорул&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>Photography</category><category>daisy</category><category>flower</category><category>flowers</category></item><item><title>Таймлапс(ове): Екскурзия до Монсерат</title><link>https://bisko.be/bg/posts/blog/timelapses-trip-to-montserrat/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/timelapses-trip-to-montserrat/</guid><description>На наскорошната ни среща на екипа в Барселона отидохме на екскурзия до планината Монсерат. Избрахме много облачен ден, но все пак облаците бяха достатъчно високо, така че успяхме да видим долината, преди да завали. Ето два таймлапса от това пътуване:</description><pubDate>Wed, 08 May 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;На наскорошната ни среща на екипа в Барселона отидохме на екскурзия до &lt;a href=&quot;https://en.wikipedia.org/wiki/Montserrat_(mountain)&quot;&gt;планината Монсерат&lt;/a&gt;. Избрахме много облачен ден, но все пак облаците бяха достатъчно високо, така че успяхме да видим долината, преди да завали.&lt;/p&gt;
&lt;p&gt;Ето два таймлапса от това пътуване:&lt;/p&gt;
&lt;p&gt;Облачна магия!&lt;/p&gt;
&lt;p&gt;Слизане с &lt;a href=&quot;https://en.wikipedia.org/wiki/Aeri_de_Montserrat&quot;&gt;Aeri de Montserrat&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>travel</category><category>Barcelona</category><category>Montseratt</category><category>Spain</category><category>Timelapse</category></item><item><title>Таймлапс: Кацане на летище Барселона</title><link>https://bisko.be/bg/posts/blog/timelapse-landing-at-barcelona-airport/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/timelapse-landing-at-barcelona-airport/</guid><pubDate>Sat, 04 May 2019 00:00:00 GMT</pubDate><content:encoded/><category>blog</category><category>Adventures</category><category>travel</category><category>Airplane</category><category>Barcelona</category><category>Landing</category><category>Spain</category><category>Timelapse</category></item><item><title>Сивата котка</title><link>https://bisko.be/bg/posts/blog/the-grey-cat/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/the-grey-cat/</guid><description>Намерихме това добиче някъде около дома! Красавец е и си пада по лакомства!</description><pubDate>Thu, 21 Mar 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Сива котка с жълти очи стои до дънера на дърво върху тревист склон, осеян с листа, близо до голям камък и бетонна стена&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_1995-f9f8058b.DJx6IsPU_1JdhCg.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Намерихме това добиче някъде около дома! Красавец е и си пада по лакомства!&lt;/p&gt;</content:encoded><category>blog</category><category>Animals</category><category>Photography</category><category>cat</category><category>grey</category></item><item><title>Ресетиране/рестартиране на дистанционното на Apple TV</title><link>https://bisko.be/bg/posts/dev/resetting-restarting-apple-tv-remote/</link><guid isPermaLink="true">https://bisko.be/bg/posts/dev/resetting-restarting-apple-tv-remote/</guid><description>Снощи, докато имахме гости, успях да потопя дистанционното на нашето Apple TV във вода. Липсата на сън и нестабилните чаши водят до инциденти. Дистанционното работеше чудесно снощи, но днес спря. Не реагира на нищо. Опитах да го тропам в дланта си и да изтръскам водата от него. Изобщо не помогна.</description><pubDate>Sun, 17 Feb 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Снощи, докато имахме гости, успях да потопя дистанционното на нашето Apple TV във вода. Липсата на сън и нестабилните чаши водят до инциденти.&lt;/p&gt;
&lt;p&gt;Дистанционното работеше чудесно снощи, но днес спря. Не реагира на никакви действия. Опитах да го тропам в дланта си и да изтръскам водата от него. Изобщо не помогна.&lt;/p&gt;
&lt;p&gt;Решихме, че е свършено, и започнахме да търсим пакета с ориз по шкафовете.&lt;/p&gt;
&lt;p&gt;Влязох в интернет най-вече на шега, за да видя дали мога да опитам да го „рестартирам”.&lt;/p&gt;
&lt;p&gt;Един полезен наръчник ме насочи да натисна и задържа бутоните за увеличаване на звука (Volume Up) и Menu за 2-3 секунди, за да ресетирам дистанционното и да го вкарам в режим на сдвояване.&lt;/p&gt;
&lt;p&gt;Бях наистина изненадан, когато &lt;strong&gt;всъщност проработи&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;Така че, ако нещо изглежда съмнително, първо опитайте да ресетирате дистанционното. Ако не помогне, тогава можете да пробвате с ориза и хардуерна интервенция.&lt;/p&gt;
&lt;p&gt;TL;DR;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Задръжте Menu + Volume Up за 2-3 секунди&lt;/li&gt;
&lt;li&gt;Изчакайте няколко секунди&lt;/li&gt;
&lt;li&gt;Опитайте да взаимодействате с Apple TV&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>dev</category><category>Apple</category><category>Technology</category><category>AppleTV</category><category>Have you tried turning it off and on again?</category><category>remote</category><category>reset</category><category>restart</category></item><item><title>Старият трамвай</title><link>https://bisko.be/bg/posts/blog/the-old-tram/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/the-old-tram/</guid><description>Вижте тази публикация в Instagram Публикация, споделена от Бисер Perchinkov (@biskobe) В последните дни на 2018 г. отидохме на тайно парти с някои приятели. Голямата изненада беше къде се провежда! Беше в един от двата най-стари работещи трамвая в България! Построен е преди почти век и</description><pubDate>Fri, 04 Jan 2019 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;[&lt;/p&gt;
&lt;p&gt;Вижте тази публикация в Instagram&lt;/p&gt;
&lt;p&gt;](&lt;a href=&quot;https://www.instagram.com/p/Br8XYN5j0z9/?utm_source=ig_embed&amp;#x26;utm_campaign=loading&quot;&gt;https://www.instagram.com/p/Br8XYN5j0z9/?utm_source=ig_embed&amp;#x26;utm_campaign=loading&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.instagram.com/p/Br8XYN5j0z9/?utm_source=ig_embed&amp;#x26;utm_campaign=loading&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.instagram.com/p/Br8XYN5j0z9/?utm_source=ig_embed&amp;#x26;utm_campaign=loading&quot;&gt;Публикация, споделена от Бисер Перчинков (@biskobe)&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;В последните дни на 2018 г. отидохме на тайно парти с някои приятели.&lt;/p&gt;
&lt;p&gt;Голямата изненада беше къде се провеждаше! Беше в един от двата най-стари работещи трамвая в България!&lt;/p&gt;
&lt;p&gt;Построен е преди почти век и определено те връща в онези времена, въпреки че е леко модернизиран с осветление, отопление и малко музика/медия, която позволява на екскурзоводите да разказват за забележителностите по пътя.&lt;/p&gt;
&lt;p&gt;Много ми хареса, защото един от организаторите работи в трамвайното депо и имахме билети на първия ред, откъдето да видим как вагоноводачът го управлява. Изкарахме ускорен курс какво правят всички лостове и дори звъннахме със звънеца! А Тома също получи шанс да се опита да подкара трамвая, но се оказа, че са нужни доста сили, за да се управлява! Може би след няколко години 😝&lt;/p&gt;
&lt;p&gt;Минувачите също се радваха на гледката, тъй като ретро трамваите не са ежедневие тук.&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>Winter</category><category>joy</category><category>machinery</category><category>party</category><category>tram</category><category>travel</category></item><item><title>Невероятни саундтраци на игри – Stellaris</title><link>https://bisko.be/bg/posts/blog/amazing-game-soundtracks-stellaris/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/amazing-game-soundtracks-stellaris/</guid><description>Преди известно време си взех Stellaris и бързо загубих няколко часа в нея. Тук няма да говоря за самата игра. Вече е писано доста за нея в ревюта, let’s play видеа и така нататък. Понеже не мога да обясня с думи колко е страхотна, ще кажа просто – чуйте го</description><pubDate>Mon, 02 Apr 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Преди известно време си взех &lt;a href=&quot;https://en.wikipedia.org/wiki/Stellaris_(video_game)&quot;&gt;Stellaris&lt;/a&gt; и бързо загубих няколко часа в нея. Тук няма да говоря за самата игра. Вече е писано доста за нея в ревюта, let’s play видеа и така нататък.&lt;/p&gt;
&lt;p&gt;Понеже не мога да обясня с думи колко е страхотна, ще кажа просто – чуйте го. Затворете очи, представете си, че сте на приключение в дълбокия космос или някъде, където умът ви ви отведе, и се насладете.&lt;/p&gt;
&lt;p&gt;( или ако нямате Spotify, пробвайте &lt;a href=&quot;https://www.youtube.com/results?search_query=stellaris+soundtrack&quot;&gt;резултатите от търсене в YouTube&lt;/a&gt; )&lt;/p&gt;</content:encoded><category>blog</category><category>Music</category><category>games</category><category>ost</category><category>soundtrack</category><category>stellaris</category></item><item><title>Гмурване в спомените: За розите и пчелите</title><link>https://bisko.be/bg/posts/blog/diving-back-in-memories-of-roses-and-bees/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/diving-back-in-memories-of-roses-and-bees/</guid><description>Преди няколко дни ровех из колекцията си със снимки и попаднах на един от любимите си кадри. Интересна е историята как се появи тази снимка. Баща ми беше купил нов цифров фотоапарат, Canon PowerShot A610, броени дни преди това. Нямах търпение да го пробвам, но той не ми даваше шанс да поснимам с него, защото го изучаваше и разучаваше отвътре и отвън.</description><pubDate>Sun, 10 Dec 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Преди няколко дни ровех из колекцията си със снимки и попаднах на един от любимите си кадри.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Пчела изследва розата&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;2592&quot; height=&quot;1944&quot; src=&quot;/_astro/img_0350-258314a7.DVI6yd6N_6PkwW.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Интересна е историята как се появи тази снимка.&lt;/p&gt;
&lt;p&gt;Баща ми беше купил нов цифров фотоапарат, Canon PowerShot A610, няколко дни преди това. Нямах търпение да го пробвам, но той не ми даваше шанс да поснимам с него, защото го изучаваше и разучаваше отвътре и отвън. В крайна сметка това беше първият ни „напреднал“ цифров фотоапарат.&lt;/p&gt;
&lt;p&gt;В деня на снимката двамата с баща ми излязохме до магазина и той взе фотоапарата. Помолих го да ми го даде да го нося и да видя дали мога да снимам нещо. Докато обсъждахме дали съм достатъчно способен да нося фотоапарата, без да го счупя, вече бяхме вървели 5-6 минути и тъкмо минавахме покрай един розов храст, около който забелязах да летят няколко пчели.&lt;/p&gt;
&lt;p&gt;Дотогава вече знаех, че искам да направя снимка на прекрасното розово цвете, което виждате по-горе. Извадих фотоапарата, включих го, изчаках една пчела да кацне на цвета и натиснах спусъка.&lt;/p&gt;
&lt;p&gt;И ето я. Първата ми снимка с този фотоапарат.&lt;/p&gt;
&lt;p&gt;И до днес тази снимка остава една от любимите ми.&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>bee</category><category>bees</category><category>flower</category><category>nature</category><category>outside</category><category>rose</category></item><item><title>Татковски работи: Скъпи, не можеш да паузираш онлайн игра!</title><link>https://bisko.be/bg/posts/blog/dad-things-baby-you-cant-pause-an-online-game/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/dad-things-baby-you-cant-pause-an-online-game/</guid><description>И така… кръгът се затвори. Днес, докато се наслаждавах на последните дни от бащиния си отпуск, който страхотният Automattic ми позволи да си взема, реших да се потопя в страната на носталгията и да изиграя няколко рунда добрия стар StarCraft. Звучи съвсем нормално, нали? Да, така е! Освен това, че бебето е в офиса с мен</description><pubDate>Tue, 05 Dec 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;И така… кръгът се затвори.&lt;/p&gt;
&lt;p&gt;Днес, докато се наслаждавах на последните дни от бащиния си отпуск, който страхотният &lt;a href=&quot;https://automattic.com&quot;&gt;Automattic&lt;/a&gt; ми позволи да си взема, реших да се гмурна дълбоко в страната на носталгията и да изиграя няколко рунда добрия стар StarCraft.&lt;/p&gt;
&lt;p&gt;Звучи съвсем нормално, нали? Да, така е! Освен това, че бебето е в офиса с мен, за да мога да го гледам, докато мама се занимава с други неща.&lt;/p&gt;
&lt;p&gt;Всичко вървеше чудесно, бебето спеше, намерих си забавна игра, стартирах я и по средата бебето се събуди. Нищо страшно. Успокоявах го известно време, но той беше разсеян и мрънкаше, така че напуснах играта и се фокусирах върху него. Просто нямаше как да внимавам едновременно и за играта, и за бебето.&lt;/p&gt;
&lt;p&gt;И така, докато люлеех бебето на ръце, говорех му сладко и се опитвах да го успокоя, хвърлих поглед към монитора и видях няколко съобщения от създателя на играта:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;„Защо влизаш в игра, ако ще излизаш?“&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Изпратени отново и отново.&lt;/p&gt;
&lt;p&gt;Първо започнах да отговарям, че имам бебе на ръце и трябва да се грижа за него, но тогава ме заляха спомени от по-ранните ми години, когато с отчаяние повишавах тон, за да обясня на мама, че не можеш да паузираш онлайн игра.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Боже мой, мамо, не можеш да паузираш онлайн игра!!!!1!1!1!!1!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;В този момент осъзнах, че ще трябва да се откажа от онлайн игрите за известно време.&lt;/p&gt;
&lt;p&gt;Е, какво пък… ¯\_(ツ)_/¯&lt;/p&gt;
&lt;p&gt;Поне сега мога да се съсредоточа върху все по-растящия списък от самостоятелни игри, които чакат своя ред. The Witcher 3 няма да се изиграе сам!&lt;/p&gt;</content:encoded><category>blog</category><category>Gaming</category><category>Parenting</category><category>baby</category></item><item><title>Графити по света – Монреал</title><link>https://bisko.be/bg/posts/blog/graffiti-around-the-world-montreal/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/graffiti-around-the-world-montreal/</guid><description>Преди няколко седмици бях на срещата на екипа ни в Монреал и докато се разхождах по улиците, страшно много ми хареса графити културата там. Обожавам колко са цветни и/или закачливи в сравнение с други места, на които съм бил досега. Някои от любимите ми:</description><pubDate>Tue, 06 Jun 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Преди няколко седмици бях на среща на екипа ни в Монреал и докато се разхождах по улиците, страшно много ми хареса графити културата там. Обожавам колко са цветни и/или закачливи в сравнение с други места, на които съм бил досега.&lt;/p&gt;
&lt;p&gt;Някои от любимите ми:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Хидралиск!&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;2694&quot; height=&quot;3495&quot; src=&quot;/_astro/img_7084-8397910a.ZIxhC7qM_1z6wBb.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Не съм сигурен дали съм прав, но след като съм играл много StarCraft навремето, тези създания винаги ми приличат на хидралиски&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Гигантски стенопис на възрастна жена с очила и сива кок прическа, заобиколена от гълъби и лилави градски сгради, на улично кръстовище&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;2101&quot; height=&quot;2115&quot; src=&quot;/_astro/img_7096-cd130da6.CQOvGu0o_ZRu3Go.webp&quot; &gt;&lt;img alt=&quot;Нощна гледка към стенопис на Мери Попинз с чадъри, Биг Бен и стичаща се синя боя върху бяла сграда, с тагове отгоре&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;2387&quot; height=&quot;2357&quot; src=&quot;/_astro/img_7083-a1cb125f.CBVRLzF4_Z1ImeId.webp&quot; &gt;&lt;img alt=&quot;Цветен стенопис с еднооки чудовища от топки сладолед върху розово-лилава сграда над ресторант Dirty Dogs, с колело отпред&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_7098-99273db4.Bqxpgo6f_y2ISn.webp&quot; &gt;&lt;img alt=&quot;Стенопис, направен с шаблон, на мъже с жълти чадъри върху синя стена, преминаваща в ръждиво кафяво отдолу, до метална стълба&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3384&quot; height=&quot;2901&quot; src=&quot;/_astro/img_7344-7ed4ce8e.CovT3-V7_hGgJI.webp&quot; &gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>Graffiti</category><category>montreal</category><category>Photography</category><category>travel</category></item><item><title>Страхът от кучета</title><link>https://bisko.be/bg/posts/blog/fear-of-dogs/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/fear-of-dogs/</guid><description>Когато бях дете, някъде на 5-6 години, кучето на един съсед ме ухапа, докато си играех с него. Не беше нещо сериозно, просто одраскване, но за детския ми ум това беше ужасно преживяване. След инцидента развих огромен страх от кучета. Бягах от тях и се криех вкъщи или в</description><pubDate>Fri, 31 Mar 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Когато бях дете, някъде на 5-6 години, кучето на един съсед ме ухапа, докато си играех с него. Не беше нещо сериозно, просто одраскване, но за детския ми ум това беше ужасно преживяване.&lt;/p&gt;
&lt;p&gt;След инцидента развих огромен страх от кучета. Бягах от тях и се криех вкъщи или в двора на някой съсед. Ако беше куче на приятел, оставах нащрек и ако кучето помръднеше дори съвсем леко, хуквах към друга стая или някое място, където не може да ме достигне.&lt;/p&gt;
&lt;p&gt;Докато растях, стоях далеч от кучета, но с времето започнах постепенно да свиквам с тях. Първото куче, от което не избягах с писъци, беше кучето на братовчедите ми – &lt;a href=&quot;https://en.wikipedia.org/wiki/Rough_Collie&quot;&gt;Рошава колия&lt;/a&gt; на име Клара.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;clara&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1505&quot; height=&quot;1027&quot; src=&quot;/_astro/clara-de4f7f1b.CfG1RsCF_Z112bUQ.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Клара в цялото си великолепие 🙂&lt;/p&gt;
&lt;p&gt;Тя беше просто най-доброто куче. Собствениците ѝ я бяха обучили много добре и тя беше много спокойно куче, стига да не броим гръмотевичните бури. Страшно се боеше от гръмотевици и трябваше да я държим здраво и да затваряме вратите, иначе щеше да хукне и да се опита да се скрие някъде далеч от бурята.&lt;/p&gt;
&lt;p&gt;Прекараните лета в селото и гостуванията ѝ от време на време наистина помогнаха да намалее страхът ми от кучета и общото безпокойство около тях.&lt;/p&gt;
&lt;p&gt;Тук, в България, все още има много скитащи безстопанствени кучета, които понякога могат да представляват заплаха, тъй като глутниците лесно достигат 5-10+ кучета. Това винаги ме е плашило и ме е карало да се тревожа, когато вървя из тъмното и чуя случаен лай зад гърба си.&lt;/p&gt;
&lt;p&gt;С времето разбрах, че кучетата не са чак толкова страшни, и се научих да различавам агресивните кучета от дружелюбните, които просто искат да си играят.&lt;/p&gt;
&lt;p&gt;Миналия уикенд се гордях със себе си.&lt;/p&gt;
&lt;p&gt;През последните няколко месеца забелязвахме едно бездомно куче, което се върти около вилата. Отначало доста се страхувах от това някакво непознато куче да обикаля около нас. След няколко посещения забелязах, че не е чак толкова страшно 🙂 Идваше, поглеждаше ни и си тръгваше.&lt;/p&gt;
&lt;p&gt;Събрах малко смелост, като в крайна сметка успях да я събера цялата, купих консерва храна и застанах навън с храната в пластмасова купичка, като викам кучето да дойде и да хапне хубаво.&lt;/p&gt;
&lt;p&gt;Смешно е, но кучето изглеждаше по-уплашено от мен, отколкото аз от него. След няколко повиквания и една моя крачка назад то дойде до импровизираната купа и започна да яде.&lt;/p&gt;
&lt;p&gt;Победа! 🙂&lt;/p&gt;
&lt;p&gt;Беше и забавно да го гледам в огледалата на колата как тича след нас, докато си тръгвахме от вилата.&lt;/p&gt;
&lt;p&gt;Майката на Ради дори го кръсти Мечо.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Мечо краде купата.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;2076&quot; height=&quot;1594&quot; src=&quot;/_astro/img_5556-54e1db0f.Dxlc4oQQ_1RmVVu.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;– Купата вече е моя!&lt;/p&gt;</content:encoded><category>blog</category><category>Uncategorized</category></item><item><title>Пързаляне на лед</title><link>https://bisko.be/bg/posts/blog/ice-skating/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/ice-skating/</guid><description>Минава почти месец от събитието, но никога няма да го забравя 🙂 В последния ден на миналата година братовчед ми предложи да посетим ледена пързалка. Никога не бях ходил на такава и страшно се страхувах, че ще си счупя всичките крайници. За щастие имах известен опит с ролкови кънки</description><pubDate>Mon, 30 Jan 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Минава почти месец от събитието, но никога няма да го забравя 🙂&lt;/p&gt;
&lt;p&gt;В последния ден на миналата година братовчед ми предложи да посетим ледена пързалка. Никога не бях ходил на такава и страшно се страхувах, че ще си счупя всичките крайници.&lt;/p&gt;
&lt;p&gt;За щастие имах известен опит с ролкови кънки от дете и това много повиши самочувствието ми. Знаех, че ще е нещо подобно. Разбира се, не бях съвсем подготвен за това, което се случи, когато си обух кънките и стъпих на леда – беше толкова хлъзгаво!&lt;/p&gt;
&lt;p&gt;Страхът ми бързо изчезна и успях да карам, без да се държа за парапета. Целият ми стар опит с ролките се върна и можех спокойно да стоя на леда.&lt;/p&gt;
&lt;p&gt;Беше изключително забавно преживяване и определено бих отишъл на ледена пързалка отново! 🙂&lt;/p&gt;
&lt;p&gt;Като бонус успях да запечатам гледка от „първо лице“ как братовчед ми пада на леда:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.instagram.com/p/BOrgVw6j8O3/?taken-by=biskobe&quot;&gt;https://www.instagram.com/p/BOrgVw6j8O3/?taken-by=biskobe&lt;/a&gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>Winter</category><category>fun</category><category>ice</category><category>skating</category></item><item><title>Как да си извадим постоянен EORI номер по електронен път или защо хартията никога няма да умре.</title><link>https://bisko.be/bg/posts/blog/%D0%BA%D0%B0%D0%BA-%D0%B4%D0%B0-%D1%81%D0%B8-%D0%B8%D0%B7%D0%B2%D0%B0%D0%B4%D0%B8%D0%BC-%D0%BF%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B5%D0%BD-eori-%D0%BD%D0%BE%D0%BC%D0%B5%D1%80-%D0%BF%D0%BE-%D0%B5/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/%D0%BA%D0%B0%D0%BA-%D0%B4%D0%B0-%D1%81%D0%B8-%D0%B8%D0%B7%D0%B2%D0%B0%D0%B4%D0%B8%D0%BC-%D0%BF%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B5%D0%BD-eori-%D0%BD%D0%BE%D0%BC%D0%B5%D1%80-%D0%BF%D0%BE-%D0%B5/</guid><description>Важно уточнение – статията е актуална към 2017 година 🙂 В коментарите има няколко обновления на процеса, разгледайте и тях. Обновление от коментар 1 Също така бях получил мейл от друг човек, препатил наскоро този процес (Септември 2020), но все още чакам информация от него какъв е процеса в момента. Ако все пак ви се</description><pubDate>Fri, 06 Jan 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Важно уточнение – статията е актуална към 2017 година 🙂 В коментарите има няколко обновления на процеса, разгледайте и тях.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bisko.be/2017/01/%d0%ba%d0%b0%d0%ba-%d0%b4%d0%b0-%d1%81%d0%b8-%d0%b8%d0%b7%d0%b2%d0%b0%d0%b4%d0%b8%d0%bc-%d0%bf%d0%be%d1%81%d1%82%d0%be%d1%8f%d0%bd%d0%b5%d0%bd-eori-%d0%bd%d0%be%d0%bc%d0%b5%d1%80-%d0%bf%d0%be-%d0%b5/#comment-16503&quot;&gt;Обновление от коментар 1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Също така бях получил мейл от друг човек, препатил наскоро този процес (Септември 2020), но все още чакам информация от него какъв е процеса в момента.&lt;/p&gt;
&lt;p&gt;Ако все пак ви се чете какъв е бил процеса през 2017, можете да прочетете цялата статия.&lt;/p&gt;
&lt;p&gt;Ако не – &lt;a href=&quot;https://bisko.be/2017/01/%D0%BA%D0%B0%D0%BA-%D0%B4%D0%B0-%D1%81%D0%B8-%D0%B8%D0%B7%D0%B2%D0%B0%D0%B4%D0%B8%D0%BC-%D0%BF%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B5%D0%BD-eori-%D0%BD%D0%BE%D0%BC%D0%B5%D1%80-%D0%BF%D0%BE-%D0%B5/#comments&quot;&gt;скок направо към коментарите&lt;/a&gt;, за да видите какво е променено и какви нови главоболия срещат хората.&lt;/p&gt;
&lt;h4 id=&quot;оригинална-статия-от-2017-та&quot;&gt;&lt;em&gt;&lt;strong&gt;Оригинална статия от 2017-та&lt;/strong&gt;&lt;/em&gt;&lt;/h4&gt;
&lt;p&gt;TL;DR; и конкретните стъпки са в края на поста 🙂&lt;/p&gt;
&lt;p&gt;Около Коледа попаднах на доста добра промоция – Transcend 480 GB SSD диск за 86$ – score! Проблем – беше от Amazon.com, което значи, че ще бъде спрян на митницата.&lt;/p&gt;
&lt;p&gt;Цената и лакомията победиха и го поръчах на 28-ми декември и на 3-ти януари вече беше в София. Доставка с DHL, всичко страхотно. Служителите на DHL ми обясниха, че им трябват пълномощно, описание на стоката на български език и заветния EORI номер.&lt;/p&gt;
&lt;p&gt;Първите две неща са тривиални. Посещение до нотариус и един ред свободен текст.&lt;/p&gt;
&lt;p&gt;EORI номерът, обаче, беше съвсем друга история.&lt;/p&gt;
&lt;p&gt;Както всеки, който се е сблъсквал с митниците знае, EORI номерът е два вида – постоянен и временен. Временния се вади на момента и важи за една конкретна доставка. Ако е необходим за бъдещи пратки – трябва всеки път да се вади нов.&lt;/p&gt;
&lt;p&gt;От познати имах информация, че постоянния EORI номер се вади безплатно чрез онлайн системата на митницата. DHL пък от друга страна искаха известна сума за изваждането на такъв. Имам вяра в елкетронните системи (колко съм глупав) и реших да си спестя малко пари.&lt;/p&gt;
&lt;p&gt;На 3-ти следобед седнах и започнах да се чудя как става номера и как точно да си “регистрирам” EORI номер.&lt;/p&gt;
&lt;p&gt;Електронния портал на митниците (ecustoms.bg) е безполезен, ако се достъпи директно. Защо? Защото иска да сте вече регистрирани в него. Ще повторя – за да го достъпите, трябва да сте вече регистрирани в него. Как да се регистрираш в него, ако не си регистриран, за мен остава мистерия. Другата, по-малка драма е, че изисква ел. подпис, за да бъде достъпен.&lt;/p&gt;
&lt;p&gt;До тук добре (не). Отворих Google и започнах да създавам заклинания, за да разбера как да си пусна заветното заявление. Няколко търсения по-късно попадам на следната страница: &lt;em&gt;&lt;a href=&quot;http://ecustoms.bg/eportal/public/Controler?control=UpdateForm&amp;#x26;doc%5C_def%5C_id=24&amp;#x26;row%5C_id=1&amp;#x26;param%5C_selector=4&quot;&gt;http://ecustoms.bg/eportal/public/Controler?control=UpdateForm&amp;#x26;doc\_def\_id=24&amp;#x26;row\_id=1&amp;#x26;param\_selector=4&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Screen Shot 2017-01-06 at 11.13.28.png&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1287&quot; height=&quot;860&quot; src=&quot;/_astro/Screen-Shot-2017-01-06-at-11.13.28-f052b73c.B7w6nr_s_1fJCpg.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;До тук добре, зачитам се в текста, едвам виждам скрития линк на “тук”, цъкам и… нищо. Връзката ме препраща към неработеща система – &lt;em&gt;&lt;a href=&quot;https://ecustoms.bg:18443/eportal/servlet/Controler?control=ReaderForm&amp;#x26;doc%5C_def%5C_id=3&amp;#x26;row%5C_id=5&quot;&gt;https://ecustoms.bg:18443/eportal/servlet/Controler?control=ReaderForm&amp;#x26;doc\_def\_id=3&amp;#x26;row\_id=5&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Известно време изричам разни заклинания и се надявам това да не е от онлайн системите, които работят само от 9-5 в работни дни, но не се отказвам, продължавам натам.&lt;/p&gt;
&lt;p&gt;Отново заклинания в Google и след няколко неуспешни опита, по някаква огромна случайност попадам на : &lt;a href=&quot;https://eori.customs.bg:8443/&quot;&gt;https://eori.customs.bg:8443/&lt;/a&gt;. Следва изненада, ахване, празник и т.н.&lt;/p&gt;
&lt;p&gt;Набързо пускам ел. подпис и трескаво почвам да разучавам интерфейса, който се състои от общо 4 бутона, два от които са &lt;strong&gt;Изход&lt;/strong&gt; и един &lt;strong&gt;Обнови&lt;/strong&gt;. Последния бутон беше нещо от вида на “Регистрация”, но понеже не може да се види, след като веднъж се направи регистрация, не мога да ви кажа точно какво пишеше на него.&lt;/p&gt;
&lt;p&gt;Цък, излиза форма за попълване с няколко различни вида полета и някакви кодове на тях. Попълних тези, които знаех за какво става дума, но другите бяха terra incognita. Някои бяха удебелени, други не, но пък не беше ясно кои са задължителни или не.&lt;/p&gt;
&lt;p&gt;Обратно в Google. Заклинания – нищо. Накрая реших да почна да търся по конкретни фрази от полетата и по някаква случайност успях да попадна на &lt;a href=&quot;http://ecustoms.bg/eportal/public/DocumentViewer?row_id=265&quot;&gt;http://ecustoms.bg/eportal/public/DocumentViewer?row_id=265&lt;/a&gt; , което се оказа, че е наредбата за създаване на EORI-BG регистрацията. Колко хубаво. Вместо няколко попъпчета с кратко описание на полето, човек трябва да рови в наредби и закони, за да попълни една форма. C’est la vie, или побългарено – тука е така.&lt;/p&gt;
&lt;p&gt;Една наредба няма да ме спре. Диагонално я изчитам и стигам до дъното, където виждам няколко примерни форми, които се ползват за хартиената версия на заявлението. Допопълвам си формата, запазвам, подписвам с ел. подпис и започвам да се надявам.&lt;/p&gt;
&lt;p&gt;Начало на процеса около 18 часа, край 21:43 часа. За едно онлайн заявление.&lt;/p&gt;
&lt;p&gt;По-бързо би било, ако бях отишъл в някоя от софийските митници, където да го направя това на място, само че този EORI номер се издава по постоянен адрес, а аз още се водя в Монтана. Да, но митница в Монтана няма. Най-близката е в Лом, което е на около 40км от Монтана. Аз съм в София. Ако се подаде заявлението на хартия, трябва да се ходи два пъти до там, което изобщо не ми се нрави. Навън е сняг, може да се направи само в работен ден и всичките други красоти на държавната администрация.&lt;/p&gt;
&lt;p&gt;До тук, все още вярвам в електронните системи и се радвам, че няма да се наложи да ходя до другия край на България за нещо толкова дребно (и да спестя едни пари, нали, че от там тръгна всичко).&lt;/p&gt;
&lt;p&gt;Минават два дни, вече е четвъртък, движение по заявлението няма. Вече почвам леко да се съмнявам. Звъннах в съответния Service Desk на митницата, където служителката съвсем учтиво ми каза, че срока е до 5 работни дни и ако след това не е станало, да звънна пак. Добре, ще почакам.&lt;/p&gt;
&lt;p&gt;През деня се разчитам за тези заветни онлайн заявления за EORI и какъв опит са споделили хората и при всички е едно и също – ако имаш късмет – имаш, ако не, чакаш. Някой беше споменал, че са попитали в регионалната митница и са им казали, че такова заявление при тях не било получено. Тук вярата в електронната система започва да се клати заплашително.&lt;/p&gt;
&lt;p&gt;Днес, петък, реших, че ще е добре да проверя дали пък случайно не съм и аз един от тези потърпевши на електронната система. Звъня в митницата в Лом. Учитва служителка ми каза да звънна на отдела, който отговаря за това. Каза ми локален номер за Лом без кода и след няколко глупави въпроса какво е това число, което ми диктува, успях да разбера, че всъщност е друг телефон, на който да звънна. Усмихнахме се един на друг по телефона за тази ситуация и звъннах на телефона, който ми даде.&lt;/p&gt;
&lt;p&gt;От там един отново учтив господин ми вдигна и след като си зададох въпроса ми каза, че те ги обработват, когато дойдат, до нищо не е дошло при тях и ще провери какво се случва и защо не е получено. Да съм звъннел след 10 минутки. Радвам се, че поне отношението на всички по веригата беше човешко и го нямаше онова соц. сопане и надменно говорене. Започнах да чакам и след няма и 5 минути, получавам известие за нов мейл със заглавие: “&lt;strong&gt;Информация за вашата EORI регистрация!&lt;/strong&gt;” УРА! Получих го!&lt;/p&gt;
&lt;p&gt;Пратих го към DHL и сега остана само да бъде освободена пратката и да я получа. Ура! (отново)&lt;/p&gt;
&lt;p&gt;Като за край (или TL;DR;), един по-синтезиран пътеводител за това как да си извадим постоянен EORI номер онлайн:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Изваждате си ел. подпис, ако нямате такъв.&lt;/li&gt;
&lt;li&gt;Отивате на: &lt;a href=&quot;https://eori.customs.bg:8443/&quot;&gt;https://eori.customs.bg:8443/&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Сваляте си &lt;a href=&quot;http://ecustoms.bg/eportal/public/DocumentViewer?row_id=265&quot;&gt;http://ecustoms.bg/eportal/public/DocumentViewer?row_id=265&lt;/a&gt;, за да видите как да попълните полетата. Информацията, която ви трябва е на последните няколко остраници.&lt;/li&gt;
&lt;li&gt;Подавате заявлението и задължително го подписвате. Трябва да видите ред със следната стойност за колоната Действие: &lt;strong&gt;EORI-REG-SIGN&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Изчаквате ден или ако се чувствате късметлия звъните на регионалното поделение на митницата, към което сте подали заявлението и тактично питате дали са го получили, защото ел. система ви давала някакви грешки. Не споменавате, че бързате.&lt;/li&gt;
&lt;li&gt;След кракто време ще получите заветния EORI номер.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Няколко бележки:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Електронният подпис трябва да е на ваше име, тъй като доста данни (имена, ЕГН, mail) от подписа се изваждат при попълването на формата. Т.е. няма как да стане с подпис на приятел.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Системата е доста странна за работа и по някой път е доста своенравна.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Изпратете и подпишете формата, след като внимателно проверите всички полета.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Успешно работи на Chrome на Mac с подпис на Infonotary.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Добавена бележка от коментара на &lt;a href=&quot;http://bisko.be/2017/01/%d0%ba%d0%b0%d0%ba-%d0%b4%d0%b0-%d1%81%d0%b8-%d0%b8%d0%b7%d0%b2%d0%b0%d0%b4%d0%b8%d0%bc-%d0%bf%d0%be%d1%81%d1%82%d0%be%d1%8f%d0%bd%d0%b5%d0%bd-eori-%d0%bd%d0%be%d0%bc%d0%b5%d1%80-%d0%bf%d0%be-%d0%b5/#comment-16471&quot;&gt;Петя&lt;/a&gt; по-надолу:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Когато се опитам да подпиша с електронен подпис и започва изтеглянето на файл(stampitls). След двудневна борба с HelpDesk на Митници ми &lt;a href=&quot;http://bisko.be/wp-content/uploads/2018/05/stampit-sign-esig.pdf&quot;&gt;изпратиха една инструкция&lt;/a&gt;, с която успях да подпиша.&lt;br&gt;
И още нещо – ако сте с адрес в София и решите да получите ЕОРИ номер с ел. подпис при избор на митническо учреждение изберете &lt;strong&gt;ТМУ Столична&lt;/strong&gt; – става за около час, а ако изберете Летище София – може да отнеме до 5 работни дни&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ol&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>Митница</category><category>eori</category><category>еори</category><category>митница</category></item><item><title>ЗЕТ и търговските съобщения (… непоисканите…)</title><link>https://bisko.be/bg/posts/blog/%D0%B7%D0%B5%D1%82-%D0%B8-%D1%82%D1%8A%D1%80%D0%B3%D0%BE%D0%B2%D1%81%D0%BA%D0%B8%D1%82%D0%B5-%D1%81%D1%8A%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D1%8F-%D0%BD%D0%B5%D0%BF%D0%BE%D0%B8%D1%81%D0%BA/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/%D0%B7%D0%B5%D1%82-%D0%B8-%D1%82%D1%8A%D1%80%D0%B3%D0%BE%D0%B2%D1%81%D0%BA%D0%B8%D1%82%D0%B5-%D1%81%D1%8A%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D1%8F-%D0%BD%D0%B5%D0%BF%D0%BE%D0%B8%D1%81%D0%BA/</guid><description>Днес за пореден път се нагледах на “Според ЗЕТ, чл. 6 (1) това търговско съобщение може да е непоискано” и след това 5 страници бълвоч с разни глупости, без никакво форматиране, ясно отделени секции и т.н. Поради това, че ми писна да чета такива глупости се разрових в ЗЕТ да видя какво гласи тоя прословут</description><pubDate>Tue, 24 Aug 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Днес за пореден път се нагледах на “Според ЗЕТ, чл. 6 (1) това търговско съобщение може да е непоискано” и след това 5 страници бълвоч с разни глупости, без никакво форматиране, ясно отделени секции и т.н.&lt;/p&gt;
&lt;p&gt;Поради това, че ми писна да чета такива глупости се разрових в ЗЕТ да видя какво гласи тоя прословут член 6 и чета:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Чл. 6.&lt;/strong&gt; (1) Доставчик на услуги, който изпраща непоискани търговски съобщения по електронната поща без предварително съгласие на получателя, е длъжен да осигури ясното и недвусмислено разпознаване на търговското съобщение като непоискано още с постъпването му при получателя.&lt;/p&gt;
&lt;p&gt;(2) (Изм. – ДВ, бр. 105 от 2006 г., в сила от 24.12.2006 г.) Комисията за защита на потребителите води електронен регистър на електронните адреси на юридическите лица, които не желаят да получават непоискани търговски съобщения, по ред, определен с наредба на Министерския съвет.&lt;/p&gt;
&lt;p&gt;(3) Забранява се изпращането на непоискани търговски съобщения на електронни адреси, вписани в регистъра по ал. 2.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;До тук добре, всичко ясно, съгласен съм. Няма смисъл да се разправям по законовите разпоредби, ще ги трая или ще ги блокна, блябля и продължавам да си дочета алинея 4 и какво виждам:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;(4) &lt;strong&gt;Забранява&lt;/strong&gt; се изпращането на непоискани търговски съобщения на потребители &lt;strong&gt;без предварителното им съгласие.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Иии.. Ъ? Според това излиза, че трябва първо да ми драснат едно мейлче и да ме питат съглсен ли съм да получавам целия тоя бълвоч или не, но те не го правят. Те просто ми заявяват, че според чл.6 (1) това  търговско съобщение може да не е поискано от мен и след това си изливат целия бълвоч в същия мейл. Никъде не ме питат съгласен ли съм или не – направо от вратата за краката.&lt;/p&gt;
&lt;p&gt;Чудя се колко е законна тази практика – да пращат спам без изричното ми съгласие?&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>Random rants</category><category>закони</category><category>спам</category></item><item><title>Фонетика и xorg</title><link>https://bisko.be/bg/posts/blog/phonetics-and-xorg/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/phonetics-and-xorg/</guid><description>В някоя от последните версии на xorg, които се появиха около януари-февруари тази година, във фонетичната подредба са се промъкнали промени на някой, който изобщо не е мислил за редовия потребител и е искал да превърне фонетиката в БДС. Промените се изразяват в това, че са въведени знаците за горни и долни кавички, вместо</description><pubDate>Sat, 15 May 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;В някоя от последните версии на xorg, които се появиха около януари-февруари тази година, във фонетичната подредба са се промъкнали промени на някой, който изобщо не е мислил за редовия потребител и е искал да превърне фонетиката в БДС. Промените се изразяват в това, че са въведени знаците за горни и долни кавички, вместо &amp;#x3C;&gt; и знак за параграф вместо &amp;#x26;, и знак за евро вместо ^.&lt;/p&gt;
&lt;p&gt;За да се поправят тези злодеяния, в &lt;strong&gt;~/.bashrc&lt;/strong&gt; се добавят следните редове:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;xmodmap -e “keycode 16 = 7 ampersand 7 ampersand”&lt;/p&gt;
&lt;p&gt;xmodmap -e “keycode 12 = 3 numbersign 3 numbersign”&lt;/p&gt;
&lt;p&gt;xmodmap -e “keycode 15 = 6 asciicircum 6 asciicircum”&lt;/p&gt;
&lt;p&gt;xmodmap -e “keycode 20 = minus underscore minus underscore”&lt;/p&gt;
&lt;p&gt;xmodmap -e “keycode 59 = comma less comma less”&lt;/p&gt;
&lt;p&gt;xmodmap -e “keycode 60 = period greater period greater”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;И след това се логаут-вате и после обратно log-in в системата и вече би трябвало да си имате старата подредба на символите.&lt;/p&gt;
&lt;p&gt;П.п. има още една промяна, която е, че вместо главно ь(ер малък, латинско x) е сложено ѝ (и ударено), което смятам за полезно и не съм отразил в горните промени.&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>Funny</category><category>Random rants</category><category>Tech</category></item><item><title>Премахване на паролата за заключване на iPhone</title><link>https://bisko.be/bg/posts/blog/removing-iphone-passcode-lock/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/removing-iphone-passcode-lock/</guid><description>Вчера пийнах няколко питиета и реших да сложа парола на iPhone-а си, just in case някой се опита да ровичка в него (глупава параноя)… Така че сложих паролата, въведох я два пъти в настройките, зададох я на числото, за което мислех, че въвеждам, и след това</description><pubDate>Sat, 14 Nov 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Вчера пийнах няколко питиета и реших да сложа парола на iPhone-а си, за всеки случай, ако някой се опита да ровичка в него (глупава параноя)… Така че сложих паролата, въведох я два пъти в настройките, зададох я на числото, за което вярвах, че въвеждам, и после заключих телефона (бутона за захранване/заспиване). После се опитах да го отключа и се оказа, че съм успял да въведа два пъти число, което не е това, което исках. Така че през остатъка от нощта се опитвах да разбера кое е числото, но все още без успех.&lt;/p&gt;
&lt;p&gt;Сега, с по-трезва глава, намерих начин да премахна паролата за заключване (заедно с всички останали пароли на телефона, уви).&lt;/p&gt;
&lt;p&gt;И така, стъпките са следните:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Влезте във файловата система на телефона (на linux е лесно – вижте &lt;a href=&quot;http://marcansoft.com/blog/2009/10/iphone-syncing-on-linux-part-2/&quot; title=&quot;Marcansoft&quot;&gt;http://marcansoft.com/blog/2009/10/iphone-syncing-on-linux-part-2/&lt;/a&gt; за достъп до файловата система на iPod – същото важи за iPhone и iPod touch).&lt;/li&gt;
&lt;li&gt;След това отидете в &lt;strong&gt;/private/var/Keychains&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Преместете файла &lt;strong&gt;keychain-2.db&lt;/strong&gt; на друго място, напр. в /&lt;/li&gt;
&lt;li&gt;След това отидете в &lt;strong&gt;/var/mobile/Library/Preferences/&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Преместете файла &lt;strong&gt;com.apple.springboard.plist&lt;/strong&gt; на друго място, напр. в /&lt;/li&gt;
&lt;li&gt;След това трябва да убиете springboard-а (&lt;strong&gt;killall SpringBoard&lt;/strong&gt;, ако сте влезли през SSH) &lt;strong&gt;или просто да рестартирате&lt;/strong&gt; телефона.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ето, това е всичко.&lt;/p&gt;
&lt;p&gt;Страничният ефект от това упражнение е, че ще загубите всичките си пароли за пощенски акаунти, exchange акаунти и подредбата на иконите на springboard-а, но все пак няма да се наложи да флашвате телефона наново 🙂&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>Random rants</category><category>Tech</category><category>drinkingisbad</category><category>Funny</category><category>iphone</category><category>ipod</category><category>ipod touch</category><category>lock</category><category>lockdown</category><category>passcode</category></item><item><title>Последните капки батерия…</title><link>https://bisko.be/bg/posts/blog/last-drops-of-battery/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/last-drops-of-battery/</guid><description>Днес вечерта в квартала ми имаше малък блекаут и реших, че е време да подложа батерията на моя Acer 5935g на изпитание. Извадих захранващия кабел и продължих филмовата си вечер с Dexter S02. Ето и крайния резултат от моя малък тест на батерията: 1:30 часа – филми, 35 минути сърфиране</description><pubDate>Tue, 08 Sep 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Днес вечерта в квартала ми имаше малък блекаут и реших, че е време да подложа батерията на моя Acer 5935g на изпитание. Извадих захранващия кабел и продължих филмовата си вечер с Dexter S02.&lt;/p&gt;
&lt;p&gt;Ето и крайния резултат от моя малък тест на батерията:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1:30 часа – филми&lt;/li&gt;
&lt;li&gt;35 минути сърфиране&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Това прави общо 2:05 часа гарантирана издръжливост на батерията (поне) и все още имам почти половин час резерв, за да довърша някои текстове, по които работя.&lt;/p&gt;
&lt;p&gt;Всъщност за първи път се доближавам толкова много до времето на работа на батерията, обявено в спецификациите от производителя. Радвам се, че избрах Acer 🙂&lt;/p&gt;
&lt;p&gt;Системата, на която тествах батерията, е:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Acer 5935g (оригинална батерия)&lt;/li&gt;
&lt;li&gt;Windows Vista SP2 64bit&lt;/li&gt;
&lt;li&gt;активна GeForce 130M (не вградената Intel 4500)&lt;/li&gt;
&lt;li&gt;мишка Razer Copperhead&lt;/li&gt;
&lt;li&gt;60% яркост през цялото време&lt;/li&gt;
&lt;li&gt;Skype, работещ на заден план&lt;/li&gt;
&lt;li&gt;WiFi включен, свързан към мрежа&lt;/li&gt;
&lt;li&gt;KMplayer, който пуска DivX (с много превъртане (не мога да изгледам филм от началото до края без превъртане 🙂 )&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Предстои тест под Linux със същите дейности. Първо обаче трябва да го инсталирам и конфигурирам, а това ще стане някой път, когато имам свободно време.&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>Tech</category><category>acer</category><category>battery</category><category>cool</category><category>regards</category><category>video</category></item><item><title>Грешка E16 при фотоапарат Canon</title><link>https://bisko.be/bg/posts/blog/error-e16-canon-camera/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/error-e16-canon-camera/</guid><description>Историята започна вчера, когато баща ми ми писа, че се е скапал фотоапарата (Canon A610) и единственото, което прави при пускане (в режим снимане) е да изкара обектива, да го прибере и на черен фон да изведе Error E16 Разтърсих се в интернет и повечето информация гласеше, че проблема е неизвестен и не се случва</description><pubDate>Wed, 02 Sep 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Историята започна вчера, когато баща ми ми писа, че се е скапал фотоапарата (&lt;strong&gt;Canon A610&lt;/strong&gt;) и единственото, което прави при пускане (в режим снимане) е да изкара обектива, да го прибере и на черен фон да изведе&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Error E16&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Разтърсих се в интернет и повечето информация гласеше, че &lt;strong&gt;проблема е неизвестен&lt;/strong&gt; и не се случва рядко, да се прател апарата в Canon и те ще го сменят.&lt;/p&gt;
&lt;p&gt;До тук хубаво, само дето гаранцията на фотоапарата изтече преди година и нещо (&lt;strong&gt;не е гаранционен&lt;/strong&gt; с една дума, защото е купен Май 2006-та) .&lt;/p&gt;
&lt;p&gt;При това аз бях без решение, докато баща ми не се чатнал и не пробвал &lt;strong&gt;стандартното&lt;/strong&gt; при “жълта” техника – &lt;strong&gt;БОЙ&lt;/strong&gt;! 🙂&lt;/p&gt;
&lt;p&gt;Оказва се, че при &lt;strong&gt;силно разтърсване или попляскване&lt;/strong&gt; на апарата &lt;strong&gt;грешката&lt;/strong&gt; има голям шанс &lt;strong&gt;да изчезне и да работи&lt;/strong&gt; нормално апарата.&lt;/p&gt;
&lt;p&gt;Но това крие своите &lt;strong&gt;рискове&lt;/strong&gt; – ако веднъж се е появила, евентуално &lt;strong&gt;ще се появи пак&lt;/strong&gt;, всичко е &lt;strong&gt;въпрос на време&lt;/strong&gt;. Така че трябва да мислите за &lt;strong&gt;нов фотоапарат&lt;/strong&gt;, докато успеете да се крепите със стария.&lt;/p&gt;
&lt;p&gt;Към цялото нещо има и “готин” страничен ефект – видеото работи “на половина”, което може да видите на следния линк: E16 error on Canon A610&lt;/p&gt;
&lt;p&gt;--- ## External Downloads Saved Locally - [&lt;a href=&quot;http://www.youtube.com/watch?v=fQGdaOgQt9M%5C&quot;&gt;http://www.youtube.com/watch?v=fQGdaOgQt9M\&lt;/a&gt;](media/грешка-e16-при-фотоапарат-canon-Canon A610 E16 error video.mkv)&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>camera</category><category>canon</category><category>chinatech</category><category>e16</category><category>error</category><category>fix</category></item><item><title>iPhone 3.0</title><link>https://bisko.be/bg/posts/blog/iphone-30/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/iphone-30/</guid><description>Уааааа…. радвам се като малко дете 😉 Вече се обзаведох с последната версия на iPhone OS, а именно дългоочакваната версия 3.0. На пръв поглед е голяма заигравка, докато се разучат новите (естествено полезните неща) в новия фирм. Ето някои, които аз лично намирам полезни: Spotlight (първи екран (нулев, ако считаме Home за първи) – много</description><pubDate>Fri, 19 Jun 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Уааааа…. радвам се като малко дете 😉&lt;/p&gt;
&lt;p&gt;Вече се обзаведох с последната версия на iPhone OS, а именно дългоочакваната версия 3.0.&lt;br&gt;
На пръв поглед е голяма заигравка, докато се разучат новите (естествено полезните неща) в новия фирм. Ето някои, които аз лично намирам полезни:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Spotlight&lt;/strong&gt; (първи екран (нулев, ако считаме Home за първи) – много радва. Пишеш 3 букви и си звъннал на който трябва или си пуснал песента, която искаш. Може да се настрои от опциите да е достъпен при 2-но цъкане на Home бутона.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Landscape&lt;/strong&gt; (екрана с краката настрани)- няма такъв кеф просто 🙂 . SMS, e-mail, notes – всичко в лендскейп … ААААААААААА (радостни викове)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copy&amp;#x26;Paste&amp;#x26;Undo&amp;#x26;…&lt;/strong&gt; (това дето го нямаше досега)  – много хитро е измислена функционалността за копиране и пействане. (може да се види в ревю-тата). Досега 2  бъга открих. При първо копиране на картинка + текст, копира само картинката. Другия бъг е, ако сте маркирали нещо за копиране в Safari, ако го угасите и го пуснете пак веднага първо виждате маркираната област и тогава зарежда каквото и да било друго.&lt;/li&gt;
&lt;li&gt;По-подробен &lt;strong&gt;Call Log&lt;/strong&gt; (телефонен logger) – вече в Phone.app се показва по-подробна информация за разговорите, проведени с даден номер – примерно продължителност на разговора, кога е провден, какъв е статуса на разговора.&lt;/li&gt;
&lt;li&gt;Възможност за изключване на SMS Reminder от опциите -&gt; Settings -&gt; General -&gt; Messages -&gt; Repeat Alert – спасение от стряскащите вибро-звуци от телефона, когато забравите да отворите, вече прочетения от хоум скрийн-а SMS.&lt;/li&gt;
&lt;li&gt;Подобрения в &lt;strong&gt;iPod&lt;/strong&gt; – &lt;strong&gt;Shake to Shuffle&lt;/strong&gt; ( клатиш телефона настрани и сменя с рандом песен ) – удобно, но трябва доста силно да се разтресе. (note to self: да се тества в маршрутка и в градския);  В подкастите има ЕЙ ТОЛКОВА голям &lt;strong&gt;бутон за връщане на 30 секунди назад&lt;/strong&gt; в плейвания подкаст. До него се намира и &lt;strong&gt;бутона 1x(2x,1/2x)&lt;/strong&gt;, ако искате да забързате, забавите скоростта на слушания подкаст. (много забавно звучи, особено ако слушате нещо достатъчно бързо); Възможност за преглеждане на подкасти онлайн и след това да ги свалите на телефона си.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;СКОРОСТ&lt;/strong&gt; – стреснах се … телефона работи поне едно 60% по-бързо отколкото 2.2.1. Отварянето на приложения става със скоростта на светлината. Затварянето също. Вече дори не засича звука, докато отварям или затварям друго приложение или самия iPod.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;За други не се сещам в момента, но обещавам да допълня списъка, след като открия нови полезни неща в новия фирм.&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>cool</category><category>iphone</category><category>update</category></item><item><title>IE daily</title><link>https://bisko.be/bg/posts/blog/ie-daily/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/ie-daily/</guid><description>Ако по някой път, незнайно откъде, ви се ‘накъсват’ бордърите на някакъв елемент в ИЕ6,7, пробвайте да сложите background на елемента и има голям шанс да мине номера.</description><pubDate>Sat, 30 May 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ако по някой път, незнайно откъде, ви се ‘накъсват’ бордърите на някакъв елемент в ИЕ6,7, пробвайте да сложите background на елемента и има голям шанс да мине номера.&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>bug</category><category>ie</category></item><item><title>Ще се впише ли в обектива?</title><link>https://bisko.be/bg/posts/blog/will-it-lens/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/will-it-lens/</guid><description>Пичовете в Google са яко изтрещяли 🙂 http://googleblog.blogspot.com/2009/04/will-it-lens.html</description><pubDate>Sat, 11 Apr 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Пичовете в Google са яко изтрещяли 🙂&lt;br&gt;
&lt;a href=&quot;http://googleblog.blogspot.com/2009/04/will-it-lens.html&quot;&gt;http://googleblog.blogspot.com/2009/04/will-it-lens.html&lt;/a&gt;&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>google</category><category>lens</category></item><item><title>Леля Ваца … или със старци на път</title><link>https://bisko.be/bg/posts/blog/lelq-vaca/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/lelq-vaca/</guid><description>Петък 13:30 … последни минути на работа. Подписвам заповедда за напускане, последни думи и тръгвам към Централна гара. Качвам се на трамвая и внимателно почвам да си пресмятам времето и да се боря с лакомото ми аз, по въпроса дали да мина през McDonalds, за да си взема нещо или не… Успявам да го преборя,</description><pubDate>Sun, 09 Nov 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Петък 13:30 … последни минути на работа. Подписвам заповедда за напускане, последни думи и тръгвам към Централна гара. Качвам се на трамвая и внимателно почвам да си пресмятам времето и да се боря с лакомото ми аз, по въпроса дали да мина през McDonalds, за да си взема нещо или не… Успявам да го преборя, тъй като по груби сметки може и да не успея да стигна до гарата до 3:15, когато имах среща с баце Иржи. &lt;/p&gt;
&lt;p&gt;Естествено грубите ми сметки изобщо не бяха точни … стигнах близо 40 минути по-рано … В този момент лакомото ми аз (което от тук натам, за по-кратко, ще го наричам Прасчо), започна да ми натяква: “А можеше и да минеш и да вземеш нещо за ядене, нали!”. След няколко псувни по адрес на Прасчо влязох в гарата и останах като гръмнат… “Баси! Толкова хора не бях виждал на тая гара!!!”. Беше по-пълно от … не знам какво… гъчканица беше 🙂 . Видях, че няма място по пейките и излязох отвън, и седнах на стълбите под часовника. Пратих смс на Иван, че е лудница, при което получавам инструкция за закупуване на моментално закупуване на билети :).&lt;/p&gt;
&lt;p&gt;Върнах се вътре и веднага на малките каси… минах изключително бързо. Естествено нормално, защото имаше само 2-3 души преди мен, докато на другите каси беше някаква лудница. Взех билети, естествено с места и отново зачаках отвън. Иван дойде към 15:40, защото градския транспорт от своя страна са лоши хора, заедно с такситата 🙂 и зачакахме на таблото да напишат къде ще се композира нашия влак. Седим си, чакаме си, седим си, чакаме си … става :50… още никаква информация.. в този момент сме в положение “Бах мама му”, заедно с цялата останала гара. &lt;/p&gt;
&lt;p&gt;В един момент започват по звуко-съобщителната-система(или както му се вика на това) да казват кой влак къде е и виждаме как цялата гара се юрва към пероните… &lt;/p&gt;
&lt;p&gt;След бързо бутане, ръгане, настъпване, на което биха цъкали с език играчите от отборите по американски футбол, се добираме до перона и започваме да си търсим местата. Тук 12-ти вагон, там 12-ти вагон…. хоп целия влак прехождаме и стигаме до вагона. Мушкаме се бързо вътре, тъй като е 15:58 и очакваме всеки момент влака да потегли, а вътре…. ах вътре… Вътре трябваше или да си микроб, за да се провреш или някакъв супермен, за да избуташ хората, които трескаво се гъцкаха по коридорите. Добре че местата ни бяха във 2-рото купе, а не някъде по средата, защото имаше реален шанс да се стигне до сцена от “Кървав спорт Х”. &lt;/p&gt;
&lt;p&gt;В крайна сметка се настанихме и чакахме влака да тръгне. След има-няма 2 минути идват някакви старци със запазени места в нашето купе и набързо гонят ‘натрапниците’ (въпреки, че ги познавахме, ама … съдба). За жалост 2-те досадни бабички от Берковица си останаха … настаниха се всички и започнахме да чакаме, да тръгне влака. &lt;/p&gt;
&lt;p&gt;Естествено през това време разпознавам единия старец, който живееше до преди няколко години до нас. Той пък не ме разпознава… явно деменцията си казва думата 😀&lt;/p&gt;
&lt;p&gt;Ще пропусна повечето детайли тъй като са толкова много, че трудно се помнят, но ще спомена един, който направо ме разби от смях:&lt;/p&gt;
&lt;p&gt; &lt;em&gt;…&lt;br&gt;
– Абе той всяка сутрин пие кафе при леля Ваца!&lt;br&gt;
– Леля Ваца?&lt;br&gt;
– Да бе, на чашите пишело леля Ваца и то па да вземе да се окаже, че това било lavAzza&lt;br&gt;
…&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;И така нататък цели 4 часа старчески хумор, който на моменти “ти къса диафрагмата и слизаш на Септември(гара), за да ти присадят нова”.&lt;/p&gt;
&lt;p&gt;В крайна сметка пристигнахме в Монтана с около час закъснение, но все пак час, който мина бързо 🙂 По този повод – ако путъвате в купе пълно със стари хора и има поне 2-ма дядовци, не съжалявайте, купона е гарантиран 😀&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>Funny</category><category>Travel</category></item><item><title>Тук?</title><link>https://bisko.be/bg/posts/blog/post-2008-11-01/</link><guid isPermaLink="true">https://bisko.be/bg/posts/blog/post-2008-11-01/</guid><description>История за един странен ден и покупката на DreamHost хостинг.</description><pubDate>Sat, 01 Nov 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Вчера беше странен ден… &lt;/p&gt;
&lt;p&gt;Сутринта, дори с лекото, късно тръгване, стигнах до работа навреме. Явно задръстването работеше в моя полза. Денят от своя страна продължи нормално до някъде към 1 часа следобед, когато Цветан ми прати линк към някаква промоция на DreamHost по случай 11-тия им рожден ден.&lt;br&gt;
Отворих я и се зачетох.. след всеки ред на таблицата с характеристиките на хостинга, очите ми ставаха все по-големи и по-лакоми (че то даже и лиги потекоха :D ).&lt;br&gt;
Набързо стана ясно, че това е нещото и ще се купи, НО изникна проблем - как да се плати. Аз имам карта с активирани електронни разплащания, ама нямам пари в нея, а пък Цветан има пари, но няма електронни разплащания - удряме на камък … или по-скоро гранит направо.&lt;/p&gt;
&lt;p&gt;Следваща стъпка - той ще ми прати пари през ePay.bg и аз ще платя.  Всичко точно, до момента в който се оказва, че аз там имам статус като някакъв келеш и дневния ми лимит е … 50лв за получаване. Бързо почвам да търся как да стана ‘познат’ потребител и оставам потресен от информацията:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Как да премина в по-високо ниво&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;За да преминете към ниво “2” - “познат клиент”, е необходимо да имате регистрирана банкова карта в своя потребителски профил, с която да платите поне 5 комунални сметки за ток, вода, телефон, парно и т.н през системата (плащането на предплатена услуга не се счита за плащане на комунална сметка).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ааайде бре! Поне 5 комунални сметки … какви са тез глупости. Да нямам собствена къща, за която да плащам тия сметки. Глупости на търкалета. Да бяха искали снимка на лична карта или нещо такова, да… ама това е прекалено, особено, ако ти трябва да прехвърлиш известно количество пари ей сега, на момента.&lt;/p&gt;
&lt;p&gt;Вече усещам как промоцията се изплъзва като насапунисана чаша от ръчичките ни. При това положение опираме до най-крайния вариант - той ще превде пари от Варна директно по сметката ми в Пощенска банка и се надяваме да стане работата. Давам му IBAN, той заминава да внася. Звъни ми след 25-30-40 минути: “преведох, казаха, че до 2 часа ще са отразени промените в и-банкирането”. Естествено при информацията за 2-та часа останах потресен, как може да стане цялата работа ‘на косъм’ и изчаквам 15 дъълги минути, влизам в e-postbank и вече с ЕЙ ТАКИВА очи и паднало чене виждам, че сумата е пристигнала. &lt;/p&gt;
&lt;p&gt;Трескаво отварям линка, който Цветан ми прати малко по-рано към кошницата в Google Checkout, попълвам данните си, цъкам Check out и готово… В този момент в главата ми напираха милиони въпросителни, как така тук няма никакви потвърждения на акаунта, както в Moneybookers или PayPal, не искат никакви тегления на суми или такива простотии, а просто си попълваш информацията цъкаш плати и готово… &lt;/p&gt;
&lt;p&gt;След това му хвърлих СМС, че съм платил и си хванах багажа и тръгнах към Централна гара, за да си ходя на Монтана. Там се видях с няколко ‘спътници’, взехме си билети и се качихме във влака. Тръгнахме, но не можех да чакам още 3 часа, за да разбера станало ли е наистина плащането и звъннах на Цветан, който потвърди, че всичко е нормално. Това свали паве от сърцето ми и си отдъхнах. &lt;/p&gt;
&lt;p&gt;От този ден следват 4 неща: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ePay са мизерници, заедно с PayPal и Moneybookers.&lt;/li&gt;
&lt;li&gt;Пощенска банка продължава да затвърждава мнението ми, че са правилния избор.&lt;/li&gt;
&lt;li&gt;Google както обикновено къртят миФки с опростените си процедури.&lt;/li&gt;
&lt;li&gt;Dreamhost ме кефят! (само нещо ъплоуда натам съксва много яко, но по тоя въпрос по-натам)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;П.П. Мамка му, вече дължа на Цветан 90 кинта :-D&lt;/p&gt;</content:encoded><category>blog</category><category>travel</category><category>random</category></item></channel></rss>