[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]
Held
If money talks then I'm a mime
If time is money then I'm out of time
No need, XP doet het al best aardig en onze printer doet dat helemaal goed. Het ziet er spot-on uit
If money talks then I'm a mime
If time is money then I'm out of time
Klopt, dat is een mogelijkheid die we gaan bekijken. Alleen moeten we dan nog iets vinden zodat op alle web frontend servers de cache wordt geleegd/bijgewerkt, daar hebben we nu nog geen oplossing voor.Verwijderd schreef op donderdag 16 december 2010 @ 00:38:
[...]
Je kan toch ook gewoon events aan SP hangen? Zodra er een item bijkomt, geupdate wordt etc, dan je eigen data bijwerken?
We are shaping the future
Idd. GROUP BY werkt in SQL Server zoals het hoort.Matis schreef op donderdag 16 december 2010 @ 08:35:
[...]
![]()
Ik heb laatst een inhouse website/overzicht gemaakt waarin ik vanuit PHP moest communiceren met een MSSQL database (2008). Wat werd ik daar verdrietig van. GROUP BY werkt niet zoals ik gehoopd/verwacht had vanuit mijn MySQL verleden en ook zijn er een groot aantal verschillen die ik niet positief vind.
https://fgheysels.github.io/
haha ok :-)Matis schreef op donderdag 16 december 2010 @ 09:12:
[...]
No need, XP doet het al best aardig en onze printer doet dat helemaal goed. Het ziet er spot-on uit
Ik vind dit echt een geweldige opmerkingMatis schreef op donderdag 16 december 2010 @ 08:35:
[...]
![]()
Ik heb laatst een inhouse website/overzicht gemaakt waarin ik vanuit PHP moest communiceren met een MSSQL database (2008). Wat werd ik daar verdrietig van. GROUP BY werkt niet zoals ik gehoopd/verwacht had vanuit mijn MySQL verleden en ook zijn er een groot aantal verschillen die ik niet positief vind.
In PHP moet je weer opzoek naar de DLL's om PDO te kunnen laten babbelen met MSSQL en dan is het ook nog de kunst om het geoptimaliseerd te krijgen.
* Matis zou dat niet als upgrade zien.
Wat verwacht je dan van een GROUP BY? En welke andere verschillen ben je tegengekomen?Matis schreef op donderdag 16 december 2010 @ 08:35:
[...]
Wat werd ik daar verdrietig van. GROUP BY werkt niet zoals ik gehoopd/verwacht had vanuit mijn MySQL verleden en ook zijn er een groot aantal verschillen die ik niet positief vind.
No trees were harmed in creating this message. However, a large number of electrons were terribly inconvenienced.
Met andere woorden, als ik in een tabel de eerste voornamen van unieke achternamen van collega's wil weten kon ik in MySQL doen:
1
| SELECT voornaam FROM medewerkers GROUP BY achternaam |
Dan zou MySQL mij het gewenste resultaat teruggeven. Terwijl MSSQL gaat lopen bitchen over het feit dat voornaam niet in de GROUP BY clausule zit.
Nu zal er hoogstwaarschijnlijk een goede reden voor zijn en een mogelijkheid om het toch werkend te krijgen voor mij, maar ik heb het nog niet voor elkaar
Ik ben ook al vanaf vanochtend bezig om in PDO een variable kolomnaam toe te kunnen voegen in mijn statement; Iets in de trant van
1
2
3
4
| $sth = $this->_dbh->prepare('SELECT * FROM dbo._CrossTable ORDER BY :OrderColumn :AscDesc'); $sth->setFetchMode(PDO::FETCH_ASSOC); $sth->bindValue(':OrderColumn', 'SpfTimestamp', PDO::PARAM_STR); $sth->bindValue(':AscDesc', 'DESC', PDO::PARAM_STR); |
Maar ook daar gaat het weer eens fout; Wat ik in feite probeer te doen is het volgende: http://databases.aspfaq.c...n-an-order-by-clause.html
Maar dan met PDO
If money talks then I'm a mime
If time is money then I'm out of time
Ook even geïnstalleerd, kleine moeite om te doenDevilly schreef op donderdag 16 december 2010 @ 10:06:
Chrome for a Cause
Ik vind het een mooi initiatief en wilde het jullie daarom niet onthouden.
Kater? Eerst water, de rest komt later
Verwijderd
Ik heb het altijd logisch gevonden: Je kan niet groeperen op data die je niet geselecteerd hebt. Dat MySQL de data stiekem TOCH selecteert is een ander verhaalMatis schreef op donderdag 16 december 2010 @ 11:20:
Dan zou MySQL mij het gewenste resultaat teruggeven. Terwijl MSSQL gaat lopen bitchen over het feit dat voornaam niet in de GROUP BY clausule zit.
Wat is de logica daarachter dan? Je kunt toch ook filteren op data die je niet geselecteerd hebt? Ik denk dat je er verkeerd tegenaan kijkt. Het is niet "pak deze velden en doe daar wat mee". Het is "arrangeer de data van deze tabellen op deze manier, en geef vervolgens deze velden terug". Wellicht dat LINQ meer volgens jouw intuitie werkt, daar staat de SELECT achteraan ipv vooraan, en begin je dus met de FROM.Ik heb het altijd logisch gevonden: Je kan niet groeperen op data die je niet geselecteerd hebt
Bovendien gaat het daar niet eens om, het is andersom: het gaat om kolommen selecteren (zonder aggregates) die niet in de group by zitten (je mag namelijk gewoon groeperen op data die je niet selecteert). En volgens de SQL standaard mag dat ook gewoon in bepaalde situaties (volgens mij als elke tuple van de kolom in de groep dezelfde waarde heeft oid). MySQL is hierin wat losser dan noodzakelijk, en die geeft gewoon een willekeurige tuple terug. SQL Server daarentegen is juist weer wat stricter, daar mag je sowieso niet zo'n kolom selecteren. MySQL is het meest compliant wat dat punt betreft.
[ Voor 57% gewijzigd door .oisyn op 16-12-2010 11:36 ]
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.
Daar, gefixed.Matis schreef op donderdag 16 december 2010 @ 11:20:
Meh, wat ik vreemd/anders vind van MySQL naar MSSQL is het feit dat je GROUP BY moet doen op kolommen die je wilt selecteren.
Met andere woorden, als ik in een tabel de eerste een willekeurige voornaam per unieke achternamen van collega's wil weten kon ik in MySQL doen:
SQL:
1 SELECT voornaam FROM medewerkers GROUP BY achternaam
Dan zou MySQL mij het gewenste resultaat teruggeven. Terwijl MSSQL gaat lopen bitchen over het feit dat voornaam niet in de GROUP BY clausule zit.
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
GROUP BY moet je enkel gebruiken als je een aggregate gebruikt. Jouw voorbeeld is dus niet correct; daar moet je geen group by gebruiken.Matis schreef op donderdag 16 december 2010 @ 11:20:
Meh, wat ik vreemd/anders vind van MySQL naar MSSQL is het feit dat je GROUP BY moet doen op kolommen die je wilt selecteren.
Als je gewoon een lijst van unieke achternamen wilt weten, dan gebruik je DISTINCT:
1
| SELECT DISTINCT achternaam FROM medewerkers. |
En ja, dat werkt op de gereturnde resultset.
De reden is simpel:Met andere woorden, als ik in een tabel de eerste voornamen van unieke achternamen van collega's wil weten kon ik in MySQL doen:
SQL:
1 SELECT voornaam FROM medewerkers GROUP BY achternaam
Dan zou MySQL mij het gewenste resultaat teruggeven. Terwijl MSSQL gaat lopen bitchen over het feit dat voornaam niet in de GROUP BY clausule zit.
Nu zal er hoogstwaarschijnlijk een goede reden voor zijn
Gegeven volgende medewerkers:
pietje puk
jantje puk
Wat moet de DB dan teruggeven in dit geval ? Wil je pietje of wil je jantje ?
Op basis van wat moet de DB daar een beslissing in nemen ?
https://fgheysels.github.io/
Verder ben ik het eens met wat .oisyn zegt.
If money talks then I'm a mime
If time is money then I'm out of time
Kater? Eerst water, de rest komt later
Op basis van de stand van de maan natuurlijk, duh!whoami schreef op donderdag 16 december 2010 @ 12:19:
Op basis van wat moet de DB daar een beslissing in nemen ?
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 vervang de query dan gewoon voorMatis schreef op donderdag 16 december 2010 @ 12:32:
Misschien had ik idd de omschrijving eerste beter had weg kunnen laten en kunnen vervangen door willekeurige.
Verder ben ik het eens met wat .oisyn zegt.
1
| SELECT max(voornaam) FROM medewerkers GROUP BY achternaam |
Dan is tenminste duidelijk wat je doet. Bij de "willekeurige" optie kunnen mensen er op een gegeven moment op gaan vertrouwen dat bijvoorbeeld het record die als inserted is terug gegeven word, terwijl dat gedrag bij een andere engine of versie best weer anders kan zijn, en dus bugs introduceert.
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Waarschijnlijk heeft dat te maken met het feit dat ik altijd met MySQL heb gewerkt en het daarom als standaard ben gaan zien, maar de overstap naar MSSQL was toch een stuk groter dan verwacht.
En aangezien dat ik als autist verandering als iets slechts zie, is MSSQL itt MySQL iij slecht
If money talks then I'm a mime
If time is money then I'm out of time
Het verschil tussen deze twee zou zijn dat ANY geoptimaliseerd kan worden, en altijd degene mag teruggeven die hij zelf wil (altijd dezelfde, of soms ineens een andere). RANDOM daarentegen geeft een echt willekeurige terug.
Maargoed, tegenwoordig ben ik enorm fan van PostgreSQL, en deed ik geen vage dingen met MySQL dus heb ik ook geen last van vage verschillen.
Not everybody wins, and certainly not everybody wins all the time.
But once you get into your boat, push off and tie into your shoes.
Then you have indeed won far more than those who have never tried.
Dat argument gaat net zo goed op bij de query:whoami schreef op donderdag 16 december 2010 @ 12:19:
De reden is simpel:
Gegeven volgende medewerkers:
pietje puk
jantje puk
Wat moet de DB dan teruggeven in dit geval ? Wil je pietje of wil je jantje ?
Op basis van wat moet de DB daar een beslissing in nemen ?
1
| SELECT voornaam, achternaam FROM medewerkers GROUP BY achternaam |
En ik vermoed dat die het wel gewoon doet. Dus dat zal de reden niet zijn
Assumption is the mother of...eamelink schreef op donderdag 16 december 2010 @ 14:46:
[...]
Dat argument gaat net zo goed op bij de query:
SQL:
1 SELECT voornaam, achternaam FROM medewerkers GROUP BY achternaam
En ik vermoed dat die het wel gewoon doet. Dus dat zal de reden niet zijn
1
| select firstname, lastname from contact group by lastname |
@ hieronder: ik was lekker eerder!Msg 8120, Level 16, State 1, Line 1
Column 'contact.FirstName' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Kater? Eerst water, de rest komt later
Met GROUP BY is MySQL niet logischer want je kan queries schrijven waarvan je het resultaat niet kan voorspellen.Matis schreef op donderdag 16 december 2010 @ 14:25:
Wat ik dus wilde zeggen, was het feit dat MySQL IMHO logischer met queries omgaat dan dat MSSQL dat doet.
Ik kan geen use case verzinnen waarneer je dat zou willen bij een GROUP BY, als je al zoiets zo willen zijn er denk ik betere methodes te verzinnen.OnTracK schreef op donderdag 16 december 2010 @ 14:41:
Het zou mooi zijn als er een ANY(field) en RANDOM(field) aggregrate functies zouden komen. Dan kan je lekker expliciteren dat het je geen flikker uitmaakt welke je wil terughebben.
Nee hoor, MS SQL (en Oracle volgens mij ook) accepteren de query niet. Of er moet een aggregate functie gebruikt worden of het veld moet in de GROUP BY clause staan.eamelink schreef op donderdag 16 december 2010 @ 14:46:
[...]
Dat argument gaat net zo goed op bij de query:
SQL:
1 SELECT voornaam, achternaam FROM medewerkers GROUP BY achternaam
En ik vermoed dat die het wel gewoon doet. Dus dat zal de reden niet zijn
Die zal op MSSQL ook terrecht niet werken, aangezien er op voornaam geen aggregate function is toegepast en hij ook niet in de GROUP BY voorkomt. De regel is gewoon heel simpel: Als er een GROUP BY clause is, dan moeten alle velden in de GROUP BY clause komen OF i.c.m. een aggregate function gebruikt worden.eamelink schreef op donderdag 16 december 2010 @ 14:46:
[...]
Dat argument gaat net zo goed op bij de query:
SQL:
1 SELECT voornaam, achternaam FROM medewerkers GROUP BY achternaam
En ik vermoed dat die het wel gewoon doet. Dus dat zal de reden niet zijn
Dat is ook logisch aangezien je bij die velden een set terug krijgt, en op de een of andere manier moet er daar een uit gekozen worden.
Alleen zou het zo kunnen zijn dat je bijvoorbeeld op een ID groepeert, waardoor het overbodig kan zijn om op de andere velden te groeperen die bij dat ID horen ( aangezien die toch altijd gelijk zijn ). Dat is ook de reden dat je bij MySQL niet alle velden hoeft op te geven.
MS-SQL is daar dus iets te strict in, echter MySQL is weer te vrij in het toestaan van velden waar geen aggregate over heen gegaan is.
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Nee, voor ANY waarschijnlijk niet, ik kom ook nooit een situatie tegen waarin ik ANY nodig zou hebben. Het is meer een gedachte om mensen GROUP BY uit te leggen en wat ze nou eigenlijk aan het doen zijn. RANDOM lijkt me soms best handig: "selecteer albums en een willekeurige foto per foto-album". Ookal kan je het ook anders oplossen.PolarBear schreef op donderdag 16 december 2010 @ 14:55:
[...]
Ik kan geen use case verzinnen waarneer je dat zou willen bij een GROUP BY, als je al zoiets zo willen zijn er denk ik betere methodes te verzinnen.
Ook kan je hierdoor wel de GROUP BY strict maken en toch een makkelijke oplossing bieden aan alle niet werkende queries zodat mensen gaan nadenken over wat ze nou eigenlijk aan het SELECT'en zijn.
[ Voor 7% gewijzigd door OnTracK op 16-12-2010 15:02 ]
Not everybody wins, and certainly not everybody wins all the time.
But once you get into your boat, push off and tie into your shoes.
Then you have indeed won far more than those who have never tried.
De manier waarom MS SQL Server het doet heeft wel als consequentie dat de resultset altijd hetzelfde zal zijn of in iedergeval voorspelbaar. Bij MySQL is dat niet het geval en dat is toch een min punt voor een database.Woy schreef op donderdag 16 december 2010 @ 14:56:
[...]
MS-SQL is daar dus iets te strict in, echter MySQL is weer te vrij in het toestaan van velden waar geen aggregate over heen gegaan is.
De manier waarop het in de standaard toegestaan is om niet alle velden in een aggregate of group by op te nemen, levert ook altijd een consequent resultaat op.PolarBear schreef op donderdag 16 december 2010 @ 15:01:
[...]
De manier waarom MS SQL Server het doet heeft wel als consequentie dat de resultset altijd hetzelfde zal zijn of in iedergeval voorspelbaar. Bij MySQL is dat niet het geval en dat is toch een min punt voor een database.
Het punt is dat MySQL ruimer is dan de standaard, en daarom in sommige gevallen "Undefined" behavior heeft MS-Sql beperkt de gebruiker dan weer enigsinds
1
2
3
4
5
| SELECT MAX(Voornaam), Achternaam, MAX(OrderID), OrderNaam FROM Personen INNER JOIN Orders on Orders.PersoonId = Personen.PersoonId GROUP BY Achternaam |
Iets in die trend zou volgens de standaard mogen, maar is in MS-SQL niet toegestaan, maar wel in MySql
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Not everybody wins, and certainly not everybody wins all the time.
But once you get into your boat, push off and tie into your shoes.
Then you have indeed won far more than those who have never tried.
Volgens mij wel, al moet ik zeggen dat ik dat ook niet 100% zeker weet.OnTracK schreef op donderdag 16 december 2010 @ 15:12:
Zou dat volgens de standaard de OrderNaam opleveren die bij MAX(OrderID) hoort? En doet dat het ook altijd in mySQL? Ik dacht dat dat onderdeel was van undefined behaviour en over het algemeen goed uitkwam omdat die rij inderdaad al bekeken werd.
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
1
2
3
4
5
| SELECT voornaam, achternaam, COUNT(o.order_id) FROM personen p LEFT JOIN orders o ON o.persoon_id = p.persoon_id GROUP BY p.id |
Met deze query selecteer de namen van alle mensen en hoeveel orders er zijn. Dit mag niet volgens MS SQL, terwijl het nogal duidelijk is dat er maar 1 voornaam en achternaam is per persoon_id.
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.
Echter haalt dat ook weer niet zoveel, aangezien voornaam, achternaam bij je group by erbij zetten exact hetzelfde resultaat bied.
[ Voor 3% gewijzigd door Woy op 16-12-2010 15:25 ]
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Nee, en dat is precies de meest gemaakte denkfout, veroorzaakt door dit ietwat lakse gedrag van MySQL.OnTracK schreef op donderdag 16 december 2010 @ 15:12:
Zou dat volgens de standaard de OrderNaam opleveren die bij MAX(OrderID) hoort? En doet dat het ook altijd in mySQL? Ik dacht dat dat onderdeel was van undefined behaviour en over het algemeen goed uitkwam omdat die rij inderdaad al bekeken werd.
Het punt is dat een aggregerende functie een functie is waar een aantal gegevens ingaan en waar vervolgens 1 gegeven uitkomt. Het is een wiskundige bewerking die meerdere dingen terugbrengt naar 1. De denkfout is dat die ene waarde een referentie is naar 1 van de records die er in gegaan zijn, dat is het niet. Bij AVG, maar vooral SUM is het veel duidelijker dat er helemaal geen koppeling is tussen het resultaat en een bepaald record.
Breiden we het voorbeeld uit:
jan,jansma,1
jan,jansma,2
piet,jansma,3
Zou je nu de max van voornaam nemen en grouperen op achternaam. Welk cijfer moet de database nu pakken dan?
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Dingen in hokjes stoppen is iets wat je tegenwoordig niet meer dient te doen inderdaad
[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]
Zijn ze bezig met een PR offensief? Normaliter had je toch die oude bijna text only website?
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.
No trees were harmed in creating this message. However, a large number of electrons were terribly inconvenienced.
Vergeet niet dat het een VM was met beperkte ram
Het is sowieso aan te raden om (i.i.g. in development) je SQL mode op iets alsFreeaqingme schreef op donderdag 16 december 2010 @ 17:19:
Maar, als het echt zo'n probleem is, dan zet je toch je mode op ONLY_FULL_GROUP_BY ? Gedraagt het zich hetzelfde als mssql afaik.
1
| NO_ENGINE_SUBSTITUTION,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES |
te zetten. Dan is MySQL nog best een redelijke RDMBS naar mijn mening.
[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]
Verwijderd
En wat is het voordeel van dit keyboard?Sebazzz schreef op donderdag 16 december 2010 @ 17:52:
Zo, mijn Das Keyboard is binnen, wat een plezier is het toch om hierop te typen
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 MS SQL ís toch ook T-SQL? Dus dan is het toch logisch als MSDN ook hoog in de zoekresultaten staat? Bij mij is de eerste hit trouwens van Wikipedia.BtM909 schreef op donderdag 16 december 2010 @ 17:13:
Ik wilde ff de spec erbij pakken (want ik vind de MSSQL ook de meest logische), maar waarom staat MSDN ineens bovenaan als je zoekt op T-SQL *
Zijn ze bezig met een PR offensief? Normaliter had je toch die oude bijna text only website?
Kater? Eerst water, de rest komt later
Mee eens, alleen die ONLY_FULL_GROUP heb ik er uitgehaald toen ik deze query had:hostname schreef op donderdag 16 december 2010 @ 17:40:
[...]
Het is sowieso aan te raden om (i.i.g. in development) je SQL mode op iets als
code:
1 NO_ENGINE_SUBSTITUTION,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES
te zetten. Dan is MySQL nog best een redelijke RDMBS naar mijn mening.
1
| SELECT count(t1.some_col), t2.* FROM t1 join t2 ON t1.some_col = t2.pk_col GROUP BY t1.some_col |
En t2 is een view van >35 cols (die ik nodig had), en toen fijntjes mocht gaan uittypen.
No trees were harmed in creating this message. However, a large number of electrons were terribly inconvenienced.
Verwijderd
Welke heb je?Sebazzz schreef op donderdag 16 december 2010 @ 17:52:
Zo, mijn Das Keyboard is binnen, wat een plezier is het toch om hierop te typen
De ultimate of de ultimate silent?
Verwijderd
Of de professional ...Verwijderd schreef op donderdag 16 december 2010 @ 18:35:
[...]
Welke heb je?
De ultimate of de ultimate silent?
Liefhebber van schieten en schijten. Ouwehoer en niet-evangelisch atheist.
Daniel36: Dat zeg ik(?) Nee, dat zeg ik niet, je hebt gelijk.
Verwijderd
Wij hebben er meer verstand van. Voor 15 euro heb je een geweldig fijn toetsenbord!.oisyn schreef op donderdag 16 december 2010 @ 18:06:
Dat je portemonnee na aanschaf een stuk lichter is.
UltraX!
Die ja, de normale, niet de silent.
Ik vind het een geweldig toetsenbord. Goede aanslag ook, erg fijn. Beter dan de UltraX, die ik overigens ook in bezit heb.
[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]
Verwijderd
Was wel even wennen om er achter te komen dat -alles- asynchroon werkt.
Had namelijk een methode gemaakt in de business laag als
1
| public string GetCurrentCity(GeoPosition<GeoCoordinate> position) |
Waarschijnlijk kan dit prima zo, maar kreeg het niet voor elkaar.
Nu heb ik het maar zo opgelost:
1
| public string GetCurrentCity(GeoPosition<GeoCoordinate> position, Action<string> respCallback) |
met
1
2
3
4
5
6
7
8
9
10
11
12
| private void LocationHasChanged(GeoPosition<GeoCoordinate> position) { Location lb = new Business.Location(); CurrentCity = lb.GetCurrentCity(position, UpdateCurrentCity); } private void UpdateCurrentCity(string newCity) { Deployment.Current.Dispatcher.BeginInvoke(() => { CurrentCity = newCity; }); } |
De eerste keer dat ik nuttig gebruik kon maken van een Action<T>. Was er helemaal trots op.
Of dit echt best-practice is weet ik niet, dat moet nog eens even worden uitgezocht.
Voor nu was ik al lang blij dat ik een opgehaalde waarde in de view kon weergeven en dat niet alles crashte of ergens bleef hangen.
Begon wel moedeloos te worden. Dacht dat ik toch redelijk kon programmeren, maar nu ik hiermee aan de slag moest was het net alsof ik weer in de 1e klas van Informatica zat. Ach, zal na verloop van tijd wel beter worden
Battle.net - Jandev#2601 / XBOX: VriesDeJ
Wilde hem laatst al halen, maar Mediamarkt Enschede had hem niet.
Dus nu moet ik mijn vader lief aankijken om naar Mediamarkt Hengelo te gaan.
Of weet iemand of hij in de buurt van Goor in de winkels ligt?
Verwijderd
Ik heb de G15 en gebruik de macro toetsen wel. Als ik gewoon bezig ben heeft elke macro-toets een shortcut naar een programma (calculator, notepad, snipping tool, ...).Verwijderd schreef op donderdag 16 december 2010 @ 19:59:
Heb ook nog een Logitech G-nogiets, met van die macro toetsen, die ik nooit gebruikt heb. Bij m'n vorige werkgever kreeg ik zo'n UltraX en vond het maar een pauper ding... 9 maanden later wilde ik er niet meer vanaf en vind ik die G-nogiets kut. Type er nu ook echt moeilijk op.
En in-game hebben ze ook hun functie. Het fijne aan de G15 is de display waar er verschillende apps voor bestaan.
Ik bedoelde eigenlijk... Vroeger kon je zoeken op bijv:Haan schreef op donderdag 16 december 2010 @ 18:25:
[...]
Maar MS SQL ís toch ook T-SQL? Dus dan is het toch logisch als MSDN ook hoog in de zoekresultaten staat? Bij mij is de eerste hit trouwens van Wikipedia.
T-SQL insert
T-SQL delete
T-SQL where
T-SQL group by
catch my drift
Daar kwam vroeger altijd een redelijk basic website naar voren (misschien wel van Oracle) waarbij het betreffende statement volledig werd beschreven... Nou staat overal MSDN en Technet nu ineens dik bovenaan en is die referentie site verdwenen
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 het wel jammer dat de wat geavanceerdere dingen die WPF juist zo cool maken (triggers, automatische datatemplates op basis van type) dan weer niet beschikbaar zijn in Silverlight. De viewmodel en codebehind is wat dat betreft in Silverlight veel belangrijker omdat je code moet gebruiken om de state van de View weer te geven, terwijl in WPF je de view met XAML bijna direct aan het model kunt koppelen.Jan_V schreef op donderdag 16 december 2010 @ 20:50:
Vandaag druk bezig geweest met een wp7 app met het MVVM pattern in een n-layer omgeving.
Was wel even wennen om er achter te komen dat -alles- asynchroon werkt.
Als voorbeeld bijvoorbeeld de Freecell clone waar ik mee bezig ben. Ik heb een simpele struct Card met daarin de properties Suit en Rank. In WPF zou ik met XAML alleen de graphics van een Card kunnen definieren. De kleur zou ik dan met een data trigger en een setter in kunnen stellen, maar in Silverlight heb je alleen de keuze tussen value converters en een binding met een viewmodel van Card om de kleur #FF000000 danwel #FFFF0000 te laten zijn. Ik heb hier voor de wat pragmatischere oplossing gekozen om een Card een property Color te geven die de kleurcode teruggeeft op basis van z'n Suit, maar vanuit een puristisch oogpunt natuurlijk niet helemaal netjes. Maar ik vind het wat overkill om een viewmodel representatie van Card te maken.
.edit: maar nu ik een beetje zit in te lezen in value converters (dat had ik nog niet gedaan
[ Voor 36% gewijzigd door .oisyn op 16-12-2010 22:37 ]
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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| //Stuff here... int maxretries = 3; int tries = 0; StatusResponse sr = null; do { try { sr = TheBigBadInternetConnectionSometimesB0rks.GetStatusResponse(foo); } catch { if (tries++ > maxretries) throw; //Bubble up } } while (sr == null); //Do stuff with sr here |
Ik kan er maar niet over uit of ik dit nou een acceptabele oplossing vind of niet... Iemand wel eens een dergelijke "lus" toegepast?
[ Voor 4% gewijzigd door RobIII op 16-12-2010 23:22 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Voor zover ik kan zien is het niet fout of niet netjes, maar ik zou het dan zo doen:RobIII schreef op donderdag 16 december 2010 @ 23:21:
C#:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 //Stuff here... int maxretries = 3; int tries = 0; StatusResponse sr = null; do { try { sr = TheBigBadInternetConnectionSometimesB0rks.GetStatusResponse(foo); } catch { if (tries++ > maxretries) throw; //Bubble up } } while (sr == null); //Do stuff with sr here
Ik kan er maar niet over uit of ik dit nou een acceptabele oplossing vind of niet... Iemand wel eens een dergelijke "lus" toegepast?
1
2
3
4
5
6
7
8
| int maxTries = 3; StatusResponse sr = null; for (int i = 0; i < maxTries; i++) { try { sr = TheBigBadInternetConnectionSometimesB0rks.GetStatusResponse(foo); } catch (Exception e) if ( sr != null) break; // of i = maxTries; } |
Waarbij je evt. nog iets kunt doen met de Exception. Overigens heb ik deze code niet getest, maar even on the top of my head geschreven
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.
Je hebt kans dat, na je for loop, sr null isalex3305 schreef op vrijdag 17 december 2010 @ 00:01:
[...]
Voor zover ik kan zien is het niet fout of niet netjes, maar ik zou het dan zo doen:
C#:
1 2 3 4 5 6 7 8 int maxTries = 3; StatusResponse sr = null; for (int i = 0; i < maxTries; i++) { try { sr = TheBigBadInternetConnectionSometimesB0rks.GetStatusResponse(foo); } catch (Exception e) if ( sr != null) break; // of i = maxTries; }
Waarbij je evt. nog iets kunt doen met de Exception. Overigens heb ik deze code niet getest, maar even on the top of my head geschreven.
Psies. Je was me (again, as usual, weer) voor.oisyn schreef op vrijdag 17 december 2010 @ 00:06:
Je mist de rethrow. Dat vereist dus weer een sr == null check na de for-loop, waarbij de originele exception overigens ook al niet meer bestaat. Of je moet in de catch dus alsnog de if (i == 2) throw; doen.
-edit-
Ik heb 't!
1
2
3
4
5
6
7
8
9
10
11
12
13
| try { sr = TheBigBadInternetConnectionSometimesB0rks.GetStatusResponse(foo); } catch { try { sr = TheBigBadInternetConnectionSometimesB0rks.GetStatusResponse(foo); } catch { try { sr = TheBigBadInternetConnectionSometimesB0rks.GetStatusResponse(foo); } catch { throw; } } } |
[ Voor 46% gewijzigd door RobIII op 17-12-2010 00:23 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Persoonlijk zou ik dan ook liever voor de variant gaan waarbij je gewoon het maximaal aantal pogingen specificeert, à la alex3305 maar zonder de bugs:
1
2
3
4
5
6
7
8
9
| int tries = maxTries; while (tries-- > 0) { try { sr = TheBigBadInternetConnectionSometimesB0rks.GetStatusResponse(foo); break; } catch { if (tries == 0) throw; } } |
edit:
Trouwens, helpdesken in de coffee corner? Foei!
[ Voor 9% gewijzigd door Soultaker op 17-12-2010 00:34 ]
Verwijderd
Oh, ik bedoel ook zeker niet te zeggen dat ze onhandig zouden zijn! Het is gewoon zo'n goody waar ik nooit aan toe ben gekomenVerwijderd schreef op donderdag 16 december 2010 @ 21:47:
[...]
Ik heb de G15 en gebruik de macro toetsen wel. Als ik gewoon bezig ben heeft elke macro-toets een shortcut naar een programma (calculator, notepad, snipping tool, ...).
En in-game hebben ze ook hun functie. Het fijne aan de G15 is de display waar er verschillende apps voor bestaan.
Even een vraagje, ik wil graag het interne geheugen in m'n pc (Corsair Dominator CM2X2048-8500C5D) uitbreiden van 4 gig naar 8. Nou lijkt het me verstandig om het geheugen zoveel mogelijk overeen te laten komen. Gelukkig vond ik in de pricewatch het volgende: pricewatch: Corsair Dominator TWIN2X4096-8500C5D Het lijkt op het eerste gezicht exact overeen te komen. De naam is iets anders, maar de specs hetzelfde.
Echter, als ik naar de site van een leverancier surf zie ik bij (die van DataByte) de volgende vermelding: DOMINATOR, DDR2-8500, 4GB, 5-5-5-18, 240pin DIMM, terwijl er op mijn DIMM's 5-5-5-15 vermeld staat.
Zou dit problemen op kunnen leveren?
Wat als ik deze reepjes: http://www.alternate.nl/h..._GB_DDR2-1066_Kit/206223/? van een ander merk, maar met exact dezelfde specificaties er naast zet?
[ Voor 6% gewijzigd door Verwijderd op 17-12-2010 00:34 ]
Euh, neeSoultaker schreef op vrijdag 17 december 2010 @ 00:28:
Is het trouwens opzettelijk dat je de operatie maximaal vijf keer probeert terwijl maxRetries drie is?
Ik helpdesk niet; ik zwengel een discussie aan of iets dergelijks nou wel of niet "mooi" isSoultaker schreef op vrijdag 17 december 2010 @ 00:28:
Trouwens, helpdesken in de coffee corner? Foei!
Da's sterk; ik was vanmiddag aan 't googlen/pricewatchen geslagen om m'n werkstation thuis + op 't werk (XW4600) te upgraden van 4->8 Gb. Het zure is dat er 4x1Gb in zit en maar 4 reepjes in passen. Dus ik kan (voor 2 stations) 8x1Gb wegmikkerenVerwijderd schreef op vrijdag 17 december 2010 @ 00:29:
Even een vraagje, ik wil graag het interne geheugen in m'n pc (Corsair Dominator CM2X2048-8500C5D) uitbreiden van 4 gig naar 8.
Maar ik kwam op bedragen rondom de 200 euro... per station. Volgens de manual gaan er maar reepjes in van max 2Gb en met 4 slots moet ik dan automatisch 4x2Gb hebben.
[ Voor 48% gewijzigd door RobIII op 17-12-2010 00:52 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Je moederbord werkt maar met één set timings (denk ik tenminste?) dus als je het iets tragere 5-5-5-18 geheugen combineert met 5-5-5-15 geheugen, dan autoconfigureert het moederbord zich waarschijnlijk op 5-5-5-18 voor alle geheugen. Merk je waarschijnlijk weinig van. Overigens wil geheugen nog wel eens werken op andere timings dan waar het officieel voor geschikt is. Je kunt dus proberen om alles op 5-5-5-15 te laten werken.
Anderzijds is het waarschijnlijk het makkelijkste om met geheugen met dezelfde timings te beginnen, als het voor de prijs niet uitmaakt, dan zit je zeker goed. Verschillend merk maakt daarbij helemaal niets uit.
Verwijderd
Het verbaast me eerlijk gezegd wel dat dat geheugen nog net zo duur is als 2 jaar geleden.
Ok, dat is alvast mooi. GeiL heeft dezelfde specs, maar is veel goedkoper. Is het toevallig een RuK-merk?Verschillend merk maakt daarbij helemaal niets uit.
[ Voor 23% gewijzigd door Verwijderd op 17-12-2010 00:49 ]
Ok, dat is alvast mooi. GeiL heeft dezelfde specs, maar is veel goedkoper. Is het toevallig een RuK-merk?
Verwijderd
[ Voor 78% gewijzigd door Verwijderd op 17-12-2010 04:18 ]
hah toevallig dat je het zegt!Sebazzz schreef op donderdag 16 december 2010 @ 16:16:
[...]
Dingen in hokjes stoppen is iets wat je tegenwoordig niet meer dient te doen inderdaad
ik ga binnenkort samenhokken met men vriendin
wat een gedoe zeg met al die hypotheken, kosten koper, belastingsvoordeel hier en daar, ...
GeiL is gewon een A-merk voor geheugen hoorVerwijderd schreef op vrijdag 17 december 2010 @ 00:43:
Ok, dat is alvast mooi. GeiL heeft dezelfde specs, maar is veel goedkoper. Is het toevallig een RuK-merk?
Dit "Stability Pattern" noemen ze de Circuit BreakerRobIII schreef op donderdag 16 december 2010 @ 23:21:
C#:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 //Stuff here... int maxretries = 3; int tries = 0; StatusResponse sr = null; do { try { sr = TheBigBadInternetConnectionSometimesB0rks.GetStatusResponse(foo); } catch { if (tries++ > maxretries) throw; //Bubble up } } while (sr == null); //Do stuff with sr here
Ik kan er maar niet over uit of ik dit nou een acceptabele oplossing vind of niet... Iemand wel eens een dergelijke "lus" toegepast?

Bron: screenshot uit het boek "Release It" (boek dat elke programmeur gelezen moet hebben!!!)
altijd fan van geweest
Dan vind ik die conditie in de while een beetje suf, aangezien die nooit false zal zijn.Soultaker schreef op vrijdag 17 december 2010 @ 00:28:
Is het trouwens opzettelijk dat je de operatie maximaal vijf keer probeert terwijl maxRetries drie is? Persoonlijk zou ik dan ook liever voor de variant gaan waarbij je gewoon het maximaal aantal pogingen specificeert, à la alex3305 maar zonder de bugs:
Java:
1 2 3 4 5 6 7 8 9 int tries = maxTries; while (tries-- > 0) { try { sr = TheBigBadInternetConnectionSometimesB0rks.GetStatusResponse(foo); break; } catch { if (tries == 0) throw; } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| int tries = maxTries; while (true) { try { sr = TheBigBadInternetConnectionSometimesB0rks.GetStatusResponse(foo); break; } catch { if (--tries == 0) throw; } } |
En dan begint het al behoorlijk op Rob's code te lijken.
[ Voor 105% gewijzigd door .oisyn op 17-12-2010 09:19 ]
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.
Liefhebber van schieten en schijten. Ouwehoer en niet-evangelisch atheist.
Daniel36: Dat zeg ik(?) Nee, dat zeg ik niet, je hebt gelijk.
Doet me idd denken aan Android, daar werkt het ook ongeveer zo. Je laat een popup zien en moet de functie die de popup dan toont beëindigen oid, want je krijgt niet een resultaat oid terug vanuit de popup, de popup roept een callback aan zodra de gebruiker er iets mee doet. In Android moet je ook aannemen dat een scherm dat niet meer actief is (zoals je hoofdscherm als er een nieuw dialoogscherm getoond wordt) zomaar gerecycled kan worden.Jan_V schreef op donderdag 16 december 2010 @ 20:50:
Vandaag druk bezig geweest met een wp7 app met het MVVM pattern in een n-layer omgeving.
Was wel even wennen om er achter te komen dat -alles- asynchroon werkt.
Niet dat ik veel in Android gedaan heb,
Dan moet je je code beter dichtspijkeren,quote: robIIIEuh, nee Het moest >= zijn inderdaad. My bad. (Feitelijk is een == al voldoende; maar daar ben ik te 'defensive' voor in mijn devstijl Je weet nooit of iemand op 't idee komt om ergens anders nog eens de counter op te hogen )
hoe is het weer in Cali?Hillie schreef op vrijdag 17 december 2010 @ 09:26:
Zo, het is middernacht geweest hier, net m'n laatste frutsels voor het eerst sinds tijden weer door 100% pass rate in een kleine random regressie gekregen, dus tijd voor pils!
Helemaal eensch; dat "defensieve" heb ik dan ook vooral over gehouden aan de oertijd toen men nog deed unittesten met knuppels van mammoetbeenderenYopY schreef op vrijdag 17 december 2010 @ 09:38:
Dan moet je je code beter dichtspijkeren,. Scope zo klein mogelijk houden enzo, functie maken die alleen dit bevat, en een unit test erbij die specifiek test of de GetStatusResponse functie precies maxRetries keer aangeroepen wordt na maxRetries - 1 keer een fail terug te geven. Unit testje heb je binnen een paar minuutjes geschreven, kleine moeite, groot plezier, en minder kans op bugjes ivm verkeerder operators voor het geval dat iemand je variabele toch aanpast
.
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Een retry zonder goto is geen retry: http://glamour.tweakblogs.net/blog/5764/generic-retry.html.oisyn schreef op vrijdag 17 december 2010 @ 09:16:
Golden Emperor International Ltd.
Dan vind ik die conditie in de while een beetje suf, aangezien die nooit false zal zijn.
Java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 int tries = maxTries; while (true) { try { sr = TheBigBadInternetConnectionSometimesB0rks.GetStatusResponse(foo); break; } catch { if (--tries == 0) throw; } }
En dan begint het al behoorlijk op Rob's code te lijken.
Sole survivor of the Chicxulub asteroid impact.
idd, kan geen kwaad. Het wordt op laatst alleen lichtelijk storend als je in het begin van bijna elke functie eerst controles in gaat bouwen van is deze parameter null of niet, is deze waarde >0, dat soort dingen.RobIII schreef op vrijdag 17 december 2010 @ 10:33:
[...]
Helemaal eensch; dat "defensieve" heb ik dan ook vooral over gehouden aan de oertijd toen men nog deed unittesten met knuppels van mammoetbeenderenHet is een soort "best practice" (ik doel dan, in dit geval, op >= i.p.v. == dus) die ik mezelf in die tijd heb eigen gemaakt en, ach, ik zie geen probleem er in om deze te blijven hanteren. Het kan geen kwaad
@thread, den vrijdagsverveling na een grote release is goed te verdoen door het bijhouden van Man Points. Met een kater op het werk komen: +3 points. Stom idee hebben: -2 punten. Van je oma houden: +2. etc
edit: grumf, denk je ik ga vrijdagmiddag vroeg naar huis, ineens sneeuwbui en alles ligt stil,
[ Voor 6% gewijzigd door YopY op 17-12-2010 13:32 ]
Mja, misschien als maxTries == 0, maar dat wil je toch niet, want dan zit je weer met sr == null buiten de loop..oisyn schreef op vrijdag 17 december 2010 @ 09:16:
Dan vind ik die conditie in de while een beetje suf, aangezien die nooit false zal zijn.
Het lijkt er op dat dit een constructie is waarvan je denkt "dat moet beter kunnen" maar als je het daadwerkelijk probeert te coden, dan kom je ongeveer op hetzelfde uit.
Ombouwen was niet enorm lastig en kan nu eindelijk de html (enigszins) fatsoenlijk doorlopen. Zodra de PoC af is moet er maar eens een webservice worden gemaakt om data op te halen van de website. Dan ga ik nu nog maar even snel bezig met screenscraping, hopelijk lukt het voor de borrel.
Battle.net - Jandev#2601 / XBOX: VriesDeJ
http://www.planethunters.org/
Wel grappige toepassing; draait een beetje traag in Chrome
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.
Verwijderd
[ Voor 6% gewijzigd door Haan op 17-12-2010 16:47 ]
Kater? Eerst water, de rest komt later
Ik zit al de hele dag te genieten van het weer. Nu mag ik er nog doorheenfietsen ook.Haan schreef op vrijdag 17 december 2010 @ 16:47:
Hij was weer fijn, uit voorzorg maar wat eerder naar huis gegaan vanwege de sneeuw, toch nog 2 uur en kwartier over gedaan (Hilversum-Haarlem, zonder files ongeveer 40 minuten). En ik juist gisteren thuis gewerkt omdat er veel overlast door sneeuwval was voorspeld![]()
[/sarcasm]
Verwijderd
Beetje regenachtig, maar het is hier niet echt koud. Rest van de VS heeft het zwaarder, ik zag in Florida zelfs kou en sneeuw.
Liefhebber van schieten en schijten. Ouwehoer en niet-evangelisch atheist.
Daniel36: Dat zeg ik(?) Nee, dat zeg ik niet, je hebt gelijk.
Een waarschuwingsbalkje "Hey, ik zie dat je IE8/9 gebruikt, maar vooralsnog op eigen risico, we hebben nog niet genoeg kunnen testen", is m.i. vriendelijker dan die waas die sommige OS'ers krijgen bij het zien van een grote bedrijfsnaam.jip_86 schreef op vrijdag 17 december 2010 @ 15:18:
Of geen tijd/zin om je te richten op meerdere browsers in de eerste fase.
Liefhebber van schieten en schijten. Ouwehoer en niet-evangelisch atheist.
Daniel36: Dat zeg ik(?) Nee, dat zeg ik niet, je hebt gelijk.
* Avalaxy heeft alleen geen tijd om te lezen, heb Code Complete 2 ook nog liggen en ik was nog bezig met GoF Design Patterns
Battle.net - Jandev#2601 / XBOX: VriesDeJ
Washington is regen, regen, regen en dan nog wat sneeuwHillie schreef op vrijdag 17 december 2010 @ 19:20:
[...]
Beetje regenachtig, maar het is hier niet echt koud. Rest van de VS heeft het zwaarder, ik zag in Florida zelfs kou en sneeuw.Ik zit net in een goed stukje van het land.
1
2
3
4
5
6
7
8
9
10
| Fatal error: Uncaught exception 'PDOException' with message
'SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'
in /var/www/*/settings/settings.php:12
Stack trace:
#0 /var/www/*/settings/settings.php(12):
PDO->__construct('mysql:dbname=...', 'root', 'WACHTWOORD', Array)
#1 /var/www/*/init/init-db.php(5): getPDO()
#2 /var/www/*/init/init.php(5): require_once('*')
#3 /var/www/*/index.php(2): require_once('*')
#4 {main} thrown in /var/www/*/settings/settings.php on line 12 |
Leuk, zo'n traceback
Let op: Mijn post bevat meningen, aannames of onwaarheden
Verwijderd
Denk dat ik even nog een dvd ga kijken aangezien ik ingesneeuwd zit
Dit topic is gesloten.
![]()
Dit topic is niet de plaats om te lopen helpdesken. De Coffee Corner is primair bedoeld als uitlaatklep, niet als vraagbaak