2007年11月28日 星期三

Friendly.Flickr V2.6.2.0 released

http://richielin-programer.blogspot.com/2007/11/friendlyflickr-v2620-released.html

短時間內一直更新軟體,希望不會造成大家的困擾
因為天秤是利用空閒時間寫這個軟體,更新時間無法固定
且因為是自己一個人撰寫,無法將軟體測試的很完整
所以需要藉助大家的力量幫忙測試,才能找得出來一些問題
故有時候有 Bug 時會短時間密集更新,還請大家見諒
感謝一些朋友的建議及回報 (人數眾多無法一一列出,請見諒)
加入支援滑鼠滾輪及視窗縮放的功能,並修正 WLW 外掛判斷最新版本錯誤的問題

另外有二點請各位朋友幫忙確認一下
1. 有朋友提出在清單模式下以 tag 搜尋時
會出現類似搜尋 100 張但出現 50 張照片都重覆的錯誤
天秤測試結果都正確,一直無法模擬出該狀況
但已將 Flickr.NET 這個底層元件更新至最新版本,以期解決這個問題
還請大家幫忙注意一下,有類似此問題的請回報讓天秤知道
如果能回報 100% 出現的模式是最好不過的
例如搜尋某人的相簿及某 tag 條件時一定會出現某幾張照片重覆的問題
2. 有朋友提出在批次下載時會出現百分比跑完但照片未下載的狀況
有個狀況可能會出現這個問題
當指定某尺寸照片(如 Large),這時如果 Flickr 上沒有該尺寸照片時
Friendly.Flickr 會跳過該張照片(因為根本沒有該尺寸照片可下載)
如果選擇的照片剛好全部都是沒有該尺寸的,就剛好全部都沒有下載
不知道這個朋友是不是剛好在這個狀況下
但不排除在某個條件下軟體會判斷錯誤而真的沒下載到照片
所以也請大家幫忙注意一下批次下載的功能是否真的有天秤沒測到的錯誤
感謝~

更新項目

1. 照片預覽區支援滑鼠滾輪功能
2. 支援視窗縮放功能,可將視窗放大至全螢幕,增加可視範圍
3. 修正 Windows Live Writer 外掛讀取版本錯誤,造成判斷最新版本機制失敗的問題

檔案下載: Firendly.Flickr V2.6.2.0

2007年11月26日 星期一

Friendly.Flickr V2.6.1.0 released

http://richielin-programer.blogspot.com/2007/11/friendlyflickr-v2610-released.html

感謝 YDWU 及一些朋友的建議,這一版本修正及改善了一些東西
主要是清單搜尋時改善了速度及穩定度,搜尋大量照片清單時應該不會有類似卡住的問題了
且上傳照片時也修正了穩定度,並加入續傳的功能
有時因網路或一些問題會造成上傳失敗,這時軟體會再自動上傳
確定連續上傳 5 次都失敗才會跳出上傳失敗的提示視窗,避免影響操作的流暢度

另外在軟體右下角原本是 [關閉] 的按鈕 (要關閉時請軟體按右上角 X 按鈕了)
現在將由 [排版預覽] 來取代,按下 [排版預覽] 之後
會將你指定的排版結果秀出來,非常適合在 [進階排版] 貼上前先作預覽及修正
image

更新項目

1. 修正 GPS 座標輸入的防呆機制的錯誤
2. 修正 Tag 儲存成常用字後,會把每個字串儲存一組常用字的問題 (應該是存成同一組才對)
3. 加入續傳功能,上傳照片失敗時會再自動重試
4. 改善清單搜尋的穩定度,避免搜尋大量照片時會類似卡住的狀況
5. 改善清單搜尋的速度
6. 上傳照片時指定照片集時,有時候會造成軟體錯誤並結束的問題
7. 加入預覽模式,可以在貼上剪貼簿前先預覽排版狀況

檔案下載: Firendly.Flickr V2.6.1.0

2007年11月22日 星期四

好用的線上聽音樂

http://richielin-programer.blogspot.com/2007/11/blog-post.html

image

線上收聽音樂的概念應該不是第一次被應用了,如 KKBOX 等服務
但還是有些許的差異
KKBOX 等服務是與音樂廠商合作,取得有版權的合法音樂供付費用戶合法線上收聽
當然關鍵是 "使用者付費" "合法授權" "線上收聽" "廠商合作"
而 Songza 的概念是一個平台,所有線上音樂都是由網路上搜尋
包含 YouTube 等線上影片服務其中的音樂
當使用者搜尋時,列出找到的線上提供服務的相關音樂
讓使用者由 Songza 這個平台統一線上收聽音樂
由於網路上資源無遠弗界,各式各樣的音樂都有
找到的音樂或許會有別於 KKOBX 這種正統音樂服務
特色就是 "免費" "獨特" "多元" "方便"

最另人高興的是,中文搜尋完全沒問題
不用輸入任何資料,就可以將搜尋到的音樂儲成 playlist
我想是以 cookie 型式儲存吧~
好處是完全不需註冊就可以儘情享用網路上的音樂
壞處是當換台電腦後 playlist 就不見啦,有好有壞啦
不論如何,這個音樂服務網站都值得一試~

2007年11月20日 星期二

Visual Studio 2008 Express 正式版開放下載了

http://richielin-programer.blogspot.com/2007/11/visual-studio-2008-express.html

image

Visual Studio 2008 Express 開放下載了,不是 Beta 版,而是正式 Released 版本
如同 VS2005 一樣,微軟還是提供了免費的 Express 版本供下載使用
有興趣的快去下載吧!

檔案下載: http://www.microsoft.com/express/default.aspx

DVD iso 完整下載大約 900MB,裡面包含了
Visual C# 2008 Express Edition - 770 MB
Visual Basic 2008 Express Edition - 天秤沒興趣,所以沒安裝
Visual C++ 2008 Express Edition - 645 MB
Visual Web Developer 2008 Express Edition- 927 MB
一次下載就可以選擇安裝各種 Express 版本,還不賴!
不用移除舊版 Visual Studio,可以並存在同一台電腦
天秤電腦上裝有 VS2003, VS2005, VS2008,一樣 OK 啦~

##CONTINUE##

天秤先安裝 Visual C# 2008 Express Edition,邊安裝邊寫文章
它會主動安裝 .NET Framework 3.5,安裝過程都還順利
但也如同安裝 VS2005 一般的緩慢,其中倒是幾項讓天秤覺得很好奇

1. 最下一行是什麼? 可以由 Visual Studio 來接收 RSS 訊息?
不知道會包含什麼內容? 或許是一些教學或範例之類的吧
不過可想而知一定都是英文啦
image

2. 果然可以安裝 Silverlight Runtime 了
Silverlight 應該也可以算是 Visual Studio 2008 的重頭戲之一了
當然一定得包含它了
image

2007年11月19日 星期一

Friendly.Flickr V2.6.0.0 released

http://richielin-programer.blogspot.com/2007/11/friendlyflickr-v2600-released.html

先向各位說聲抱歉,前幾版為了加入 "清單模式" 而將內部機制做大變動
導致許多小地方都出現問題了
如上傳照片時按滑鼠右鍵加入標籤和說明、產生 KML 發生錯誤等
因天秤沒辦法在每次 release 前一一測試各項功能
所以還請各位當當白老鼠,幫忙測試一下
有問題還請回報給天秤,希望能有一版穩定的版本出現

從 V2.6.0.0 版開始加入了自動判斷是否有最新版本的功能
各位手上的 Friendly.Flickr 會自動連上 Server 判斷是否有新版本供下載
以後每當天秤更新版本時
就會跳出以下的視窗來提醒各位連上網頁下載,記得更新到 V2.6.0.0 以後才有此功能哦
image

更新項目

1. 加入判斷最新版本及提示下載功能
2. 修正上傳照片按滑鼠右鍵加入標籤及說明會造成錯誤的問題
3. 修正產生 KMZ 功能會失敗的問題

檔案下載: Firendly.Flickr V2.6.0.0

2007年11月15日 星期四

Friendly.Flickr 前傳

http://richielin-programer.blogspot.com/2007/11/friendlyflickr.html

image

天秤無聊在 Google 上閒逛,發現一套軟體 Flickr 照片管理精靈
才猛然想起這是天秤在 2006 年寫的一套 Flickr 工具軟體
應該算是 Friendly.Flickr 的前身吧,連天秤自己都已經忘了有寫過這套軟體了
連當初用的部落格都棄置了,已跳槽到 Blogger 了
還滿懷念的,呵呵~

當時剛入手單眼相機,且剛試用 Flickr 就決定加入付費會員
Flickr API 做得不錯,但當時 Flickr 實用的工具軟體實在不多
就決定自己來寫一套試試
以現在看來,軟體界面不夠優,讀取及下載照片速度不夠快
佔用資源高且容易造成系統卡住,實在連堪用都算不上
但決定寫一套完整的 Flickr 工具軟體的心和現在沒兩樣

##CONTINUE##

稍微回顧一下畫面
想要把大部份資訊及功能塞到畫面上,主畫面界面有點亂 - 失敗
image

資訊瀏覽模式
原意不錯,但因為 Flickr API 得另外發出封包來取得照片資訊
造成速度緩慢,且沒實作 cache 機制
更是讓系統長時間處於處理狀態 - 失敗
image

照片瀏覽狀態
原本企圖瀏覽照片可以做到無縫縮放功能,結果還是因為網頁傳輸問題
讓功能變成四不像
且搜尋瀏覽界面共用同一 Panel,造成操作上不便 - 失敗中的失敗
image

沒上傳、批次下載、編輯功能,界面不佳的問題
也讓該軟體最後被天秤放棄,改寫 Friendly.Flickr 的原因
不過話說回來
也因為部落格的發達,讓人可以把生活過程該錄下來
回頭檢討過去失敗的東西,不也是讓人成長的一種方式

2007年11月12日 星期一

在部落格上用 MSN Messenger 與版主聊天

http://richielin-programer.blogspot.com/2007/11/msn-messenger.html

介紹個由微軟提供部落格上使用的新奇玩具
直接在部落格上用 MSN Messenger 與版主聊天

加入方式

1. 進入設定網頁: http://settings.messenger.live.com/applications/Default.aspx

2. 以 MSN 帳號登入
image

3. 選 [網頁設定] 後,並勾選 [允許所有網際網路使用者看見我的線上狀態並傳送訊息給我]
按 [儲存] 鈕確定
image

4. 選 [建立 HTML],並選擇你要的樣式
第一項只會顯示你 MSN Messenger 狀態
第二項則可以在網頁上鑲入 MSN Messenger 來與你對話
image

5. 選擇後複製下方的 HTML 並貼至您的網頁即可
由於它是使用 iframe 格式鑲入
所以就算你網頁或部落格沒有支援 Javascript 應該也可以使用
畫面上不會顯示 MSN 帳號,不用擔心被其它有心人士利用
點開始對話後,可以選擇以 MSN 帳號登入或以訪客方式傳送訊息
不想讓 MSN 帳號曝光的就可以訪客方式登入~

2007年11月5日 星期一

Friendly.Flickr V2.5.4 released

http://richielin-programer.blogspot.com/2007/11/friendlyflickr-v251-released.html

11/15 感謝 paichia 大的回報
修正上傳照片時,照片依拍照時間排序會錯亂的問題

11/13 感謝 Jesse Lin 大的回報
修正批次下載照片時,設定 Original 格式照片會儲存成 Large 格式照片的錯誤

11/09 感謝 Jahong 大的回報
修正上傳照片時在照片上按右鍵會關閉程式的錯誤

感謝 Chris S. Lin @ TAIWAN 大的回報
修正自 V2.3.2.0 之後上傳照片時, 無法將 EXIF 的資訊寫入相片說明的功能
感謝 ShengWD 大的回報
修正 [複製照片 URL 到剪貼簿] 的功能有時無法正確取得照片 URL 的問題
對此問題再加上判斷,避免之前的版本當沒有該尺寸照片時
取得的照片連結會顯示如下圖照片的問題

另外如果不是按右鍵 [複製照片 URL 到剪貼簿] 而是而按下方按鈕選擇 [複製到剪貼簿] 時
例如設定 Large 尺寸照片但是沒有該尺寸照片時,則連結會自動以 Medium 的照片取代

更新項目

1. 修正設定上傳照片視窗,將 EXIF 資訊寫入說明或標籤的功能失效的問題
2. 修正搜尋後的照片按右鍵另存新檔時,選擇二張以上照片時會將所有照片都儲存的問題
3. 正確取得各尺寸的照片,避免下載到 Flickr Unavailable 的照片或該照片的連結
4. 修正上傳照片按右鍵會發生錯誤的問題
5. 修正批次下載照片時,設定 Original 格式照片會儲存成 Large 格式照片的錯誤

檔案下載: Firendly.Flickr V2.5.4

2007年11月2日 星期五

XNA Game Studio Express 控制模組的移動

http://richielin-programer.blogspot.com/2007/11/xna-game-studio-express.html

繼前幾篇文章 XNA Game Studio Express 初試 中示範 2D 遊戲畫面顯示
XNA Game Studio Express 顯示 3D 模組 中對示範 3D 遊戲畫面顯示
都還只是顯像輸出的範圍,遊戲中很重要的一項因素 - 互動
當然得包含輸出及輸入部份
本範例將介紹輸入的部份,還是以 XNA MSDN 上範例做示範
但由於該範例是以 XBOX360 控制器做為輸入界面,無法在 PC 上實際操控
所以天秤將稍微修改一下範例,以鍵盤當成輸入界面,使其在 PC 上可以動作

##CONTINUE##

準備工作

本範例是延續上一篇文篇的範例,直接跳至此篇的朋友
可以下載上一篇文章範例的程式碼來學習

讀取輸入裝置

前幾篇文章陸陸續續有提到,GraphicsDeviceManager 類別兩個重要的函式
draw 函式負責不斷的將畫面輸出至螢幕
而 update 函式即是負責不斷的計算、處理遊戲中的參數,如處理使用者的輸入
此範例即是在 update 函式加入判斷輸入的功能
其中有關 GamePad 物件為 XBOX360 特有的物件,用來取得 XBOX360 搖捍的輸入狀態
Keyboard 物件即為取得 PC 上鍵盤輸入的物件
而判斷某鍵是否有輸入,可以 Keyboard.GetState() 函式取得鍵盤狀態中該鍵是否有按下
再依是否按下狀態來做模組的移動

// Set the velocity of the model, applied each frame to the model's position.
Vector3 modelVelocity = Vector3.Zero;

protected override void Update(GameTime gameTime)
{
    if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
        this.Exit();
    if (Keyboard.GetState().IsKeyDown(Keys.Escape) == true)
        this.Exit(); 

    // Get some input.
    UpdateInput(); 

    // Add velocity to the current position.
    modelPosition += modelVelocity; 

    // Bleed off velocity over time.
    modelVelocity *= 0.95f; 

    base.Update(gameTime);
}

protected void UpdateInput()
{
    // Get the game pad state.
    KeyboardState keyboard_currentState = Keyboard.GetState();
    if (keyboard_currentState != null)
    {
        // Rotate the model using the left thumbstick, and scale it down.
        if (keyboard_currentState.IsKeyDown(Keys.Left) == true)
            modelRotation += 1 * 0.10f;
        if (keyboard_currentState.IsKeyDown(Keys.Right) == true)
            modelRotation -= 1 * 0.10f; 

        // Create some velocity if the right trigger is down.
        Vector3 modelVelocityAdd = Vector3.Zero; 

        // Find out what direction we should be thrusting, using rotation.
        modelVelocityAdd.X = -(float)Math.Sin(modelRotation);
        modelVelocityAdd.Z = -(float)Math.Cos(modelRotation); 

        // Now scale our direction by how hard the trigger is down.
        if (keyboard_currentState.IsKeyDown(Keys.Up) == true)
            modelVelocityAdd *= 2;
        if (keyboard_currentState.IsKeyDown(Keys.Down) == true)
            modelVelocityAdd *= 0.5F; 

        // Finally, add this vector to our velocity.
        modelVelocity += modelVelocityAdd; 

        // In case you get lost, press A to warp back to the center.
        if (keyboard_currentState.IsKeyDown(Keys.Space) == true)
        {
            modelPosition = Vector3.Zero;
            modelVelocity = Vector3.Zero;
            modelRotation = 0.0f;
        }
    } 

    // Get the game pad state.
    GamePadState currentState = GamePad.GetState(PlayerIndex.One);
    if (currentState.IsConnected)
    {
        // Rotate the model using the left thumbstick, and scale it down.
        modelRotation -= currentState.ThumbSticks.Left.X * 0.10f; 

        // Create some velocity if the right trigger is down.
        Vector3 modelVelocityAdd = Vector3.Zero; 

        // Find out what direction we should be thrusting, using rotation.
        modelVelocityAdd.X = -(float)Math.Sin(modelRotation);
        modelVelocityAdd.Z = -(float)Math.Cos(modelRotation); 

        // Now scale our direction by how hard the trigger is down.
        modelVelocityAdd *= currentState.Triggers.Right; 

        // Finally, add this vector to our velocity.
        modelVelocity += modelVelocityAdd; 

        GamePad.SetVibration(PlayerIndex.One, currentState.Triggers.Right,
            currentState.Triggers.Right); 

        // In case you get lost, press A to warp back to the center.
        if (currentState.Buttons.A == ButtonState.Pressed)
        {
            modelPosition = Vector3.Zero;
            modelVelocity = Vector3.Zero;
            modelRotation = 0.0f;
        }
    }
}

本範例可以輸入鍵盤左、右鍵來控制飛行器的左右旋轉
上、下鍵來控制飛行器速度,如果飛行器飛出螢幕範圍了
按下 Space 鍵可以回復預設值,讓飛行器再次回到螢幕中央
最後按下 Escape 鍵結束

下載: 本範例程式碼及執行檔下載