分類
程式技術

M$的IT職涯認證一覽表

從 TechNet 上看到的資料.

常有人問微軟的證照如何考取, 有什麼分類, 這份資料是最好的參考. 可以從這裡下載 PDF 檔:

http://download.microsoft.com/download/8/B/5/8B522D38-6739-4DE7-BF03-994899F0E8FB/Career-and-Cert-poster-TC_20100407.pdf

另外在網站上也有互動式的參考資料, 一樣是區分為 IT Profession 及 Developer, 可以透過以下連結參考:

IT Profession job: http://www.microsoft.com/taiwan/learning/start/start-career.mspx
Developer job: http://www.microsoft.com/taiwan/learning/start/start-career-dev.mspx

其中資料庫被同時放在這兩個分類項中, 在 IT Profession 下是 Database Administrator, 而在 Developer 下則是 BI Developer 及 Database Developer.

對於從事 IT 專業領域的朋友們, 又是微軟為主要應用環境及技術開發, 可以參考看看!!

分類
程式技術

在Flash中取得所在網頁及被嵌入的網址

這個題目好難下. 主要是要說明, 在 Flash 中的 swf 程式內, 如何取得該 swf 嵌在哪個網頁(url), 以及被嵌入使用的 url (註1). 以下介紹的是在 AS3 下的作法.

(註1)的部分是指 <embed src=”XXXXXXX” /> 的其中 “XXXXXXX” 的部分.

程式碼並不複雜, 主要是利用了 ExternalInterface.call(“window.location.href.toString”); 來取得該 swf 嵌在哪個網頁(url).

而被嵌入的 url 則是利用了 loaderInfo 中的 loaderURL 取得, 程式碼如下:

import flash.external.*;

var strUrl:String;
var strQueryString:String;

strUrl = ExternalInterface.call("window.location.href.toString");

strQueryString = "";

var params:Array = strUrl.split('?');
if(params.length>1)
{
    strQueryString = params[1];
}

var strEQueryString:String;
strEQueryString ="";
for (var s1:String in this.loaderInfo.parameters) {

  strEQueryString += s1 + "=" + this.loaderInfo.parameters[s1] + ";";
}
 
 
output_txt.text = 
  "Result:\n"+
  "location="+strUrl+"\n"+"querystring="+strQueryString+"\n"+
  "embed-url="+this.loaderInfo.loaderURL+"\n"+
  "embed-querystring="+strEQueryString+"\n";

取得第一個部分, 是取出整個 url 後, 再自行解析 (parse) 出 querystring 內容. 而在第二個部分, 因為是使用 loaderInfo, 所以 querystring 的參數可以直接使用 parameters 來取得.

sample link : http://sample.diary.tw/21/sample.htm?q1=123&q2=456&q3=789

其中 embed 的內容為: location.swf?eq1=abc&eq2=def 所以出現的結果如下:

參考資料:
http://ccutmis2.spaces.live.com/Blog/cns!F858878FA572B430!1016.entry
http://mc-computing.com/Languages/ActionScript/Getting_html_data.html

分類
PHP

php include file的檢查

在 php 程式中, 使用 include 的方式來將檔案含入是很常見的語法.

但是若某 php 程式, 同時會發生被 include 或獨立執行時, 如何判斷呢? 或是說某 1.php 程式, 本身可以執行, 也會被 2.php include, 但發生這兩種不同的狀況時, 會需要 1.php 有不同的執行結果, 要如何偵測這個狀況呢?

目前查到的手法, 是利用 __FILE__ 和 $_SERVER[“SCRIPT_FILNENAME”] 兩個變數來檢查. 也就是說, 在 1.php 的程式中, 使用如下的程式片斷:

if(basename($_SERVER['SCRIPT_FILENAME'])==basename(__FILE__))
{
    echo "1.php is running alone";
}
else
{
    echo "1.php is included by ".basename($_SERVER['SCRIPT_FILENAME']);
}

這是利用了 __FILE__ 這個 php 常數, 在 php 程式中, 會被設定為自己的檔名的緣故, 所以可以這樣來利用判斷. 或許還有其他手法, 或更直接的方式來判斷, 也歡迎大家提供!!

參考資料: http://www.programmer-club.com.tw/ShowSameTitleN/php/6727.html
關於 __FILE__ 的這個 magic constant 可以參考: http://www.php.net/manual/en/language.constants.predefined.php

分類
.net

Rewrite造成的403問題

之前介紹過這個軟體: ISAPIREWRITE https://diary.tw/archives/260

在 iis 下, 使用這個 isapirewrite 時, 要特別注意應用程式集區問題, 若是 rewrite 前後 application 使用不同的 app pool 時, 會發生 403 拒絕存取.

簡單地說, rewrite 的前後, 使用相同的 app pool 時, 這個問題就不會發生, 但有時為了增進效能及除錯應用, 或是獨立 web application, 切到不同的 app pool.

例如:

RewriteCond ^/test/([a-z0-9]+) /test/url.aspx?uid=$1 [I, CL, L]

都是在 /test 下的這個 app pool, 可以正常工作, 若是以下的 rewrite:

RewriteCond ^/test2/([a-z0-9]+) /test/url.aspx?uid=$1 [I, CL, L]

若是 /test2 和 /test 使用不同 app pool (應用程式集區) 時, 就會發生 403 的拒絕存取.

這是今天在除錯時發現的一個重大問題. 若有不明的 403 在 rewrite 上時, 可以往這個方向檢查看看!

分類
PHP

用GIF動畫做Captcha

一般 Captcha (用來分辨是否是人的一種方式, 可以參考: http://zh.wikipedia.org/zh-tw/CAPTCHA ) 都是靜態或是聲音的方式來讓人辨識, 不過今天要介紹這個是用動畫做的.

用動畫的話, 比較方便的格式是 gif 檔的動畫格式, 利用動畫的方式, 把”數學問題”顯示出來(當然是簡單的), 例如 4 + 8 = ? 這樣, 一格一格地秀出來, 如下:

(圖片引用自: http://www.querythe.net/Animated-Gif-Captcha/ )

這樣一來, 就可以避開破解的可能, 而且是用問題的方式來回答, 對於非人類的”機器人”或程式, 就有一定的防禦功能, 效果應該很不錯.

這個網站 http://www.querythe.net/Animated-Gif-Captcha/ 提供了免費的 php script 供 gif 動畫的 Captcha 來讓大家使用, 很不錯的免費 captcha 動畫gif版本. 大家可以試看看.

其他也有靜態的版本, 這裡有 freecap: http://www.puremango.co.uk/2005/04/php_captcha_script_113/ , 雖然還有許多其他的, 不過這個 gif 的版本是很特別的一個 captcha , 又有創意, 也有不錯的功能.

[2012/4/25 12:39]

這些也是動畫式的 captcha –
http://sandbox.palmnet.me.uk/gifcaptcha/index.php
http://hellocaptcha.com/

分類
.net

利用ashx傳送檔案下載

在 asp.net 中, 若要實現檔案下載處理的方式(並且要進行 url 隱藏及下載管理), 可以利用 ashx (generic handler) 來進行, 方式很單純, 主要是在 header 上下一些手腳, 方式如下:

<%@ WebHandler Language="C#" Class="file" %>

using System;
using System.Web;

public class file : IHttpHandler {
    
    public void ProcessRequest (HttpContext context) {
        //context.Response.ContentType = "text/plain";
        //context.Response.Write("Hello World");
        //context.Response.ContentType = "image/png";
        //context.Response.TransmitFile("images/m2.png");        
        context.Response.ContentType = "application/octet-stream";
        context.Response.AppendHeader("Content-Disposition", "attachment; filename=test.doc");
        context.Response.TransmitFile("files/test.doc");        
        
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }

}

使用的方式若是處理檔案下載, 可以利用 application/octet-stream 這個 ContentType header , 並配合 Content-Disposition header 中, 利用 attachment; filename=xxxx 的方式來將檔案名稱指定給客戶端, 參考資料: http://support.microsoft.com/?scid=kb%3Ben-us%3B260519

而之後再利用 TransmitFile() 方法, 將在 server 上的檔案讀取出來並傳送到客戶端, 至於使用 TransmitFile 方法和其他方法的比較如這篇文章所示: http://blog.miniasp.com/post/2008/03/Caution-about-ASPNET-Response-a-Large-File.aspx

一般來說, 若是大檔案, 可以直接利用 TransmitFile 的方式來進行, 但不是太大型檔案, 有續傳需求時, 則不適用, 但效率上是以 TransmitFile 的效率最佳(因為不用先整個讀到記憶體中).

其他人的比較資料:
[ASP.NET] 無網址的檔案下載 – 進階研究 http://gogo1119.pixnet.net/blog/post/27407222

[2010/2/12 14:48]
相關文章: http://edu.uuu.com.tw/data_article/article/100212tips.htm

分類
程式技術

GO語言

不要吧…

已經一堆學不完的程式語言, GOOGLE又來做這個很妙的超大型計劃, GOLang, 詳情可以參考新聞: http://www.zdnet.com.tw/news/web/0,2000085679,20142689,00.htm

其實我並不覺得這麼多的程式語言有什麼好, 基本上, 所有的程式語言都大同小異, (雖然有的還是有很大的差異), 不過無論如何, 每種語言有每種語言的強項, 也有弱項, 只是一直出新的, 不好好維護舊的, 大打”商品行銷”戰, 到底是為了什麼, 要忙死我們程式設計人員嗎?

不過本著學習是 Developer 最重要的興趣, 我們還是來看看 Golang 在賣什麼, 先到官方網站來看看: http://golang.org/ 網頁真是很有 google 的感覺, 簡潔.

然後 go 語言看起來又像是 C++, 又像是 Java, 也像 script 的 php, 可能都不會差太多吧.

好吧, 只好之後再花一些時間來研究看囉, 這個 google 創建的新語言, go….

分類
Database

SQL Server Replication示意圖

SQL Server Replication (複寫), 也就是用來做資料庫內容同步的一種應用架構, 通常用來做備援或查詢主機應用, 剛在 MSDN 上看到一張說明的圖示很棒, 引用過來, 方便想了解 Replication 技術的朋友參考:

圖片引用自: http://msdn.microsoft.com/en-us/library/aa179423(SQL.80).aspx

其中很重要的觀念在於 snapshot 是做整個資料的複寫, 而 log reader 則是把 transcation log 讀出來存入 distribution database , 再對 subscriber 寫入, 而存在 distribution database 中的 transaction log 用來做資料同步後的持續異動記錄, 以繼續同步 subscriber 中的資料. 由這張圖上看就清楚很多了.

分類
程式技術

微軟線上虛擬實驗室

在使用新的開發工具時, 往往需要建一個 lab 來操作及學習. 為方便管理及安裝維護, 通常使用的方式是利用一個虛擬機器, 如 Virtual PC 或是 VMWare, 現在有更方便更好的方法.

剛來到這個微軟線上的虛擬實驗室, http://msdn.microsoft.com/zh-tw/aa570323.aspx 發現還真是有夠棒的, 只要安裝一個小的 activex control, 安裝好的實驗室環境就等著你去學習及操作, 而且你不用自己準備環境, 隨時要玩隨時可以玩. 而且完全免費.

不過他不支援 firefox, 只支援 ie6 以上的 ie, 不過也不損及操作這個虛擬實驗室的便利性. 畢竟不用準備環境, 不用準備自行安裝軟體, 直接開始操作, 是很方便又很省事的一件事. 以往技術人員及開發人員, 需要有一些準備環境的時間, 現在都省下來了, 直接在線上操作, 真的是方便又省事.

整體操作的感覺很棒, 雖然有一點點 lag 的感覺, 但操作起來還算順手哦, 下面是開了一個 ie8 相容性的 lab 畫面:

其實可以看到, 上面的 lab 內容其實就和一台虛擬機器一樣, 很方便地實作 lab 要做的步驟, 又不用去準備環境, 真是是很不錯的設計哦.

分類
程式技術

Silverlight 3支援h.264耶

Silverlight 3甫上線, 多很許多有用的功能, 今天來談有關於可以播放 h.264的功能. 的確, 經過測試的結果, 果然是可以播放 h.264 (一樣透過 MediaElement 這個媒體播放器來播放即可), 不過相對地, 也可以利用這個功能來播放 youtube 上的 h.264 壓縮的影片囉.

以下使用測試的方法, 主要是用來驗證 silverlight 3 player 可以播放 youtube 上的 h.264 的影片, 目前的做法如下:

  1. 找一個 silverlight 的 player (使用現成的 JW WMVPlayer – http://www.longtailvideo.com/players/jw-wmv-player/ )
  2. 利用 Bookmarklet 將 youtube 上的影片來源找出來, 參考資料: http://googlesystem.blogspot.com/2008/04/download-youtube-videos-as-mp4-files.html
  3. 根據上面 2. 的內容, 將其餵給 silverlight 3 player (JW WMVPlayer), 就可以直接播放了, 效果還不錯

不過實務上, 自己下載影片下來, 在自己本機 play 還很單純, 不過若是要直接播放, 就得利用上面的 Bookmarklet 來調整, 如此一來, 便能利用 silverlight 3 的播放器來播 youtube 的內容, 不過請特別注意, 本範例測試網站是為了測試 youtube 的 h.264 影片是否能被 silverlight 3 播放器播放, 所以實作了這個案例. 讓大家參考一下實際的播放效果, 不過會和 youtube 的官方規範有一些衝突(http://www.youtube.com/t/terms), 這個要請大家留意一下.

範例測試網站: http://sample.diary.tw/silverlight/