2015年12月25日 星期五

Windows 與遠端 ubuntu / raspberry pi 建立 X-session 連線

說到 Windows 要和遠端的 Linux (如 ubuntu 或 Raspberry Pi) 連線,最簡便的方式就利用 SSH 和 putty。但是,putty 有個限制 --- 只能執行命令列的程式。當我們遇到圖形介面的程式時,必須回到 Linux 本機,將 X-window 啟動,並執行該程式。

有辦法在遠端建立一個 X-window 的連線嗎? 事實上,X-windows 本身就是 server-client 架構,這樣的想法基本上是可行的。

以下是我搜尋到的方法,目前用起來還OK。

2015年12月19日 星期六

QGroundControl / APM Planner 2.0 編譯記錄 (ubuntu)

最近玩飛控,先來研究一下這套軟體。

1. 安裝環境

  • ubuntu 15.10 desktop

2. 安裝套件

要編譯 QGroundControl 要裝下面這些套件:
sudo apt-get install git-core cmake gstreamer1.0 libgstreamer1.0 libsdl1.2-dev \
   libudev-dev freeglut3-dev
其中freeglut3-dev 是包含 openGL 的套件。
至於要編譯 APM Planner 2.0 還必須裝:
sudo apt-get install libsdl2-dev libsndfile1-dev libssl-dev
反正全裝就是了~

2015年10月28日 星期三

在 ubuntu / Raspberry pi 上的藍牙基本操作,與建立序列埠 (serial port) 連線

最近買了一些藍牙的小 device,想要在 RPi 上開發一些藍牙的小工具。但是一方面對於藍牙的 software stack 不太熟,另一方面也想知道這些 device 操作藍牙的方式,所以乾脆先用手邊的 Ubuntu 和 RPi 來嘗試建立藍牙連線。

就先從最基本的序列埠連線開始吧。

1. 安裝環境


Raspbian版本: 2015-05-05-raspbian-wheezy

2015年10月6日 星期二

把 Raspberry Pi 改造成 wifi AP

最近在搞蘋果的 Airplay,當然要玩無線的。所以就先在 RPi 架個 wifi AP 啦。
安裝記錄如下:

1. 安裝環境

Raspbian版本: 2015-05-05-raspbian-wheezy
無線網卡:  bufflao 出的 WLI-UC-GNM,它採用雷凌的晶片。lsusb 可以看到下面的資訊:
ID 0411:01a2 BUFFALO INC. (formerly MelCo., Inc.) WLI-UC-GNM Wireless LAN Adapter [Ralink RT8070]

2015年9月25日 星期五

在Ubuntu Server 14.04.3 架 DHCP 與 NAT

手上同時使用的平台太多(windows, ubuntu, mac, raspberry pi),為了讓它們彼次能互相聯繫與傳檔,又不想用 static IP,乾脆把DHCP架一架。接下來順手也把NAT也架了,IP分享器就這樣完成。

以下是安裝紀錄:

1. 安裝環境

ubuntu server 14.04.3
雙網卡(em1 與 eth0),em1 負責對外的 pppoe ,eth0 負責作為 DHCP與NAT的介面。

2015年9月4日 星期五

在 Ubuntu Server 上安裝 MediaWiki

喜歡 Wiki 的簡潔和協同工作的特性,今天就直接架了一台 Ubuntu 14.03 server,自己做個 Wiki server 玩玩。步驟如下:

1. 安裝套件:

  sudo apt-get install mysql-server mysql-client
  sudo apt-get install php5 php5-mysql 
  sudo apt-get install php5-xcache
  sudo apt-get install libgd2-xpm-dev php5-gd
  sudo apt-get install mediawiki

2015年9月3日 星期四

Blogger 上貼程式碼

說要做筆記,但是如果在 Blogger 上不能貼 code 的話,那可怎麼辦呢.

還好谷哥這次又幫了大忙了!不但讓我搜尋到了這個網頁,裡面有詳細的說明,甚至這個 solution 還是谷歌自己提供的呢.它的名字就叫做 code-prettify.

不囉唆,先來看看它的效果:
  
   override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    // MARK: - Table view data source

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // Return the number of rows in the section.
        return self.restaurantNames.count
    }

    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        let cellIdentifier = "Cell"
        let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! CustomTableViewCell
        
        // Configure the cell...
        cell.nameLabel.text = restaurantNames[indexPath.row]
        cell.thumbnailImageView.image = UIImage(named: restaurantImages[indexPath.row])
        cell.locationLabel.text = restaurantLocations[indexPath.row]
        cell.typeLabel.text = restaurantTypes[indexPath.row]
        
        cell.accessoryType = restaurantIsVisited[indexPath.row] ? .Checkmark : .None

        // Circular image
        cell.thumbnailImageView.layer.cornerRadius = cell.thumbnailImageView.frame.size.width / 2
        cell.thumbnailImageView.clipsToBounds = true
        
        return cell
    }
還真的很漂亮呢.以下是 blogger 的修改方法: