na jó valójában Proscenium.

gondolom molehill kapcsán sokan huzták a szájukat adobenak hogy szépszép de miafaszvan?
szóval ha nehéz ez életed mert hülye vagy AGAL-hoz akkor a válasz az említett Proscenium névre hallgató project.

labson erre
némi tutorial meg erre

update : akármenyire is szeressük alternativát, most nem alternativa a fizika hiánya miatt, ami itt viszont egész tiszteséges. bár ahogy írták az alternatívások, ez lesz a köv lépés :

We are currently integrating a physics simulation system into Alternativa3D.

null

szóval mondjuk hogy olyan szerencsétlen ivadék vagy aki programozáshoz még mindig magyar billentyűzetet használ mint én. egy szép nyári alkonyon leupdateled kedvenc as editorodat és bizony megörülsz amikorsz egy tömböt akarsz nyitni mert ahelyett hogy megjelenne az áhított [ karakter, szépen felcsukja a zárható kód blokkokat.

na fogod magad és átírod a c:\Program Files (x86)\FlashDevelop\Settings\MainMenu.xml -t
kikommentezed a view menüben található fold specifikus sorokat, vagy átírod azok hotkeyet a shortcut nevű attribban.

és a nap újra süt, mindenki boldog.

szükségem volt egy jó kis tray appra ami jelzi ha jön új levelem.
csak ép nem bízom meg egyikben sem, lévén nem tudom nem e nyúlja le az accom.
jó, akkor írok akkor egyet magamnak…

kell olyan akkor hogy felmegyünk socketen és megkérdezzük a mail servert hány mailem van. illettve egész pontosan engem csak az olvasatlan levelek érdekelnek. nu a pop3 nem tud ilyet hogy ‘add vissza az olvasatlan leveleim számát‘, ehhez imap kell. azaz port 143, nézzük meg akkor a protokolt. itt találtam is egy kis leírást mivel lusta voltam rfc-t bujni.

ok érzem az erőt nézzük meg azt a socket mit csináljon :

socket = new Socket()
socket.addEventListener(Event.CONNECT, onSocketConnect)
socket.addEventListener(Event.CLOSE, onSocketClose)
socket.addEventListener(ProgressEvent.SOCKET_DATA, onSocketData)

itt az onSocketDataban kapjuk meg azt ami a szervertől jön :

private function onSocketData(e:ProgressEvent):void
{
var line:String = socket.readUTFBytes(e.bytesLoaded)
// ... etc

ill kell tudnunk küldeni adatot a socketen ez most valahogy így néz ki :

public function send(line:String):void
{
if (socket.connected)
{
trace('>> '+line)
socket.writeUTFBytes(line+'\r\n')
socket.flush()
}
}

jó ok akkor ha ez megvan nézzük magát a csevejt connect után:
jön egy ilyen kapcsolodás után hogy * OK Gimap ready for requests from ...
szóval blabla bla, ha ő mondja biztos, mutatkozzunk be :
send('a01 login ' + userName + ' '+password)
erre jön hogy
* CAPABILITY IMAP4rev1 blablabla de a lényeg a végén hogy a01 OK [usernév] authenticated (Success)
szuper tehát bent vagyunk kérdezzük meg van e új levél :
$ STATUS INBOX (unseen)
mire valszeg megjön hogy
* STATUS "INBOX" (UNSEEN 3)
és itt az UNSEEN meletti szám jelenti az olvasatlan levelek számát. ezután logout, kalap kabát majd jövünk később.
ok ez megvan kis air appunk nagy bőszen kiírja tray mellé iconban az olvasatlan levelek számát, csak hogy ezt én pont úgy nem veszem észre mint a csipogó telcsit se ami nagybőszen jelzi szintén ha event van. szóval nekem az kell hogy ilyenkor nyissa meg a céges levelezést ami esetünkben egy urlen érhető el. viszont azt se akarom hogy minden loop után új ablak nyiljon, tehát detektálnom kell hogy fut e mondjuk chrome nyitott mailboxxal és ha nem akkor nyissa meg. ehhez jól jön az air2-es nativeProcess, hiszen indítok egy chromeot, figyelem fut e, és ha nem akkor elindítom. kb így :

processInfo = new NativeProcessStartupInfo();
processInfo.executable = file; // a chrome file refije
var args:Vector. = new Vector.;
args.push("a webmail urlje");
processInfo.arguments = args
process = new NativeProcess();

ezután amikor kell, megnézem nyitva van, else megnyitom :
if (!process.running) process.start(processInfo)

nah ezt futtatom és mükszik. írja trayen hány új levél van, ha jön új megnyitja a levelezést automatikusan zsír. nekem most pont ez kell. kezdem deployolni és jön a szívás.

mert ugye az application.xmlbe a supportedProfilesba beleírtam hogy extendedDesktop hogy a nativeprocess-t használni tudjam, de erre packagekor a következő hibát kapom : error 306: Descriptor must support the profile desktop, mobileDevice, or extendedMobileDevice
ami hát izé tök jó, szóval berámoltam a tagbe a desktopot is : extendedDesktop desktop
nah így már megvan az air app fut is szépen csak éppen nem nyit meg semmit. móka és kacagás indul wtf van már megint. nézzük meg dob e valami errort. kis global error reporting :
loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, handleGlobalErrors);
és

private function handleGlobalErrors(e:UncaughtErrorEvent):void
{
log(NativeProcess.isSupported+' :::: '+e.error +' '+e.text)
e.preventDefault();
}

és ez bizony azt mondja hogy ERROR #3219. oké google mit mond…
bizony írja doksi is hogy ide nativ installeres air app kell.

ezért fogjuk és adl-el exe-t csinálunk az air csomagunkból :
call adt -package -target native air/imap.exe air/imap.air
ezt én beraktam a PackageApplication.bat -ba azt jólvan.
exeből felrak. így már NativeProcess.isSupported -truet add vissza, béke és boldogság. mission accomplished.

kérdés : nu írjak ilyen tutorial röffeneteket a jövőben vagy sem ?

erről a tanszékről került ki John Warnock (az Adobe alapítója és a Warnock algoritmus feltalálója), Henri Gouraud (a népszerű, poligon felületeknél alkalmazott Gouraud-shading kidolgozója), Bui-Tuong Phong (a Phong modell és a Phong shading kidolgozója), Ed Catmull (Pixar alapító, rengeteg dolgot kitalált képfeldolgozás és grafikai területeken), Jim Clark (SGI alapító, Netscape alapító, Catmullal együtt dolgozták ki a népszerű subdivision sémát) és Jim Blinn (többek között a bump mapping és az environment mapping kidolgozója) stb.

olvasnivaló erre

szóval az RGBt az óra/24 – perc/60 – másodperc/60 -ból állítod elő.
így minden egyes pillanatnak más színe lesz.

lehet állásinterjún teszt a designer palántának, hogy
‘haversrác menyit mutat ez az óra 😀

persze ha nincsenek szadista hajlamaid, akkor egy sima random color pickernek jó lesz.