Oficiálně byl vydán Android 16. Detaily na blogu a stránkách věnovaných vývojářům.
Byla vydána nová verze 14.3 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.
CSIRT.CZ upozorňuje, že na základě rozhodnutí federálního soudu ve Spojených státech budou veškeré konverzace uživatelů s ChatGPT uchovávány. Včetně těch smazaných.
Ač semestr ve škole právě končí, bastlíři ze studentského klubu Silicon Hill neodpočívají a opět se jako každý měsíc hlásí s pravidelným bastlířským setkáním Virtuální Bastlírna, kde si můžete s ostatními techniky popovídat jako u piva o novinkách, o elektronice, softwaru, vědě, technice obecně, ale také o bizarních tématech, která se za poslední měsíc na internetu vyskytla.
Z novinek za zmínku stojí Maker Faire, kde Pájeníčko předvedlo … více »Na WWDC25 byl představen balíček Containerization a nástroj container pro spouštění linuxových kontejnerů na macOS. Jedná se o open source software pod licencí Apache 2.0 napsaný v programovacím jazyce Swift.
Do 16. června do 19:00 běží na Steamu přehlídka nadcházejících her Festival Steam Next | červen 2025 doplněná demoverzemi, přenosy a dalšími aktivitami. Demoverze lze hrát zdarma.
Apple na své vývojářské konferenci WWDC25 (Worldwide Developers Conference, keynote) představil řadu novinek: designový materiál Liquid Glass, iOS 26, iPadOS 26, macOS Tahoe 26, watchOS 26, visionOS 26, tvOS 26, nové funkce Apple Intelligence, …
Organizátoři konference LinuxDays 2025, jež proběhne o víkendu 4. a 5. října 2025 v Praze na FIT ČVUT, spustili přihlašování přednášek (do 31. srpna) a sběr námětů na zlepšení.
Po roce byla vydána nová stabilní verze 25.6.0 svobodného multiplatformního multimediálního přehrávače SMPlayer (Wikipedie).
DNS4EU, tj. evropská infrastruktura služeb DNS založená na vysoce federovaném a distribuovaném ochranném ekosystému, byla spuštěna v testovacím režimu [𝕏]. Na výběr je 5 možností filtrování DNS.
Malinkatý dvojitý zápisek. Neobsahuje prudce inteligentní postřehy. Obsahuje jednořádkový patch.
Tak zaprvé jsem si moc hezky početl a poposlouchal rozhovor s šéfem softwaru od sondy Phoenix (toho času bagrujícího v polárních oblastech Marsu). Zajímavé je to celé, zvláště pro lidi od embedded systémů a mission-critical věcí. Zaujalo mě, že se v JPL odklonili od Ady k Céčku ("it is not so scary").
Mám rád Gedit. Je elegantní, napsal jsem v něm už spoustu věcí. Teď dělám nějaké experimenty v Pythonu, na to se Eclipse a podobní mastodonti moc nehodí. Plugin pro Python funguje docela dobře, ale nutnost zakládat projekt a workspace mě odrazuje
.Ono totiž doplňování kódu je v dynamických jazycích obecně neřešitelné. Definice tříd nejsou dány staticky, ale mohou být měněny za běhu. A protože dělám hoch experimenty, na nějaké doplňování kódu (které tak krásně funguje v Javě) jsem rezignoval.
Jenže opisovat dlouhé identifikátory pořád dokola trochu pruda je. Rozhodl jsem se tedy, že zkusím nějaký plugin (ano, Gedit umí pluginy), který bude doplňovat slova, bez porozumění jazyka.
Příslušný plugin jsem našel zde, respektive zde. Stačí nakopírovat do ~/.gnome2/gedit/plugins
, povolit v nastavení a už to jede. Nejlepší je, že plugin je napsaný v Pythonu a je docela jednoduchý - lze ho tedy opravit k obrazu svému způsobem, o kterém se nějakému potrhlému konfiguráku ani nezdá. Čehož jsem hned využil: v originální verzi se slovo pro doplnění potvrzuje tabelátorem, já jsem si povolil ještě enter. Vizte patch:
--- completion.py-orig 2008-07-12 12:41:16.000000000 +0200 +++ completion.py 2008-07-10 11:20:26.000000000 +0200 @@ -243,7 +243,7 @@ return self._terminate_completion() if event.state & gtk.gdk.MOD1_MASK: return self._terminate_completion() - if (event.keyval == gtk.keysyms.Tab) and self._remains: + if (event.keyval in (gtk.keysyms.Tab, gtk.keysyms.Return)) and self._remains: return not self._complete_current() completion_window = self._completion_windows[window] if (event.keyval == gtk.keysyms.Up) and self._remains:
Tiskni
Sdílej:
Mít objekt - transparentní proxy je taky prasárna?Naprosto. V Javě je to jeden z oblíbených způsobů, jak implementovat AOP, a s klidem bych řekl, že ten nejhorší. Nevím teda, jak v Pythonu, ale v Javě se té transparence pořádně dosáhnout nedá, takže
this
není this
a vůbec samé pěkné věci.
this
a ta není "obalena" tou proxy mrchou?
A mimochodem, dokáží někdy zapšklí C++kaři pochopit, že nemají patent na rozum a že Javisté nejsou untermensch?
class Math(object): def cosmos_constant(self): return 1 def pow(self, x): return x*x*self.cosmos_constant() class Proxy(object): def __init__(self, target): self.target = target def __getattr__(self, name): print 'logging this call...' return getattr(self.target, name) m = Math() print m.pow(4) p = Proxy(m) print p.pow(5)A ty bys chtěl, aby se zalogovalo volání té kosmologické konstanty z pow()?
cosmos_constant()
se chová odlišně v závislosti na tom, kdo ji volá, což je v tomhle případě vcelku na dvě věci. Představ si, že bys tou proxy chtěl změnit vesmír (nastavit kosmologickou konstantu na 2). Proto jsem psal, že to je prasárna Představ si, že bys tou proxy chtěl změnit vesmír (nastavit kosmologickou konstantu na 2).Něco na tenhle způsob?
kyo@valinor:~> ghci GHCi, version 6.8.2: http://www.haskell.org/ghc/ :? for help Loading package base ... linking ... done. Prelude> let 2 + 2 = 5 in 2 + 2 5 Prelude>
Metoda cosmos_constant() se chová odlišně v závislosti na tom, kdo ji volá, což je v tomhle případě vcelku na dvě věci.Nechová se odlišně ta metoda, vždyť jsou to dvě různé metody, ne?
p.cosmos_constant()
a dostanu 2, očekávám, že volání p.pow(2)
vrátí 8. Vy ne? Math
máte napsán tak, že počítá se svou kosmologickou konstantou (proto třeba self
). Kdybyste chtěl, aby počítal s jeho (nějakého cizího objektu), musíte mu ten cizí objekt předat jako parametr. cosmos_constant()
buď nemáte nadefinovánu tak, že vrací svou kosmologickou konstantu, nebo ji tak nadefinovánu máte, a pak vytvořená proxy porušuje tento dohodnutý kontrakt. Proxy s tím ale nemá nic společného, kdybyste si ten dohodnutý kontrakt porušil už v implementaci třídy Math
, dopadnete stejně.
v Javě se té transparence pořádně dosáhnout nedá, takže this není this a vůbec samé pěkné věciJak to že ne?
this
je pořád reference na objekt, na kterém je volána aktuální metoda. To že okolo toho objektu je nějaká proxy nemůže ten objekt zajímat. Očekávám, že když v objektu zavolám na this
final metodu, provede se úplně to samé, jako bych kód té metody přímo vložil do svého kódu. Pokud tu metodu chci provést na stejném objektu, který referencuje ten, kdo moji metodu vyvolal, musí mi referenci na ten objekt předat. Zkuste si někdy něco napsat v JavaScriptu, abyste viděl, jak to vypadá, když si nikdy nemůžete být jist, co je this
. To že okolo toho objektu je nějaká proxy nemůže ten objekt zajímat.Proto tvrdím, že se nedá dosáhnout plné transparence. Výraz this není this berte proboha trochu s nadsázkou, já přece jenom dobře vím, jak taková proxy funguje