2019年3月15日 星期五

好用的ssh軟體

假如常有遠端連線的需求,SSH就是一個非常重要的東西,在這裡介紹幾個很不錯的SSH。

1. PuTTY:網站

PuTTy是老牌軟體,眾多人士使用,不過沒有中文介面就是了。裡面還有psftp等等的程式,非常方便。

2. PieTTY:網站

PieTTY是把PuTTY加入了中文,還有許多其他的東西,所形成的軟體,十分好用。

3. MobaXterm:網站

MobaXterm是一個很漂亮的ssh軟體,他可以轉傳Xwindow的畫面,十分好用。

2019年3月14日 星期四

Code::Blocks + wxWidgets簡單介紹

我一開始做程式時,是用C♯,裡面就有一個Windows Form應用程式的專案類型,可以視覺化的製作GUI程式。而我現在利用Code::Blocks裡面內建的功能,搭配wxWidgets,加上Mingw64的編譯器,在Windows作業系統中,可以簡單地建立GUI程式。


wxWidgets網站,下載原始碼。

Code::Blocks網站,下載程式,其中我下載的是不需要安裝的版本。假如你沒有獨立安裝編譯器,可以下載有mingw的版本。

2019年3月13日 星期三

線上編譯器compileonline.com

前幾天,在文章中有用到這個網站,所以今天來簡單介紹一下。compileonline的網址
從他的首頁中,有許許多多的程式語言可以挑選,例如我挑C語言來玩玩。

一進來,就會有一個最基本的程式(像是上圖中的Hello world),然後可以按左上角的Execute執行,結果顯示在右邊。


點這裡就可以進入標準輸入的畫面,可以像是在Terminal輸入東西。

2019年3月12日 星期二

歌詞 (附影印檔) 中國文字藝術之美【生僻字】 詞曲唱:陳柯宇

 推薦一首傳遞中國風的歌曲

生僻字

這首歌曲,
搭配著節拍的優美變化,
營造出很有快速且有規律的感覺,
卻不會令人感到厭倦。
其中的精隨──當然是歌詞的部分,
起初由「又双叒叕」、「魃魈魁鬾魑魅魍魎」等切入,
漸漸的,出現了更少見的字詞與成語,
如:「煢煢孑立,沆瀣一氣……咄嗟,蹀躞……」
最後再來個宣示我們文字美的結尾,
這首歌真是讓人覺得很感動。


2019年3月11日 星期一

掀起一段熱潮的 微軟 Windows Phone 是如何走向滅亡的?我們該怎麼做?想法?



經由多年的垂死掙扎後,
微軟宣布即將停止支援Windows Phone及其Mobile的更新,
意味著微軟放棄了手機市場。


其實當初在Windows 8推出手機的時候,
銷售量相當的慘謝,

後來到Windows 10的時候,
以跨平臺的服務作為宣傳,
且揚言要讓手機打入國際市場。

不過不易操作的見面與安全性疑慮的問題,
間接導致陸續有廠商不願推出與Windows Phone相容性的應用程式,
最後……導致微軟的產品走向滅亡。


爾後,
傳出微軟有意要把作業系統改為Android,
這將會是手機產業上重大的新聞。

2019年3月10日 星期日

如何使用「Noteflight」線上寫譜軟體?從註冊帳號到編輯樂譜【基本介紹】

Noteflight是一個很不錯的線上寫譜軟體,他還可以內建播放樂器的聲音。


按中間的按鈕註冊,右上角的按鈕登入。他也可以用facebook或google帳號註冊。


選上面的是直接建立一個空白的新樂譜;下面的是匯入(我沒用過)

2019年3月9日 星期六

Objective C與愛情【程式設計】

昨天想到,Objective C的類別函式呼叫語法,好像可以和自然語言很類似,所以寫了下面的這行程式:
[I love:you];
但是這感覺只是暗戀,沒有告白的感覺,所以我改成:

[You love:I];
這感覺很像某些特殊語言,語序和我們有差,所以:

[We fall_in_love];

但是,大家當然比較喜歡白頭偕老,所以我們再加上這個:

[We married];

總和來說,我最喜歡下面的這段

while(1)
{
  [I love:you];
  [You love:I];
  [We fall_in_love];
  [We married];
}

有一種永恆的感覺。

【教學】使用「no-ip」架設「免費IP」 | 從「註冊」到可以「連線IP」【加碼】路由處理教學!

NO-IP是一個針對浮動IP的DNS服務,可以讓每次架設伺服器時,擁有同一個DNS位置,不論你的IP是什麼(它會自動偵測你目前IP位置更新)
首先,到no-ip網站
假如你還沒有帳號,那麼請點擊左上的Sign Up按鈕註冊一個。
假如已經有帳號,就直接按左上角的Log In


沒有帳號的話,照著上圖,打上電子信箱,設定密碼,勾選Create my hostname later。之後按下最下面的Free Sign Up,就可以擁有免費的no-ip帳號了。


已經有帳號,就可以直接點右上角的Log In按鈕然後打上帳號、密碼登入。

登入以後的主畫面往下拉,先打上你預計要的網址名稱,在按下Add Hostname,就可以新增一個DNS位置了。


之後下載這個程式,依照指示安裝,然後打開安裝的目標位置中的DUN.exe


按下去以後,選擇剛剛新增的DNS位置,就可以開始使用no-ip了。

2019年3月8日 星期五

Objective C語言類別 (簡易)【程式設計】

在Objective C中,類別的定義和實作是分開的。定義利用@interface關鍵字;實作利用@implementation關鍵字。在這個下面程式中,我們定義一個類別,並且有一個print函式,再來利用Objective C裡面的神奇呼叫方式,印出一小段訊息。
#import <Foundation/Foundation.h>
@interface MyObject:NSObject
-(void)print;
@end

@implementation MyObject:NSObject
-(void)print
{
    NSLog(@"This is MyObject");
}
@end


int main (int argc, const char * argv[])
{
   NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
   MyObject * obj = [[MyObject alloc] init];
   [obj print];
   [pool drain];
   return 0;
}

2019年3月7日 星期四

Objective C語言 走馬看花【程式設計】

Objective C語言,顧名思義是一個物件導向的程式語言,但他的物件導向很特別,直接使用了他的前輩Smalltalk的許多方式,並且和C合在一起。
Apple自從某年某月開始,把主要使用的編譯器變成了clang,Objective C也主要在clang中實作,但我主要利用compileonline.com提供的GCC編譯器「玩」這個我不常使用的語言(我沒有Apple的電腦)。
一開始,有個簡單的Hello world程式:
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[])
{
   NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
   NSLog (@"hello world");
   [pool drain];
   return 0;
}

新版的Objective C好像不使用這種方法宣告AutoreleasePool,好像用autoreleasepool{}這樣括起來。
在Objective C物件不是呼叫函式,而是對物件傳送訊息。意思是,你可以傳送一個物件無法處裡的訊息,並且在編譯時可以通過,然後到了執行期間才會產生錯誤,像是我對這裡的pool發送一個奇怪的訊息。

#import <Foundation/Foundation.h>
int main (int argc, const char * argv[])
{
   NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
   NSLog (@"hello world");
   [pool StrangeMessage];
   [pool drain];
   return 0;
}

2019年3月6日 星期三

【C語言】緩衝區溢位攻擊

假如我寫了一個程式如下

#include <stdio.h>
#include <string.h>

int main()
{
  char str[5];
  int pass = 0;
  gets(str);
  if (!strcmp(str, "1234")) {
    pass = 1;
    puts("Your password is correct");
  } else {
    puts("Your password is wrong");
  }
  if (!pass) {
    puts("Access denied");
  } else {
    puts("You've loged in");
  }
  return 0;
}
我們使用了非常危險的函式gets,連gcc都會告訴大家
warning: the `gets' function is dangerous and should not be used.
因為gets這個函式只會硬塞進緩衝區,不能夠設定緩衝區大小,確保不會發生緩衝區溢位。
在gcc 8.2.1中,直接編譯,結果如下:

1000
Your password is wrong
Access denied
1234
Your password is correct
You've loged in
12345
Your password is wrong
Access denied
123456
Your password is wrong
Access denied
*** stack smashing detected ***: <unknown> terminated
zsh: abort (core dumped)  ./a.out


我只要打太多東西,直接就會crash。
我加入了-fstack-protector,得到的結果如下:

1000
Your password is wrong
Access denied
1234
Your password is correct
You've loged in
12345
Your password is wrong
Access denied
123456
Your password is wrong
Access denied
123812638791263127896378912631278963718923
Your password is wrong
Access denied
zsh: segmentation fault (core dumped)  ./a.out