Driving a cadillac in a fool's parade.
Wij gebruiken slack_Moe_ schreef op dinsdag 24 maart 2015 @ 09:30:
Mensen die hier hun tevredenheid over slack willen uiten? Vraag me af of ik het nu wel of niet moet testen.
Let op: Mijn post bevat meningen, aannames of onwaarheden
En ja, ik weet dat je EF moet leren gebruiken net zoals iedere ander pakket/platform/API/tool (ik wil geen F.West98 zijn
Edit: Ohja, en dat hij een nieuwe insert doet als je een reeds opgehaald (en inmiddels detached) object aan een nieuw object koppelt is ook bizar. Dat ding heeft verdorie al een ingevulde key.
[ Voor 23% gewijzigd door Alex) op 24-03-2015 21:35 ]
We are shaping the future
I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!
Alex) schreef op dinsdag 24 maart 2015 @ 20:46:
Wederom haat aan Entity Framework. Updaten van 140 items duurde 30 seconden dankzij die verdomde ChangeTracker. Zodra ik 'm uitzette ging het ineens veel sneller.
Wat voor enorm complexe entities heb jij dan wel niet? Ik update honderden tot duizenden entities binnen 2 minuten. Op een trage dualcore VM (2Ghz). Lokaal is dat <20 seconden.
Ik kan EF prima gebruikenEn ja, ik weet dat je EF moet leren gebruiken net zoals iedere ander pakket/platform/API/tool (ik wil geen F.West98 zijn), maar toch sta ik geregeld te kijken van de fratsen die EF uithaalt. Daarbij vergeleken is Sharepoint een stabiel en makkelijk te gebruiken product
2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI
Dit handelen we even via PM af
[ Voor 9% gewijzigd door Firesphere op 24-03-2015 23:32 ]
I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!
Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.
Ik klaag even. Dat ik meer details niet hier in-topic wil geven, is volgens mij helemaal niet raar.farlane schreef op dinsdag 24 maart 2015 @ 23:27:
Waarom post je het dan hier? Eerst klagen en als er vervolgens gevraagd wordt wat er is het niet willen zeggen ....
I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!
2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI
Entities met een paar child-collections en nog veel meer ellende eronder, dat gaat wel een niveau of 6 diep. Waar ik overigens niks in heb gewijzigd, wat EF ook gewoon zou moeten weten aangezien alles uit dezelfde DbContext komt.F.West98 schreef op dinsdag 24 maart 2015 @ 22:17:
[...]
Wat voor enorm complexe entities heb jij dan wel niet? Ik update honderden tot duizenden entities binnen 2 minuten. Op een trage dualcore VM (2Ghz). Lokaal is dat <20 seconden.
Jij loopt hier vaak te bitchen als iets niet meteen werkt (al heb je dat de laatste tijd een stuk minder gedaanIk kan EF prima gebruiken
Alex is vooral iemand die zich soms verbaast over het bizarre gedrag dat EF ten toon spreidt en die inmiddels een diepgewortelde haat aan het ontwikkelen is voor dat hele ding.Avalaxy schreef op dinsdag 24 maart 2015 @ 22:20:
Alex is gewoon een prutser die al z'n onkunde op Entity Framework afreageert
Slechtste architectuurkeuze ooit.
We are shaping the future
Hmm.. Bij mij is het misschien 2 lagen. Might explain itAlex) schreef op woensdag 25 maart 2015 @ 00:10:
[...]
Entities met een paar child-collections en nog veel meer ellende eronder, dat gaat wel een niveau of 6 diep. Waar ik overigens niks in heb gewijzigd, wat EF ook gewoon zou moeten weten aangezien alles uit dezelfde DbContext komt.
Liep*[...]
Jij loopt hier vaak te bitchen als iets niet meteen werkt (al heb je dat de laatste tijd een stuk minder gedaan)
Laatste tijd niet zo veel meer geprogrammeerd ook, school drukte enzo.
2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI
"De Coffee Corner is primair bedoeld als uitlaatklep voor iedereen in de Devschuur® en niet als vraagbaak."
YES
Het is een vrij complex model, omdat er zoveel afhankelijkheden zijn en alles combineerbaar is. Ook zijn er ene paar tabellen die naar zichzelf verwijzen (parent-child) en zit er ook nog een stukje Entity-Attribute-Value-pattern in.F.West98 schreef op woensdag 25 maart 2015 @ 00:15:
[...]
Hmm.. Bij mij is het misschien 2 lagen. Might explain it
Al met al best wel complexe objecten, en ik denk echt dat er in het verleden een paar keuzes en foutieve aannames zijn gemaakt die nu erg vervelend lijken uit te pakken. Ik ben er nu dus hard mee bezig om die dingen recht te trekken, zo goed en zo kwaad als het kan.
En daarbij zie ik gewoon dat Entity Framework zich soms erg onvoorspelbaar gedraagt. Als je al een POCO hebt met daarin een gezette primary key, en je hangt die in een nieuw object, dan is het niet bepaald voorspelbaar gedrag als EF ineens een nieuwe insert doet voor een bestaand object.
Dit zegmaar:
1
2
3
4
5
6
7
| var author = new Author { AuthorId = 1, Name = "Alex" }; using(var ctx = new BooksContext()) { ctx.Books.Add(new Book() { Author = author, Name = "1000 kleine stukjes EF-haat voor gevorderden." }; ctx.SaveChanges(); } |
Dat er dan ineens een nieuwe Author wordt aangemaakt...
Liep*
Laatste tijd niet zo veel meer geprogrammeerd ook, school drukte enzo.
We are shaping the future
Self-referencing: check, soortvan. Car heeft een property Vehicle, Car extendt Vehicle. Dat een beetje.Alex) schreef op woensdag 25 maart 2015 @ 00:25:
[...]
Het is een vrij complex model, omdat er zoveel afhankelijkheden zijn en alles combineerbaar is. Ook zijn er ene paar tabellen die naar zichzelf verwijzen (parent-child) en zit er ook nog een stukje Entity-Attribute-Value-pattern in.
De rest: nee. Entity-Attribute-Value?!
Al met al best wel complexe objecten, en ik denk echt dat er in het verleden een paar keuzes en foutieve aannames zijn gemaakt die nu erg vervelend lijken uit te pakken. Ik ben er nu dus hard mee bezig om die dingen recht te trekken, zo goed en zo kwaad als het kan.
En daarbij zie ik gewoon dat Entity Framework zich soms erg onvoorspelbaar gedraagt. Als je al een POCO hebt met daarin een gezette primary key, en je hangt die in een nieuw object, dan is het niet bepaald voorspelbaar gedrag als EF ineens een nieuwe insert doet voor een bestaand object.
Dit zegmaar:
C#:
1 2 3 4 5 6 7 var author = new Author { AuthorId = 1, Name = "Alex" }; using(var ctx = new BooksContext()) { ctx.Books.Add(new Book() { Author = author, Name = "1000 kleine stukjes EF-haat voor gevorderden." }; ctx.SaveChanges(); }
Dat er dan ineens een nieuwe Author wordt aangemaakt...
Gelukkig is mijn enige probleem dat 'ie *soms* ineens vindt dat ik te veel connections open heb als ik er maar ééntje open heb. Maar dat is dan enkel met een localhost connection (volgens mij) dus de gebruikers ondervinden geen problemen...
2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI
EAV is een soort database-in-een-database-model dat je op zich best veel vrijheid geeft. Je definieert een tabel met entiteiten (je tabellen), nog een tabel met attributen (de kolommen die in iedere tabel bestaan) en een tabel met values (de rijen en hun waardes).F.West98 schreef op woensdag 25 maart 2015 @ 00:30:
[...]
Self-referencing: check, soortvan. Car heeft een property Vehicle, Car extendt Vehicle. Dat een beetje.
De rest: nee. Entity-Attribute-Value?!
In veel situaties is dit model niet gewenst omdat je alle vormen van referentiële integriteit en constraints kwijtraakt, maar voor sommige scenario's is het uitermate geschikt. Bijvoorbeeld als je werkt met stukjes informatie die niet goed in een klassieke tabelstructuur te vangen zijn of die dynamisch kan veranderen. Ik heb dus zo'n situatie
Het 'grappige' is dat hij ook meteen de ID met 1000 ophoogt.
Oh, die is ook leuk. Dispose je wel netjes je DbContexts enzo?Gelukkig is mijn enige probleem dat 'ie *soms* ineens vindt dat ik te veel connections open heb als ik er maar ééntje open heb. Maar dat is dan enkel met een localhost connection (volgens mij) dus de gebruikers ondervinden geen problemen...
In mijn project gebruik ik Unity om een DbContext te injecten die ik tijdens vrijwel de hele request-lifecycle gebruik. Unity zorgt uiteindelijk voor het disposen van dat ding, wanneer dat request is afgelopen. Werkt best netjes
We are shaping the future
Hmm, klinkt handig.Alex) schreef op woensdag 25 maart 2015 @ 01:36:
[...]
Oh, die is ook leuk. Dispose je wel netjes je DbContexts enzo?
In mijn project gebruik ik Unity om een DbContext te injecten die ik tijdens vrijwel de hele request-lifecycle gebruik. Unity zorgt uiteindelijk voor het disposen van dat ding, wanneer dat request is afgelopen. Werkt best netjes
Nog niet eerder aan gedacht om je dbContext ook te injecten. Wordt de dispose dan wel goed afgehandeld? Heb nu namelijk een DAL gemaakt waar de dbContext continu weer wordt aangemaakt, maar dat kan dus wel worden omgebouwd door deze te injecten.
Battle.net - Jandev#2601 / XBOX: VriesDeJ
Dat is het ook. Enig minpuntje is dat je niet zomaar var ctx2 = new MyDbContext(); kunt doen (wat nogal makkelijk gedaan is), maar dat je aan je container moet vragen om je een nieuwe instance te geven. Dan krijg je bijvoorbeeld zoiets:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| public class Baz (IUnitOfWork unitOfWork, IUnityContainer unityContainer) { public void ChildUow() { using(var child = unityContainer.Resolve<IUnitOfWork>()) { /* piew */ } } public void ChildType() { using(var childContainer = unityContainer.CreateChildContainer()) { var childBaz = childContainer.Resolve<Baz>(); } } } |
Ja, Unity handelt de Dispose prima af. Je moet dan wel de juiste LifetimeManager gebruiken voor het aanmaken van je objecten.Nog niet eerder aan gedacht om je dbContext ook te injecten. Wordt de dispose dan wel goed afgehandeld? Heb nu namelijk een DAL gemaakt waar de dbContext continu weer wordt aangemaakt, maar dat kan dus wel worden omgebouwd door deze te injecten.
Ik gebruik geloof ik (ik kan op dit moment even niet bij de sourcecode van mijn project) vooral de HierarchicalLifetimeManager voor de disposable objecten die ik heb. Unity handelt de rest af, zolang ik mijn containers maar netjes dispose.
We are shaping the future
Dit is een uitlaatkleptopic, geen leg-hier-je-verantwoording-aftopicfarlane schreef op dinsdag 24 maart 2015 @ 23:27:
Waarom post je het dan hier? Eerst klagen en als er vervolgens gevraagd wordt wat er is het niet willen zeggen ....
Ik heb, denk ik, de oplossingen voor *al* je programmeerproblemenF.West98 schreef op woensdag 25 maart 2015 @ 00:15:
Laatste tijd niet zo veel meer geprogrammeerd ook, school drukte enzo.
[ Voor 30% gewijzigd door BtM909 op 25-03-2015 10:36 ]
Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.
[ Voor 9% gewijzigd door hylke94 op 25-03-2015 10:51 ]
Als het mooi weer is, zeg ik altijd: Het is zo mooi weer, ik heb geen zin werken zo.
Conclusie: Het feit dat ik altijd geen zin in werken heb, wordt anders verwoord bij ander weer.
[ Voor 5% gewijzigd door Gamebuster op 25-03-2015 10:53 ]
Let op: Mijn post bevat meningen, aannames of onwaarheden
Firesphere schreef op dinsdag 24 maart 2015 @ 23:31:
Ik klaag even. Dat ik meer details niet hier in-topic wil geven, is volgens mij helemaal niet raar.
Prima, ik vond het een beetje een vrouwenactie, that's all.BtM909 schreef op woensdag 25 maart 2015 @ 10:35:
[...]
Dit is een uitlaatkleptopic, geen leg-hier-je-verantwoording-aftopic
Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.
Wat is er vrouwelijk aan die actie?farlane schreef op woensdag 25 maart 2015 @ 11:43:
Prima, ik vond het een beetje een vrouwenactie, that's all.
Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.
“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.
Dat het een uitlaatkleptopic is impliceert niet dat anderen niet om die verantwoording mogen vragenBtM909 schreef op woensdag 25 maart 2015 @ 10:35:
[...]
Dit is een uitlaatkleptopic, geen leg-hier-je-verantwoording-aftopic
[ Voor 5% gewijzigd door .oisyn op 25-03-2015 12:25 ]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Maar dat iemand erom vraagt betekent niet dat er antwoord gegeven moet worden.oisyn schreef op woensdag 25 maart 2015 @ 12:24:
[...]
Dat het een uitlaatkleptopic is impliceert niet dat anderen niet om die verantwoording mogen vragen
Wat een lastig gedoe, Firesphere moet gewoon drie dagen overwerken en dus "sucks to be him"
Waarom post je dit?!?.oisyn schreef op woensdag 25 maart 2015 @ 12:24:
[...]
Dat het een uitlaatkleptopic is impliceert niet dat anderen niet om die verantwoording mogen vragen. Het mes snijdt aan twee kanten.
PHP is kut. Windows is kut. Mac is awesome. iOS is veel beter dan Android. C# is nep-Java. VI is voor hippies. Emacs is oude rommel. Linux desktop is voor mensen die geen mac kunnen betalen. Micro$oft is voor mensen met een ondergemiddeld IQ. WII U is een awesome console. PS4 en XBOX ONE zijn superieur aan PC gaming.
Zijn we nu weer allemaal gezellige geeks met een haat-liefde verhouding tegenover alles met een stekker?
[ Voor 49% gewijzigd door Gamebuster op 25-03-2015 12:49 ]
Let op: Mijn post bevat meningen, aannames of onwaarheden
Omdat ik me overal graag mee bemoei, ik dacht dat jou dat inmiddels wel duidelijk was
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Waarom post je dit?Gamebuster schreef op woensdag 25 maart 2015 @ 12:46:
Even het topic weer een gezondere wending geven:
PHP is kut. Windows is kut. Mac is awesome. iOS is veel beter dan Android. C# is nep-Java. VI is voor hippies. Emacs is oude rommel. Linux desktop is voor mensen die geen mac kunnen betalen. Micro$oft is voor mensen met een ondergemiddeld IQ. WII U is een awesome console. PS4 en XBOX ONE zijn superieur aan PC gaming.
Zijn we nu weer allemaal gezellige geeks met een haat-liefde verhouding tegenover alles met een stekker?
Ik kan trouwens nog wel herinneren dat jij eigenlijk OS X helemaal crap vond vanwege de geslotenheid (zelfde geldt voor iOS) en dat je graag een Linux systeem wilde, alleen dan eentje waarbij je laptop ook echt meer dan 2 uur op de batterij mee kon en HiDPI geen problemen gaf.... Waarom opeens zo bitter?
Niemand zegt datMerethil schreef op woensdag 25 maart 2015 @ 12:26:
[...]
Maar dat iemand erom vraagt betekent niet dat er antwoord gegeven moet worden
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Als we dan toch anal zijn: ik zeg toch niet dat het geen "vraag-hier-om-verantwoording-af-te-leggentopic"?.oisyn schreef op woensdag 25 maart 2015 @ 12:24:
[...]
Dat het een uitlaatkleptopic is impliceert niet dat anderen niet om die verantwoording mogen vragen. Het mes snijdt aan twee kanten.
Elke vraag mag gesteld worden, maar blijkbaar wilt Firephere geen antwoord geven.
Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.
Waarom zeg je nou anal?!BtM909 schreef op woensdag 25 maart 2015 @ 13:01:
[...]
Als we dan toch anal zijn: ik zeg toch niet dat het geen "vraag-hier-om-verantwoording-af-te-leggentopic"?
Elke vraag mag gesteld worden, maar blijkbaar wilt Firephere geen antwoord geven.
Omdat ik eerlijk gezegd geen Nederlands woord kan bedenken wat daar in de buurt komt.
Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.
Mierenneuken?BtM909 schreef op woensdag 25 maart 2015 @ 13:03:
[...]
Omdat ik eerlijk gezegd geen Nederlands woord kan bedenken wat daar in de buurt komt.
Wat is de officiële definitie van mierenneuken eigenlijk?anal: extremely or overly neat, careful, or precise
Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.
BtM909 schreef op woensdag 25 maart 2015 @ 13:04:
[...]
[...]
Wat is de officiële definitie van mierenneuken eigenlijk?
Mierenneuken
Mierenneuken, ook wel muggenziften, chicaneren, haarkloven, kommaneuken, of spijkers op laag water zoeken (Van Dale) is het vitten op kleine foutjes en het actief zoeken naar de geringste aanleiding om kritiek te uiten. De etymologie van muggenziften moet in de Bijbel gezocht worden (Mattheus 23:24): Gij blinde leidslieden, die de mug uitzijgt, en
Bron: http://www.encyclo.nl/begrip/Mierenneuken
Geen resultaat voor ' mierenneuken '
Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.
Ik kan het me niet herinneren dat ik zoiets ergens heb neergezet, maar de argumentatie betreffende accuduur en HiDPI klinkt wel als een klachtenlijst van mij richting Linux.Merethil schreef op woensdag 25 maart 2015 @ 12:54:
[...]
Waarom post je dit?
Ik kan trouwens nog wel herinneren dat jij eigenlijk OS X helemaal crap vond vanwege de geslotenheid (zelfde geldt voor iOS) en dat je graag een Linux systeem wilde, alleen dan eentje waarbij je laptop ook echt meer dan 2 uur op de batterij mee kon en HiDPI geen problemen gaf.... Waarom opeens zo bitter?
Heb je linkje?
Let op: Mijn post bevat meningen, aannames of onwaarheden
Ik heb het je horen zeggen, niet zien schrijvenGamebuster schreef op woensdag 25 maart 2015 @ 13:07:
[...]
Ik kan het me niet herinneren dat ik zoiets ergens heb neergezet, maar de argumentatie betreffende accuduur en HiDPI klinkt wel als een klachtenlijst van mij richting Linux.
Heb je linkje?
Hoezo niet voorspelbaar?Alex) schreef op woensdag 25 maart 2015 @ 00:25:
[...]
Het is een vrij complex model, omdat er zoveel afhankelijkheden zijn en alles combineerbaar is. Ook zijn er ene paar tabellen die naar zichzelf verwijzen (parent-child) en zit er ook nog een stukje Entity-Attribute-Value-pattern in.
Al met al best wel complexe objecten, en ik denk echt dat er in het verleden een paar keuzes en foutieve aannames zijn gemaakt die nu erg vervelend lijken uit te pakken. Ik ben er nu dus hard mee bezig om die dingen recht te trekken, zo goed en zo kwaad als het kan.
En daarbij zie ik gewoon dat Entity Framework zich soms erg onvoorspelbaar gedraagt. Als je al een POCO hebt met daarin een gezette primary key, en je hangt die in een nieuw object, dan is het niet bepaald voorspelbaar gedrag als EF ineens een nieuwe insert doet voor een bestaand object.
Dit zegmaar:
C#:
1 2 3 4 5 6 7 var author = new Author { AuthorId = 1, Name = "Alex" }; using(var ctx = new BooksContext()) { ctx.Books.Add(new Book() { Author = author, Name = "1000 kleine stukjes EF-haat voor gevorderden." }; ctx.SaveChanges(); }
Dat er dan ineens een nieuwe Author wordt aangemaakt...
[...]
M.i. als EF detecteerd dat het object niet vanuit de DB komt, dan betekent het voor EF dat deze aangemaakt moet worden. Als jij dan dat nieuwe object als referentie gebruikt, dan moet EF ook die persisteren, om aan de DB constraints te voldoen. En wordt bij het aanmaken de AuthorId gezet met de nieuwe aangemaakte waarde. En wordt het object aangemerkt als 'verbonden met db'.
Je moet dan niet een nieuwe Author object aanmaken, maar een referentie uit EF ophalen.
(vanuit het oogpunt van een java ontwikkelaar
let the past be the past.
Getergd doen en als er gevraagd wordt wat er is dan zeggen dat er niets is, of "laat maar".kenneth schreef op woensdag 25 maart 2015 @ 11:44:
Wat is er vrouwelijk aan die actie?
Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.
Zelfs kut is kut.
Lekker op de bank
Inderdaad, of je attacht de nieuwe entiteit aan de context. Waardoor de oude wordt opgehaald, en wijzigingen worden doorgevoerd. EF heeft een aantal slechte zaken, maar mensen kunnen ook heel erg overdrijven.SPee schreef op woensdag 25 maart 2015 @ 13:21:
[...]
Je moet dan niet een nieuwe Author object aanmaken, maar een referentie uit EF ophalen.
Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info
Zoiets?farlane schreef op woensdag 25 maart 2015 @ 13:22:
[...]
Getergd doen en als er gevraagd wordt wat er is dan zeggen dat er niets is, of "laat maar".
Dat dus
Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.
Als we anal zijn dan mist er een werkwoord in die laatste deelzinBtM909 schreef op woensdag 25 maart 2015 @ 13:01:
[...]
Als we dan toch anal zijn: ik zeg toch niet dat het geen "vraag-hier-om-verantwoording-af-te-leggentopic"?
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
.oisyn schreef op woensdag 25 maart 2015 @ 13:56:
[...]
Als we anal zijn dan mist er een werkwoord in die laatste deelzin
Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.
Daarom kan je beter de FK ID meegeven aan je object ipv een heel object. Scheelt een hoop gedoe.SPee schreef op woensdag 25 maart 2015 @ 13:21:
[...]
Hoezo niet voorspelbaar?
M.i. als EF detecteerd dat het object niet vanuit de DB komt, dan betekent het voor EF dat deze aangemaakt moet worden. Als jij dan dat nieuwe object als referentie gebruikt, dan moet EF ook die persisteren, om aan de DB constraints te voldoen. En wordt bij het aanmaken de AuthorId gezet met de nieuwe aangemaakte waarde. En wordt het object aangemerkt als 'verbonden met db'.
Je moet dan niet een nieuwe Author object aanmaken, maar een referentie uit EF ophalen.
(vanuit het oogpunt van een java ontwikkelaar)
Klinkt inderdaad vrij slecht, maar nu ik het zo hoor is het wel een goede oplossing voor een probleem wat ik een tijd geleden had (meerdere soorten lictenties voor producten, en elke soort licentie heeft een andere inlogvorm (username/pass, code, enz), huidige oplossing vereist dat iedere nieuwe soort een nieuwe class heeft in het model en ook een eigen manier van verwerken heeft in de code.) Maar hoe werk je dan met dit soort gegevens? Je hebt dus niet een 'model' dat compiletime wordt gevalideerd...Alex) schreef op woensdag 25 maart 2015 @ 01:36:
[...]
EAV is een soort database-in-een-database-model dat je op zich best veel vrijheid geeft. Je definieert een tabel met entiteiten (je tabellen), nog een tabel met attributen (de kolommen die in iedere tabel bestaan) en een tabel met values (de rijen en hun waardes).
In veel situaties is dit model niet gewenst omdat je alle vormen van referentiële integriteit en constraints kwijtraakt, maar voor sommige scenario's is het uitermate geschikt. Bijvoorbeeld als je werkt met stukjes informatie die niet goed in een klassieke tabelstructuur te vangen zijn of die dynamisch kan veranderen. Ik heb dus zo'n situatie
Volgens mij heb ik dat dan ook eens gehad. Ik zit in een tabel met max. 300 entries ook al ineens op 6k+ als ID....[...]
Het 'grappige' is dat hij ook meteen de ID met 1000 ophoogt.
Hmm interessant. Misschien daar eens naar kijken voor mijn webclient. Op dit moment heb ik gewoon concurrentconnectiondinges aangezet, dat werkt prima. Het is ook nodig voor een ander (threaded) proces die meerdere connections nodig heeft om geen concurrentmodificationexceptions te krijgen (of hoe die ook maar mogen heten in C#).[...]
Oh, die is ook leuk. Dispose je wel netjes je DbContexts enzo?
In mijn project gebruik ik Unity om een DbContext te injecten die ik tijdens vrijwel de hele request-lifecycle gebruik. Unity zorgt uiteindelijk voor het disposen van dat ding, wanneer dat request is afgelopen. Werkt best netjes
2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI
1
2
| - cache do
%meta{ charset: "utf-8" } |
Resultaat 1e keer laden: (fresh)
1
| <meta charset='utf-8'> |
Resultaat 2e keer laden: (uit cache)
1
| meta charset='utf-8'> |
HAML 2:
1
2
| - cache do <meta charset='utf-8'> |
Resultaat uit 1e (fresh) en 2e keer laden (cache) gelijk:
1
| <meta charset='utf-8'> |
Wtf?
[ Voor 39% gewijzigd door Gamebuster op 25-03-2015 15:01 ]
Let op: Mijn post bevat meningen, aannames of onwaarheden
Kijk wel uit met het implementeren van EAV.F.West98 schreef op woensdag 25 maart 2015 @ 14:37:
[...]
Klinkt inderdaad vrij slecht, maar nu ik het zo hoor is het wel een goede oplossing voor een probleem wat ik een tijd geleden had (meerdere soorten lictenties voor producten, en elke soort licentie heeft een andere inlogvorm (username/pass, code, enz), huidige oplossing vereist dat iedere nieuwe soort een nieuwe class heeft in het model en ook een eigen manier van verwerken heeft in de code.) Maar hoe werk je dan met dit soort gegevens? Je hebt dus niet een 'model' dat compiletime wordt gevalideerd...
[...]
Sowieso is het leuk om een keer voor een hobby/schoolopdracht te gebruiken, zodat je weet hoe het werkt en wat de voor- en nadelen zijn. Voor een klant inzetten is iets wat je in eerste instantie beter niet kunt doen, tenzij je zeker weet dat er voldoende voordelen zijn die van groter belang dan de bijkomende nadelen.
In het geval van Alex ga ik er vanuit dat dit vantevoren goed is doordacht
[ Voor 3% gewijzigd door Jan_V op 25-03-2015 15:00 ]
Battle.net - Jandev#2601 / XBOX: VriesDeJ
2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI
In de definitie van het object staat geïdentificeerd wat de primary key van het object is, m.i. zou EF slim genoeg moeten zijn om dan te bepalen "Hey, het is een bestaand object. Laat ik dus een update dáárop doen i.p.v. een nieuwe insert" - zo zou ik het tenminste zelf implementeren.SPee schreef op woensdag 25 maart 2015 @ 13:21:
[...]
Hoezo niet voorspelbaar?
M.i. als EF detecteerd dat het object niet vanuit de DB komt, dan betekent het voor EF dat deze aangemaakt moet worden. Als jij dan dat nieuwe object als referentie gebruikt, dan moet EF ook die persisteren, om aan de DB constraints te voldoen. En wordt bij het aanmaken de AuthorId gezet met de nieuwe aangemaakte waarde. En wordt het object aangemerkt als 'verbonden met db'.
Je moet dan niet een nieuwe Author object aanmaken, maar een referentie uit EF ophalen.
(vanuit het oogpunt van een java ontwikkelaar)
Uiteindelijk ben ik gaan doen wat Megamind al zei, ik zet de FK-identifier en de rest zal me aan m'n reet roesten. Dat het childobject überhaupt werd ingevuld was eigenlijk een bugje, dat eerst niet opviel omdat alles uit dezelfde DbContext kwam.
Als je met EAV wilt werken moet je zelf verdomde goed weten welke datatypes je hebt, hoe je relaties liggen en hoe je de data consistent houdt. Er is tenslotte geen enkele vorm van referentiële integriteit of constraints meer.F.West98 schreef op woensdag 25 maart 2015 @ 14:37:
[...]
Klinkt inderdaad vrij slecht, maar nu ik het zo hoor is het wel een goede oplossing voor een probleem wat ik een tijd geleden had (meerdere soorten lictenties voor producten, en elke soort licentie heeft een andere inlogvorm (username/pass, code, enz), huidige oplossing vereist dat iedere nieuwe soort een nieuwe class heeft in het model en ook een eigen manier van verwerken heeft in de code.) Maar hoe werk je dan met dit soort gegevens? Je hebt dus niet een 'model' dat compiletime wordt gevalideerd...
Als je model hierop is ingericht hoeft het geen probleem te zijn, maar je moet verdomd goed in de gaten houden waar je mee bezig bent.
Klinkt als hetzelfde ding.Volgens mij heb ik dat dan ook eens gehad. Ik zit in een tabel met max. 300 entries ook al ineens op 6k+ als ID....
Unity (of soortgelijke producten zoals Autofac, Ninject, enz.) is heerlijk. In het begin is het even wennen, maar het maakt het zoveel makkelijker om je code te testen, of bijvoorbeeld om dingen aan te passen.Hmm interessant. Misschien daar eens naar kijken voor mijn webclient. Op dit moment heb ik gewoon concurrentconnectiondinges aangezet, dat werkt prima. Het is ook nodig voor een ander (threaded) proces die meerdere connections nodig heeft om geen concurrentmodificationexceptions te krijgen (of hoe die ook maar mogen heten in C#).
Stel, ik heb een klasse met de volgende constructor:
1
2
3
| public class AccessValidator { public AccessValidator (IUnitOfWork, IScriptEngine scriptEngine, IFailureHandler failureHandler) { ... } } |
Als ik hier nu iets aan toevoeg of wijzig hoef ik niet op 30 plekken (5 echte plekken + 25 unit tests) de new-call aan te passen, Unity zorgt er wel voor dat alles blijft werken en dat ik de juiste objecten binnenkrijg.
Wat ik hier doe heet 'constructor injection', een alternatief wat je ook wel ziet is 'property injection' (waarbij de waarde van properties wordt gezet op instances van objecten) maar dat vind ik er altijd een beetje lelijk uitzien. Met constructors maak je tenminste meteen duidelijk wat de afhankelijkheden zijn die een klasse heeft, waarbij dat met properties minder in-your-face is...
Eens.Jan_V schreef op woensdag 25 maart 2015 @ 15:00:
[...]
Kijk wel uit met het implementeren van EAV.
Sowieso is het leuk om een keer voor een hobby/schoolopdracht te gebruiken, zodat je weet hoe het werkt en wat de voor- en nadelen zijn. Voor een klant inzetten is iets wat je in eerste instantie beter niet kunt doen, tenzij je zeker weet dat er voldoende voordelen zijn die van groter belang dan de bijkomende nadelen.
Ja, er is zeker goed over nagedacht. We hadden zulke functionaliteit gewoon nodig omdat er veel voorwaarden zijn aan wanneer bepaalde informatie ingevuld mag/moet worden, en dat liet zich niet vangen in een gewone tabelstructuur.In het geval van Alex ga ik er vanuit dat dit vantevoren goed is doordacht
Wat ik doe is dat ik alle gekozen waardes in een Dictionary<string, List<string>>* gooi, die ik vervolgens weer aan een paar IronPython-scripts voer. Die scripts halen informatie uit die dictionary om er weer verdere bewerkingen op te doen.
* In mijn datamodel heb ik enkel te maken met strings, vandaar de keuze voor dat type.
We are shaping the future
Vorige week vroeg een collega in de mailgroep: Constructor autowiring vs field autowiring?Alex) schreef op woensdag 25 maart 2015 @ 15:23:
[...]
Wat ik hier doe heet 'constructor injection', een alternatief wat je ook wel ziet is 'property injection' (waarbij de waarde van properties wordt gezet op instances van objecten) maar dat vind ik er altijd een beetje lelijk uitzien. Met constructors maak je tenminste meteen duidelijk wat de afhankelijkheden zijn die een klasse heeft, waarbij dat met properties minder in-your-face is...
Dus gelijk een grote discussie gaande: de ene helft is voor, de andere helft tegen.
Vergelijkbaar met de discussie: spaties of tabs?
let the past be the past.
Toch wel een iets ander soort discussie m.i.SPee schreef op woensdag 25 maart 2015 @ 15:56:
[...]
Vorige week vroeg een collega in de mailgroep: Constructor autowiring vs field autowiring?
Dus gelijk een grote discussie gaande: de ene helft is voor, de andere helft tegen.
Vergelijkbaar met de discussie: spaties of tabs?
(@DiscWout) omg
(@DiscWout) bijna over mn nek :D
(@DiscWout) echt zo een boer laten, hele mond vol kots :D
Dus elke keer dat je een object maakt met een expliciete key moet EF eerst in de database gaan kijken of dat object al dan niet al bestaat? Daar wordt het niet efficiënter van. Bovendien geef jij door te zeggen 'new X' eigenlijk al aan dat je bedoelt dat het een nieuw object moet zijn. EF is niet kut, jij maakt een heleboel verkeerde aannames.Alex) schreef op woensdag 25 maart 2015 @ 15:23:
[...]
In de definitie van het object staat geïdentificeerd wat de primary key van het object is, m.i. zou EF slim genoeg moeten zijn om dan te bepalen "Hey, het is een bestaand object. Laat ik dus een update dáárop doen i.p.v. een nieuwe insert" - zo zou ik het tenminste zelf implementeren.
.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?
Eigenlijk was het een object dat door een eerdere DbContext was opgehaald, ik had het hier wat versimpeld.Korben schreef op woensdag 25 maart 2015 @ 16:13:
[...]
Dus elke keer dat je een object maakt met een expliciete key moet EF eerst in de database gaan kijken of dat object al dan niet al bestaat? Daar wordt het niet efficiënter van. Bovendien geef jij door te zeggen 'new X' eigenlijk al aan dat je bedoelt dat het een nieuw object moet zijn. EF is niet kut, jij maakt een heleboel verkeerde aannames.
Laten we zeggen: Entity Framework is vast een heel degelijk product, maar ik vind het niet altijd even logisch werken. Er gebeurt zo nu en dan iets teveel magie naar mijn smaak.
We are shaping the future
iOS developer
Ik zit tijdelijk op een WebForms-project. /me weent stilletjes
Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.
MVC is tof, WebAPI (wat hetzelfde is, in feite) nog fijnerkenneth schreef op woensdag 25 maart 2015 @ 16:43:
MVC mag ik hopen voor je?
Ik zit tijdelijk op een WebForms-project. /me weent stilletjes
Inderdaad, helemaal geen design-gedoe en echt alleen maar data overpompenMercatres schreef op woensdag 25 maart 2015 @ 16:44:
[...]
MVC is tof, WebAPI (wat hetzelfde is, in feite) nog fijner
Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.
Design is voor loseurskenneth schreef op woensdag 25 maart 2015 @ 16:49:
[...]
Inderdaad, helemaal geen design-gedoe en echt alleen maar data overpompen
Bower is leuk voor de opbouw. Laat Grunt links liggen ter faveure van GulpJS.TheNephilim schreef op woensdag 25 maart 2015 @ 16:48:
Vandaag eens met Grunt en Bower aan de slag gegaan! Hoewel het een boel tijd scheelt, is het nogal toveren om het een beetje netjes te krijgen.
Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.
Ik vind zelf Gulp fijner dan Grunt. Bower ben ik niet zo'n fan van, vond het de laatste keer dat ik het gebruikte meer werk om het goed in het proces te krijgen dan de benodigde libraries handmatig te downloaden.TheNephilim schreef op woensdag 25 maart 2015 @ 16:48:
Vandaag eens met Grunt en Bower aan de slag gegaan! Hoewel het een boel tijd scheelt, is het nogal toveren om het een beetje netjes te krijgen.
Heb het proces inmiddels wel staan zo ongeveer, het stelt hier ook niet heul veel voor. Maar inderdaad, waar laat je alles en hoe zet je het netjes weg.
Oké; Gulp kwam ik al een paar keer tegen, zal eens kijken wat ik daarmee kan!
Ik verhoog het met een asp.net vb project dat zijn oorsprong vind in asp en toen is omgezet naar .net 1 en een DB in db design ^^kenneth schreef op woensdag 25 maart 2015 @ 16:43:
[...]
Ik zit tijdelijk op een WebForms-project. /me weent stilletjes
*edit* ik zou het verhaal erger kunnen maken, maar collega's... Daarnaast leer ik in dit bedrijf wel heel veel
[ Voor 28% gewijzigd door Caelorum op 25-03-2015 18:22 ]
Echter aan de andere kant heb ik zelf nog niet echt een goed gevoel om allerlei 'dependencies' erin te gooien, packages etc etc.
Heeft niemand wat naslagwerk omtrent deze onderwerpen eigenlijk? Gewoon puur op basis van hoe je het allemaal zou kunnen implementeren, wat het profijt er van is etc?
----------------------------------
http://www.npo.nl/robots.txtDeze website is bedoeld voor eigen raadpleging via normaal browser-bezoek. Het is derhalve niet toegestaan om de website op geautomatiseerde wijze te (laten) raadplegen, bijvoorbeeld via scripts, spiders en/of bots.
Eventuele hyperlinks dienen bezoekers rechtstreeks te leiden naar de context, waarbinnen de publieke omroepen content aanbieden. Video- en audiostreams mogen bijvoorbeeld alleen worden vertoond via een link naar een omroeppagina of embedded omroepplayer. Overneming, inframing, herpublicatie, bewerking of toevoeging zijn niet toegestaan. Eveneens is het niet toegestaan technische beveiligingen te omzeilen of te verwijderen, of dit voor anderen mogelijk te maken.
[ Voor 43% gewijzigd door Douweegbertje op 25-03-2015 19:00 ]
In totaal heb ik de processingtijd van een bepaald iets nagenoeg gehalveerd, terwijl ik amper iets heb gedaan.
Soms is die magie van EF toch best wel handig
We are shaping the future
Dit! Bower lijikt gewoon git repos to clonen ipv packages te downloaden (wat je van een package manager verwacht). Niet zo gek natuurlijk omdat er voor JS/CSS geen unifrome packages bestaan.alienfruit schreef op woensdag 25 maart 2015 @ 17:19:
Bower is vervelend omdat sommige components niet met een pre-build versie komen. Moet je als nog npm install / grunt build doen. Rete irritant.
Ook vind ik het lastig dat er geen `bower update` command is. Wel voor elk package indivudeel AFAIK. En er is ook geen "DependencyUpToDateBadge"
Gebruik nu al een tijdje grunt om 20+ kleine AngularJS bestandjes te minifien naar 1 bestand, en hetzelfde met al de dependencies. Ook CSS en HTML templates worden geminified.
Enkel zeer lastig met git merge, dus ik heb de bestanden in .gitingore staan
EDIT: en Grunt vs Guplp : http://markdalgleish.gith...build-wars-gulp-vs-grunt/
[ Voor 5% gewijzigd door LEDfan op 25-03-2015 19:18 ]
Als het nog traag is kan je de queries in SQL Management Studio stoppen en er een execution plan van maken, kan je zien waar de traagheid zit.Alex) schreef op woensdag 25 maart 2015 @ 19:01:
Vandaag een leuke performancewinst kunnen behalen door een LINQ-query met veel .Include()'s erin op te splitsen in een paar losse queries die de benodigde tabellen vullen, en de rest door EF's magie aan elkaar te knopen. En nog een foreach vervangen door Parallel.ForEach, wat ook nog eens 5 seconden tijdiwinst opleverde.
In totaal heb ik de processingtijd van een bepaald iets nagenoeg gehalveerd, terwijl ik amper iets heb gedaan.
Soms is die magie van EF toch best wel handig![]()
Dat heb ik al gedaan, SSMS stelde voor om een paar indices toe te voegen. Dat hielp ook welMegamind schreef op woensdag 25 maart 2015 @ 19:11:
[...]
Als het nog traag is kan je de queries in SQL Management Studio stoppen en er een execution plan van maken, kan je zien waar de traagheid zit.
We are shaping the future
Ik heb vandaag het geheugengebruik van een server van 24GB naar 15GB gebrachtAlex) schreef op woensdag 25 maart 2015 @ 19:01:
Vandaag een leuke performancewinst kunnen behalen door een LINQ-query met veel .Include()'s erin op te splitsen in een paar losse queries die de benodigde tabellen vullen, en de rest door EF's magie aan elkaar te knopen. En nog een foreach vervangen door Parallel.ForEach, wat ook nog eens 5 seconden tijdiwinst opleverde.
In totaal heb ik de processingtijd van een bepaald iets nagenoeg gehalveerd, terwijl ik amper iets heb gedaan.
Soms is die magie van EF toch best wel handig![]()
Bleek een bug in IIS te zijn.
Maar nu toch maar eens naar huis
[ Voor 12% gewijzigd door TheNephilim op 25-03-2015 22:40 ]
De logica ontgaat mij enorm hard hier.TheNephilim schreef op woensdag 25 maart 2015 @ 22:38:
https://www.digitalocean.com/ + http://wkhtmltopdf.org/ + https://github.com/mikehaertl/phpwkhtmltopdf = voor $5/mo PDFjes genereren
Maar nu toch maar eens naar huis
Gewoon het resultaat van een avondje prutsenDouweegbertje schreef op woensdag 25 maart 2015 @ 22:41:
[...]
De logica ontgaat mij enorm hard hier.
Dus je maakt een 'droplet' aan bij DigitalOcean. Dan installeer je wkhtmltopdf, php/nginx/etc. Even een index.php bestandje maken met phpwkhtmltopdf erin en klaar!
Ik snap het niet, wat is hieraan 'beter' dan lokaal wkhtmltopdf draaien?TheNephilim schreef op woensdag 25 maart 2015 @ 22:38:
https://www.digitalocean.com/ + http://wkhtmltopdf.org/ + https://github.com/mikehaertl/phpwkhtmltopdf = voor $5/mo PDFjes genereren
Maar nu toch maar eens naar huis
Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.
Omdat't beter werkt zo, gok ik. Plus, lokaal draaien, PDF generatie is ruk.farlane schreef op woensdag 25 maart 2015 @ 23:17:
[...]
Ik snap het niet, wat is hieraan 'beter' dan lokaal wkhtmltopdf draaien?
I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!
Performancehit die je anders op je eigen systemen krijgt, en daarnaast kan je dan makkelijk één pak instellingen doen op één server in plaats van op elke server waar je het lokaal op gaat draaien.farlane schreef op woensdag 25 maart 2015 @ 23:17:
[...]
Ik snap het niet, wat is hieraan 'beter' dan lokaal wkhtmltopdf draaien?
Mij lijkt het wel handig.... Aan de andere kant: In ons geval zouden we in onze eigen servergroepen een server neerzetten die dan specifiek dit staat af te handelen. Niet goedkoper, wel nóg fijner gevoel qua veiligheid e.d.
Elke keer weer bij een bepaalde actie in onze applicatie in IE11. Het werkt in Chrome en Firefox en volgens mij werkte het ook in IE9.Internet Explorer has stopped working
“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.
Misschien wil je hier met meerdere projecten gebruik van maken, dan zou je per project wkhtmltopdf moeten installeren. Vaak niet eens mogelijk bij 'gewone' webhosting.farlane schreef op woensdag 25 maart 2015 @ 23:17:
[...]
Ik snap het niet, wat is hieraan 'beter' dan lokaal wkhtmltopdf draaien?
De laatste keer heb ik de afbeelding geopend in Paint.net. Daar kun je ook de kleuren uit halen.frG schreef op donderdag 26 maart 2015 @ 13:16:
Welke colorpicker gebruiken jullie? gebruiker nu 1 in de browser, maar ben op zoek naar een goede voor windows, met shortcut toetsencombinatie..
Ja dat begrijp ik, maar is niet snel en efficiënthylke94 schreef op donderdag 26 maart 2015 @ 13:18:
[...]
De laatste keer heb ik de afbeelding geopend in Paint.net. Daar kun je ook de kleuren uit halen.
Deze dan: ColorPix?frG schreef op donderdag 26 maart 2015 @ 13:19:
[...]
Ja dat begrijp ik, maar is niet snel en efficiënt
Edit: Google
[ Voor 15% gewijzigd door hylke94 op 26-03-2015 13:26 ]
Dit topic is gesloten.
![]()
Dit topic is niet de plaats om te lopen helpdesken. De Coffee Corner is primair bedoeld als uitlaatklep voor iedereen in de Devschuur® en niet als vraagbaak.
