2015年12月31日 星期四

FreeFileSync 免費資料夾(目錄)比對同步軟體


FreeFileSync 是套免費資料夾(目錄)比對同步軟體,方便使用者快速比對兩個資料夾裡面的檔案內容並且依照不同需要進行雙向同步或單向鏡像(mirror)或更新等同步方式。也提供了 for Windows, Linux 和 Mac OS X 等不同作業系統版本適用。

1. 先至官網 FreeFileSync (http://www.freefilesync.org/) 下載適合作業系統版本。

2. 下載完成後,開始執行安裝步驟:

接受軟體授權協議

選擇安裝目錄

如果不需要就取消安裝Wajam軟體

3. FreeFileSync 安裝完成後,啟動執行並先完成相關設定: 

如果不需要先取消每周自動更新檢查


設定切換語言 > 正體中文

4. 進入正題:設定要同步的兩個資料夾 (A 資料夾 -> B資料夾),這個步驟我們要決定下列一些相關設定工作:
  • 設定來源資料夾和目標資料夾
  • 兩個資料夾的同步模式 (例:雙向同步、單向鏡像、單向更新...)
  • 資料夾內檔案的同步比對方式 (例:檔案大小和日期、檔案內容)
B備份(目標)資料夾目前尚未有任何檔案

在FreeFileSync上設定好來源和目標資料夾


比對方式可用檔案大小和日期、檔案內容比對

5. 正式執行同步 (這裡我們以雙向同步模式為例)

按下F9 同步按鈕

執行同步過程 > 已完成

目標資料夾 B 已經有同步後的檔案囉~

6. 將同步動作儲存至設定檔案方便下次執行使用:
  • 選擇另存為批次處理作業設定檔
  • 設定相關錯誤處理、同步完成後動作
  • 儲存設定檔 (範例:儲存為my_file_sync_setting.ffs_batch)

選擇另存為批次處理作業


這裡我們選擇忽略錯誤處理、同步完成後關閉進度對話盒

到此其實已經完成!

7. 如果您想要每次電腦開機後,會自動執行剛才完成的同步動作設定,那就必須在Windows的「啟動」資料夾中設定前面設定檔案的執行捷徑:
  • 開啟Windows的「啟動」資料夾
    %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
  • 在資料夾內新增剛才儲存的 my_file_sync_setting.ffs_batch 檔案的捷徑


Windows 按鈕 > 執行(R)

開啟(O) : %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
新增設定檔的捷徑

完成後,下次開機就能自動執行前面設定的同步工作囉~

#




2015年12月29日 星期二

Python 基本爬蟲程式 + jieba 中文分詞 範例 - 以 Google 新聞為例


目標:
前篇(Python 基本爬蟲程式 (crawler) 範例 - 以 Google 新聞為例)我們先利用簡單爬蟲程式來擷取Google 新聞-焦點新聞的標題和新聞連結。現在我們就接著利用 jieba 這套中文分詞程式嘗試將截取回來的標題文字進行中文分詞。



工具:
也可以 pip 方式進行安裝:
export http_proxy=http://proxy.hinet.net:80
export https_proxy=http://proxy.hinet.net:80

pip install jieba



程式:
# coding=utf-8
# encoding=utf-8

import requests
from bs4 import BeautifulSoup
import jieba

res = requests.get("https://news.google.com")
soup = BeautifulSoup(res.text)

count = 1

for item in soup.select(".esc-body"):
    print '======[',count,']========='
    news_title = item.select(".esc-lead-article-title")[0].text
    news_url = item.select(".esc-lead-article-title")[0].find('a')['href']
    print("News Title: "+news_title)
    print("News Url: "+news_url)

    # 載入使用者自建詞庫   
    jieba.load_userdict("userdict.txt")
    # 對 news_title 進行中文分詞
    print ''
    print '  -------進行中文分詞-------'
    words = jieba.cut(news_title, cut_all=True)
    print("  Full Mode: " + "/ ".join(words))
    words = jieba.cut(news_title, cut_all=False)
    print("  Default Mode: " + "/ ".join(words))
    words = jieba.cut_for_search(news_title)
    print("  Search Engine Mode: " + ", ".join(words))
    print ''
    
    count += 1



執行結果:
======[ 41 ]=========

...

News Title: 包塑膠袋泡冰水男順利接回斷指
News Url: http://udn.com/news/story/7266/1406918-%E5%8C%85%E5%A1%91%E8%86%A0%E8%A2%8B%E6%B3%A1%E5%86%B0%E6%B0%B4-%E7%94%B7%E9%A0%86%E5%88%A9%E6%8E%A5%E5%9B%9E%E6%96%B7%E6%8C%87

  -------進行中文分詞-------
  Full Mode: 包/ 塑/ 膠/ 袋/ 泡/ 冰水/ 男/ 順/ 利/ 接回/ 斷/ 指
  Default Mode: 包塑/ 膠袋/ 泡/ 冰水/ 男順利接/ 回斷/ 指
  Search Engine Mode: 包塑, 膠袋, 泡, 冰水, 男順利接, 回斷, 指

======[ 42 ]=========
News Title: 與林口長庚同等級土城醫院開工
News Url: http://www.chinatimes.com/newspapers/20151229000446-260106

  -------進行中文分詞-------
  Full Mode: 與/ 林口/ 長/ 庚/ 同等/ 級/ 土城/ 醫/ 院/ 開/ 工
  Default Mode: 與/ 林口/ 長/ 庚/ 同等/ 級/ 土城/ 醫院/ 開工
  Search Engine Mode: 與, 林口, 長, 庚, 同等, 級, 土城, 醫院, 開工




參考資料:
#

2015年12月28日 星期一

Python 基本爬蟲程式 (crawler) 範例 - 以 Google 新聞為例

目標:以 Google 新聞網頁為例,擷取焦點新聞各主題新聞標題與連結網址。

Google 新聞-焦點新聞 範例
以 InfoLite (Chrome擴充工具) 可以發現我們要擷取的資料在網頁原始碼中的 .esc-body 和 .esc-lead-article-title 兩個 class  中可以找到。



工具:
Python Packages 也可以 pip 方式進行安裝:
export http_proxy=http://proxy.hinet.net:80
export https_proxy=http://proxy.hinet.net:80

pip install requests
pip install BeautifulSoup4



程式:
# coding=utf-8

import requests
from bs4 import BeautifulSoup

res = requests.get("https://news.google.com")
soup = BeautifulSoup(res.text)
print soup.select(".esc-body")

count = 1

for item in soup.select(".esc-body"):
    print '======[',count,']========='
    news_title = item.select(".esc-lead-article-title")[0].text
    news_url = item.select(".esc-lead-article-title")[0].find('a')['href']
    print news_title
    print news_url
    count += 1


Python3 版本 (2017/04/02新增)
#!/usr/bin/env python3

# coding=utf-8
# -*- coding: utf8 -*-

from urllib.request import urlopen
from bs4 import BeautifulSoup

res = urlopen("https://news.google.com")
soup = BeautifulSoup(res, "html.parser")
#print soup.select(".esc-body")

count = 1

for item in soup.select(".esc-body"):
    print('======[',count,']=========')
    news_title = item.select(".esc-lead-article-title")[0].text
    news_url = item.select(".esc-lead-article-title")[0].find('a')['href']
    print(news_title)
    print(news_url)
    count += 1

執行結果:
======[ 1 ]=========
美河市案宣判柯P解讀:2個小官非常賤
http://www.chinatimes.com/realtimenews/20151228002594-260401
======[ 2 ]=========
北海道巴士對撞11台灣客受傷【更新】
http://www.cna.com.tw/news/firstnews/201512285015-1.aspx
======[ 3 ]=========
邱毅再爆816專案小英研究兩國論索262萬
http://www.chinatimes.com/realtimenews/20151228002822-260401
======[ 4 ]=========
芝加哥警射殺2非裔家屬淚訴停止暴力
http://www.cna.com.tw/news/firstnews/201512285013-1.aspx

...

======[ 40 ]=========
食安再爆!素食也不安全蒟蒻竟摻工業用碱粉
http://www.uho.com.tw/hotnews.asp?aid=39330
======[ 41 ]=========
(用錯染髮劑增膀胱癌風險,3大守則安心變色/圖片取自優活健康網)
http://www.uho.com.tw/hotnews.asp?aid=39317
======[ 42 ]=========
當市長完成創傷急救體系柯P感概想到朱立倫
http://news.ltn.com.tw/news/politics/breakingnews/1553878



延伸閱讀:




參考資料:



#

2015年12月17日 星期四

R - 簡單洗牌函數

> # 洗牌 to shuffle cards
> to_shuffle_cards <- function() {
+ rep_times = 1
+ cards <- matrix(nrow=4, sample(rep(1:52,times=rep_times), 52, replace=FALSE))
+ rownames(cards) <- c("player1","player2","player3","player4")
+ cards <- as.table(cards)
+ return(cards)
+ }

> x <- to_shuffle_cards()
> y <- to_shuffle_cards()
> x
         A  B  C  D  E  F  G  H  I  J  K  L  M
player1  4 34 19 45  3 42 27 24 37 40 51 22  5
player2 35 16 17 38  1 30 13 47 33 26 15 44 52
player3  7 39 41 10 36 23 48 14 20 31 25  6 46
player4 12 49  8 21 18 43  2 50 28  9 32 29 11

> y
         A  B  C  D  E  F  G  H  I  J  K  L  M
player1 31 17 15 37  5 18 43  3 51 13  9 38 19
player2 20 27 10 45 30 32  7 48 47 11  2 25 42
player3 41 34 29 50  8  4 28 35 23 44  1 12 52
player4  6 49 16 24 40 14 36 21 26 33 46 22 39

#