2018年12月4日 星期二

速可打 - 是您製作逐字稿及外掛字幕檔的最佳幫手


※網站上線快報※ 

速可打 - 製作逐字稿及外掛字幕檔的最佳幫手


歷經了數個月的奮鬥,平日總拖著白天工作的疲憊利用晚上剩餘時間一直做到深夜,假日也是捨棄休假與家人共處的時間。 憑著一股熱情與堅持,日以繼夜的埋首研究如何透過語音辨識技術製作出字幕檔的程式開發,只為了證明自己做得到, 也期許用以身作則的方式來做給我那兩個身處青春期的兒子看,不要為這次的失敗找理由,而是為下次的成功找方法。 一路的嘗試再嘗試、修正再修正,就為了讓效能儘量優化、操作儘量簡單,終於完成了這個網站,也希望能得到您的支持。
目前台灣雖然也有其他人開發類似的應用軟體,但我似乎沒看到有同性質的服務型網站,所以我想速可打應該是台灣第一個做出不用安裝只要上網即可自行操作快速產生字幕檔的網站!

繼 速可打謄稿機 及 單字輕鬆記 之後,時隔六年再度推出新的作品,eztype.cc透過線上語音轉文字的技術,是製作逐字稿及外掛字幕檔的最佳幫手,歡迎舊雨新知惠顧。

2016年10月27日 星期四

[轉貼] 在 Windows 批次刪除 N 天前的檔案

出處:http://blog.darkthread.net/post-2016-10-26-forfiles.aspx

工作上常遇到的需求:Log、暫存檔案多半有保留年限,如何用一個指令刪除某個期限前的舊檔?
今天才學到一個好用的 DOS 指令-forfiles,參數不多,簡單易用:
  • /p 路徑名稱 
    查詢對象,省略時為現在所處資料夾
  • /m 檔名限制 
    可配合萬用字元限定檔名或副檔名,例如:*.log、ex1610*.log
  • /s 
    指定搜尋範圍包含子目錄及其下層目錄
  • /c "對找到檔案執行的動作" 
    例如:"cmd /c del @path"為刪除檔案,省略參數時預設為"cmd /c echo @file",將顯示找到的檔案名稱
  • /d 數字或日期 
    限定檔案上次修改日期範圍,+代表大於等於,-代表小於等於,可以指定日期,例如:/d +2016/10/01(10/1當天及之後異動的檔案)、/d -2016/10/10(10/10當天與之前修改過的檔案);或指定數字今天起算幾天前的檔案,例如:/d -3(三天前)/d +0(今天)
撰寫 /c 參數時,有以下變數可用:
  • @file 檔名
  • @name 檔名去掉副檔名
  • @ext 副檔名
  • @path 完整路徑
  • @relpath 與 /p 為基準的相對路徑
  • @isdir 是否為資料夾
  • @fsize 檔案大小
  • @fdate 檔案上次修改日期
  • @ftime 檔案上次修改時間
所以刪除30天以前的Log檔可以寫成:
forfiles /p D:\Logs\IISLogs /s /m *.log /d –30 /c "cmd /c delete @path"
另外我也發現,forfiles 很適合解決之前提過將 DIR 結果轉為檔案清單的需求,還省去 Replace 計算相對路徑的功夫,是更好的選擇:
forfiles /p D:\Set9527 /s /c "cmd /c echo @relpath"
好物一枚,收入命令列工具箱。

2016年7月13日 星期三

[轉貼] 茅塞頓開的一晚-Func 委派+匿名方法+lambda

出處:https://dotblogs.com.tw/lastsecret/2010/06/26/16201

茅塞頓開的一晚-Func 委派+匿名方法+lambda
今天聽了同事講解Func,聽完覺得太酷了。
不過在紀錄之前,要先講一下 委派跟匿名方法。

委派在我自己的理解上,就是拜託他去幫你執行某個方法
當然拜託也要拜託對人,你所拜託的委派,要能做到你所要的方法(也就是傳回的型別,跟傳入的參數要一致)
這個想法還滿直觀的,例如現實中,你必須拜託某個朋友幫你挑女友的生日禮物
你一定挑個要嘛交過很多女朋友的人,不然就是挑個女生,比較懂該送甚麼
總不可能挑個阿宅,只想的到送遊戲點卡,還是漫畫之類的吧。當然修電腦找這種人不錯(我就是這個好人..)。
所以在建立委派時,這委派必須符合的你方法。
image

class Program
{
    static void Main(string[] args)
    {
        //讀進要做的動作" + , - , * , / "
        string s = Console.ReadLine();

        //建立一個委派
        MyDelegate d;

        //依照傳入的動作,選擇要傳入委派的方法
        switch (s)
        {
            case "+":
                d = new MyDelegate(加法);
                break;
            case "-":
                d = new MyDelegate(減法);
                break;
            case "*":
                d = new MyDelegate(乘法);
                break;
            case "/":
                d = new MyDelegate(除法);
                break;
            default:
                d = new MyDelegate(加法);
                break;
        }

        //使用該委派
        int Answer = d(5, 2);

        Console.WriteLine(Answer);
        Console.ReadKey();
    }

 //用static是因為我懶的new出物件,但要視情況用
    public static int 加法(int x, int y)
    {
        return (x + y);
    }

    public static int 減法(int x, int y)
    {
        return (x - y);
    }

    public static int 乘法(int x, int y)
    {
        return (x * y);
    }

    public static int 除法(int x, int y)
    {
        if (y != 0)
            return (x / y);
        return 0;
    }

    public delegate int MyDelegate(int x, int y);

}
上面的因為都是基本觀念,所以就咻咻咻的講完了。
接著講匿名方法,匿名方法就是不需要為了可能只用一次的方法
而建立類別實體和該方法,直接經由delegate關鍵字將方法傳入即可。
跟javascript的function有點類似,有時只用一次的function 就直接 xxx.click( function(){…})使用
因此改寫上面的Code 12~29行那段

switch (s)
{
    case "+":
        d = delegate(int x, int y)
        {
            return x + y;
        };
        break;
    case "-":
        d = (int x, int y) => { return x - y; };
        break;
    case "*":
        d = (int x,int y) => x * y;
        break;
    case "/":
        d = (x, y) => y != 0 ? x / y : 0;
        break;
    default:
        d = new MyDelegate(加法);
        break;
}
加法是用delegate關鍵字,然後傳入參數並在中括號中 return結果
減法省略delegate關鍵字,改用Lambda運算式的寫法
乘法連中括號和return都省了,直接寫要傳回的結果
除法連傳入的型別都可省略,因Lambda會自動推斷正確的型別
到這邊,就講完了委派、匿名方法,還提到一點Lambda了。
Lambda很好用,不過看起來太精簡所以有點難懂,基本格式是
(input parameters)  =>  { expression }
左邊想成傳入方法的參數,用  " => " 運算子連接,右邊是 方法的內容。

接著講 Func 這個東西
依照昨天為了打個球跟我在外面流浪一整晚的同事(他不想曝光)的說法,
Func是微軟定義好的delegate
因此他跟delegate一樣
可以替以他為型別的變數指派一個方法
可以替以他為型別的變數指派一個方法
可以替以他為型別的變數指派一個方法
可以替以他為型別的變數指派一個方法
來看一個例子

public static int MyFunc(Func<int, int, int> fun, int x, int y)
{
    return fun(x, y);
}
上面這個方法有三個參數,分別是 Func<int,int,int> fun, int x ,int y
第一個參數就是func,記得上面repeat好幾次的那句話嗎?Func可以替以他為型別的變數指派一個方法
所以就把 fun 當成一個可以 丟入方法的變數 來看,
而fun這個方法呢,要傳入兩個int型別的參數,並且回傳int型別的回傳值
image
接著看完整的範例

class Program
    {
        static void Main(string[] args)
        {
            string s = Console.ReadLine();

            Func<int, int, int> f;

            //   依照輸入的運算符號選擇要存的方法
            //   記得!!Func<>是可以存方法的變數,
            //   所以+我存了一個加法的方法
            //   -是用delegate存匿名方法
            //   *、/ 是用lambda存方法
            switch (s)
            {
                case "+":
                    f = 加法;
                    break;
                case "-":
                    f = delegate(int x, int y) { return x - y; };
                    break;
                case "*":
                    f = (int x, int y) => x * y;
                    break;
                case "/":
                    f = (x, y) => y != 0 ? x / y : 0;
                    break;
                default:
                    f = 加法;
                    break;
            }
            //使用MyFunc方法
            int answer = MyFunc(f, 5, 2);
            
            
            //也可以這樣寫喔,傳入匿名的Func
            //int answer = MyFunc((x, y) => x + y, 5, 5);
            
            
            Console.WriteLine(answer);
            Console.ReadKey();
        }

        public static int MyFunc(Func<int, int, int> fun, int x, int y)
        {
            return fun(x, y);
        }

        public static int 加法(int x, int y)
        {
            return (x + y);
        }
    }
呼,講完了。
整個過程不太好懂,因為等於是方法中又有方法。
但懂了之後,覺得有很趣。

雖然現在經驗不足,還不知道要用在哪裡比較適當,但學起來再說。

2015年3月5日 星期四

[轉貼] 自適應網頁設計(Responsive Web Design)

出處:http://www.ruanyifeng.com/blog/2012/05/responsive_web_design.html

隨著3G的普及,越來越多的人使用手機上網。
移動設備正超過桌面設備,成為訪問互聯網的最常見終端。於是,網頁設計師不得不面對一個難題:如何才能在不同大小的設備上呈現同樣的網頁?
手機的屏幕比較小,寬度通常在600像素以下;PC的屏幕寬度,一般都在1000像素以上(目前主流寬度是1366×768),有的還達到了2000像素。同樣的內容,要在大小迥異的屏幕上,都呈現出滿意的效果,並不是一件容易的事。
很多網站的解決方法,是為不同的設備提供不同的網頁,比如專門提供一個mobile版本,或者iPhone / iPad版本。這樣做固然保證了效果,但是比較麻煩,同時要維護好幾個版本,而且如果一個網站有多個portal(入口),會大大增加架構設計的復雜度。
於是,很早就有人設想,能不能"一次設計,普遍適用",讓同一張網頁自動適應不同大小的屏幕,根據屏幕寬度,自動調整布局(layout)?
一、"自適應網頁設計"的概念
2010年,Ethan Marcotte提出了"自適應網頁設計"(Responsive Web Design)這個名詞,指可以自動識別屏幕寬度、並做出相應調整的網頁設計。
他制作了一個范例,裡面是《福爾摩斯歷險記》六個主人公的頭像。如果屏幕寬度大於1300像素,則6張圖片並排在一行。
如果屏幕寬度在600像素到1300像素之間,則6張圖片分成兩行。
如果屏幕寬度在400像素到600像素之間,則導航欄移到網頁頭部。
如果屏幕寬度在400像素以下,則6張圖片分成三行。
mediaqueri.es上面有更多這樣的例子。
這裡還有一個測試小工具,可以在一張網頁上,同時顯示不同分辨率屏幕的測試效果,我推薦安裝。
二、允許網頁寬度自動調整
"自適應網頁設計"到底是怎麼做到的?其實並不難。
首先,在網頁代碼的頭部,加入一行viewport元標簽
  <meta name="viewport" content="width=device-width, initial-scale=1" />
viewport是網頁默認的寬度和高度,上面這行代碼的意思是,網頁寬度默認等於屏幕寬度(width=device-width),原始縮放比例(initial-scale=1)為1.0,即網頁初始大小佔屏幕面積的100%。
所有主流瀏覽器都支持這個設置,包括IE9。對於那些老式瀏覽器(主要是IE6、7、8),需要使用css3-mediaqueries.js
  <!--[if lt IE 9]>
    <script src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script>
  <![endif]-->
三、不使用絕對寬度
由於網頁會根據屏幕寬度調整布局,所以不能使用絕對寬度的布局,也不能使用具有絕對寬度的元素。這一條非常重要。
具體說,CSS代碼不能指定像素寬度:
  width:xxx px;
只能指定百分比寬度:
  width: xx%;
或者
  width:auto;
四、相對大小的字體
字體也不能使用絕對大小(px),而只能使用相對大小(em)。
  body {
    font: normal 100% Helvetica, Arial, sans-serif;
  }
上面的代碼指定,字體大小是頁面默認大小的100%,即16像素。
  h1 {
    font-size: 1.5em;
  }
然後,h1的大小是默認大小的1.5倍,即24像素(24/16=1.5)。
  small {
    font-size: 0.875em;
  }
small元素的大小是默認大小的0.875倍,即14像素(14/16=0.875)。
五、流動布局(fluid grid)
"流動布局"的含義是,各個區塊的位置都是浮動的,不是固定不變的。
  .main {
    float: right;
    width: 70%;
  }
  .leftBar {
    float: left;
    width: 25%;
  }
float的好處是,如果寬度太小,放不下兩個元素,後面的元素會自動滾動到前面元素的下方,不會在水平方向overflow(溢出),避免了水平滾動條的出現。
另外,絕對定位(position: absolute)的使用,也要非常小心。
六、選擇加載CSS
"自適應網頁設計"的核心,就是CSS3引入的Media Query模塊。
它的意思就是,自動探測屏幕寬度,然後加載相應的CSS文件。
  <link rel="stylesheet" type="text/css"
    media="screen and (max-device-width: 400px)"
    href="tinyScreen.css" />
上面的代碼意思是,如果屏幕寬度小於400像素(max-device-width: 400px),就加載tinyScreen.css文件。
  <link rel="stylesheet" type="text/css"
    media="screen and (min-width: 400px) and (max-device-width: 600px)"
    href="smallScreen.css" />
如果屏幕寬度在400像素到600像素之間,則加載smallScreen.css文件。
除了用html標簽加載CSS文件,還可以在現有CSS文件中加載。
  @import url("tinyScreen.css") screen and (max-device-width: 400px);
七、CSS的@media規則
同一個CSS文件中,也可以根據不同的屏幕分辨率,選擇應用不同的CSS規則。
  @media screen and (max-device-width: 400px) {
    .column {
      float: none;
      width:auto;
    }
    #sidebar {
      display:none;
    }
  }
上面的代碼意思是,如果屏幕寬度小於400像素,則column塊取消浮動(float:none)、寬度自動調節(width:auto),sidebar塊不顯示(display:none)。
八、圖片的自適應(fluid image)
除了布局和文本,"自適應網頁設計"還必須實現圖片的自動縮放
這只要一行CSS代碼:
  img { max-width: 100%;}
這行代碼對於大多數嵌入網頁的視頻也有效,所以可以寫成:
  img, object { max-width: 100%;}
老版本的IE不支持max-width,所以只好寫成:
  img { width: 100%; }
此外,windows平台縮放圖片時,可能出現圖像失真現象。這時,可以嘗試使用IE的專有命令
  img { -ms-interpolation-mode: bicubic; }
或者,Ethan Marcotte的imgSizer.js
  addLoadEvent(function() {
    var imgs = document.getElementById("content").getElementsByTagName("img");
    imgSizer.collate(imgs);
  });
不過,有條件的話,最好還是根據不同大小的屏幕,加載不同分辨率的圖片。有很多方法可以做到這一條,服務器端和客戶端都可以實現。

[轉貼] 用CSS3的Media Queries進行自適應網頁設計(Responsive Web Design)

出處:http://www.mrmu.com.tw/2011/04/06/css3-media-queries-liquid-layout/


from webdesignerwall.com
所謂的自適應網頁設計主要是透過CSS設定,讓網頁版面的寬度,依照設計者的設定,以百分比的形式來呈現,所以頁面寬度的顯示是根據使用者的瀏覽設備解析度作輸出,因此可避免瀏覽器的橫向捲軸出現。(又稱為Adaptive Design)
液態排版 vs 固定寬度排版
液態排版的對比設計方式就叫「固定寬度(fixed-width)排版」,傳統上來說,比起液態方式,固定方式通常較受平面及視覺設計師歡迎,因為他們較習慣先決定整體版面輸出的範圍,而液態方式則需要費多一點心力去考量很多不同解析度的情況,雖然比較費工,但卻是互動介面不可或缺的重要設計。
應用Media Queries技巧
本篇要介紹的技巧,算是利用CSS3來簡化及強化Liquid Layout的設計活動,因為是針對解析度進行的排版設計,國外也有稱之為dynamic resolution dependent layout,不過更多是乾脆以達成此效果的功能名稱–CSS3 media queries來介紹這種技巧。
可以先欣賞一下使用Media Queries製作responsive design的網站:
Hicks Design
Colly.com
A List Apart
追加! 這裡還有非常棒的Media Queries應用的Gallery!
註:開啟上述網站後,試著調整一下瀏覽器的寬度,然後注意觀察上面元素的變化。
CSS3 Media Queries語法介紹
Max Width
若瀏覽區域的寬度小於600像素,則下方的CSS描述就會立即被套用:
?
1
2
3
4
5
6
7
@media screen and (max-width: 600px)
{
  .class
  {
    background: #ccc;
  }
}
也可以把要套用的描述獨立成外部檔案:
?
1
<link rel="stylesheet" media="screen and (max-width: 600px)" href="small.css" />
Min Width
若瀏覽區域的寬度大於900像素,則下方的CSS描述就會立即被套用:
?
1
2
3
4
5
6
7
@media screen and (min-width: 900px)
{
  .class
  {
    background: #666;
  }
}
Device Width
若瀏覽設備的可視範圍最大為480px,則下方的CSS描述就會立即被套用:(註:智慧型手機目前常見最大寬度為 480px,如iPhone or Android Phone)
?
1
2
3
4
5
6
7
@media screen and (max-device-width: 480px)
{
  .class
  {
    background: #000;
  }
}
針對iPhone4提供專用的css設定檔:
?
1
<link rel="stylesheet" media="only screen and (-webkit-min-device-pixel-ratio: 2)" type="text/css" href="iphone4.css" />
針對iPad的Portrait Mode(直立)與Landscape Mode(橫躺)兩種瀏覽模式給予不同的css設定檔:
?
1
2
<link rel="stylesheet" media="all and (orientation:portrait)" href="portrait.css">
<link rel="stylesheet" media="all and (orientation:landscape)" href="landscape.css">
本站的DEMO
這個是本站做的小DEMO(HTML5&CSS3 based),供您參考,不過只有"先進一點"的瀏覽器可看 (可憐的IE8以下版本請看特別加料版XD)。
參考資料webdesignerwall.com