Hur skulle du göra?

Tråden skapades och har fått 28 svar. Det senaste inlägget skrevs .
1

Nu skall jag försöka mig på en omröstning för att kolla vilka slags utvecklare vi har här.

Givet en mängd data, en bunt poster som är textsträngar. Det kanske är en textfil som skall behandlas. Du vill kunna söka i datamängden, kontrollera om en viss post finns eller få ut tillhörande data, eller lägga till poster.

Hur gör du?

1. Skriver ihop lite kod för att arrangera det som en hashtabell.
2. Gräver fram nån gammal kod som jag gjorde nån gång.
3. Jobbar direkt i rådata som ett stort block text i minnet.
4. Använder nån färdig klass för att hantera tabeller.
5. Gör en databaskoppling och skickar SQL-kommandon.
6. Ber någon annan om hjälp.

  • Medlem
  • Mölndal
  • 2007-09-03 18:07

Ser fram emot din analys utifrån omröstningsresultatet!

  • Medlem
  • Umeå
  • 2007-09-03 19:49

Som alltid med sånna hära frågor så finns det en mängd frågor som vilken/vilka arkitekturer är det, tillgängliga programmerings språk, hur ska interaktionen ske med datan (Med andra dator program eller användare) , måste datan finnas sparad, osv....

Bättre skulle kanske vara att göra en liten större omröstning med frågor som:

Antal programmerings språk du har jobbat i:
* < 3; webutvekling;
* < 3; enklare project;
* < 6; Lite av allt möjligt;
* < \infty Mycket av allt möjligt;

Utblidning;

Rekursion;

osv.. - och glöm inte den viktigaste frågan editorer

Jo, jag håller med om att det beror på rätt mycket, men det är en fråga om inställning också (som är det jag speciellt tänkte på). Det är t.ex. en sabla skillnad mellan data som finns lokalt eller en websidelösning.

Men det är ju inget som hindrar att man gör en omröstning som täcker verktygen också!

Jag är hopplöst fast i webbprogrammerandet, så det är databaslösningen som gäller för min del. (iom att det är den jag kan bäst)

  • Medlem
  • Ulricehamn
  • 2007-09-04 06:58

Beror på lite hur mycket data det är, är det en "himla många poster" så hade jag gjort mig mödan med DB kopplingen.

  • Medlem
  • Gävle
  • 2007-09-04 09:21

Jag hade använt en hash-tabell eller rad-för-rad råtextsökning med regex, förutsatt att det inte blir alldeles för bökigt/långsamt/annat att söka i materialet, då skulle jag strukturera upp informationen i en SQL-databas.

Jag hade jobbat direkt med rådatan som ett stort block text i minnet. Varför? För så lärde jag mig att jag skulle göra när jag började koda 68k assembler på Commodore Amiga (det fanns inte så många andra alternativ och nu är jag van med detta alternativ).

  • Medlem
  • Mölndal
  • 2007-09-04 10:32

Det där med att hänga med i utvecklingen och sånt är inget för dig eller?

Ursprungligen av memark:

Det där med att hänga med i utvecklingen och sånt är inget för dig eller?

I övrigt ja. Men människan är av naturen lat.

Ursprungligen av cEvin Key:

I övrigt ja. Men människan är av naturen lat.

Det rätta är alltid att ta en lösning som duger, och som inte kräver för mycket arbete. Om linjärsökning är det man kan fixa snabbt, så kanske det är värt att testa innan man lägger ner mer arbete på något man inte kan. För man kan inte kunna allt.

Linjärsökningar är så klart skit så fort datamängden går upp. I det liknande problem jag hade nyligen började jag med linjärsökning, men då var det också mycket lite data. Sedan bytte jag till hash, och det är (givetvis) snabbt att jag kan ha nästan hur mycket data som helst så länge som tabellen är vettigt dimensionerad.

Jag vill inte på något vis peka ut någon lösning som finare (även om jag personligen gillar hashning). Alla har sina sätt att lösa problem, sina verktyg. Man gräver där man står. Jag tycker det är intressant att få en liten aning om var ni står, och jag tycker det är kul att rösterna är så spridda. Det är en mängd väldigt olika människor som hänger här, och det måste väl vara en bra sak?

Absolut inget fel på hashning, det skulle jag har använt mig av på jobbet (alt. en färdig klass för tabeller). Men eftersom frågan var något luddigt ställd, så utgick jag ifrån hur jag skulle göra hemma med en liten datamängd. Och bara för att jag skulle göra så som jag svarade så är det inte samma sak som att jag inte gillar att hänga med utvecklingen eller använda mig av det senaste. Tvärt om.

Och självklart är det en bra sak att det hänger olika människor här, det vore tråkigt annars.

Ursprungligen av Ingemar Ragnemalm:

Det rätta är alltid att ta en lösning som duger, och som inte kräver för mycket arbete. Om linjärsökning är det man kan fixa snabbt, så kanske det är värt att testa innan man lägger ner mer arbete på något man inte kan. För man kan inte kunna allt.

Linjärsökningar är så klart skit så fort datamängden går upp. I det liknande problem jag hade nyligen började jag med linjärsökning, men då var det också mycket lite data. Sedan bytte jag till hash, och det är (givetvis) snabbt att jag kan ha nästan hur mycket data som helst så länge som tabellen är vettigt dimensionerad.

Jag vill inte på något vis peka ut någon lösning som finare (även om jag personligen gillar hashning). Alla har sina sätt att lösa problem, sina verktyg. Man gräver där man står. Jag tycker det är intressant att få en liten aning om var ni står, och jag tycker det är kul att rösterna är så spridda. Det är en mängd väldigt olika människor som hänger här, och det måste väl vara en bra sak?

Jag skulle säga att det beror på vad det är för slags data. Om det är ganska lite av den, och den finns i något lätthanterligt format som CSV så skulle jag överväga att jobba med det direkt i minnet. I andra fall så skulle det antagligen bli en databas, eller Core Data. Beroende lite på vad jag ska göra med datan.

Om det bara är så att det hela ska köras någon enstaka gång skulle jag inte ens skriva ett program, utan köra med grep och liknande

Hashtabell för min del, det verkar roligast.

  • Medlem
  • International user
  • 2007-09-04 14:23

Jag röstade på "Använder nån färdig klass för att hantera tabeller. "

Sitter jag och kodar i .Net som jag vanligtvis gör så skulle jag antagligen kasta in det hela i en DataTable eller göra en .Net "List" av det hela beroende på exakt vad jag vill uppnå.

  • Medlem
  • Simrishamn
  • 2007-09-04 17:32

Hade jag bara vela söka lite i filen hade jag nog använt grep. Är det inte tillräckligt så hade jag nog öppnat irb (interaktiva ruby-tolken), läst in filen därigenom och helt enkelt i realtid använt lämpliga klasser och metoder.

Ursprungligen av HannesP:

Hade jag bara vela söka lite i filen hade jag nog använt grep. Är det inte tillräckligt så hade jag nog öppnat irb (interaktiva ruby-tolken), läst in filen därigenom och helt enkelt i realtid använt lämpliga klasser och metoder.

3 eller 4 alltså?

Frågan var medvetet luddigt ställd. Jag var lite ute efter vad ni tänker på först, ungefär. Har man alla detaljer så finns det ofta en eller två lösningar som är intressanta, och resten är inte relevant. Jag är ju inte ute efter en lösning på ett specifikt problem, mer efter den sköna konsten att ha socialt snack kring kodningen.

Ett mer specifikt problem kan förstås också vara kul. Bara frågan om man skall ta en färdig klass eller vispa ihop det själv är nog två olika skolor.

  • Medlem
  • Malmö
  • 2007-09-04 18:33

Det är väll solklart att man hackar ihopa en hashtabell i C självklart i vim. Säger jag som arbetar som embeddedkådare.

Ursprungligen av Ingemar Ragnemalm:

Givet en mängd data, en bunt poster som är textsträngar. Det kanske är en textfil som skall behandlas. Du vill kunna söka i datamängden, kontrollera om en viss post finns eller få ut tillhörande data, eller lägga till poster.

Hur gör du?

Söker med kringla+f och redigerar/lägger till direkt i Textredigerare?

Sorry, jobbar inte med sånt här
Men är det verkligen en dålig ide?

  • Medlem
  • Gävle
  • 2007-09-04 21:10
Ursprungligen av kitesurf:

Söker med kringla+f och redigerar/lägger till direkt i Textredigerare?

Sorry, jobbar inte med sånt här
Men är det verkligen en dålig ide?

Det beror på. Om textfilen är sjuhundrasextiofyra rader lång, och det kommer en ny som du måste söka i var fjärde minut... då är det en dålig ide. Det är nog en dålig ide tillochmed om textfilen bara är fyrtiofem rader lång, och en ny kommer var sjätte timme, och endast på bankdagar.

Tror inte du riktigt förstått frågan, men så jobbar du som sagt inte med detta heller.

Ursprungligen av kitesurf:

Söker med kringla+f och redigerar/lägger till direkt i Textredigerare?

Sorry, jobbar inte med sånt här
Men är det verkligen en dålig ide?

Det behöver det inte vara, inte i enklare fall. I vissa fall kan man nog lösa det med ett applescript genom textredigeraren, det är väl ungefär det du tänker på? Men det är ingen lösning som skalar väl om volymerna lägger iväg eller det är lite mer komplexa data.

  • Medlem
  • Mölndal
  • 2007-09-05 11:49

Om man löser det själv eller tar en färdig klass har för mig mest att göra med vem som är beställare. Är det på jobbet vill jag göra det så snabbt som möjligt, är det ett privat projekt vill jag göra det så roligt som möjligt.

  • Oregistrerad
  • 2007-09-05 17:17

Är mängden data större i textfilen definitvt SQL och exempelvis External tables i Oracle eftersom jag kan då både Söka, formatera om, eventuellt transformera om till XML eller HTML direkt via SQL.

I annat fall hade jag nog antingen hittat en färdig class eller skrivit ihop något själv med hash-tabeller.

  • Medlem
  • Umeå
  • 2007-09-05 18:52

Liten datamängd hashtabeller, mycket data SQL.

Är det en liten mängd skulle jag konvertera det till XML med t.ex. regexp och sen enkelt söka, sortera och plocka ut tillhörande data i valfritt format med XSL.

Är det stort med mycket förändringar skulle jag nog köra på SQL databasen.

Nu är detta förstås lite påverkat av att jag dagligen jobbar med XSL

Webb-apa som jag är skulle jag nog bygga en PHP- och MySQL-lösning, förutsatt att det är en stor mängd data som uppdateras ofta och som jag kommer att behöva söka ofta i.

Är det en engångssökning så blir det till att använda grep i terminalen.

Det finns andra viktiga aspekter, som t.ex. plattformsoberoende och portabilitet som du inte tagit upp, men som åtminstone jag ofta blir tvingad inse är väldigt viktiga aspekter.

En lösning jag själv sneglat alltmer mot på sistone är SQlite som förutom att finnas för en rad plattformar kan accessas via en jäkla massa språk och miljöer, som t.ex. shell, php, VB.Net, AppleScript, python etc.

  • Medlem
  • International user
  • 2007-09-08 14:18

Jag skulle skapa ett datalager som gommer implementationen for att hamta det lagrade datat. Sa da kan jag ha SQL pa tisdagar o hashtabeller pa onsdagar och sma tomtar resten av veckan for att lagra mitt data.

helst skulle jag iofs be ngn annan gora det

  • Medlem
  • Stockholm
  • 2007-09-08 16:58

Eftersom jag hatar att programmera är valet rätt uppenbart, gräv fram någon gammal kod som gör något liknande som jag vill, modda, massera sedan är det klart.

Fascinerande dock hur mycket gammal kod man har på lager med tanke på exakt hur less jag brukar bli på programmering efter en 5-10 minuter..

1
Bevaka tråden