2008年11月27日

TIOBE Programming Community Index


 
TIOBE Programming Community index
是TIOBE公司利用搜尋引擎對程式語言統計而產生的數值
可以將它視為 程式語言受歡迎程度的指標
每個月這個指標都會更新一次
連結:TIOBE Programming Community index
定義:TIOBE Programming Community Index Definition

下面是2008年11月的資料:

依據網站上的說明近5年的前十名程式語言排名幾乎沒有變化
盤據十名榜的常勝軍包括Java、C、C++、PHP、Visual Basic、JavaScript、C#
(但最近似乎有不少新進的語言大幅成長而使十名榜產生變化了)


若是看趨勢圖會發現2004年中趨勢有了劇烈的起伏
原因不是因為有什麼程式語言迅速崛起或沒落
而是因為google調整了他的搜尋策略使搜尋結果有很大的變動
因而影響到這個依據搜尋引擎統計的指標

TIOBE index雖然是個程式語言受歡迎程度的指標
但TIOBE一開始就在網頁上提到:
TIOBE index並不是要指出哪個語言才是最好的程式語言
也不是在比較程式設計師使用哪個語言寫了最多行的程式碼
它的目的是用來檢視我們的程式開發技能是不是能跟上潮流處於最新的狀態
也提供我們在開發建置新的專案或系統時選擇程式語言的參考

關鍵字:程式語言, 比較, 排名, 趨勢
參考資料:
1. TIOBE Programming Community index
2. 程式語言 -- 專案各有所需、人人各有所好

2008年11月25日

自製小玩具:期中考成績分析


 
首先希望看到這個頁面的大家都可以試玩看看

命運的期中考成績分析

整個結果頁面的預覽圖:

## 注意 ##
這個並不會是永久放置的小玩具 也許過一陣子連結就會失效了
這篇文章的目的並不是為了要宣傳或讓大家試玩
而是要稍微紀錄解說一下整個頁面的運作

首先要讓大家了解到的是這雖然名為分析
但運作模式卻不折不扣是個完全依據亂數決定的程式
程式一開始由檔案中取得我事先輸入的40多個項目
接著亂數選出一個項目 再亂數產生一個介於0到bound的數字
(bound目前設定是20 功用是避免某個項目佔的比重太大)
產生數字後就把數字加入該次亂數選到的項目
(若多次亂數選到同一個項目則數字會疊加上去
所以若看到某一項目比例超過bound那麼就是這個項目被選中兩次以上)

將數字加到項目以後會計算剩餘的比例
當剩餘的比例低於bound時就把剩下的加到最後一次亂數選中的項目
(這是避免產生太多比例非常低的項目)
產生了所有項目和比例之後透過Google Chart API產生統計資料的圓餅圖
(細節可參考Google Chart API:繪製中文圓餅圖)
最後在動態網頁上把資料和圖片一起顯示出來

基本上功能到這邊就已經完全
但在這種模式下每個人每次的計算結果都會不一樣
於是又另外寫了紀錄的功能
(紀錄在檔案而不是資料庫,不是沒能力存到資料庫,而是有點麻煩XD)
完成這個功能以後每個人計算時會先看是否已經玩過存有資料
如果沒有的話就照平常的方法產生結果
已經玩過的話就從檔案裡讀取資料

以上便是這整個小玩具的運作模式
一開始是因為成份分析產生器產生興趣
在不知道他的做法的狀況下以自己的想法模擬做了一個
結果就是發現這樣的分析其實都只是亂數罷了 :p

關鍵字:成份分析
參考資料:
1. 成份分析產生器

用Java替中文網址轉碼:URLEncoder


 
在程式或者網頁的應用中我們常常需要把中文轉換為其他編碼
例如在上一篇 Google Chart API:繪製中文圓餅圖(Pie Chart)
就需要把中文網址轉換為 UTF-8 的編碼
當然下面介紹這些也不僅僅限於轉換網址而已

圖片來源:http://www.stringfunction.com/blog/url-encoding-decoding/

在我目前的應用中只用過了JAVA
使用的函數是 URLEncoder.encode(String 字串, String 編碼)
(編碼為:UTF-8, UTF-16等等)
以下是節錄自用javascript轉UTF-8編碼的編碼解碼介紹

#Java#
會處理#字元為%23,空白字元轉換為+,中文字拆開每BYTE處理為ASCII
第二個String 為Locale
java.net.URLEncoder.encode(String args,String args)
java.net.URLDecoder.decode(String args,String args)

#JavaScript#
會處理#字元為%23,空白字元轉換為+,中文字處理為UniCode
escape(String args)
unescape(String args)
不會處理#字元,空白字元轉換為%20,中文字拆開每BYTE處理為ASCII
encodeURI(String args)
decodeURI(String args)
會處理#字元為%23,空白字元轉換為%20,中文字拆開每BYTE處理為ASCII
encodeURIComponent(String args)
decodeURIComponent(String args)

#PHP#
會處理#字元為%23,空白字元轉換為+,中文字拆開每BYTE處理為ASCII
urlencode
urldecode
會處理#字元為%23,空白字元轉換為%20,中文字拆開每BYTE處理為ASCII (RFC 1738 )
rawurlencode
rawurldecode

這篇只介紹了使用java來做轉碼
使用javascript編碼轉換的介紹可以查看
用Javascript替中文轉碼:escape, encodeURI, encodeURIComponent 的比較
或者直接利用Online UrlEncoder:線上轉換中文網址為UTF-8編碼

關鍵字:java.net.URLEncoder, UTF-8, url, encode, decode, 中文, 中文網址, 轉碼, 編碼
參考資料:
1. 用javascript轉UTF-8編碼
2. (JSP)傳送URL的時後需要的URLEncoder.encode(c,"utf8");

Google Chart API:繪製中文圓餅圖(Pie Chart)


 
目前在網路上看到的文章都還說Google Chart API無法使用中文
但其實是可以的 所以特地寫一篇介紹如何達成我們的目標

Google Chart API是google提供的服務
我們只要透過網址傳遞相關的參數和資料
就可以獲得對應的資料圖表
今天要介紹的就是利用google來繪製圓餅圖

上圖就是google官方所提供的範例,網址是:
http://chart.apis.google.com/chart?cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World
其中http://chart.apis.google.com/chart?是Chart API的網址後面要接參數
重要的參數說明如下:
cht=p3:選擇圖片類型,如現在是立體圓餅圖
chd=t:60,40:各項資料的比例,注意順序要與chl對應,以 , 分隔
chs=250x100:圖片大小,Google提供支援到300000畫素,可以自訂為1000*300,750*400,600*500等等,注意若文字過長被圖片切掉可以透過把圖調扁來讓他顯示
chl=Hello|World:各項資料的名稱,以 | 分隔
另外還有chtt是圖表的名稱,其餘的參數可以參考Google Chart API

上面的一段在google已經可以找到很多說明了
本篇的重點其實是在如何為圖表加入中文
因為google目前還不支援直接把中文放在網址中產生圖片
所以很多人都以為這個API是無法使用中文的
但是讓我們來看看下面這個例子

其中的網址和剛剛都很類似
http://chart.apis.google.com/chart?cht=p3&chd=t:60,40&chs=250x100&chl=%E4%B8%AD%E6%96%87|%E5%87%BA%E7%8F%BE%E4%BA%86
只有chl的地方改變了
%E4%B8%AD%E6%96%87對應到的是中文的UTF-8編碼
%E5%87%BA%E7%8F%BE%E4%BA%86則是出現了的UTF-8編碼
關於中文網址的編碼轉換請參考
用Java替中文轉碼:URLEncoder
用Javascript替中文轉碼:escape, encodeURI, encodeURIComponent 的比較
如果只想產生圖檔而不是在程式中應用的話請利用
Online UrlEncoder:線上轉換中文網址為UTF-8編碼
應該就可以順利把中文網址轉換成UTF-8了

關鍵字:Google Chart API, Pie Chart, 圓餅圖, 中文, sort, 排序
參考資料:
1. Google Chart API
2. 用網址畫圖,Google 推出 Google Chart API

2008年11月12日

HashMap的應用及資料排序


 
在資料處理時我們常常需要 (key, value) 的對應
先前在將List做排序的方法也是為了類似的目的
當初利用List是因為我們不需要由key去取得value的功能
只需要把所有資料依某個欄位排序全部印出即可
在這種情況底下自己建立所需資料型態的物件List會比較方便

然而有時候我們需要的是針對某個鍵值提出對應的資料
以成績單舉例好了 當我們的目的只是要列印成績單
那麼用List去做會是一個不錯的選擇
可是在List的結構底下若是我們只想得到某一學生的成績
那我們就得在List裡頭搜尋這個學生的名字然後才能得到成績
面對這種狀況另一個方法就是利用HashMap

把資料的 (key, value) 放入HashMap以後要針對特定的key取得value是非常簡單的
可以參考最下面程式碼裡面單純取得成績那段
如果HashMap裡頭有儲存資料則會傳回對應該key的value
HashMap裡沒有資料的話則會傳回 null

在HashMap裡資料的排列與key、value、加入順序都無關
HashMap有自己獨特的排列方式,像程式碼第二段的輸出結果
若是想讓資料以key值排序可以選擇用TreeMap 但效能是HashMap較佳

利用HashMap我們已經達到可以利用key值迅速取得value
但是如果我們想要印出所有資料卻又不知道姓名怎麼辦呢?
這時候只好利用HashMap的entrySet()方法取得所有資料
然後把這些資料匯入List中做處理
只要資料匯入List後就可以依照key或value排序印出了
如程式碼第三四段

在看程式碼和結果前先下個簡短的結論
如果是單純的想列印全部資料或者欄位不只兩個
那麼就建立一個自訂class的List來處理會比較方便
如同將List做排序的方法所介紹的
但如果資料只是兩欄 (key, value) 的配對
則用HashMap可以迅速取得單一key對應的資料
HashMap的作法只要稍加轉換仍舊可以排序列印出所有資料
以上供大家在選擇時做參考,下面是程式碼和輸出結果
  1. import java.util.*;

  2. public class HashMapDemo {

  3. private HashMap<String, Integer> transcript;

  4. public static void main(String[] args) {
  5. new HashMapDemo();
  6. }

  7. public HashMapDemo() {

  8. transcript = new HashMap<String, Integer>();
  9. transcript.put("Alex", 95);
  10. transcript.put("Bibby", 70);
  11. transcript.put("Charlie", 85);
  12. transcript.put("David", 75);

  13. // 單純取出學生的成績
  14. printGrade("Alex");
  15. printGrade("Bibby");
  16. printGrade("Joice"); //沒資料會傳回null
  17. System.out.println();

  18. // 想印出HashMap裡的全部資料
  19. // 注意這裡印出的順序不按姓名、成績,也不按加入順序
  20. // 因為HashMap有自己的排序方式,若要按姓名排序可用TreeMap但效能較差
  21. for (String name:transcript.keySet()) {
  22. printGrade(name);
  23. }
  24. System.out.println();

  25. // 想依照姓名或成績牌列印出所有資料,先將所有HashMap裡的entry放入List
  26. List<Map.Entry<String, Integer>> list_Data =
  27. new ArrayList<Map.Entry<String, Integer>>(transcript.entrySet());

  28. // 依姓名排序並列印
  29. Collections.sort(list_Data, new Comparator<Map.Entry<String, Integer>>(){
  30. public int compare(Map.Entry<String, Integer> entry1,
  31. Map.Entry<String, Integer> entry2){
  32. return (entry1.getKey().compareTo(entry2.getKey()));
  33. }
  34. });
  35. for (Map.Entry<String, Integer> entry:list_Data) {
  36. printGrade(entry.getKey());
  37. }
  38. System.out.println();

  39. // 依成績排序並列印
  40. Collections.sort(list_Data, new Comparator<Map.Entry<String, Integer>>(){
  41. public int compare(Map.Entry<String, Integer> entry1,
  42. Map.Entry<String, Integer> entry2){
  43. return (entry2.getValue() - entry1.getValue());
  44. }
  45. });
  46. for (Map.Entry<String, Integer> entry:list_Data) {
  47. printGrade(entry.getKey());
  48. }
  49. }

  50. private void printGrade(String name) {
  51. System.out.println(name + "\t" + transcript.get(name));
  52. }
  53. }
輸出結果:
  1. Alex 95
  2. Bibby 70
  3. Joice null

  4. Charlie 85
  5. Bibby 70
  6. David 75
  7. Alex 95

  8. Alex 95
  9. Bibby 70
  10. Charlie 85
  11. David 75

  12. Alex 95
  13. Charlie 85
  14. David 75
  15. Bibby 70

關鍵字:HashMap, Map, Key, Value, Collections, sort, 排序

參考資料:
1. 針對java.util.Map的Value做排序(1)
2. 將List做排序的方法

2008年11月11日

用 Blog 賺小錢 - 博客來AP策略聯盟


 
(2011.12.19更新)
本系列介紹文章已有新版本,請見:
部落格廣告賺錢術(一):Google Adsense、BloggerAds、BlogAD 收益比較
部落格廣告賺錢術(二):博客來AP策略聯盟、Yahoo!奇摩購物中心大聯盟計畫平台、PChome商店街分紅網
更多外掛如相關文章推薦輪播、部落格廣告賺錢、社群網站外掛等,請見總整理文章:
Blog Plugins:部落格外掛大全整理,什麼都有、什麼都不奇怪

這篇要介紹的是博客來AP策略聯盟
博客來AP策略聯盟和前面介紹的廣告收益方式完全不同,
前者是以廣告出現頻率和使用者點擊廣告的次數來計算收益,
而博客來則利用使用者由個人推薦連結進入購買的金額來計算分紅。
也就是說今天有人點了屬於我的推薦連結購物,
那麼我就可以在這筆消費中取得固定比例的分紅。

和前面的廣告最不同的是,這個類型的廣告一定要有消費產生才有錢,
光點擊連結是無法產生收益的,這也是為什麼這類廣告被稱為 CPA (Cost-per-Action) 的原因,
而 Google Adsense、BloggerAds 等則被歸類於 PPC(Pay-per-Click) 每次點擊收益,
或 CPM(Cost per Thousand Impressions) 千次曝光收益。

在加入博客來AP策略濕盟前我們可以先到註冊頁面看看回饋比率,
然後選擇自己想要的合作方式:
回饋金計算比率表
商品類別 獨家AP 非獨家AP 無回饋金AP
書籍 4 % 2 % 0 %
雜誌 2 % 2 % 0 %
影音 2% 1 % 0 %
美妝 2% 0 % 0 %
親子 2 % 0 % 0 %
衣飾 2 % 0 % 0 %
創意生活 2 % 0 % 0 %
玩藝 2 % 0 % 0 %
美食 2 % 0 % 0 %

其中合作方案的規則是:
獨家AP
合作期間貴網站除了博客來之外,不放置其他電子商務網站相關的銷售連結
非獨家AP
合作期間貴網站放置包含博客來,以及其他電子商務網站相關的銷售連結
無回饋金AP
適用於學術單位或政府機關,或者決定不要回饋金者,博客來不提供回饋金

註冊後博客來提供了好幾種形式的連結,
第一種是聯播貼紙,結果會像下面這樣,
其中第一個欄位是博客來內建的,其他的欄位可選擇0-3個想推薦的主題活動。


第二種則是簡單的搜尋工具貼紙
透過這個工具找到的購買訂單也都可以有分紅。

第三個主題活動貼紙和第一個類似但比較整潔俐落,
而且可以只推薦單一的主題活動就好,
取得程式碼以後結果會像是一張圖片。


最後一種銷售連結產生器則是我覺得博客來最吸引人的地方,
我們可以把博客來上的商品連結轉換成成自己的推薦連結,
這樣我們就可以在blog上介紹有試用過或是推薦的圖書音樂,
只要朋友們覺得喜歡,點下購買以後我們就能得到分紅,效果像這樣:
http://www.books.com.tw/exep/assp.php/your_ap_id/exep/prod/booksfile.php?item=0010522255,
我們也可以利用圖片連結:


介紹完畢,總而言之,若你是個容易煽動別人購買慾的人,
就可以在 Blog 等地方加入這些工具來賺分紅囉!大家可以試試看。

相關文章:
部落格廣告賺錢術(一):Google Adsense、BloggerAds、BlogAD 收益比較
更多外掛如相關文章推薦輪播、部落格廣告賺錢、社群網站外掛等,請見總整理文章:
Blog Plugins:部落格外掛大全整理,什麼都有、什麼都不奇怪

關鍵字:分紅, 收入, 網賺收益, 比較, 自己點, Facebook, 部落格, blog, 廣告, 賺錢, 停權, 資訊提供廣告, 網域廣告, 網路賺錢部落格, 申請, 下線, 獎金

2008年11月8日

用 Blog 賺小錢 - BlogAD、BloggerAds


 

(2011.12.19更新)
本系列介紹文章已有新版本,請見:
部落格廣告賺錢術(一):Google Adsense、BloggerAds、BlogAD 收益比較
部落格廣告賺錢術(二):博客來AP策略聯盟、Yahoo!奇摩購物中心大聯盟計畫平台、PChome商店街分紅網


這系列大概只會有三篇介紹文章
之前已經在第一篇用 Blog 賺小錢 - Google Adsense介紹了Google Adsense
這篇則要介紹與Adsense有相同收益模式的BlogAD和BloggerAds

首先BlogAD的網址在http://www.blogad.com.tw/BlogAD/
也可以透過我的BlogAD招募網址連結過去
BlogAD和BloggerAds都是台灣的部落格廣告公司
收益方式基本上都和Adsense差不多
唯一的小差別是BlogAD的獎金計算可以選擇曝光式或點閱式
詳細計算方式可以參考BlogAD的說明
點閱式是只要有點擊就有獎金 適合流量小的blog
如果是每天廣告播放數會超越5000次則建議使用曝光式

常常被拿來和BlogAD比較的是BloggerAds
印象中BloggerAds是比BlogAD還早出現的
BloggerAds的網址在http://www.bloggerads.net/
同樣也可以透過我的BloggerAds招募網址來連結喔
BloggerAds和BlogAD主要的差異在於BloggerAds直接整合了曝光與點閱
也就是說無論是廣告曝光或者有人擊點廣告都能獲得收益
這對一般的blog使用者是比較方便的
BloggerAds的廣告放置幅數有限制所以版面會比較乾淨
但這不影響收益喔 多數網友的使用心得都是BloggerAds的獎金較高

除了廣告曝光和點擊的收益外
這兩個網站都有拉下線的機制
其中BlogAD的回饋是終身有效而BloggerAds則不是
所以如果有人想要加入的話歡迎透過我的招募連結加入
BlogAD招募網址BloggerAds招募網址
不過網路上的心得好像是不用太期待從這兒賺錢就是了

以上是這系列的第二篇
一樣提供給大家參考喔

相關文章:
用 Blog 賺小錢 - Google Adsense
用 Blog 賺小錢 - 博客來AP策略聯盟

2008年11月7日

121 - Pipe Fitters


 
UVa網站題目連結
My Solved Problems Performance

Background

Filters, or programs that pass ``processed'' data through in some changed form, are an important class of programs in the UNIX operating system. A pipe is an operating system concept that permits data to ``flow'' between processes (and allows filters to be chained together easily.)

This problem involves maximizing the number of pipes that can be fit into a storage container (but it's a pipe fitting problem, not a bin packing problem).

The Problem

A company manufactures pipes of uniform diameter. All pipes are stored in rectangular storage containers, but the containers come in several different sizes. Pipes are stored in rows within a container so that there is no space between pipes in any row (there may be some space at the end of a row), i.e., all pipes in a row are tangent, or touch. Within a rectangular cross-section, pipes are stored in either a grid pattern or a skew pattern as shown below: the two left-most cross-sections are in a grid pattern, the two right-most cross-sections are in a skew pattern.

picture26

Note that although it may not be apparent from the diagram, there is no space between adjacent pipes in any row. The pipes in any row are tangent to (touch) the pipes in the row below (or rest on the bottom of the container). When pipes are packed into a container, there may be ``left-over'' space in which a pipe cannot be packed. Such left-over space is packed with padding so that the pipes cannot settle during shipping.

The Input

The input is a sequence of cross-section dimensions of storage containers. Each cross-section is given as two real values on one line separated by white space. The dimensions are expressed in units of pipe diameters. All dimensions will be less than tex2html_wrap_inline133 . Note that a cross section with dimensions tex2html_wrap_inline135 can also be viewed as a cross section with dimensions tex2html_wrap_inline137 .

The Output

For each cross-section in the input, your program should print the maximum number of pipes that can be packed into that cross section. The number of pipes is an integer -- no fractional pipes can be packed. The maximum number is followed by the word ``grid'' if a grid pattern results in the maximal number of pipes or the word ``skew'' if a skew pattern results in the maximal number of pipes. If the pattern doesn't matter, that is the same number of pipes can be packed with either a grid or skew pattern, then the word ``grid'' should be printed.

Sample Input

3 3
2.9 10
2.9 10.5
11 11

Sample Output

9 grid
29 skew
30 skew
126 skew

Solution

  1. import java.io.BufferedInputStream;
  2. import java.util.Scanner;

  3. public class Main {

  4. public static void main (String[] args) {

  5. double double1, double2;
  6. int grid, skew;
  7. Scanner in = new Scanner(new BufferedInputStream(System.in));

  8. while (in.hasNext()) {
  9. double1 = in.nextDouble();
  10. double2 = in.nextDouble();
  11. grid = (int)(double1) * (int)(double2);
  12. skew = skew(double1, double2);
  13. if (grid>=skew) {
  14. System.out.println(grid + " grid");
  15. } else {
  16. System.out.println(skew + " skew");
  17. }
  18. }
  19. }

  20. private static int skew(double double1, double double2) {

  21. if ((double1<1)|(double2<1)) {
  22. return 0;
  23. } else {
  24. int skew1 =(((int)((double1-1)/(1.732/2))+1+1)/2 * (int)(double2) +
  25. ((int)((double1-1)/(1.732/2))+1)/2 * (int)(double2-0.5));
  26. int skew2 =(((int)((double2-1)/(1.732/2))+1+1)/2 * (int)(double1) +
  27. ((int)((double2-1)/(1.732/2))+1)/2 * (int)(double1-0.5));
  28. return (skew1>skew2) ? skew1 : skew2;
  29. }
  30. }
  31. }
關鍵字:UVa Online Judge, ACM. Java

2008年11月4日

用 Blog 賺小錢 - Google Adsense


 
(2011.12.19更新)
本系列介紹文章已有新版本,請見:
部落格廣告賺錢術(一):Google Adsense、BloggerAds、BlogAD 收益比較
部落格廣告賺錢術(二):博客來AP策略聯盟、Yahoo!奇摩購物中心大聯盟計畫平台、PChome商店街分紅網

自從部落格風行之後
利用在部落格擺放廣告的收益方式也越來越多
這系列就是要介紹幾個比較常見的

首先先介紹的Google Adsense和BlogAD、BloggerAds算是同一類
他們得到收益的方式都是靠網友擊點廣告
當然我們想的到的作弊方式他們也都想的到
所以自己點或者叫朋友幫忙點都是違反規則的

Google Adsense是由Google推出
申請後可以依據自己的喜好設定不同的廣告
譬如說長的像下圖這樣的廣告組:

另外也有連結組的廣告橫幅可以選擇


這些是最單純也最直覺的廣告
使用者看見了點擊然後blog放置廣告的人獲得收益
Google還有另一種廣告方式是透過像左上角Google的搜尋工具

這個工具十分好用可以設定搜尋自己部落格裡的所有資料
對於要在部落格裡找從前文章是很方便的工具
這個小工具的收益方法是Google會在搜尋結果頁面放和搜尋詞相關的廣告
一樣也是要使用者擊點那些廣告後才會產生收益

Adsense產生的收益要累積到100美元才能領取
在網路上有其他介紹相關細節的文章所以在這邊就不贅述了
透過Adsense的網頁我們可以看到廣告出現和點擊的次數
當然還有產生的收益
據說每千次廣告的出現大概只會有1~3次點擊
所以如果出現了奇怪的現象說不定會被Google盯上喔

簡單介紹 :p 大家可以試試看喔

相關文章:
用 Blog 賺小錢 - BlogAD、BloggerAds
用 Blog 賺小錢 - 博客來AP策略聯盟

Money Assistant 記帳軟體圖解教學


 
出門在外有時候總不知道錢花到哪去了
沒有良好規劃統計的話就只能當個月光族
甚至更慘的到月底就只能吃泡麵維生
如果能養成記帳的習慣的話上面的問題都解決囉
所以在這推薦一個很棒的記帳軟體 Money Assistant

本軟體需要先安裝 .NET framework 1.1
這個軟體的官方連結已經消失了
但是仍可以在 http://freakshare.com/files/r12clw7g/MoneyAssistant_227_Full.exe.html 下載
最終的版本是2.27版
之後似乎就沒有繼續更新了
不過使用上都很正常沒有問題

在安裝完軟體之後首先要新增帳號
帳號的功能就是讓這個軟體可以全家人使用
帳號有搭配密碼所以也不怕內容被看見


第一次使用時要先設定帳戶
在這邊可以新增常用的資產、收入支出
譬如說資產可能有郵局帳戶、現金、I-cash等等


設定完帳戶後得先幫個別的帳戶設好初始值

這樣幾個簡單的設定之後就可以開始使用囉

這個軟體最方便的地方是它可以自由轉換資產
譬如說儲值I-cash就可以把錢從現金轉到I-cash帳戶
當然也可以轉換到其他用途囉



當然記帳軟體最重要是要能紀錄花費
方法很簡單 就只要新增一筆紀錄從資產到支出就可以了


新增後離開就可以看到全部的紀錄了
也要記得對照目前的資產金額是不是都正確喔
才不會忘記哪一筆消費讓帳對不上
也可以看到累積的花費收入是多少呢



另外在左下方也可以選擇只看到當月的收入支出喔



最後最後 如果想知道自己消費的趨勢
這個軟體也提供了一些統計的功能
玩起來還蠻有趣的呢



其實這個軟體還有很多很多強大的功能
不過在這邊沒辦法一一詳述
就讓大家自己慢慢摸吧
希望大家看了這篇以後都能多省點錢喔

關鍵字:Money Assistant, assistance, 記帳, 軟體, 下載, 教學, 圖示, 好用, 方便
參考資料:
  1. 國人自製免費記帳軟體 MoneyAssistant

2008年11月3日

[發佈] NTU-Library-Search


 
其實這是在werdna-feeds發佈前就寫的東西
大部分的功能並不是我完成的
只是讓我當作踏入這塊領域的入門練習
之前測試了許久開發了一些新東西
也把原始的程式碼更改做出中英文的版本
現在已經正式發佈在圖書館新服務實驗室

想找書或者搜尋資料時總是覺得還要連上特定網頁太麻煩嗎
NTU-Library-Search小工具提供了一個解決之道
只要在iGoogle上面就能簡單的查詢資料喔
而且這個小工具還貼心地提供了中文版英文版兩個版本喔

小工具預覽圖:

英文版:
NTU-Library-Search.png

中文版:
NTU-Library-Search-zh_tw.png

使用步驟如下:
1. 這是個iGoogle小工具
要使用iGoogle服務得先擁有google帳號
如果沒有帳號可以按這裡申請

2. 有了帳號之後選擇點下下面的按鈕將小工具加入iGoogle
英文版:Add to Google
中文版:Add to Google
接著可視自己需求選擇是否將iGoogle設為首頁
加入後的小工具會出現在http://www.google.com/ig

3. 加入小工具後可以點右上角的倒三角形變更設定
取消勾選後選項就不會出現在小工具的頁籤
選項的網站如下:
台大圖書館 : http://www.lib.ntu.edu.tw/
台大整合查詢系統 : http://metacat.ntu.edu.tw/
台大學術資源網 :http://sg.lib.ntu.edu.tw/
台大機構典藏 : http://ntur.lib.ntu.edu.tw/
台大圖書館網站典藏庫 : http://webarchive.lib.ntu.edu.tw/

4. 完成上面三個簡單步驟後就可以開始使用這個小工具了
只要先選取想搜尋的網站 接著將關鍵字輸入按下enter
預設的瀏覽器就會將搜尋結果顯示出來

這個小工具也可以內嵌在blog或個人網頁喔
嵌入英文版
嵌入中文版
先設定長寬顏色邊框 再按下取得程式碼
最後再將程式碼貼上自己的網頁即可
做出來的效果會像下面一樣