面試官:熟悉哪種語言
應聘者:Java。
面試官:你會Hibernate嗎
應聘者:知道,動物冬天經常Hibernate,但我從來不冬眠
面試官:tomcat了解么
應聘者:小時看過。現在也喜歡看
面試官:用過 apache 的東西嗎
應聘者:沒有,我沒開過也沒座過直升機。
面試官:知道什么叫class么
應聘者:不知道。
面試官:知道什么叫類么
應聘者:我這人實在,工作努力,不知道什么叫累
面試官:知道什么是接口嗎?
應聘者:我這個人工作認真。從來不找借口偷懶
面試官:知道什么是package?
應聘者:不知道。
面試官:知道什么是包?
應聘者:我這人實在 平常不帶包 也不用公司準備了
面試官:知道什么叫對象么?
應聘者:知道,不過我工作努力,上進心強,暫時還沒有打算找對象。。
面試官:知道什么是繼承么
應聘者:我是孤兒沒什么可以繼承的
面試官:你知道google是干什么的么?
應聘者:等我先百度一下。
posted @
2007-05-19 11:27 金大為 閱讀(177) |
評論 (0) |
編輯 收藏
最近在搞JSI 的重構,少來冒泡了。
發一個中午的剛用到的小技巧:
在關機效果實現上,現在一般根據瀏覽器特征分別使用 慮鏡/樣式/圖片 去模擬。
其中Opera是不支持網頁透明的,只能用png的alpha透明模擬。
所以,我們需要一張特別的小圖片。一個象素,alpha透明。
但是這個單象素圖片的出現,感覺有點怪怪的,而且當網速很慢的時候,裝載這個小圖片還會延遲,效果不好。
不過,Opera的另外一個特性,可以避免這個問題:data:協議的支持。
對于這種小圖片,完全可以編碼到樣式里面
background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mM4ffp0AwAHqALiYeNxSgAAAABJRU5ErkJggg==)
好了,如此一來,關機效果的實現,就沒有圖片這個累贅了。
圖片的生成:
圖片的生成,浪費我一個中午的時間:(
開始本想找個軟件做掉,最后沒發現一個如意的,干脆,自己看看api,自己寫了一下:
代碼如下:
public static void main(String[] args) throws IOException {
BufferedImage image = new BufferedImage(1, 1,
BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = image.createGraphics();
// RGBA #cccccc80
g2d.setColor(new Color(0xcc, 0xcc, 0xcc, 0x80));
g2d.fillRect(0, 0, 1, 1);
g2d.dispose();
IIOImage iioImage = new IIOImage(image, null, null);
ImageTypeSpecifier type = ImageTypeSpecifier
.createFromRenderedImage(image);
ImageWriter writer = (ImageWriter) ImageIO.getImageWriters(type, "png")
.next();
ByteArrayOutputStream out = new ByteArrayOutputStream();
writer.setOutput(ImageIO.createImageOutputStream(out));
writer.write(null, iioImage, null);
BASE64Encoder encoder = new BASE64Encoder();
String result = encoder.encode(out.toByteArray()).replaceAll("[\r\n]",
"");
System.out.println("data:image/png;base64," + result);
}
需要其他顏色,自己修改一下代碼即是。
posted @
2007-05-18 15:30 金大為 閱讀(1306) |
評論 (1) |
編輯 收藏
第一次見到媒體的關注,精神為之一振。
^_^
一定好好做,不讓關注她的人群失望:)
posted @
2007-05-16 13:09 金大為 閱讀(147) |
評論 (0) |
編輯 收藏
想想,自己從事JSI的開發已經一年多了。
一直沒能找到合適的伙伴,就這么一個人走過來。
說累,主要不是身體上的累,時間自己可以控制。
一年前,無意間有了個自以為可以的想法,投入了一年多的時間(包括在家休養的半年),產品卻一直沒能正式發布,這個時候才體會到理想和現實的距離;
加上年齡和身體的因素,真想放下,又放不下。不想看著自己依然認為不錯的想法,就這么湮滅。也不想看著自己一年多的心血付諸東流。
有時候,不想再忍受這種寂寞了,想找個人去接手它,可是自己的圈子里更本就又沒有合適的人選,這個時候才發現,自己是多么的孤獨。
偶爾碰見以前的朋友,上前一問,忙啊,無暇顧及,也難怪,干我們這行的有幾個閑人;
偶爾碰到個有空的,這年月,沒錢的事情誰干啊。開源的東西,拿來用用就是,何必自己這么投入。
嘗試著到網上去宣傳宣傳,然而,同樣沒什么希望。
甚至連你的宣傳帖子也當作廣告處理了;
也難怪,天下熙熙,皆為利來,天下攘攘,皆為利往。
人家媒體的版面寸塊寸金。你一個蠅頭小生,在我們這里大肆宣傳一個不知所云的東西,是何居心。
有人說,要為自己的行為付出代價,可我今天,為自己的想法付出了代價。
不要胡思亂想了,小小程序員,要為自己的思想付出代價的。
posted @
2007-05-14 13:10 金大為 閱讀(329) |
評論 (10) |
編輯 收藏
發布了一段時間JSI2預覽版了,下一步準備JSI2Alpha版開發。
主要任務有:
1、優化依賴管理模塊。
2、完善日志輸出功能。
3、清理現有bug。
預計需要3周左右時間。
按需裝載的優化、JSDoc的完善、將推后。
示例裝飾器將暫時停止更新。
posted @
2007-05-13 13:14 金大為 閱讀(84) |
評論 (0) |
編輯 收藏
Spinner(微調器)裝飾器開發:
組件介紹:
仿照 window時間日期管理中,年份調節的控件,原型是一個文本輸入筐,一般用于數字輸入。筐后有上下微調按鈕,用于增減控件值。
這種控件在backbase框架中也有出現,JSI的spinner就是仿照其外形設計。
顯示效果:

在線演示見:http://www.xidea.org/project/jsi/decorator/spinner.html
代碼:
org/xidea/decorator/spinner.js
-
-
-
-
-
-
-
- function Spinner(){
- }
-
- Spinner.prototype = new Decorator();
- Spinner.prototype.decorate = function(){
- this.start = parseInt(this.attributes.get('start'))
- this.end = parseInt(this.attributes.get('end'))
- this.step = parseInt(this.attributes.get('step'))||1;
- var container = this.getContainer();
- var table = document.createElement('table');
- var outerDiv = document.createElement("div");
- var upDiv = document.createElement("div");
- var downDiv = document.createElement("div");
- table.border = 0;
- table.cellSpacing=0;
- table.cellPadding=0;
- container.insertBefore(table,container.firstChild);
- var row = table.insertRow(0);
- var cell = row.insertCell(0);
- var ele = table.nextSibling;
- do{
- container.removeChild(ele);
- cell.appendChild(ele);
- }while(ele = table.nextSibling)
- cell = row.insertCell(1);
- cell.style.verticalAlign = 'middle',
- cell.appendChild(outerDiv);
- outerDiv.style.position = 'relative'
- outerDiv.style.top = '0px'
- outerDiv.style.left = '0px'
- outerDiv.style.height = '0px'
- outerDiv.style.width = '0px'
- outerDiv.style.zIndex= 2;
-
- outerDiv.appendChild(upDiv);
- initializeHandleDiv(this,upDiv);
- outerDiv.appendChild(downDiv);
- initializeHandleDiv(this,downDiv);
-
- }
- Spinner.prototype.jump = function(offset){
- if(offset){
- var input = this.getContainer().getElementsByTagName('input')[0];
- var value = value = input.value * 1 + offset*this.step;
- if(value>this.end){
- value=this.end;
- }else if(value<this.start){
- value = this.start;
- }
- input.value = value;
- }
- }
-
-
-
- var imagePath = 'url("'+this.scriptBase + 'spinner.gif")';
-
-
-
- function initializeHandleDiv(spinner,handleDiv){
- var position = 0;
- var style = handleDiv.style;
- style.backgroundImage=imagePath;
- style.position='absolute';
- style.width='12px';
- style.height='8px';
- style.margin='1px';
- style.left = '-14px'
- style.overflow = 'hidden'
- if(handleDiv.previousSibling){
- style.backgroundPosition = '0 -32px';
- position = -32;
- style.top = '0px'
- }else{
- style.top = '-10px'
- }
- handleDiv.onmouseout = buildMouseHandle(spinner,position,0)
- position -= 8;
- handleDiv.onmouseup=handleDiv.onmouseover = buildMouseHandle(spinner,position,0)
- position -= 8;
- handleDiv.onmousedown = buildMouseHandle(spinner,position,0)
- handleDiv.onclick = buildMouseHandle(spinner,position,position<-32?-1:1)
- }
-
-
-
- function buildMouseHandle(spinner,imagePosition,offset){
- imagePosition = '0 '+imagePosition+'px';
- return function(){
- this.style.backgroundPosition = imagePosition;
- spinner.jump(offset);
- }
- }
使用方法見在 基于FCKEditor 開發JSI Editor裝飾器已有詳細介紹,不再敘述。
見:http://www.javaeye.com/article/79063 |
評論也很精彩,請點擊查看精彩評論。歡迎您也添加評論。查看詳細 >>
JavaEye推薦
杭州:外企高薪聘請系統維護工程師(10-15K)
杭州:國內大型網絡公司高薪招聘系統架構師,資深JAVA開發工程師
北京:優秀公司NHNChina招聘:WEB開發,系統管理,JAVA開發, DBA
廣州:急招 JAVA開發經理/系統架構師(10-15K/月)也招聘java程序員
文章來源:
http://jindw.javaeye.com/blog/79064
posted @
2007-05-12 11:17 金大為 閱讀(72) |
評論 (0) |
編輯 收藏
基于FCKEditor 開發JSI Editor裝飾器:
組件介紹:
JSI Editor裝飾器,是一個用于可視化html編輯的組件(當能,將來也可考慮其他格式,如ubb),在標記設計上,參照Mozilla XUL的editor標記。而具體實現上,使用FCKEditor。
效果:

裝飾器實現代碼:
-
-
-
-
-
-
- function Editor(){
-
- }
- Editor.prototype = new Decorator();
- Editor.prototype.decorate = function(){
- var container = this.getContainer();
- var textarea = container.getElementsByTagName('textarea')[0];
- var fckEditor = new FCKeditor(textarea.name);
- var src = this.attributes.get('src');
- if(src){
- new Request(src,
- {asynchronous:true}).setFinishListener(function(){
- textarea.value = this.getText()||textarea.value;
- fckEditor.ReplaceTextarea();
- }).send();
- }else{
- fckEditor.ReplaceTextarea();
- }
- }
裝飾器定義代碼:
裝飾器定義其實就是普通類庫定義,沒有任何區別。
-
- this.addScript("editor.js",'Editor');
- this.addObjectDependence("*",
- "js.html.Decorator",true);
- this.addObjectDependence("Editor",
- "js.io.Request",false);
- this.addObjectDependence("Editor",
- "net.fckeditor.FCKeditor",false);
使用方法:
使用JSI裝飾器,需要在頁面上做如下處理:
- 增加命名空間(xmlns:d="http://www.xidea.org/taglib/decorator")
- 加入JSI引導腳本(<script src="../scripts/boot.js"></script>)
- 加入所用裝飾器的標記
簡單示例:
- <?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml"
- xmlns:d="http://www.xidea.org/taglib/decorator" xml:lang="zh_CN"
- lang="zh_CN">
- <head>
- <script src="../scripts/boot.js"></script>
- <title>Editor 示例</title>
- </head>
- <body>
- <d:editor>
- <textarea name='editorText'>
- 待編輯html:<br>
- This is some <strong>sample text</strong>. <br>
- You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.<br>
- </textarea>
- </d:editor>
- </body>
- </html>
總結:
JSI 裝飾器是一個新事物,如果要一切從零開始,是一個艱巨的任務;但是,借助于JSI無侵入的特性,我們可以集百家之長。在前人豐厚的積累上,創造出更加簡單易用的ui 組件集。
海納百川,有容乃大。 |
評論也很精彩,請點擊查看精彩評論。歡迎您也添加評論。查看詳細 >>
JavaEye推薦
杭州:外企高薪聘請系統維護工程師(10-15K)
杭州:國內大型網絡公司高薪招聘系統架構師,資深JAVA開發工程師
北京:優秀公司NHNChina招聘:WEB開發,系統管理,JAVA開發, DBA
廣州:急招 JAVA開發經理/系統架構師(10-15K/月)也招聘java程序員
文章來源:
http://jindw.javaeye.com/blog/79063
posted @
2007-05-12 10:51 金大為 閱讀(90) |
評論 (0) |
編輯 收藏
<script>
var test1 = 1;
function test1(){};//函數申明不能覆蓋變量申明?
alert(test1);
</script>
<script>
var test2 = 1;
eval('function test2(){};');
alert(test2);//函數申明怎么又覆蓋了變量申明?
</script> |
評論也很精彩,請點擊查看精彩評論。歡迎您也添加評論。查看詳細 >>
推薦相關文章:
ext應用載圖,PP幾張~
云想衣裳花想容--JSI組件模型介紹(一)
JavaEye推薦
杭州:外企高薪聘請系統維護工程師(10-15K)
杭州:國內大型網絡公司高薪招聘系統架構師,資深JAVA開發工程師
北京:優秀公司NHNChina招聘:WEB開發,系統管理,JAVA開發, DBA
廣州:急招 JAVA開發經理/系統架構師(10-15K/月)也招聘java程序員
文章來源:
http://jindw.javaeye.com/blog/78277
posted @
2007-05-09 17:21 金大為 閱讀(90) |
評論 (1) |
編輯 收藏
JSA 1.0 Alpha發布,壓縮效率提高大約10%
壓縮算法改進:
實現了自己的文本壓縮算法
優化了語法壓縮
- 合并連續var申明,
- 刪除了多余var申明,
- 刪除了多余大括弧({、}),
- 刪除了多余分號(;)。
UI改進:
- 自動編碼識別
- 支持文件拖放
- 支持JAVA1.4.2+ 當jar打開方式為java時,可雙擊運行,但,若JAR打開方式被修改(如winrar),請使用如下方式:
CMD>java -jar xx.jar
- 格式化
注釋只能在各語句之間,插在語句中間的注釋有可能丟失,在格式化的時候,算bug吧。
- 壓縮參數設置
操作->設置: 執行語法壓縮:將替換局部變量,刪除冗余語法。 執行文本壓縮:將腳本文本分詞、替換壓縮。執行時可通過eval( 解壓函數() )方式還原。 兼容IE5、NS3:老版本的瀏覽器對正則表達式支持優先,是否需要兼容他們(需要采用稍微復雜一點的解壓函數)。 執行文本壓縮的條件設置:設置何時采用文本壓縮,有兩項,比率要求和大小要求;因為eval是需要額外開銷的,所以,只有當文本壓縮的比率小于指定值且文件大小大于指定值時才采用文本壓縮。
ANT Task
- 默認編碼 :取JRE的默認編碼,可能隨機器不同而改變,所以,推薦手動指定器編碼方式(eg:charset="utf-8"/charset="GBK")
- jsicompile 任務:編譯JSI (壓縮,預裝載編譯,定制啟動文件)
- jscompress 壓縮腳本
ANT Task 示例
jsicompiler 示例(處理JSI及其集成的第三方腳本)
<target name="compress" depends="init"> <jsicompiler destDir="ant/temp/script2" charset="utf-8" rebuildboot="true"> <fileset dir="web/scripts"> <include name="*/**/*.js" /> <include name="*.js" /> <exclude name="preload/**" /> </fileset> <preloadgroup path="code-decorator.js"> <fileset dir="web/scripts"> <include name='js/io/__$package.js' /> <include name='js/io/request.js' /> <include name='js/io/writer.js' /> <include name='js/xml/__$package.js' /> <include name='js/xml/template.js' /> <include name='js/xml/tag.js' /> <include name='js/util/__$package.js' /> <include name='js/util/collections.js' /> <include name='org/xidea/syntax/__$package.js' /> <include name='org/xidea/syntax/syntax-parser.js' /> <include name='org/xidea/decorator/__$package.js' /> <include name='org/xidea/decorator/code.js' /> </fileset> </preloadgroup> </jsicompiler> </target>
jscompress 示例(壓縮普通腳本)
<target name="test-compress"> <jscompress destDir="ant/temp/script2" charset="utf-8"> <fileset dir="web/scripts"> <include name="js/**/*.js" /> <include name="*.js" /> </fileset> </jscompress> </target>
|
評論也很精彩,請點擊查看精彩評論。歡迎您也添加評論。查看詳細 >>
推薦相關文章:
邀請第三方團隊開發頁面裝飾器實現的公開信。
云想衣裳花想容--JSI組件模型介紹(一)
云想衣裳花想容--JSI組件模型介紹(二)文章來源:
http://jindw.javaeye.com/blog/77776
posted @
2007-05-08 11:35 金大為 閱讀(131) |
評論 (1) |
編輯 收藏
邀請第三方團隊開發頁面裝飾器實現的公開信
頁面裝飾引擎簡介
用于裝飾樸素html元素的框架,使用簡單的xml標記,標識期裝飾行為,比如將一個普通的input裝飾成一個日期輸入控件。將一個textarea裝飾成一個代碼語法高亮顯示區域,或一個wysiwyg html編輯器。 JSI啟動后將采用異步方式,自動檢查decorator標記,自動做相關類的尋找、導入并裝飾頁面。
實現零腳本代碼的web富客戶端編程:
更多信息參考:
示例裝飾器演示:http://www.xidea.org/project/jsi/decorator/index.html
JSI項目主頁:http://www.xidea.org/project/jsi/index.html
JavaEye JSI專欄:http://www.javaeye.com/subject/JSI
適用范圍
頁面裝飾引擎是用來裝飾普通網頁的框架,只需要在普通網頁上增加相應裝飾標簽,即可實現富web客戶端的常用功能。保持頁面簡潔、優雅的同時,享受頁面通用組件帶來的便捷。
同時,正因為它的簡單性,使用裝飾引擎的頁面,后期維護也更加簡單。
在開發效率優先的項目中,其優勢尤為明顯。當能,對于非常非常復雜的頁面,導入JSI托管類庫直接編程的方式也許更加適合。
現狀分析
頁面裝飾引擎是一個工作于JSI上的可實現零代碼編程的RIA解決方案。
JSI項目已有一年多的歷史,在類庫管理,按需裝載方面,技術已經非常先進;
其中無侵入的腳本管理,我們是最完善的;2.0提出的異步裝載技術,同類框架中也只有JSI2能做到。
當今業界,在RIA操作的火熱的時候,JSI提出裝飾引擎這個優雅簡潔的RIA解決方案。
我認為,只要我們可以盡快推出完善實用的裝飾器集合,完全可以在業界占領一席之地。
目前我們已有一個簡單示例實現集,不夠豐富,而且都還是初級階段,不夠完善。
現在發布的這些裝飾器,主要是為了演示JSI裝飾引擎的工作方式,編碼風格。
參考
JSI裝飾引擎工作原理介紹:
- 云想衣裳花想容--JSI組件模型介紹(二)
JSI裝飾器編寫示例:
- 基于FCKEditor 開發JSI Editor裝飾器
- 從零開始 Spinner(微調器)裝飾器開發
結語
目前就我一人之力,開發一套完整的裝飾器,尚需時日,并且由于本人缺乏ui設計的天賦,在這里很難有出色的表現。
所以,我希望能邀請到第三方團隊、公司在這個基礎上開發出自己的更加實用的裝飾器集合。同時我可以空出更多的時間去優化核心模塊。
JSI及其裝飾引擎采用LGPL開源協議。可以商業應用,當能,更希望能開源。
對于開源第三方的實現,我可以提供充分的技術支持。并配合其宣傳,推廣。
對于商業實現,可以提供必要的技術支持,并提供JSI專用的腳本混淆工具,保護您的知識產權。
我的聯系方式(email&msn):jindw◎xidea。org |
評論也很精彩,請點擊查看精彩評論。歡迎您也添加評論。查看詳細 >>
推薦相關文章:
云想衣裳花想容--JSI組件模型介紹(二)
云想衣裳花想容--JSI組件模型介紹(一)
JavaEye推薦
杭州:外企高薪聘請系統維護工程師(10-15K)
杭州:國內大型網絡公司高薪招聘系統架構師,資深JAVA開發工程師
北京:優秀公司NHNChina招聘:WEB開發,系統管理,JAVA開發, DBA
廣州:急招 JAVA開發經理/系統架構師(10-15K/月)也招聘java程序員
文章來源:
http://jindw.javaeye.com/blog/77597
posted @
2007-05-07 22:18 金大為 閱讀(60) |
評論 (0) |
編輯 收藏