顯示具有 Bernie 標籤的文章。 顯示所有文章
顯示具有 Bernie 標籤的文章。 顯示所有文章

2009年8月18日 星期二

Windows 7 發燒消息

一切由建翔開始, 可以參考一下"計中不能說的秘密"。

當然 RC 版請自行下載, 8/6號微軟開放下載的 RTM 更值得下載放到硬碟中囉。關於各版本的資訊可以看一下這個討論串, 至於在詳細一點的功能和解說請參考這個網友的文章

他好像是最近才裝得, 資料最新^^
現在進去測試階段,準備將系統更新到 Windows 7 運作啦!

2009年8月16日 星期日

Google Apps 大小事持續紀錄

Google Apps Status Dashboard
檢視 Google 所提供的服務是否上線中

Ericsk 大部落格所寫的幾篇文

提到三項 Google labs 三項服務,直到發文的現在還是實驗中,不是預設好得服務啦!

前面三項提到的服務中,有一個是 Code Review 服務。

Google Apps 預設的服務太少?只有信箱, 日曆, 文件, Google talk

可以參考我的另一篇文章 iPod Touch 與 Google 信件, 日曆, 聯絡人同步 有提到,將預設的語言改成英文(US),會出現 Mobile 選項可以讓我們同步更新資料到行動裝置的服務。在加上文章上述提到的三項實驗性服務呢,一共有12項令人驚豔的網路功能喔!Google 重度使用者應該很喜歡吧!

Google App Engine 這項服務一直沒有很深入的去瞭解,不過 Ericsk 大大撰寫文章和書是一定要讀的,目前知道可以當作部落格平台(大陸網友做的)這稍微有點興趣。

2009年5月13日 星期三

Browser 要選哪一個?

在數位時代看到”Google大打電視廣告 推廣Chrome瀏覽器”,一次把全部的Chrome Shorts 看完,實在是太有趣了。看完之後,只有一種衝動就是想自己去作一個短片說明 Google Chrome瀏覽器而已說。其實,這些短片中幾乎就是針對Google Chrome作特徵具體化。

例如:透過Google Chrome可以找到女友,但是萬一找到恐怖的妹,放心!Chrome的門會幫你擋住。玩骨牌如果不小心踢到,也幫你反煞車。安全防護機制似乎是蠻多短片比較容易呈現的主題。在視覺方面,他的分頁以及動態分頁的縮圖介面也是比較容易呈現的效果。基本上,看到這些短片會跑去下載的人應該很少吧!個人認為啦!

我應該也算Google重度使用者吧,很多東西也都依賴Google了。而在自用PC上面IE,Firefox,Google Chrome已經變成必備的了!在Google Chrome上未來世之前,僅有IE,Firefox兩個瀏覽器,偶爾會安裝Opera來玩玩。

問題出在於每個瀏覽器所支援的CSS程度不一,但是自從MS IE跟了CSS2.1之後,我想瀏覽器的大戰才會開打,戰國時代準備結束或許不是夢,百姓的夢想以及報復,三個瀏覽器皆能達成,剩下來的問題就是百姓的”附加功能”,以及”易用&好用”的主觀判斷。現在的我一天內開 Firefox的次數比開Google Chrome多次,用Google相關的服務時,開Chrome出來溜達。因為Firefox書籤還是比較正常,看看網頁和資訊會偏好用它,嚴格來說現在沒一個好用的就是了!看誰要來開發外掛或是更新使用者易用性思維。

[書籤管理]的學問,就像研所的老闆提出的[文件管理]一樣,是一門極大的學問啊!Text Mining最佳分類是第一關。第二關是應用層次,網頁連結可以置於Central亦可在Local端。

如果外掛以及資料可以整合,那用哪一個瀏覽器都無所謂了,反正都能讀取到自己的資訊不是嗎?

2009年2月20日 星期五

Adobe CS4系列合法無限期試用

本篇文章由梅問題教學網看到的
並以Adobe PhotoShop CS4示範如何延長試用期限



在這裡,首先要跟建翔同學說一聲Sorry了!
寒假前跟他要了Adobe CS4 master 的分官方正式版,但是一直無法成功安裝
反覆的安裝以及反安裝,就是無法使用!
最後,裝回 Adobe CS3 Priemer的己套軟體。
但是呢!我還是很心癢,尤其是 Adobe Flash CS4我是一定要用到的。
Google 不斷 Search,最後讓我找到一個神奇的秘密啦。
就是這篇文章的流來囉 :)



簡單的說,就是發現Adobe CS4系列的試用30版本以客戶端的時間為基準
安裝時間+30就是試用期限
以此為基礎我們要延長期現有兩種方式:

1. 使用前,手動調時間
2.使用前,自動調時間

這不是廢話嗎?就來看看批次檔如何寫囉(來至於梅問題的批次檔)



@echo off
echo date %date% > date_restore.bat
date 2009-02-19
call "C:\Program Files\Adobe\Adobe Photoshop CS4\Photoshop.exe"
exit


修改參數,為紅色標記。日期改成您安裝得日期,接著換軟體的絕對位置即可。
點取該批次檔之後,會立即產生一個批次檔紀錄當下日期,
當您用完軟體再按那個新的批次檔,就可以讓電腦的日期復原了。
不過,想爽快用得話,還是得買一下正版喔。

2008年12月13日 星期六

《 AS3 》讀取 XML Object 筆記

紀錄  ActionScript 3.0 Cookbook 的程式碼

將自己覺得重要以及常用的十項寫在下面,看看能不能用這些處理些啥事

1. Using Variables
    var username:String = "Bernie";
    var score:int = 1000;
    var example:XML = <gamescore>
                          <username>{username}</username>
                          <score>{score}</score>
                      <gamescore>

2. Using Variables by String
    var str:String = "<gamescore><username>"+username+"</username><score>"+score+"</score><gamescore>"
    var example:XML = new XML(str);

3. Adding Elements to an XML Object
    var example:XML = <example/>;
    example.two = " ";
    example = example.insertChildBefore(example.two, <one/>);
    example = example.insertChildAfter(example.two, <three/>);
    trace(example);

4.Adding Text Nodes to an XML Object
    var example:XML = <example/>;
    // <firstname>Bernie</firstname>
    example.firstname = "Bernie";
    // <test>A,B,C</test>
    example.test = ["A", "B", "C"];

5. Adding Attributes to an XML Element (@ operator)
    var example:XML = <example><someElement/></example>;
    example.someElement.@number = 12.3;
    example.someElement.@string = "example";
    /*
    <example>
        <someelement number="12.3" string="example"/>
    </example>
    */
    trace(example);

##CONTINUE##

6. Reading Elements in an XML Tree
    ar menu:XML = //....pass!
    
    // 多層的Tag(在此為label名稱之Tag)屬性質
    function walk(node:XML):void
    {
        for each(var element:XML in node.elements())
        {
            trace(element.@label);
            walk(element);
        }
    }

7. Finding Elements by Name
    items.items[0].name; // 'name'為Tag名稱
    items.items[1].name;
    book.title.toString(); // 'title'為Tag名稱

8.Removing Elements, Text Nodes, Attributes-1
    var example:XML = 
        <example>
            <fruit color="Red">A</fruit>
            <vegetable color="Green">B</vegetable>
            <dairy color="white">C</dairy>
        </example>;
    delete example.fruit.@color;
    delete example.dairy;
    delete example.vegetable.text()[0];
    /*
    <example>
        <vegetable/>
    </example>
    */
    trace(example);

9.Removing Elements, Text Nodes, Attributes-2
    var example:XML = 
        <example>
            <fruit color="Red" name=Apple"/>
        </example>;
    var attributes:XMLList = example.fruit.@*;
    for(var i:int = attributes.length()-1;i>=0;i--)
    {
        delete attributes[i];
    }
    /*
    <example>
        <fruit/>
    </example>
    */
    trace(example);

10. Loading XML
var loader:URLLoader = new URLLoader();
    loader.dadaFormat = DataFormat.TEXT;
    loader.addEventListener(Event.COMPLETE,handleComplete);
    loader.load(new URLReguest("example.xml"));

    private function handleComplete(event:Event):void
    {
        try{
            var example:XML = new XML(event.target.data);
            trace(example);
        }catch(e:TypeError){
            trace("Couldn't ....");
            trace(e.message);
        }
    }

也好久沒有更新文章了,除了忙推甄之外,專題亦是不可開銷啊!
加緊唸書比較實在,而且唸書或者是實做才會有心得可以放上來呀。

2008年11月26日 星期三

《 Flash 》考驗程式設計師的一個 Flash 遊戲 (light-Bot)



總共有 13 個關卡,你的任務就是要用最精簡的步驟,把機器人送到藍色的地磚上,並且點亮他。

可以試著用你所學過的技巧,重複使用 function,如果你要使用遞迴也不反對,但是並沒有辦法設定條件式讓程式跳出...









(上面是修正原文, 原文是12關, 應該是錯誤的...)

先是在 PTT 的 Flash版看到版主aquarianboy發的文章, 於是手癢就去玩玩看囉

後面兩關真的很難, 但是前面幾關,別怕非常簡單的喔.

以下提供我和依庭的解答(僅供參考)


(第11關, 這是我的解答與依庭的不一樣, 但是皆為"冗贅法"喔)


(第12關卡最久的思考, 這是依庭的解答, 被遮住了)


(第13關蠻Easy的, 一個函式即可搞定)

( 等第13關破完之後, 就會看到此畫面囉)


鍛鍊一下邏輯思考, 非常確定最後三關不是唯一解, 大家分享一下解法也OK

p.s 第11關拿出紙筆做戰, 13關想了一會測試幾個迴圈, 就OK囉

2008年10月7日 星期二

《 AS3 》Alternativa3D 安裝與配置

官方網站
http://alternativaplatform.com/en/

官方文件網頁
http://docs.alternativaplatform.com/dashboard.action

1. 下載
        註冊之後,觀看合約即可下載
        取得 Flash  組件檔案(.swc for 9 & 10)
        用此製作的程式,無法/嚴禁商業使用

2. 安裝與配置
        環境配置官方網站說明
             http://docs.alternativaplatform.com/display/TDEN/Connecting+library
      
        示範(Flash CS3)
            (1) 複製 全部的 .swc 到 C: \ Documents and Settings \ {username} \ Local Settings \ Application Data \ Adobe \ Flash CS3 \ en \ Configuration \ Components \.
            (2) 打開FlashCS3 IDE,將組件視窗打開,拉入元件庫即可。
 
        
3.範例測試
    官方的文件
    http://docs.alternativaplatform.com/display/TDEN/Hello%2C+Alternativa3D

    轉貼程式碼:
package {
import alternativa.engine3d.controllers.CameraController;
import alternativa.engine3d.core.Camera3D;
import alternativa.engine3d.core.Object3D;
import alternativa.engine3d.core.Scene3D;
import alternativa.engine3d.display.View;
import alternativa.engine3d.materials.WireMaterial;
import alternativa.engine3d.primitives.Box;
import alternativa.utils.FPS;

import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;

[SWF(backgroundColor="#000000", frameRate="100")]

public class HelloAlternativa3D extends Sprite {

private var scene:Scene3D;
private var view:View;
private var camera:Camera3D;
private var cameraController:CameraController;
private var box:Box;

public function HelloAlternativa3D() {
addEventListener(Event.ADDED_TO_STAGE, init);
}

public function init(e:Event): void {
removeEventListener(Event.ADDED_TO_STAGE, init);

stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;

// Creating scene
scene = new Scene3D();
scene.root = new Object3D();
box = new Box(100, 100, 100, 3, 3, 3);
box.cloneMaterialToAllSurfaces(new WireMaterial(1, 0xFFFFFF));
scene.root.addChild(box);

// Adding camera and view
camera = new Camera3D();
camera.x = 100;
camera.y = -150;
camera.z = 100;
scene.root.addChild(camera);

view = new View();
addChild(view);
view.camera = camera;

// Connecting camera controller
cameraController = new CameraController(stage);
cameraController.camera = camera;
cameraController.setDefaultBindings();
cameraController.checkCollisions = true;
cameraController.collisionRadius = 20;
cameraController.lookAt(box.coords);
cameraController.controlsEnabled = true;

// FPS display launch
FPS.init(stage);

stage.addEventListener(Event.RESIZE, onResize);
stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
onResize(null);
}

private function onResize(e:Event):void {
view.width = stage.stageWidth;
view.height = stage.stageHeight;
}

private function onEnterFrame(e:Event):void {
// User input processing
cameraController.processInput();
// Scene calculating
scene.calculate();
}
}
}

將背景設為暗色,就會發現成功囉 :D

參考來源:
【Alternativa3D】我的第一个DEMO

2008年9月21日 星期日

《 Ubuntu 》安裝SSH,FTP,Samba,Web Server筆記

一年前為了UNIX課程的Demo,要交的文件
拿了課指組的兩台Server做實驗,因為是Public IP且是行政的電腦
不用擔心啥,哈哈...小瓦有福了,嘿嘿

課程:Unix 系統與應用

以下是安裝3種伺服器的過程和紀錄:
OS:Ubuntu 7.04

1. SSH Server

因為 Ubuntu 不像Fedora Core 7 一樣,安裝完之後會預設的安裝 ssh ,所以為了能夠用安全連線的方式來跟伺服器互動,我們必須手動安裝。

// 這是一個類似 Fedora 的 yum 套件庫,我們採用他來進行安裝
apt-get install ssh

// 因為我們並不是用 tarball 安裝 ssh ,但是還是必須瞭解他的設定檔的路徑。
cd /etc/ssh

// 進入設定檔進行修改部份參數。
vim sshd_config

// 以下僅列出修改的地方:
Port 22 -> Port 8822 // 為了使伺服器安全一點的簡單小步驟。
PermitEmptyPasswords no // 透過 ssh 的人密碼不可為空值。
PermitRootLogin no // 為了更加安全不讓 Root 直接用遠端登入。
PrintMotd yes // 開啟顯示上次登入的訊息。
PrintLastLog yes // 顯示上次登入的訊息。

// 重新啟動
/etc/init.d/ssh restart


##CONTINUE##

2. FTP Server

// 一樣使用套件庫進行網路下載安裝。
apt-get install proftpd

// 設定檔路徑
cd /etc/proftpd/

// 進入設定檔進行修改部份參數。
vim proftpd.conf

// 以下僅列出修改的地方:
DefaultRoot ~ // 每個 FTP 使用者預設到家目錄,其他目錄都不能去。
開放anonymous ftp
// 修改並建立會自動登入到由 ftp 擁有的家目錄(/home/ftp/pub),
// 因名取義是給大家下載東西的地方。 並限定不能上傳檔案只能
// 下載< Limit write >。
// FTP 使用者 修改成 nologin可以安全一點。

// 重新啟動
/etc/init.d/proftpd restart

3. Samba Server

// 使用套件庫進行網路下載samba server安裝。
apt-get install samba

// 安裝該套件可以使系統帳號密碼與samba同步。
apt-get install libpam-smbpass

// 進行詳細得設定
vim /etc/samba/smb.conf

// 以下僅列出修改的地方:
Security = user // 必須以使用者登入。
netbios name // 顯示名稱之用。
Smbpasswd username // 新增Samba使用者密碼(因為系統本來就有該帳號)。
encrypt passwords = true // 密碼必須加密。
obey pam restrictions = yes // 引用安裝的libpam-smbpass套件。
unix password sync = true // 啟動與系統密碼同步機制。

// 針對資料夾做設定:
[public_unit2]
path = /tmp
guest ok = yes
writeable = yes

4. Samba Client

安裝好 SMB 要進行測試,最好的方式就是來一個 Client,所以底下進行一連串的測試動作和設定。

// 安裝該套件。
apt-get install samba-common

// 安裝該套件。
apt-get install samba-client

// 測試指令
smbclient '//IP or Domain Name/Partion' -U Username

5. Unix & Samba 密碼同步

vim /etc/pam.d/common-password
// 增加 password sufficient pam_smbpass.so audit use_first_pass

6. Apache Server(Web Server)

參閱 TKWU 老師的 Tarball 安裝方式這邊省略。亦可參閱本站文章


7. 參考資料
1) Linux Fedora Core 4 實務應用 旗標出版
2) 鳥哥的私房菜 SAMBA 伺服器的基礎設定
3) Chinson's phpBB 討論區 Debian GNU/Linux 的筆記


8. 轉載,請註明出處以及文章連結

2008年8月30日 星期六

《 AS3 》Papervision3D using BasicView

PV3D 建立場景還要放入那麼多變數多麻煩

參考 BasicView.as 建構子


// 這是它幫我們搞定的pv3d物件
scene = new Scene3D();
viewport = new Viewport3D(viewportWidth, viewportHeight, scaleToStage,interactive);
addChild(viewport);
renderer = new BasicRenderEngine();

// 攝影機型態,預設是 Target
switch(cameraType)
{
case CameraType.DEBUG:
_camera = new DebugCamera3D(viewport);
break;
case CameraType.TARGET:
_camera = new Camera3D(60);
_camera.target = DisplayObject3D.ZERO;
break;
case CameraType.FREE:
default:
_camera = new Camera3D(60);
break;
}


如何使用 BasicView


// 產生物件
basicView = new BasicView(800, 600, false, false);

// 添增
addChild(basicView);

// 叫 BasicView 的 pv3d 變數,用 '.' 即可
basicView.camera.z = -500;

// 最後,每次更新場景一定要呼叫的函式
basicView.singleRender();


基本上,差距大約 10 多行程式碼而已(包含 import)
如果不嫌棄打字的話呢,就多打這些是ok的啦!

快速Demo展示東西的話,BasicView 應該會更方便優 :)

《 VR 》出神入化的進階應用

資料來源:創新使用者互動介面研究 (UIUI)

Media Interaction Lab 這個位於奧地利的 Lab

結合虛擬以及實體的骨牌遊戲



結合虛擬跟實體的檔案管理



##CONTINUE##

Fez: 2d+3D 全新的遊戲體驗



Adaptive Path: 未來網路介面


Aurora (Part 1) from Adaptive Path on Vimeo.


Aurora (Part 2) from Adaptive Path on Vimeo.


Aurora (Part 3) from Adaptive Path on Vimeo.


Aurora (Part 4) from Adaptive Path on Vimeo.

2008年8月29日 星期五

《 AR 》新 UI 準備走入家庭

部落格好久沒文章了說

在這邊轉貼一下在創新使用者互動介面研究 (UIUI)看到的文章

皆是擴增虛擬實境的應用例子,不過想要玩AR還是先把VR搞好囉

這樣才有機會著手開發 AR 的遊戲,不是嗎?

EyePet

應用「擴增實境(Augmented Reality)」技術所製作的遊戲,透過 PS Eye 視訊攝影機結合現實環境與虛擬角色,讓玩家輕鬆無負擔的飼養虛擬寵物



Levelhead 的虛擬實境遊戲

讓假人在方塊之中遊走


levelHead v1.0, 3 cube speed-run (spoiler!) from Julian Oliver on Vimeo

##CONTINUE##

ARToolWorks: iPhone



對資訊科技產品走入家庭抱著期待

想著以後不用買電視,一個投影就會跑出 Mutil-Touch 的投射面

接著可以用手再上面運作家中所有的家電運作,

這也變成一個超大螢幕,以後的電腦就主機擺角落(最好是安全一點的角落)

一手掌握全世界應該是現代人都想要的吧!

以後也不用 Wii 啦,一個人在 AR 空間遊走

自行感測手的運作再回傳訊號給電腦

恩....

還是別想太多囉... :D

ARToolKit
http://www.hitl.washington.edu/artoolkit/

2008年6月22日 星期日

《 AS3 》Flash Panorama Game with Papervision3D

前陣子裝了 Papervision3D 來玩看看
當時連 ActionScript 都不知道是啥,就硬是要整合在一起做出一些作品


作品內含物:
  1. ActionScript 3.0
  2. Papervision3D 2.0 Great White
  3. AsWing
  4. Adobe FlashCS3
  5. Panorama Tech.
其他成份:
  1. 故事大綱
  2. 物件互動設計
參考來源:

在網路上搜啊搜著的找到這個 QTVR Like Panorama with Flash and Papervision3D for NBC and The Office 和我們想呈現的效果雷同,於是大致上看了一下此篇大作。

後記:

用 FlashCS3 為 IDE,組合 AS3 與 PV3D 和 AsWing。物件互動的設計皆利用 MovieClip去繪製,再添加到平面的場景,由於平面和三維的場景可以互相搭配,以至於整個 Project 的核心在於物件互動的對話和程式之中,PV3D 這大咖的傢伙僅用到環景,互動物件平面,滑鼠控制等。用這個 Project 入門瞭解 3D Scence 的應用可能性,算是對我們一個好的方式。

還需要再看多一點 API 並自己亂 Try 才會作特殊的效果 :XD

2008年6月2日 星期一

《 Network 》VLSM ClassC Subnet Example

此篇文章為:練習 VLSM 切割網路與 Router 設定

繼上一篇文章《 Network 》Cisco Router Basic Setup 的圖一架構
有三個 LAN 分別位於三個 Router 之內,由左至右為 LAN A, B, C
分別需要 Host 數目為:10, 54, 72,而 WAN 各需要 2 個
而單位申請到的 IP 為:163.23.199.0/24 之網路位址

1. 切割子網路
根據主機需求去切割,結果請參考 Google 文件 (這裡不重複張貼)

2. 用 Packet Tracer 架構出網路,並對硬體設備設定完成

設定 Router name


// enable 進到特權模式
Router>enable
// 進到全域編輯模式
Router#configure terminal
// 設定新名稱
Router(config)#hostname HSR1



設定 IP Address


// 名稱馬上變了喔,選擇某個欲設定之介面
HSR1(config)#interface serial0/3/0
// 設定新的 IP,若是設定錯誤,請用 no ip address 163.23.199.209 255.255.255.252 取消
HSR1(config-if)#ip address 163.23.199.209 255.255.255.252
// 若是 DCE 端需要設定 Clock Rate 控制的是傳輸速度
HSR1(config-if)#clock rate 64000
// 啟動介面,通常 WAN 需要,Eathernet 不用
HSR1(config-if)#no shutdown
HSR1(config-if)#exit



設定和啟動路由協定


// 啟用 Router RIP 協定
HSR1(config)#router rip
// 啟動模式為 Version 2 - Classless
HSR1(config-router)#version 2
// 設定 Router 附近接的網域為何:僅需輸入該網域最大之網路位址
HSR1(config-router)#network 163.23.199.0



其他步驟將LAN中的電腦網路設定完成之後就完成了

3. 對該網路架構進行測試

沒問題之後,表示『恭喜!您已經完成設定』

指導教授:TKWU@im.ncue.edu.tw

2008年5月20日 星期二

《 Network 》Cisco Router Basic Setup

首先是認識 Cisco Router 的設定方式:
  1. Console ( using Roll-over )
  2. Telnet/SSH
  3. AUX port ( Auxiliary Port )

以上是必要知道的知識,接下來就用 Packet Tracer 模擬環境和操作設定

用 Packet Tracer 架構此網路環境(如圖一)

圖一,網路架構

注意要點:

  • 路由器要安裝 WAN 介面模組,要如何選擇必須是公司網路狀況
  • 必須知道硬體設備之間的網路線要用哪一種
  • 知道 DCE,DTE。DCE 端的 Router 要設定 Clock Rate

假設網路環境需要如此設定如圖二)

圖二,網路設定(點擊放大)

操作要點:

  • 設定 Router name
  • 設定 IP Address
  • 設定和啟動路由協定
  • 檢示路由表
##CONTINUE##

設定 Router name


// enable 進到特權模式
Router>enable
// 進到全域編輯模式
Router#configure terminal
// 設定新名稱
Router(config)#hostname HSR1


設定 IP Address


// 名稱馬上變了喔,選擇某個欲設定之介面
HSR1(config)#interface serial0/3/0
// 設定新的 IP,若是設定錯誤,請用 no ip address 10.1.1.254 255.255.255.0取消
HSR1(config-if)#ip address 10.1.1.254 255.255.255.0
// 啟動介面,通常 WAN 需要,Eathernet 不用
HSR1(config-if)#no shutdown
// 若是 DCE 端需要設定 Clock Rate 控制的是傳輸速度
HSR1(config-if)#clock rate 72000
HSR1(config-if)#exit


設定和啟動路由協定


// 啟用 Router RIP 協定
HSR1(config)#router rip
// 設定 Router 附近接的網域為何
HSR1(config-router)#network 10.1.1.0
HSR1(config-router)#network 10.3.1.0


檢示路由表


HSR1#show ip route


檢查路由器設定


// 在路由器
HSR1#show running-config
// 在一般電腦,假設 pc 之 ip 為 10.3.1.32
pc>tracert 10.5.1.32



我用 Packet Tracer 依照圖二的設定,做出來檔案分享:
[ 檔案一 ]-在學校做的,[ 檔案二 ]-在家做的

指導教授:TKWU@im.ncue.edu.tw

2008年5月14日 星期三

《 PHP 》擷取中文字串發生的斷字問題


  1. big5 編碼字串


  2. //擷取字串前幾個字並避免截掉半個中文字,$strlen要擷取的字串長度
    function CuttingStr($str,$strlen) {
    if(strlen($str) > $strlen) {
    for($i=0;$i<$strlen;$i++) {
    $ch=substr($str,$i,1);
    if(ord($ch)>127) $i++;
    }
    $str= substr($str,0,$i);
    }
    return $str;
    }



  3. utf-8 編碼字串


  4. //擷取字串前幾個字並避免截掉半個中文字,$strlen要擷取的字串長度(以英文字母數計算,中文字需算二個字數)
    //此處直接傳入從資料庫讀出之UTF-8編碼字串
    function CuttingStr($str, $strlen) {
    //把' '先轉成空白
    $str = str_replace(' ', ' ', $str);

    $output_str_len = 0; //累計要輸出的擷取字串長度
    $output_str = ''; //要輸出的擷取字串

    //逐一讀出原始字串每一個字元
    for($i=0; $i //擷取字數已達到要擷取的字串長度,跳出回圈
    if($output_str_len >= $strlen){
    break;
    }

    //取得目前字元的ASCII碼
    $str_bit = ord(substr($str, $i, 1));

    if($str_bit < 128) {
    //ASCII碼小於 128 為英文或數字字符
    $output_str_len += 1; //累計要輸出的擷取字串長度,英文字母算一個字數
    $output_str .= substr($str, $i, 1); //要輸出的擷取字串

    }elseif($str_bit > 191 && $str_bit < 224) {
    //第一字節為落於192~223的utf8的中文字(表示該中文為由2個字節所組成utf8中文字)
    $output_str_len += 2; //累計要輸出的擷取字串長度,中文字需算二個字數
    $output_str .= substr($str, $i, 2); //要輸出的擷取字串
    $i++;

    }elseif($str_bit > 223 && $str_bit < 240) {
    //第一字節為落於223~239的utf8的中文字(表示該中文為由3個字節所組成的utf8中文字)
    $output_str_len += 2; //累計要輸出的擷取字串長度,中文字需算二個字數
    $output_str .= substr($str, $i, 3); //要輸出的擷取字串
    $i+=2;

    }elseif($str_bit > 239 && $str_bit < 248) {
    //第一字節為落於240~247的utf8的中文字(表示該中文為由4個字節所組成的utf8中文字)
    $output_str_len += 2; //累計要輸出的擷取字串長度,中文字需算二個字數
    $output_str .= substr($str, $i, 4); //要輸出的擷取字串
    $i+=3;
    }
    }

    //要輸出的擷取字串為空白時,輸出原始字串
    return ($output_str == '') ? $str : $output_str;
    }



  5. 使用 PHP5 新增加的函式


  6. //取得 utf-8 編碼的字串長度,這裡共 8 個字
    echo iconv_strlen('無標題文件abc', 'utf-8');
    //取得 utf-8 編碼的子字串,指定 從 0 開始取 20個字,結果是 "無標題文件1無標題文件2無標題文件3無標"
    echo iconv_substr('無標題文件1無標題文件2無標題文件3無標題文件4無標題文件5', 0, 20, 'utf-8');


2008年4月19日 星期六

《 Adobe 》Prepare to be a Flasher

Flash 和 ActionScript 對我來說都是剛開啟起步而已

整理了一下我認為玩好 Flash 需要的幾個技巧和工具:

  1. SWFObject: Javascript Flash Player detection and embed script
    • 官方網站:http://blog.deconcept.com/swfobject/
    • 我記得曾經用過這個 JavaScript 來裝 SWF,現在雖然找不到那作品。好東西當然要分享啦,況且在James' fantasy 的部落格文章中看到說 IE ActiveX 有啥米技術問題存在著,看來這 code 會對 Flasher有很大的幫助喔!
    • 使用說明:在網頁裡面輸入這些喔,不要忘記加一個<div id="flashcontent"></div>給 JavaScript 中的Flash使用捏~


      <script type="text/javascript" src="swfobject.js"></script>

      <div id="flashcontent">
      This text is replaced by the Flash movie.
      </div>

      <script type="text/javascript">
      var so = new SWFObject("movie.swf", "mymovie", "400", "200", "8", "#336699");
      so.write("flashcontent");
      </script>


  2. Sothink SWF Decompiler
    • 官方網站:http://www.sothink.com/product/flashdecompiler/download.htm
    • 說明:可以將 SWF 轉成 FLA,至於其他用法我就不清楚了,但是如果要把 ActionScript 也轉出來,可能不行的樣子,至少我試了的結果是如此,可能還要在觀察一下喔。
    • 我記得神魂顛倒是個正當的大站,但是出現了這個文章可以下載這軟體(可能要小聲的說吧!不然會被 OOXX.....)
  3. OOP Languages
    • 對於學過物件導向語言的人來說,可以馬上進入狀況,這點我到是蠻喜歡的耶,雖然我不是學的很好,但是 Flash 跟網頁一樣"所見即所的"效果,讓我想要墮入他的愛河(咦,我回高雄了啊?哈哈 :) )
    • 因為 Adobe Flash CS3 和 ActionScript 語言的進化,使得程式人可以掌握更深,美工者可能就開始卻步,不怎麼準啦,因為每個人不一樣咩,努力就好啦。

最近沒發什麼文章,潛在 Flash 3D Engine 的懷抱中,改天一定要打筆記給打來。另外,我還要去加強美工的技巧,嗚嗚....對我來說有點難度

希望下一篇會是 ActionScript 成果分享,上次說得 YWE 已經轉換戰場了,我想應該是暫停研究吧,等轉戰到 RIA 之時在一起拿出來玩玩看囉。

2008年3月15日 星期六

製作 7 zip 自解壓縮檔(.exe)

7-Zip 主要特性
  • 更新了壓縮演算法來加大 7z 格式 的壓縮比
  • 7-Zip 是基於 GNU LGPL 之下發佈的軟體
  • 支援格式:
    • 壓縮及解壓縮:7z、ZIP、GZIP、BZIP2 和 TAR
    • 解壓縮:RAR、CAB、ISO、ARJ、LZH、CHM、WIM、Z、CPIO、RPM、DEB和NSIS
  • 對於 ZIP 及 GZIP 格式,7-Zip 能提供比使用 PKZip 及 WinZip 高 2-10% 的壓縮比
  • 7z 格式自解壓縮檔(SFX)
  • 整合 Windows Shell
  • 强大的的檔案管理
  • 强大的命令列版本
  • 支持 FAR Manager 外掛
  • 支持 69 種語言
基於官方網站的介紹和理由說明之後,大部分的人都會選擇多裝
這一套俗又大碗的軟體了啦,那就應該來好好使用他囉。

壓縮軟體許許多多,各家有各家的說詞和演算法撐場面等等的。
不過我想最常用的步驟莫非是"自我解壓縮"的格式囉(就是 .exe 執行檔啦)
點兩下就解完全部的資訊,實在是跟朋友分享檔案的時候很方便的壓箱寶耶。

不過,.................用 WinRAR 的記憶還在嗎?喚醒一下好了 :)
或許常常用到,但是卻一時想不起來吧!

























以上是用 WinRAR 製作 .exe 封裝的設定,似乎有印象了對吧!

那 7 Zip 的呢?以下是完整的使用步驟:


























在欲壓縮之檔案上按右鍵























出現上圖畫面,然後選擇好設定









大功告成,我們試著解壓縮看看吧。














出現問你要放到哪裡,表示成功啦!


這套軟體壓縮的比較好,而且用是免費的,推薦大家使用。

2008年3月9日 星期日

《 YWE 》入門第一步:介紹和工具的準備

在很久以前 YWE 4.0 那時候吧,我發下宏願說要研究一下
然後還紀錄了一下如何用 XML 寫 Hello World! 但是事隔多年,我現在才要繼續研究
而且還是因為數位內容專題想借用它的介面來呈現,天啊,這是報應吧!

Anyway,開始紀錄一下 What's Yahoo! Widget Engine 有人會問說
和桌面程式哪裡不同啊,一樣嗎之類的話語,官方網站的確有說:

「Yahoo!奇摩Widget工具」是供您下載各式各樣 “Widget工具” 的一項服務。Widget工具是一種迷你應用程式,可在電腦桌面上單獨執行。Widget的功能包羅萬象,例如:查看氣象、閱讀即時新聞、檢視個人行事 曆,或玩玩小遊戲。Widget工具通常位在電腦桌面上,看起來像是張小圖片或小動畫,和一般的應用程式不同。

那開發人員又會提問,主要是用啥米程式語言和工具去架構呢?

每一個Widget工具都是運用「Yahoo!奇摩Widget Engine」製作出來的。「Yahoo!奇摩 Widget Engine」是一種JavaScript應用程式平台,在Windows和Mac OS X的作業環境都可使用。

那重點就勾勒出來了對吧!用 Yahoo!奇摩 Widget Engine 去構築整個 Widget 的模式,而該模式
是一種資料交換的介面,可以加入 JavaScript 的平台。

更詳細的介紹請洽 Yahoo!Widget 官方網站喔!
以我的桌面來說安裝完 Yahoo!Widget 之後的工具各代表啥米:


而開發人員必須專一個方便的小工具來助興:

他可以讓 .widget 的工具反轉成製作時的資料夾,讓我們可以對他作解析;
亦可以我們做好 Widget 之後,他自動幫我們壓縮成 .widget 的檔案給 YWE 去執行喔。
開發人員最好是安裝比較時間啦,我個人這樣認為。

##CONTINUE##

製作 Widget 範例的步驟:
  1. 規劃介面和功能
  2. 建立好 widget project 的架構(備註1)
  3. 用繪圖軟體製作,可能是去背的處理或是設計規劃頁面等等
  4. 編寫程式碼(備註2)
  5. 將 widget project 托移到 widget converter 並按下 convert
  6. 將產生的 .widget 納入工具列之中
  7. 啟用 Widget工具
備註1:
  • 如果以製作著的角度來說,這點可以非常隨性。
  • Project Name 之下,愛怎麼放就怎麼放,只要 .kon 的 xml 檔案在第一層。
  • 其他說明參閱 NKTalk 的說明文件
備註2:
  • .kon 是 XML 所構成的,而亦可以增加互動的效果,這部份由 Javascript 去處理。
  • 整個流程,最好是參閱 AJax 的觀念去思考。
以下是小範例:
  • 元素有:去背的介面和文字連結


  • <widget minimumVersion="4.0" version="0.1a1">
    <debug>on</debug>
    <window>
    <name>main_window</name>
    <title>Picture Widget</title>
    <width>228</width>
    <height>228</height>

    <image src="images/logo.png"/>
    <text>
    <name>Link</name>
    <data>NCUE</data>
    <size>25</size>
    <hOffset>65</hOffset>
    <vOffset>110</vOffset>
    <onMouseUp>
    openURL("http://www.ncue.edu.tw");
    </onMouseUp>
    </text>
    </window>
    </widget>



此 Widget 呈現效果為以下圖片展示:


雖然是非常簡單的範例,但是足以讓我們跨入門檻的第一不,希望下一次的進度會直接進入到
JavaScript 的傳遞和資料整合的部份,開始撰寫功能的程式碼。

後記:
我一直以來都用 Editplus 在編寫關於網頁相關的程式碼,於是為了寫 .kon 的檔案
我將 XML 複製一份改名為 Kon,現在 .kon 的檔案都有顏色區別了,這樣眼睛好看一些 :)

參考來源:
NKTalk 技術文件

2008年2月2日 星期六

《 Ubuntu 》LAMP 用 apt 套件庫安裝的順序和步驟

Ubuntu 安裝 Web Server 已經不是一件大事了,可以說是變得十分簡單。
在 Linux 底下完成這些條件的套件總和稱為:LAMP

以下列出必須安裝的套件名稱:


// Datebase
sudo apt-get install mysql-server

// Apache HTTP Server
sudo apt-get install apache2

// PHP for Apache HTTP Server
sudo apt-get install php5

// PHP Module
sudo apt-get install libapache2-mod-php5 php5-gd

// MYSQL for Apache HTTP Server
sudo apt-get install libapache2-mod-auth-mysql
sudo apt-get install php5-mysql

// phpMyAdmin
sudo apt-get install phpmyadmin


安裝的時候會因為相依性的問題而彼此相關,所以不見得要逐一輸入以下指令,
僅列出要完成安裝的必要套件名稱。正常來說,安裝完上述的套件之後就可以享受
Web Server 的服務啦 :)

萬一發生資料庫密碼不吻合進不去 MySQL,可以試著依照以下步驟來重新設定密碼:

  1. 停止MySQL


  2. /etc/init.d/mysql stop


  3. 用mysqld_safe指令啟動安全模式MySQL,並且告知不要讀取 grant table 以及所有 MySQL 資料庫密碼


  4. mysqld_safe --skip-grant-tables --skip-networking &


  5. MySQL 現在則在沒有密碼保護的狀態下執行


  6. mysql -u root


  7. 將可以使用你系統上包含所有資料庫密碼的 mysql資料庫,並且可以更改 root 密碼


  8. mysql > use mysql;
    mysql > UPDATE user SET Password=PASSWORD("yournewpasswd") WHERE User="root";


  9. 離開MySQL並且重新啟動 mysql


  10. mysql> exit




參考資料:
Ubuntu Apache-PHP-MySQL Server
MySQL HowTo

2008年1月28日 星期一

《 Linux 》Ubuntu 安裝 x-window

Ubuntu 正體中文 wiki 有一篇文章後面有說到 Ubuntu6.10Install
安裝 Kubuntu


sudo apt-get install kubuntu-desktop
sudo /etc/init.d/kdm start
sudo dpkg-reconfigure xserver-xorg


安裝 Edubuntu


sudo apt-get install edubuntu-desktop


安裝 Xubuntu


sudo apt-get install xubuntu-desktop
sudo dpkg-reconfigure xserver-xorg