dd disk image 建立與擴展

測試dd image的建立與擴展

#建立
dd if=/dev/zero of=test001.img bs=10M count=10
#格式化
mkfs -F test001.img
#建立掛載資料夾
mkdir -p /tmp/disk/test001
#掛載
mount -t ext2 -o loop $PWD/test001.img /tmp/disk/test001
#隨便產生一個90Mb的檔案
dd if=/dev/zero of=/tmp/disk/test001/xxxx.img bs=10M count=9
#查看可用空間
df -h | grep /dev/loop
#解除掛載
umount /tmp/disk/test001

#磁碟檢查
e2fsck -f test001.img -y
#調整空間大小至200M
resize2fs test001.img 200M
#重新掛載
mount -t ext2 -o loop $PWD/test001.img /tmp/disk/test001
#調整空間
losetup -c /dev/loop0
resize2fs /dev/loop0
#查看可用空間
df -h | grep /dev/loop
#解除掛載
umount /tmp/disk/test001

#刪除測試檔案
rm -f -r test001.img

以docker快速建立mysql測試環境

剛剛因為要測試mysql跟mariaDB的語法是否有不同
因此用下列語法快速建立mysql來進行測試

#建立mysql server
docker run \
  --name some-mysql \
  -e MYSQL_ROOT_PASSWORD=abcdefg \
  -d mysql:5.7
sleep 10

#建立mysql client
docker run \
  -it \
  --rm \
  --link some-mysql:mysqlA \
  mysql sh -c 'exec mysql -h mysqlA -uroot -pabcdefg'

SQL測試語法

create database TEST1;
use TEST1;
CREATE TABLE `test` (
  `id` int(11) NOT NULL,
  `geo` point DEFAULT NULL
);
INSERT INTO `test`(`id`, `geo`) VALUES (1,ST_GEOMFROMTEXT('POINT(121 23)',4326));
select * from `test` where 1;

使用google map geolocation api對raspberry pi進行地理定位

下面範例使用了Google Map GeoLocation Api對raspberry pi進行地理定位,
其中key可在https://console.developers.google.com申請,每日免費額度是2500(每100秒限制10000次)

/*
npm i pi-wifi google-geolocation
node main.js
*/
function geolocation(callback){
  var geolocation = require ('google-geolocation') ({
    key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
  });
  var piWifi = require('pi-wifi');

  piWifi.scan(function(err, networks) {
    if (err) {
      return console.error(err.message);
    }
    //console.log(networks);

    var items=[];
    for(i in networks){
      items.push({
        'macAddress': networks[i].bssid,
        'signalStrength': networks[i].signalLevel,
      });
    }

    var params={
      wifiAccessPoints: items,
    };

    geolocation (params, (err, data) => {
      if (err) {
        return;
      }

      var result={
        'lat': data.location.lat,
        'lng': data.location.lng,
        'accuracy': data.accuracy,
        'type': 'wifi',
      };

      if(callback &&  typeof(callback) == "function")
        callback(result);
    });
  });
}

geolocation(function(location){
  console.log(location);
  var url ="https://www.google.com.tw/maps/search/"+location.lat+","+location.lng;
  console.log(url);
});

Apache Maven 初體驗

參考網址: http://www.codedata.com.tw/java/understanding-gradle-2-maven/hello-world/
1.建立專案

export maven_group=tw.com.slanla
export maven_id=helloworld
mvn archetype:generate \
  -DarchetypeArtifactId=maven-archetype-quickstart \
  -DinteractiveMode=false \
  -Dmaven.test.skip=true \
  -DgroupId=${maven_group} -DartifactId=${maven_id}


2.編譯專案

cd $maven_id
mvn package


3.執行程式

java -cp target/${maven_id}-1.0-SNAPSHOT.jar ${maven_group}.App


如果不想要每次執行jar時,還要指定mainclass的話,
可以在pom.xml中加入

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      <version>2.4</version>
      <configuration>
        <archive>
          <manifest>
            <addClasspath>true</addClasspath>
            <mainClass>tw.com.slanla.App</mainClass>
          </manifest>
        </archive>
      </configuration>
    </plugin>
  </plugins>
</build>

如下圖所示:

這樣一來就可以用java -jar直接執行:

java -jar target/${maven_id}-1.0-SNAPSHOT.jar

install nodejs 6 on raspberry pi

armv6的raspberry pi似乎無法直接用apt-get install方式安裝.
所以改用下列語法安裝

wget http://nodejs.org/dist/v6.9.5/node-v6.9.5-linux-armv6l.tar.gz && \
tar -xzf node-v6.9.5-linux-armv6l.tar.gz && \
mv node-v6.9.5-linux-armv6l nodejs && \
rm node-v6.9.5-linux-armv6l.tar.gz && \
cp -R * /usr/local/ && \
rm -r -f nodejs && \
ln -s /usr/local/nodejs/bin/node /usr/bin/node && \
ln -s /usr/local/nodejs/bin/npm /usr/bin/npm

刪除無作用的docker image

在使用docker build建立image的過程中,往往會產生很多個none的docker images

因此可以透過下列指令刪除

docker rmi $(docker images | grep none | awk '{print $3}')

raspberry wifi設定

修改/etc/wpa_supplicant/wpa_supplicant.conf

sudo vim /etc/wpa_supplicant/wpa_supplicant.conf

輸入wifi ap資訊

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev 
update_config=1 
country=TW 
network={ 
  ssid = "wifi_ap_ssidname"
  psk =  "wifi_ap_password"
  key_mgmt=WPA-PSK 
}

存檔,重開機既可