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

Gedit jako vývojové prostředí

Gedit je jednoduchý textový editor.

gedit

V tomto příspěvku ukážu, jak se dá nastavit pro psaní skriptů v bashi.

  • zobrazení čísel řádků: Úpravy -> Předvolby -> záložka Zobrazit -> zaškrtnout Zobrazovat čísla řádků
  • zvýraznění aktuálního řádku: Úpravy -> Předvolby -> záložka Zobrazit -> zaškrtnout Zvýrazňovat aktuální řádek
  • vkládání mezer místo tabulátoru: Úpravy -> Předvolby -> záložka Editor -> zaškrtnout Vkládat mezery místo tabulátorů
  • automatické odsazování: Úpravy -> Předvolby -> záložka Editor -> zaškrtnout Povolit automatické odsazování

Gedit podporuje zásuvné moduly, které rozšiřují jeho možnosti. Zásuvné moduly nainstalujete následovně:

sudo apt-get install gedit-plugins

Užitečná rozšíření lze nalézt Úpravy -> Předvolby -> záložka Zásuvné moduly:

  • doplňování slov: nabídne doplnění slova, pokud se už v dokumentu vyskytuje
  • doplňování závorek: pokud napíšete levou závorku, pravou vám automaticky doplní
  • komentování kódu: pomocí Ctrl + M provede zakomentování označených řádků, Ctrl + Shift + M odkomentuje označené řádky
  • velikost textu: pomocí Ctrl a otáčením kolečka myši zvětšuje nebo zmenšuje text

Zdroj: ubuntuforums.org/…=2255481

Vytvoření volitelně dlouhého řetězce znaků v Javě

Občas je potřeba vytvořit řetězec znaků o volitelné délce. Pro tento případ lze využít třídy Arrays a její metody fill() a toho, že řetězec v Javě lze vytvořit z pole znaků.

char c = '=';
String headerText = " A W E S O M E   P R O G R A M ";

char[] charArray = new char[headerText.length()];
Arrays.fill(charArray, c);
String headerLine = new String(charArray);

System.out.println(headerLine);
System.out.println(headerText);
System.out.println(headerLine);

Výsledek

===============================
 A W E S O M E   P R O G R A M 
===============================

Obdobně, ale na jediné řádce a pomocí metody replace().

String headerLine = new String(new char[headerText.length()]).replace('\0', c);

Zdroj: stackoverflow.com/…/create-a-string-with-n-characters

Spring Initializr

Spring Initializr je generátor Spring projektů. Jedná se o webové rozhraní kde je možné zadat parametry projektu a po kliknutí na „Generate Project“ se stáhne .zip soubor s vygenerovaným projektem. Jelikož se jedná o Maven projekt (nebo Gradle project, záleží na tom, co si vyberete), je pak velmi jednoduché ho naimportovat do preferovaného IDE a začít vyvíjet. Spring Initializr vám vygeneruje adresářovou strukturu projektu, přidá všechny potřebné závislosti a provede základní nastavení tak, že projekt lze sbuildovat a spustit.

Pokud použijete integrovanou databázi jako například H2, nemusíte pro spuštění vygenerovaného projektu nastavovat nic. Pokud chcete použít externí databázi jako například PostgreSQL, bude vám stačit dodat jen konfiguraci DataSource: řetězec pro připojení, uživatelské jméno, heslo.

spring_initializr

Na snímku je vidět, že budu generovat projekt s názvem „myproject“ a jako závislosti budou použity JPA a databáze H2.