Tuesday, September 1, 2009

jquery1.32- select, radio

1. 找到被選取的radio項目

val checkedvalue = $('input[name="namevalue"][checked="true"]:first).val();



2.由程式設定被選取的radio



$("input[name='namevalue']").each(function(){
if($(this).val() == somevalue){
$(this).attr('checked','true');
}
});



3. 由程式設定被選取的select,根radio差不多,checked改成selected



4. 找到被選取的select項目



var selectvalue = $("#selectID").val();

Monday, August 31, 2009

linux指令

紀錄一下指令跟設定
1. nbtstat –A <IP> 從Ip找回netbios的名稱

2. vsftp要用/etc/hosts.allow, /etc/hosts.deny兩個檔案來控制登入Ip的話,要在vsftpd.conf中設定tcp_wrappers=YES
3. samba要控管IP登入的話,可以在/etc/samba/smb.conf中設定’hosts deny= IP, IP,IP….’

Wednesday, July 1, 2009

android apk產生與安裝

1. eclipse中的package expore, 點選專案,右鍵>android tools>export undigned application package。除此之外也可以在編譯完後,在專案的目錄中的bin/找到unsign apk
2. 如果是signed apk的話,參考這篇

安裝
1. 進入SDK目錄下的tools, 找到adb
2. $adb –e install xxxx.apk (安裝xxxx.apk到模擬器中) adb用法參考這

有時候安裝的時候出現Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES],看了網路上的說明,似乎是source與編譯完的apk有差異….不是很懂。但再重新編譯一個apk就可以安裝了..

Tuesday, June 16, 2009

x61的藍芽功能

去年買的Thinkpad x61運作很不穩,常常當機、無法開機、網路不通,新的電池待機半小時就沒電等問題,送原廠好幾次都說檢測時沒問題,非常無奈。加上運作的時候硬碟一直有不正常的聲響,這幾天換了一顆新硬碟。

於是從裝作業系統、驅動程式等,裝的差不多的時候,才發現怎麼藍芽裝置不見了…!重新搜尋了好幾次,還是找不到此裝置。軟體或是硬體開關也都有檢察,非常納悶,於是試試看把舊的硬碟裝上(原來作業系統還在),發現在舊的作業系統中,我之前有使用(Fn+F5)把藍芽關閉。於是索性把藍芽打開。再裝回新的硬碟,開機後,居然找到藍芽裝置了….

一直以為(Fn+F5)軟體開關是記錄在作業系統中的,隨著作業系統重裝應該不會影響找不找得到藍芽裝置,看來這個(Fn+F5)軟體開關是記錄在別的地方

Thursday, May 14, 2009

android的相機功能

使用android 相機預覽功能需要幾個物件surfaceView , SurfaceHolder, Camera
surfaceView = (SurfaceView)findViewById(R.id.cameraView);
surfaceHoler = surfaceView.getHolder();
surfaceholder.addCallback(this);
surfaceHolder.setType();

Camera.Parameters parameters = camera.getParameters();
parameters.setPictureFormat(PixelFormat.JPEG);
parameters.setPreviewSize(320, 340);
parameters.setPictureSize(320,340);
camera.setParameters(parameters);
camera.setPreviewDisplay(surfaceHolder);

camera.startPreview();

Wednesday, May 6, 2009

intent用法收集

1. 從AP開啟控制台location的設定
startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));



2.從AP開啟android內部圖庫,並傳回選擇的圖片

startActivityForResult(new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI), SELECT_IMAGE);

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SELECT_IMAGE)
if (resultCode == Activity.RESULT_OK) {
Uri selectedImage = data.getData();
// TODO Do something with the select image URI
}
}



3. 切換到另外一個class視窗

Intent intent = new Intent(this, RedirectGetter.class);
startActivityForResult(intent, INIT_TEXT_REQUEST);

Tuesday, May 5, 2009

android DDMS 啟動 sdcard存取

須要先建立sdcard鏡像檔, 再啟動模擬器時連結鏡像檔即可存取
1.在commond line下執行 $andoird_sdk_home/tools/mksdcard 256M d:/test/testSDcard.iso
2. 在eclipse中 Run->Run configures->'target'->addtional Emulator Command Line Options,
加入參數-sdcard d:/test/testSDcard.iso
3. 在DDMS啟動Emulator
4. DDMS->File Explorer, 找到sdcard這個目錄, 右上角可以看到'Push a File onto the device', 就可以上傳了

除了直接在DDMS中上載檔案到sdcard, 指令列也可以
1. 同上述第一步驟
2. $andoird_sdk_home/tools/emulator -sdcard d:/test/testSDcard.iso
3. 開另外一個command line, $andoird_sdk_home/tools/adb -e push test.jpg sdcard, 即可上傳test.jpg這份檔案到emulator的sdcard這個目錄

PS 新版的DDMS已經可以直接在create emulator中直接建立sdcard空間

Tuesday, April 28, 2009

轉換sql datetime為RFC 822格式

SET LANGUAGE 'English';
select  left(datename( dw, getutcdate() ), 3 )  + ', ' +convert( varchar(20), getutcdate(), 113 ) + ' GMT'
SET LANGUAGE 'Traditional Chinese'

由於使用的是'繁體中文'語系,再轉換前還需要將語系改為'英文'

 

附註: .net datetime轉RFC 822格式

DateTime today = DateTime.Now;
CulturInfo ci = new Culturinfo("en-US");
string rfc822 = today.ToString("ddd, dd MMM yyyy HH:mm:ss",ci)+" +0800";

Monday, April 20, 2009

DVD轉AVI

破區碼
anydvd, clonedvd
1.安裝ayndvd, clondvd
2.執行clonedvd, 轉成ISO檔案

dvd轉avi
bitRipper, alcohol120%
1. 掛載ISO至alcohol120%
2. 執行bitRipper
3. 按下start ripping

DVD轉出字幕
VobSub
1. 執行VobSub Configure.exe
2. "open"->選擇DVD中VIDEO_TS目錄底下的xxx.ifo, 再選擇輸出字幕目錄
3.  在右上角留下要轉出的語系
4.  ok-> 開始輸出

壓縮:
virtualDub.exe
1. File->open vedio file
2. Video->compression->"Xvid MPEG-4 Codec"->config->Towpass-1st pass
3. File->save as AVI
4. File->open vedio file
5. Video->compression->"Xvid MPEG-4 Codec"->config->Towpass-2nd pass
6. 在Target size中填入要壓成的大小(k)
7. File->save as AVI

把字幕壓在AVI中
1. 安裝VobSub_2.23.exe
2. 執行virtualDub目錄中的auxsetup.exe載入這些filter
1. File->open vedio file
2. Video->Filters->add->"TextSub2.23"
3. 選擇字幕檔
4. File->save as AVI

imovie的m4v轉avi
使用pazera video converters suite 1.2
1. 選擇other viedo converts-> MOV –> AVI/MPEG
2. Video codec中可以選擇編碼格式, 我想轉品質好的,選擇’H.264/MPEG-4 AVC’
    Bitrate:2000 kbit/s
    FPS:50
    Resolution: 1280?*720
3. 按下CONVERT(Ctrl+e) 開始轉換

Monday, April 13, 2009

儲存doc至資料庫

1. 上傳doc後,讀入bytes至陣列中,儲存bytes[]至資料庫的varbinary(MAX)。
2. 輸出的時候,從varbinary(MAX)讀出bytes[],response輸出二進位字元,設定標頭為"Content-disposition", "inline; filename=xxx.doc", contenttype為application/msword。

寫入

protected void UploadButton_Click(Object sender , EventArgs e ){   // Handles UploadButton.Click
Stream stream = FileUpload1.FileContent;
BinaryReader binReader = new BinaryReader(stream);

byte[] bytes = new byte[stream.Length];
int numBytesToRead = (int)stream.Length;
int numBytesRead = 0;
while (numBytesToRead > 0)
{
int n = stream.Read(bytes, numBytesRead, numBytesToRead);
if (n == 0)
break;
numBytesRead += n;
numBytesToRead -= n;
}
}
public string insertDoc(byte[] bytes)
{
.....
sqlCommand.Parameters.Add("@doc", SqlDbType.VarBinary, -1).Value = bytes;
......
}

輸出
protected void Page_Load(object sender, EventArgs e)
{
DBAccess dba = new DBAccess();
byte[] docContent = dba.getDoc();

string fileName = "kkk我.doc";
if (Request.Browser.Browser == "IE")
{
fileName = Server.UrlPathEncode(fileName);
}
Response.ContentType = "application/msword";
Response.AppendHeader("Content-disposition", "inline; filename=" + fileName);
Response.BinaryWrite(docContent);

}



dotnetnuke

試著管理與使用dotnetnuke幾天,整理一下
架設的環境為iis5.1, .net2.0, dotnetnuke 4.92

1. 網站的中文化官網有提供到4.83,可以直接安裝使用,當然有些項目沒有轉成中文 ,中文化是指網站中文化而已,各模組的中文還需要另外安裝,如果找得到的話,當然也可以自己修改。
2. dotnetnuke允許在其之下安裝多個網站
3. search blog這個模組無法搜尋blog作者,但中文內容都是OK的
4. 導覽列中若有中文,造成網頁的路徑包含中文的話,連結會失效。要解決這個問題可以參考DSLocalizator這個模組,我是還沒有試。
5. Documents這個文件管理的模組,好像只支援管理者上傳檔案至主機上,其他使用者都無法使用上傳外部檔案至主機的功能。
6. media模組也是依樣,只有管理者可以上傳外部檔案。
7. 討論區模組,只能設定一層的群組與討論區。中文搜尋支援,作者扔然無法搜尋。中文介面目前還沒找到
8. Announcement 這個模組好像只能公布全文,沒有摘要模式。要摘要模式的畫,我是配合RSS reader來達成。
9. Events 行事曆模組可以支援匯出CVS,但是中文不支援。
10. 權限的劃分,分成網頁、模組、以及模組內功能是否支援。
11. email server只能在host中設定無法在各站台各自設定。
12. 安裝中文化網站時,安裝完成後,扔需要在各網站的語系選擇繁中,如果還是沒有work的話,把預設語言設定成繁中,再把英文語系刪除,應該就可以work。

摸了幾天而已,後來公司又臨時說不用了...真是OX@#

Tuesday, March 17, 2009

DotnetNuke4.92安裝

安裝環境IIS 5.1, .NET2.0, winXP sp3, SQl2005

1.下載dotnetnuke4.92_install
2. 建立虛擬目錄指向dotnetnuke4.92_install所在目錄
3. IIS設定->使用權限->指令碼與執行檔
4. 檔案總管移到dotnetnuke4.92_install安裝目錄
5. 右鍵->內容->安全性->新增使用者(ASPNET)->設定為完全控制,之後可以在依照模組的使用權限修改
6. 開啟SQl2005建立新資料庫"DotNetNuke", 新增使用者等。
6. 打開瀏覽器->http://localhost/(虛擬目錄名稱)/Install/install.aspx
7. 就可以按照網頁上的指示一步一步安裝

第一次安裝的時候,我可能改到web.config的東西,在安裝資料庫時跑了很久都沒反應,最後把資料庫刪除,重新設定一次就可以了。過程中我選擇custom方式安裝,會詢問要安裝的模組、外觀等

Monday, March 16, 2009

CMS開放源碼平台

Drupal
1. apache web server
2. php 5.2
3. mysql 4.2
4. phpmyadmin

dotnetnuke
1. 有vs 2005專案檔
2. 可用C#開發
3. sql 2005
4. professional版本需要付費,
5. lastest vertion-   professtional(Feb 2009)

CommunityServer 2008
1. aps.net 2.0, ms SQL 2005
2. SSO for windows ad
3. 數據量大的時候,效能不好
4. 僅express Edition不需付費

joomla
1.php
2.mysql

Plone
1. python
2. oreilly 06' opensource winner 
3. lastest vertion-   3.2.1(Feb 2009)

Thursday, February 26, 2009

android location

locationListener.onLocationChanged
當作標改變的時候會觸發事件,但是當location設備傳進相同的座標位置時,不會觸發此事件。
locationListener.onProviderDisabled
當location的設備被關閉時,觸發此事件。相反的就是onProviderEnabled
locationListener.onStatusChanged
location設備的狀態改變時,觸發此事件。共有三個狀態,location連線、location離線、location暫時離線。

得到座標的方式可以從LocationManager得到目前裝置有幾個LocationProvider,再從連線狀態的LocationProvider抓到座標資訊Location,再從Location中抓取座標經緯度或高度等其他資訊。

LocationManager locationManager;

locationManager = (LocationManager)this.getSystemService(Activity.LOCATION_SERVICE);

locationManager.requestLocationUpdates("gps", 5000, 1000, new LocationListener(){
@Override
public void onLocationChanged(android.location.Location location) {
Log.v("GPSTest", " gps onLocationChanged:"+location.getLatitude());

}

});

locationListener還有幾個方法要實作出來才行compile,這邊只列出跟抓取經緯度有關的程式碼。 另外在程式執行時,onProviderEnable事件被觸發時,表示gps的設備尚未開啟,想把介面用intent帶到android的設定頁面,程式碼如下:
startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));

Tuesday, February 24, 2009

XMLHttpRequest的411 length required錯誤訊息

在IIS 6.0的環境下,當使用XMLHttpRequest傳送訊息的時候,若訊息為空的話,需要特別註明傳送""(空字串),無法只傳送null。例如下面程式在IIS 6的環境下會有411的錯誤
xmlReq = new XMLHttpRequest();
xmlReq.open('POST', url, true);
xmlReq.send(null);

這個程式在IIS 5測試是正常可以work,在IIS6 則會出現411,其他http server則沒有測試。若不傳送訊息的話,則需要改成下列程式

xmlReq = new XMLHttpRequest();
xmlReq.open('POST', url, true);
xmlReq.send("");

如果有傳送內容的話,則在 ii5, iis6都可以正常執行。

Friday, February 20, 2009

signed apk

在發布程式至android market前程式需要使用jarsigner 加入認證,jarsigner是JDK提供的工具,至於apk的產生,在eclipse中執行run之後就會產生在專案底下的/bin中。
先建立一個目錄keytools,以及子目錄keytools/keys

D:\java\keytools>keytool -genkey -alias kkk.android.demo.location -keyalg RSA -v

alidity 20000 -keystore keys/location.keystore
輸入 keystore 密碼: password
您的名字與姓氏為何?
[Unknown]: liu
您的編制單位名稱為何?
[Unknown]: org
您的組織名稱為何?
[Unknown]: org
您所在的城市或地區名稱為何?
[Unknown]: taipei
您所在的州及省份名稱為何?
[Unknown]: TW
該單位的二字國碼為何
[Unknown]: TW
CN=liu, OU=org, O=org, L=taipei, ST=TW, C=TW 正確嗎?
[否]: 是

輸入 <kkk.android.demo.location> 的主密碼
(RETURN 如果和 keystore 密碼相同):

會產生keytools/keys/location.keystore。-v alidity是認證時間,market上需要25年的有效認證期間。
建立完key之後,要把這個key嵌入apk中,用jarsigner
D:\java\keytools>jarsigner -verbose -keystore keys\location.keystore -signedjar

Location_singned.apk Location.apk kkk.android.demo.location
Enter Passphrase for keystore: password
adding: META-INF/MANIFEST.MF
adding: META-INF/KKK_ANDR.SF
adding: META-INF/KKK_ANDR.RSA
signing: res/drawable/icon.png
signing: res/layout/main.xml
signing: AndroidManifest.xml
signing: resources.arsc
signing: classes.dex

之後在keytools/目錄下會產生Location_singned.ask,完成。

android的log訊息

android.util.log這個類別提供了輸出log的功能,在程式中加入

Log.v("TAG", "logMessage");
即可在DDMS的console看見輸出的訊息。

log的類別分為

  • Log.e()----錯誤(error)

  • Log.w()----警告(warn)

  • Log.i()------資訊(info)

  • Log.d()------除錯debug

  • Log.v()-----多餘verbose


不同的類別除了在DDMS中會顯示不同的顏色以利區別外,再編譯與記憶體配置上也有所不同。verbose只會在開發環境才被編譯,debug雖然會被編譯但是在非開發環境下則不會執行,error, warning, info都是會被編譯與執行。

Wednesday, February 18, 2009

手動安裝linux下的驅動程式

找到的驅動程式包裝成.img檔,先mount起來才能讀取其中的檔案
#mount -o loop rr154x-rhel-4-i386.img  ./

解壓縮modules.cgz這個檔案,裡面包含驅動模組
#gzip -dc /modules.cgz | cpio -idumv

找到與目前kernal相對應的驅動程式版本
#uname -r  //找目前的kernel版本
#cd 2.6.9-5.EL/i686

安裝驅動模組,模組可能有相依性,須照順序安裝
#modprobe sd_mod //先安裝sd_mod這個模組
#insmod hpt374.o

驅動程式安裝成功後,就可以使用新增的硬體了,但是每次重開機後,都必須在安裝驅動程式一次。為了不要這麼麻煩,把驅動程式放入核心。
#install -c hpt374.o /lib/modules/'uname -r'/kernel/drivers/scsi //把編譯完的驅動程式複製到kernel中
#depmod //檢查相依性,並把相依性更新至/lib/modules/'uname -r'/modules.dep

放入核心之後,在通知系統在開機的時候要執行的指令
#echo "modprob hpt374" > /etc/init.d/hptdriver  //如果有相依性的話,也要在這邊寫入
#chmod 755 /etc/init.d/hptdriver
#ln -sf /etc/init.d/hptdriver /etc/rc.d/rc3.d/S01hptdriver
#ln -sf /etc/init.d/hptdriver /etc/rc.d/rc4.d/S01hptdriver
#ln -sf /etc/init.d/hptdriver /etc/rc.d/rc5.d/S01hptdriver

Tuesday, February 10, 2009

android 的 adb指令

透過adb可與android模擬器或是android device作溝通

  • adb devices 
    列出目前的連線的devices。emulator-5554表示為模擬器,連接port為5554。HT850GZ01053為設備的sn。連接至device的話,須要先安裝android_usb_driver。
  • adb -s <serial number>
    指定連接上哪一個裝置,若目前只有一個連接裝置,則可不需要設定。
  • adb -d 
    指定連接上實體的device,如果實體device只有一個的話,就可使用。
  • adb -e
    指定連接上 模擬器, 如果模擬器超過一個的話,則需要用-s 來指定是哪一個模擬器。
  • adb shell
    進入模擬器或是device的shell,可執行符合權限內的指令。目前G1 RC30的版本需要downgrad到RC29才能得到root的權限,可參考Root_For_RC30。拿到root權限後可開啟telnetd,由PC上透過telnet也可以連進去G1的shell。
  • adb shell monkey
    用來產生隨機事件,可以對程式介面進行測試用。例如:monkey -v -p com.adroid.demo.notepad3 100 會在notepad3產生100個隨機事件,並列出事件的處理訊息。
  • adb install <xxxx.apk>
    安裝指定的apk至連接的裝置。相對應的指令為adb uninstall

 

android進入資料庫方法

notepad範例中的資料庫擺放位置為 /data/data/com.android.demo.notepad2/databases/data,開啟方法為進入shell後,執行 sqlite3 /data/data/com.android.demo.notepad2/databases/data 開啟資料庫後,可執行 .help開啟操作指令說明。

Friday, February 6, 2009

android 幾個常用class

  • Intent
    可透過startActivity()用來啟動Activity。或透過broadcastIntent()把intent傳送到BroadcastReceiver中,並藉由startService(intent)與在背景執行的Service。
    Intent可以提供不同的application之間的聯繫,例如在一個activity中啟動另外一個activity,切換畫面也是用Intent來呼叫不同的畫面
    Intent常見的屬性有兩個,action以及category。action用來描述activity的的行為別,常見的值有MAIN or EDIT等。category是用來描述activity的類別,常見的值有LAUNCHER。 Intent的屬性可以寫在manifest.xml中的<intent filter>
    Intent在聯繫不同的activity時,可以透過putExtra傳遞需要互通的資料。
    google文件
  • Activity
    最常見的class,與使用者互動的視窗就是由這個類別負責,啟動activity會觸發onCreate(),離開activity時會觸發onPause()。activity的各個狀態可以參考activity lifecycle
  • Bundle
    一種類似hashtable的儲存結構,提供許多存取的method。當Intent傳遞資訊的時候,可以使用Bundle來封裝資料。
  • android.widget
    這個package裡面包含重要的外觀介面的元件,例如Button, TextView, RadioButton等。
  • 常見的layout
    有Absolutelayout, AdapterView, Framelayout, Linearlayout, mapView, Relativelayout等。都是繼承自android.view.viewGroup這個類別。

Thursday, February 5, 2009

android activity生命狀態

activity執行中會經過不同的狀態,例如啟動、暫停等。以下就不同的狀態會觸發的事件紀錄一下

  • onSaveInstanceState
    當activity因為記憶體不足時被android停止時就會觸發(此時onDestroy也會被觸發),或是使用者切換activity等 activity停止時也會觸發,會儲存目前的狀態。
  • onPause
    離開該activity時、設定改變(screen orientation, language, input devices)被觸發,但是該actiity仍存在記憶體中,尚未被釋放記憶體空間。
  • onResume
    由pause的狀態回復到執行的狀態被觸發,也就是目前使用者互動的狀態。
  • onCreate
    activity第一次被執行時會被觸發。
  • onStop
    離開該activity時、設定改變(screen orientation, language, input devices)被觸發
  • onDestroy
    離開該activity時、設定改變(screen orientation, language, input devices)被觸

Monday, February 2, 2009

aspx轉excel, word

Word
Response.AddHeader("content-disposition", "attachment;filename=KS-0-9602.doc")
Response.ContentType = "application/vnd.ms-word"

excel
Response.AddHeader ("Content-Disposition", "attachment; filename=KS-0-9602..xls")
Response.ContentType = "application/ms-excel"

加上 style="mso-number-format:" 以指定excel中資料的格式,以下把數字轉為文字
<td style="mso-number-format: @">0121111</td>

Thursday, January 22, 2009

進入android模擬器的console

andorid底層為linux核心,android則是架在linux上面的應用程式框架

1. 在eclispe執行android以開啟android emulator

2. windows中打開命令提示列  telnet localhost 5554 依照emulator打入不同的port號

3. 輸入help可看到android console提供的指令

Sunday, January 11, 2009

安裝android 開發環境

1.下載eclipse jee 3.41, android 1 R2, java SDK 6 update 11

2. 解壓縮eclipse jee 3.41, android 1 R2, 安裝java SDK 6 update 11

3. 在系統變數的path加入;<sdk_dir>/tools

4. 在eclipse中加入android的plug-in, plugin的網址為https://dl-ssl.google.com/android/eclipse或是直接下載ADT的壓縮檔

5. 在eclipse中window=>preference選 android 設定SDK location

6. 如果之前有安裝過eclipse,並安裝先前版本的JDK,還需要在window->preference選java->installed JREs 更改為JDK1.6

DDMS

1. 在eclipse右上角點選"Open persepctive"->other->DDMS,之後在啟動模擬之後,就可以在DDMS觀看狀況了

DDMS可以透過USB連上hardware device,需要安裝USB driver(android_usb_windows.zip)

android sample

1. eclipse中開新專案。開完,在專案中File-> import, 選General->File System,路徑設定為<sdk_dir>/samples/AmpDemos,即可。

2. 執行的時候可以在Run Configurations設定launch action為哪一隻程式碼

3. 如果出現Re-installation fail due to different application signature的錯誤訊息,可以在adroid-sdk底下的tools中執行"adb uninstall com.example.android.apis"。

March. 2011
1. updated 完 android sdk後,在Eclipse中執行AVD manager時出現"location of android sdk has not been set up in the preferences", 點選eclipse->preferences->android SDK location時出現"could not find folder'tools' inside sdk"

確定sdk以安裝,且設定安裝路徑後仍有此錯誤。在update ADT plugin for eclipse後,問題解決。所以SDK與ADT都需要一同更新。