Java: кодировка в Hibernate

Возникла ситуация, в которой при сохранении не-англоязычного текста в базу сохранялись вопросики. Понятно что дело в кодировке подключения к БД (хотя так же может быть и кодировка таблиц, если не юникод). Используется Hibernate 3 из-под бинов Spring 3.0.2

Кусок конфигурации из applicationContext.xml, где устанавливается DataSource (в нём и задаются настройки подключения)

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/dbname"></property>
<property name="username" value="_user_"></property>
<property name="password" value="_pass_"></property>
</bean>

Read more

Android: ListView в сложном layout

Если есть потребность совместить ListView с какми-либо ещё View в одном Activity, то требуется соблюсти несколько правил:

  • Обязательно наследовать активити от ListActivity, а не от Activity
  • В onCreate() Activity поместить установку разметки, навроде setContentView(R.layout.chat);
  • Поместить в корень layout пустой ListView c android:id="@android:id/list"
  • Для адаптера списка вызывать setListAdapter(mUidsAdapter);

Read more

j2me: пример с падающим мячиком

Хочу поделиться одним своим примером приложения для мобильной java. Основная задача - понять как пишутся такие приложения под телефоны. Вроде задачу выполнил :). В программке можно передвигать мяч, падающий в "гравитационном" поле по законам физики(надеюсь), задавать его скорость и направление движения, как водя по сенсорному экрану телефона(если есть) так и кнопками

В эмуляторе выглядит всё не так красиво, как в живую, поэтому продемонстрирую на телефоне(SE P1i)




Понравилось? Для начала работы с j2me - самое то.
Используется MIDP-2.0, CLDC-1.1.

Read more

Java: создание Jar руками

Бывают и такие ситуации, когда требуется скомпилить небольшое количество файлов в jar, например после небольшой правки кода, в консоли, и без IDE.

Всё довольно просто, достаточно разбить по шагам.

  • Скормить javac все исходники, прямо одной командой кучу файлов
  • Необходимо создать текстовый файл manifest в корне проекта(на уровне с src), в котором указать класс, который будет загружен(такого вида строчка Main-Class: practice.Main). Если не указать этот класс, то появится ошибка, навроде Failed to load Main-Class manifest attribute from
  • Запаковать все с помощью jar
  • По необходимости запустить командой java -jar file.jar

Read more

jdbc: неверная кодировка при работе с БД

Имеем:

  • Последний mysql connector/j
  • Кодировку БД, таблиц и полей в utf8_general_ci
  • Системную кодировку системы(древний ASP Linux) - cp1251
  • Принудительную установку кодировки при и после подключения:

    String connectionString = "jdbc:mysql://www.box/database"
    + "?useUnicode=true&characterEncoding=UTF-8"
    + "&charSet=UTF-8&encoding=UTF-8";
    Connection con = DriverManager.getConnection(connectionString,
    "someuser", "somepass");
    con.prepareStatement("SET CHARSET \"utf8\"").executeUpdate();
    con.prepareStatement("SET NAMES \"utf8\"").executeUpdate();

По факту в базу вставляются записи в виде абракадабры. Казалось бы - настроил всё что можно, причём однозначно везде юникод, что может быть не так?

Read more

Java: Скачать страницу или файл с веба

Самый простой способ скачать страницу или картинку или ещё что-то в вашем приложении - воспользоваться вот таким классом с одним статическим методом.


/**
* Fetch url
* @author rux
*/
public class Fetcher {

public static String get(String urlString) {
StringBuilder result = new StringBuilder();
String line;
try {
URL url = new URL(urlString);
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
while ((line = reader.readLine()) != null) result.append(line);
reader.close();
} catch (Exception e) {
// ...
}

return result.toString();
}

}

Read more

Смена дефолтной jvm в debian

Чтоб изменить виртуальную машину ява(jvm) по умолчанию можно воспользоваться утилиткой update-alternatives

У меня вот так:

update-alternatives --config java
Есть 4 вариантов для альтернативы java (предоставляет /usr/bin/java).

  Выбор   Путь                                  Приор Состояние
------------------------------------------------------------
  0            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      автоматический режим
  1            /usr/bin/gij-4.3                           43        ручной режим
  2            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      ручной режим
* 3            /usr/lib/jvm/java-6-sun/jre/bin/java       63        ручной режим
  4            /usr/lib/jvm/java-gcj/jre/bin/java         1042      ручной режим

Read more

Групповое переименование на java

Появилась цель написать элементарную программу которая будет переименовывать файлы. Да-да таких, каких щас море. Но представим что у нас нет интернета чтоб скачать такую программку, но есть много энтузиазма.

Read more

Кусочек строчки

Часто вывает необходимо вырезать кусочек из строки между определёными символами(наборами символов). Или вот тоже нетривиальная задача: вырезать что нибудь между чем нибудь, но обязательно кторое идёт после чего нибудь %)

Read more