發表文章

Android手機開發更換自己喜歡的字型

圖片
前幾天自己在寫一個Android手機版大樂透程式的時候突然想到,之前在寫Windows Mobile的時候可以更換字型,但是在Android找了老半天似乎沒有發現相同設定的屬性,查了一下Android Developer找到了 setTypeFace 這個Method,自己try了一下發現OK可正常使用,在下文當中就教大家如何更換Android手機程式的字型。

Android開發直接使用實體手機進行測試

圖片
最近老婆大人通融給我買了一支HTC的手機,手機買來不進行開發實在是太可惜了,於是在網路上看了一堆文件後就開始進行開發,一開始我都是使用模擬器進行開發,模擬器開發固然方便,但是還是有一些功能無法實際的測試(感測器等等...)。都要透過編譯完的apk檔傳到手機、安裝,最後才可以測試,但是這樣實在太麻煩了,這邊提供如果有手機的開發者可以直接透過手機開發的設定方式給大家。

Windows Form中使用GoogleMap

圖片
儘管GoogleMap在Web上的應用已經很廣泛了,甚至現在都已經開始支援Flash了,但是在桌面應用程式的應用還是很少見,這幾天在網路上Google了一下發現網路上有個免費的元件 GMap.NET 可以讓我們很輕鬆的開發GoogleMap的桌面應用程式,GMap.NET不但支援NET,而且還是開放原始碼提供人家下載,在這裡講了這個多的GMap.NET的好處並不是要教大家使用GMap.NET,因為小弟不才,與其要看他們的原始碼(太複雜了,看完我頭髮也白了),不如我自己寫。

程式碼產生器

圖片
寫程式也寫了四五年了,每天這樣下來總覺得好像機器人一樣,寫來寫去都差不多一樣的東西,麻痺到自己都感覺自己跟剛畢業的學生的程度差不了多少,回想當初為什麼會開始寫程式,就是想當駭客,於是就冒著不怕死的危險,跑到中國的黑客教學網下載了一堆東西來研究,當然啦結果就像我想像的一樣駭客沒當成反而成了 害客 ,但是也不是全然沒有收穫,其中一項就是我想要介紹的東西【 程式碼產生器】(這個很白話了,但是我還是解釋一下,就是寫一個程式,這個程式的用途是幫人家寫程式) 。

查詢 LinkServer 自定義Function問題

圖片
使用本機端查詢(A電腦)另外一台DataBase(B電腦)的時候,有兩種方法。 方法一在B電腦開啟遠端連線設定(這裡不解說如何設定,有興趣可參考我先前的 文章 )。 方法二使用LinkServer,但是最近有個Case就是使用方法二的時候發現在讀取B電腦自定義的 Function出現了【 訊息 4122,層級 16,狀態 1,行 1不允許遠端資料表值函數呼叫。 】 的錯 誤訊息,仔細查看了一下問題,可以發現我們在建LinkServer的時候SQL Server只幫我們建立了Table和View(如下圖)。

NET.FrameWork 3.5 WebSite 升級 NET.FrameWork 4.0錯誤問題修正

圖片
在升級網站Framework版本的時候出現了下圖的錯誤訊息, MSDN 上有提供解決方法: 如果在安裝 .NET Framework 4 後啟用 .NET Framework 3.5 WCF HTTP 啟動,則會發生這個錯誤。 若要解決這個問題,請從 Visual Studio 2010 命令提示字元內部執行下列命令列 aspnet_regiis.exe -i -enable

ASP.NET 自訂多語系(不使用IE瀏覽器設定的語系)

一般來講如果使用ASP.NET來架構網站,只需要程式對應的目錄底下的App_LocalResources資料夾內加上一支與AP相同的資源檔就可以實作多國語系了(這裡不解釋如何做,不會的請自己在網路上Google一下應該很多答案)。 但是這樣出來的結果就是,Client端的瀏覽器是哪一國的語系那們NET本身的機制就會使用哪一國的語系。如果客戶有個需求就是每個使用這可已切換到自己的 語系的話那這個方式似乎就失效了,好在ASP.NET本身提供了另外一個機制讓我們可以直接在Global.asax (註1) 裡面直接撰寫一 些語法來改變使用者所看到的語系,詳見以下語法。

SQL函數 ROW_NUMBER

ROW_NUMBER() OVER ( [ <partition_by_clause> ] <order_by_clause> ) 傳回結果集資料分割內某資料列的序號,序號從 1 開始,每個資料分割第一個資料列的序。(說白話一點就是說幫每個查尋回來的資料列給予自動編號) 例如 : select row_number() over (order by fieldname asc) n umber,fieldname from tablename

DataTable進階操作

有些時候我們要進行一些數據的運算很難由SQL語法直接串出來,必須透過迴圈的方式算出有用的數據來使用,而DataTable本身就又提供一些我們平常比較少用的語法,下面我就針對這些方式進行介紹,目前只先使用幾種後來要是我在有用到在繼續補充在本文。

GoogleMap 判斷多個座標位置動態改變Zoom Size

最近有個需求就是一個地圖畫面可以隨意的讓使用者加入多個地標,而且要在第一次載入畫面的同時自動調整地圖大小來將所有地標呈現在可視範圍內。 在網路上找了許多文章,但幾乎(或者我沒找到)都是用GoogleMap API V2來實現,但是此次我試的例子是使用GoogleMap API V3來完成,因此沒辦法適用,在這裡我先說明一下V2的版本如何來完成。 //首先宣告 GLatLngBounds物件 var bounds = new GLatLngBounds(); //跑回圈將所有的座標加入 for(var i = 0; i V3版本,人家講了一大堆,結果都是Copy的根本無法使用,最後來是乖乖的上Google API 找答案比較快,解決方法如下(jQuery使用的是先前自己擴展的方法,這裡不再敘述) //在V3的版本請改用此物件 var bounds = new google.maps.LatLngBounds(); for (var i = 0; i

double型態乘法問題

圖片
前一陣子同事在抓一個程式的Bug的時候發生了一件百思不得其解的問題,double型態在進行兩個變數比較的時候出現了【24.9 != 24.9】的詭異現象。下面法法中可以發現當變數A=24.9; B=8.3*3;這樣出來比較出來竟然出現了false的情況,在將兩變數轉換成字串型態後比較竟然又相等了。有此可見,雙精倍數在儲存變數的時候可能內含了極小的小數,小到在轉換成字串型態的時候無法出現所導致。

JavaScript跨網域讀取資料問題

先前的 文章 中有提到使用jQuery.get('xxx.html',{},function{});可以直接讀取同網域所回傳的資料,如XML...,但是最近有遇到一個Case就是要去讀取Google API 所提供的資料就一直發生問題。網路上有一些文章提到跨域存取要使用其它的方法,個人覺得這樣太麻煩了,於是提供大家另外的方法來使用。

從程式端動態加入多個UserControl

圖片
自己在玩寫一個購物網站的時候,有個需求就是查詢歷史購物清單,原本打算在該查詢畫面使用動態的方式畫出多個GridView,但是真正要寫的時候發現動態產生多個GridView還要從程式多加入GridView的Template等等...,有點麻煩,於是就想說從UC來下手。

ASP.NET 使用 CKEditor和CKFinder

圖片
一兩年前有分享過一篇FCKEditor的HTML編輯器,這幾年都改寫系統所以就比較少用到了,這陣子朋友講到什麼CKEditor,本來想說是少講嗎?還是,結果查了一下發現原來是新版的HTML編輯器。 自己稍微測試加上Google了一下,發現CKEditor搭配CKFinder功能更加強大,抹彩挖(台)特地寫了一個文字編輯器來使用了,結果這麼強大的功能害我不得不放棄我自己的文字編輯器(有點難看如下圖),在這裡不不打算說明功能如何強大,有興趣的人可以自己到 官網 查詢,在本文我只要簡單的敘述一下該怎麼在ASP.NET中使用CKEditor就好。

使用jQuery擴展GoogleMap APIV3

網路上找到的Google Map API 教學大部分都是 V2 之前的版本,但是目前Google Map API 的版本都已經更新到V3 + ,因此在這裡就分享一下自己用jQuery來擴展新版的GoogleMap API 1. 首先必須宣告一個DIV區域用來顯示GoogleMap

IE瀏覽器無法使用jQuery來讀取ASP.NET產生的XML檔

在 上一篇 文章中有提到jQuery可以直接讀取XML檔案,但是如果XML檔的產生是使用ASP.NET Response.Write的方式產生的,還需要另外做點手腳,否則在IE瀏覽器中讀取Tag的時候會有取不到值的問題。解決的方法如下 //這句一定要指定 Response.ContentType = "text/xml"; Response.Expires = 0; Response.Write(" "); Response.Write(" "); Response.Write(" "); Response.End();

網頁AJAX技術,非Micorosft AJAX

在ASP.NET裡面有提供UpdatePanel來達成非同步的JavaScript與XML技術(AJAX),但是直接使用此方式固然方便,但是要是此頁面非常複雜又有多個Events都必須觸發PostBack的話,那麼會使的該頁面的效能極差無比,這時候就是使用XMLHttpRequest來完成的最好時機了。 舉幾個例子來看 1. 生日 → 如果要使用另外一個網頁來驗證回傳星座(當然也可以直接使用JavaScript來完成) 2. 帳號驗證 3. XML格式的資料清單

iframe在非IE瀏覽器指定Src及動態改變高度的問題

在IE瀏覽器內想要改變iframe頁框的Src值,只需要直接指定 iframe.src='XXXX.htm'; ,如此就可以改變連結的路徑,但是其他瀏覽器可就不吃這一套了(至少我試了Firefox,Chrome都是如此)。 1. 在其它瀏覽器內iframe若要指定src有反應,必須要補齊所需要的網頁元素。如 html,head,body ...... 2. 另外若要動態指定iframe的高度IE瀏覽器也與其它瀏覽器有所不同 IE  →  iframe.Document.body.scrollHeight Other →  iframe.contentDocument.body.offsetHeight

iframe頁面呼叫主視窗的JavaScript Method

我們有時候在A畫面嵌入一個IFrame的時候會有一些特殊需求需要IFrame載入的時候主畫面要做某些動作,舉例來說,在我的部落格裡有運用到iframe畫面PostBack後需要動態改變主畫面iframe頁框的高度,因此我就必須先在主畫面定義一個Method來提供iframe畫面呼叫,詳細的說明如下語法( 注意本範例使用jQuery來完成,必須先引入jqery.js )

刪除資料夾(包含裡面的所有檔案)

正常情況下刪除資料夾只需要直接刪除即可,但是要是遇到資料夾目錄底下還有其他檔案的話會發生錯誤,因此必須要另外指定第二個參數true,才不會發生錯誤。 for (int j = 0; j

showModalDialog 子視窗搖控父視窗在IE以外流覽器失效

在IE我們在使用showModalDialog打開一個畫面後,如果要使用子視窗來改變父視窗的值只需要使用 window.dialogArguments.document.getElementById("父視窗物件ID").value = "想改變的值"; 但是我在FireFox使用此方法發現無效,原來除了IE以外的瀏覽器,大部分的瀏覽器不是使用此方法來改變父視窗的值而是採用下面此方法來達成 if (window.dialogArguments != null) //IE使用 var querytype = window.dialogArguments.document.getElementById("父視窗物件ID"); else //其他如 Friefox,Chrome var querytype = opener.window.document.getElementById("父視窗物件ID"); querytype.value = 'Return Value'; window.close();

讀取資料庫欄位型態為Image的資料

using (SqlConnection conn = new SqlConnection(connStrdg1)) { conn.Open(); string strSQL = ""; using (SqlCommand command = new SqlCommand()) { command.Connection = conn; command.CommandType = CommandType.Text; strSQL = "SELECT image FROM XXXX WHERE id=@imgid"; command.CommandText = strSQL; command.Parameters.Add("imgid", SqlDbType.UniqueIdentifier).Value = new Guid(Request.QueryString["imgid"].ToString()); //下面這句為主要關鍵所在 Response.ContentType = "image/jpeg"; byte[] image = (byte[])command.ExecuteScalar(); if (image == null) { Response.Redirect("/NoImage.gif"); } else { Response.BinaryWrite(image); } } }

在.cs檔裡動態註冊JavaScript和CSS

//註冊CSS string stylestr = "<style type='text/css'>"; stylestr += ".smallstyle"; stylestr += "{"; stylestr += "font-size: 12px;"; stylestr += "font-family: '新細明體';"; stylestr += "color: Gray;"; stylestr += "}"; stylestr += ".bigbodystyle"; stylestr += "{"; stylestr += "font-size: 20px;"; stylestr += "font-family: '新細明體';"; stylestr += "}"; stylestr += "</style>"; Page.RegisterClientScriptBlock("HideBlock", stylestr);

SQL函數 查詢SQL資料欄位相符的字串

CHARINDEX ( expression1 ,expression2 [ , start_location ] ) 搜尋 expression2 中的 expression1 ,並在找到時傳回它的開始位置。搜尋會在 start_location 開始。 引數 expression1 這是字元 expression ,其中包含要尋找的順序。 expression1 限制為 8000 個字元。 expression2 這是要搜尋的字元運算式。 start_location 這是搜尋開始的整數或 bigint 運算式。如果未指定 start_location ,或者它是負數或 0,搜尋就會從 expression2 開頭開始。

HttpModule與HttpHandler的區別整理

圖片
原本我們在舊版的作業系統上(如XP,Server2003)要讓每個使用者訪問網頁時先進行驗證,判斷是否由外部連結或者是種種的驗證可以直接使用ISAPI來進行(使用C撰寫),但是近年來作業系統的版本已經到了Server2008+,IIS的版本也由原本的IIS6變成了IIS7,因此有些主機在ISAPI的運行變得異常或者是不能執行(但這個問題經過證實是64位元作業系統的問題,變更IIS設定就可以解決這個問題),因此在資料過濾的部份我們除了可以使用ISAPI可以幫我們進行資料過濾,也可運用微軟提供的HttpModule與HttpHandler來處理相同的問題,下面就對者兩者的差異進行說明。