Čas v různých časových zónách v Javě 8

Pro určení časového pásma v Javě 8 slouží ZoneId. K jeho vytvoření se používá řetězec ve stylu kontinent/město. Seznam časových zón naleznete například na wiki.

ZoneId pragueZI = ZoneId.of("Europe/Prague");
ZoneId newYorkZI = ZoneId.of("America/New_York");
ZoneId vladivostokZI = ZoneId.of("Asia/Vladivostok");
ZoneId hawaiiZI = ZoneId.of("US/Hawaii");

System.out.println(pragueZI);
System.out.println(newYorkZI);
System.out.println(vladivostokZI);
System.out.println(hawaiiZI);

Výsledek

Europe/Prague
America/New_York
Asia/Vladivostok
US/Hawaii

Pro uchování/vytvoření času, který obsahuje i údaj o časové zóně slouží ZonedDateTime

ZonedDateTime pragueCurrent = ZonedDateTime.now(pragueZI);
ZonedDateTime newYorkCurrent = ZonedDateTime.now(newYorkZI);
ZonedDateTime vladivostokCurrent = ZonedDateTime.now(vladivostokZI);
ZonedDateTime hawaiiCurrent = ZonedDateTime.now(hawaiiZI);

System.out.println(pragueCurrent);
System.out.println(newYorkCurrent);
System.out.println(vladivostokCurrent);
System.out.println(hawaiiCurrent);

Výsledek

2016-09-21T16:35:32.602+02:00[Europe/Prague]
2016-09-21T10:35:32.609-04:00[America/New_York]
2016-09-22T00:35:32.609+10:00[Asia/Vladivostok]
2016-09-21T04:35:32.609-10:00[US/Hawaii]

Vyhledávání ve všech souborech pomocí grep

Pro vyhledávání v souborech se používá program grep což je program příkazové řádky dostupný na UNIX systémech.

grep Ahoj pokus2
Vyhledá slovo ‚Ahoj‘ v souboru pokus2.

grep Ahoj *
Vyhledá slovo ‚Ahoj‘ ve všech souborech v adresáři.

grep -r Ahoj *
Vyhledá slovo ‚Ahoj‘ ve všech souborech v adresáři a podadresářích.

grep -rl Ahoj *
Prohledá všechny soubory v aktuálním adresáři a podadresářích a vypšíše jména souborů, které obsahují slovo ‚Ahoj‘.

Výjimka java.time.DateTimeException: Invalid ID for ZoneOffset, invalid format

V Java 8 DateTime API existuje třída pro uchovávání data včetně časové zóny ZonedDateTime. Údaj o časové zóně může být reprezentován třídami ZoneId a ZoneOffset, kdy ZoneId uchovává časovou zónu a ZoneOffset posun oproti Greenwich času. Pokud tedy máme ZonedDateTime 2016-09-07T08:22:40.492+02:00[Europe/Prague] pak Europe/Prague představuje ZoneId a +02:00 ZoneOffset. ZoneOffset dědí ze ZoneId. Obě tyto třídy poskytují statickou metodu of(String zoneId), která na typu textového parametru vrací buď instanci ZoneId nebo ZoneOffset.

ZoneId zi1 = ZoneId.of("+3");
Vrátí ZoneOffset a protože ZoneOffset dědí ze ZoneId, je možné do datového typu ZoneId přiřadit ZoneOffset.

ZoneOffset zo1 = ZoneOffset.of("+3");
Vrátí ZoneOffset.

ZoneId zi2 = ZoneId.of("Asia/Vladivostok");
Vrátí ZoneId.

ZoneOffset zo2 = ZoneOffset.of("Asia/Vladivostok");
Vyhodí výjimku java.time.DateTimeException: Invalid ID for ZoneOffset, invalid format – do ZoneOffset se snažíme přiřadit ZoneId.

Directory listing a google

Povolený directory listing na serveru znamená, že je možné zobrazit soubory a složky na serveru. Pokud v daném souboru na serveru není startovní soubor (nejčastěji index.html), po přístupu na url se objeví html stránka se seznamem složek a souborů.

google_hacking_directory_listingPNG

Tato html stránka obvykle v obsahuje titulek „Index of“.

<html>
 <head>
  <title>Index of /~...</title>
 </head>
 <body>
<h1>Index of / ...

Pro vyhledání takovýchto webů lze použít google a jeho klíčové slovo intitle. Dotaz pro vyhledání takovýchto stránek by tedy mohl vypadat následovně intitle:"Index of".

Velikost poštovní schránky v Outlooku

Grafický pohled na zůstatek volného místa lze zjistit v Soubor -> Informace -> Vyčištění poštovní chránky

outlook_velikost_postovni_schranky

Pokud potřebujete přesný přehled včetně velikosti, které zabírají jednotlivé složky, Soubor -> Informace -> Vyčistění poštovní schránky (Nástroje pro vyčistění) -> Vyčištění poštovní schránky -> Zobrazit velikost schránky

outlook_velikost_postovni_schranky_02

Přejmenování sloupce v PostgreSQL

Přejmenování sloupce je velmi podobné vytvoření nového sloupce, které bylo popsáno v tomto příspěvku. Opět se používá příkaz ALTER TABLE jen místo ADD je RENAME. Syntaxe příkazu je následující.

ALTER TABLE nazev_tabulky RENAME COLUMN puvodni_nazev_sloupce TO novy_nazev_sloupce

Nejdříve si vytvoříme tabulku s daty a následně pak přejmenujeme její sloupce.

drop table if exists pokus;
create table pokus (
	id serial not null,
	name varchar(100) not null,

	primary key (id)
);

insert into pokus (name) values ('jnovak'), ('vlasak'), ('kvetinka');

Takto se provede přejmenování sloupců.

alter table pokus rename column id to id_pokus;
alter table pokus rename column name to username;