分類
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/

分類
Javascript

Masonry自動排版介面與InfiniteScroll無限捲動介面

Masonry 和 InfiniteScroll 都是 jQuery 上的 plugin!

Masonry 是利用 css 方式, 將介面重新排版, 使得畫面不會因為不規則區塊排起來而不好看, 可以看一下 Masonry 官網上的說一看就知道這樣的排版方式的感覺:

http://masonry.desandro.com/

而 InfiniteScroll 則是利用 jQuery 背後 ajax 方式, 將一頁一頁的網頁, 透過不換頁, 直接 append 到目前的頁面上, 達成向下捲動而看更多內容的功能. 像是 facebook 動態牆, 就是這樣的應用情境. 官方網站:

http://www.infinite-scroll.com/

這兩個功能結合就變成了這樣: http://sample.diary.tw/flickrsearch/?q=rainbow (利用了 flickr api 與 Masonry 和 InfiniteScroll 做出的效果. (記得要向下捲動, 才會出現看完了繼續產出內容的效果), 其中後面的 q 可以自行替代其他的英文單字, 因為對該文字沒有特別處理, 所以只能使用一個英文單字.

來看看怎麼做這個效果吧.

InfiniteScroll 是利用了 jQuery 在背景取出下一頁的內容, 並將指定的 selector 資料 append 到目前的網頁上, 所以最小的程式碼是這樣:

// infinitescroll() is called on the element that surrounds 
// the items you will be loading more of
  $('#content').infinitescroll({
 
    navSelector  : "div.navigation",            
                   // selector for the paged navigation (it will be hidden)
    nextSelector : "div.navigation a:first",    
                   // selector for the NEXT link (to page 2)
    itemSelector : "#content div.post"          
                   // selector for all items you'll retrieve
  });

就是將本頁的容器, 利用 infinitescroll 函式呼叫, 並傳入 3個重要參數, 分別為 navSelector, 這個是指當 page 瀏覽到這個 selector 指定物件時, 進行 load 下一頁內容, 而要 load 的內容, 就是 nextSelector 的物件中的 url, 至於第三個參數 itemSelector 則是 load 到網頁後, 要帶出來放到目前頁面上的內容項目.

以上面的例子來看, 網頁的介面會是如下:

//....
<div id='content'>
  <div class='post'>
//.... post content
  </div>
</div>
//... other footer
<div class='navigation'><a href='page-2.htm'></a></div>
//...

這樣一來, 當本頁被瀏覽最下面的 <div class=’navigation’> 時, 就會被觸發去 load page-2.htm 中的內容,並找出 <div class=’post’>…</div> 將內容放到 <div id=’content’>..</div> 中最後一個 post, 如此重覆下去, 就會有往下捲而一直往後看的內容, 記得每頁下面都要放對應的下一頁, 就會被 infinitescroll 偵測到, 並往下疊代下去.

再來看看 Masonry 的效果, 用法也很單純, 最小程式碼如下:

$('#container').masonry({
  itemSelector: '.box'
});

只需要指定要排版的容器 container, 呼叫 masonry 傳入 itemSelector 就是內容元素, 就可以自動排版, 多種效果可以參考官方網站的 demo.

比較特別的是兩者結合的這個 demo: http://masonry.desandro.com/demos/infinite-scroll.html , 參考這個 demo 可以做出又達成自動排版, 又達成無限捲動的功能, 效果就參考上面的 sample: http://sample.diary.tw/flickrsearch/?q=rainbow

幾個點要注意:
1. navSelector 一定是要找最下面的物件, 效果才會好, 記得.
2. 若是排版內容有圖, 可以參考 Masonry 的 sample: http://masonry.desandro.com/demos/images.html 將排版呼叫寫在 container 的 imagesLoaded 事件後, 如下:

var $container = $('#container');

$container.imagesLoaded( function(){
  $container.masonry({
    itemSelector : '.box'
  });
});

才不會有位置算不準的狀況.
3. 若要有動畫排版效果, 可以在 Masonry 參數中多加上 isAnimated: true;
4. 排版若要美觀, 要盡量統一內容物寬度, 就不會排得2266 (可以利用 css 自行安排)
5. InfiniteScroll 的 loading 的 css 是 #infscr-loading 這個, 可自行設計.

忘了說, 這次 sample 使用的 flickr api 是 photo search: http://www.flickr.com/services/api/flickr.photos.search.html

這種 layout 流行和 fb 及最近火紅的 pinterest 網站可能有很大的關係呢.