abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
včera 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 5
včera 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 6
včera 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

Ladislav Hagara | Komentářů: 1
včera 12:55 | Nová verze

Google Chrome 55 byl prohlášen za stabilní. Nejnovější stabilní verze 55.0.2883.75 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo také 36 bezpečnostních chyb. Mariusz Mlynski si například vydělal 22 500 dolarů za 3 nahlášené chyby (Universal XSS in Blink).

Ladislav Hagara | Komentářů: 4
včera 11:55 | Pozvánky

Máte rádi svobodný software a hardware nebo se o nich chcete něco dozvědět? Přijďte na 135. sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.

xkucf03 | Komentářů: 0
včera 00:10 | Nová verze

Byla vydána verze 3.2 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata. Z novinek lze zmínit například podporu protokolů DNP3 a CIP/ENIP, vylepšenou podporu TLS a samozřejmě také aktualizovanou dokumentaci.

Ladislav Hagara | Komentářů: 0
1.12. 21:00 | Nová verze

Byla vydána beta verze Linux Mintu 18.1 s kódovým jménem Serena. Na blogu Linux Mintu jsou hned dvě oznámení. První o vydání Linux Mintu s prostředím MATE a druhé o vydání Linux Mintu s prostředím Cinnamon. Stejným způsobem jsou rozděleny také poznámky k vydání (MATE, Cinnamon) a přehled novinek s náhledy (MATE, Cinnamon). Linux Mint 18.1 bude podporován až do roku 2021.

Ladislav Hagara | Komentářů: 0
1.12. 16:42 | Nová verze

Byl vydán Devuan Jessie 1.0 Beta 2. Jedná se o druhou beta verzi forku Debianu bez systemd představeného v listopadu 2014 (zprávička). První beta verze byla vydána v dubnu letošního roku (zprávička). Jedna z posledních přednášek věnovaných Devuanu proběhla v listopadu na konferenci FSCONS 2016 (YouTube, pdf).

Ladislav Hagara | Komentářů: 0
1.12. 15:16 | Komunita

Na GOG.com začal zimní výprodej. Řada zlevněných her běží oficiálně také na Linuxu. Hru Neverwinter Nights Diamond lze dva dny získat zdarma. Hra dle stránek GOG.com na Linuxu neběží. Pomocí návodu ji lze ale rozběhnout také na Linuxu [Gaming On Linux].

Ladislav Hagara | Komentářů: 1
1.12. 13:14 | Bezpečnostní upozornění

Byla vydána verze 2.7.1 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Řešeno je několik bezpečnostních problémů. Aktualizován byl především Tor Browser na verzi 6.0.7. Tor Browser je postaven na Firefoxu ESR (Extended Support Release) a právě ve Firefoxu byla nalezena a opravena vážná bezpečnostní chyba MFSA 2016-92 (CVE-2016-9079, Firefox SVG Animation

… více »
Ladislav Hagara | Komentářů: 0
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 761 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: PHP, Python, C++, .. - ako pristupovat ku korenovej triede?

22.5.2012 19:22 NitroN2O
PHP, Python, C++, .. - ako pristupovat ku korenovej triede?
Přečteno: 527×
Mam triedu Trieda:
class Trieda
{
	private $premenna;
	private $kolekcia;
	
	function __construct() { $this->kolekcia = new Kolekcia; }
	
	function getPremenna() ...
	function getKolekcia() ...
	
	function __get($name)
	{
		switch ($name)
		{
			case "premenna": return $this->getPremenna();
			case "kolekcia": return $this->getKolekcia();
			default: throw new MemberAccessException($name);
		}
	}
}
ktora obsahuje kolekciu kolekcia:
class Kolekcia
{
	function add(Polozka $item) ...
	function remove(Polozka $item) ...
}
do ktorej sa pridavaju polozky v kazdej polozke by som chcel mat moznost pristupovat k premennej tiredy "Trieda":
class Polozka
{
	function metoda()
	{
		echo ...->premenna;
	}
}
Viete mi poradit co najkratsi sposob ako to urobit? Zatial to riesim cez DI, cez konstruktor vkladam vzdy korenovu triedu. To je sice pekne, ale ked bude ta trieda zanorena dajme tomu 10 urovni, tak musim upravovat vsetky "medzi" triedy. Existuje nejaky "krajsi" sposob ako DI?

Odpovědi

Josef Kufner avatar 22.5.2012 23:04 Josef Kufner | skóre: 66
Rozbalit Rozbalit vše Re: PHP, Python, C++, .. - ako pristupovat ku korenovej triede?
A čeho vlastně chceš docílit?
Hello world ! Segmentation fault (core dumped)
Saljack avatar 22.5.2012 23:12 Saljack | skóre: 28 | blog: Saljack | Praha
Rozbalit Rozbalit vše Re: PHP, Python, C++, .. - ako pristupovat ku korenovej triede?
Navíc co znamená
PHP, Python, C++, ..
v javě existuje super, což je právě předek třídy. Spíš by se hodilo přiložit jednoduchý UML diagram, který by znázornil o co se snažíš.
Sex, Drugs & Rock´n Roll.
22.5.2012 23:37 NitroN2O
Rozbalit Rozbalit vše Re: PHP, Python, C++, .. - ako pristupovat ku korenovej triede?
Nejde o dedicnost, ale o vnaranie objektov.

Predstavte si nieco podobne ako DOM strom. Objekt obsahuje kolekciu vnorenych objektov a ja chcem pristupovat z vnoreneho objektu(v tej kolekcii) k rodicovskemu objektu(nie v zmysle dedicnosti, ale v ramci hierarchie vnorenych objektov). Poznam jedno riesenie pomocou DI, lenze to je ukecane, a pri kazdej malej zmene musim upravovat hned niekolko tried.

Ide mi len o design pattern. PHP, Python, C++, .. znamena ze mi to mozete vysvetlit v hociktorom z tychto jazykov.

Vopred diky.
Saljack avatar 23.5.2012 00:28 Saljack | skóre: 28 | blog: Saljack | Praha
Rozbalit Rozbalit vše Re: PHP, Python, C++, .. - ako pristupovat ku korenovej triede?
Aha tak to jsem tě blbě pochopil. Nejprve bych se zaměřil na návrh protože jestliže musíš kvůli jedné věci upravovat několik tříd něco je blbě. Já bych to řešil tak, že každý objekt musí dědit od jednoho objektu, který v sobě bude nést ukazatel na předka. A toho předka bych pak nastavoval v právě v metodě add popřípadě odebíral v remove. Jestli to teda správně chápu?
Sex, Drugs & Rock´n Roll.
23.5.2012 08:37 DK
Rozbalit Rozbalit vše Re: PHP, Python, C++, .. - ako pristupovat ku korenovej triede?
pripadne jeste,co me tak napada, vytvor u vnorenych trid konstruktor s odkazem na vytvorenou tridu (tj pak budes kolekci vytvaret jako $this->kolekce=new Kolekce($this);, kdovi, jestli to bude fungovat, muzes to pekne zacyklit, ale za zkousku nic nedas :)
rADOn avatar 23.5.2012 17:00 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: PHP, Python, C++, .. - ako pristupovat ku korenovej triede?
Ide mi len o design pattern. PHP, Python, C++, .. znamena ze mi to mozete vysvetlit v hociktorom z tychto jazykov.
Když ti to vysvětlím v pajtnu tak to v C++ zaručeně nenaprogramuješ :-)
"2^24 comments ought to be enough for anyone" -- CmdrTaco
rADOn avatar 28.5.2012 13:24 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: PHP, Python, C++, .. - ako pristupovat ku korenovej triede?
Jak to tak po sobě čtu tak zní dost plamenně což jsem nechtěl. Vysvětlím – python má (nepříliš známou) vlastnost jménem deskriptory která umožňuje zachytit instanci zevnitř atributu. Takže ukázkový kód v pythonu by toho moc neukázal, jenom nějakou magii uvnitř interpretru.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
23.5.2012 09:38 Mr.S1lent.cz
Rozbalit Rozbalit vše Re: PHP, Python, C++, .. - ako pristupovat ku korenovej triede?
Vzdyt to mas standartni Category -> item model.

Kategorii vytvoris properties:

< Category> parent < array: Category> children < array: Item> items

a pro rychle prochazeni stromem napric nekolika urovnim i pole klicu v kategorii s referencemi, treba:

< array: (Category + Item)> referencesList

klice si pak muzes generovat z nazvu kategorii (a subkategorii ) + nazvu daneho itemu, anebo treba mit static id v category + item a incrementovat/decrementovat je pri kazde zmene a navzajem synchronizovat...

23.5.2012 23:49 l0gik | skóre: 22
Rozbalit Rozbalit vše Re: PHP, Python, C++, .. - ako pristupovat ku korenovej triede?
Úplně tomu nerozumím, zdá se mi, že poněkud mícháš vnořování tříd a dědičnost.

Obecně, pokud k něčemu přistupuješ, tak bys to tam měl nějak přes DI vložit. Myslím, že žádné jiné řešení prostě nefunguje.

Akorát můžeš zvážit, zdali má smysl, by Kolekce věděla o třídě (pak to bude posloupnost DI, tzn Položka bude mít metodu getKolekce a kolekce getTrida) nebo ne, v druhém případě pak Kolekci skryješ a vystavíš vlastnosti add a remove přímo v třídě, kde zároveň se správně aktualizuje DI pro vkládanou a odebíranou položku.

DI je holt ukecaný, ale zpravidla je to i tak ten nejlepší způsob.
28.5.2012 15:29 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: PHP, Python, C++, .. - ako pristupovat ku korenovej triede?
Kořenová třída není moc šťastný název. Je to spíš nějaký globální stav aplikace, aplikační kontext. Používá se k tomu buď globální proměnná nebo singleton. Obojí jsou návrhové antivzory, tj. jejich použití často svědčí o špatném návrhu. Propagovat to skrze 10 tříd je sice způsob, jak globální objekt nebo singleton zrušit, ale taky to není šťastné řešení. Pátral bych po tom, k čemu vlastně ten kontext v desáté vnořené třídě potřebujete, a zda se to nedá nahradit něčím, co nebude vytvářet takhle dlouhé vazby napříč aplikací a bude lépe odpovídat objektovým principům, že každý objekt má vymezené kompetence. Samozřejmě se může ukázat, že napsat to správně by bylo příliš složité a globální kontext je sice ošklivý, ale napíše se rychle. Problém pak bude s údržbou.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.