2017年9月17日 星期日

Xamarin Forms 常用View的介紹

前言:
  • Xamarin Forms可以讓你寫一次code就可以同時製作出Android、IOS、Windows Phone,甚至是可以在PC、HoloLens、Xbox上面跑的Windows App,相當的方便!其跨平台所帶來的好處不言而喻,但同時也會造成一些問題:
  1. 開發環境建置門檻高
    • 由於牽涉到多種平台的聯繫,等於需要對各種平台都要有相當的了解才知道怎麼設定。這個問題相較於以前已經減輕很多
  2. 功能性
    • 每個平台都有各自的功能,Xamarin Forms只能取其交集,對於Xamarin Forms不提供的特定功能只能針對該平台單獨實作。問題在於你可能不了解該平台,因此不知道該如何實作
    • 同時,身為新技術,Xamarin Forms的確也還沒實作完「全部的交集」,某些功能在每個平台都有提供,但Xamarin Forms卻還未提供該功能,這時也會需要針對各個平台分別實作。這個問題已經改善很多,在未來也會持續改進
  3. 相容性
    • 每個平台皆可獨立於Xamarin Forms之外自行更新,但這常常造成Xamarin Forms對於該平台的相容性問題,建議不要隨意升級各個平台的套件,由Xamarin Forms統一管理其升級事宜。這個問題相較於以前已經減輕很多

名詞解釋:
  • View:通常是一個長方形的東西,有的可以在上面顯示文字、圖片、進度或任何你想顯示的東西,有的用手指點一下會有反應 (「按鈕」就是一種View),有的可以用來輸入文字
  • Layout:是一種View,也是一個長方形的東西,塞很多的View進去是它唯一的功能,但Layout很重要,因為沒有Layout你就不能在同一個畫面中放超過一個View。Layout通常是隱形的,你只能看到它怎麼將塞進它裡面的View排列在畫面上,而不能直接看到Layout本身
    p.s. 以下介紹中Layout會用斜體+粗體表示

接下來就按照使用程度來介紹前10名小莫常用的View吧~
  1. Button
    • 這大概是最親民的View了吧,因為用手指戳它會有反應XD
      新手入門可以從Button開始玩起
    • Debug的時候很好用,可以用來觸發某段測試程序
    • 常用的
      • 屬性:Text
      • 事件:Clicked
  2. StackLayout
    • 想要將多個View放進同一個畫面,可以從StackLayout下手~它會幫你將View由上而下排得整整齊齊的XD
    • 常用的
      • 屬性:Children, Orientation
  3. ScrollView
    • 當一個View太大,比一個螢幕的大小還大,要怎麼辦呢?讓它可以用手指滑動是一個好選擇,就把它塞進ScrollView裡面吧~ScrollView是一個比較特別的Layout,它只能塞一個View進去
    • 常用的
      • 屬性:Content
  4. Editor
    • 想要一個可以打字的地方嗎?那就非Editor莫屬了!
    • 常用的
      • 屬性:Text
  5. Image
    • 想要顯示一張圖片嗎?那就非Image莫屬了!
    • 常用的
      • 屬性:Source
  6. ActivityIndicator
    • 如果程式正在下載一個檔案,或者進行一個龐大的計算,要很久,怎麼辦?顯示一個圈圈轉轉轉,或者一堆點點跑跑跑,讓使用者更心煩(X)紓壓(O)吧~
    • 常用的
      • 屬性:IsRunning
  7. Label
    • 想要顯示文字?不想像Button一樣被戳會有反應,也不想像Editor一樣可以編輯文字。哦,那就用Label吧!除了用來顯示文字之外,甚麼事都不能做!XD
    • 常用的
      • 屬性:Text
  8. Entry
    • 這是一個只能輸入一行的Editor,這有甚麼用?方便的很呢,這樣使用者平常按換行 (Enter) 的那個鍵就可以用來當作「輸入完畢」鍵了!
    • 常用的
      • 屬性:Text, Placeholder, IsPassword
      • 事件:Completed
  9. Grid
    • 要怎麼把View排成九宮格呀?看看那邊~Grid正在對你偷笑!^_^
      除了做出九宮格之外,Grid的強大排版功能可不只你想的那樣!
    • 警告:GridLength.Auto不可濫用,100個Auto會拖慢你的App至少0.5秒!
    • 常用的
      • 屬性:RowDefinitions, ColumnDefinitions
  10. ProgressBar
    • ProgressBar就是進度條,使用時機和ActivityIndicator類似,但是多了「顯示進度」的功能
    • 說的容易做起來難,你在寫程式的時候要怎麼讓程式知道自己跑了幾趴(%)?OwO
      各顯神通吧XD
    • 常用的
      • 屬性:Progress
      • 方法:ProgressTo


更多View的介紹請見Xamarin Forms官方網站 (全英文)
圖片來源:ViewsLayouts

2017年9月7日 星期四

[公告]歡慶code風景區瀏覽量破10萬!!!

最近太忙了,先發個文祝賀XD
發文的此時瀏覽量已經11萬了耶!
哇!好開心好開心~有空一定來更新! ^_^

話說,左上角那個圖片,裡面藏著code scenic (code風景區的英文名稱) 這10個字母哦~有人發現嗎?XD

----------防雷線----------

2017年5月18日 星期四

[教學]在Windows 10中突破260字元的檔案路徑長度限制

出於無聊,將系統語言設定成英文 (雖然我是台灣人),因此圖片皆為英文版的畫面,說明文字將以「英文 (中文)」形式代表英文和其可能的中文,例如以下會出現的「File Explorer (檔案總管)」和「More info (更多資訊)」
英文很差,所以不保證中文翻譯會和實際情況完全相符

背景描述
由於小莫的許多專案擁有很長的名稱,為了分類也將這些專案放入越來越深的資料夾,「檔案路徑太長」之類的錯誤也漸漸變成家常便飯。到底,檔案路徑的長度限制是多少呢?
Windows使用的檔案系統 (File System) 格式為「NTFS」,稍微查了一下維基百科,發現NTFS可以允許的最長檔名長度 (絕對路徑+檔名) 是32767個字!
檔名或資料夾能取名到長度大於255也是很厲害了
不過對於路徑長度 (絕對路徑) 的支援
在NTFS檔案系統裡面竟然可以達到32767個字元!!!
不會吧?別騙我,怎麼可能小莫會把路徑長度搞到超過32767啦XD
而且在自己的Windows 10中做測試,實際的限制真的遠不及這個數字QQ
不到300字就開始出錯了XD (目前是244個字,請看右上角的記事本)
哦對了,新增資料夾的快速鍵是「Ctrl+Shift+N」XD

上網搜尋了許多資料,比較一致的看法是260個字元 (這合理多了!)
但是,既然NTFS可以支援,為甚麼Microsoft還是要在Windows中設下這個限制呢?
據說是相容性問題
畢竟在Windows 95的時代還是使用FAT這種限制255字的檔案系統的,如果突然放寬檔名長度限制,會令許多沒寫好的第三方軟體無法正常運作
是的,Microsoft為了讓Windows可以相容在舊版Windows上執行的軟體,真的下了很多功夫啊...... (畢竟,如果某軟體在舊版Windows正常執行,卻會在新版Windows中的某些情況下停止運作,使用者會怪罪到Windows身上啊) (汗

解決方法
您可能會說:「啊現在又不是Windows 95的時代了,誰會去管那老舊的Windows 95軟體呀!」
恩,某些程度上的確可以這麼說,而且軟體crash了是製作軟體的人的錯,不是Windows的錯哦~(咦?
所以呢,在Windows 10的1607版本之後,使用者已經可以自行移除這個檔名長度260字的限制了
所以,該怎麼設定呢?

2017年5月8日 星期一

[小工具]Real-time Google Translate

功能:偵測剪貼簿的文字並即時呈現線上翻譯結果
使用方法:
  1. 執行程式
  2. 複製想要翻譯的文字
  3. 查看翻譯結果
目前支援三種翻譯模式:
  • Google翻譯:英翻中(預設)
  • Google翻譯:中翻英
  • yahoo字典:英中、中英皆可
其他設定:有空再補充XD
註:Windows Only
下載連結

2017年4月17日 星期一

給新手的C++教學 - 開源公告

決定開源!--給新手的C++教學

回到「給新手的C++教學 (上冊)」



「給新手的C++教學」將放上GitHub供大家檢閱、修改,小莫會在收到GitHub通知後會盡快確認變更並將原始碼同步到code風景區

給新手的C+教學原始碼@GitHub (為html/css/JavaScript原始碼,貢獻方式也請參考此連結):
https://github.com/fsps60312/code-scenic-u7d66-u65b0-u624b-u7684C-u6559-u5b78

主要原因:
  • 小莫上大學後發現更多好玩的事情想要嘗試,幾乎無暇繼續維護「給新手的C++教學」
  • 仍有不少網友們來信或透過各種方式表示「期待著本教學的新文章」,不能就這麼放著不管XD
  • 目前每天瀏覽「給新手的C++教學」讀者人數已達上百人,不開源太可惜了(?)
其他原因:
  • 本教學的最初目標「成為網際網路上最淺顯易懂、對新手最友善的繁體中文C++教學之一」已完美達成~ :D
  • 新手們由本教學帶領入門C++之後將具備一定的自學能力,學習其他進階語法更為輕鬆,是否要再繼續介紹C++的其他功能似乎沒這麼必要
  • 每寫完一篇教學,就會驚覺還有更多東西可以介紹,沒完沒了,最後可能整個C++ reference都要重講一遍了,這可不行XD
  • 每一篇文章可能都是1~4小時、甚至好幾天的心血結晶,以現在這麼喜歡到處忙、到處摸的狀態,花時間寫這種東西可能不再是這麼可行XD
  • 人人都能成為本教學的貢獻者,搞不好可以達成像維基百科一樣的成效 (自己講www)
本教學開源後開放轉貼 (例如:您的個人部落格),但為維護品質,有幾項原則請您務必了解:
  • 創用CC
  • 禁止在本教學中以任何形式插入廣告
  • 禁止利用本教學進行任何營利行為
  • 您對本教學做出的任何修改無法保留著作權,也就是當別人看到您的修改並想要如法炮製時,您不能阻止他/她
  • 請在明顯的地方註明來源網站名稱:code風景區
  • 請在明顯的地方註明原始連結:http://codingsimplifylife.blogspot.tw/2016/04/c.html
  • 原始作者綽號「小莫」或本名「余柏序」,要不要註明請便XD
以下是之後會發生或者預計發生的事:
  • 「給新手的C++教學」將停止官方更新,但仍會進行非官方更新(來自熱心的貢獻者們)以及必要的官方維護
  • 「給新手的C++教學」將可能會出現在code風景區以外的地方,請讀者們自行決定要去哪一個網站瀏覽
  • 「給新手的C++教學」永遠不會作為營利用途
  • 「code風景區」將繼續分享小莫有興趣或剛學會的各種資訊技術
  • 鼓勵讀者們留言發問~能幫忙忙忙的小莫回答其他讀者們的問題更棒!
  • code風景區永遠感謝並歡迎您的光臨~ ^_^

2017年3月2日 星期四

給新手的C++教學 (上冊) - 13 - 16. 函式的遞迴

回到「給新手的C++教學 (上冊)」

回到「13. 額外語法 (Extra syntax)」

上一頁

註: 小莫使用的程式碼上色網站掛掉了,因此本頁的程式碼都沒有顏色,等該網站恢復之後會再進行程式碼上色的動作,暫時造成不便敬請見諒。若您發現該網站已經恢復運作,本頁程式碼卻還沒更新,也歡迎以各種方式提醒小莫哦~ ^_^

遞迴?甚麼是遞迴呢?
其實數學也有遞迴哦~
不知道也沒關係,因為小莫高一學程式的時候也完全沒聽過「遞迴」這個字眼XD
反正就是個專有名詞嘛XD,概念其實不難~

舉個例子,現在小莫創造一個函式$f$,當$n=1$時會回傳$1$,$n=2$時也會回傳$1$:

#include<cstdio>
int f(int n)
{
    if(n==1||n==2) return 1;
    printf("無法處理這個n\n");
    return -1;
}
int main()
{
    printf("f(1)=%d\n",f(1));
    printf("f(2)=%d\n",f(2));
    return 0;
}

那$n=3$呢?小莫想要讓它回傳「$f(1)+f(2)$」
甚麼意思?
$f(1)=1$,$f(2)=1$,所以$f(3)=f(1)+f(2)=1+1=2$啦
也就是當$n=3$時會回傳$2$,只是這個$2$是被計算出來的

那$n=4$呢?小莫想要讓它回傳「$f(2)+f(3)$」
$f(2)=1$,$f(3)=2$,所以$f(4)=f(2)+f(3)=1+2=3$啦
也就是當$n=4$時會回傳$3$,只是這個$3$是被計算出來的

那$n>4$呢?相信您已經猜到了,只要$n>2$,小莫想要讓它回傳的就是$f(n-2)+f(n-1)$!

那$f$這個函式的程式碼要怎麼寫呢?不用怕,電腦學過C++,很聰明的,直接寫出來,看看電腦能不能看懂!

2017年2月10日 星期五

[小工具]線上質數判定

使用方法:
  1. 將數字輸入右側文字框
  2. 左側將立即顯示該數字是否為質數 (支援多行哦!)
發現任何問題要講哦~小莫才能知道哪裡需要改善^_^
Here: