Jednoduché použití komponenty Grid ve Vaadinu

Grid je komponenta pro zobrazení tabulkových dat (ve formátu sloupců a řádek). Zde je ochutnávka toho, co grid umí: demo.vaadin.com/sampler/#ui/grid.

V tomto příspěvku si vytvoříme jednoduchý grid, který bude zobrazovat data lidí (jméno, příjmení a den narození). Kód můžete umístit do metody init třídy, která dědí z UI.

@Override
protected void init(VaadinRequest vaadinRequest) {
    final VerticalLayout layout = new VerticalLayout();

    // creating data
    List<Person> persons = Arrays.asList(
    		new Person("John", "Smith", LocalDate.of(2001, 3, 17)),
    		new Person("Marie", "Jones", LocalDate.of(1987, 11, 26)),
    		new Person("Dave", "Williams", LocalDate.of(1995, 1, 5))
    );

    // creating grid
    Grid<Person> grid = new Grid<>();
    grid.setItems(persons);
    grid.addColumn(Person::getName).setCaption("Name");
    grid.addColumn(Person::getSurname).setCaption("Surname");
    grid.addColumn(Person::getDateOfBirth).setCaption("Date of birth");
    grid.setHeightByRows(persons.size());

    layout.addComponent(grid);

    setContent(layout);
}

Číst dálJednoduché použití komponenty Grid ve Vaadinu

Vytvoření Vaadin projektu v Eclipse IDE

Nejjednodušším způsobem, jak vytvářet Vaadin projekty je pomocí pluginu „Vaadin Plugin for Eclipse“.

new_vaadin_project_install_eclipse_plugin

Ten si nainstalujete přes Help -> Eclipse Marketplace -> do Find textového pole napište vaadin -> vybrat a Install.

Pokud máte plugin instalován, vytvoření Vaadin projektu je jednoduché: File -> New -> Project -> Vaadin -> Vaadin 8 Project (můžete vytvořit i projekt v předchozí sedmičkové verzi) -> Next -> Singele-module Application Project -> Next -> zadejte Group Id (v mém případě cz.vitfo) a Artifact Id (v mém případě myproject) -> Finish.

Číst dálVytvoření Vaadin projektu v Eclipse IDE

Nastavení kurzoru v programu PSPad

Pokud jste si nainstalovaly program PSPad, možná váš trápí pozice kurzoru. Když kliknete myší do souboru otevřeného v tomto programu, kurzor zůstane v místě kliknutí a ne (jak většinou uživatel očekává) na konci řádku. Vypadá to, jako by soubor obsahoval tabulátory nebo mezery.

pspad_cursor_setting_position

Pokud potřebujete, aby se kurzor umístil na konec řádku, změňte nastavení: Nastavení -> Nastavení programu … -> Editor 1 -> odškrtnout „Vstup na konec řádku“.

pspad_cursor_setting

Třináct základních příkazů v Linuxu

Pokud s začínáte s linuxovou konzolí, nebo jste se náhodou dostali na linuxový server, který nemá grafické rozhraní, a nebo máte jiný důvod proč začít pracovat s Linuxem v konzoli, pomůže vám tento příspěvek s úvodními kroky.

S Linuxem se v příkazové řádce pracuje tak, že napíšete příkaz (název programu), za ním případné argumenty a enter.

Pro doplňování názvů příkazů, adresářů a souborů používejte tabulátor. Pokud se potřebujete přepnout do složky Documents ve vašem domovském adresáři  a napíšete D (cd D) a stisknete enter, nestane se nic, protože složek s tímto názvem je tam více. Když stisknete enter podruhé, zobrazí se vám možnosti  (Desktop, Download, Documents). Pokud dopíšete oc (cd Doc) a stisknete enter, doplní se Documents a vy si ušetříte psaní.

Číst dálTřináct základních příkazů v Linuxu

Změna rozměrů obrázků v Linuxu z příkazové řádky

Pro práci s obrázky z příkazové řádky je v Linuxu knihovna (suite of tool) imagemagic. Nainstaluje se tímto příkazem:

sudo apt-get install imagemagick

Pro změnu rozměrů několika obrázků najednou se použije příkaz mogrify.

mogrify -resize 640x *

Změní velikost všech obrázků ve složce na šířku 640 pixelů a výška se přizpůsobí proporcionálně.

mogrify -resize 50% *.jpg

Změní velikost všech .jpg obrázků ve složce na 50%.

mogrify -resize x600 obrazek.jpg

Změní velikost obrázku obrazek.jpg na výšku 600px, šířka se změní proporcionálně.
Program mogrify dokáže i mnoho dalších věcí:

mogrify -rotate 90
mogrify -resize 800x600 -sharpen 0x1 *.png

Zdroje:

Jak naučit dítě počítat: 4 – 5 let

V jednom z předchozích příspěvků jsem se obecně věnoval tomu, jak naučit malé dítě počítat. V tomto příspěvku se zaměřím na věk 4 – 5 let a ukážu pro inspiraci, co jsme řešili s prckem, když byl v tomto věku.

Hlavní předpoklady
1. Musí vás to bavit
2. Platí podmínka číslo 1
Pokud to baví vás, bude to s velkou pravděpodobností bavit i dítě.

Existuj celá řada pracovních sešitů s úkoly pro děti v tomto věku. Určitě je dobré se na ně podívat a i nějaký koupit. Nejdůležitější ale podle mě je, tyto úkoly společně vytvářet a řešit. Dítě  má nějaký úkol, který má vyřešit, ale dělá jej společně s vámi a zároveň vidí, že se osobně věnujete vytváření tohoto úkolu.

Spojování počtu s číslicí
Propojit čárou počet předmětů s číslicí představující tento počet.
prirazovani_poctu

Vybarvení dle počtu
Vybarvit tolik předmětů kolik představuje číslice. Může si vybarvit jak chce :-).

vybarvovani_dle_poctu

Přeškrtnout nebo dokreslit
Variace na předchozí zadání. Podle počtu zadaného číslicí buď škrtne nadbytečné předměty anebo pokud chybí, dokreslí je.

dokreslit_nebo_preskrtnout

Rozdělení na části
Podle počtu rozdělit čárou na dvě části tak, aby to odpovídalo zadání.

rozdelovani_na_dve_casti

Psaní číslic
Nezapomínejme na psaní číslic.

psani_cisel

Spring Boot JDBC projekt

Nový projekt si necháme vygenerovat na adrese start.spring.io. Budeme chtít závislosti JDBC a PostgreSQL. Více k vytváření projektů pomocí spring initializeru naleznete v tomto příspěvku.

spring_boot_jdbc_generate_project

Stažený projekt (.zip soubor) rozbalíme a naimportujeme do STS (Eclipse): File -> Import -> Maven -> Existing Maven Projects -> Next -> Root Directory (vybrat rozbalený projekt) -> Finish.
Pokud se nyní pokusíte projekt spustit (pravým na projekt -> Run As -> Spring Boot App) dostanete následující chybu:

***************************
APPLICATION FAILED TO START
***************************

Description:

Cannot determine embedded database driver class for database type NONE

Action:

If you want an embedded database please put a supported one on the classpath. If you have database settings to be loaded from a particular profile you may need to active it (no profiles are currently active).

Je třeba do souboru application.properties přidat data pro připojení k databázi. Více k tomuto tématu si můžete přečíst v tomto příspěvku.

Číst dálSpring Boot JDBC projekt

Psaní a mazání textu v editoru Vim

Editor Vim má několik módů. Nejčastěji používaný je příkazový mód, ve kterém se editor nachází při spuštění nebo po stisku klávesy ESC. Pokud potřebujete napsat text (což pokud jsme si otevřeli textový editor se dá předpokládat) musíme se přepnout do režimu vkládání. To lze provést několika různými klávesami.

i začne se psát od místa před kurzorem
I začne se psát od začátku řádku
a začne se psát od místa za kurzorem
A začne se psát na konci řádku
o začne se psát na novém řádku za řádkem, na kterém je umístěn kurzor
O začne se psát na novém řádku před řádkem, na kterém je umístěn kurzor

Pokud potřebujete mazat, je třeba se přepnout do příkazového režimu (klávesa ESC). Pak pro mazání můžete použít následující klávesy:

x maže znaky směrem doprava
X maže znaku směrem doleva
D smaže všechny znaky od kurzoru do konce řádku
dd smaže celý řádek

Zdroj: www.lagmonster.org/docs/vi.html

Jak naučit dítě počítat

Děti informace nasávají. Dospělí si myslí, že děti si hrají a učení je nebaví. Omyl. Děti si nehrají. Děti se učí. A proč se učí a proč je to učení baví? Mají geneticky zakódováno, že čím více se toho naučí, tím větší budou mít pravděpodobnost přežití. Milióny let vývoje nezměníme. Děti se chtějí učit, jsou zvědavá a zvídavé. Snaží se získat co nejvíce informací a dozvědět se toho co nejvíce o světě, který je obklopuje. A bavit je to přestane teprve tehdy, když od okolí nedostávají odpovědi a jejich zvídavost naráží na nechuť dospělých se jim věnovat. Odpovědi typu teď nemám čas, to tě nemusí zajímat, nevím, neznám, tady máš autíčko, panenku a běž si hrát a nech mě v klidu, po nějaké době ubijí touhu po vzdělávání a dospělí mají konečně klid. Už je to dítě neotravuje. To že marní ty neplodnější roky pro rozvoj dítěte jim evidentně nevadí.

Jak tedy naučit dítě počítat a hlavně, jak mu tuto činnost neznechutit? Musí platit následující:
1. Musí vás to bavit
2. Platí podmínka číslo 1
Pokud to baví vás, bude to s velkou pravděpodobností bavit i dítě.

A jak na to? Nejdříve počítejte knoflíky, autíčky, vagóny za lokomotivou, rohlíky, … Seznamte dítě s číslicemi nejlépe zábavnou formou. Zapojte fantazii. Existuje plno tvořivých sešitů s úkoly pro děti ve věku tří, čtyř, pěti let. Sami podobné úkoly vymýšlejte a malujte. A hlavně, bavte se u toho a užívejte si takto společně strávený čas.

Na téma učení počítání jsem narazil na tento pěkný článek.
www.jiri-kratochvil.9e.cz…?#h11

Rozdíl mezi statickou a nestatickou vnořenou třídou v Javě

Vnořená třída, která není statická, má přístup ke všem proměnným a metodám (i private) nadřazené třídy. Tato vnořená třída ale nelze vytvořit bez instance nadřazené (zaobalující) třídy.

Třída s vnořenou nestatickou třídou

public class ClassWithInner {

	private String message;
	
	public InnerClass getInnerClass() {
		return new InnerClass();
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

	public class InnerClass {
		
		private int number;
		
		public void getMessage() {
			System.out.println(message);
			setMessage("new message");
			System.out.println(ClassWithInner.this.getMessage());
		}

		public int getNumber() {
			return number;
		}

		public void setNumber(int number) {
			this.number = number;
		}
	}
}

Vytvoření v main metodě

public static void main(String[] args) {

	// nelze, neexistuje instance ClassWithInner
	// ClassWithInner.InnerClass innerClass = new ClassWithInner.InnerClass();
	
	ClassWithInner classWithInner = new ClassWithInner();
	InnerClass innerClass = classWithInner.getInnerClass();
	innerClass.printMessage();
}

Vnořená statická třída nepotřebuje k vytvoření instanci zaobalující třídy. Na rozdíl od nestatické, ale nemá přístup k proměnným obalující třídy.

Třída s vnořenou statickou třídou

public class ClassWithInnerStatic {

	private String message;
	
	public InnerStaticClass getInnerStaticClass() {
		return new InnerStaticClass();
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

	public static class InnerStaticClass {
		
		int number;
		
		public void printMessage() {
			// nelze: Cannot make a static reference to the non-static method getMessage() from the type ClassWithInnerStatic
			// System.out.println(getMessage());
		}

		public int getNumber() {
			return number;
		}

		public void setNumber(int number) {
			this.number = number;
		}
	}
}

Vytvoření v main metodě

public static void main(String[] args) {
	
	// třída lze vytvoři i bez instance ClassWithInnerStatic
	ClassWithInnerStatic.InnerStaticClass innerStaticClass = new ClassWithInnerStatic.InnerStaticClass();
	innerStaticClass.setNumber(123);
	System.out.println(innerStaticClass.getNumber());
}