Sur Ba Programming Challenge
2017.VI.25
Minden a háromszöggel kezdődik
Új vizekre evezünk: vektor grafikát fogunk termelni.
Az SVG (Scalable Vector Graphics) egy internetes szabvány az ilyen grafikák ábrázolására. Több szerkesztő program is létezik hozzá, ezek közül a kedvencem az Inkscape nevű, amivel pl az UpiRajzBlog nagy része is készült.
Az alábbi programban a Python rész minimális, csak egy print erejéig vesz részt a játékban. A többi csak az SVG-ről szól: definiálunk egy 64*64-es méretű logikai rajzfelületet amit 600*600 fizikai képpontra húzunk szét, majd ezen létrehozunk egy zárt alakot három pont koordinátával és azt szépen lezárjuk. Hogy pontosan mit jelent a "d", az "M", a "z" és a többi mágikus dolog itt, arra később visszatérünk majd, egyelőre legyen elég annyi, hogy ezek létrehoznak és lezárnak egy három pontból álló idomot. (Háromszögnek is nevezik.)
#!/usr/bin/python
print """Content-type: image/svg+xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 64 64"
version="1.1"
height="600"
width="600">
<g>
<path d="M 32,2 62,62 2,62 z"
style="fill: none; stroke: #000000;" />
</g>
</svg>
""";
http://apocalypse.rulez.org/~upi/surba/triangle.py [source]
Feladatok
- A háromszög nem szabályos. Legyen szabályos. Azt szeretem, ha a dolgok szabályosak.
- Á nem is, legyen inkább szabályos négyzet.
- A négyzet túlértékelt, legyen szabályos ötszög.
- Bónusz feladat: legyen a sokszög piros színű.
Arithmancy
Ha az Első lépéseken túl vagy, akkor matekozzunk egy kicsit.
#!/usr/bin/python
print "Content-type: text/plain\n\n";
i = 0
while i < 10:
print i * i
i = i + 1
http://apocalypse.rulez.org/~upi/surba/arithmancy.py [source]
Ami itt történik az az első tíz négyzetszám kiírása. Mivel az informatikusok hülyék és nullától számolnak, ezért ez nem az lesz, amire számítanál.
Feladatok
- Írjuk ki a négyzetszámokat 1-től 100-ig!
S- Ezt a http://apocalypse.rulez.org/~surba/fel1.py [source] oldalon meg is tettem elvileg.
- Írjuk ki az első húsz Fibonacci számot!
S- Ezt pedig megleő módon a http://apocalypse.rulez.org/~surba/fel2.py [source] oldalon.Protip: A WinSCP képes arra, hogy a helyi változásokat automatikusan átmásolja a távoli könyvtárba a "Keep Remote Directory up to Date" nevű csodafunkcióval.
S- A Protip jól jött, de az igazi protip az volt amikor kiderült, hogy mi az a 4 space rule meg hogy az identation mit jelent, meg hogy mi az az lf és hogy mennyire nem szoktam normális programokat installálni (ahol nem az a feladat, hogy nézzem a képeket és kávézzak). U.i: Ez nem jelenti azt, hogy automatikusan frissítek is, de a legnagyobb gondom amúgy is az volt, hogy más is látja amikor trial and error alapon piszkálok dolgokat.
Első lépések
Képzeljünk el egy első Python weboldalt, ami imígyen néz ki:
#!/usr/bin/python
print """Content-type: text/plain
Hello, world!"""
http://apocalypse.rulez.org/~upi/surba/hello.py [source]
Mi történt itt? Az első sor arra van, hogy a futtató környezet tudja, hogy ez egy Python program. Utána indul egy print """ ... """ nevű varázslás, a tripla idézőjelek közötti részt a Python egy stringnek tekintí még akkor is, ha neadjisten soremelés lenne benne. A print szépen szolgaian kiírja a paraméterét, vagyis a következő két sort:
Content-type: text/plain Hello, world!
Ez a teljes kimenet. A futtató környezet úgy működik, hogy ami az első üres sor előtt van, az a fejléc, ami utána az pedig maga az oldal. A fejlécben kijelentjük, hogy recece ez egy sima szöveges dokumentum lesz. Mindegy, ezt kell csinálni, oszt csókolom.
Hogyan izzítsuk be ezt a programot magunk?
Feltéve, hogy a SurBa vagy, a következőket kell csinálni:
- Indíts egy Notepad++-t, csinálj egy
hello.py
nevű file-t és másold bele a fenti Python programot.- Fontos: A Notepad++-ban az Edit -> EOL Conversion -> Unix (LF) pontot ki kell választani minden file-nál, különben nem fog a webes környezetben működni.
- Indítsd el a WinSCP nevű programot, lépj be vele az apocalypse-re.
- A "File protocol" SFTP, a "Host name" apocalypse.rulez.org a "Port number" pedig 3712 legyen. (Ebből a 3712 nem értelemszerű, figyeld oda.)
- A jobb oldali panelban menj a
/home/surba/public_html
könyvtárba. - Ide másold át a
hello.py
file-t. - Nyomj egy jobb gombot a felmásolt file-ra, válaszd ki a Properties menüpontot, és ott kattintsd be az összes "X' checkboxot. A többi maradjon ahogy volt. Ha minden jól megy, a "Rights" oszlopban az lesz ezután, hogy
rwxr-xr-x
, ami orkul azt jelenti, hogy a file-t bárki olvashatja és futtathatja, de írni csak a tulajdonos tudja.
- Ez után, ha a fenti összes lépés sikerült, a http://apocalypse.rulez.org/~surba/hello.py [source] címen működésbe lép a program!
Ha mégsem működne valami:
- Lépj be az apocalypse-re PuTTY-tyal. Ugyanúgy a 3712-es portot kell használni és SSH protokollt.
cd public_html
paranccsal lépj be a megfelelő könyvtárba../hello.py
parancs elindítja a programot; így látni fogod, hogy milyen hibát ír ki a rendszer.
Feladat
Működésbe hozni a hello.py
-t a saját könyvtáradban.