Apple - iPhone

  • Keskustelun aloittaja Keskustelun aloittaja Soppis
  • Aloitettu Aloitettu
Ei jeesuspuhelimelle mitään koteloita laiteta. Se on hieno ilman ja sehän ei naarmuunnu näytöstään millään.
Älä valehtele. Otettiin tossa koulun päättymisen kunniaksi Suomi-Turkki maaottelu nurmella ja luurin pleksi otti 10 minuutissa osumaa enemmän kuin kukaan meistä. ;-))
 
10% ALENNUS KOODILLA PAKKOTOISTO
Skulaa skulaa, mutta eikö sulla oo ainuttakaan vekkiä siinä pleksissä? Noksu olis mullakin palasina jo, hyvinhän toi mötikkä kestää mutta ihmeen helposti sai ruutuun rönää.
Muuten ei oo mitään jälkiä.
 
Hehee, kirjoitellaan tässä jeesuspuhelimen 3G verkolla.. Aika perkeleen nopee puhelimen netiks.. Toivottavasti en maksa siitä ihan vitusti, että saan lähettää yhen postin pakkikselle. Offtopik: ajattelin kokeilla siinä samassa, kun kattelin aamun aikataulua ytv;n sivuilta.. Yllättävän tyytyväinen voi olla johonki puhelimen nettiin. Toi navikaattori oli sunnuntaina kans yllätys, kirjottelin kukkakaupan hakuun ja sain riparilaiselle kukkasen;)
 
Noinhan mikä tahansa käyttöjärjestelmä toimii. Ainoa, että tuossa tapauksessa vedetään esimerkiksi taustalla olevan ohjelman prioriteetti nollaan.

Mun käsittääkseni iPhone toimii tylymmin, eli ohjelma ei jää kerneliin edes nollaprioriteeillä, vaan se heitetään ihan oikeasti veks sieltä. Ohjelman jäädyttäminen ja sulattaminen vaan onnistuu automaattisesti, ilman että käyttäjän (tai ohjelmoijan) tarvitsee tehdä asialle yhtään mitään. Mutta joku korjatkoon jos olen hakoteillä tässä, iFöönin ihmeet on mulla vielä vähän hakusessa kun olen enemmänkin noiden Mäkkien kanssa nysvännyt.
 
Se käyttää Cocoa-frameworkin tarjoamaa mahdollisuutta "jäädyttää" ohjelmaobjektit. Mitään ei siis suljeta tai lopeteta, vaan ohjelmalta yksinkertaisesti kielletään resurssien syöminen siksi aikaa kun se ei ole etualalla, ja se kaivetaan Cocoa-pakastimesta sellaisenaan sitten kun käyttäjä ottaa sen taas käyttöön.

Itseasiassa ei. Kyllä se app nimenomaan sammutetaan kun tulee puhelu tai painetaan home-nappia.
Tosin se jatkaa siitä kohdasta missä oltiin jos noudatetaan iPhone UI Design Guidelinejä mutta ei mitenkään automaattisesti. Eli ohjelman pitää olla kokoajan varautunut quit-messageen ja tallettaa datansa mahdollisimman aikaisin sekä sammutettaessa tallettaa defaultsiin oma tilansa (näkymä, jne) jotta se osaa jatkaa siitä missä oltiin (ei muuten mutta sattuneesta syystä on juuri nyt työn alla tuon opettelu ;) )

Syksyllä tulee se Notification center joka mahdollistaa esim. pikaviestimien tekemisen. Tällöin palvelimelta saapuva paketti voi herättää ohjelman.

Tässä muuten katsomisen arvoinen video:
User Interface Design for iPhone Applications
(iPhone Getting Started Videos, vaatii iPhone Dev-tunnarin)

n. kohdasta 8min alkaen kannattaa kuunnella erittäin tarkkaan ja jos on yhtään ohjelmistokehitystä tehnyt niin valkenee moni asia miksi iPhone ohjelmineen on sellainen kuin se nyt on. Kyseessä on siis eräs Applen iPhone Developers Guiden videoista, erityisesti käyttöliittymän suunnitteluun kohdistuva. Muutamia poimintoja:

-design solutions not features (selkeä fokus mitä ohjelma tekee)
-select appropriate features (vain ne ominaisuudet mitä liikeessä oleva mobiilikäyttäjä tarvitsee)
-design for Ease of use (helppokäyttöisyys päällimmäisenä)
-design one click away features (kaikki toiminnot lähellä)

Jotenkin nuo näyttävät edustavan täysin päinvastaista linjaa kuin mitä se suomalainen puhelinvalmistaja tuntuu käyttävän. Tehdään pitkä lista toinen toistaan turhempia featureja joiden käytettävyys on nollassa.
 
Itseasiassa ei. Kyllä se app nimenomaan sammutetaan kun tulee puhelu tai painetaan home-nappia.
Tosin se jatkaa siitä kohdasta missä oltiin jos noudatetaan iPhone UI Design Guidelinejä mutta ei mitenkään automaattisesti.

Ok, seison korjattuna. Olen vaan jostain lukenut jotain höpinää noista Cocoa-jäädytyksistä, ja lisäksi kun kaikki toimii iLuurissa niin käsittämättömän nopeasti, olen olettanut että eihän se voi olla noin.

Syksyllä tulee se Notification center joka mahdollistaa esim. pikaviestimien tekemisen. Tällöin palvelimelta saapuva paketti voi herättää ohjelman.

Ja toimiikos tuo siis samalla tavalla kuin työpöytä-Cocoassa oleva NSNotificationCenter -luokka? Siellähän tuo luokka on ollut kai jo NextStep-ajoilta lähtien, mutta siihen ei ole vain kiinnittänyt suurta huomiota, koska oikeissa tietokoneissa akkuvirran tai näyttötilan pihtaaminen ei ole samalla tavalla tärkeätä kuin mobiililaitteissa.

Itse lähdin taas ajattelemaan asioita liian monimutkaisesti ja kuvittelin, että tuo hoidetaan suunnilleen jonkun Unix-tason launchd-deamonin avulla tai muuta vastaavaa.

Tekis kyllä mieli tutustua iFöönin sielunelämään tarkemminkin, kunhan vain aika riittäisi.

Jotenkin nuo näyttävät edustavan täysin päinvastaista linjaa kuin mitä se suomalainen puhelinvalmistaja tuntuu käyttävän. Tehdään pitkä lista toinen toistaan turhempia featureja joiden käytettävyys on nollassa.

Tämä tuskin on mikään uutinen kenellekään. :)
 
Ok, seison korjattuna. Olen vaan jostain lukenut jotain höpinää noista Cocoa-jäädytyksistä, ja lisäksi kun kaikki toimii iLuurissa niin käsittämättömän nopeasti, olen olettanut että eihän se voi olla noin.

Ohjelman käynnistymisen nopeus ja palautuminen siihen missä oltiin on näennäistä. Siinä on ovela hämäyskikka käytössä joka kylläkin toimii (hämää) hienosti. Jokaisella ohjelmalla on default.png (kuten Dashboardin widgeteillä). Kun ohjelma sammutetaan se voi päivittää oman default.png:sä eli tallentaa nykyisen näkymänsä siihen. Seuraavaksi kun käynnistät saman ohjelman, lataa käyttis sekunnin osissa ko. kuvan ja heittää sen ruudulle. Voila! Luulet että ohjelma on jo käynnissä siinä mihin jäit ja parin sekunnin hämmenyksen aikana itse koodi ja resurssit ladataan. Ovelaa mutta toimii.

Tosin eipä ne iPhonen ohjelmat muutenkaan mitenkään hitaasti käynnisty. Eroa desktop-Cocoaan on siinä että resurssit pyritään jakamaan useisiin eri nibbeihin jotta vain ne viewit on muistissa mitä tarvitaan. Eli startissa ladataan vain main nib ja sitä mukaa kun mennään eri näkymiin haetaan uusia tarpeen mukaan (muistin optimointia). Lisäksi on suositeltavaa implementoida delegaateista ainakin didReceiveLowMemoryWarning jolloin pyritään vapauttamaan kaikki mitä ei tarvita. Nimittäin jos muisti loppuu niin käyttis ei voi tehdä muutakuin bootata - ja nimenomaan sen se tekee. Huonosti koodattu softa (leakki) siis johtaa laitteen satunnaiseen reboottiin.
Ja koska iPhonessa et voi mitenkään killata taskeja on käytössä Watchdog (20 sek). Jos ohjelman ei vastaa käyttiksen viesteihin 20 sekuntiin tulee noutaja. Tuo tarkoittaa mm. sitä ettei ohjelman käynnistyminen saa koskaan ylittää 20 sekuntia.

Ja toimiikos tuo siis samalla tavalla kuin työpöytä-Cocoassa oleva NSNotificationCenter -luokka?
En ole vielä ehtinyt perehtyä sen tarkemmin.

Tekis kyllä mieli tutustua iFöönin sielunelämään tarkemminkin, kunhan vain aika riittäisi.

Rekisteröidy developeriksi (ei tarvi vielä tuossa vaiheessa maksaa mitään) ja käy katsomassa tusina developer-videoita alkuun. Niissä on erittäin hyvin selitetty taustat ja alusta. Jos cocoa on tuttu niin aika peruskauraa tuo on kun sisäistää mobiilisovelluksen eron desktoppiin.
 
Ja koska iPhonessa et voi mitenkään killata taskeja on käytössä Watchdog (20 sek). Jos ohjelman ei vastaa käyttiksen viesteihin 20 sekuntiin tulee noutaja. Tuo tarkoittaa mm. sitä ettei ohjelman käynnistyminen saa koskaan ylittää 20 sekuntia
Eikö se ohjelma käynnistyessään voi sitten samalla pollata noita käyttiksen viestejä?
 
Eikö se ohjelma käynnistyessään voi sitten samalla pollata noita käyttiksen viestejä?
Jos käynnistyminen kestää yli 20 sekuntia niin ohjelma on yksinkertaisesti väärin tehty ja saakin kuolla. Applen guidelineissä käsitellään aihetta erittäin järkevältä lähestymissuunnalta. Mobiilikäyttäjä on liikkeessä, vilkaisee puhelinta useasti mutta vain hetken kerrallaan. Toisin kun desktop-käyttäjä jossa samaa sovellusta käytetään tuntitolkulla. Eli ohjelmien pitää olla pieniä, tehokkaita ja tehdä sen mikä on tarkoitus ilman valikkorumbaa ja kikkailuja.

Käynnistyminen pitää siis olla nopeaa - korkeintaan muutama sekunti. Ohjelman resurssit pilkotaan useampaan pienempään tiedostoon joita ladataan ja vapautetaan tarpeen mukaan latausaikojen ja muistinkäytön optimoimiseksi.

Mutta takaisin alkuperäiseen kysymykseen. iPhonessa kuten OSX:ssä ei "pollata" viestejä winkkarin tapaan vaan asiat toimivat aina asynkroonisesti. Älä kysele - me soitamme kun on asiaa. Tämä pätee kautta linjan nettisivun latauksesta muihinkin käyttiksen palveluihin. Aloitetaan toiminto, kerrotaan että "soita tähän numeroon" (delegaattimetodi) kun homma on valmis tai jotain progressia tapahtuu ja sinä aikana vain odotellaan viemättä prossuaikaa (akkua).

Jos taas kyseessä on jokin aikaa vievä operaatio johon käyttis ei tarjoa palvelua niin käytetään tietenkin threadeja tai pikemminkin NSOperation-luokkaa jonka avulla moniajo on äärimmäisen helppoa. Kyllä - iPhonessa on ihan normaali moniajo säikeineen kuten OSX:ssä.
 
Ei jeesuspuhelimelle mitään koteloita laiteta. Se on hieno ilman ja sehän ei naarmuunnu näytöstään millään.

Totta toisaalta. Jeesusluuri on niin hieno, että sääli sitä piilotella suojissa/koteloissa. Mutta ei kyllä haluaisi sen olevan heti ruhjeillakaan...
 
Mobiilikäyttäjä on liikkeessä, vilkaisee puhelinta useasti mutta vain hetken kerrallaan. Toisin kun desktop-käyttäjä jossa samaa sovellusta käytetään tuntitolkulla. Eli ohjelmien pitää olla pieniä, tehokkaita ja tehdä sen mikä on tarkoitus ilman valikkorumbaa ja kikkailuja.
No enköhän tiedä mobiiliohjelmistojen kehityksestä ihan tarpeeksi ilman tätäkin infopläjäystä. ;)

Se mitä tarkoitin sanoa oli, että käytännössä, jos joku haluaa tehdä ohjelman, jonka "käynnistäminen" kestää yli 20 sekuntia, niin se onnistuu varmasti myös iPhonelle.
 
Apache, tuo HTTP-servereistä mahtavin on portattu iPhonelle.

http://www.idude.org/2007/11/07/an-iphone-powered-apache-web-server-with-php/

En tosin ymmärrä miksi kukaan haluaisi ajaa webbiserveriä luurissa. Ei sille vaan voi löytyä mitään järkeviä perusteluita.
No S60:lle on portattu koko PAMP. Eipä tuosta Apachesta iPhonessa ole mitään iloa kun sitä ei voi laittaa taustalle pyörimään.

Tässä featurelistaa, mitä tuolla serverillä voi nykyään tehdä S60:ssä - ei tuo ihan hyödytön ole kun puhelimen dataa voi käpistellä mistä tahansa Internetiin kytketystä tietokoneesta. Eniten tulee käytettyä noita SMSiä.
Guest and friend user accounts
Calendar - manage your calendar, and share your availability for others too
Messaging - SMS inbox/outbox and SMS sending
Phone log - view missed calls
Contacts - manage your contacts easily
Blog - tell stories on your journeys
Camera - share instant pictures
Gallery - browse pictures taken with camera phone, and share them to others
Guestbook - visitors can leave their comments
Contact me - visitors can send instant messages to you
Presence - share your status and device state
Web chat - communicate with friends
Start and stop your mobile site from the web (NEW)
Luultavasti samasta syystä iPhonelle ei koskaan tule vastaavaa, kun iTunes lienee tulevaisuudessakin ainoa tapa päästä tietokoneesta luuriin käsiksi.
 
No en kyllä edelleenkään ymmärrä miksi kukaan haluaisi ajaa webbiserveriä puhelimessa kun melkein kaikki nuo voi tehdä vuokraamalla asiaan kuuluvalta firmalta webhotellin jollakin parillakympillä vuodessa, systeemit pelittää kunnon raudalla/yhteyksillä ja toimii vaikka luuri olisi kiinni taikka merenpohjassa.

Paitsi tietty tekstareiden ja puhelutietojen vakoilemiset mutta kyllä mä ne mielummin katson/naputan suoraan luurilla kuin tietokoneella. :rolleyes:

Asensin muuten tuon Apachen iPodiin, hyvin pyörii taustalla samaan aikaan kun katsoo videota tai pelailee emulaattorilla. En tiedä miten, mutta toimii silti. Sivut latautuu ja silleen. Ei tuossa edes ole mitään frontendiä, palvelu vaan pyörii taustalla jossain. Samoin OpenSSH toimii taustalla vaikka tekisi mitä muuta samaan aikaan kun räplää iPodia koneelta SSH:n kautta / siirtää tiedostoja. Eli ovatko innokkaat homebrew-kehittäjät onnistuneet ohittamaan tuon moniajoeston vai mikä on kyseessä?
 
No enköhän tiedä mobiiliohjelmistojen kehityksestä ihan tarpeeksi ilman tätäkin infopläjäystä. ;)
Nooh, ei ole tullut puheeksi kuka täällä mitäkin on tehnyt :)
Javaa, WM:ää vai Avkonin kanssa painimista?

Se mitä tarkoitin sanoa oli, että käytännössä, jos joku haluaa tehdä ohjelman, jonka "käynnistäminen" kestää yli 20 sekuntia, niin se onnistuu varmasti myös iPhonelle.
Toki. Kaikkeen löytyy kiertotie. Myös siihen "moniajon" puutteeseen. Tosin appstoren kautta ei niitä ohelmia voi levittää.
 

Latest posts

Suositut

Back
Ylös Bottom