Program Příkazový řádek (cmd.exe) se dá otevřít v určité složce (programy v dané složce je možné rovnou spouštět bez zadání cesty). Otevřít v průzkumníkovi daný adresář -> stisknout klávesu Shift + pravým tlačítkem myši -> vybrat volbu „Zde otevřít příkazové okno“.
vitfo
Pořadí při použití metody equals
V případě, že máme konstantu a tu porovnáváme s objektem, je vhodnější použít konstrukci konstanta.equals(objekt) než naopak. Důvod je jednoduchý. Vyhneme se tak možnosti chyby NullPointerException.
String MY_CONSTANT = "AB9922";
System.out.println(MY_CONSTANT.equals(MY_CONSTANT));
System.out.println(MY_CONSTANT.equals("ABCDEF"));
System.out.println(MY_CONSTANT.equals(null));
Výsledek.
true false false
Pokud to zkusíme opačně, kód nepůjde zkompilovat.
System.out.println(MY_CONSTANT.equals(MY_CONSTANT));
System.out.println("ABCDEF".equals(MY_CONSTANT));
// Unresolved compilation problem: Cannot invoke equals(String) on the primitive type null
// System.out.println(null.equals(MY_CONSTANT));
Vědomě bychom konstrukci null.equals() určitě nepoužili, ale nevědomě se používá docela často. Zde je metoda, která vrací náhodný String. Vrácená hodnota tedy může být i null.
private static String generateString() {
int randomNumber = gen.nextInt(3);
switch(randomNumber) {
case 0:
return "AB9922";
case 1:
return "XX8811";
default:
return null;
}
}
Pokud budeme porovnávat objekty tímto způsobem,
private static final String MY_CONSTANT = "AB9922";
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
System.out.println(generateString().equals(MY_CONSTANT));
}
}
kód nám pravděpodobně bude nějakou chvíli fungovat, ale časem se určitě objeví NullPointerException.
true true false Exception in thread "main" java.lang.NullPointerException
Předejít tomu můžeme změnou objektu, na kterém metodu equals() voláme.
for (int i = 0; i < 100; i++) {
System.out.println(MY_CONSTANT.equals(generateString()));
}
Rychlé spuštění programu ve Windows
Operační systém Windows nabízí několik možností jak rychle spustit program (ať už pomocí klávesové zkratky či jinak). Uvádím zde několik způsobů:
Připnutí ikony programu na hlavní panel
Pravým tlačítkem na program -> Připnout na hlavní panel. Pokud z hlavního panelu chcete program odstranit, pravým tlačítkem na program na panelu -> Odepnout tento program z hlavního panelu. Tímto způsobem je možné si upravit hlavní panel tak, aby obsahoval ty nejpoužívanější programy a ty díky tomu byly lehce přístupné.
Spuštění programu na hlavním panelu pomocí klávesové zkratky
Všechny programy připnuté k hlavnímu panelu mají své pořadové číslo (zleva doprava od jedničky). Tlačítko Start, ikona Prohledat Windows a Zobrazení úkolů se nepočítá.
Na tomto snímku je můj hlavní panel. Pokud budu chtít pustit průzkumníka souborů, stisknu klávesu Windows + 1 (průzkumník Windows lze spustit i klávesovou zkratkou Win + E). Pokud budu chtít spustit Eclipse IDE, stisknu klávesu Windows + 4. Pokud program ZimNotes tak klávesu Windows + 2.
Přiřazení klávesové zkratky zástupci
Pokud máte na ploše zástupce programu, je možné mu přiřadit klávesovou zkratku. Klikněte pravým tlačítkem na ikonu programu -> Vlastnosti -> umístěte kurzor do textového pole s popiskem Klávesová zkratka a tiskněte nějaké písmeno. Automaticky se předvyplní Ctrl + Alt.
Na obrázku je programu (zástupci programu) PuTTY přiřazena klávesová zkratka Ctrl + Alt + Y.
Zdroje:
Guava Optional.orNull()
V jednom z předchozích příspěvků jsem se věnoval třídě Optional z knihovny Guava. Nezmínil jsem ale užitečnou metodu orNull(). Tato metoda buď vrátí referenci na objekt v případě, že isPresent() je true, nebo null. Může se to hodit třeba v případě, kdy ve svém kódu používáte třídu Optional, ale jiné metody požadují objekt, nebo null.
Optional str1 = Optional.of("world");
Optional str2 = Optional.absent();
System.out.println(str1.orNull());
System.out.println(str2.orNull());
Výsledek.
world null
V následujícím kódu si všimněte metod getString01() a getString02(). Obě dělají to samé, jen getString02() je mnohem kratší a přehlednějsí.
public static void main(String[] args) {
Optional str1 = Optional.of("world");
Optional str2 = Optional.absent();
System.out.println(getString01(str1));
System.out.println(getString01(str2));
System.out.println(getString02(str1));
System.out.println(getString02(str2));
}
private static String getString01(Optional str) {
if (str.isPresent()) {
return str.get();
} else {
return null;
}
}
private static String getString02(Optional str) {
return str.orNull();
}
Metoda Arrays.asList()
Tato metoda vrací list fixní délky. To znamené, že jakýkoliv pokus o změnu velikosti tohoto listu skončí chybou UnsupportedOperationException.
Ať už se jedná o odebrání prvku,
List list = Arrays.asList("a", "b", "c", "b");
ListIterator iterator = list.listIterator();
while (iterator.hasNext()) {
if (iterator.next().equals("b")) {
iterator.remove();
}
}
nebo o přidání prvku,
List list = Arrays.asList("a", "b", "c", "b");
ListIterator iterator = list.listIterator();
while (iterator.hasNext()) {
if (iterator.next().equals("b")) {
iterator.add("bbb");
}
}
dostaneme následující chybu.
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList$ListItr.add(AbstractList.java:438)
...
V případě, že chceme vytvořil list s proměnnou velikostí, můžeme použít parametrický konstruktor ArrayList(kolekce).
List list = new ArrayList(Arrays.asList("a", "b", "c", "b"));
ListIterator iterator = list.listIterator();
while (iterator.hasNext()) {
if (iterator.next().equals("b")) {
iterator.remove();
}
}
Výsledkem je následující list: [a, c].
Režim celé obrazovky ve VirtualBoxu
Při vytvoření virtuálního počítače ve VirtualBoxu a instalaci operačního systému do tohoto virtuálního počítače se může stát, že zobrazení celé obrazovky nebude zcela funkční (plocha operačního systému virtuálního počítače nebude přes celé okno).
Řešením je nainstalování přídavků pro hosta (guest additions).
Zařízení -> Instalovat přídavky pro hosta.
Zobrazí se volba co se má dělat po vložení média. Potvrdit volbu „Otevřít v souborovém manageru“.
Dvojklikem spustit autorun.sh.
Potvrdit spuštění souboru.
Zadat heslo.
Po skončení instalace stisknout Enter a operační systém ve virtuálním počítači restartovat. Po restartu by se již měla plocha operačního systému přizpůsobovat velikosti okna.
Zdroje:
Vložení měřícího kódu
Google Analytics používá pro měření návštěvnosti webu (a další statistiky) měřící kód, který je třeba přidat do každé stránky, která má být sledována.
Kód pro vložení lze nalézt v části „Správce“.
Následně kliknout na „Údaje o měření“ -> „Měřicí kód“.
Nejednodušším řešením je vložit kód do části head nebo footer, která je součástí (vkládá se do) každé stránky. Ve WordPressu stačí třeba editovat soubor (vložit kód do souboru) header.php nebo footer.php, které jsou umístěny v /www/wp-content/themes/nazev_tematu.
Symbolický link
Symbolický odkaz, anglicky symbolic link, symlink, softlink, tj. měkký odkaz označuje v informatice alternativní odkaz, který ukazuje na jiný soubor nebo adresář. Odkaz je realizován jako malý speciální soubor, který obsahuje absolutní nebo relativní cestu k cílovému souboru. Zdroj: cs.wikipedia.org/wiki/Symbolick%C3%BD_odkaz
Symbolický odkaz se vytváří pomocí příkazu ln s volbou -s.
~$ ln -s /etc/rc.local ~$ file rc.local rc.local: symbolic link to `/etc/rc.local'
Výše uvedený příklad vytvoří symbolický odkaz na soubor /etc/rc.local. Příkaz file vypíše typ souboru. File mode bit na první pozici je l (malé písmeno l).
ln -s /etc/rc.local symLinkTo_rc.local
Tak jako v předchozím příkladu vytvoří symbolický link na soubor /etc/rc.local a pojmenuje jej symLinkTo_rc.local.
Velmi hezké vysvětlení symbolických odkazů jsem nalezl na této webové stránce a zde je budu citovat:
Symbolický link je něco jako zkratka, principem je velmi podobný odkazu v html souboru, ale funguje v rámci souborového systému. Je velmi vzdáleně podobný zástupci ve Windows, což je nedokonalá napodobenina symbolického linku. Zástupce ve Windows je obyčejný datový soubor, který některé programy speciálně interpretují a jiné nikoliv. Tj. podpora zástupců je záležitost jednotlivých aplikací. Symbolický link je záležitost podstatně nižší úrovně, je to součást souborového systému a jeho interpretaci má na starost jádro. Symbolický link je speciální soubor stejně jako je speciální soubor adresář.
Symbolický link si můžete představit jako normální soubor, jehož obsahem je adresa (cesta, path) na jiný soubor (i speciální, tedy adresář, rouru a podobně). Přesně to totiž symbolický link je. Akorát že to není normální soubor a ta cesta není uložena v datové oblasti (symbolický link nic takového nemá) takže ho třeba nemůžete otevřít v textovém editoru a podívat se na ni.
Symbolický link nemusí ukazovat jen na datové soubory. Může ukazovat na libovolný druh souboru, třeba na adresáře. Je užitežné (alespoň já to dělám a dělám to všem lidem, kterým instaluji a konfiguruji Linux) si ve svém domácím adresáři udělat adresář který obsahuje hromadu symbolických linků, které ukazující na často navštěvované adresáře rozmístěné po různých discích co máte v počítači jako zkratky, které umožňují rychlý přístup k nim. Do těchto frekventovaných adresářů se ze všech aplikací pak dostanete nanejvýš na dvě kliknutí, protože domácí adresář je v Linuxu výchozí bod, od kterého se pokračuje dál.
Když smažete soubor, na který ukazuje symbolický link, tak symbolický link poté ukazuje do nikam. Pokus o jeho otevření pro čtení nebo zápis se chová stejně jako pokus o otevření neexistujícího souboru. Správci souborů takové symbolické linky často výstražně zvýrazňují, třeba červenou barvou. Zdroj: usl.wraith.cz/usl.html
Time test
JUnit i TestNG umožňují pomocí parametru timeout anotace @Test nastavit podmínku testu tak, aby test, pokud má být úspěšný, proběhl do určité doby (definované v milisekundách). V případě, že test trvá déle, jeho běh je ukončen a test je označen jako neúspěšný (failure).
Metoda, která se bude testovat.
public void longMethod() {
for (int i = 0; i < 1_000_000; i++) {
System.out.println("myMethod");
}
}
Test.
@Test(timeout=1000)
public void longMethodTest() {
longMethod();
}
Kód je stený jak pro JUnit tak pro TestNG. Pro JUnit test se používá anotace org.junit.Test a pro TestNG org.testng.annotations.Test. Pokud bude výše uvedený test trvat déle jak 1000 milisekund, bude označen jako neúspěšný.
File mode bits
V Linuxu je vše soubor a tím pádem vše má nastaveno i oprávnění (permission). Oprávnění určuje kdo má právo číst (read), zapisovat (write) a spustit (execute) daný soubor. Výpis oprávnění souborů lze získat pomocí příkazu ls s volbou -l.
Ukázka:
drwxr-xr-x 6 root root 4096 říj 12 19:30 apt drwxr-xr-x 2 root root 4096 srp 5 07:18 at-spi2 -rw-r--r-- 1 root root 2177 dub 9 2014 bash.bashrc -rw-r--r-- 1 root root 45 bře 22 2014 bash_completion drwxr-xr-x 2 root root 4096 říj 24 20:43 bash_completion.d -rw-r--r-- 1 root root 356 led 1 2012 bindresvport.blacklist -rw-r--r-- 1 root root 321 dub 16 2014 blkid.conf lrwxrwxrwx 1 root root 15 zář 2 20:35 blkid.tab -> /dev/.blkid.tab
| 1 | 2-4 | 5-7 | 8-10 |
| typ souboru | oprávnění uživatele | oprávnění skupiny | oprávnění ostatních uživatelů |
Typ souboru
| – | běžný soubor |
| d | adresář |
| l | link |
| s | socket (slouží pro komunikaci mezi procesy) |
| p | pojmenovaná roura (named pipe) |
| b | blokové zařízení |
| c | znakové zařízení |
K určení typu souboru slouží příkaz file.
vitfo@vitfo-VirtualBox:~$ file Pictures/ Pictures/: directory vitfo@vitfo-VirtualBox:~$ file .profile .profile: ASCII text
Oprávnění
Oprávnění je určeno trojicí čísel. První znamená oprávnění pro čtení (r), druhé pro psaní (w) a třetí pro vykonání/spuštění (x). V případě, že dané oprávnění není, používá se -. Zde je ukázka souboru bez oprávnění ---------- (10 krát pomlčka). Pro změnu „file mode bits“ slouží příkaz chmod.
Zdroje:










