2018年3月10日 星期六

台羅音輸入法--一逝編輯器

推捒台語一向是台語陣營的目標,台羅音音調輸入目前有一寡困難。網路目前嘛可能無會當輸入2,3,5,7,8音調的羅馬符號的方法。下跤的javascript是一个小小的試驗,有需要的人會當掠轉去家己電腦內面試用。連去試用
用法:拍著2,3,5,7,8的時,會將進前5字以內的字母判斷自動轉做台語羅馬音符號。進前若無字好轉,遮仔袂刣掉。


<!doctype html>
<head>
<meta charset="utf-8">
<title>一逝編輯器</title>
<script>
  var cArr = new Array(); var cur = 0, front = 0;
  var tones = [2, 3, 5, 7, 8]; var mothers = ['a', 'e', 'o', 'i', 'u'];
  var a = ["á", "à", "â", "ā", "a̍"],
      e = [" é", "è", "ê", "ē", "e̍"],
      o = ["ó", "ò", "ô", "ō", "o̍"],
      i = ["í", "ì", "î", "ī", "i̍"],
      u = ["ú", "ù", "û", "ū", "u̍"],
      n = ["ń", "ǹ", "n̂", "n̄", "n"],
      m = ["ḿ", "m", "m", "m̄", "m"];
  var rel = {'2': 0, '3': 1, '5': 2, '7': 3, '8': 4};  //調號關連到array
  var strtofunc = {'a': a, 'e': e, 'o': o, 'i': i, 'u': u };
  var ntofunc   = {'n': n}; var mtofunc = {'m': m};
  var token_len = 5;
  var key;

  function getString(start, end) {
    var str = '';
    for (var j = start; j < end; j++) {
      str = str.concat(cArr[j]);
    }
    return str;
  }

  function subStr(curr) {
    substr = '';
    if ( (curr - token_len) < 0) substr = cArr.slice(0, curr);
    else substr = cArr.slice(curr - token_len, curr);  // at most 5
    return substr.join('');  //join 用''連接每一个元素
  }

  function getMoIndex(arr) {  //if no mother letter , return length of arr
    var count = 0;
    for (var j = 0; j < arr.length; j++) {
      if (isMother(arr[j])) {
        if ( arr[j] == 'a' || arr[j] == 'e' || arr[j] == 'o') {
          return count;
        }
        else {  //i, u
          if (isMother(arr[j+1])) return count+1;
          else return count;
        }
      }
      else count++;
    }
    return count;
  }
  /*
  function getTokenMoIndex(curr) {
    var index = subStr(curr).indexOf(' ');
    substr = substr.slice(index+1);
    var len = substr.length;
    return curr - len + getMoIndex(substr);
  }
*/
  function getTokenMoIndex(curr) {
    var substr = subStr(curr);
    var len = substr.length;
    var index = substr.indexOf(' ');
    substr = substr.slice(index+1);
    return curr - len + index + 1 + getMoIndex(substr);
  }

  function isTone(key) {
    for (var j = 0; j < tones.length; j++) {
      if (key == tones[j]) {
        return true;
      }
    }
    return false;
  }

  function isMother(key) {
    for (var j = 0; j < mothers.length; j++) {
      if (key == mothers[j]) {
        return true;
      }
    }
    return false;
  }

  document.onkeypress = function(event) {
    if (event.keyCode >= 32 && event.keyCode <= 127) {
      key = String.fromCharCode(event.keyCode);

      var num = getTokenMoIndex(cur);

      if ( isTone(key) && num < cur) {  //本字母有tone數字
        cArr[num] = strtofunc[cArr[num]][rel[key]];
      }
      else {
        if (isTone(key) && subStr(cur).indexOf('ng') >= 0) {
          var len = subStr(cur).length;
          var loc = cur - (len - subStr(cur).indexOf('ng'));
          cArr[loc] = ntofunc[cArr[loc]][rel[key]];
        }
        else if (isTone(key) && (subStr(cur) == 'm' || subStr(cur).indexOf(' m') >=0)) {
          var len = subStr(cur).length;
          var loc = cur - (len - subStr(cur).indexOf(' m'));
          cArr[loc+1] = mtofunc[cArr[loc+1]][rel[key]];
        }
        else {
          cArr.splice(cur, 0, key);
          front++; cur++;
        }
      }
    }
    else return;
    str.value = getString(0, cur) + '|' + getString(cur, front);
  }

  document.onkeydown = function(event) {
    if (event.keyCode == 8) {
      if (cur >= 1) {
        cArr.splice(cur-1, 1);
        cur--; front--;
      }
    }
    else if (event.keyCode == 37) { // left arrow
        if (cur >= 1) cur--;
    }
    else if (event.keyCode == 39) { //right arrow
      if (cur < front) cur++;
    }
    else if (event.keyCode == 13) {
      cur = front;
      //str.value = getString(0, front) + '|';
    }
    str.value = getString(0, cur) + '|' + getString(cur, front);
  }
</script>
</head>

<body>
  <span style="color: orange">瀏覽器執行台羅音一逝編輯器</span><br>
  <textarea id="str" style="font-size: 24px; border: 2px solid #336600;color:#800000;"
  disabled rows="1" cols="50">sin dâi lô tsi̍ tsuā bpian tsi̍p kgì|</textarea><br>
  <span style="color: blue">說明:音調數字拍出了後揣前5字的token共台羅韻母注音。</span>
  <script>
    var str = document.getElementById("str");
  </script>
</body>
</html>

2018年1月7日 星期日

ubuntu 17.10 作伺服器用

linux變化真緊,canonical放棄家己的display server綴wayland行嘍。桌面版是第一个採用wayland的版本,雖然離實用階段猶有一寡時間,但是試用開發無問題了。17.10網路設定嘛改用systemd-networkd嘍。以早設定/etc/default/interface的方式無效了。下跤是本校的設定值。 /etc/systemd/network/10=static-enp1s0.network
[Match]
Name=enp1s0

[Network]
Address=163.27.115.22/26
Gateway=163.27.115.62
DNS=8.8.8.8

實測是愛重開機才有效喔!

2017年11月26日 星期日

讀台羅--台語學習的第一步

新台羅台語拼音是台語學習上好的入門教材,有程式好練習。因為佮英語發音相仝,學起來無困難。練習網路地址佇遮

2017年11月4日 星期六

google 指令碼編輯器無法度處理unicode第2字面的字

𨑨迌人這3字早就有法度佇各軟體處理了,包括gmail攏無問題。為著欲用程式發批,入去指令碼編輯器,𨑨迌人3字拍會出來,但是徒振動的時,"𨑨"煞加一个才會到"迌"。批發出去的時發批人𨑨迌人只有"𨑨"是亂碼,"迌人"是正常的。進一步查看unicode發現"迌"是佇第0字面,但是"𨑨"是第2字面的字,是毋是google猶無注意著較少用的漢字的問題?

2017年10月27日 星期五

司馬庫斯遊記

司馬庫斯是泰雅族原民部落,1979年才有電火,是上帝號名的部落。巨木林群離社區五里路遠,泰岡溪對面是新光部落。開車對內灣開始足足愛2點半鐘,in是實行共產生活的社區。嘛出名到外國去。

2017年10月8日 星期日

新台羅拼音符號-真正適合咱台灣學生使用的拼音方案

教育部幾冬前整合各種拼音方案做成台羅拼音,做為認證的唯一標準。台語網站嘛用台羅拼音標注。這是妥協之下的結果,毋過煞造成第一線教師教學和學生學習的困難。按怎講?因為咱學生攏有學英語,台羅拼音有差不多有7个是佮英語音標無仝的,學生欲學這種拼音定定拂毋著去,連老師三不五時嘛會出差錯。所以應該將遮仔會出差錯的符號改回佮英語仝款。若按呢學生根本無啥需要另外記無仝的符號,嘛袂定定拂毋著去。經過按呢的修改,大概愛另外學的符號只有3个爾爾。