Aug
01
2016
0

Phonegap introduktion – undvikt två ”pitfalls”

Hej,

Jag håller på med en tvärfunktionell plattforms app – cross functional application för mobiltelefoner. Min applikation ska vara ett nytt sätt att ta tid i motionslopp, se enkel tidtagning för motionslopp – sporTimes.

För att göra detta började jag först med utveckling till iPhone. Jag upptäckte rätt snart att det är ganska grånligt och som programmerare måste man tänka på mycket detaljer nära operativsystemet. En alternativ metod är att använda PhoneGap / Cordova. Phonegap tillhandahåller en abstraktionsnivå från Android, iOS och Windows. Utvecklingen görs i HTML och Javascript. Detta byggs sedan av PhoneGap in i den ”native”-miljö som finns för respektive telefons operativsystem.

Vill dela med mig av två problem som jag trillat in i och löst.

Behöver jag en Mac för att utveckla PhoneGap för iPhone? Funkar Windows PC för Phonegap iOS?

Svaret är att det går att utveckla Phonegap för iOS utan en Mac, men det är inte användarvändligt att utveckla för iPhone utan en Mac!!! Varför? Jag lärde mig precis detaljerna av detta inlägg. Kortfattat:

  • Det går inte att bygga kod för iPhone PhoneGap i din Windowsmiljö!
  • Du kan utnyttja phonegap build (phonegaps servermiljö på nätet för att bygga). För att göra detta behöver du dock en Mac och en utvecklingsliscens for Apple.

I praktiken betyder detta att du behöver låna en Mac av en kompis samt att du behöver zippa din kod och gå via en websida vraje gång du ska testa din app.

Jag har en Mac i mitt hemkontor och tänkte fortsätta min utveckling via en Windows-PC på stranden i Grekland. Efter en dag med felmeddelandet phonegap unable to download archive from server förstod jag att det inte går att:

Det går inte att bygga en iOS phonegap app via PhoneGap Desktop på en Windows PC. 

Kan jag köra iOS PhoneGap för att komma åt en enhet med bluetooth?

Ja, detta går jättebra! Men det är bara vissa plugin som fungerar med PhoneGap developer app (emulatorn som används för att simulera). Följande plugin fungerar med emulatorn:

  • <plugin name=cordova-plugin-ble-central spec=~1.0.6 />

Alla andra BLE plugin fungerar inte med Emulatorn!!!

För att se vilka plugin som fungerar med emulatorn, se denna lista. Eller här!

 

Jan
05
2015
2

Meter / beat – Meter per pulsslag – idrottsmannens bränsleförbrukning!

Det är lite roligare att vara ute och träna, men när kroppen är sjuk får hjärnan jobba. Ibland är det otroligt roligt att få tänka och skapa saker! Jag har gjort en DataField-app som heter Meter / beat eller Meter per pulsslag på svenska. I denna post tänkte jag visa vad Meter / beat appen gör. För mer information om att göra appar till Garmin produkter (t.ex. 920XT) se min artikel om Garmin Connect IQ.

Bakgrund

Effekt är ett mått på hur stark en motor är, enligt definitionen energi / tidsenhet (enhet [Joule / sekund = Watt = W]). Det går att mäta effekt på en bilmotor med hästkrafter. Det går också att mäta effekt av en idrottsman, men det är inte lika enkelt. På cykeln finns effektmätare (som mäter Effekt = kraft * sträcka / tid). Att mäta kraft är relativt svårt och effektmätare för cyklar är fortfarande dyra.

För simning, löpning och andra sporter är det heller inte lika enkelt att mäta idrottsmannens effekt (eftersom den inte går ner i en roterande axel på en maskin).

Andra intressanta mått för hur effektivitet / prestanda i en motor är bränsleförbrukning (liter per kilometer). En snål motor är vid samma hastighet (arbete) effektivare (bättre) än en slösande motor. Men vad är motsvarande mått för en idrottsman?

Syfte med att mäta meter per pulsslag

När jag skulle göra min första app letade jag efter ett mått som vara enklare att ta fram än effekt (power [W]). Jag tänkte då på relationen mellan hastighet och puls, vilket enligt mig är lösningen. Givet att inga störningar inträffar (vind, temperatur, olika banprofil, osv) är hastighet vid en given puls ett mått som beskriver hur effektiv en idrottsmans motor är! Pulsen mäts oftast i pulsslag per tidsenhet [bpm, beats per minute]. 60bpm är vilopuls och 180bpm min maxpuls. Hastighet definieras som sträcka per tidsenhet. => sträcka per tid / pulsslag per tid = meter per pulsslag.

Meter per pulsslag är idrottsmannens motsvarighet till bränsleförbrukning.

Är det bra?

Hjälp mig gärna med detta i en kommentar!

Fördelar

  • Meter per pulsslag kan användas där det finns GPS och pulsmätare (t.ex. sporterna simning, löpning, cykling eller vandring)
  • Går att jämföra prestation och utveckling inom en sport
  • Går att jämföra relativ prestation / prestationsutveckling mellan olika sporter
  • Billigare än power / puls

Nackdelar (?)

  • Hastighet och puls påverkas av väder och vind

Implementation i Garmin Connect IQ

Meter / beat – Meter per pulsslag finns snart som app i Garmins app-store. Jag har gjort ett DataField som kan användas till detta.

Men det är dyrt med effektmätare på cykeln. Det är också väldigt svårt att mäta effekt när man löper / simmar / …
”speed/heart rate” = ”distance / heart beat” är ett mått som liksom en bils motor visar effektivitet.
Naturligtvis beror hastigheten också på lutning, vind, form, typ av pass, … men givet att störningarna tar ut sig över tiden bör en förbättring ske i detta mätetal vid samma typ av aktivitet. Mätetalet kan vara minst lika nyttigt (och dessutom mer lättillgängligt än effekt/watt).

meter / beat

Exempel från en promenad vid Vallby-friluftsmuseum. meter / beat = 0.9 i snitt. Vid en puls på 80 slag per minut kommer jag alltså i snitt 1,2 meter / sekund.

Jan
05
2015
1

Garmin 920XT

Jag har precis fått en ny julklapp; Garmin 920XT. En fin klocka för Triathlon och all typ av träning (det senaste som fanns 2014-12-24). Några nya funktioner som klockan har är:

  • Accelerometer
  • Wifi/Bluetooth syncstöd
  • Fungerar för simning inomhus och utomhus
  • Mäter sömn och vad man gör under dygnet
  • Första Garmin-produkt med stöd för Appar*

* Garmin IQ Connect Store planeras under Januari 2015. Redan nu går det att utveckla appar med IQ Connect SDK.

Företaget Garmin är för mig symbolen för GPS-produkter. Jag köpte min första GPS-klocka 2007 (Garmin Forerunner 305). Klockan fungerar än idag och har varit fantastiskt användbar. Jag har fram till 2014-03-01 inte behövt fler funktioner. Det var vid detta datum jag började med Triathlon och insåg att det vore roligt att kunna följa träningsprogress även i vatten.

Appar har funnits hos konkurrenten Suunto i två år och Apple’s iPhone har byggt sin affärsmodell på detta. Garmin har nog insett möjligheterna som plockas fram om gratis arbetskraft börjar jobba med att förbättra användarupplevelsen i deras plattform av produkter. Jag tror inte man har råd att låta Suunto springa före…


Jul
27
2010
0

Hitta ett optimalt polygon som omsluter slumpmässiga komplexa punkter – Konvext hölje

Inledning

I sommar jobbar jag på en teknikavdelning i Västerås. Jag har jobbat på samma företag och på ungefär samma kontor under tre raka somrar. Arbetet är väldigt tekniskt, roligt och utmanande. Till skillnad från många andra sommarjobb på kontor har jag hittat ett där jag får ansvar och får jobba med vanliga arbetsuppgifter. Konkret så jobbar jag med att utveckla verktyg för att förenkla beräkningsarbete med hjälp av till största delen MatLab, GUI-programmering och Java. Den nya objektorienterade stilen i MatLab gör koden betydligt mer tydlig än för några år sedan.

Problemet

Här om dagen ställdes jag inför en liten utmaning. Förenklat gick det ut på att hitta ett polygon som omsluter en samling med komplexa punkter som ligger spridda i planet. Till en början hittade jag inte funktionen som gör detta i MatLab, vilket förstås var konstigt. Jag bestämde mig därför för att hitta en egen algoritm. I detta inlägg skall jag beskriva min algoritm.

Konvext hölje

Figur 1. Exempel på konvext hölje.

Min Alogritm

Jag ska beskriva min algoritm med hjälp av figur 2. Till att börja med skall jag förklara svårigheten med att hitta höljet. Grejen är att alla punkter ligger osorterade i en struktur. Om punkterna sorteras kring en centrumpunkt kan man använda deras ordning och avståndet från centrum för att lösa problemet. Det tar dock minst O(n log(n)) att göra en linjär sortering. Min algoritm jobbar på den osorterade listan och tar säkert ännu mer tid; jag har inte härlett något bevis.

Tanken är i alla fall att börja med min punkten i x-led och därefter hitta den punkt till vilken k värdet blir maximalt. dvs räkna ut:

max(k_i) = (y_min – y_i)/(x_min – x_i) för i = [alla punkter]. Detta ger dig punkten p_2.

Alla punkter med mindre y-värde än X_min kan uteslutas. Alla punkter med mindre x-värde än p_2 kan också uteslutas för vidare genomläsning.

k_2 hittas sedan genom att hitta den punkt som minimerar:

k_1 – (y_1 – y_i)/(x_1 – x_i) för i = [alla icke uteslutna punkter]

På samma sätt hittas k_a generellt genom:

min(k_a-1 – (y_a-1 – y_i)/(x_a-1 – x_i)) för i = [alla icke uteslutna punkter]

Uträkningen görs för övre halvan av polygonen tills man kommer till punkten som är maximal i x-led. Därefter görs samma algoritm för den undre halvan av polygonen.

Algoritm för konvext hölje

Figur 2. Algoritm för konvext hölje.

Prestanda

Prestandan av algoritmen beror på hur många punkter som hamnar i polygonet. Jag gör lika många linjärsök i listan som det blir punkter i polygonet. Det innebär att komplexiteten är O(N*antalet sök). Antalet punkter i det optimala polygonet blir mellan 10 och 25 beroende på dina slumppunkter. Algoritmen är alltså relativt snabb.

Kod

Koden är inte publik.

MatLabs lösning – convex hull

Min algoritm gör samma sak som MatLabs funktion convhull. Convex hull är alltså det Engelska ordet för en omslutande polygon eller ett konvext hölje. En annan bra resurs är http://en.wikipedia.org/wiki/Convex_hull_algorithms som förklarar att den teoretiska minimum tiden för att hitta ett konvext hölje är av storleksordningen O(n log(n)).

Jul
14
2009
0

Matlab Image Resizer

Jag har skrivit ett litet program för matlab som förminskar bilder. Detta eftersom jag inte hittade den funktionen på något enkelt sätt någonstans. Det bör bli ganska många bilder i Sydney/Australien under utbytesåret som måste laddas upp. Vi har begränsningar på vår uppkoppling där vi bor så det går inte att ha bilder på 5 Mb per styck. Efter att jag blivit klar med programmet i det utförande det nu har såg jag dock att det går smidigt att redigera många bilder samtidigt med ett officeprogram. Hur som helst så fungerar programmet bra.

Syfte

Programmet syftat till att enkelt förminska alla bilder i en mapp.

Varför?

Eftersom det är jobbigt att editera och förminska var bild för sig när många bilder skall fixas.

Vad krävs för att köra programmet?

Det krävs att du har en licens på matlab runtime. Är du student som jag skall det inte vara några problem, annars är det tyvärr nog inte gratis.

Användning

WYSIWYG.

Ansvar

Jag tar inget ansvar för att någonting fungerar.


Ladda ner ImageResizer

Temat är modifierat från Aeros 2.0 - Blogglista.se - Översättning är gjord av N2H