2010/11/16

Internationalization и localization в Intellij Idea

Небольшая заметка на тему локализации приложения на основе i18n и как оказалось GUI Builder Iidea поддерживает локализацию приложения на основе *.properties файлов (линк на небольшой скринкаст от Idea). Честно сказать было не совсем ясно, но эмпирическим путем сформировался мануал как заставить приложение читать разные *.properties файлы. Итак
1) Идем в Settings | Inspections | Internationalization issue и ставим галку Hard codded strings
2) Создаем в нужном вам пакете example.properties с соответствующими значениями и вешаем их на компоненты, это будет нашей дефолтной локализацией
3) Чтобы добавить новые локализации создаем в том же пакете файлы example_ru.properties, example_us.properties и пишем туда нужные названия для компонентов.

Вот и все в GUI builder можно переключать нужные локализации и смотреть результат.

2010/11/14

Конвертация из разных СС

Записываю чтоб не забыть, а то постоянно в jdoc лезть замучился.
Пример прозрачен из шестнадцатеричной в двоичную и наоборот:
public class Convert{

    public String hexToBin(String hex) {
        int result = Integer.parseInt(hex,16);
        return Integer.toBinaryString(result);
    }

    public String binToHex(String bin) {
        int result = Integer.parseInt(bin,2);
        return Integer.toHexString(result);
    }
}

2010/10/23

Работа с файлами.

Пишем и читаем byte[].
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class ReadWriteFile {
 
 public byte[] readFile(File file) {
  try {
   InputStream is = new FileInputStream(file);   
   byte[] bytes = decodeBase64(is);   
         is.close();
   return bytes;
  } catch (FileNotFoundException e) {
   e.printStackTrace(); 
   return null;
  } catch (IOException e) {
   e.printStackTrace();
   return null;
  }
 }
 
 public void writeFile(String fileName, byte[] fileByteArray) {
  FileOutputStream fos;
  try {
   fos = new FileOutputStream(fileName);
   fos.write(fileByteArray);
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }  
}

2010/01/25

Реализация MD5 через java.security.*;

Хотел бы привести пример реализации MD5 на Java. Использовалась стандартная библиотека java.security.*; и java.math.BigInteger;
package net.dreamx.md5;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Main {
 
 // исходное сообщение в hex
 static byte[] s = new byte[] {
        (byte)0x32, (byte)0x32, (byte)0x37, (byte)0x38, 
        (byte)0x31, (byte)0x37, (byte)0x31, (byte)0x34, 
        (byte)0x50, (byte)0xD8, (byte)0xE7, (byte)0xA4, 
        (byte)0x71, (byte)0x63, (byte)0x0E, (byte)0xD1
 };
 
 public static String md5(byte[] message) {
  
  MessageDigest md;
  try {
   md = MessageDigest.getInstance("MD5");
   md.update(message);
   BigInteger hash = new BigInteger(1, md.digest());
   return hash.toString(16);
  } catch (NoSuchAlgorithmException e) {
   e.printStackTrace();
   return "Error";
  }
 }
 
 public static void main (String args[]) {
  System.out.print(md5(s));
  System.exit(0);
 }
}