測試圖片

test

facebook login example

這是一個利用facebook授權登入的應用程式

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” xmlns:fb=”http://www.facebook.com/2008/fbml”>
<head>
<title>facebook auth</title>
</head>
<body>
<script src=”http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/zh_TW” type=”text/javascript”></script>

<script type=”text/javascript”>

FB.init(”your api key”,”/xd_receiver.htm”,{”ifUserConnected”:onConnected,”ifUserNotConnected”:onNotConnected});

function onConnected() {
FB.Facebook.apiClient.fql_query(”select email from permissions where uid = ‘”+FB.Facebook.apiClient.get_session().uid+”‘”,
function(rows) {
var email_permission = rows[0].email;

if(email_permission==0){
FB.Connect.showPermissionDialog(”email, read_stream, publish_stream, offline_access”, checkPermission, true, []);
}else{
document.location=”/facebook_login_action.php?fb_personal_api=”+FB.Facebook.apiClient.get_session().uid;
}
});
}
function onNotConnected() {
FB.Facebook.apiClient.requireLogin();
}
function checkPermission() {
window.location.reload();
}

</script>
</body>
</html>

Original URL: http://fukuball.twbbs.org/?p=139

Facebook 是好物!

沒什麼事情~ 只是純粹這樣覺得而已!
 

Algorithm Gossip: 基數排序法

說明

在之前所介紹過的排序方法,都是屬於「比較性」的排序法,也就是每次排序時 ,都是比較整個鍵值的大小以進行排序。

這邊所要介紹的「基數排序法」(radix sort)則是屬於「分配式排序」(distribution sort),基數排序法又稱「桶子法」(bucket sort)或bin sort,顧名思義,它是透過鍵值的部份資訊,將要排序的元素分配至某些「桶」中,藉以達到排序的作用,基數排序法是屬於穩定性的排序,其時間複雜度為O (nlog(r)m),其中r為所採取的基數,而m為堆數,在某些時候,基數排序法的效率高於其它的比較性排序法。

解法

基數排序的方式可以採用LSD(Least sgnificant digital)或MSD(Most sgnificant digital),LSD的排序方式由鍵值的最右邊開始,而MSD則相反,由鍵值的最左邊開始。

以LSD為例,假設原來有一串數值如下所示:

73, 22, 93, 43, 55, 14, 28, 65, 39, 81

首先根據個位數的數值,在走訪數值時將它們分配至編號0到9的桶子中:

0 1 2 3 4 5 6 7 8 9

81


65


39



43 14 55

28



93







22 73





接下來將這些桶子中的數值重新串接起來,成為以下的數列:

81, 22, 73, 93, 43, 14, 55, 65, 28, 39

接著再進行一次分配,這次是根據十位數來分配:

0 1 2 3 4 5 6 7 8 9

28 39







14 22
43 55 65 73 81 93

接下來將這些桶子中的數值重新串接起來,成為以下的數列:

14, 22, 28, 39, 43, 55, 65, 73, 81, 93

這時候整個數列已經排序完畢;如果排序的對象有三位數以上,則持續進行以上的動作直至最高位數為止。

LSD的基數排序適用於位數小的數列,如果位數多的話,使用MSD的效率會比較好,MSD的方式恰與LSD相反,是由高位數為基底開始進行分配,其他的演 算方式則都相同。

實作

  • C
#include <stdio.h>
#include <stdlib.h> 

int main(void) {
    int data[10] = {73, 22, 93, 43, 55, 14, 28, 65, 39, 81};
    int temp[10][10] = {0};
    int order[10] = {0};
    int i, j, k, n, lsd; 

    k = 0;
    n = 1; 

    printf("\n排序前: ");
    for(i = 0; i < 10; i++)
        printf("%d ", data[i]); 

    putchar('\n'); 

    while(n <= 10) {
        for(i = 0; i < 10; i++) {
            lsd = ((data[i] / n) % 10);
            temp[lsd][order[lsd]] = data[i];
            order[lsd]++;
        } 

        printf("\n重新排列: ");
        for(i = 0; i < 10; i++) {
            if(order[i] != 0)
                for(j = 0; j < order[i]; j++) {
                    data[k] = temp[i][j];
                    printf("%d ", data[k]);
                    k++;
                }
            order[i] = 0;
        } 

        n *= 10;
        k = 0;
    } 

    putchar('\n');
    printf("\n排序後: ");
    for(i = 0; i < 10; i++)
        printf("%d ", data[i]); 

    return 0;
}
  • Java
public class RadixSort {
    public static void sort(int[] number, int d) {
        int k = 0;
        int n = 1;

        int[][] temp = new int[number.length][number.length];
        int[] order = new int[number.length];

        while(n <= d) {
            for(int i = 0; i < number.length; i++) {
                int lsd = ((number[i] / n) % 10);
                temp[lsd][order[lsd]] = number[i];
                order[lsd]++;
            } 

            for(int i = 0; i < number.length; i++) {
                if(order[i] != 0)
                    for(int j = 0; j < order[i]; j++) {
                        number[k] = temp[i][j];
                        k++;
                    }
                order[i] = 0;
            } 

            n *= 10;
            k = 0;
        }
    }

    public static void main(String[] args) {
        int[] data =
           {73, 22, 93, 43, 55, 14, 28, 65, 39, 81, 33, 100}; 

        RadixSort.sort(data, 100);

        for(int i = 0; i < data.length; i++) {
            System.out.print(data[i] + " ");
        }
    }
}
Original URL: http://fukuball.twbbs.org/?p=137

詭異的山洞

台灣有一個很詭異的山洞!
這個山洞會殺人!

妳只要去問這個山洞
“武ㄍㄨㄧ\謀?” (有沒有鬼?)
如果山洞說有, 妳就會馬上死…

這個傳說被3個很愛冒險的人聽見了,
他們就想要去試試看!

3個人就來到這個山洞…
第一個人勇敢的前去問:

武ㄍㄨㄧ\謀?

山洞就回答了!

謀~ (沒)

第二個人看到第一個人沒事,
也勇敢的前去問:

武ㄍㄨㄧ\謀?

山洞也給了一個回答!

謀~

第三個人看到這兩個人都沒事,
所以開始覺得這個殺人山洞根本就是騙人的…
很悠閒的走到山洞
問了他這一生最後一句話……..

武ㄍㄨㄧ\謀?

山洞大叫!

屋~~~~~~~~~!!!!! (有)

然後瞬間的, 這個人就死無全屍…
這個山洞… 為何那麼可怕呢? 是在哪裡?

這是一個火車穿越的山洞 = =|||
火車來的時候 = 屋屋屋屋屋~~~~~
跟山洞講話會有回音 = 謀~

Original URL: http://fukuball.twbbs.org/?p=135

學問淵博的名字

不好意思,這是別人轉寄來的
沒有出處

如果有人知道,可以跟我說一下嗎
謝啦

乍聞朋友「佑道」的兄長名字
分別為「圖道」、「焉道」時,
心中暗自猜想命名者定是學識淵博,
且對於中國人所謂之「道」
有深厚的研究,更臆測其名
必定出自於古書的某一章節。

終於有天難掩好奇心,將滿腹疑問請教同事佑道,
佑道聽完我的問題之後哈哈大笑,然後娓娓道來其中之「道」。
原來佑道的兄弟名字都是父親所取的,
佑道的父親是位純樸莊稼人。

生大哥時,正是他家的花生田收成時節,為了慶祝花生豐收、
又生了兒子的雙喜臨門,他父親決定為兒子取名為「圖道」,
因為用台語發音,跟花生(土豆)同音,用字也不俗,
所以老大就叫「圖」。

後來生了二哥,覺得「道」字頗為文雅,
希望也將此字放到名字裡,
二哥生來白胖可愛,日後肯定是個大帥哥,
於是命名為「焉道」(音似台語的「英俊」)。

媽媽懷老三時,眾人都依照肚子的形狀猜測這一胎一定是女孩,
父親獨排眾議,堅信一定是男兒,後來不出所料,
果然生了一個胖小子,既然是猜對了,於是就有了「佑道」
(因同台語的「猜到」)的名字。

聽到這裡,我已經笑到不行了......

Original URL: http://fukuball.twbbs.org/?p=133