2007年2月15日 星期四

derby似乎也是朝sybase全方面的拓展procedure,fuction的功能

http://wiki.apache.org/db-derby/DerbySQLroutines

用很少的差異,也不要自訂語法。

整合進來,但不要搞得複雜。

derby原生就是java 。

就是調整它,拿一個需求展開來操它

http://db.apache.org/derby/docs/10.2/tuning/

什麼都有,卻不用太大的java db。

db是什麼?

小而美而快的db。

操它又讓它能更快一點。

又是一個不知所謂的derby的cousor功能

stmt.executeUpdate("UPDATE SAMP.STAFF SET COMM = " +
"COMM + 20 " + "WHERE CURRENT OF " + ResultSet.getCursorName());

自由到,覺得有點怪??


derby 的進階功能,call procedure,call function

能簡單的call function是重要的,
相對於
sybase還要花8萬,
真讓人不爽,

derby的效能是差在那裏呢?

embeded的db,web server,所有皆可可攜性。

這是範例??
CREATE FUNCTION TO_DEGREES(RADIANS DOUBLE) RETURNS DOUBLE
PARAMETER STYLE JAVA NO SQL LANGUAGE JAVA
EXTERNAL NAME 'java.lang.Math.toDegrees'
這是什麼鬼創建方式??

真的假的。

Example

CREATE PROCEDURE SALES.TOTAL_REVENUE(IN S_MONTH INTEGER,
IN S_YEAR INTEGER, OUT TOTAL DECIMAL(10,2))
PARAMETER STYLE JAVA READS SQL DATA LANGUAGE JAVA EXTERNAL NAME
'com.acme.sales.calculateRevenueByMonth'

第三行後就不知所謂了。

也太像寫作文了吧

derby的流水號欄位,及範例

CREATE TABLE HOTELAVAILABILITY
(HOTEL_ID INT NOT NULL, BOOKING_DATE DATE NOT NULL,
ROOMS_TAKEN INT DEFAULT 0, PRIMARY KEY (HOTEL_ID, BOOKING_DATE));
-- the table-level primary key definition allows you to
-- include two columns in the primary key definition

PRIMARY KEY (hotel_id, booking_date))
-- assign an identity column attribute to an INTEGER
-- column, and also define a primary key constraint
-- on the column

CREATE TABLE PEOPLE
(PERSON_ID INT NOT NULL GENERATED ALWAYS AS IDENTITY
CONSTRAINT PEOPLE_PK PRIMARY KEY, PERSON VARCHAR(26));
-- assign an identity column attribute to a SMALLINT
-- column with an initial value of 5 and an increment value
-- of 5.

CREATE TABLE GROUPS
(GROUP_ID SMALLINT NOT NULL GENERATED ALWAYS AS IDENTITY
(START WITH 5, INCREMENT BY 5), ADDRESS VARCHAR(100), PHONE VARCHAR(15));

用力找時,反而找不到,不用力找時,反而很多。

http://db.apache.org/derby/docs/10.2/devguide/

http://db.apache.org/derby/docs/10.2/ref/

CREATE TABLE MAPS
(
MAP_ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
MAP_NAME VARCHAR(24) NOT NULL,
REGION VARCHAR(26),
AREA DECIMAL(8,4) NOT NULL,
PHOTO_FORMAT VARCHAR(26) NOT NULL,
PICTURE BLOB(102400),
UNIQUE (MAP_ID, MAP_NAME)
)

always 算是關鍵字,總覺得不太習慣。
整個句子拉得很長!
它的參數也別具風格,
自定一個db也算是愈來愈接近了。
高興的語法。
中文式的開table法。

或是中文欄位,當然是unicode的中文。

所以網路上所有用mysql的範例,要相對的修改。


有不少erp是不用自動加1欄位的。

2007年2月12日 星期一

終於,快要下一步

Exception in thread "main" org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): kt.com.User
at org.hibernate.id.Assigned.generate(Assigned.java:33)

全天下都是照抄範例

derby 也有啊

Exception in thread "main" org.hibernate.InvalidMappingException: Could not parse mapping document from resource kt/com/User.hbm.xml

Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from invalid mapping
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:502)
at org.hibernate.cfg.Configuration.addResource(Configuration.java:566)
... 7 more
Caused by: org.xml.sax.SAXParseException: The content of element type "class" must match "(meta*,subselect?,cache?,synchronize*,comment?,tuplizer*,(id|composite-id),discriminator?,natural-id?,(version|timestamp)?,(property|many-to-one|one-to-one|component|dynamic-component|properties|any|map|set|list|bag|idbag|array|primitive-array)*,((join*,subclass*)|joined-subclass*|union-subclass*),loader?,sql-insert?,sql-update?,sql-delete?,filter*,resultset*,(query|sql-query)*)".


//CREATE TABLE user1 (
// id INT NOT NULL PRIMARY KEY,
// name VARCHAR(100) NOT NULL default '',
// age INT
//);

derby 的流水號欄位,怪,找不到




一直節外生枝

Hibernate 滿是挫折中…

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not get or update next value
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.engine.TransactionHelper$1Work.doWork(TransactionHelper.java:41)
at org.hibernate.engine.transaction.Isolater$JdbcDelegate.delegateWork(Isolater.java:187)
at org.hibernate.engine.transaction.Isolater.doIsolatedWork(Isolater.java:43)
at org.hibernate.engine.TransactionHelper.doWorkInNewTransaction(TransactionHelper.java:51)
at org.hibernate.id.TableGenerator.generate(TableGenerator.java:94)
at org.hibernate.id.TableHiLoGenerator.generate(TableHiLoGenerator.java:61)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:99)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
at kt.com.FirstHibernate.main(FirstHibernate.java:29)
Caused by: java.sql.SQLException: Table/View 'HIBERNATE_UNIQUE_KEY' does not exist.
at org.apache.derby.client.am.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
at org.apache.derby.client.am.Connection.prepareStatement(Unknown Source)
at org.hibernate.id.TableGenerator.doWorkInCurrentTransaction(TableGenerator.java:131)
at org.hibernate.engine.TransactionHelper$1Work.doWork(TransactionHelper.java:38)
... 15 more
Caused by: org.apache.derby.client.am.SqlException: Table/View 'HIBERNATE_UNIQUE_KEY' does not exist.
at org.apache.derby.client.am.Statement.completeSqlca(Unknown Source)
at org.apache.derby.client.net.NetStatementReply.parsePrepareError(Unknown Source)
at org.apache.derby.client.net.NetStatementReply.parsePRPSQLSTTreply(Unknown Source)
at org.apache.derby.client.net.NetStatementReply.readPrepareDescribeOutput(Unknown Source)
at org.apache.derby.client.net.StatementReply.readPrepareDescribeOutput(Unknown Source)
at org.apache.derby.client.net.NetStatement.readPrepareDescribeOutput_(Unknown Source)
at org.apache.derby.client.am.Statement.readPrepareDescribeOutput(Unknown Source)
at org.apache.derby.client.am.PreparedStatement.readPrepareDescribeInputOutput(Unknown Source)
at org.apache.derby.client.am.PreparedStatement.flowPrepareDescribeInputOutput(Unknown Source)
at org.apache.derby.client.am.PreparedStatement.prepare(Unknown Source)
at org.apache.derby.client.am.Connection.prepareStatementX(Unknown Source)
... 18 more

真是累

預計,在
年假回來後的那週。

就這兩枝報表
及出貨達成率的
一些待討論的地方,
開一跨部門的協調會(希望以生管單位為召開單位,將此計算公式,值得討論的地方跟業務單位協調,讓執行單位,能正確無誤的計算出合理的數字,
之前執行單因統計數字難判定的緣故,先以問卷試行過,也可以此問卷為基礎,現在面臨的狀況是執行單位自行對目標的kpi值進行設計及計算,而計算完後的結果,還需向使用單位進行討論及解釋,結果就是目前的狀況,報表做好了很久,仍覺得不合理)。


現在也正在了解預出貨金額統計表中,好像也是蠻多小細節待了解。

2007年2月11日 星期日

有點不一樣了,真得要更新,徒生挫折!切

root@mis01:~# apt-get install proftpd
Reading package lists... Done
Building dependency tree
Reading state information... Done
proftpd is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 27 not upgraded.

果然要更新來源的source檔,意思是我根本沒更新過來源!!

root@mis01:~# apt-get -f install
Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... Done
The following extra packages will be installed:
libpq4 ucf
Recommended packages:
debconf-utils
The following NEW packages will be installed:
libpq4 ucf
0 upgraded, 2 newly installed, 0 to remove and 27 not upgraded.
1 not fully installed or removed.
Need to get 263kB of archives.
After unpacking 1016kB of additional disk space will be used.
Do you want to continue [Y/n]? Y
Get:1 http://archive.ubuntu.com edgy/main ucf 2.0012 [55.2kB]
Get:2 http://security.ubuntu.com edgy-security/main libpq4 8.1.4-7ubuntu0.3 [207kB]
Fetched 263kB in 4s (52.8kB/s)
Preconfiguring packages ...
Selecting previously deselected package libpq4.
(Reading database ... 16645 files and directories currently installed.)
Unpacking libpq4 (from .../libpq4_8.1.4-7ubuntu0.3_amd64.deb) ...
Selecting previously deselected package ucf.
Unpacking ucf (from .../archives/ucf_2.0012_all.deb) ...
Moving old data out of the way
Setting up libpq4 (8.1.4-7ubuntu0.3) ...

Setting up ucf (2.0012) ...

Setting up proftpd (1.3.0-9ubuntu0.1) ...
Adding system user `proftpd' with uid 105...
Adding new user `proftpd' (105) with group `nogroup'.
Not creating home directory `/var/run/proftpd'.
Adding system user `ftp' with uid 106...
Adding new user `ftp' (106) with group `nogroup'.
Creating home directory `/home/ftp'.
`/usr/share/proftpd/templates/welcome.msg' -> `/home/ftp/welcome.msg.proftpd-new'
ProFTPd warning: cannot start neither in standalone nor in inetd/xinetd mode. Check your configuration.

還是要修改設定檔。

用tw 的來源

Get:75 http://apt.ubuntu.org.tw edgy-security/multiverse Sources [14B]
Get:76 http://apt.ubuntu.org.tw ubtw/ Packages [4807B]
Get:77 http://apt.ubuntu.org.tw ubtw-edgy/ Packages [979B]
Get:78 http://apt.ubuntu.org.tw ubtw-testing/ Packages [8034B]
Fetched 11.4MB in 22s (516kB/s)
Reading package lists... Done

Get:51 http://archive.ubuntu.com edgy-backports/universe Sources [5295B]
Get:52 http://archive.ubuntu.com edgy-backports/multiverse Sources [1466B]
Fetched 6468kB in 31s (204kB/s)
Reading package lists... Done
W: GPG error: http://medibuntu.sos-sts.com edgy Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 2EBC26B60C5A2783
W: You may want to run apt-get update to correct these problems


換來源應該是要更新一下。

dpkg-傷腦筋中…怕把問題括大

Selecting previously deselected package proftpd.
dpkg: considering removing proftpd-common in favour of proftpd ...
proftpd-common is not properly installed - ignoring any dependencies on it.
dpkg: yes, will remove proftpd-common in favour of proftpd.


(Reading database ... 16613 files and directories currently installed.)
Unpacking proftpd (from proftpd_1.3.0-9ubuntu0.1_amd64.deb) ...
dpkg: dependency problems prevent configuration of proftpd:
proftpd depends on libpq4 (>= 8.1.4); however:
Package libpq4 is not installed.

proftpd depends on ucf (>= 0.30); however:
Package ucf is not installed.

dpkg: error processing proftpd (--install):
dependency problems - leaving unconfigured

Errors were encountered while processing:
proftpd


root@mis01:~# dpkg -P proftpd-common
(Reading database ... 16645 files and directories currently installed.)
Removing proftpd-common ...
Purging configuration files for proftpd-common ...
/var/lib/dpkg/info/proftpd-common.postrm: 13: ucf: not found
dpkg: error processing proftpd-common (--purge):
subprocess post-removal script returned error exit status 127
Errors were encountered while processing:
proftpd-common


iU proftpd 1.3.0-9ubuntu0.1 Versatile, virtual-hosting FTP daemon
pc proftpd-common 1.2.10-20~hoary1 Versatile, virtual-hosting FTP daemon

dpkg的格式

root@mis01:~# dpkg -l | more
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name Version Description
+++-=============================-=======================-============================
================

2007年2月9日 星期五

融合後的structs,也是2.0版

Key features of the framework include:

Core

  • Pluggable framework architecture that allows request lifecycles to be customized for each action.外掛的底層,每一個行動有客製的循環
  • Flexible validation framework that allows validation rules to be decoupled from action code.延展性高的有效性底層,和每一個行動不用綁在一起
  • Hierarchical approach to internationalization that simplifies localizing applications.簡化在地化的程式
  • Automatic type conversion that transparently maps values from HTTP to native Java data objects, solving one of the most tedious efforts when creating web applications.形別轉換,減少人力浪費
  • Integrated dependency injection engine that manages component lifecycle and dependencies. (By default, the framework utilizes Spring for dependency injection.)也是借用春天來依賴相依注射
  • Modular configuration files that use packages and namespaces to simplify managing large projects with hundreds of actions.模組化的設定檔
  • Java 5 annotations that reduce configuration overhead. (Java 1.4 is the minimum platform.)註解檔減少設定檔的重擔

View

  • Reusable user interface tags that allow for easy component-oriented development using themes and templates. Bundled tags ranges from simple text fields to advanced tags like date pickers and tree views.重用性高的標千,允許簡單的元件導件的建構,使用佈景和樣板,整合了簡單的輸入欄位和進階的時間欄位和樹狀展示
  • JSTL-compatible expression language (OGNL) that exposes properties on multiple objects as if they were a single JavaBean.標千語言相容,把物件的屬性也展示出來
  • Pluggable Result Types that support multiple view technologies, including JSP, FreeMarker, Velocity, PDF, and JasperReports.外掛的回傳結果型別,支援多種展示的技術,如JSP/FM/V/PDF/JP
  • Optional AJAX theme that simplifes creating interactive web applications.可選擇的
  • Optional Interceptor plugins that can execute long-running queries in the background, prevent multiple form submissions, or handle custom security schemes.可選擇的攔截器

Other

對商業應用友善的阿帕契2.0