Inlägg

Inlägg som MrMygel har skrivit i forumet
Av MrMygel

Svaret hittar du i exekveringsplanen och förklaras av hur SQL Server hanterar denna typ av CASE expressions.

När du använder denna typ av CASE, dvs

CASE <expression> WHEN 1 then

så är det egentligen bara en shorthand för

CASE WHEN <expression> = 1 then ...

SQL Server kommer att strukturera om din shorthand-version till long hand, på så vis:

CASE WHEN <expression> = 0 then 'up' ELSE CASE WHEN <expression> = 1 then 'down' ELSE CASE WHEN <expression> = 2 then 'straight' ELSE 'annat' END END END

Detta innebär att <expression> kommer att evauleras 3 gånger och för varje gång det evalueras så kommer ett nytt slumptal tas fram. Den kör alltså NEWID() för varje gång den testar ett WHEN.

Om du tittar i exekveringsplanen så ser du hur SQL Server har förvandlat ditt enkla CASE till detta åbäke

SELECT CONVERT(varchar(20), CASE WHEN abs(checksum(newid()))%(3)=(0) THEN 'up' ELSE CASE WHEN abs(checksum(newid()))%(3)=(1) THEN 'down' ELSE CASE WHEN abs(checksum(newid()))%(3)=(2) THEN 'straight' ELSE 'annat' END END END,0)

Sannolikheten för varje <expression> = ? är bara 1/3 vilket gör att man ser en överväldigande majoritet av 'annat'.

En enkel lösningen är att du endast beräknar newid() en gång per rad, tex via en cross apply. Då kommer varje WHEN att jobba med samma slumptal och inga 'annat' kan dyka upp.

SELECT cast((case (abs(checksum(id)) % 3) when 0 then 'up' when 1 then 'down' when 2 then 'straight' else 'annat' end) as varchar(20)) as direction from spt_values CROSS APPLY (VALUES (newid())) nid(id)

Av MrMygel
Skrivet av Revery:

Det var det första jag försökte men jag får inget resultat. Inget felmeddelande heller, bara en tom kolumn. Det finns poster i tabellen som borde visas där.

Hur ser hela din query ut där du joinar alla fyra tabeller?

Av MrMygel

När det sedan är dags att sätta upp en produktionsmiljö så kör ni bara Liquibase och vips så har ni samma version i produktion som ni testat under utvecklingen.

Skrivet av MrMygel:

Versionshantera alla databasobjekt på samma vis som resten av eran kod.

Ett tips är att använda Liquibase http://www.liquibase.org/

Genom att alltid ha all kod, inklusive databasen i samma källkodshanteringssytem så kan man alltid återskapa en viss version oavsett om alla era personliga datorer blir stulna eller liknande.

Jag har jobbat med Liquibase och ett par andra liknande produkter och det gör verkligen en enorm skillnad att ha all sin kod källkodshanterad.
Inget strul med syncning eller annat.
Alla utvecklare kan jobba parallellt med sina egna features och sedan merga in dem i samma repo och på så sätt kommer ni alltid vara up to date.
Något hände med en av era databaser? Inga problem! Kör Liquibase och på någon minut så har du återställt din databas till en känd version.

Av MrMygel

Versionshantera alla databasobjekt på samma vis som resten av eran kod.

Ett tips är att använda Liquibase http://www.liquibase.org/

Genom att alltid ha all kod, inklusive databasen i samma källkodshanteringssytem så kan man alltid återskapa en viss version oavsett om alla era personliga datorer blir stulna eller liknande.

Jag har jobbat med Liquibase och ett par andra liknande produkter och det gör verkligen en enorm skillnad att ha all sin kod källkodshanterad.
Inget strul med syncning eller annat.
Alla utvecklare kan jobba parallellt med sina egna features och sedan merga in dem i samma repo och på så sätt kommer ni alltid vara up to date.
Något hände med en av era databaser? Inga problem! Kör Liquibase och på någon minut så har du återställt din databas till en känd version.

Skrivet av Xclusiv8:

Tack så mycket för era svar.

Ja precis, databaserna som vi använder under utvecklingen. Oftast är det så att det tillkommer tabeller (eller försvinner) utan att alla vet om detta. Vi har svårt att samordna det hela. Vi har tänkt sätta upp en extern server endast för utveckling men det har sina för och nackdelar. Fördelen är att vi alla jobbar centralt, tillkommer det tabeller, ja då har vi alla tillgång till dem. En nackdel är att när vi ska ut till kund och behöver en databas lokalt så har vi inte tillgång till den centrala utan att först göra en db-dump. I dagsläget jobbar vi på så sätt att alla har en strukturell kopia av live databasen fylld med skräpdata.

Jag ska ta och kolla upp docker. tack

Av MrMygel

Det går utmärkt att skapa Javaprogram som har GUI. Eclipse är ett konkret exempel skrivet i Java.

Av MrMygel
Skrivet av iHank:

Stort tack för utförligt svar! En fråga: brukar kodproven ske på plats?

Det varierar. Möten som sker på plats vill man oftast hålla till max en timme eller 1.5 timme. Det gör att småprov kan göras på plats och att större kodprov kan göras hemifrån. Jag har aldrig hört talas om någon i Sverige som blivit kidnappad en heldag för att genomföra en intervju, men det betyder ju inte att det aldrig händer

Min erfarenhet är att ett logikprov och ett personlighetstest görs hemifrån, innan första intervjun med HR. Sedan diskuterar man resultatet från dem med HR.
När man sedan träffar chef och andra utvecklare så görs kodning och kunskapstest.

Om du söker till ett företag som använder sig av rekryterare/HR så är det i princip lika viktigt att du kan svara på deras frågor som att du kan koda. HR vill anställa vettiga människor och om du inte vet vad dina svagheter är, då är du antagligen galen eller omogen.

Vissa stora företag ger till till och med hjälp för att lyckas med deras intervjuer. H&M har tex skapat en liten "Quiz" och har en utförlig lista på vad du bör tänka på innan du söker jobb där: http://career.hm.com/content/hmcareer/sv_se/workingathm/get-t...

Av MrMygel
Skrivet av BasseBaba:

MrMygel gav ett extremt bra svar. Men! tänk på att det där var ur ett storföretagsperspektiv. 2/3 av alla intervjuer jag varit på, har varit på företag där roller som HR och CTO inte ens existerat. Ofta har jag suttit på intervju direkt med VD...

Gällande din initiala fråga skulle jag rekommendera att försöka läsa klart dom 2 kurserna om det går så du har allt sånt klart, sen kollar du med arbetsgivaren om det är okej att ta exjobbet parallellt/tjänsteledigt i framtiden. Är det ett större företag kanske det inte är omöjligt att lyckas göra exjobbet inom nått projekt där.

Precis, detta är ett exempel för ett mycket etablerat företag. Jag har varit med om liknande process för ett företag med 70 anställda så det är inte bara stora jättar som har en sådan process. Jag gissar att det är förekomst av HR som gör att processen blir utdragen och formell.

När det gäller sitt första jobb så tyckte jag att det kändes mer tryggt att ta ett jobb på ett lite större företag där man har lite utrymme för att lära sig. Någon annan får gärna berätta om det är vanligt att mycket små företag anställer nyexade.

Av MrMygel

(ett inlägg som blev sjukt mycket längre än vad jag hade tänkt och den svarar inte heller direkt på din fråga)

Att söka ett jobb är inte samma sak som att få ett jobb. Det kan till och med vara bra att gå på några intervjuer som "träning" innan man söker sig till drömjobbet.

En vanlig rekryteringsprocess inom IT

  1. Urval 1 (Matchning av CV mot annonsen; Finns orden från annonsen med i ditt CV)

  2. Telefonsamtal med Rekryterare

  3. Möte med rekryterare

  4. Urval 2

  5. Möte med HR på företaget

  6. Tester: Personlighetstest, IQ-test, kod-test

  7. Möte med chef på företaget

  8. Möte med medarbetare på företaget

  9. Möte med Högre chef på företaget (CTO)

  10. Kontroll av referencer

  11. Förhandlingar och kontraktskrivning

En rekryteringsprocess börjar vanligtvis med en intervju med en extern rekryterare, dvs en person som inte är anställd på företaget du söker dig till. Rekryteraren har i regel aldrig själv jobbat med IT utan är utbildad som personalvetare eller liknande. Rekryteraren försöker känna av hur mogen du är och gör en CV-job-match. CV-job-match går ut på att hon läser ditt cv och försöker se om det innehåller samma ord som själva annonsen gör.

Frågor som rekryteraren ställer och som du bör förbereda dig på:

  • Varför vill du byta jobb

  • Vad är dina tre största styrkor

  • Vilka är dina tre största svagheter

  • Berätta om något du gjort som du är stolt över

  • Berätta ett exempel på ett svårt problem som du stött på och hur du gick till för att lösa det

  • Vad är det som du gör bättre än andra, varför ska vi anställa dig

  • Berätta om en konflikt som du haft och hur du hanterade den

  • Hur blir du i en stressig situation, kan du hantera stress

  • Hur skulle dina närmsta kollegor/din chef beskriva dig

  • Beskriv vad du gjorde/gör på dina föregående/nuvarande jobb

  • Beskriv varför du slutade på dina föregående jobb

  • Berätta varför du inte avslutade dina studier

Rekryteraren försöker hela tiden känna av dig; få en känsla av vilken typ av person du är. Är du stabil i blicken, verkar du nervös, svarar du konsekvent eller ändrar du dig.

Om du klarar intervjun med rekryteraren väntar ofta en liknande intervju med HR på företaget. Ibland är det HR som tar hand om första intervjun istället för en extern rekryterare. I samband med att du träffar HR så vill de ofta att man genomför olika tester. Ofta vill de att du genomför testerna innan du kommer till deras intervju och resultaten från testerna blir underlag för själva mötet. Personlighetstest och IQ/Logik-test är väldigt vanliga och likaså rena utvecklingstest,kodtest och tekniska kunskapsprov.

Svårigheterna på testerna varierar väldigt beroende på hur stor erfarenhet den sökande förväntas ha. När det gäller en nyexad så är det oftast mycket fokus på grundläggande teori och på att man kan läsa kod. Det kommer garanterat inga frågor om hur man itererar över en lista eller hur vad en klass är.

Exempel på tekniska test för en nyexad:

  • Beskriv vad den här koden gör

  • Skriv en kodsnutt som löser detta problem

  • Vad är det för fel på följande kod

  • Vilken ut-data kommer följande kodsnutt ge om den körs med följande parametrar

  • Skriv en applikation som hanterar ett enkelt bankkonto

  • Ge exempel på när arv är en bra lösning och vilka problem arv kan ge

  • Vad är skillnaderna mellan en abstrakt klass och ett interface

  • Beskriv vad ett Design Pattern är och ge exempel på ett sådant

  • Vad är "best practices" för implementation av getHashCode och equals

När du passerat möte med HR väntar möten med nya chefen och vanligtvis några av de anställda. Här förväntas du klara av att hålla diskussioner om tekniska ämnen samt att svara på konkreta frågor. Du kan få kniviga frågor om olika tekniska detaljer. Viktigt att komma ihåg är att du inte behöver svara rätt på alla frågor. Precis som i skolan får man en poäng för själva svaret och ytterligare en poäng om man berättar hur man kom fram till svaret.

På vissa företag får man även träffa CTO eller annan hög chef. I dessa möten gäller det att visa energi och intresse. Förbered ett par frågor om företaget, fråga om framtiden, hur utvecklingen har gått hittills, visioner och mål osv. Överdriv inte med frågor, ett par stycken räcker gott.

Efter allt detta är det dags att snacka lön, semestrar och annan ersättning. Detta sker oftast med HR och ibland din blivande chef.

Lycka till!

Av MrMygel

Om lastreturndate är en derived/ Computed column så behöver du inte ange kolumnen alls vid insert. Värdet kommer inte sparas fysiskt, i detta exempel, utan kommer att beräknas när du hämtar raden med SELECT.

create table Loans( loanperiod int, CheckoutDate datetime, lastreturndate as dateadd(month,loanperiod,CheckOutDate) ); insert Loans(loanperiod, CheckoutDate) values (1, getdate()); select * from Loans;

resultat:
1 2013-02-24 16:17:18.447 2013-03-24 16:17:18.447

Skrivet av Rickybobby:

Hej, skulle behöva hjälp med hur man "insertar" derrived data i en kolumn.
Kolumner
loanperiod = månader ett item får lånas.
CheckoutDate = när ett item lånas.
lastreturndate = (checkoutdate + loanperiod)

select dateadd(month,loanperiod,CheckOutDate) as lastreturndate

Hur lägger jag sen in värdet från ovanstående i min kolumn lastreturndate kolumn?

Tack på förhand

Av MrMygel

var numbers = Enumerable.Range(1, 20).OrderBy(x => Guid.NewGuid()); foreach (var n in numbers) Console.WriteLine(n);

Av MrMygel

Om breakpoints "inte fungerar" brukar det bero på att den koden, där breakpoints är satta, aldrig körs. Placera din breakpoint i början av programmet och stega sedan igenom hela koden för att se vad som händer.

Av MrMygel

Ändra Page1.cs till att ta emot en char-array i konstruktorn. Lägg sedan till ett fält i Page1 för att spara värdet.

public partial class Page1 : Page { // Lägg till för att spara värdet private char[] wordToGuess; // Lägg till så att konstruktorn tar emot char-array public Page1(char[] word) { // Sätt värdet wordToGuess = word; InitializeComponent(); } private void GuessButton_Click_1(object sender, RoutedEventArgs e) { // Nu kan du använda wordToGuess för att jämföra med här } }

Ändra sedan ditt anrop till Page1 (se kommentaren)

private void button1_Click(object sender, RoutedEventArgs e) { string text = hangmanWord.Text.ToUpper(); if (text.Contains(' ') || text.Length > 8 || text.Length < 1) { MessageBox.Show("Du har matat in Otillåten text!"); } else { word = text.ToCharArray(); // skicka med ordet i konstruktorn Page1 pg1 = new Page1(word); this.Content = pg1; } }

Av MrMygel

Jag misstänker att XML-taggarna kommer orsaka mer overhead än att spara NULL i massor av kolumner. Gör ett snabbt test så får du svar på det. Skapa en tabell med 100 000 rader och 80 kolumner, och gör motsvarande för XML-strukturen. Gämför storlekarna på tabellerna.

Jag skulle analysera, gruppera och normalisera formuläret och göra en proper databasdesign. Bara för att formuläret känns som "70 fält" behöver inte databasdesignen bli så.
Jag ser tydliga objekt: Kund, Order, Orderrader, Produkt etc. Låt dessa objekt bli tabeller så har du en databas som är mycket lätt att hantera på alla sätt och vis.

Edit:
Provade göra den "dåliga" designen med 80 columner, alla varchar(50). Genererade 110 000 rader med 10 fält ifyllda med lite slumpmässigt skräp och resten av kolumnerna fick vara NULL.
Gjorde detta på SQL Server, men jag gissar att innodb lagrar information ungefär på samma sätt.

Mitt resultat, 110 000 rader 80 kolumner:
10.6 MB

Det jag vill säga med detta experiment är att utrymme inte är ditt problem. Om du gör en bra struktur så kommer det löna sig i längden. Det blir lättare att göra komplicerade sökningar, lättare att lägga till och ta bort information, lättare att ändra strukturen, lättare att ha konsistent data och så mycket mer!
Om du vill göra det lätt för dig genom att spara "dokument" i en databas, välj då en databas som är anpassad för det, exempelvis CouchDB eller liknande.

Av MrMygel

Svårt att veta vad ditt egentliga problem går ut på, men som jag ser det kommer den nuvarande lösningen att bli väldigt jobbig att hantera om du har många checkboxar. Det är lätt att göra fel och du måste skriva in samma ord både i koden och på formuläret.

Förutsatt att det egentliga problemet inte är mycket annorlunda mot vad du frågat hjälp om, så skulle
jag skulle lösa detta på följande sätt. Dra ut en CheckedListBox på formuläret och sedan använd liknande kod:

using System; using System.Text; using System.Windows.Forms; namespace CheckboxWinForm { public partial class Form1 : Form { public Form1() { InitializeComponent(); // Skapa en array med strängar // För varje sträng i array:en skapas dynamiskt en checkbox i listan, like magic checkedListBox1.Items.AddRange(new string[] { "You", "Were", "Here", "Not", "Me" }); } private void button1_Click(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(); // Loopa genom alla "checkade" checkboxar och plocka ut Word // CheckedIndices är en lista av index till alla checkboxar som är "checkade" foreach (int i in checkedListBox1.CheckedIndices) { // Bygg en sträng med alla orden från alla ikryssade checkboxar sb.AppendFormat("{0} ", checkedListBox1.Items[i]); } // Lägg ut resultatet i vår Label label1.Text = sb.ToString(); } } }

Av MrMygel

Kolla Execution Plan för att se om du får Index Seek, annars träffar du inte hela indexet.

Då kan du behöva skapa ett nytt index för enbart X eller på annat sätt försöka träffa hela indexet i din where-sats.

Av MrMygel
Av MrMygel

i MSSQL är det möjligt utan större besvär. Skapa en funktion som tar en user-id som parameter och returnerar en sträng. Bodyn för funktionen blir ungefär såhär. Du kan nog skriva om where-satsen så att du använder join istället för subquery)

DECLARE @resultat VARCHAR(500) SET @resultat = '' SELECT @resultat = @resultat + path+ ', ' FROM user_flags_list WHERE pic IN (SELECT pic FROM user_flags WHERE user-id = @UserID) -- @UserID är parametern som du skickat till funktionen SELECT @resultat // @resultat innehåller nu en kolonseparerad sträng med alla användarnas bilders paths.

Funktionen använder du sen i din gamla query.

select user-id, GetPicturesForUser(user-id)....

Med lite tur så fungerar det i mysql! Lycka till.

Av MrMygel

Har haft problem med att avsluta word jag med. Kolla om denna kan hjälpa dig:
http://support.microsoft.com/kb/317109/

Av MrMygel

Hade det som mitt första objektiv när jag började fota. Fungerade utmärkt.
Det focuserade snabbt och IS:en fungerade bra när den behövdes.

Med en cropfaktor på 1.6 så blir inte vidvinkeln speciellt "vid" men omfånget funkar bra i de flesta fall ändå.

På fotosidan finns mycket recensioner:
http://www.fotosidan.se/reviews/viewreviews.htm?ID=237

Vilka andra objektiv har du tittat på?

Av MrMygel

Första träffen på google:
http://www.nodevice.com/user_manual/canon/digital_cameras2/po...

Svar: Det står inget om att det går att ladda batteriet med USB-kabeln. Instruktionerna visar endast hur man laddar med batteriladdaren.