Top.Mail.Ru
? ?

balmaster, posts by tag: java - LiveJournal

Entries by tag: java

неломающее изменение структуры бд
Image
Imagebalmaster
Задумал сделать утилиту, которая умеет приводить структуру бд к заданному состоянию
и допускающую только неломающие изменения

вспомнил что подобное должно быть в jpa провайдерах

посмотрел: Hibernate, OpenJPA, EclipseLink, BatooJPA, EbeanOrm, DataNucleus

оказалось что только один удовлетворяют моим требованиям
1) желаемая структура бд должна задаваться в виде описывающих ее структур данных
2) должны поддерживаться изменения структуры таблиц, сиквенсов, индексов, вторичных ключей и юников

Hibernate

Подробнее:

hibernate
https://github.com/hibernate/hibernate-orm
org.hibernate.tool.schema.internal.SchemaMigratorImpl
для работы требуются структуры описывающие конфигурацию
умеет генерировать alter команды
умеет обновлять индексы


openjpa
https://github.com/apache/openjpa
org.apache.openjpa.jdbc.meta.MappingTool
для работы требуется классы


eclipselink
https://github.com/eclipse/eclipselink.runtime
org.eclipse.persistence.tools.schemaframework.SchemaManager
для работы требуются структуры описывающие конфигурацию
неумеет работать с индексами
последовательности пересоздает


BatooJPA
https://github.com/BatooOrg/BatooJPA
org.batoo.jpa.core.impl.deployment.DdlManager
из-за протечек абстракций для для работы требуются классы описывающие конфигурацию, потомучто java типы для полей получаются из них

умеет генерировать alter команды
умеет обновлять индексы


ebeanorm
https://github.com/ebean-orm/avaje-ebeanorm
com.avaje.ebeaninternal.server.ddl.DdlGenerator
не умеет генерировать alter команды


datanucleus
https://github.com/datanucleus/datanucleus-core
org.datanucleus.store.schema.SchemaTool
не умеет генерировать alter команды

kerberos
Image
Imagebalmaster

Kerberos

Описание логики протокола

Спектакль в 4 актах, читать обязательно :) это лучшее из имеющихся описание

LINK

Основные проблемы

  • Когда используется IE для single sign on, он всегда использует "service class" - HTTP для SPN
  • Перед получением тикета OS выясняет какое настоящее имя хоста сервера, из DNS запрашивается address record по ip

Таким образом правильный SPN для браузера:

HTTP/<server host DNS address record>@<windows domain>
Хотите знать больше...Collapse )

установка java 1.3 на debian x86_64
Image
Imagebalmaster
установить jdk 1.3
http://download.oracle.com/otn/java/j2sdk/1.3.1_20/j2sdk-1_3_1_20-linux-i586.bin

затем поправить 4 wrapper файла

{jdk13_home}/bin/.java_wrapper
{jdk13_home}/bin/realpath
{jdk13_home}/jre/bin/.java_wrapper
{jdk13_home}/jre/bin/realpath

исправить строку

i[3-6]86 | ia32 | ia64 | i?86)

на

i[3-6]86 | ia32 | ia64 | i?86 | x86_64)

затем устаноить пакет
http://archive.debian.net/woody/i386/libstdc++2.9-glibc2.1/download

проверка

export DEBUG_PROG=ldd

$ {jdk13_home}/bin/java
    linux-gate.so.1 (0xf7741000)
    libpthread.so.0 => /lib/i386-linux-gnu/i686/cmov/libpthread.so.0 (0xf7707000)
    libhpi.so => /opt/java/jdk1.3.1_20/jre/lib/i386/native_threads/libhpi.so (0xf76fc000)
    libjvm.so => /opt/java/jdk1.3.1_20/jre/lib/i386/client/libjvm.so (0xf73a8000)
    libdl.so.2 => /lib/i386-linux-gnu/i686/cmov/libdl.so.2 (0xf73a3000)
    libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xf71f8000)
    /lib/ld-linux.so.2 (0xf7744000)
    libnsl.so.1 => /lib/i386-linux-gnu/i686/cmov/libnsl.so.1 (0xf71df000)
    libm.so.6 => /lib/i386-linux-gnu/i686/cmov/libm.so.6 (0xf7198000)
    libstdc++-libc6.1-1.so.2 => /usr/lib/libstdc++-libc6.1-1.so.2 (0xf7156000)

(no subject)
Image
Imagebalmaster
Старый но очень хороший пост по JMM
http://habrahabr.ru/post/143390/

ANT, Java and Windows UNC patches
Image
Imagebalmaster
Задача копировать файлы на удаленную машину (Windows) используя свтроенные средства ANT

Как задавать каталог на удаленной машине? UNC?


<copy file="test" tofile="file:////SERVER1-TLS/c$/test1"/>
приводит к ошибке
D:\temp\build.xml:4: Failed to copy D:\temp\test to D:\temp\file:\SERVER1-TLS\c$\test1 due to java.io.FileNotFoundException D:\temp\file:\SERVER1-TLS\c$\test1 (The filename, directory name, or volume label syntax is incorrect)

<copy file="test" tofile="//SERVER1-TLS/c$/test1"/>

Отлично работает

То есть правильное сопоставление UNC (remote file name) <==> URI

//SERVER/some/path" <==> file:////SERVER/some/path



почему ант таск copy не принимает URI имена?
Ant task Copy описание не дает ответа в каком формате должны быть имена файлов
org.apache.tools.ant.taskdefs.Copy
private void copySingleFile()
{
...
fileCopyMap.put(file.getAbsolutePath(),new String[] {destFile.getAbsolutePath()});
...
}
Использование getAbsolutePath говорит о том что ANT Copy ничего не знает про URI, поэтому пути нужно передавать в формате ОС



Захотелось разобраться что такое URI и как оно различается для разных OS
Read more...Collapse )
Tags: , ,

Hex 2 Str and Str 2 Hex - NET vs JAVA
Image
Imagebalmaster
Преобразование строки в шестнадцатеричное представление и обратно


Как это не странно, но для данных
операций разработчики часто пишут собственные велосипеды :). Не
исключая разработчиков MS, Sun и Apache:)

Вношу свою ложку порядка в бочку хаоса.

.NET


Version: 2.0

Стандартный способ


System.Runtime.Remoting.Metadata.W3cXsd2001
public sealed class SoapHexBinary : ISoapXsd
{
...
    public SoapHexBinary(byte[] value);
...
    public static SoapHexBinary Parse(string value);
...
    public override string ToString();
...
    public byte[] Value { get; set; }
...
}

Byte[] res = SoapHexBinary.Parse(“<string>”).Value;

String res = new SoapHexBinary(new byte[] {0xx, 0xx, …,0xx}).ToString();

Internal велосипеды от MSCollapse )

JAVA


Программисты Java не отстают от своих NET собратьев, и пишут велосипеды с еще большим энтузиазмом

рассматривалась Version 1.6 (from Sun)

Стандартный способ


Позволяет приводить различные данные к строковому представлению и
обратно, в том числе и hex str. Документирован!
Но хрен найдеш туториал где рассказывается про него :(

javax.xml.bind.DatatypeConverter


появился в 1.5
final public class DatatypeConverter {
...
   public static byte[] parseHexBinary( String lexicalXSDHexBinary )
...
    public static String printHexBinary( byte[] val ) 
...
}

ВелосипедыCollapse )

Как Oracle поступит с продуктами Sun?
Image
Imagebalmaster
очень подробно аргументированное мнение
http://www.infoworld.com/d/developer-world/what-if-oracle-bought-sun-microsystems-859

Думаю из 3х виртуальным java машин (Oracle,BEA,Sun) он всетаки склепают одну.
А из трех серверов приложений (Oracle AS,Weblogic,Glassfish) останется только один!
Tags:

Version 0.21.0 of Maven Book
Image
Imagebalmaster
Для тех кто использует maven для сборки и управления зависимостями
Maven: The Definitive Guide
http://books.sonatype.com/maven-book/
Tags: ,

Пробелы в значении jar manifest Class-path attribute
Image
Imagebalmaster

речь идет про java 1.6.0_05 и меньше

Простая задача в манифесте указать зависимости от других jar

но если и просто перечислять в строке через пробел

Class-path: libs/jar1 libs/jar2 …

то натыкаемся на ограничение в 72 символа в строке с выбрасыванием соответствующего ексепшена

надо Class-path в несколько строк писать. Вот тут и начинаются проблемы с пробелами, особенно если данный jar нужно собрать немедленно и манифест написать вручную - готового скрипта для сборки еще нет.

 

Вопрос к зрителям

Class-path: libs/jar1

libs/jar2

 

преобразуется в Class-path: libs/jar1 libs/jar2

или в Class-path: libs/jar1libs/jar2?

 

по идее документ http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html#Manifest%20Specification

должен это описывать, но он этого не делает :)

Read more...Collapse )
Tags:

MyEclipse
Image
Imagebalmaster
Так уж получилось что у меня в проектах сейчас много java ee
встал вопрос со средой разработки - выбрали eclipse.
в нем нехватало некоторых возможностей которые присутствуют в My Eclipse типа дизайнера GUI например.

My Eclipse платный но лицензионная политика вменяемая - в общем мы его купим попозже.

Но таки не удержался ковырнул его защиту. По основным классам там обфускатором прошлись но имеющий прямые руки да увидит :)

всплыли интересные вещи например ;)
int calcHash = hash((new StringBuilder(String.valueOf(licStr)))
.append("Decompiling this copyrighted software is a violation of both"+
+ " your license agreement and the Digital Millenium Copyright"
+ " Act of 1998 (http://www.loc.gov/copyright/legislation/dmca.pdf)."
+ " Under section 1204 of the DMCA, penalties range up to a $500,000"
+ " fine or up to five years imprisonment for a first offense."
+ " Think about it; pay for a license, avoid prosecution, and feel"
+ " better about yourself.")
.append(licenseName).toString());

читаеш и проникаешся.
кстати если посмотреть по их списку забаненых ключей для 6 версии в паблик утекло не более 15 ключей. Учитывая то что лицензия привязана только к имени а не к компьютеру то у них очень лояльные пользователи.

Image