Koska minulla on perversio sen suhteen että tykkään tehdä juttuja komentoriviltä, ja koodia pitäisi kirjoittaa aina mahdollisimman vähän.
tämä on minulla polussa olevassa kansiossa nimellä setcurrentproject.bat
@echo off
set output=c:\somefolderinpath\currentproject.bat set currentproject=%cd% del %output% echo cd /d %currentproject%\>%output% echo set current project to %currentproject%.
Nytten, kun työstän jotain projektia, voin kansiossa minne haluan palata, sanon vain setcurrentproject, ja sitten kun rupean työstämään sanon currentproject.
pitäiskö nykyään olla .cmd vai .bat? vai pitäiskö mennä käyttötarkoituksen mukaan? Tämä on enempi .cmd settiä konseptiltaan.
En yhtään osaa sanoa miksi. Kaiketi "Koska se oli siellä" eli C:\Python25 kansiossa. Kirjoittelin pari luokkaa, ja testiskriptin, outputti näyttää tältä:
G:\devel\Source\MySRC\Tests\Python-duel>c:\Python25\python.exe test.py Level: 1 HP: 10 Attack 0 Defense 10 STR 10 ( 0 ) DEX 14 ( 2 ) CON 10 ( 0 ) INT 10 ( 0 ) WIS 10 ( 0 ) CHA 10 ( 0 ) Level: 1 HP: 8 Attack 0 Defense 10 STR 18 ( 4 ) DEX 10 ( 0 ) CON 10 ( 0 ) INT 10 ( 0 ) WIS 10 ( 0 ) CHA 10 ( 0 ) attack roll: BAB 0 Stat 4 die roll 11 attacker hits! damage roll: 1 + STR mod 4 defender receives damage: 5 defender remaining hp: 5 attack roll: BAB 0 Stat 0 die roll 17 attacker hits! damage roll: 4 + STR mod 0 defender receives damage: 4 defender remaining hp: 4
...Että sellaista. Ihan helppoa ja todella human-readable. Pitäisi vain kaivaa paremmat tekstineditointikomennot, ja datastruktuurit saada paremmin selville miten ne toimii.
Netti-highscore juttu alkaa olemaan valmis - luku, tallenus ja näyttö onnistuu. Pitää vain säätää vielä tallennuskriteerejä vähän. Tämä tulee olemaan hyödyllinen, sillä samaa mekanismia voi hyödyntää... ... no, vaikka mihin, kun kerta tein sen CSV-formaatin päälle. Ei nyt väitetä että kyseessä olisi täysin toimiva CSV - implementaatio; Rivinvaihdot jo hajottavat sen.
Mutta, riittää tämän hetken tarpeisiin, voi listata kaikenlaisia juttuja.
Asensin Baldur's Gaten pitkästä aikaa. Paljolti koska Neverwinter Nights ei toipunut 1.69 patch + näyttiksen vaihto Ati 8600sta nvidia 6800:n kombosta. Tietty, Oulussa toimii, ja sinne varmaan katson mitä Q patch antaa sitten.
Mutta siis, Baldur's Gate: Siihenhän piti sitten laittaa juttuja Sorcerer's Placesta. Pitää vaan Dark Side of the Sword Coast jostain kaivaa, eli TeamBG:n megamodi. *kah* löytyi linkki. Widescreen Modia voisi myös testiä. En tosin EasyTutusta kuullutkaan, vaan pelaan ihan perus - dx8 pätsillä. GemRB:tä testasin, mutta minusta se ei oikein hyvin toiminut, vaikka paransikin grafiikoita jonnin verran.
Eli: Töissä olivat varovaisia sen suhteen, miten tehdään committeja svn-trunkkiin. Joten en tehnyt committia mahdollisesti rikkinäisestä koodista. Okei.
No, toimivasta koodista jatkoin tweakkausta ja onnistuin vahingossa poistamaan yhden rivin yhdestä funktiosta mikä rikkoi kaiken. Tietty, meni aikansa ennen kuin virheen sai korjattua, ja siinä sai miettiä, "jos olisi jonkinlainen SCM, niin tämäkin olisi selvinnyt kolmessa sekunnissa diffillä." Git on tietty ihan hieno, mutta työpaikan serverillä sitä ei ole, noin ensinnäkin. Yhtä kaikki, eilen illalla lueskentelin muunmuassa tuon Wikipedian artikkelin linkkejä, ja mietin tätä "Tarballs and patches" juttua.
Tulin siihen tulokseen, että riippumatta siitä, mitkä säännöt muuten on versionhallintaan, haluan itselleni sellaisen oman savegame-mekanismin. Nyt.
svn status hakee listan kaikista versionhallinnasta haetun projektin muutoksista - tarkemmin sanottuna, tiedostonnimet.
grep --regexp [MA] antaa vain ne rivit jotka ovat Modified tai Added CVS:ään. Tähän voi lisätä ?:n, jos haluaa ne mitä ei ole vielä lisätty.
grep -F . karsii pois kansionnimet, sillä muuten TAR pakkaa koko kansion.
sed -e 's/M / /' -e 's/A / /' korvaa rivin alussa olevat "Modified" ja "Added" merkit yhdellä välilyönnillä. tyhjä stringi käy myös.
xargs antaa putkessa tulleen datan syötteenä seuraavalle komennolle.
tar -zcvf /home/esa/backup-$(date +%Y%m%d-%H%M%S).tar.gz tekee syötteessä tulleista tiedostoista time-stampatyn paketin.
Nämä kaikki ovat backup.sh skriptissä tällä hetkellä, joten jos ajan tämän, niin se luo kotihakemistooni tiedoston, jonka nimi on muotoa backup_2008-08-17-175011.tar.gz
Minusta kohtuu kätevää. Nyt, juuresta tar zxOf /home/esa/backup_YYYY-MM-DD-HHMMSS.tar.gz path/to/filename | diff path/to/filename antaa muutokset viimeisimmän "savegamen" ja nykyversion välillä. Kätevää. Luonnollisesti tar zdf /home/esa/backup_YYYY-MM-DD-HHMMSS.tar.gz antaa diffin. Muistaakseni.
Nyt, tein skriptin: 'tar zxOf $1 $2 | diff $2 -' jolloin voin kirjoittaa tyyliin mydiff.sh /home/esa/paketti /path/to/filename, mikä antaa diffin. Ehkä kolmas parametri voi olla hyödyllinen, jos ei jaksa olla projektin juuressa.
Lisäksi, backup-scriptiin kun laittaa tuon "backup" tekstin tilalle $1:n niin saadaan seuraava toiminnallisuus:
./backup.sh jokunimi
tuottaa paketin jonka nimi onkin jokunimi-YYYYMMDD-HHMMSS.tar.gz. kätevää.
Toinen parametri polulle olisi myös mahdollinen, mutta skriptiä on helppo editoida tarpeen mukaan, joten ei ole jaksanut.
Tästä on itseasiassa helpohko jatkaa vähän, ja lopputuloksena on inkrementaalinen versionhallinta, joka käyttää pelkkää tarria. Liekö tuossa pointtia, mutta hauskaa on. Noissa on oikeasti paljon vielä laajennettavaa, mutta kaikkea kivaa voi tehdä - sen sijaan että, esim. vertaa SVN:ää vastaan, voi vaan tehdä tar-paketin kansiosta, sitten aloittaa tar zdf:llä alkuperäistä vastaan...
Tämä oli alunperin viivanpiirtojuttuihin, Tetriksen jälkeen, mutta meni liian vaikeaksi, joten hylkäsin idean. Ihan hyvä sinällään, koodin hitaus on ihan omaa luokkaansa. Sitävastoin
monenlaisia toisenlaisia pelitoteutuksia on DIV-generoinnilla erittäinkin ja oikeinkin mahdollista suorittaa.