分類
程式技術

在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

Alexa世界大站

好一陣子沒有在看 Alexa 排行榜了, 發現 YAHOO 掉到第4名了, 猜了一下, 去年 Google 才擠下 yahoo (LINK), 後面應該還有 facebook 和 youtube 也擠下 yahoo, 於是到 ALEXA 排行榜查看, 果然 (Alexa Top 500 Global Sites), 名次如下:

  1. Google.com
  2. Facebook.com
  3. Youtube.com
  4. Yahoo.com
  5. Live.com
  6. Wikipedia.org
  7. Blogger.com
  8. Baidu.com
  9. Msn.com
  10. Qq.com

再來看看走勢圖, 以下列出前5名的比較:
Reach:

看得出來, Reach的部分 Facebook 成長驚人啊.
再來是 PageViews:

有持續成長的只有 google 及 facebook, 而 yahoo 是下挫的十分嚴重.
再來看看停留時間:

Facebook 更是一支獨秀, 而 youtube 也是因為影音的關係, 所以停留時間也長.
最後就是 RANK 的部分:

yahoo 從 2009年初被 google 擠到第二名後, 在 2009 暑假又被 facebook 追過來到第三名, 而 facebook 也在 2009/6左右超過 youtube 來到第三後, 再超越 yahoo 到第二名. 看這個名次的競爭真激烈啊.

不過也看得出來, facebook 的力量真是很驚人呢!

分類
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

分類
Windows

好用工具svchost viewer

偶然在 windows server 上會發現記憶體愈來愈少. 但是又是無法重新開機的狀況, 利用 task manager 會發現有個吃記憶體的怪獸, svchost.exe

這個 svchost.exe 望文生義, 就是個 host 服務的程式, 所以本身並無特別的執行項目, 而必須看他 host 什麼樣的服務, 這裡有個工具, svchost viewer: http://www.codeplex.com/svchostviewer , 就是專門用來看 svchost 的每個服務使用了多少記憶體及服務名稱, 方便在 svchost.exe 吃大量記憶體時, 查找原因所在.

這個 svchost viewer 是專查 svchost.exe 這個 process 的工具, 其實還有另一個功能更強大的工具, process explorer: http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx , 這個工具原本是在 sysinternal 這家公司, 早些年因為它的 utility 很豐富, 而且功能又都很強大(看它的名字叫 sysinternal 就能明白), 所以被微軟收購下來. 這個 process explorer 功能更多, 但若是拿來看 svchost 的 process 也能查找對應 svchost viewer 的功能, 但多更多其他的功能就是了.

這篇文章介紹了 svchost viewer 的介面及用法, 可以參考看看: 對一堆正在執行的 svchost.exe 好奇嗎?Svchost Viewer 可以給你答案 http://blog.joaoko.net/archives/1070

利用這樣的工具, 之前 svchost.exe 吃掉了 1g多的記憶體, 原來是 remote register 這個 service 用掉 1.06g 的記憶體, 真是太嚇人了, 停掉該服務後, 果然記憶體就還回來囉, 再次啟動這個服務, 又讓系統有充裕的記憶體可用了.

分類
.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 上時, 可以往這個方向檢查看看!

分類
Windows

微軟的防毒軟體-MSE

Microsoft Security Essentials (MSE), 微軟的防毒軟體, 可以在這裡下載: http://www.microsoft.com/security_essentials/?mkt=zh-tw

這個防毒軟體是微軟自己出的, 所以相對應該可信任防毒的能力或效果應該不差, 而且最重要的是免費. 只要他的病毒碼更新速度夠快, 相信應該是不錯用的.

看看這裡有對這個 MSE 的介紹: http://steachs.com/archives/943

目前支援的作業系統共有以下:

Windows XP 32-bit
Windows Vista/7 32-bit/64-bit

其他的OS目前還沒有, 不過對於 Client OS 來說, 有這套免費的防毒軟體, 而且又是微軟出的, 相信對於 Windows 加分不少.

分類
懶得分類

實用解析度大剖析

在實作 video 播放器時, 或是做 video 解析度判定時, 往往有許多專有名詞跑出來, 像是 VGA (640*480), NTSC (720*480), 再加上有一些小的解析度, 搞得很多名詞, 很多解析度出來, 這裡一次做一彙整, 把資料名稱和來源及解析度整理清楚. 也方便日後使用.

小尺寸的 CIF: (資料來源: http://zh.wikipedia.org/zh-tw/%E9%80%9A%E7%94%A8%E5%BD%B1%E5%83%8F%E5%82%B3%E8%BC%B8%E6%A0%BC%E5%BC%8F)

共有:
SQCIF 128 × 96
QCIF 176 × 144
CIF 352 × 288
4CIF 704 × 576
16CIF 1408 × 1152

其中 CIF 是 352 × 288, 而 Q 就是指 1/4, 所以各維度減為一半, 而 4CIF 則是 4倍, 也就各維度是 2倍長, 16CIF 則是各維度 4倍長.

再來就是較大尺寸的部分, 這張圖幾乎可以說明一切: http://zh.wikipedia.org/wiki/File:Video_Standards.svg

而顯示解析度更清楚的說明可以在這裡查到: http://zh.wikipedia.org/zh-tw/%E6%98%BE%E7%A4%BA%E5%88%86%E8%BE%A8%E7%8E%87

內容如下:

分類
懶得分類

hotmail新增網域可供申請(hotmail.com.tw)

微軟 hotmail 帳號信箱, 新增 hotmail.com.tw 網域可供申請(當然一樣包含了所有 M$的服務應用, 有hotmail, Messenger, xbox live等). 若原來自己喜愛用的帳號在舊網域 hotmail.com 沒有申請到的朋友們, 可以快來申請 hotmail.com.tw 的網域帳號及信箱囉.

申請的方式可以到 www.bing.com 網站然後在未登入的狀況下, 點選右上的登入, 或是直接到 www.hotmail.com (也是在未登入的狀況下), 選擇[註冊], 就會出現申請表單囉, 如下:

就可以選擇 hotmail.com.tw 的網域並申請帳號了. 快去申請吧!

相關新聞: http://www.zdnet.com.tw/news/comm/0,2000085675,20144046,00.htm
繼續閱讀: http://www.freegroup.org/2010/01/new-windows-live-hotmail-com-tw/

分類
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/

分類
手機大未來

iphone safari的書籤icon如何設定?

iphone上的 safari 瀏覽器一直有著很不錯的使用者經驗的手機瀏覽器.

而且可以很方便的把常用的網站 bookmark 到桌面上, 但是那個 icon 若是沒有經過設定的話, 將會是一個小的預覽縮圖放在桌面上(應該說主畫面上).

那如何設定這個 icon 呢? 可以參考這篇資料: http://vjarmy.com/archives/2008/01/howto_iphone_webclip_icons.php , 其實就是建立一個 57*57 的 PNG 圖, 並且檔名命名為 apple-touch-icon.png 放在 web 目錄的根目錄下即可. 這個 57*57 的 PNG 圖就會是”加入主畫面螢幕”上的那個 icon 了.

若不方便放這個檔案到 web server 的網站根目錄, 也可以使用 meta tag 來指定, 如下:

<head>  
    ...  
    <link rel="apple-touch-icon" href="/images/my.png"/>  
    ...  
</head>

這樣的效果也是一樣的. 在 apple.com 開發者網站上也有詳細的說明:

[補充說明 2010/1/6 11:15]
在上面的關於 apple-touch-icon.png 這個檔名, 若是命名為 apple-touch-icon-precomposed.png 的話, 則加入主畫面螢幕時, 不會再對該圖做任何特效處理, 已知的特效應該是一個 3d 效果的圓弧及加上 4個角的圓角. 可以參考這篇上面有圖做比較: http://uxhero.com/how-to/how-to-keep-mobile-safari-from-adding-gloss-to-home-screen-bookmark-icons/