Ezt a cuccot csak ajánlani tudom, a mai nap gannt diagramjai ezzel készültek el: http://gantter.com/
Ezt a cuccot csak ajánlani tudom, a mai nap gannt diagramjai ezzel készültek el: http://gantter.com/
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.
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); }
});
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!
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:
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