pvikusz bejegyzései

Android drawable generation from svg files

for x in 32 48 64 96 ; do inkspace –export-png logo${x}.png -w ${x} some.svg ; done

gannt

Ezt a cuccot csak ajánlani tudom, a mai nap gannt diagramjai ezzel készültek el: http://gantter.com/

jquery event handler in loop

Minden nap tanul az ember valami újat, ma pl. a következőt:

Ha van egy függvényünk, ami többször kiváltódhat, pl. az ablak átméretezése miatt, akkor NE abban rendeljünk hozzá pl. egy gombhoz eseménykezelést, mert 8-10-10000000 alkalommal is hozzárendelődik és ennyiszer ki is fog váltódni az esemény hatására.

pl.

$(function() {

    $(window).resize(function() { resize(); });

});

function resize() {

    $('#mybutton').click(function() { ... });

}

Ez rossz. Helyette:

$(function() {

   $('#mybutton').click(function() { ... });
   $(window).resize(function() { resize(); });

});

function resize() {
...
}

Nem okoz problémát.

partition recovery

Másodjára fordult elő fél éven belül velem (igen, ennyire béna voltam kétszer), hogy az 1TB-os vinyomról elvesztettem egy partíciót. Egy tele lévő ~900GB-osat. Első alkalommal egy átparticionálást nem gondoltam át, hogy mennyi időbe fog kerülni és röviddel a folyamat kezdete után megszakítottam a műveletet. Ennek következtében elveszett a vinyóról minden partícióm. Második alkalommal az áramellátással volt gond és ennek következtében eltűnt megint a nagy partíció.

A két alkalommal két különböző operációs rendszeren, először windowson, másodjára ubuntun álltam neki a helyreállítási műveleteknek. Windowson nagyon ajánlom a következő ingyenes szoftvert: http://www.easeus.com/partition-recovery/ Pár gombnyomás után elkezdte átnézni a lemezt és a folyamat végén képes volt visszaállítani a partíciókat.
A mai alkalommal a TestDisk nevű szoftvert használtam, mely az alábbi linkről érhető el: http://www.cgsecurity.org/wiki/TestDisk Kicsit több időbe telt ugyan, de néhány gombnyomással itt is visszahoztam az életbe a partíciókat. Említettem már hogy ingyenes? Én mindenképpen adományozok némi eurot a készítőknek, mert megmentették az életemet. Megint 🙂

android animationlistener loop

a következőt ne csináljuk, mert végtelen ciklusba fogunk lépni
don’t do this if you don’t want az infinite loop

SomeViewSubclass view = new SomeViewSubclass(this);
view.animate().alpha(0f).setDuration(1000).setListener(new Animator.AnimatorListener() {

   /* 
   the other 3 method of the AnimatorListener interface 
   a másik 3 AnimatorListener interface függvény
   */

   @Override
   public void onAnimationEnd(Animator animator) {
      /*
          do something you want
      */
      view.animate().alpha(1f).setDuration(1000);
   }

});

Mindenképpen kell egy setListener(null) hívás a második animálás végére, különben mindig be fogunk esni az onAnimationEnd függvénybe
You have to call a setListener(null) on the end of the expression, if you don’t, your onAnimationEnd function will be called forever

SomeViewSubclass view = new SomeViewSubclass(this);
view.animate().alpha(0f).setDuration(1000).setListener(new Animator.AnimatorListener() {

   /* 
   the other 3 method of the AnimatorListener interface 
   a másik 3 AnimatorListener interface függvény 
   */

   @Override
   public void onAnimationEnd(Animator animator) {
      /*
          do something you want
      */
      view.animate().alpha(1f).setDuration(1000).setListener(null);
   }

});

back to the blogging

visszatérek a blogoláshoz, többféle módon is.
nyitottam egy tumblr blogot, oda fognak a fun dolgok kerülni, akit érdekel esetleg: http://plezervi.tumblr.com
ez a hely egy kódblog lesz, amolyan gist

Saját Google Drive (Spreadsheet) függvények

Egyre nagyobb a szerelmem a Google, illetve a tiszteletem a kreativitásuk felé.
A napokban dolgoztam egy Drive táblázaton, amelyben többek között a következő oszlopok szerepeltek:

…|Érték (ez egy szám)|…|Teljesítve(Igen/Nem)|…

Egy cellába szerettem volna összeadni az összes olyan sorban szereplő értéket, ahol a teljesítve oszlopban Igen szerepelt. Valahogy nem fűllött a fogam egy ilyesmi megoldáshoz:

=SUM(IF(C2 == “Igen”,C4,0),IF(D2 == “Igen”, D4,0), …

ezért elkezdtem keresgélni a Google-n, hogy hogyan lehetne ezt az egészet egy ciklussal elintézni.

Az első elképzelésem helytelen volt, de rávezetett a megoldásra: a Google lehetővé teszi hogy JavaScript-ben saját függvényeket írjunk, amely a Drive dokumentumunk adataiból dolgozik.

Lássuk hogyan (én angolul használom a Drive-t, ezért a menük leírása is az angol nevükkel történik): először is válasszuk ki a Tools menüből a Script editor… menüpontot. Itt lehetőségünk nyílik egy projekttemplate választására, én a Spreadsheet-et választottam, mert erre volt szükségem. A Google generál nekünk egy ‘Hello World’ szintű scriptet, ami jó kiinduló alap a sajátunkhoz. Ezt némileg módosítva készítettem el én a sajátomat, mely a következőképpen néz ki:


function calculateFinishedCredits() {

  var sheet = SpreadsheetApp.getActiveSheet();
  var rows = sheet.getDataRange();
  var numRows = rows.getNumRows();
  var values = rows.getValues();

  var total = 0;
  
  for (var i = 0; i <= numRows - 1; i++) {
    if(values[i][4] == "Igen") total += values[i][2];
  }

  return total;

};

function onEdit() {

   refreshCell();

}

function refreshCell() {

  SpreadsheetApp.getActiveSheet().getRange('G9').setValue(calculateFinishedCredits());

}

Ja ja ja, egyszerű mint a faék, de a célnak most tökéletesen megfelelt és első rácsodálkozásként a Google Univerzum eme újabb lehetőségére tökéletes volt 😛 Azóta már írtam egy másik scriptet is és azt hiszem a kelléktár állandó részévé fog válni 🙂

Ami még hátravan: menjünk vissza a dokumentumunkba, válasszuk ki a Tools/Script manager lehetőséget és koppintsunk egyet a run-ra!

Nexus 10

Váhh, megjött a Nexus 10-em 🙂 Mostmár teljesen Nexus vonalon mozgok 😛

Bármilyen kérdésre szívesen válaszolok az eszközzel kapcsolatban 🙂

Fejlesszünk, teszteljünk Android alkalmazásokat Android eszközökön

Régi nagy álmom teljesült nemrég, mikor ráakadtam az AIDE nevű programra a Market kínálatában. Aki jártas a fejlesztés világában tökéletesen tudja, mi is az IDE (integrált fejlesztő környezet), a fenti rövidítés az Android IDE-t takarja. A programmal Android projekteket, forrásfájlokat hozhatunk létre, folyamatosan jelzi a kód állapotát (hibás, nem hibás) és egyetlen gombnyomással el is indítható a projekt. Ekkor az AIDE APK-t generál, amit fel is installál a telefonra, így a tesztelés lehetővé válik (természetesen az idegen forrásból származó programok telepítését engedélyezni kell, de a program használatához nincs szükség root jogra).

Az AIDE számos, a kódolást segítő funkcióval rendelkezik, a teljesség igénye nélkül kiemelek párat:

  • kódszínezés, formázás
  • import-ok kezelése
  • setter,getter automatikus generálása
  • kódkiegészítés JAVA-hoz és XML-hez is
  • refaktorálás
  • beépített fájlkezelő, Dropbox és git támogatás

Jó jó, a lehetőség adott, de használható is? Abszolút. Az alkalmazást direkt kis képernyőkre tervezték, hogy minél többet láthassunk egyszerre a kódunkból, illetve a forrásfájlok közötti váltás minél egyszerűbb legyen. Ha ez nem lenne elég, a fejlesztők ellátták az alkalmazást a pinch zoom képességgel is, így tehát könnyedén nagyíthatunk, vagy kicsinyíthetünk a kódszövegen.

Tableteken a mindennapi munka része lehet, sokak szerint telefonon csak kevés meló elvégzésére lehet alkalmas. Én ezzel nem értek egyet (bár én fanatikus vagyok, bárhol képes vagyok nekiállni kódot írni), telefonon ugyanolyan kényelmesen szerkeszthető az alkalmazásunk kódja.

Maga az AIDE 4,8-as értékelési átlaggal rendelkezik, több mint 2000 szavazat után. Ha más nem is, ez magáért beszél.

Az alkalmazás elérhető a következő címen: https://play.google.com/store/apps/details?id=com.aide.ui

 

Egy korszak vége

Lassan 2 éves a telefonom és ez már látszik is rajta. Régóta. A hardveres gombok használatához lassan már véső és kalapács kell, annyira nem reagálnak már. Emellett egy alapból gyenge “beltartalommal” rendelkező készülékről beszélünk, mint most már tudjuk nulla operációs rendszer frissítési hajlandósággal. Gyártói részről persze. Bennünk felhasználókban ez a hajlandóság (vágy) mindig is élt és soha nem is fog kihunyni. Jómagam is számtalan ROM-mal próbáltam a használhatóságot javítani és ezek közül párat be is mutattam Nektek. Valamelyikkel sikerült, valamelyikkel nem. A legtöbbel nem. Amivel sikerült, azzal sem nagyon. Az elejétől a végéig kompromisszumokkal teli kapcsolat volt a miénk az RBM2-vel. A2SD, task managerek, boosterek, kevés app a készüléken, egyszerűbb launcher, bármi, csak fusson gyorsabban, szebben a készülék. És hát tudjuk, a kompromisszum megöli a produktivitást.

Türelem, nemsokára elmondom mire fel ez a búcsúzó hangvétel, de előbb még hadd mondjam el, mindezek ellenére hálával gondolok a készülékre. Ott volt nekem olcsón, mikor még csak vágytam az Androidos fejlesztésre, egy Androidos készülékre. A rootolásán keresztül behatóan megismerhettem a fastboot-ot, az ADB-t, elkezdhettem írni az Android Arénára, saját blogot nyithattam. Segíthettem olyanoknak, akik elakadtak, valami pluszt akartak kihozni a készülékből. Egyetemi projektekben vehettem részt, a szakdolgozatom is Android-ra íródott, azóta pedig tanítom is az egyetemen a mobilfejlesztést. A készüléken megszerzett tudásomnak köszönhetően egy hétig sem voltam álláskereső, azóta junior mobilalkalmazás fejlesztőként dolgozom, és megismerkedtem az iOS platformmal is.

Köszönöm Neked RBM2, hogy voltál. Nemsokára valószínűleg szétszerelésre kerülsz, hogy tovább fejlődhessek általad, most hardver részen.

Köszönöm Nektek, kerülő megoldásoknak (és fejlesztőiteknek), hogy elérhettem a “nagyok” funkcióit is. Nincs többé Launcher Pro, Barnacle Wifi tether, ROM Manager és társaik. Nincsenek, hisz nem szükségesek már.

Köszönöm Nektek, Olvasóknak és Kérdezőknek, hogy látogattátok eddig a blogomat. Jelenleg több mint 11 ezer oldalletöltésnél tartunk, bár az oldal nem az általam eredetileg kigondolt úton járt eddig. Ez valószínűleg nemsokára megváltozik. A korábbi bejegyzések megmaradnak, lehet olvasgatni a többiek problémáját és azok megoldásait is, a jó bejegyzésre tett kommentekre ezután is válaszolni fogok. De vége, az RBM2 korszak lezárult.

Üdvözlégy hát Samsung Galaxy Nexus és Ice Cream Sandwich!!!