Featured Post

Helppo ja nopea kolmionpiirtorutiini.

Vau. Kehitys kehittynyt ja oppi opittu. public static void SolidTriangle(Point a, Point b, Point c, Color color) {             Point[] po...

Showing posts with label skripti. Show all posts
Showing posts with label skripti. Show all posts

Monday, June 20, 2016

Projektinhallinta .bat

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.

Saturday, May 09, 2009

Opettelin Pythonia

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.

Saturday, April 18, 2009

Koodi vääntyy // nostalgiapeliä

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.

Muuta:
Morrowind on minusta yksi hienoimmista peleistä ikuna, joten The Crystal Scrolls kiinnostaa, siinä missä OpenMWkin.

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.

Wednesday, August 20, 2008

Skriptausta, tai 'Tee-se-itse versionhallinta komentoriviskriptillä'


Tämä on minusta kiva video.

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.

Joten, skriptiä:

svn status||grep --regexp [MA]|grep -F .|sed -e 's/M / /' -e 's/A / /'|xargs tar -zcvf /home/esa/backup-$(date +%Y%m%d-%H%M%S).tar.gz


Selitys:

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...

Mielenkiintoista, näin ohjelmoijalle.

Hei, hullu juttu, mutta putpixel diveillä.

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.

Muut ovat minua hullumpia