View this PageEdit this PageAttachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide

FAQ

Jak spustit externí program a komunikovat s ním přes stdin/stdout?

Použijte OSProcess (pozor, toto je navod z roku 2004, teď jsou v OSProcess možná nějaké změny ...).
Vyhodnoťte ve workspace například tyto výrazy a sledujte, co se děje:

"Vytvoreni externiho procesu"
p := PipeableOSProcess command: 'cat'.

"Cteni ze stdout/stderr"
p next. "precte 1 znak nebo nil"
p upToEnd. "precte vsechno co tam je"
p errorUpToEnd. "precte vse ze stderr"

"Zapis do stdin"
p nextPutAll: 'asdf'.
p flush. "pro jistotu vyprazdnime buffer do stdin"

"Ukonceni procesu"
p processProxy terminate.
p closePipes.

Blokující čtení (nezkoušejte ve workspace, použijte separátní proces) se nastaví pomocí p pipeFromOutput setBlocking. Netestováno!
Použijete-li neblokující čtení ve smyčce, vložte do ní aDelay wait. Paralelní přístup ke kolekci, do které zapisujete, je nutné ošetřit semaforem (pokud už není takto ošetřena sama).

Jak udělat jednoduché GUI s tlačítky, menu, textovým editorem?

Umístit to (kromě menu) pomocí #addMorph: do aSystemWindow a to pak otevřít ve World nebo to přímo všechno otevírat ve World.
To vše v instanční metodě #openInWorld (v instanční metodě, aby šlo případně morphy snadno umístit do instanšních proměnných). Otevřené morphy lze skrývat a znovu zviditelňovat pomocí #hide a #show.

Demo: http://minnow.cc.gatech.edu/squeak/2962

Jak zařídit, aby moje aplikace reagovala na změnu velikosti hlavního okna Squeaku?

Viz http://www.comtalk.net/Squeak/59.

Lze použít nativní widgety?

Není squeakovsky čisté (nedoporučuji pro projekty), ale existuje několik možností (vesměs alfa-verze, vyžaduje to pluginy do VM):

Jak na Morphic?



Jak udělat webovou aplikaci?

Viz Tvorba webových aplikací

Jak se programují síťové aplikace?

DOPLNIT!!!
Inspirace: http://minnow.cc.gatech.edu/squeak/1406#Networking

Jak vytvořit "konvenčně vyhlížející" aplikaci?

Smalltalk je operační systém se svým jazykem, knihovnami, vývojovými nástroji a aplikacemi. Takzvaná konvenční aplikace se vytvoří tak, že uzamkneme image ve stavu, kdy na celé ploše Smalltalku jsou pouze grafické prvky kýžené aplikace, takže celý Smalltalk vypadá jako jedna aplikace. Uzamčením docílíme toho, že vývojové nástroje ani jiné aplikace nebudou dostupné, aktivní zůstane jen vybraná aplikace. Ta musí samozřejmě být vytvořena tak, aby jako své hlavní okno používala celé okno Smalltalku (World ve Squeaku).
Tím jsme docílili kýženého výsledku z hlediska funkčnosti. Je-li třeba šetřit místem, je vhodné před uzamčením z image odstranit pokud možno vše přebytečné. Ručně lze snadno odstranit veškeré zbytečné odinstalovatelné balíky, nepotřebné projeky, dokonce i vymazat zbytečné třídy. Ze zbylých tříd je pak vhodné odstranit zbytečné metody. To už je obtížnější a nelze to dělat ručně - musí se vytvořit skript, který to inteligentně provede.
Ovšem pragmatici téměž nikdy tento stripping neprovádějí, protože 15MB image je srovnatelný s výsledky vytvořenými v jiných jazycích (typicky Java).

Podrobněji a konkrétněji viz Uzamčení image.

Jak ukládat data, jak vytvářet databáze?


Viz perzistence (http://minnow.cc.gatech.edu/squeak/512)

Jak odevzadat projekt? Jak použít makefile?

Makefile ne. Odevzdá se zdrojový text (.st nebo .cs nebo .mcz) a README, kde bude návod k instalaci (co udělat ve workspace, aby to jelo, případně aby se automaticky vytvořila uzamčená aplikace - typicky by to měl být jednoduchý výraz typu MojeAplikace new openAsMorph, připadně MojeAplikace lockDownAndStart). Mělo by to fungovat ve školní instalaci Squeaku. (Jsou povoleny individuální vyjímky - S#, GNU Smalltalk)

Podrobněji: Jak odevzdat projekt

Link to this Page