neděle 27. prosince 2009

Změna nastavení IP adresy pomocí dávkového batch (.bat) souboru


Pokud se stejně jako já ocitnete v situaci, kdy potřebujete často měnit nastavení TCP/IP protokolu (IP adresa, maska, …), např. když přenášíte PC mezi prací a domovem a nechcete jej ručně zadávat, mám pro vás pohodlné řešení. Spočívá v automatické změně nastavení pomocí souboru s příponou .bat, kterému se také říká dávkový soubor, anglicky batch file. Do tohoto souboru můžete vložit skript, který se po spuštění souboru vykoná v příkazové řádce (command line, cmd.exe).

Nyní už se podíváme na postup vytvoření takového souboru.

Otevřete si textový editor, nejlépe PSPad.

Pokud chcete nastavit statickou IP adresu vložte následující kód:

netsh interface ipv4 set address name="nazevPripojeni" static ipAdresa maskaSite vychoziBrana 1
netsh interface ipv4 set dns name="nazevPripojeni" static primarniDNSServer primary
netsh interface ipv4 add dns name="nazevPripojeni" sekundarniDNSServer 2
ipconfig /flushdns

kde nazevPripojeni = název připojení u kterého měníte nastavení
ipAdresa = požadovaná IP adresa
maskaSite = požadovaná maska sítě
vychoziBrana = požadovaná adresa výchozí brány
primarniDNSServer = adresa primárního DNS serveru
sekundarniDNSServer = adresa sekundárního DNS serveru

Příklad:

netsh interface ipv4 set address name="Připojení k místní síti" static 192.168.0.1 255.255.255.0 192.168.0.1 1
netsh interface ipv4 set dns name="Připojení k místní síti" static 192.168.0.1  primary
netsh interface ipv4 add dns name="Připojení k místní síti" 192.168.0.2  2
ipconfig /flushdns

Pokud chcete nastavit získávání adres automaticky z dhcp serveru, vložte tento kód:

netsh interface ip set address name="nazevPripojeni" source=dhcp
netsh interface ip set dns name="nazevPripojeni" source=dhcp
ipconfig /flushdns
ipconfig /renew LAN

Nýní textový soubor uložte s příponou bat, např. doma.bat, prace.bat, apod.

Po spuštění souboru se provede změna nastavení.

Podpora v různých verzích windows:

Ve Windows XP by něměl být se spuštěním souboru žádný problém.

Ve Windows Vista a Windows 7 je třeba spustit soubor s administrátorskými právy. (Pravé na soubor => spustit jako správce)

Diakritika v batch filech

Pokud máte lokalizovanou verzi Windows, je možné, že Vaše připojení ponese název „Připojení k místní síti“. Diakritika ovšem může dělat problémy, proto pokud Vám program nastavení nezmění, pauzněte skript probíhající v příkazovém řádku pomocí klávesy pause/break a zkontrolujte název připojení. Pokud obsahuje nečeské znaky, máte dvě možnosti:
  1. přejmenovat ve windowsech svoje připojení
  2. uložit skript s jiným kódováním

ad 2 – otevřete script ve wordpadu a dejte uložit jako, formát souboru zvolte textový dokument – formát MS-DOS. Poté ještě jednou otevřete soubor v PSPadu a zvolte Formát => Latin II a uložte. Nyní by mělo být vše v pořádku a název připojení by se měl v příkazovém řádku zobrazovat správně.

pátek 25. prosince 2009

Akce v Javě

Jedna z možností jak dosáhnout obsluhy tlačítek v Javě jsou také akce. Přesněji řečeno rozhraní Action a třída AbstractAction. Mimo jiné poskytují akce také tu výhodu, že můžou být sdíleny více nabídkami, například jedna akce může být přiřazena do menu i do nástrojové lišty. Další výhody spočívají ve snadném přidání ikonek, bublinkové nápovědy apod.



Stručná ukázka použití akcí:



private AkceBarva cervenaAkce, zlutaAkce, zelenaAkce, modraAkce;

menu.add(zlutaAkce=new AkceBarva("Žlutá",Color.YELLOW));

menu.add(cervenaAkce=new AkceBarva("Červená",Color.RED));

menu.add(zelenaAkce=new AkceBarva("Zelená",Color.GREEN));

menu.add(modraAkce=new AkceBarva("Modrá",Color.BLUE));



class AkceBarva extends AbstractAction {
private Color barva;
\
public AkceBarva(String jmeno,Color barva) {
super(jmeno);
this.barva = barva;
}


public void actionPerformed(ActionEvent e) {
getContentPane().setBackground(barva);

}

}




Tento příklad změní barvu pozadí okna. Akce je vložena do JMenu pomocí menu.add().

Ukládání objektů v Javě

Níže uvidíte kód pro ukládání objektů na disk a jejich zpětné načítání. Nutno podotknout, že objekty takto ukládané musí implementovat rozhraní Serializable.


import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;




public class Ukladani {

public void ulozObjekt(Object obj, String cesta) {

ObjectOutputStream vystup = null;

try {
vystup = new ObjectOutputStream(
new BufferedOutputStream(
new FileOutputStream(cesta)));
} catch (FileNotFoundException e) {
System.out.print("File not found exception");
} catch (IOException e) {
System.out.print("IOException");
}

try {
vystup.writeObject(obj);
} catch (IOException e) {
System.out.print("IO");
}

try {
vystup.close();
} catch (IOException e) {

}
}

public Object nactiObjekt(String cesta){

ObjectInputStream vstup = null;
try {
vstup = new ObjectInputStream(
new BufferedInputStream(
new FileInputStream(cesta)));
} catch (FileNotFoundException e) {

e.printStackTrace();
} catch (IOException e) {

e.printStackTrace();
}


Object os = null;
try {
os = (Object)(vstup.readObject());
} catch (IOException e) {

e.printStackTrace();
} catch (ClassNotFoundException e) {

e.printStackTrace();
}
return os;
}

}