分類
Javascript

半浮動DIV區域 part2

才寫了”半浮動DIV區域”這個文章 (link), 又發現還有另一種應用情境, 就是捲到下面, 若半浮動區域的底部觸到了 footer , 則要順勢往上, 不再固定.

參考應用如: http://www.yinshiweb.com/ 右側的側欄.

先來看看原始的長相, 一樣是上面 top, 中間 main, 並含有 content 及 flow_div 兩個區域, 還有最下方的 footer. 不含捲動的狀況如: http://sample.diary.tw/29/o.htm

接下來要加上程式碼, 原來的半浮動DIV區域, 只需要用 CSS 配合捲動 event 就可以達成, 但若在浮動區域觸底時, 要跟著捲動上去, 就必須將該 absolute css 的 top 位置用 footer 的 top 減去 flow_div 的高度才行, 不過這個值是動態的, 所以就只能在 runtime 時, 用 jQuery 的 css 屬性來給定, 先看浮動及跟著捲的兩個狀態配合的 css:

.fixed{
    position:fixed;
    top:0px;
}
.absolute{
    position: absolute;
    /*top: should be top2 value, modified by jQuery*/
}

其中的 absolute 的 top 得由後面的程式來給定及移除, javascript 如下:

$(document).ready(function(){
    // calculate the original top
    var top = $('#flow_div').offset().top - parseFloat($('#flow_div').css('marginTop').replace(/auto/, 0));
    var top2 = $('#footer').offset().top - $('#flow_div').height();     
    
    $(window).scroll(function (event){
        var y = $(this).scrollTop();
        if(y>=top){
            if(y<top2){
                // state 3.
                $('#flow_div').addClass('fixed');
                $('#flow_div').removeClass('absolute');
                $('#flow_div').css('top', '0px');
            }else{
                // state 2.
                $('#flow_div').removeClass('fixed');
                $('#flow_div').addClass('absolute');
                $('#flow_div').css('top', top2 + 'px');
            }
        }else{
            // state 1.
            $('#flow_div').removeClass('fixed');
            $('#flow_div').removeClass('absolute');
            $('#flow_div').css('top', '0px');
        }
    });    
});

一樣要先算出 top 及 top2 兩個值, 然後在 scroll event 中判斷三種狀況,
state 1. 原始狀態, 還沒捲到 flow_div
state 2. 捲到 flow_div 了, 但底部還未頂到 footer
state 3. 捲到 flow_div 底部頂到 footer 了

完成的結果請參考: http://sample.diary.tw/29/2.htm

分類
Javascript

半浮動DIV區域

一般網頁利用CSS排版, 通常分為上中下三段, 分別為 top, main, footer.

其中在 main 做一些特效, 讓一個區域能在捲動時, 會固定在畫面上. 這樣的特效, 需要配合 javascript (或 jQuery ) 來進行才能達成, 先來看一下效果: link.

除了上(top), 中(main), 下(footer)外, 另外在 main 中還有一個 content 及 flow_div 兩個區域. 在向下捲動時, 若 flow_div 捲動超過畫面上方時, 則會變成固定在畫面上.

程式的實作方式利用 jQuery 來進行, 先看程式碼:

$(document).ready(function(){
    // calculate the original top
    var top = $('#flow_div').offset().top - parseFloat($('#flow_div').css('marginTop').replace(/auto/, 0));    
    $(window).scroll(function (event){
        var y = $(this).scrollTop();
        if(y>=top){
            $('#flow_div').addClass('fixed');
        }else{
            $('#flow_div').removeClass('fixed');
        }
    });
});

在 document ready 時, 先把 #flow_div 的 top 距離算出來, 接下來在 window 的 scroll event 裡, 把 window 的捲動距離算出來後, 和上述的 top 變數比較, 若是超過了, 就把 #flow_div 多加上一個 class 名為 fixed, 讓它固定, 反之則將 fixed class 移除, 也就是跟著畫面捲動.

其中 fixed class 內容重點在於: position: fixed; top: 0px; , 也就是固定在距離畫面上方為 0, 看起來就是浮在原來的內容之上, 若還沒有捲動, 就移除這個 class, 會跟著捲動.

很有意思的一個排版特效.

範例頁: http://sample.diary.tw/29/1.htm

分類
懶得分類

Google天氣API失效?!

之前一直用的好好的 Google 天氣 API, 今天同事回報異常, 經檢查後, 發現看起來是 Google 的問題, 不過回覆的訊息讓人摸不著頭緒, 如下:

(訪問 http://www.google.com/ig/api?hl=zh-tw&weather=taipei 的結果)

起先以為是用量過多爆了, 不過查了一下, 發現應該不是, 而且也找到相關的新聞訊息: http://thenextweb.com/google/2012/08/28/did-google-just-quietly-kill-private-weather-api/ 看起來應該是 Google 打算關掉的服務引起的, 而且上面的 copyright 還是 2009, 真是怪怪的.

接下來只好轉換用其他家的 weather api, 原本要用 http://www.wunderground.com/ 這家的, 但是是要收費的, 只好再找, 改用 yahoo 的, 參考 API 介紹: http://developer.yahoo.com/weather/ , 應用起來, 原本 Google Weather API 有的資訊他也都有, 只是都是英文的, 不過倒也不影響使用.

不過若是不知道地點的 w 代碼(WOEID), 可以先到 yahoo weather 上查: http://weather.yahoo.com/ 輸入 taipei, 將會重導到網址: http://weather.yahoo.com/taiwan/null/taipei-2306179/ 就知道 w 代碼是 2306179, 而 API URL 就會是: http://weather.yahooapis.com/forecastrss?w=2306179 預設氣溫單位是華氏, 若是要氣溫單位, 再多加參數 u=c 如: http://weather.yahooapis.com/forecastrss?w=2306179&u=c

回應的內容也都是 xml 格式, 可以容易利用程式實作取出, 花了幾十分鐘的時間, 把原來的 api 由 Google 改到 Yahoo 完成.

附上部分台灣的 WOEID:

2306155 Yungkang City, TW (永康市)
2306179 Taipei City, TW (台北市)
2306180 Kaohsiung City, TW (高雄市)
2306181 Taichung City, TW (台中市)

分類
Javascript

多個檔案上傳-multiple upload with HTML5

在以往 form 中使用上傳元件, 只能做單檔上傳, 一個 input type=file 只能做一個檔案, 若是需要做多個檔案同時上傳, 得需要使用多組 input type=file 或是利用 flash 來達成.

不過在 HTML5 中, 定義了 multiple 屬性, 讓 input type=file 可以同時傳上來多個檔案. 來看看用法吧.

<form method=post enctype='multipart/form-data'>
file(s):<input type="file" name=ufile id=ufile multiple />
<input type="submit" value="upload" / >
</form>

就這麼簡單, 在原來的 input type=file 多加個 multiple 即可, 這樣功能就可以達成多個檔案上傳了, 不過若是要限制檔案數, 就得要用 client javascript 來進行檢查, 在 onsubmit 時, 做個數檢查即可.

接下來就看範例囉, 放在這裡: http://sample.diary.tw/28/lm.php

這個範例利用了 file 及 size 屬性將上傳檔案的檔名及大小列出來, 不過不會上傳, 不用擔心, 純在客戶端執行的!

Facebook在Alexa上超越Google

最近的 Alexa 流量有排行變動了, 久居第一的 Google 於 8/2, 8/3間的到訪量被 Facebook 超越了, 真的有意思呢, 來看看圖表:

(圖表資料引用自 http://www.alexa.com/)

其他的前幾名不動, 不過拉開時間看一下,

(圖表資料引用自 http://www.alexa.com/)

似乎前面的到訪規則有些調整, 無論如何, 這個網路排行榜, 對應的網路世界競爭, 真的很激烈呢!

Google Fiber-光纖上網及Google TV服務

是的, 這個光纖上網是 Google Fiber 提供的, 目前在 Kansas City 開始實驗了.

http://fiber.google.com/about/

價格還真是便宜啊, 神奇的便宜:

1. Gigabit + TV: US $120/月 (2年約, 免US$300設定費), 有電視, 有寬頻上網
2. Gigabit Internet: US $70/月 (1年約, 免US$300設定費), 寬頻上網
3. Free Internet: US $300設定費(可分12個月 US$25), 上行1Mbps, 下行 5Mbps, 保證7年可用

這樣看起來, 只要 1Gbps 寬頻上網的話, 每個月只要 2100台幣, 真的很便宜. 不過目前是試辦階段, 未來不知狀況是如何, 但挺令人期待的.

看看影片介紹吧: 引用自: http://www.youtube.com/watch?v=A9v11qJTG8o

相關新聞資料:
http://www.bnext.com.tw/focus/view/cid/103/id/24055
http://www.ithome.com.tw/itadm/article.php?c=75215
http://www.techbang.com/posts/10244-google-launches-google-fiber-fibre-network-services-up-down-has-1000m

分類
懶得分類

iTunes台灣版本音樂可以買了

iTunes台灣版本音樂可以買了呢. 快來找找看有沒有你喜歡的歌呢?

可以線上先看看有沒有喜歡的歌手: http://itunes.apple.com/tw/genre/yin-le-liu-xing-le/id14?l=zh

重灌狂人這裡整理了低價促銷的一些專輯, 也還蠻值得參考的: http://briian.com/?p=8429

有 iDevice 的朋友們可以參考看看!

分類
Windows

單一目錄內大量檔案排序

這個是一個很麻煩的狀況, 在 windows 下, 使用 NTFS 的 Filesystem, 單一目錄可以承載的檔案量其實很大(是 2^32 -1 也就是 4294967295, 其實是整個 volume 不是單一目錄, 但這個上限應該在檔案存滿前是不太會到達的), 但是若是要排序檔案大小, 雖然說可以使用 dir /os 的方式來進行, 不過因為數量過大, 所以往往會很久很久, 而且會鎖住 filesystem.

接下來是實務上要將單一目錄下數量很多的檔案進行依大小排序時的作法.

1. 先將檔案列出來, 但不用排序: dir > dir.txt

2. 利用 sort 指令來進行排序: sort dir.txt /+25 > dirsorted.txt

這個 /+25 可以利用 sort /? 來看參數的用法, 其實是 dir 出來的內容, 列舉如下:

其中的第 25欄起是檔案的大小, 依此來排序的指定方式. 而後面的輸出轉向 > 就是用來將排序好的內容再轉存到另外一個檔去.

利用這樣的方式, 可以避免 dir /os 的時間過久, 直接 dir 輸出結果, 再利用 sort 指令來進行排序, 除了可以分開作業外, 還能大幅提高排序的時間, 是比較理想的方式.

當然, 若是檔案數量不多的時候, 是沒什麼差異的, 當檔案數量多的時候, 可是很有用的!

PS: NTFS 單一 volume 下的檔案數量上限:
http://technet.microsoft.com/en-us/library/cc938432.aspx
http://kewang.pixnet.net/blog/post/24972241

分類
手機大未來

Android手機推薦安裝軟體

朋友最近買了華碩變形平板, 請我推薦一些 Android 程式, 這裡是 Android 的軟硬體介紹的網站, 可以自行查找看一些新的資訊及軟體:

1. iapp 的 Android 評測: http://iapp.com.tw/cat/android-review/

2. 香港的 Android-APK: http://www.android-apk.com/

軟體 APP 的部分如下:

1. AirDroid: 可以透過 desktop pc 來直接管理手機內的通訊錄, 簡訊, 檔案(上下傳), 而且只需要透過 wifi, 不需要透過 usb 連接線, 十分方便好用: http://iapp.com.tw/2012/05/airdroid-app-review-for-android/

2. Astro File Manager: 就是手機內的檔案總管, 可以直接管理手機內的檔案: http://iapp.com.tw/2012/05/airdroid-app-review-for-android/

3. QR-Code 工具, QuickMark: 是在 iphone 上要錢, 在 Android 免費的好用 QR-Code 工具: https://play.google.com/store/apps/details?id=tw.com.quickmark

4. MoboPlayer: 各式影音檔都可以播放的播放器, 也支援字幕等功能: https://play.google.com/store/apps/details?id=com.clov4r.android.nil

其他軟體就依個人喜好來安裝囉, 像是個人比較喜歡的:

可離線地圖, WorldExplorer: https://play.google.com/store/apps/details?id=com.iwexplorer.android

有在開車, 管理加油的工具: https://play.google.com/store/apps/details?id=com.aguirre.android.mycar.activity

學習英文, 英文單字王: https://play.google.com/store/apps/details?id=com.kut.engking

遊戲的話, 就不多做介紹了, 像 Angry Birds, Skater Boy, Fruit Slice, Doodle Jump 都不錯呢!

神奇的線上數學解題II-WolframAlpha

之前介紹過一款: https://diary.tw/archives/720

這次這個 wolframalpha 更好用, 更有趣, 網址如下:

http://www.wolframalpha.com/

基本上, 輸入後, 會有美美的求解結果, 很有意思, 而且很實用, 例如以下方程式:

3x+y=4
4x-y=3

輸入 wolframalpha 後得:

http://www.wolframalpha.com/input/?i=3x%2By%3D4%2C+4x-y%3D3

畫面如下:

不僅僅是把解求出來, 還有一步一步的算式, 以及對應的方程式圖, 再來試看看其他的:

3x^3+2x^2-7x+2=0

解答如下: http://www.wolframalpha.com/input/?i=3x^3%2B2x^2-7x%2B2%3D0

真的是太好用了呢!

另外像是語意分析的查詢也很有用:

3 months ago:

http://www.wolframalpha.com/input/?i=3+months+ago

真是一堆應用啊, 其實這就是大名鼎鼎的 siri 後面用的查詢引擎呢, 很強大!

突然想到, 在唸書時有用到一套軟體叫 Mathematica, 就是這家公司 Wolfram 出品的呢: http://www.wolfram.com/mathematica/