<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arhiva speedtest - Hetrih.com</title>
	<atom:link href="https://hetrih.com/tag/speedtest/feed/" rel="self" type="application/rss+xml" />
	<link>https://hetrih.com/tag/speedtest/</link>
	<description>Razvij, testiraj, lansiraj</description>
	<lastBuildDate>Mon, 02 Dec 2024 06:39:27 +0000</lastBuildDate>
	<language>hr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.1</generator>

<image>
	<url>https://hetrih.com/wp-content/uploads/2023/01/cropped-Logo-za-ikonicu-weba-512x512-1-32x32.png</url>
	<title>Arhiva speedtest - Hetrih.com</title>
	<link>https://hetrih.com/tag/speedtest/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Kako (i zašto) sam automatizirao praćenje brzine interneta – Python i Docker</title>
		<link>https://hetrih.com/automatizacija-pracenja-brzine-interneta-python-i-docker/</link>
		
		<dc:creator><![CDATA[josip]]></dc:creator>
		<pubDate>Sun, 01 Dec 2024 06:16:50 +0000</pubDate>
				<category><![CDATA[Dev članci]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[speedtest]]></category>
		<guid isPermaLink="false">https://hetrih.com/?p=14943</guid>

					<description><![CDATA[<p>Ako živite u području s lošom infrastrukturom, sigurno ćete razumjeti moju frustraciju. U večernjim satima, kada je veći broj korisnika i uređaja na mreži, moja brzina downloada često pada na 1 Mbps, unatoč tome što plaćam za daleko bolji paket. ISP provider jednostavno ne nudi odgovarajuće rješenje, a ja ostajem zaglavljen s nepouzdanom vezom.  [...]</p>
<p>Objava <a href="https://hetrih.com/automatizacija-pracenja-brzine-interneta-python-i-docker/">Kako (i zašto) sam automatizirao praćenje brzine interneta – Python i Docker</a> pojavila se prvi puta na <a href="https://hetrih.com">Hetrih.com</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling" style="--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;" ><div class="fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap" style="max-width:1248px;margin-left: calc(-4% / 2 );margin-right: calc(-4% / 2 );"><div class="fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-flex-column" style="--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;"><div class="fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column"><div class="fusion-text fusion-text-1"><p>Ako živite u području s lošom infrastrukturom, sigurno ćete razumjeti moju frustraciju. U večernjim satima, kada je veći broj korisnika i uređaja na mreži, moja brzina downloada često pada na <strong>1 Mbps</strong>, unatoč tome što plaćam za daleko bolji paket. ISP provider jednostavno ne nudi odgovarajuće rješenje, a ja ostajem zaglavljen s nepouzdanom vezom. Za vrijeme učitavanja ovakvog članka stignem skuhati (i popiti) kavu&#8230;</p>
<p>Nakon višemjesečnih problema, odlučio sam istražiti druge opcije. Kao privremeno rješenje, isprobat ću mobilni 4G internet kod drugog providera, bez ugovorne obveze. Za testiranje sam si dao nekih desetak dana. Međutim, ručno provođenje testova brzine svakih sat vremena ili nekoliko puta dnevno brzo bi postalo zamorno. Zato sam odlučio <strong>automatizirati proces testiranja brzine interneta</strong>, a na kraju razdoblja napravit ću analizu podataka kako bih donio konačnu odluku.</p>
<p>U ovom članku podijelit ću kako sam izradio skriptu za redovno testiranje brzine, spremanje rezultata i pakiranje svega u Docker kontejner.</p>
<p><!-- notionvc: bb8d2b56-3596-4ad2-b5ed-ff5eadf5906f --></p>
</div><div class="fusion-text fusion-text-2"><p><span style="color: var(--awb-text-color); font-family: var(--awb-text-font-family); font-size: var(--awb-font-size); font-style: var(--awb-text-font-style); letter-spacing: var(--awb-letter-spacing); text-align: var(--awb-content-alignment); text-transform: var(--awb-text-transform); background-color: var(--awb-bg-color-hover);"><b>Što ćemo raditi? Rješenje koje:</b></span></p>
<p>1. Redovno (npr. svakih sat vremena) mjeri brzinu interneta.</p>
<p>2. Sprema podatke (download, upload, ping, ISP i IP adresu) u log datoteku.</p>
<p>3. Može se pokrenuti na bilo kojem sustavu uz Docker.</p>
<p>4. Omogućava kasniju analizu oscilacija brzine tijekom testnog razdoblja.</p>
</div><div class="fusion-title title fusion-title-1 fusion-sep-none fusion-title-text fusion-title-size-one"><h1 class="fusion-title-heading title-heading-left" style="margin:0;">Korak 1: Python skripta za testiranje brzine</h1></div><div class="fusion-text fusion-text-3"><p>Prvo, trebamo Python skriptu koja koristi modul <span class="notion-enable-hover" spellcheck="false" data-token-index="1">speedtest</span> za provođenje testova brzine i zapisivanje rezultata u log (.txt) file. Evo kako izgleda:<!-- notionvc: a187e332-3f3a-472e-8f13-06f63f649e47 --></p>
</div><script src="https://gist.github.com/josiphetrih/8001127c2a68655f6bb68e83389a02a0.js"></script><div class="fusion-text fusion-text-4"><h3>Objašnjenje:</h3>
<ul>
<li>Skripta koristi biblioteku <code>speedtest-cli</code> za mjerenje download, upload brzine i pinga.</li>
<li>Log datoteka (<code>speed_test_log.txt</code>) se čuva unutar <code>/app/logs</code> direktorija.</li>
<li>Interval između testova preuzima se iz environment varijable <code>INTERVAL</code>, što omogućava promjenu prilikom pokretanja kontejnera s <i><b>docker-compose</b></i>.</li>
</ul>
<p><!-- notionvc: 203594f7-0551-4dc8-83ae-bef51dc0a6a8 --></p>
</div><div class="fusion-title title fusion-title-2 fusion-sep-none fusion-title-text fusion-title-size-one"><h1 class="fusion-title-heading title-heading-left" style="margin:0;">Korak 2: Kreiranje Dockerfile-a</h1></div><div class="fusion-text fusion-text-5"><p>Evo Dockerfile-a za našu aplikaciju:</p>
</div><script src="https://gist.github.com/josiphetrih/881eeb41d974e2b3d821fe6f602df756.js"></script><div class="fusion-title title fusion-title-3 fusion-sep-none fusion-title-text fusion-title-size-one"><h1 class="fusion-title-heading title-heading-left" style="margin:0;">Korak 3: Konfiguracija Docker Compose-a</h1></div><div class="fusion-text fusion-text-6"><p>omoću Docker Compose-a možemo jednostavno pokrenuti našu aplikaciju i postaviti &#8220;volume&#8221; za spremanje logova:</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-1 > .CodeMirror, .fusion-syntax-highlighter-1 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color7);}.fusion-syntax-highlighter-1 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color7); }.fusion-syntax-highlighter-1 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color1); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-1 fusion-syntax-highlighter-theme-dark" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:var(--awb-color6);"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_1" style="font-size:14px;">Kopiraj</span></div><label for="fusion_syntax_highlighter_1" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_1" data-readOnly="nocursor" data-lineNumbers="1" data-lineWrapping="" data-theme="hopscotch" data-mode="text/yaml">services:
  speedtest:
    build:
      context: .
    container_name: speedtest_logger
    volumes:
      - ./logs:/app/logs  # Sprema logove u lokalni ./logs direktorij
    environment:
      - INTERVAL=1800  # Postavite interval testiranja (30 minuta)
    restart: unless-stopped</textarea></div><div class="fusion-text fusion-text-7"><p><strong>Važno:</strong> volume dodajemo kako bi sačuvali log file lokalno. U suprotnom ćemo nakon zaustavljanja kontejnera izgubiti sve podatke.</p>
</div><div class="fusion-title title fusion-title-4 fusion-sep-none fusion-title-text fusion-title-size-one"><h1 class="fusion-title-heading title-heading-left" style="margin:0;">Korak 4: Pokretanje aplikacije</h1></div><div class="fusion-text fusion-text-8"><p><span class="notion-enable-hover" data-token-index="0">Kreirajte direktorij za projekt</span>:<!-- notionvc: cd500530-f31a-4e00-82fa-9be756580ff0 --></p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-2 > .CodeMirror, .fusion-syntax-highlighter-2 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color7);}.fusion-syntax-highlighter-2 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color7); }.fusion-syntax-highlighter-2 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color1); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-2 fusion-syntax-highlighter-theme-dark" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:var(--awb-color6);"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_2" style="font-size:14px;">Kopiraj</span></div><label for="fusion_syntax_highlighter_2" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_2" data-readOnly="nocursor" data-lineNumbers="1" data-lineWrapping="" data-theme="hopscotch" data-mode="text/x-sh">mkdir speedtest_project
cd speedtest_project</textarea></div><div class="fusion-text fusion-text-9"><p><strong> </strong></p>
<p><strong>Postavite datoteke</strong>:</p>
<ul>
<li style="list-style-type: none;">
<ul>
<li>Kopirajte <code>speed_test.py</code>, <code>Dockerfile</code> i <code>docker-compose.yml</code> u projektni direktorij.</li>
</ul>
</li>
</ul>
<p><!-- notionvc: 7de8be6d-370b-49ef-b808-1bff46c9b235 --></p>
</div><div class="fusion-text fusion-text-10"><p><b><span class="notion-enable-hover" data-token-index="0">Pokrenite aplikaciju</span>:</b><!-- notionvc: f30b1539-06cc-488d-a759-e01c3c9284f5 --></p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-3 > .CodeMirror, .fusion-syntax-highlighter-3 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color7);}.fusion-syntax-highlighter-3 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color7); }.fusion-syntax-highlighter-3 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color1); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-3 fusion-syntax-highlighter-theme-dark" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:var(--awb-color6);"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_3" style="font-size:14px;">Kopiraj</span></div><label for="fusion_syntax_highlighter_3" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_3" data-readOnly="nocursor" data-lineNumbers="1" data-lineWrapping="" data-theme="hopscotch">docker-compose up -d</textarea></div><div class="fusion-text fusion-text-11"><p><b><span class="notion-enable-hover" data-token-index="0"> </span></b></p>
<p><b><span class="notion-enable-hover" data-token-index="0">Provjerite status</span>:</b><!-- notionvc: 7ea54f70-7d1b-476c-8140-aec400735ef1 --></p>
</div><div class="fusion-text fusion-text-12"></div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-4 > .CodeMirror, .fusion-syntax-highlighter-4 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color7);}.fusion-syntax-highlighter-4 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color7); }.fusion-syntax-highlighter-4 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color1); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-4 fusion-syntax-highlighter-theme-dark" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:var(--awb-color6);"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_4" style="font-size:14px;">Kopiraj</span></div><label for="fusion_syntax_highlighter_4" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_4" data-readOnly="nocursor" data-lineNumbers="1" data-lineWrapping="" data-theme="hopscotch">docker ps</textarea></div><div class="fusion-text fusion-text-13"><p><b><span class="notion-enable-hover" data-token-index="0">Provjerite logove</span>:</b><!-- notionvc: 967a9855-25d5-4ad9-a7cf-4db25c7ed16a --></p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-5 > .CodeMirror, .fusion-syntax-highlighter-5 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color7);}.fusion-syntax-highlighter-5 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color7); }.fusion-syntax-highlighter-5 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color1); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-5 fusion-syntax-highlighter-theme-dark" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:var(--awb-color6);"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_5" style="font-size:14px;">Kopiraj</span></div><label for="fusion_syntax_highlighter_5" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_5" data-readOnly="nocursor" data-lineNumbers="1" data-lineWrapping="" data-theme="hopscotch" data-mode="text/x-sh">docker logs speedtest_logger</textarea></div><div class="fusion-text fusion-text-14"><p><strong><span class="notion-enable-hover" data-token-index="0">Pregledajte spremljene rezultate</span>: </strong></p>
<p>Svi rezultati se nalaze u lokalnom <span class="notion-enable-hover" spellcheck="false" data-token-index="2">logs</span> direktoriju. Otvorite <span class="notion-enable-hover" spellcheck="false" data-token-index="4">speed_test_log.txt</span> za detalje.<!-- notionvc: 5b425551-3725-46e6-b961-f473dc1eb01e --></p>
<p>Rezultati će izgledati ovako:</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-6 > .CodeMirror, .fusion-syntax-highlighter-6 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color7);}.fusion-syntax-highlighter-6 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color7); }.fusion-syntax-highlighter-6 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color1); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-6 fusion-syntax-highlighter-theme-dark" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:var(--awb-color6);"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_6" style="font-size:14px;">Kopiraj</span></div><label for="fusion_syntax_highlighter_6" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_6" data-readOnly="nocursor" data-lineNumbers="1" data-lineWrapping="" data-theme="hopscotch">2024-11-30 20:26:29 - ISP: Najgori ISP, IP: xx.xxx.xxx.xxx, Download: 1.67 Mbps, Upload: 1.30 Mbps, Ping: 102.678 ms
2024-12-01 06:20:21 - ISP: Najgori ISP, IP: xx.xxx.xxx.xxx, Download: 10.70 Mbps, Upload: 3.32 Mbps, Ping: 51.024 ms</textarea></div><div class="fusion-text fusion-text-15"><p>Nakon što prikupim podatke za 10 dana, analizirat ću logove pomoću Python skripte i donijeti odluku o prelasku na novog providera.</p>
<p>Nadam se da vam ova skripta neće trebati za rješavanje problema koji ja imam, no ako ih imate ili se samo želite igrati, vjerujem da će pomoći! 😊</p>
</div><div class="fusion-text fusion-text-16"></div></div></div></div></div>
<p>Objava <a href="https://hetrih.com/automatizacija-pracenja-brzine-interneta-python-i-docker/">Kako (i zašto) sam automatizirao praćenje brzine interneta – Python i Docker</a> pojavila se prvi puta na <a href="https://hetrih.com">Hetrih.com</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
