úterý 29. listopadu 2011

Zip4j java knihovna, která opravdu umí zipovat.

Vypadá to, že pro Java konečně existuje použitelná, jednoduchá a funknční knihovna, která umí zipovat. Bože děkuji!

Domovské stránky projektu: http://www.lingala.net/zip4j/

Jinak pár týdnu tuhle knihovnu používáme a zatím nemáme jediný problém.

Příkládek

Zazipuje obsah adresáře "c:/sourceDir" do souboru "c:/target.zip" a použije nižší úroveň komprese.

  ZipFile zipFile = new ZipFile("c:/target.zip");
  File sourceFile = new File("c:/sourceDir");
  ZipParameters zipParameters = new ZipParameters();
  zipParameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_FAST);
  zipParameters.setIncludeRootFolder(false);
  zipFile.createZipFileFromFolder(sourceFile, zipParameters, false, 0);

Maven dependency

  <dependency>
     <groupid>net.lingala.zip4j</groupid>
     <artifactid>zip4j</artifactid>
     <version>1.2.5</version>
  </dependency>

pondělí 21. listopadu 2011

Java - SSL for Jersey Client

Programové nastavení SSL na Jersey
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;
import java.security.KeyStore;
...

private void setupSSL(ClientConfig clientConfig) {
    try {        
        //Pokud se použije starší:
        //SSLContext.getInstance("SSL");
        //muže to skončit na chybe pri handshake
        SSLContext ctx = SSLContext.getInstance("TLS");

        KeyStore ks = KeyStore.getInstance("JKS");

        //Nacteni z filu
        //ks.load(new FileInputStream("d:/tmp7/clientstore"), "KeystorePassword".toCharArray());

        //nacteni z classpathy
        URL clientStore = getClass().getResource("/path/to/store/clientstore");
        ks.load(clientStore.openStream(), "KeystorePassword".toCharArray());

        //kdyz se pouzije
        //TrustManagerFactory.getInstance("SunX509", "SunJSSE");
        //Tak to nepojede na IBM jave, protože ta ma IbmX509 a ne SunX509
        //Naštěstí tohle funguje na obou. On uz si to dohleda:
        TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509");
        tmf.init(ks);
        TrustManager tms[] = tmf.getTrustManagers();
        ctx.init(null, tms, null);
        clientConfig.getProperties().put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, new HTTPSProperties(null, ctx));
    } catch (Exception ex) {
        throw new RuntimeException("Ssl setup failed", ex);
    }
}
...
ClientConfig clientConfig = new DefaultClientConfig();
client = Client.create(clientConfig);

neděle 9. října 2011

Windows XP sdílení pomocí účtu bez hesla

Potom co jsem to dost dlouho hledal si to sem napíšu:
K Windows XP se nedá přistupovat přes sít pomocí uživatelského účtu bez hesla. Aby to bylo možné musí se povolit následujující:

Start -> Spustit... -> gpedit.msc
Konfigurace počítače -> Nastavení systému Windows -> Nastavení zabezpečení -> Místní zásady -> Možnosti zabezpečení -> "Účty: Omezit použití prázdného hesla místního účtu pouze pro přihlášení ke konzole."
Na to dvojklik a nastavit na Zakázáno.

Pak by mělo jít sdílet i pomocí účtů bez hesla. (Možná to chce ještě restart)


Jak povolit anonymní přihlášení jsem našel zase tady:
http://technet.microsoft.com/en-us/library/cc755781(WS.10).aspx#BKMK_Local

Start -> Run -> gpedit.msc
Konfigurace počítače -> Nastavení systému Windows -> Nastavení zabezpečení -> Místní zásady -> Možnosti zabezpečení -> "Přístup k síti: Použít oprávnění účtu Everyone pro anonymní uživatele"
Na to dvojklik a nastavit na Povoleno

pondělí 15. srpna 2011

Java - Hello world bez metody main()

Taková zajímavost. Jak napsat java program bez main() metody.
public class NoMainHelloWorld {
    static {
        System.out.println("Hello world.");
        System.exit(0);
    }
}

Předtím než java zavolá metodu main(), tak musí třídu nahrát, při nahrání třídy se inicializují statické bloky - při té příležitosti se v našem programu napíše "Hello world" a dřív než mu začne vadit, že nemá metodu main(). Tak se zavolá System.exit(0).

Co je tento blog zač.

Na blog bych chtěl dávat své poznámky týkající se programování pravděpodobně převážně o Javě. Příspěvky nebudou pravděpodobně moc doladěné, aby mě to nezabralo moc času a příliš mě neodrazovalo je psát.