Nettrine instalace a konfigurace

d@rkWolf
Člen | 121
+
0
-

Zdravím, neměl by někdo aktuální a fukční composer instalaci Nettrine a k tomu konfiguraci do neonu? Prosím prosím.

Včera jsem se půl dne „bavil“ snahou o instalaci a zprovoznění=naprosto bez úspěchu. Na každé stránce Contribute je návod na konfiguraci jiný. Existuje tam stránka Nettrine, existují tam samostatné DBAL, ORM atd. Zároveň se liší i s dokumentacemi, co jsou pro to samé přímo na Githubu. A stejně tak se liší konfigurace v demo projektech na Playground.

Myslel jsem, že napíšu do issues přímo k tomu, ale do prkna já ani nevím, kam to tam napsat, když nevím, co z toho je špatně a co dobře, to je DBAL, ORM, Console, Annotations, Playground, Forest, eště cosi.

Včera sem byl tak nasraný, že sem radši ani nic nepsal… Všechny ty zbytečný dokumentace smažte, nechte jednu aktuální. Na co je mít to na X různých místech, když to nikdo neaktualizuje tak, aby to souhlasilo? Chtěl jsem přetáhnout jednu starší věc z Nette 2.2–2.3 s Kdyby/Doctrine na 3ku, kterou Kdyby už nepodporuje, ale bohužel.

Jako sice je to starý, ale aspoň když tam člověk jde na Github, spustí composer s jedním jediným příkazem, co tam je a nastaví to podle dokumentace, tak to prostě funguje a ne, že to po mě začně řvát u každého druhého řádku v Neonu, že to je neočekávaná hodnota=neočekávaná hodnota, kterou jsem přesně skopíroval z dokumentace(jedné z mnoha) a na kterou, když se podívám do jiné dokumentace téhož, tak je to buď zapsané úplně jinak, nebo tam daná položka vůbec neexistuje.

Nakonec jsem si řekl, že tohle nemám zapotřebí a updatoval jsem to na 2.4ku, kde ještě Kdyby/Doctrine funguje. Nicméně mám ještě jinou věc, mnohem větší a složitější, která bude muset z 2.3 nahoru taky… Tohle jsem chtěl použít jako zkušební, abych měl představu, co bude potřeba pro konverzi na Nettrine udělat(jenže to bych se musel dostat aspoň přes instalaci).

Mistrfilda
Backer | 65
+
0
-

Ahoj,

takhle mi to funguje na poslednich verzich. Necham tam i par extension do doctrine (uuid, nejake dalsi qb funkce). Pro definovani entit pouzivam anotace.

composer.json (jen veci co souviseji s nettrine)

"require": {
		"contributte/console": "^0.8",
		"nettrine/orm": "^0.7",
		"nettrine/dbal": "^0.6",
		"nettrine/migrations": "^0.6",
		"nettrine/cache": "^0.2",
		"nettrine/annotations": "^0.6",
		"beberlei/doctrineextensions": "^1.2",
		"ramsey/uuid-doctrine": "^1.6"
}

config.neon (opet veci co souviseji s orm)

extensions:
	console: Contributte\Console\DI\ConsoleExtension(%consoleMode%)
	dbal: Nettrine\DBAL\DI\DbalExtension
	dbal.console: Nettrine\DBAL\DI\DbalConsoleExtension
	orm: Nettrine\ORM\DI\OrmExtension
	nettrine.annotations: Nettrine\Annotations\DI\AnnotationsExtension
	orm.annotations: Nettrine\ORM\DI\OrmAnnotationsExtension
	orm.console: Nettrine\ORM\DI\OrmConsoleExtension
	migrations: Nettrine\Migrations\DI\MigrationsExtension
	orm.cache: Nettrine\Cache\DI\CacheExtension

dbal:
	debug:
		panel: %debugMode%
	connection:
		host: %database.host%
		user: %database.user%
		password: %database.password%
		dbname: %database.dbname%
		driver: 'pdo_mysql'

		types:
			uuid:
				class: Ramsey\Uuid\Doctrine\UuidType
				commented: false

orm:
	configuration:
		customStringFunctions:
			group_concat: DoctrineExtensions\Query\Mysql\GroupConcat

orm.annotations:
	mapping:
		App: %appDir%

migrations:
    table: doctrine_migrations
    column: version
    directory: %appDir%/../migrations
    namespace: Migrations

Pokud chces pouzivat doctrine orm a neresit zadne svoje custom veci a problemy, tak dokumentace u orm https://github.com/…cs/README.md#… – te provede vsim, vcetne jednotlivych composer require prikazu. Ukazkove projekty jsem nevidel, kdyz jsem setupoval nekdy na zacatku roku svuj novy projekt, tak jsem jel ciste podle orm dokumentace.

Editoval Mistrfilda (25. 6. 13:06)

Ondřej Kubíček
Člen | 459
+
0
-

@d@rkWolf soucítím s tebou, bojuju s tím pokaždé, v docs je něco jiného než v kodu

Felix
Nette Core | 1039
+
0
-

Ahoj. @darkWolf @OndřejKubíček

To me mrzi. Muzete mi prosim ukazat co je kde blbe? Ja to rad vylepsim, opravim, upravim.

ppar
Backer | 334
+
0
-

doporučil bych přidat odkaz do doc nettrine/orm na playground a aktulizovat příklad https://github.com/…nettrine-orm na poslední verze Nettrine – myslím si, že tady to bude lidem nejsrozumitelnšjší.

Klidně pokud bude zájem, můžu poslat PR.

Editoval ppar (27. 6. 12:48)

Felix
Nette Core | 1039
+
0
-

ppar napsal(a):

Odkaz tam je (https://github.com/…cs/README.md#…).

Playground muzem aktualizovat, to je dobry napad. Ujmes se toho prosim?

ppar
Backer | 334
+
0
-

@Felix jdu na to

ppar
Backer | 334
+
0
-

hotovo https://github.com/…und/pull/139

EDIT: Zdálo se mi logičtější mít všechny ukázky okolo Nettrine v jednom ukázkovém projektu, ještě jsem do něj přidal nettrine/fixtures, které chyběly

Editoval ppar (27. 6. 22:13)

Ondřej Kubíček
Člen | 459
+
0
-

@Felix jeden příklad, přidával jsem si Ramsey\Uuid a v dokumentaci nettrine/dbal je:

dbal:
  connection:
    types:
      uuid: Ramsey\Uuid\Doctrine\UuidType

přitom tohle vůbec nefunguje, vyhodí to error, že chybí class a commented
takže jsem to musel upravit na:

dbal:
  connection:
    types:
      uuid:
		class: Ramsey\Uuid\Doctrine\UuidType
		commented: false

třeba taky vůbec netuším co to commented dělá, to není nikde popsané

A hodně se inspiruju z Playground, ale to je dost zastaralé.

ppar
Backer | 334
+
+2
-

s přispěním @Felix jsem aktulizoval příklad https://github.com/…ter/nettrine , doufám, že to mnohým začátečníkům pomůže

Felix
Nette Core | 1039
+
0
-

Ondřej Kubíček napsal(a):

@Felix jeden příklad, přidával jsem si Ramsey\Uuid a v dokumentaci nettrine/dbal
A hodně se inspiruju z Playground, ale to je dost zastaralé.

Zkusim se na to podivat a doupravit. Bohuzel je toho hodne a jsem na to z hlavni casti sam.

Hledam nejake pomocniky, pridate se? Vypada to, ze to sam nedam.

ppar
Backer | 334
+
0
-

@Felix s čím bychom ti mohli být nápomocní?

d@rkWolf
Člen | 121
+
+1
-

@Mistrfilda ahoj, díky, jdu to vyzkoušet

@Felix promiň, už si bohužel nevybavím přesně postup, po kterém jsem šel, ale myslím, že jsem začal na té prezentační stránce Nettrine(protože jsem hledal nějaký celkový postup, přišlo mi, že na stránkách jednotlivých komponent bude spíš detailnější popis vlastností/nastavení, příklady aplikace), requiroval k aktuálnímu Sandboxu a hned při nastavování konfigurace to po mě začlo řvát, že taková nastavení neexístují, nebo že to očekává úplně jiný formát dat.

No a pak už začal zmatek, kdy jsem prohlížel ty jednotlivé stránky na Contributte, následně jednotlivé stránky dokumetancí na Githubu a ještě ty projekty, kdy některý projekt byl sestavený stejně jako na té prezentační stránce(takže mi zas nefungoval, protože byl sestavený s jinými verzemi), jiný měl řadu konfiguračních parametrů jinak a pak už jsem byl úplně zmatený a rezignovaně downgradnul na Sandbox 2.4ky a requiroval Kdyby/Doctrine.

Měl jsem dost problém pochopit, které balíčky vlastně potřebuju a které ne, tím, že je to rozdělené na víc částí oproti Kdyby/Doctrine by bylo fajn nějak přehledně to asi do té prezentační stránky uvést, co je nezbytné, co je volitelné a k čemu to je-úplně nejvíc fajn by bylo(aspoň dle mě) přidat tam composer setup a config, který by nabídnul “stejné” vlastnosti, jako mělo Kdyby/Doctrine – pro upgrade starších projektů právě z Kdyby/Doctrine. Funkční konfiguraci anotacemi apod.


To jsem právě zmiňoval, máte tu dokumentaci rozprostřenou po hrozně moc místech, moc náročné na udržování. Radši zvolit jedno umístění a všude jinde jen odkazovat přímo do toho jednoho umístění. I těch dem je hodně a navíc je v nich často napojená spousta dalších věcí-u kterých opět není jasné, proč to tam je. Pro mě třeba, já rád vycházím jen z Nette WebProjectu nebo Sandboxu a pak si tam přidávám věci, co vím, že potřebuju, takže třeba ten Nutella project, to je pro mě prostě peklo, tam je napojených takových komponent, že bych několik dní odebíral všechno, co nepotřebuju/nevím k čemu je.

Editoval d@rkWolf (30. 6. 12:30)

ppar
Backer | 334
+
0
-

@d@rkWolf proto jsem se po čtení diskuze pustil do aktulizace Nettrine playground, kde jsem ukázky okolo Doctrine sloučil do jedné ukázky, aby všem bxylo jasné, co jak je nakonfigurované.

Editoval ppar (30. 6. 14:05)

Felix
Nette Core | 1039
+
0
-

d@rkWolf napsal(a):

To jsem právě zmiňoval, máte tu dokumentaci rozprostřenou po hrozně moc místech, moc náročné na udržování. Radši zvolit jedno umístění a všude jinde jen odkazovat přímo do toho jednoho umístění. I těch dem je hodně a navíc je v nich často napojená spousta dalších věcí-u kterých opět není jasné, proč to tam je. Pro mě třeba, já rád vycházím jen z Nette WebProjectu nebo Sandboxu a pak si tam přidávám věci, co vím, že potřebuju, takže třeba ten Nutella project, to je pro mě prostě peklo, tam je napojených takových komponent, že bych několik dní odebíral všechno, co nepotřebuju/nevím k čemu je.

Pak jsou ale presne opacne pripady, ze to lide chteji mit nakonfigurovano a jenom spustit.

d@rkWolf
Člen | 121
+
0
-

@Felix ale to já bych taky rád, ale v co nejjednodušší variantě, tzn. ideálně jen NetteWebProject/Sandbox + ta Doctrine a nějaký hotový demo obsah, ne dalších 20 rozšíření v podstatě všech jednotlivých částí Nette. Takové věci přidávám až když vím, že je potřebuju. Jinak je to bloatware. Teď sem zkoušel dumpautoload -o na composeru u té věci, co zkouším upgradovat a zhrozil jsem se, přes 1800 tříd v composeru a to je jen nette sandbox + nettrine a její dependency. Každá ta třída znamená další zpomalení. Jelikož mám starý systém psaný v holém php, tak mám dobrou představu, jaký rozdíl tam je třeba v paměťové náročnosti.

Nicméně, podařilo se mi tu Nettrine konečně rozchodit, bohužel se ukázalo, že upgrade z Kdyby/Doctrine bude v mém případě vyžadovat opravdu velké množství úprav, což mě nepotěšilo.

Narazil jsem na jednu věc, kterou si nejsem jistý, zda je to dobře, nebo ne? Nevím, jak se vkládají obrázky, tak to dám do odkazu – Tracy výpis – je ten výpis prováděných dotazů kompletní? Nedá se tam zapnout, aby to udávalo odkud se dotaz provedl? Případně počet výsledků, prostě něco takového, jako je u výpisu dotazů při použití NetteDatabase?

Felix
Nette Core | 1039
+
0
-

d@rkWolf napsal(a):

@Felix ale to já bych taky rád, ale v co nejjednodušší variantě, tzn. ideálně jen NetteWebProject/Sandbox + ta Doctrine a nějaký hotový demo obsah, ne dalších 20 rozšíření v podstatě všech jednotlivých částí Nette.

Jo to zni fajn, uznavam. Ale nemam casove sanci to takhle udelat pro vsechno. Kez bych na to mel vic casu. V tomhle by mohl pomoct Github Sponsorship (https://github.com/sponsors/f3l1x). Mrkni na to, budu rad za jakykoli tier, co si vyberes.

d@rkWolf
Člen | 121
+
0
-

@Felix měl bych dotaz-když jsem tu Nettrine nastavoval, dospěl jsem k tomu, že mi to vypisovalo všechno z DB ve špatným kódování(netuším jakým) – DB mám normálně utf8mb4_general_ci nebo tak nějak, našel jsem v manuálech u nastavení dbal/connection – charset: utf8, s tím se to vypisuje správně, ale myslím v žádném návodu/ukázce jsem to nastavení v configu použité neviděl, neprohledával jsem kód, ale myslel bych, že utf8 bude výchozí hodnota, takže není potřeba nastavovat-ovšem bez něj jsem měl místo háčků, čárek otazníky apod.

Felix
Nette Core | 1039
+
0
-

Doporucuju mrknout do dokumentace doctrine dbal. Tam najdes, co je by default nastaveno.

d@rkWolf
Člen | 121
+
0
-

@Felix narazil jsem na zajímavý problém, nejsem si jistý, co jej způsobuje. Dokončil sem základní úpravy, takže mi jede front-end toho předělávaného webu na localhostu, ale po přesunu na Active24 kde mám testovací VMS se mi negeneruje v Temp složka a soubor: Proxies/__CG__AppModelEntityStructureType.php


Dostanu Error:
[2020–07–15 12–29–47] Warning: require(/www/doc/www.domena.cz/app/../temp/proxies/__CG__AppModelEntityStructureType.php): failed to open stream: No such file or directory in /www/doc/www.domena.cz/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php:204 @ http://domena.cz.uvds323.active24.cz/ @@ error–2020–07–15–11–38–432d493ca6.html

a Exception:
[2020–07–15 12–29–47] Compile Error: require(): Failed opening required ‘/www/doc/www.domena.cz/app/../temp/proxies/__CG__AppModelEntityStructureType.php’ (include_path=‘.:/usr/share/php’) in /www/doc/www.domena.cz/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php:204 @ http://domena.cz.uvds323.active24.cz/ @@ exception–2020–07–15–11–38–d38619a73f.html


Je možné, že ten problém způsobuje otevření webu z Alternativní adresy u Active24(http://domena.cz.uvds323.active24.cz/) Že to někde špatně rozlišuje umístění? Nemám tam zatím přesměrovanou doménu, chtěl jsem to prvně vyzkoušet. Pokud si tam ten soubor překopíruju z localhostu, tak to jede, ale sám se nevygeneruje. Měl sem tam nějak problém s právy k zápisu, ale další soubory a složky k Nette v Temp se vygenerovaly(teda jen ty, než to došlo k požadavku na ty proxy a crashlo na 500)

Felix
Nette Core | 1039
+
0
-

Generovani proxy souboru ma na starost configuration.autoGenerateProxyClasses. Nemas to na produkci vypnute? Jestli ano, tak musis proxy vygenerovat rucne.

Pripadne to lze nastavit viz dokumentace doctrine – https://www.doctrine-project.org/…uration.html#….

d@rkWolf
Člen | 121
+
0
-

@Felix no jo, to mám v configu podle https://contributte.org/nettrine/

Takto:

orm:
	configuration:
		autoGenerateProxyClasses: %debugMode%

Takže jestli to dobře chápu, měl bych tam dát, když chci, aby se soubor vygeneroval pokud neexistuje, toto:

autoGenerateProxyClasses: ::constant(Doctrine\Common\Proxy\AbstractProxyFactory::AUTOGENERATE_FILE_NOT_EXISTS)
Felix
Nette Core | 1039
+
0
-

autoGenerateProxyClasses: %debugMode% je za me v poradku. Pokud chces ovlivnit generovani proxy trid, tak to musis nastavit na tvuj use-case.

d@rkWolf
Člen | 121
+
0
-

@Felix
Jako teoreticky asi jo, proč ne, akorát by bylo fajn u těch příkladů na to nějak upozornit, protože je to naprosto zapadlé v hromadě konfiguračních položek, které poněkud postrádají přímé vysvětlení, k čemu jsou. Viz. prostě co jsem psal, hledal jsem problém s právy k zápisu a různé další věci, vůbec mě nenapadlo dívat se do configu-protože sem věděl, že ten config mi na localhostu fungoval, tak jsem ho automaticky považoval za „v pořádku“.