Byl publikován přehled vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie) za uplynulé dva měsíce. Servo zvládne už i Gmail. Zakázány jsou příspěvky generované pomocí AI.
Raspberry Pi Connect, tj. oficiální služba Raspberry Pi pro vzdálený přístup k jednodeskovým počítačům Raspberry Pi z webového prohlížeče, byla vydána v nové verzi 2.5. Nejedná se už o beta verzi.
Google zveřejnil seznam 1272 projektů (vývojářů) od 185 organizací přijatých do letošního, již jednadvacátého, Google Summer of Code. Plánovaným vylepšením v grafických a multimediálních aplikacích se věnuje článek na Libre Arts.
Byla vydána (𝕏) dubnová aktualizace aneb nová verze 1.100 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.100 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána v nové verzi 2025.5.
OpenSearch (Wikipedie) byl vydán ve verzi 3.0. Podrobnosti v poznámkách k vydání. Jedná se o fork projektů Elasticsearch a Kibana.
PyXL je koncept procesora, ktorý dokáže priamo spúštat Python kód bez nutnosti prekladu ci Micropythonu. Podľa testov autora je pri 100 MHz približne 30x rýchlejší pri riadeni GPIO nez Micropython na Pyboard taktovanej na 168 MHz.
Grafana (Wikipedie), tj. open source nástroj pro vizualizaci různých metrik a s ní související dotazování, upozorňování a lepší porozumění, byla vydána ve verzi 12.0. Přehled novinek v aktualizované dokumentaci.
Raspberry Pi OS, oficiální operační systém pro Raspberry Pi, byl vydán v nové verzi 2025-05-06. Přehled novinek v příspěvku na blogu Raspberry Pi a poznámkách k vydání. Pravděpodobně se jedná o poslední verzi postavenou na Debianu 12 Bookworm. Následující verze by již měla být postavena na Debianu 13 Trixie.
Richard Stallman dnes v Liberci přednáší o svobodném softwaru a svobodě v digitální společnosti. Od 16:30 v aule budovy G na Technické univerzitě v Liberci. V anglickém jazyce s automaticky generovanými českými titulky. Vstup je zdarma i pro širokou veřejnost.
(1,10,13)
můžete nahradit (7,10,13)
nebo (8,10,13)
, podle toho, který datum chcete do přeheldu vkládat.
#!/usr/bin/env python import urllib2 from HTMLParser import HTMLParser class MyHTMLParser(HTMLParser): def parse(self, html): self.tdcounter = 0 self.within_tbody = False self.thead_found = False self.platby = [] self.platba_parsed = [] self.feed(html) self.close() def handle_starttag(self, tag, attrs): if tag == 'td': self.tdcounter += 1 if tag == 'tbody' and self.thead_found: self.within_tbody = True def handle_data(self, data): if 'Variabil' in data: self.thead_found = True if self.within_tbody: # if self.tdcounter in (4,13,17): if self.tdcounter in (1,10,13): self.platba_parsed.append(data.strip()) def handle_startendtag(self, tag, attrs): if self.within_tbody and tag == 'br': self.tdcounter += 1 def handle_endtag(self, tag): if tag == 'tr': self.tdcounter = 0 if self.platba_parsed and len(self.platba_parsed) == 3 : self.platby.append(self.platba_parsed) self.platba_parsed = [] if tag == 'tbody': self.within_tbody = False url = 'http://www.rb.cz/firemni-finance/transparentni-ucty/?root=firemni-finance&item1=transparentni-ucty&tr_acc=vypis&account_number=2588438001' htmlcache = 'ebanka_cache' try: contents = file(htmlcache).read() except: handler = urllib2.urlopen(url) contents = handler.read() handler.close() file(htmlcache, 'w').write(contents) parser = MyHTMLParser() parser.parse(contents) for datum, varsymb, castka in parser.platby: print '%s;%s;%s;'%(datum, varsymb, castka)
V konqueroru/opere/firefoxu jsem vzdy ziskal kratky format data. Ten je presneji "22.04.2008 04:12". Dlouhy format je "2008-06-11 09:55:11.0 2008-06-11 09:55:11.0".Jestli si to dobře pamatuju, měl jsem ve FF v prvním sloupci krátký formát data i s časem, a v tom sloupci, kde jsou dvě data, byl krátký formát bez času. Ale ve skriptu mi to vracelo v různých formátech. Docela by mne zajímalo, jak může vůbec takovýhle problém se střídavým formátováním vzniknout, protože se evidentně mění formát i u jednoho stejného řádku – takže to není ovlivněno konkrétní hodnotou data. Chápal bych, kdyby to bylo různou konfigurací počítačů v clusteru, ale jednu stránku snad vygeneruje jeden počítač, pochybuju, že by se na tom střídaly po řádcích…
Jeste to ma nejaky problemy, ale castecne je prikladam tomu ze RB kazdou chvili vraci neco jineho. Jednou mam datum ve formatu "2008-05-07 05:58:54.0" a chvili nato v "27.06.2008". Nicmene s tim si jeste chvili budu hrat sam...A já už jsem přemýšlel, jestli jsem se nezbláznil, když se mi zdálo, že to vrací datum pokaždé v jiném formátu. Jsem rád, že v tom nejsem sám
#!/usr/bin/env python import urllib2 from HTMLParser import HTMLParser class MyHTMLParser(HTMLParser): def parse(self, html): self.tdcounter = 0 self.within_tbody = False self.platby = [] self.platba_parsed = [] self.recent_data = '' self.feed(html) self.close() def increase_tdcounter(self): if not self.within_tbody: return if self.tdcounter in (0, 8, 11): self.platba_parsed.append(self.recent_data) self.tdcounter += 1 self.recent_data = None def handle_starttag(self, tag, attrs): if tag == 'tbody': self.within_tbody = True def handle_data(self, data): data_stripped = data.strip() if data_stripped: self.recent_data = data_stripped def handle_startendtag(self, tag, attrs): if tag == 'br': self.increase_tdcounter() def handle_endtag(self, tag): if not self.within_tbody: return if tag == 'td': self.increase_tdcounter() if tag == 'tr': self.tdcounter = 0 self.platby.append(self.platba_parsed) self.platba_parsed = [] if tag == 'tbody': self.within_tbody = False url = 'http://www.rb.cz/firemni-finance/transparentni-ucty/?root=firemni-finance&item1=transparentni-ucty&tr_acc=vypis&account_number=2588438001' htmlcache = 'ebanka_cache.html' try: contents = file(htmlcache).read() except: browser_id = 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9) Gecko/2008061712 Fedora/3.0-1.fc9 Firefox/3.0' request = urllib2.Request(url) opener = urllib2.build_opener(urllib2.HTTPHandler()) opener.addheaders = [('User-Agent', browser_id)] contents = opener.open(request).read() file(htmlcache, 'w').write(contents) parser = MyHTMLParser() parser.parse(contents) for datum, varsymb, castka in parser.platby: print 'Datum: %s Var.s.: %10s Castka: %s'%( datum, varsymb, castka)
2008-07-10 08:29:20.0;2008-07-10 08:29:20.0;3800293;-19665.00; 2008-07-10 08:21:42.0;2008-07-10 08:21:42.0;280000066;-1997.00; 2008-07-10 08:11:49.0;2008-07-10 08:11:49.0;185;1400.00; 2008-07-10 05:47:50.0;2008-07-10 05:47:50.0;167;400.00; 2008-07-10 05:47:37.0;2008-07-10 05:47:37.0;9;400.00; 2008-07-10 05:46:18.0;2008-07-10 05:46:18.0;97;400,00; 10.07.2008;04:21;139;400,00; 10.07.2008;04:20;63;400,00; 10.07.2008;04:16;94;400,00; 09.07.2008;09:51;17885708;-3 174,00; 09.07.2008;01:38;108;400,00; 09.07.2008;12:17;169;400,00; 09.07.2008;11:45;49;400,00; 09.07.2008;10:27;191;2 200,00; 09.07.2008;10:27;175;5 200,00;
Jinak jsem taky nasel ulozenej starej vypis z eBanky a tam jsou vsechny datumy v tom dlouhem formatu, takze to skutecne posila ruznym klientum ruzne.Napadá mne jedině že by to byla primitivní snaha zabránit automatickému zpracování, zvlášť jestli to závisí na user-agentovi. Ale taková snaha zvlášť v této podobě by mi přišla neuvěřitelně hloupá… Pokud by to záviselo na jiných hlavičkách (třeba preferovaný jazyk), mohla by to být nějaká chybná konfigurace, kdy se na některé řádky uplatní formátování odvozené od preferovaného jazyka prohlížeče, a na jiné nějaké výchozí nastavení systému. Ale moc si nedovedu představit tu realizaci, protože to by musel znamenat, že každý řádek tabulky generuje jinak nastavený software, tedy že pravděpodobně každý řádek tabulky může vracet jiný počítač z clusteru. A to si raději ani představovat nechci. Jsem zvědav, co vám řekne někdo z technického oddělení – pokud rovnou nezablokují vaši IP adresu
Mozna by bylo reseni to proste kontrolovat rucne a pripadne rucne preskladat.Problém je, že jeden z těch formátů je úplně bez času, takže by tam pak byl asi čas 0:00:00.
neni bez casu, podivej se znovu. Akorat ten cas je bud spolu s datem v obou sloupeccich dublovane nebo je jen v tom druhem sloupecku.Ahá, pro oči nevidím. Tak proto tam máte 4 sloupečky a ne 3. Tak to jo.
Diky za ten tip s "if self.platba_parsed and len(self.platba_parsed) == 4 :" ted uz to nehavaruje na radcich bez hodnot (i takovy tam jsou, treba "Poplatek za generování výpisu").Ta podmínka se dá zjednodušit na if len(self.platba_parsed) == 4. A krom toho je možné se jí zbavit úplně a žádné řádky nezahazovat - viz výše.
Ta podmínka se dá zjednodušit na if len(self.platba_parsed) == 4No jo, když do
if
u dopisuju druhou podmínku, mohl bych se taky podívat, co dělá ta první… A krom toho je možné se jí zbavit úplně a žádné řádky nezahazovat - viz výše.Nějak to výše nemůžu najít. Jak to řešíte, když u nějaké platby není např. variabilní symbol?
já jsem sledoval i to staré vlákno a nakonec jsem na ebanku používal wget a potom parser v php. Vše fungovalo dobře, ale teď po změně nemohu wgetem stáhnout stránku s výpisem na disk. Vždy vyleze jen nějaká ořezaná verze bez tabulky pohybů (viz příloha).
Nevíte proč mi stránka nejde stáhnout?
Děkuji, zemji.
Tiskni
Sdílej: