Permalänk
Medlem

Koda tillsammans med andra

Tja, är nu så att jag och några polare håller på att göra en sida ihop. Vi har kommit på efter några minuter av arbete att det blir riktigt krångligt att koda ihop med andra då man skriver över och behöver reloada dokumentet hela tiden etcetc... Det jag undrar är : Hur gör egentligen stora företag som facebook och google när de koda deras sidor? då de säkerligen sitter flera personer på samma sida. Finns det program man kan köpa/ladda ner gratis som gör att man kan se vad den andra skriver i real tid?

Jag använder dreamweaver cs6 och de andra använder notepad++

Tacktack!

Visa signatur

"En dator"

Permalänk
Medlem

jag tror dom flesta kör GIT nuförtiden. http://en.wikipedia.org/wiki/Git_%28software%29

www.bitbucket.org - är en ganska bra gratis host.

ett annat alternativ är att köra svn. http://en.wikipedia.org/wiki/Apache_Subversion

Visa signatur

| Ryzen 5800x | Asus prime x470 pro | Asus rtx 3080 tuf oc | Gskill 32gb 3,6ghz | Dell S2721DGFA | Asus MG279Q |

Permalänk
Medlem
Skrivet av Ragin Pig:

jag tror dom flesta kör GIT nuförtiden. http://en.wikipedia.org/wiki/Git_%28software%29

www.bitbucket.org - är en ganksa bra gratis host.

ett annat alternativ är att köra svn. http://en.wikipedia.org/wiki/Apache_Subversion

Tack så mycket! Ska kolla in

Visa signatur

"En dator"

Permalänk
Medlem

Som ovan nämnt kan ni satsa på GIT/hg med github eller bitbucket. Det är dock inte realtid a'la Google Docs. Man bör modularisera sina applikationer och göra det möjligt att jobba med olika filer trots att man jobbar med samma sida. Att jobba i samma fil är sällan en rolig historia och slutar oftast med jobbiga merge-operationer och onödiga problem. Mitt förslag är att ni ser till att dela upp er utveckling på så sätt att ni inte längre har behov av att se vad andra skriver i realtid.

Visa signatur

Don't be afraid to give up the good to go for the great.

Permalänk
Medlem

Problemet med realtidsprogramering är att du vill testköra din kod så finns det fel i det dom andra jobbar i.

Det företag gör att man hämtar ut en version av koden som fungerar. Implementerar det man vill, testar det, och skickar upp det den centrala kopian.

GitHub är lämpligt för ert behov.

Permalänk
Medlem

De sitter inte flera stycken och gör samma sak. Om någon sitter och gör en meny eller vad fan det kanvara så gör de det separat och skickar till någon sorts gruppledare eller skit som lägger in det i mainsidan. Allt är uppdelat helt enkelt och alla har sina uppgifter och saker de sköter.

Visa signatur

| Fractal Design XL R2| 2x Gigabyte 680 Gtx@1254/7300mhz | Asrock Z77 OC Formula | 3570k@4.5ghz(1.36v) & Phanteks PH-TC14PE | 16gig hyperx beast series@2133mhz | Fractal Design Newton R2, 1000W 80+ | Samsung SSD Basic 840-Series 512GB | 2TB Toshiba 7200rpm SATA6 | 9x Scythe Glide Stream 2000rpm | 2x Bitfenix Recon Fan Controller | BenQ 27'' XL2720T 120Hz + Dell UltraSharp 27" U2713HM IPS 2560x1440 | Sennheiser HD595

Permalänk
Inaktiv
Skrivet av exodeus:

Problemet med realtidsprogramering är att du vill testköra din kod så finns det fel i det dom andra jobbar i.

Hur i hela världen fick du med realtidsprogrammering i detta?

Jag rekommenderar SVN, tycker att GIT brukar bli ett jäkla mög då det konfliktar för mycket
Här är en mycket trevlig server http://www.visualsvn.com/

Permalänk
Medlem
Skrivet av anon81912:

Hur i hela världen fick du med realtidsprogrammering i detta?

Jag rekommenderar SVN, tycker att GIT brukar bli ett jäkla mög då det konfliktar för mycket
Här är en mycket trevlig server http://www.visualsvn.com/

Det undrar jag också, Realtidsprogrammering använder man sig väl av i stridsrobotar och flygplan.
t.ex. i stridsplan där styrningen är digital så måste reaktionen/exekveringen vara på få millisekunder.

Som många tidigare har sagt är det ett versionhanterings system ni behöver, alt. så delar ni upp era uppgifter och bygger konkreta moduler.
Jag vet hur erat projekt ser ut. Men om det är ett flertal ajax eller PHP koder så kan man testa dem var för sig innan man lägger dem i drift för slutgiltigt test.

Visa signatur

~. Citera så jag hittar tillbaka .~

Permalänk
Hedersmedlem
Skrivet av ohoy:

Tja, är nu så att jag och några polare håller på att göra en sida ihop. Vi har kommit på efter några minuter av arbete att det blir riktigt krångligt att koda ihop med andra då man skriver över och behöver reloada dokumentet hela tiden etcetc... Det jag undrar är : Hur gör egentligen stora företag som facebook och google när de koda deras sidor? då de säkerligen sitter flera personer på samma sida. Finns det program man kan köpa/ladda ner gratis som gör att man kan se vad den andra skriver i real tid?

Jag använder dreamweaver cs6 och de andra använder notepad++

Tacktack!

Det låter som att det är ett rätt litet projekt med bara ett par medverkande, men du frågade efter hur större projekt löser det, så jag utgår ifrån det nedan. Vissa delar kan ses som irrelevanta, eller åtminstone mindre viktiga, i ett litet hobbyprojekt.

Detta är som alla förstår ett extremt vanligt problem som uppkommit otaliga gånger i historien: hur samarbetar man med koden? Lösningen som programmerare tagit fram heter versionshantering, som nämnts ovan.

Distribuerade versionshanteringssystem så som Git/Mercurial är rätt vedertagna för utveckling idag, och jag vet egentligen inget projekt som håller kvar vid centraliserade system som CVS/SVN/etc. på tekniska meriter, utan snarare av vana eller specifik kompetens. Även om man bara jobbar lokalt så har distribuerade system fördelar. Är man fri att välja så bör/ska man välja ett modernt distribuerat versionshanteringssystem. Google använder Perforce som är ett betalverktyg. Facebook använde SVN, men har gått över till Git. Det finns andra varianter som Darcs och Bazaar, men, tja. Jag ser ingen direkt anledning att använda dessa före Git/Mercurial om man inte har något speciellt krav. Git eller Mercurial är ganska jämnt skägg i mina ögon då de erbjuder väldigt likartad funktionalitet och båda har stora användarbaser. Går man in på finlir så är Git nog det kraftfullare alternativet, samtidigt som jag kan tycka att Mercurials gränssnitt är mer intuitivt i början.

Om man inte använder versionshantering överhuvudtaget så har man ett fantastiskt verktyg kvar att upptäcka . Det handlar inte bara om att registrera projektets historik (även om det i sig vore mer än skäl nog), utan att man "tvingas" applicera struktur på utvecklingen, och se kod för vad det egentligen är: samverkande instruktioner snarare än flytande skönlitteratur. Detta är som du märkt extra viktigt vid samarbete, men det hjälper starkt även vid personliga projekt. Att ha signerad commithistorik med korta förklaringar över varje kodsnutt gör också att frågor som "vad gör denna kodbit och vem #¤% skrev den?" får sitt svar på sekunder.

Gällande kodningen så är det av hyfsad vikt att ha någon sorts schema för att undvika dubbelarbete. Är det ett gigantiskt projekt så krävs betydande planeringstid i förväg för att få någon fart på arbetet. Är det ett mindre projekt så kanske det räcker att kontinuerligt kommunicera vad man gör, t ex genom att samla utvecklarna i en IRC-kanal. En enkel detalj som kan hjälpa mycket är att köra en IRC-bot som vidarebefordrar centrala commitmeddelanden till kanalen.

Utöver detta väljer många projekt att ha en maillista eller liknande, men det kan substitueras av en gemensam bugtracker av något slag. Maillistan har fördelar i teknisk enkelhet, men en tracker har många förenklande funktioner. Dessutom så om man startar projektet på Github eller liknande större sida så får man detta integrerat i versionshanteringssystemet på köpet.

Gällande din fråga om att arbeta multipla personer med samma programkod i realtid så är det inget som direkt används då det dras med en himla massa problem. Vad man i stället gör är att man jobbar på varsin kopia. Person 1 programmerar sin del och registrerar ändringarna på ett bestämt centralt ställe. När person 2 som jobbat parallellt vill registrera sina ändringar, så om det inte är någon konflikt med vad person 1 har gjort så fixar versionshanteringssystemet sammanslagningen (moderna system är klart smartare gällande detta än äldre). Om det råkar vara en konflikt så startar systemet ett diffverktyg som visar konflikterna och ber användaren att lösa dessa innan registrering. Genom att registrera och även kontrollera vad andra registrerat ofta så blir det en väldigt sömlös upplevelse. Om man har kommunikation inom projektet så bör det sällan uppstå konflikter.

Du nämner att du sitter i Dreamweaver och de andra i Notepad++ — det känns som ett recept på problem. Grafiska verktyg har en förmåga att ändra mycket i koden (även om just Dreamweaver till en början blev stort mycket pga att det var bättre i detta hänseende än konkurrenterna), vilket kan göra det svårt att passa in i ett vettigt versionshanteringsflöde. Jag har inte använt Dreamweaver på många år dock, och ser att de lagt till stöd för åtminstone SVN direkt i programmet, så visst arbete har de gjort för att rätta till dess brister.

Om det är så att någon av er jobbar med layout, någon med funktioner och någon med t ex databaserna så är det läge att separera dessa delar kodmässigt och titta på buzzword:et MVC. Med genomtänkt design så kan ni då jobba mer eller mindre helt självständigt på var sin del, utan att designern behöver kunna Python eller vad man nu kodar funktionaliteten i.

För att återgå till ett "mindre" projekt så skulle jag trots allt säga att versionshantering är så pass nyttigt att det kan ses som ett krav. En IRC-kanal för utveckling är väldigt smidigt, men ni kanske har något annat sätt att kommunicera. Notera dock att om ni är fler än två så kan det vara väldigt bra att ha just en allmän kanal så som IRC för att inte kommunikationen ska fastna mellan fyra ögon.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Medlem

Det finns även ett versionshanteringssystem vid namn Fossil. Fördelen med Fossil är att allting ingår; wiki, ärendehanteringssystem osv. Allt detta i en enda liten ynka binär på några få MB!

Arbetsflödet liknar det i Git/Mercurial (distribuerade lösningar) men datan lagras i en sqlite-databas, vilket kanske låter konstigt men fungerar väldigt bra.

Det största problemet med Fossil är att det inte är så många som använder det, vilket i förlängningen leder till att det kan vara svårt att hitta information och få hjälp.

Repot på länken ovan körs för övrigt på Fossil: Fossil både versionshanteras och presenteras med Fossil

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av anon81912:

Hur i hela världen fick du med realtidsprogrammering i detta?

Jag rekommenderar SVN, tycker att GIT brukar bli ett jäkla mög då det konfliktar för mycket
Här är en mycket trevlig server http://www.visualsvn.com/

Vad menar du med "konfliktar för mycket"? I övrigt är git mycket bättre än SVN.

Permalänk
Inaktiv
Skrivet av tufflax:

Vad menar du med "konfliktar för mycket"? I övrigt är git mycket bättre än SVN.

Jag tycker att det har varit lättare att lösa merge konflikter i SVN i flera fall då den klagar snyggare imo. Tycker även SVN har sköna post commit hooks om man kör det mot en server Antar att det finns liknande i GIT.

Kan hålla med om att SVN kan kännas föråldrat, GIT har säkert fördelar då det är distribuerat och så. Men det är många jag känner som kan SVN mycket bra så vid projekt brukar det bli en självklar goto då det funkat helt utan krusiduller där andra program har bråkat lite :/

Permalänk
Datavetare
Skrivet av anon81912:

Jag tycker att det har varit lättare att lösa merge konflikter i SVN i flera fall då den klagar snyggare imo. Tycker även SVN har sköna post commit hooks om man kör det mot en server Antar att det finns liknande i GIT.

Kan hålla med om att SVN kan kännas föråldrat, GIT har säkert fördelar då det är distribuerat och så. Men det är många jag känner som kan SVN mycket bra så vid projekt brukar det bli en självklar goto då det funkat helt utan krusiduller där andra program har bråkat lite :/

Tycker SVN är rätt trevligt, men vad det gäller merge så är ju GIT långt mycket bättre. GIT är det första VCS sedan ClearCase som är riktigt bra på att hantera merge, ClearCase är dock något man inte vill ens önskar att ens fiender ska tvingas använda

Har man följande brancher och revisioner

A ---- B ---- #branch1 \ ---- C ---- #branch2

och gör en merge från #branch2 till #branch1 så kommer SVN bara jämföra B och C medan GIT även tar hänsyn till A då det är en gemensam reversion.

Och följande merge så är fördelen för GIT än större då den "komme ihåg" tidigare merge, något man pratat om att lägga till i SVN under lång tid men tror att man fortfarande inte fått till det

A ------ B ---- M ---- D ---- #branch1 \ ^ v / ------ C ---- E ---- #branch2

Om man nu vill ta in E i branch#1 så kommer SVN inte automatiskt komma ihåg mergen av B och C (om man nu inte lyckats fixa det), men GIT har koll på det och kommer använda den informationen får att skala bort de förändringar som kommer från den tidigare merge:en. ClearCase kan också göra detta och det var något jag verkligen saknade i CVS och SVN.

GIT är däremot inte helt uppenbart i hur man använder det, tycker både SVN och Mercurial är mer "självklara".

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av anon81912:

Jag tycker att det har varit lättare att lösa merge konflikter i SVN i flera fall då den klagar snyggare imo. Tycker även SVN har sköna post commit hooks om man kör det mot en server Antar att det finns liknande i GIT.

Kan hålla med om att SVN kan kännas föråldrat, GIT har säkert fördelar då det är distribuerat och så. Men det är många jag känner som kan SVN mycket bra så vid projekt brukar det bli en självklar goto då det funkat helt utan krusiduller där andra program har bråkat lite :/

Kan man SVN bättre än GIT så kan jag förstå att konflikthanteringen är svårare i GIT. Men precis som du säger så håller jag med dig om att SVN känns föråldrat och enligt min uppfattning har GIT större community (reserverar mig för fel i det påståendet). Om man ska lära sig ett versionshantering nu så ska man nog vällja ett där communityn är bra då det oftast finns mer hjälp att få.

Till trådskaparen: Om du vill lära dig GIT så är code school ett jättebra ställe som nybörjare på ett nytt språk, versionshantering etc.

http://www.codeschool.com/courses/try-git

Visa signatur
Permalänk
Medlem
Visa signatur

FreeNAS 3U | 8GB | 2x2x3TB ProxMox i7-8700K | 32GB Desktop Dell 22" | Benq 22" | i5-smth | 16GB | Intel 520 120GB | 500GB | Arch

Permalänk
Inaktiv
Skrivet av izepax:

Kan man SVN bättre än GIT så kan jag förstå att konflikthanteringen är svårare i GIT. Men precis som du säger så håller jag med dig om att SVN känns föråldrat och enligt min uppfattning har GIT större community (reserverar mig för fel i det påståendet). Om man ska lära sig ett versionshantering nu så ska man nog vällja ett där communityn är bra då det oftast finns mer hjälp att få.

Till trådskaparen: Om du vill lära dig GIT så är code school ett jättebra ställe som nybörjare på ett nytt språk, versionshantering etc.

http://www.codeschool.com/courses/try-git

Communityn är kanske större, men SVN är väldigt väldokumenterat. Efter att ha läst man filen så ser jag inga problem med att utföra några slags kommandon. Skulle man trots manualen bli förvirrad så kan man ju hitta trådar med lösningen på nätet då det trots all är 13 år gammalt.

Jag gillar också att det är serverbaserat, så att man snabbt kan publicera koden men arbetar med på servern efter en commit. (Det lär väl finnas lösningar för git där servern är med och laddar hem senaste versionen också )

Permalänk
Medlem

Jag skulle rekommendera att använda git istället för svn, kör svn på jobbet och git för mina hem projekt. Det finns två stora fördelar med att använda git som jag ser det.

  • Det är mycket smidigare att skapa branches och byta mellan dem, git uppmuntrar även till detta. Så om du skulle vilja testa något i din kod kan du skapa en branch testa funktionen och om det skiter sig så kan du bara slänga den branchen. Om det visar sig vara en bra ide så är det väldigt lätt att merga den med master branchen. Svn däremot är ett rent helvete att merga olika branches, så därför tenderar jag att undvika dem.

  • Git har ett extra steg när man commitar saker. Först så commitar man lokalt, sen pushar man upp det till t.ex. github eller butbucket. Medan svn har bara commit och sen skickas det till servern. Vilket kan vara drygt om man råkar införa en bug i koden som man sedan skickar upp så alla kan se. Vet inte hur många gånger jag har behövt hoppa tillbaka några versioner på svn för att någon har infört en bugg på jobbet. Eller ännu värre att jag har infört en bugg. Detta medför att jag undviker att commita med svn tills jag känner att jag är klar med det jag pysslade med. Med git så kan man commita lite då och då utan att behöva oroa sig att någon kommer och skriker på en att koden slutade fungera efter ens senaste commit. Sen när man känner sig klar med det man har gjort så pushar man det till github/bitbucket så andra kan ta del av det man har gjort.

Finns även väldigt bra dokumentation för git, t.ex. den här boken på hemsidan http://git-scm.com/book.

Visa signatur

Dagens ordspråk:
Den som väntar på något gått väntar alltid för länge.

Permalänk
Medlem

Vi kör Bazaar på jobbet. Det klagas en hel del på dess problem, men det är vad som alltid använts hos oss så det är inte helt lätt att bara byta. Oftast gör det sitt jobb iallafall.
Hursomhelst, att koda flera personer på samma projekt utan att ha något versionshanteringssystem och istället skicka filer fram och tillbaka eller något leder mycket snabbt till total förvirring.
Så att lära sig hur versionshantering fungerar är mycket viktigt och faktiskt något som är högst vettigt att tom ha med på ditt CV om du söker jobb inom programmering, eftersom just detta är något som sällan lärs ut på våra högskolor men är helt nödvändigt i praktiken.

Visa signatur

Namn : Jesper | Ålder : 45 | In-game namn : iller
Yrke : Matematisk modellerare (finansiell matematik), mjukvaruutvecklare för risksystem.
Utbildning : Doktor i matematik + en del mat-stat, numme och IT-relaterat.

Permalänk
Hedersmedlem
Skrivet av JesperT:

Hursomhelst, att koda flera personer på samma projekt utan att ha något versionshanteringssystem och istället skicka filer fram och tillbaka eller något leder mycket snabbt till total förvirring.

Rapport.doc Rapport 0305.doc Rapport.1.doc Rapport.1.1.doc Rapport.2.doc Rapport ny.doc Rapport ny.1.doc Rapport ny.1 NY INLEDNING.doc Rapport ny NIKLAS.doc

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Medlem
Skrivet av phz:

Det låter som att det är ett rätt litet projekt med bara ett par medverkande, men du frågade efter hur större projekt löser det, så jag utgår ifrån det nedan. Vissa delar kan ses som irrelevanta, eller åtminstone mindre viktiga, i ett litet hobbyprojekt.

Detta är som alla förstår ett extremt vanligt problem som uppkommit otaliga gånger i historien: hur samarbetar man med koden? Lösningen som programmerare tagit fram heter versionshantering, som nämnts ovan.

Distribuerade versionshanteringssystem så som Git/Mercurial är rätt vedertagna för utveckling idag, och jag vet egentligen inget projekt som håller kvar vid centraliserade system som CVS/SVN/etc. på tekniska meriter, utan snarare av vana eller specifik kompetens. Även om man bara jobbar lokalt så har distribuerade system fördelar. Är man fri att välja så bör/ska man välja ett modernt distribuerat versionshanteringssystem. Google använder Perforce som är ett betalverktyg. Facebook använde SVN, men har gått över till Git. Det finns andra varianter som Darcs och Bazaar, men, tja. Jag ser ingen direkt anledning att använda dessa före Git/Mercurial om man inte har något speciellt krav. Git eller Mercurial är ganska jämnt skägg i mina ögon då de erbjuder väldigt likartad funktionalitet och båda har stora användarbaser. Går man in på finlir så är Git nog det kraftfullare alternativet, samtidigt som jag kan tycka att Mercurials gränssnitt är mer intuitivt i början.

Om man inte använder versionshantering öht så har man ett fantastiskt verktyg kvar att upptäcka . Det handlar inte bara om att registrera projektets historik (även om det i sig vore mer än skäl nog), utan att man "tvingas" applicera struktur på utvecklingen, och se kod för vad det egentligen är: samverkande instruktioner snarare än flytande skönlitteratur. Detta är som du märkt extra viktigt vid samarbete, men det hjälper starkt även vid personliga projekt. Att ha signerad commithistorik med korta förklaringar över varje kodsnutt gör också att frågor som "vad gör denna kodbit och vem #¤% skrev den?" får sitt svar på sekunder.

Gällande kodningen så är det av hyfsad vikt att ha någon sorts schema för att undvika dubbelarbete. Är det ett gigantiskt projekt så krävs betydande planeringstid i förväg för att få någon fart på arbetet. Är det ett mindre projekt så kanske det räcker att kontinuerligt kommunicera vad man gör, t ex genom att samla utvecklarna i en IRC-kanal. En enkel detalj som kan hjälpa mycket är att köra en IRC-bot som vidarebefordrar centrala commitmeddelanden till kanalen.

Utöver detta väljer många projekt att ha en maillista el dyl, men det kan substitueras av en gemensam bugtracker av något slag. Maillistan har fördelar i teknisk enkelhet, men en tracker har många förenklande funktioner. Dessutom så om man startar projektet på Github eller liknande större sida så får man detta integrerat i versionshanteringssystemet på köpet.

Gällande din fråga om att arbeta multipla personer med samma programkod i realtid så är det inget som direkt används då det dras med en himla massa problem. Vad man i stället gör är att man jobbar på varsin kopia. Person 1 programmerar sin del och registrerar ändringarna på ett bestämt centralt ställe. När person 2 som jobbat parallellt vill registrera sina ändringar, så om de inte är någon konflikt med vad person 1 har gjort så fixar versionshanteringssystemet sammanslagningen (moderna system är klart smartare gällande detta än äldre). Om det råkar vara en konflikt så startar systemet ett diffverktyg som visar konflikterna och ber användaren att lösa dessa innan registrering. Genom att registrera och även kontrollera vad andra registrerat ofta så blir det en väldigt sömlös upplevelse. Om man har kommunikation inom projektet så bör det sällan uppstå konflikter.

Du nämner att du sitter i Dreamweaver och de andra i Notepad++ — det känns som ett recept på problem. Grafiska verktyg har en förmåga att ändra mycket i koden (även om just Dreamweaver till en början blev stort mycket pga att det var bättre i detta hänseende än konkurrenterna), vilket kan göra det svårt att passa in i ett vettigt versionshanteringsflöde. Jag har inte använt Dreamweaver på många år dock, och ser att de lagt till stöd för åtminstone SVN direkt i programmet, så visst arbete har de gjort för att rätta till dess brister.

Om det är så att någon av er jobbar med layout, någon med funktioner och någon med t ex databaserna så är det läge att separera dessa delar kodmässigt och titta på buzzword:et MVC. Med genomtänkt design så kan ni då jobba mer eller mindre helt självständigt på var sin del, utan att designern behöver kunna Python eller vad man nu kodar funktionaliteten i.

För att återgå till ett "mindre" projekt så skulle jag trots allt säga att versionshantering är så pass nyttigt att det kan ses som ett krav. En IRC-kanal för utveckling är väldigt smidigt, men ni kanske har något annat sätt att kommunicera. Notera dock att om ni är fler än två så kan det vara väldigt bra att ha just en allmän kanal så som IRC för att inte kommunikationen ska fastna mellan fyra ögon.

Dold text

Grym respons! haha

Tack för svaren!

Visa signatur

"En dator"