Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2023-03-17, 14:45
  #1
Medlem
Kottkompotts avatar
Har precis skrivit ett program som bistår säljare med deras exceldokument.
Chefen är nöjd, allt är fridens liljor.
Nu vill chefen gärna ha alla säljarnas excelfiler centraliserade på en server (GDPR och grejer), och jag är lite lur på hur jag ska lösa det.
Programmet (skrivet i C#) ska då öppna filen direkt från servern, bearbetas medans de sitter och jobbar, och därefter sparas, antingen i intervall, eller när de stänger programmet.
Programmet ska dock köras helt lokalt utöver det, då det redan fungerar på den fronten.

Har nyss kommit igång med att använda PostgreSQL då jag tänkte använda det för att lagra jättefilen med alla Sveriges adresser på några miljoner rader som listorna skapas från. Ingen persondata där, så inga problem att jag pysslar med det lokalt.
Men det känns som ett bök att lagra excelfilerna i fråga med, även om det säkert kan vara smidigt ändå bara man kommer igång.

Jag har funderat på om man skulle använda Git eller NFS istället, då det känns som att det kan vara enklare att komma igång med.
Fördelen med SQL är dock att det blir väldigt enhetligt, och förmodligen rätt snabbt.
Grejen är att det kan vara bra att på något sätt ha utrymme för att värja sig mot att folk sitter och jobbar på samma fil så det krockar, och då kan någon form av användarbehörighet vara bra. Där tror jag SQL är en stark kandidat.
Läste nyss att det finns låsningssystem för att förhindra sådant i NFS, så det kanske kan funka där ändå.

Vad kan vara en lämplig lösning på det här?
Det här är mitt första IT-jobb (på deltid) på ett litet företag mitt i utbildningen och jag har ingen handledare, utan istället lite fria tyglar bara det funkar. Så därför jag tänkte bolla lite då det säkerligen finns mer luttrade personligheter inom området här.
__________________
Senast redigerad av Kottkompott 2023-03-17 kl. 14:54.
Citera
2023-03-17, 15:05
  #2
Medlem
Jooncs avatar
Den självklara lösningen enligt mig är att göra sig av med excel. Om du nu ändå har en centraliserad databas och server, så är det mycket bättre att göra en liten webbapp med dels en visualisering av existerande data, samt ett formulär där säljarna kan skicka in nya uppgifter, och sen spara all data i din databas.

Om din chef sen absolut insisterar på han vill kunna få ut en excel med data, så är det inga svårigheter att konvertera resultatet av en sql-query till en excelfil.
Citera
2023-03-17, 15:08
  #3
Medlem
Nattjags avatar
Kan ni inte bara köra Teams? Kollaborativ editering är bökigt att skriva själv...
Citera
2023-03-17, 15:13
  #4
Medlem
Tomtekukars avatar
Citat:
Ursprungligen postat av Nattjag
Kan ni inte bara köra Teams? Kollaborativ editering är bökigt att skriva själv...
Ja, teams kan funka, förutsatt alla har licens för Excel, alt registrerat microsoft-konto
Citera
2023-03-17, 15:23
  #5
Medlem
Vill.Ha.Den.I.2ans avatar
jag tycker det låter som ts måste springa till skogs och hålla sig undan ett par år. chfen vet inte hur komplext problem han ställt ts inför och ts som rookie säger, det fixar jag! eller fb.
Citera
2023-03-17, 15:31
  #6
Medlem
Kottkompotts avatar
Citat:
Ursprungligen postat av Joonc
Den självklara lösningen enligt mig är att göra sig av med excel. Om du nu ändå har en centraliserad databas och server, så är det mycket bättre att göra en liten webbapp med dels en visualisering av existerande data, samt ett formulär där säljarna kan skicka in nya uppgifter, och sen spara all data i din databas.

Om din chef sen absolut insisterar på han vill kunna få ut en excel med data, så är det inga svårigheter att konvertera resultatet av en sql-query till en excelfil.
Det är det att en markant del av just det här projektet inbegriper automatisering av söksidor.
Och det är helst inget jag vill lägga på en centraliserad server. Dels av etiska skäl, och dels för att man inte behöver mixtra med proxys och flertrådning och allt vad det heter när det är (förhållandevis) några enstaka förfrågningar då och då spridda på flera flera användare.

Sen vet folk som sysslar med det här redan hur excel fungerar tillräckligt mycket för att det inte ska ställa till besvär.
Jag är inte jättesugen på att uppfinna hjulet och göra ett nytt UI när vi redan har ett som fyller alla behov. Snarare integrerar jag hellre konsoltexten för programfunktionerna i Excel vid tillfälle.

Men jo, jag har fått uppfattningen att det går att öppna delar av en databas som en excelfil, och därefter spara redigeringarna direkt till databasen.
På något sätt, iallafall.
Citat:
Ursprungligen postat av Vill.Ha.Den.I.2an
jag tycker det låter som ts måste springa till skogs och hålla sig undan ett par år. chfen vet inte hur komplext problem han ställt ts inför och ts som rookie säger, det fixar jag! eller fb.
Njae, det var väl delvis mitt förslag också när jag sade "jo, man kan åtminstone i teorin göra sådär, det kikar jag gärna på".
Sen är det här till stor del en lärandegrej också. Allt nytt jag samlar på mig är bra att ha i lådan.
Än så länge är det iallafall mycket roligare än att sitta i skolbänken och skriva torra teorier om relationsmodeller, och primärnyckel hit, och motivering dit.
Har lärt mig mer på det här senaste 5 veckorna än jag gjort på universitetet sedan i somras.

Men i teorin tycker jag att det bör inte vara ett enormt bök att bara administrera en databas med säljarnas ringlistor.
Om jag får bygga det från grunden har jag åtminstone koll på hur det fungerar sedan, och det är nog lite roligare än det här wordpressprojektet som jag inte vet hur många före mig som suttit och pillat med utan att dokumentera ett enda ord.

Hursomhelst underlättar det för mig ändå då det går automatisera mer i längden om vi gör så här, istället för att jag ska sitta och rendera allt lokalt och maila grejerna för hand till folk som kanske har tummen mitt i handen och än en gång inte vet vilken mapp de ska lägga grejerna i.

Citat:
Ursprungligen postat av Nattjag
Kan ni inte bara köra Teams? Kollaborativ editering är bökigt att skriva själv...
Det är väl enklast om vi helt enkelt skapar jätteringlistor på minst typ 50.000 rader så det inte behöver göras ofta, och så uppdaterar jag behörigheterna på vardera fil lite då och då?
Enklast är om jag får i instruktion att rendera listorna för hand, då jag inte har något emot att sitta och sålla i grejer på det sättet.
Det skulle vara för mycket förväntat av användarna att sitta och skriva allt för detaljerade databasförfrågningar.
Bättre att de får en fil i knät att skriva namnet på när det ska jobbas.
__________________
Senast redigerad av Kottkompott 2023-03-17 kl. 15:47.
Citera
2023-03-17, 15:46
  #7
Medlem
Enterprises avatar
En kompromiss som fungerat bra för mig i liknande syften är Google Sheets.
Det är "automatiseringsvänligt" och smidigt för många att komma åt samtidigt, till skillnad från Excel. Det är också så pass likt Excel att vanliga kontorsnissar inte ryggar tillbaka för att det är obegripligt.
Du kan till och med sköta själva scrapingen från Apps Script (som kopplas till Sheets).
__________________
Senast redigerad av Enterprise 2023-03-17 kl. 15:50.
Citera
2023-03-17, 15:57
  #8
Medlem
Kottkompotts avatar
Citat:
Ursprungligen postat av Enterprise
En kompromiss som fungerat bra för mig i liknande syften är Google Sheets.
Det är "automatiseringsvänligt" och smidigt för många att komma åt samtidigt, till skillnad från Excel. Det är också så pass likt Excel att vanliga kontorsnissar inte ryggar tillbaka för att det är obegripligt.
Du kan till och med sköta själva scrapingen från Apps Script (som kopplas till Sheets).
Jag vet inte vilken gång i ordningen det är du bidrar med en ren uppenbarelse inom scrapingområdet, men än en gång har du lyckats.
Du förtjänar helt ärligt en medalj

Lite tärt att behöva skriva om hela programmet när det tog typ 10 timmar, men har jag tur är det relativt smärtfritt att översätta till annat språk.
Men det skulle vara en extremt smidig lösning i övrigt, då det blir rätt enkelt att sitta och rodda i rent grafiskt när man inte orkar börja med att knacka shell scripts och grejer.

Men går det alltså göra så enkelt där att man bara loggar in på Drive och kör hela programmet därifrån?
För det skulle nog vara oerhört uppskattat av alla inblandade.
Fast en grej bara, är det den egna IP-adressen eller Googles som används om man öppnar selenium?
Det var lite viktigt att den egna användes av orsaker.
__________________
Senast redigerad av Kottkompott 2023-03-17 kl. 16:14.
Citera
2023-03-17, 16:04
  #9
Medlem
Citat:
Ursprungligen postat av Kottkompott
Har precis skrivit ett program som bistår säljare med deras exceldokument.
Chefen är nöjd, allt är fridens liljor.
Nu vill chefen gärna ha alla säljarnas excelfiler centraliserade på en server (GDPR och grejer), och jag är lite lur på hur jag ska lösa det.
Programmet (skrivet i C#) ska då öppna filen direkt från servern, bearbetas medans de sitter och jobbar, och därefter sparas, antingen i intervall, eller när de stänger programmet.
Programmet ska dock köras helt lokalt utöver det, då det redan fungerar på den fronten.

Har nyss kommit igång med att använda PostgreSQL då jag tänkte använda det för att lagra jättefilen med alla Sveriges adresser på några miljoner rader som listorna skapas från. Ingen persondata där, så inga problem att jag pysslar med det lokalt.
Men det känns som ett bök att lagra excelfilerna i fråga med, även om det säkert kan vara smidigt ändå bara man kommer igång.

Jag har funderat på om man skulle använda Git eller NFS istället, då det känns som att det kan vara enklare att komma igång med.
Fördelen med SQL är dock att det blir väldigt enhetligt, och förmodligen rätt snabbt.
Grejen är att det kan vara bra att på något sätt ha utrymme för att värja sig mot att folk sitter och jobbar på samma fil så det krockar, och då kan någon form av användarbehörighet vara bra. Där tror jag SQL är en stark kandidat.
Läste nyss att det finns låsningssystem för att förhindra sådant i NFS, så det kanske kan funka där ändå.

Vad kan vara en lämplig lösning på det här?
Det här är mitt första IT-jobb (på deltid) på ett litet företag mitt i utbildningen och jag har ingen handledare, utan istället lite fria tyglar bara det funkar. Så därför jag tänkte bolla lite då det säkerligen finns mer luttrade personligheter inom området här.
Det blir lätt problem om flera användare ska jobba i samma fil. Dels låsningar men om du löser det har du ändå problemet att en användare skriver över den tidigare användarens ändringar. Det är därför man använder riktiga SQL-databaser för att kunna se till att en användare ändrar sin data och inte någon annans data. Kolla upp begreppen pessimistic & optimistic concurrency.
https://cult.honeypot.io/reads/optim...c-concurrency/

Det viktigaste är att du testar olika scenarier och "provocerar" ditt system för att förstå vilka problem som kan uppstå. T.ex. låtsas vara användare A och användare B.

1. Användare A och B öppnar samtidigt
2. Användare B gör en ändring och sparar.
3. Användare A gör en ändring och sparar.
4. Är båda ändringarna sparade nu?
Citera
2023-03-17, 16:21
  #10
Medlem
mikaelss avatar
Jag kanske missförstår och förenklar, men gör inte Office365 just det du skrivit ett program för? Att jobba gemensamt i Officedokument både online och offline är ju vad MS’ moderna miljö möjliggör, med eller utan Teams.
Vad är det du behöver utveckla?
Citera
2023-03-17, 16:26
  #11
Medlem
Kottkompotts avatar
Citat:
Ursprungligen postat av mikaels
Jag kanske missförstår och förenklar, men gör inte Office365 just det du skrivit ett program för? Att jobba gemensamt i Officedokument både online och offline är ju vad MS’ moderna miljö möjliggör, med eller utan Teams.
Vad är det du behöver utveckla?
Jo nu när jag läste vidare så skulle det kanske innebära minst arbete överlag att helt enkelt använda nuvarande program, men integrera någon API-funktion så att filen hämtas från Onedrive istället för lokalt.

Såg att apps script kördes från googles servrar, hade det inte varit för det hade det kunnat vara en väldigt smidig lösning.

Vet någon om det kostar just något att koppla upp grejer mot OneDrive med API?
Citera
2023-03-17, 16:31
  #12
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Kottkompott
Jag vet inte vilken gång i ordningen det är du bidrar med en ren uppenbarelse inom scrapingområdet, men än en gång har du lyckats.
Du förtjänar helt ärligt en medalj

Lite tärt att behöva skriva om hela programmet när det tog typ 10 timmar, men har jag tur är det relativt smärtfritt att översätta till annat språk.
Men det skulle vara en extremt smidig lösning i övrigt, då det blir rätt enkelt att sitta och rodda i rent grafiskt när man inte orkar börja med att knacka shell scripts och grejer.

Men går det alltså göra så enkelt där att man bara loggar in på Drive och kör hela programmet därifrån?
För det skulle nog vara oerhört uppskattat av alla inblandade.
Fast en grej bara, är det den egna IP-adressen eller Googles som används om man öppnar selenium?
Det var lite viktigt att den egna användes av orsaker.
Kul att kunna vara till hjälp.
Man kan köra ett sådant script väldigt enkelt, antingen genom Drive, eller genom att helt enkelt sätta in en knapp i Sheet-arket (som triggar skriptet). Slutligen kan man köra skriptet automatiskt antingen genom timer (t.ex. en gång om dagen) eller genom en Web App/webhook (alltså externt kontrollerat).

Apps Script körs enbart på Googles servrar, du kommer aldrig att kunna köra Selenium på detta. En hemsida som kräver Selenium för att kunna scrapa (vilket man alltid bör försöka undvika i min bok) får man istället hantera enligt följande:
1. Selenium körs på en lokal burk och scrapar ihop data.
2. Den data som är ny skickas genom ett HTTP-anrop till en Web App som är kopplad till ditt Apps Script (du skapar då en enkel kontaktyta/API).
3. När ny data skickas till Web Appen så uppdateras ditt Sheet-ark.

https://www.youtube.com/watch?v=RRQvySxaCW0
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback