2018年1月1日 星期一

win7 右鍵選單,轉換影音檔成mp3

  時常會遇到有不錯的mv想轉成mp3上傳到手機來聽,但線上轉檔或相關軟體不是廣告多,就是有收取一些費用,很令人討厭,於是想製做個方便轉換工具!
  FFmpeg 是一個跨平台以命令行形式的影像聲音轉換程式,並且也非常容易使用。

例:  ffmpeg -i 來源.fav 目的.mp3

所以

第一步: 安裝 FFmpeg

下載位置:
 [32bit] http://ffmpeg.zeranoe.com/builds/win32/static
  [64bit] http://ffmpeg.zeranoe.com/builds/win64/static

下載後解壓縮到你想安裝的目錄底下

第二步:  寫一個batch檔

C:\ffmpeg\convert2mp3.bat

@echo off
setlocal ENABLEDELAYEDEXPANSION
set fName=%1
set ffmpeg="C:\ffmpeg\bin\ffmpeg.exe"

for /f "tokens=* delims= " %%F in ('echo %fName%') do (
%ffmpeg% -i "%%~fF" -ab 192k "%%~dpnF.mp3"
)

pause

注意ffmpeg路徑需修改為你電腦安裝路徑!

第三步:  加到右鍵選單

 鍵盤 視窗鍵(在ctrl跟alt中間那顆)+ R, 輸入regedit命令 

註冊檔路徑找到 HKEY_CLASSES_ROOT\*\shell 底下右鍵新增【機碼(K)】「Convert to mp3」, 接著又再已新增的「Convert to mp3」
底下右鍵新增【機碼(K)】「Command」,在Command底下預設值修改成 C:\ffmpeg\convert2mp3.bat "%1"

這樣就完成了,相當的簡單!

第四步: 測試轉換影音檔
 可以打開檔案總管找任意影音檔案,點選後按右鍵看是不是有Convert to mp3選項,點擊後,即可讓ffmpeg執行轉換動作。

Good Job!





2015年9月24日 星期四

Pascal's triangle、巴斯卡三角形、楊輝三角形 解法

參考來源: 楊輝三角形 wiki
楊輝三角形,又稱賈憲三角形、帕斯卡三角形、海亞姆三角形,是二項式係數在的一種寫法,形似三角形,在中國首現於南宋楊輝的《詳解九章算術》得名,書中楊輝說明是引自賈憲的《釋鎖算術》,故又名賈憲三角形。








2014年9月10日 星期三

河內塔(漢諾塔)算法解析 The tower of hanoi algorithm analysis

起源(Origin):
       最早發明這個問題的人是法國數學家愛德華·盧卡斯
傳說印度某間寺院有三根柱子,上串64個金盤。寺院裡的僧侶依照一個古老的預言,以上述規則移動這些盤子;預言說當這些盤子移動完畢,世界就會滅亡。這個傳說叫做梵天寺之塔問題(Tower of Brahma puzzle)。但不知道是盧卡斯自創的這個傳說,還是他受他人啟發。
若傳說屬實,僧侶們需要264 − 1步才能完成這個任務;若他們每秒可完成一個盤子的移動,就需要5849億年才能完成。整個宇宙現在也不過137億年。
這個傳說有若干變體:寺院換成修道院僧侶換成修士等等。寺院的地點眾說紛紜,其中一說是位於越南河內,所以被命名為「河內塔」。另外亦有「金盤是創世時所造」、「僧侶們每天移動一盤」之類的背景設定。
佛教中確實有「浮屠」()這種建築;有些浮屠亦遵守上述規則而建。「河內塔」一名可能是由中南半島在殖民時期傳入歐洲的。

來源網址: http://zh.wikipedia.org/wiki/%E6%B1%89%E8%AF%BA%E5%A1%94

這個遊戲有 三個柱子,暫以 A  B  C 代替

目的,要把 A柱上的多個盤子由A 移動到 C 柱
當一個盤子時, A -> C
當二個盤子時, A -> B, A -> C, B -> C

解法重點,只要超過二個盤子,都可以想像只有二個盤子
也就是 n 跟 n-1 個盤子(最低部的盤子跟除了 最底部以外的盤子)

最底部以外的盤子  n - 1 
最低部的盤子為      n

所以只有三個步驟不斷重複

A -> B
A -> C
B -> C

第一步 將 n-1個盤子 A移動到B
第二步 將 最底部盤子n  A移動到B
第三步 將 n-1個盤子 B移動到C

有圖說明觀念才會清楚些



2014年7月2日 星期三

go語言 教學2 條件式If else...switch

func main() {
 for i := 0; i < 20; i++ {
  if i%2 == 0 {
   fmt.Println("even:", i)
  } else {
   fmt.Println("odd:", i)
  }
 }
}
 
 if i%2 == 0
 
golang if 條件式省略了() 無需括號即可做條件判斷

多重條件式

func main() {
 scores := []int{30, 50, 60, 80, 70, 90}
 for i := 0; i < len(scores); i++ {
  s := scores[i]
  if s/20 == 5 {
   fmt.Printf("score: %d is S\n", s)
  } else if s/20 == 4 {
   fmt.Printf("score: %d is A\n", s)
  } else if s/20 == 3 {
   fmt.Printf("score: %d is B\n", s)
  } else if s/20 == 2 {
   fmt.Printf("score: %d is C\n", s)
  } else {
   fmt.Printf("score: %d is D\n", s)
  }
 }
}

go語言 教學1 基礎

go 語言被譽為這個世代的C語言,其精神也繼承了c語言的優點,少即多,沒有太多花俏的特性,所用到的關鍵字只有二十五個,跟c語言31個、c++89個比較,顯得相當精簡。並行機制也使得go語言,編寫多線程及網路編程都相當容易!
go語言主要為系統及網路編程而設計, 一些設計要求較為嚴格。導入的模組及聲明的變數,未使用無法通過編譯,go精簡的特性,也導致少了一些新穎好用的特性,如函數式語言的列表推導。
>>> [ x for x in range(20) if x % 2]
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
 基本語法

go保留了c語言風格,為讓早已熟悉c style的人,減少學習成本,因此語言跟c很相像

package main

import (
 "fmt"
)

func main() {
 fmt.Println("Hello World!")
}
 
函數聲明關鍵字func 跟c 一樣需有main()函數做為程式進入點。
 
main() 表示程式一被執行時,就會被執行的位置
採用了大括號{} 做為程式縮排判定
正確 
func main() {
 fmt.Println("Hello World!")
}
錯誤 
func main()
{ 
 fmt.Println("Hello World!")
} 
golang 編譯時會統一格式輸出
編輯器存檔時,也會調用golang的format,做語法編排修正
因此在golang上難以看到五花八門的寫法