2017年12月5日 星期二
2017年11月26日 星期日
2017年11月4日 星期六
google 指令碼編輯器無法度處理unicode第2字面的字
𨑨迌人這3字早就有法度佇各軟體處理了,包括gmail攏無問題。為著欲用程式發批,入去指令碼編輯器,𨑨迌人3字拍會出來,但是徒振動的時,"𨑨"煞加一个才會到"迌"。批發出去的時發批人𨑨迌人只有"𨑨"是亂碼,"迌人"是正常的。進一步查看unicode發現"迌"是佇第0字面,但是"𨑨"是第2字面的字,是毋是google猶無注意著較少用的漢字的問題?
2017年10月27日 星期五
2017年10月8日 星期日
新台羅拼音符號-真正適合咱台灣學生使用的拼音方案
教育部幾冬前整合各種拼音方案做成台羅拼音,做為認證的唯一標準。台語網站嘛用台羅拼音標注。這是妥協之下的結果,毋過煞造成第一線教師教學和學生學習的困難。按怎講?因為咱學生攏有學英語,台羅拼音有差不多有7个是佮英語音標無仝的,學生欲學這種拼音定定拂毋著去,連老師三不五時嘛會出差錯。所以應該將遮仔會出差錯的符號改回佮英語仝款。若按呢學生根本無啥需要另外記無仝的符號,嘛袂定定拂毋著去。經過按呢的修改,大概愛另外學的符號只有3个爾爾。
2017年8月26日 星期六
來點名囉-點名程式android版本發佈試用
下跤是點名程式的原始碼,歡迎有趣味的人掠轉去研究。自由軟體上大精神是開放,完全無藏起來的想法。若干焦試用這个android apk,揤這个連結。
package tw.cyc.grid4; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; import android.app.FragmentTransaction; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.graphics.Color; import android.net.Uri; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.util.DisplayMetrics; import android.util.Log; import android.util.TypedValue; import android.view.GestureDetector; import android.view.Gravity; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.widget.AbsListView; import android.widget.Adapter; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.GridView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.NumberPicker; import android.widget.RadioGroup; import android.widget.SimpleAdapter; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.HashMap; import java.util.IdentityHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Random; import java.util.concurrent.ExecutionException; public class MainActivity extends Activity implements NumberPicker.OnValueChangeListener { ArrayList<HashMap<String, Integer>> location = new ArrayList<HashMap<String, Integer>>(); public int col = 4; public int pos = 0; public int num = 0; public int selected = 0; public int fontSize = 32; final int[] color = {Color.argb(255, 153, 51, 0), Color.argb(255, 153, 206, 255), Color.argb(255, 255, 153, 0), Color.argb(255, 194, 194, 214)}; long startTime = 0; long lastClickTime = 0; final int CLICK_PERIOD = 400; GridView grid; static GridAdapter adapter; static SharedPreferences spref = null; static RadioGroup column; static EditText number ; static Spinner spinner; static RadioGroup direction; static String pack = ""; static public boolean changed = false; private final static String MY_MESSAGE = "tw.cyc.sendmessage"; int monitorWidth = 0; int monitorHeight = 0; public class GridAdapter extends SimpleAdapter { Context context = null; public GridAdapter(Context context, List<? extends Map<String, ?>> numbers, int resource, String[] from, int[] to) { super(context, numbers, resource, from, to); this.context = context; monitorWidth = getResources().getDisplayMetrics().widthPixels; monitorHeight = getResources().getDisplayMetrics().heightPixels; } @Override public View getView(int position, View convertView, ViewGroup parent) { convertView = LayoutInflater.from(context).inflate(R.layout.gridview_item, null); HashMap<String, Integer> theMap = (HashMap<String, Integer>) getItem(position); TextView main_text = (TextView) convertView.findViewById(R.id.main_text); TextView second_text = (TextView) convertView.findViewById(R.id.second_text); if (theMap.get("note") < 0) { //note less 0 is virtual main_text.setText(""); } else if (theMap.get("note") > 0 && theMap.get("note") < 10) { main_text.setText("0".concat(theMap.get("note").toString())); } else { main_text.setText(theMap.get("note").toString()); } main_text.setTextSize(fontSize); main_text.setTextColor(color[pos]); int rowHeight = 0; if (location.size()/col <= 10) { rowHeight = monitorHeight / ((location.size()/col + 4)); } else rowHeight = monitorHeight / 14; ListView.LayoutParams param = new ListView.LayoutParams((int) ((monitorWidth - 100) / col), rowHeight); convertView.setLayoutParams(param); if (theMap.get("second") < 0) { second_text.setText(""); } else if (theMap.get("second") == 0) { second_text.setText(""); } else { main_text.setTextColor(Color.argb(255, 0, 153, 0)); second_text.setText(" ".concat(theMap.get("second").toString())); second_text.setTextColor(Color.argb(255, 218, 179, 255)); second_text.setTextSize(fontSize - 8); } return convertView; } } public int getVirtualNumber(ArrayList<HashMap<String, Integer>> location) { int virtualNumber = 0; for (int j=0; j<location.size(); j++) { if (location.get(j).get("second") < 0) { virtualNumber++ ; } } return virtualNumber; } public int randomSelect(View v) { //no need to check transpose startTime = System.currentTimeMillis(); if (startTime - lastClickTime < CLICK_PERIOD && lastClickView == v) { int realSize = location.size() - getVirtualNumber(location); if (realSize - selected == 0) { Toast.makeText(MainActivity.this, " 無免點囉!", Toast.LENGTH_SHORT).show(); return 0; } int random = (new Random()).nextInt(realSize - selected); int count = 0; //0 is most low value for (int j=0; j<location.size(); j++) { if (location.get(j).get("second") == 0) { if (count == random) { selected = selected + 1; location.get(j).put("second", Integer.valueOf(selected)); AlertDialog.Builder builder = new AlertDialog.Builder(this); TextView msg = new TextView(this); msg.setTextSize(50); msg.setTextColor(Color.RED);msg.setHeight(400); msg.setText(location.get(j).get("note").toString()); msg.setGravity(Gravity.CENTER); builder.setView(msg); AlertDialog dialog = builder.create(); dialog.show(); WindowManager.LayoutParams params = dialog.getWindow().getAttributes(); params.width = monitorWidth / 3; dialog.getWindow().setAttributes(params); break; } else count++; } } adapter.notifyDataSetChanged(); return random; } lastClickTime = startTime; lastClickView = v; return 0; } public int getTrow() { return ((int) (location.size()/col)) + 1; } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { // 攔截返回鍵 AlertDialog adialog = new AlertDialog.Builder(this) .setTitle("欲走矣嗎?") .setPositiveButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }).show(); adialog.getButton(DialogInterface.BUTTON_POSITIVE).setTextColor(Color.argb(255, 0, 153, 0)); adialog.getButton(DialogInterface.BUTTON_POSITIVE).setTextSize(20); adialog.getButton(DialogInterface.BUTTON_NEGATIVE).setTextColor(Color.argb(255, 0, 0, 153)); adialog.getButton(DialogInterface.BUTTON_NEGATIVE).setTextSize(20); } return true; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pack = getPackageName(); //backup for use after ending fragment spref = getSharedPreferences("settings", Context.MODE_PRIVATE); if (spref.getInt("column",0) == R.id.three) { col = 3; } else if (spref.getInt("column", 0) == R.id.four) { col = 4; } else if (spref.getInt("column", 0) == R.id.five) { col = 5; } num = spref.getInt("number", 32); pos = spref.getInt("pos", 0); fontSize = fontSize - (col-3)*4; //袂用float運算??若無會當掉,但是模擬器袂。 for (int j=0; j<num; j++) { HashMap<String, Integer> map = new HashMap<String, Integer>(); map.put("note", new Integer(j+1)); map.put("second", new Integer(0)); location.add(j, map); } grid = (GridView) findViewById(R.id.grid); DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); int height = metrics.heightPixels; LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(metrics.widthPixels, (int)(height*0.75)); grid.setLayoutParams(params); grid.setNumColumns(col); if (spref.getInt("direction",0) == R.id.verticle) location = transpose(location, col); adapter = new GridAdapter(this.getBaseContext(), location, R.layout.gridview_item, new String[] {"note", "second"}, new int[] {R.id.main_text, R.id.second_text}); grid.setAdapter(adapter); //grid.setOnTouchListener(new View.OnTouchListener() cannot handle position grid.setOnItemClickListener(new AdapterView.OnItemClickListener() { long startTime = 0; long lastClickTime = 0; final int CLICK_PERIOD = 400; int lastPos = 0; @Override public void onItemClick(AdapterView parent, View view, int position, long s) { startTime = System.currentTimeMillis(); if (startTime - lastClickTime < CLICK_PERIOD && position == lastPos) { TextView main_text = (TextView) view.findViewById(R.id.main_text); TextView second_text = (TextView) view.findViewById(R.id.second_text); if (location.get(position).get("second") == -1) { // just skip virtual item } else if (location.get(position).get("second") == 0) { selected ++; location.get(position).put("second", Integer.valueOf(selected)); } else { selected--; for ( int j=0; j<location.size(); j++) { if (location.get(j).get("second") > location.get(position).get("second")) { location.get(j).put("second", location.get(j).get("second")-1); } } location.get(position).put("second", Integer.valueOf(0)); } adapter.notifyDataSetChanged(); } lastClickTime = startTime; lastPos = position; } }); registerReceiver(mBroadcast, new IntentFilter(MY_MESSAGE)); } @Override protected void onDestroy() { super.onDestroy(); this.unregisterReceiver(this.mBroadcast); } static private BroadcastReceiver mBroadcast = new BroadcastReceiver() { private final static String MY_MESSAGE = "tw.cyc.sendmessage"; @Override public void onReceive(Context mContext, Intent mIntent) { if(MY_MESSAGE.equals(mIntent.getAction())) { adapter.notifyDataSetChanged(); Toast.makeText(mContext, "設定值變更了後APP愛重開才有作用。", Toast.LENGTH_LONG).show(); } } }; @Override public boolean onCreateOptionsMenu(Menu menu) { //參數1:群組id, 參數2:itemId, 參數3:item順序, 參數4:item名稱 menu.add(Menu.NONE, 0, 0, "基本設定"); menu.add(Menu.NONE, 2, 0, "臨時設定"); menu.add(Menu.NONE, 1, 0, "使用說明"); return super.onCreateOptionsMenu(menu); } public boolean onOptionsItemSelected(MenuItem item) { //依據itemId來判斷使用者點選哪一個item switch(item.getItemId()) { case 0: FragmentTransaction ft = getFragmentManager().beginTransaction(); MyDialogFragment frag = new MyDialogFragment(); frag.show(ft, "tx"); break; case 1: help(); break; case 2: setNumber(); break; default: } return super.onOptionsItemSelected(item); } public ArrayList<HashMap<String, Integer>> transpose(ArrayList<HashMap<String, Integer>> old, int column) { ArrayList<HashMap<String, Integer>> trans = new ArrayList<HashMap<String, Integer>>(); int trow = (int) Math.ceil((double) old.size()/column); int moverableRow = (int) Math.ceil((double) old.size()/column) - 2; int newnum = old.size(); int remainder = old.size() % column; //remainder is 1 first if ( remainder != 0 && (column - remainder - 1) <= moverableRow) { // newnum = num + (column-2 - (remainder-1)); } if (newnum > num) { for (int j = 0; j < newnum; j++) { HashMap<String, Integer> temp = new HashMap<String, Integer>(); temp.put("note", Integer.valueOf(trow * (j % column) + (j / column))); temp.put("second", Integer.valueOf(0)); trans.add(j, temp); trans.get(j).put("note", Integer.valueOf(trans.get(j).get("note") + 1)); } } else { int mustChCol = 0; //zero is first if (newnum % column == 0) mustChCol = 0; else mustChCol = newnum % column + 1; //0 first for (int j=0 ; j< newnum; j++) { HashMap<String, Integer> temp = new HashMap<String, Integer>(); if (mustChCol != 0 && j%column >= mustChCol) { //mustChCol is 0 first, j is 0 first //temp.put("note", Integer.valueOf(trow * (j % column) + (j / column) - (j % column - (mustChCol-1) - )); temp.put("note", Integer.valueOf(trow * (j % column) + (j / column) - (j % column - mustChCol) - 1)); } else temp.put("note", Integer.valueOf(trow*(j % column) + (j / column))); temp.put("second", Integer.valueOf(0)); trans.add(j, temp); trans.get(j).put("note", Integer.valueOf(trans.get(j).get("note") + 1)); } } if (remainder > 0 && newnum > num) { for (int j = 1; j <= column-1 - remainder; j++) { int change = ((trow - 1) - j) * column + (column - 1); // index 0 begin trans.get(change).put("note", Integer.valueOf(-1)); trans.get(change).put("second", Integer.valueOf(-1)); } } return trans; } View lastClickView = null; public void clear(View v) { startTime = System.currentTimeMillis(); if (startTime - lastClickTime < CLICK_PERIOD && lastClickView == v) { for (int j=0; j<location.size(); j++) { //check if cleared do nothing if (location.get(j).get("second") > 0) { AlertDialog adialog = new AlertDialog.Builder(this) .setTitle("確定欲總清掉?") .setPositiveButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { selected = 0; for (int j = 0; j < location.size(); j++) { if (location.get(j).get("second") != -1) // -1 is virtual , reserved location.get(j).put("second", Integer.valueOf(0)); } adapter.notifyDataSetChanged(); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }).show(); adialog.getButton(DialogInterface.BUTTON_POSITIVE).setTextColor(Color.argb(255, 0, 153, 0)); adialog.getButton(DialogInterface.BUTTON_POSITIVE).setTextSize(20); adialog.getButton(DialogInterface.BUTTON_NEGATIVE).setTextColor(Color.argb(255, 0, 0, 153)); adialog.getButton(DialogInterface.BUTTON_NEGATIVE).setTextSize(20); break; } } } lastClickTime = startTime; lastClickView = v; } @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) { //Log.i("value is",""+newVal); } public void setNumber() { final Dialog d = new Dialog(MainActivity.this); d.setTitle("NumberPicker"); d.setContentView(R.layout.dialogview); Button b1 = (Button) d.findViewById(R.id.button1); Button b2 = (Button) d.findViewById(R.id.button2); final NumberPicker np = (NumberPicker) d.findViewById(R.id.numberPicker1); np.setMaxValue(50); // max value 100 np.setMinValue(3); // min value 0 np.setValue(30); np.setWrapSelectorWheel(false); np.setOnValueChangedListener(this); b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int num = np.getValue(); location.clear(); for (int j=0; j<num; j++) { HashMap<String, Integer> map = new HashMap<String, Integer>(); map.put("note", new Integer(j+1)); map.put("second", new Integer(0)); location.add(j, map); selected = 0; } adapter.notifyDataSetChanged(); d.dismiss(); } }); b2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { d.dismiss(); // dismiss the dialog } }); d.show(); } public void help() { AlertDialog adialog = new AlertDialog.Builder(this) .setTitle("來點名囉--版權佮使用說明") .setMessage("1.連紲點才有作用,為防止無小心揤著。\n" + "2.點了的閣點會取消,後壁的攏進一名。\n" + "3.本軟體是自由軟體,歡迎散佈使用。\n" + "4.軟體版本2017.08,適用 android4.3以上。\n" + "台灣軟體自由協會。") .setPositiveButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }).show(); adialog.getButton(DialogInterface.BUTTON_POSITIVE).setTextColor(Color.argb(255, 0, 153, 0)); adialog.getButton(DialogInterface.BUTTON_POSITIVE).setTextSize(20); } public class MyDialogFragment extends DialogFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setStyle(DialogFragment.STYLE_NORMAL, R.style.MY_DIALOG); } @Override public void onPause() { Intent intent = new Intent(); intent.setAction(MY_MESSAGE); sendBroadcast(intent); super.onPause(); } @Override public void onStart() { super.onStart(); Dialog d = getDialog(); if (d!=null){ int width = ViewGroup.LayoutParams.MATCH_PARENT; int height = ViewGroup.LayoutParams.MATCH_PARENT; d.getWindow().setLayout(width, height); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View root = inflater.inflate(R.layout.my_fragment, container, false); column = (RadioGroup) root.findViewById(R.id.column); column.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { spref.edit().putInt("column", checkedId).apply(); changed = true; } }); column.check(spref.getInt("column", 0)); number = (EditText) root.findViewById(R.id.number); number.setText(Integer.toString(spref.getInt("number", 0))); number.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { spref.edit().putInt("number", Integer.parseInt(number.getText().toString())).apply(); changed = true; } }); spinner = (Spinner) root.findViewById(R.id.spinner); ArrayAdapter colorList = ArrayAdapter.createFromResource(root.getContext(), R.array.color, android.R.layout.simple_dropdown_item_1line); spinner.setAdapter(colorList); spinner.setSelection(spref.getInt("pos", 0)); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { spref.edit().putInt("pos", position).apply(); changed = true; } @Override public void onNothingSelected(AdapterView<?> parent) { } }); direction = (RadioGroup) root.findViewById(R.id.direction); direction.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { spref.edit().putInt("direction", checkedId).apply(); changed = true; } }); direction.check(spref.getInt("direction", 0)); return root; } }
2017年7月10日 星期一
2017蔡琴台中演唱
頂個月月中的時蔡琴佇台中舉辦個人演唱會,地點選佇台中中興大學的惠蓀堂。也就是中興大學的大禮堂。規場人滿滿是無空位,台文詩一首記錄個人感受。
蔡琴演唱會
百萬精華演唱會 四個月前票先買
民歌時代聽蔡琴 惠蓀堂內憶往過
中興湖邊雺霧雨 增添詩意不忍回
2017年6月19日 星期一
2017年6月1日 星期四
台灣手機支付方案差不多完整囉
今仔日google的android pay出來囉,雖然是目前line pay,apple pay,samsung pay攏佇伊的頭前出來,但是我想android pay可能會是台灣上普遍的支付方案。理由真簡單,apple機仔台灣只佔15%至20%爾爾,samsung pay限定三星的機仔,只有android pay無遮仔問題,而且去燦坤攄android pay的時嘛是用samsung pay彼隻接收。line pay有1萬箍的限制,種種問題會造成android pay佇台灣時到是上普遍的支付方案!附圖是android pay佇北港燦坤完成支付的手機畫面。
2017年4月1日 星期六
佇macbook內裝硬碟裝arch linux
蘋果電腦好用無毌著,但是效能無蓋好。為著平常拍拍字看新聞爾根本無需要開macos,所以想辦法閣裝arch linux入去。作法真簡單,首先用Time machine備份mac系統,繼來將分區縮小,縮小了後有空間增加二个分區。分別是boot佮linux檔案系統。boot愛是fat32格式,linux愛用ext4。arch linux裝好了後重開機就有通選了。毌夠,可能這時陣macos 顛倒是開袂起來囉,因為進前動著macos的分區囉,只要開機的時揤command+R來回復就OK了。
2017年2月17日 星期五
一卡通佮悠遊卡雙卡NFC手機化
行動支付進入2017年,雖然完備矣煞嘛有無方便的所在。佇sim卡方面愛先換有nfc功能的卡,但是悠遊卡猶無法度像一卡通仝款直接OTA下載來用,愛先去中華電信換電信悠遊sim卡才有法度用喔!筆者就是前年先請一卡通,今仔日閣去換電信悠遊sim卡造成舊的一卡通無法度繼續用,只好請新的囉!
1. 去easy hami請手機用悠遊卡
8. 目前有2種卡好選,台南市民真好命直接用,一般人選普通卡
9. 約定條款愛同意
10. 添個人資料
11. 繼續添
12. 成功了,認證碼4碼送到手機了
13. OTA記名完成
14. 送出身份證正反面,用翕相的方式喔。
15. 會當下載囉
16. 選下載一卡通
17. 繼續
18. 認證碼添入去
19. 下載中
20. 完成了
21. 會當用了
22. 無半箍,愛去7-11全家等加值喔。
23. easy hami顯示NFC一卡通已安裝
1. 去easy hami請手機用悠遊卡
2. 當然愛同意
3. 添個人資料
4. 送出了竟然就好勢了
5. 完成的畫面
6. 換請一卡通
7. 離開easy hami入去一卡通網站8. 目前有2種卡好選,台南市民真好命直接用,一般人選普通卡
9. 約定條款愛同意
10. 添個人資料
11. 繼續添
12. 成功了,認證碼4碼送到手機了
13. OTA記名完成
14. 送出身份證正反面,用翕相的方式喔。
15. 會當下載囉
16. 選下載一卡通
17. 繼續
18. 認證碼添入去
19. 下載中
20. 完成了
21. 會當用了
22. 無半箍,愛去7-11全家等加值喔。
23. easy hami顯示NFC一卡通已安裝
按呢就會當將這2張卡擲掉了,勞力!
2017年2月12日 星期日
問題報告-LibreOffice5.3.0.3蘋果版的小可問題
昨昏裝好LibreOffice5.3.0.3的蘋果版,煞發現傢俬的文字變磚了,但是閣有一寡是正常的。重開機試幾遍相仝。換裝Linux 版本顛倒無問題,毋知是毋是語言檔出問題或者其他問題?這个小小問題我想反應出去較適合吧!
2017年1月21日 星期六
哭枵聯盟--唐鳳喙講的"同溫層"
有一寡人明明就食甲傷過飽,煞喙飽目睭枵一直說in干焦領18%的人若可憐閣若可憐,完全是靠18%咧過生活。政府講咧幾落遍,年金無分18%只要上少2萬5以下攏袂振動,嘛有可能是3萬2千若以下就無改變。遮仔人攏是講替低層的人出聲,其實是欲顧全家己的退休金。若無是按怎無看著真正是年金領誠萬箍的人出來呢。聽說in明仔載又閣欲出來抗議,下跤這首台文詩做一个仔陪綴。台灣有3百若萬上班的人月給無夠3萬,愛出來抗議的是遮仔才著。
2017年1月12日 星期四
總統經國先生作忌記念台文詩一首
昨報導自由時報董仔吳阿明先生過身。才過三工爾爾就火化安座了,連傳統頭七都無辦,閣較免講講究排場大官文化的花箍白包等等細項了。誠實是台灣觀念進步的先行者。今仔日是總統蔣經國的作忌日子,最近國民黨的破病情形,毋知地下有靈赦一世人反共的經國先生按怎想?小小一首台文詩紀念嘛是台灣人的這个總統了。
關店中國黨
百年老店國民黨 血管硬掙氣袂通
黨產欲放喙咧講 可憐黨工捒來擋
明明上愛是一中 選舉個個抱經國
2017年1月10日 星期二
2017年1月1日 星期日
2017新年到--逐家痟跨年
每一冬欲結束的時,世界各國包括台灣在內攏會放煙火。佇台灣閣較痟,痟甲縣市政府嘛插一跤。嘉義小小的所在,竟然分做二个行政單位辦二場迎接新年的活動,趣味嘛笑詼!
跨年2017
島嶼天光滅火器 市府邀請𦲷嘉義
縣府日出阿里山 相招一七來跨年
故宮南院八月止 諸羅民眾攏免錢
連絡大道名高鐵 行政何必分縣市
訂閱:
文章 (Atom)