Development kategória bejegyzései

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.

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);
   }

});

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!

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

 

ROM fordítás

A legtöbben akik a blogomra tévednek, új ROM-ot szeretnének a telefonjukra.

Most mit szépítsem? Cserben hagyott minket a Huawei. Ugyan a gyár nem mondta ki, de én úgy érzem, sosem lesz még csak 2.2-es Android sem a (jelenlegi) készülékünkre.

Jelenleg a legjobb, legstabilabb ROM a telefonunkra a Tom-G által portolt Cyanogenmod 6, amit talán többen is használtok, néhányan talán az én tanácsomra.

Legtöbben mikor felteszik ezt a ROM-ot, szomorúan térnek vissza kommentelni az oldalra, hogy “nincs magyar nyelv”.

A mai nap is jött egy ilyen komment és bennem megszületett az elhatározás. Ha már a gyár nem törődik velünk, törődjünk mi magunkkal és fordítsuk le a ROM-ot! A technikai ember én leszek, de a Ti tudásotok is szükséges!

Létrehoztam egy oldalt, ahova feltöltöttem a jelenleg fordítandó szövegeket (csak a ROM szövegeit, ez ~750 mondat/szó), és a majdani fordított ROM-ba kerülő minél tökéletesebb fordításokért szükség van rá, hogy minél többen lefordítsátok az egyes mondatokat/szavakat. Így közelednek majd az álláspontok, kimondott szavak nélkül.

Fordítónak jelentkezni lehet itt kommentben, egy max. 10 betűs felhasználónév és e-mail cím megadásával (a jelszót én adom).

http://coelho.mudkip.d-lan.hu/romtranslating/

Update: a fordítás jelenleg két személyes, ennek köszönhetően a ROM harmada már lefordításra került. További fordítók jelentkezését még mindig várom itt kommentekben!

Címke