如何利用wordpress架網站(全)

  1. 申請免費空間(Free Hostia)
    https://www.freehostia.com
  2. 申請免費網域(Twbbs.org)
    http://twbbs.org/?q=bbs_register
    設定‧修改_網域___TWBBS_org_自由網域
  3. 利用免費空間安裝網站、同時安裝一個MySQL Server(Free Hostia-> WordPress)
    => 安裝器-> 程序安裝器-> 安裝wordpress
    程序安裝器___Free_Hostia_控制面板
  4. 將網域導向自己的網站
    => 在twbbs.org內申請完後,需等待一天左右的審核時間
    => 我的域名-> 以寄存的域名
    寄存的域名___Free_Hostia_控制面板
  5. 利用wordpress設定網站!
    => rongson.twbbs.org/wordpress/wp_admin
  6. 再來如果只是要經營部落格,就不需要管Free Hostia 和 Twbbs了,
    只需要直接進到你的網站後台(rongson.twbbs.org/wordpress)就好
  7. 從google blogger搬家到wordpress,先從blogger匯出xml檔,再從wordpress後台以xml檔匯入

參考:

  1. 申請Free Hostia教學:老牌穩定免費空間申請教學- 香腸炒魷魚
    https://sofree.cc/sinup-freehostia/
  2. 申請Twbbs.org教學:如何申請免費自由網域twbbs.org?- 香腸炒魷魚
    https://sofree.cc/twbbs-org/
  3. 完整wordpress架站教學:[懶人包] WordPress 架站教學:安裝/搬家/空間/設定/佈景/外掛/優化/安全/常見問題https://sofun.tw/wordpress-tech/#WordPress-Setup

Arduino Project: Weather station (小型氣象站)

Arduino 連接 DHT11感測空氣中的溫濕度,以光敏電阻感測是否有人經過,再以LCD顯示目前空氣溫濕度。

Arduino:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <dht.h>

#define dht_dpin 2
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, NEGATIVE);  // 設定 LCD I2C 位址
dht DHT;
int newPhotoValue, oldPhotoValue, diff;
bool flag=false;

void setup() {
  lcd.begin(16, 2);      // 初始化 LCD,一行 16 的字元,共 2 行,預設開啟背光
  lcd.clear();
  lcd.backlight();
  lcd.noCursor();
  delay(1000);

  lcd.setCursor(0, 0); // 設定游標位置在第一行行首
  lcd.print(“Hello, world!”);
  lcd.setCursor(0, 1); // 設定游標位置在第二行行首
  lcd.print(“Shrimp”);
  delay(1000);
  lcd.clear();
}

void loop() {
  //lcd.clear();
  newPhotoValue = analogRead(A0);
  //lcd.print(newPhotoValue);
  if(flag){
    lcd.setCursor(0,0);
    lcd.print(“Welcome to RS’s”);
    lcd.setCursor(0,1);
    lcd.print(“Weather Station”);
    flag = false;
  }
  diff= oldPhotoValue-newPhotoValue;
  if(abs(diff)>15){
    unsigned long time = millis();
    while(millis() – time < 1000){
      lcd.clear();
      DHT.read11(dht_dpin);
      
      lcd.setCursor(0,0);
      lcd.print(“Humi: “);
      lcd.print(DHT.humidity);
      lcd.print(“%”);
      
      lcd.setCursor(0,1);
      lcd.print(“temp: “);
      lcd.print(DHT.temperature);
      lcd.print(“oC”);
      delay(500);
    }
    flag= true;
  }
  delay(1000);
  oldPhotoValue= newPhotoValue;
}

library:

DHT11, LCD:
https://drive.google.com/folderview?id=0B9fmfEayrYvMRU0wejUyNUFGMkk&usp=sharing

參考:
1. 以arduino uno 燒錄 arduino pro mini:
http://sky4s.blogspot.tw/2014/04/arduino-unoarduino-pro-mini-use-arduino.html
補充: 燒錄時,板子記得選arduino pro mini
2. LCD I2C- G.T.WANG:
http://sky4s.blogspot.tw/2014/04/arduino-unoarduino-pro-mini-use-arduino.html
3. DHT11- 聰明人求知心切:
http://alex9ufoexploer.blogspot.tw/2013/04/arduino-humidity-sensor-dht11-tutorial_6.html

Arduino: Serial

以Serial方式,傳送指令給arduino,若收到A,LED亮,收到B,LED暗

PS. 可以把LED換成繼電器(Relay)(可控制電器)
繼電器上的
NC: Normal Close,
C: Common,
NO: Normal Open

code:
int led = 2;
char incomingByte;   // for incoming serial data

// the setup routine runs once when you press reset:
void setup() {
  Serial.begin(9600);
  pinMode(led, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  if(Serial.available())
  {
    incomingByte = Serial.read();
   Serial.print(“I received: “);
     Serial.println(incomingByte);
    if(incomingByte== ‘A’){
      digitalWrite(led, HIGH);
    }
    if(incomingByte== ‘B’){
      digitalWrite(led, LOW);
    }
    
  }
}


– 在putty上讀取特殊鍵盤值:

int led = 2;
int incomingByte;   // for incoming serial data

// the setup routine runs once when you press reset:
void setup() {
  Serial.begin(9600);
  pinMode(led, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  if(Serial.available())
  {
    incomingByte = Serial.read();
   Serial.print(“received!:  “);
     Serial.println(incomingByte);
    if(incomingByte== 65){
      Serial.println(“catch up”);
    }
    if(incomingByte== 66){
      Serial.println(“catch down”);
    }
    if(incomingByte== 67){
      Serial.println(“catch right”);
    }
    if(incomingByte== 68){
      Serial.println(“catch left”);
    }
    
  }
}
參考:
1. http://www.rebol.com/docs/core23/rebolcore-18.html


Arduino: 光敏電阻

若亮度有一定變化就會讓LED亮
code:
int led = 2;
static int oldValue = 0;
// the setup routine runs once when you press reset:
void setup() {
  Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
  int value = analogRead(A0);
  int a = abs(value-oldValue);
  Serial.println(a);
  if(a > 50){
    digitalWrite(led, HIGH);
  }else{
    digitalWrite(led, LOW);
  }
  delay(50);
  oldValue = value;

}

Arduino: 7 segment display (七段顯示器)

若要顯示3,則讓abgcd,五支腳位通電
=> 把全部腳位接線,以2~10接上控制線,再以function形式呈現1234567890
=> 接好控制線後,不做任何控制(HIGH or LOW),預設是全亮,所以會顯示8

– 為什麼當我們 digitalWrite(a, HIGH) 時,a卻是暗掉的呢?
=>
七段顯示器有共陽or共陰兩種,

此例就是共陽
所以當我們想要哪支腳位不亮,就把那支腳位設為HIGH,使他與高電位同電位,就不會有電流通過,即斷路,自然不會亮。
example:

int dp = 2;
int c = 3;
int d = 4;
int e = 5;
int b = 6;
int a = 7;
int f = 8;
int g = 9;

// the setup routine runs once when you press reset:
void setup() {
  // initialize the digital pin as an output.
  pinMode(a, OUTPUT);
  pinMode(b, OUTPUT);
  pinMode(c, OUTPUT);
  pinMode(d, OUTPUT);
  pinMode(e, OUTPUT);
  pinMode(f, OUTPUT);
  pinMode(g, OUTPUT);
}

void show0(){
  digitalWrite(a, LOW);
  digitalWrite(b, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, HIGH);
}
void show1(){
  digitalWrite(a, HIGH);
  digitalWrite(b, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
}
void show2(){
  digitalWrite(a, LOW);
  digitalWrite(b, LOW);
  digitalWrite(c, HIGH);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, LOW);
}
void show3(){
  digitalWrite(a, LOW);
  digitalWrite(b, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, LOW);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, LOW);
}
void show4(){
  digitalWrite(a, HIGH);
  digitalWrite(b, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
}
void show5(){
  digitalWrite(a, LOW);
  digitalWrite(b, HIGH);
  digitalWrite(c, LOW);
  digitalWrite(d, LOW);
  digitalWrite(e, HIGH);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
}
void show6(){
  digitalWrite(a, LOW);
  digitalWrite(b, HIGH);
  digitalWrite(c, LOW);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
}
void show7(){
  digitalWrite(a, LOW);
  digitalWrite(b, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
}
void show8(){
  digitalWrite(a, LOW);
  digitalWrite(b, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
}
void show9(){
  digitalWrite(a, LOW);
  digitalWrite(b, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, LOW);
  digitalWrite(e, HIGH);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
}

void setNumber(int number){
  switch(number){
  case 0: show0(); break;
  case 1: show1(); break;
  case 2: show2(); break;
  case 3: show3(); break;
    case 4: show4(); break;
    case 5: show5(); break;
    case 6: show6(); break;
    case 7: show7(); break;
    case 8: show8(); break;
    case 9: show9(); break;
  default: Serial.println(“Error”);
  }
}

// the loop routine runs over and over again forever:
void loop() {
  setNumber(1);
  delay(1000);
  setNumber(2);
  delay(1000);
  setNumber(3);
  delay(1000);
  setNumber(4);
  delay(1000);
  setNumber(5);
  delay(1000);
  setNumber(6);
  delay(1000);
  setNumber(7);
  delay(1000);
  setNumber(8);
  delay(1000);
  setNumber(9);
  delay(1000);
}



————————-

兩位數七段顯示器
 

Arduino Buzzer

int buzz= 13;
int low[]= {0, 1908, 1701, 1515, 1433, 1276, 1136, 1012};
int middle[]= {0, }
int high[]= {0, }

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(buzz, OUTPUT);
}

void play(int tone, unsigned long howlong){
  unsigned long time= millis();
  
  while(millis() – time < howlong){
    digitalWrite(buzz, HIGH);
    delayMicroseconds(low[tone]);
    digitalWrite(buzz, LOW);
    delayMicroseconds(low[tone]);
  }
  delay(10);
};

void play_little_apple(){
  play(1, 250);
  play(1, 250);
  play(5, 250);
  play(5, 250);
  play(6, 250);
  play(6, 250);
  play(5, 250);


  play(4, 250);
  play(4, 250);
  play(3, 250);
  play(3, 250);
  play(2, 250);
  play(2, 250);
  play(1, 250);

  
}

void loop() {
  // put your main code here, to run repeatedly:
  play_little_apple(); 
}


excel 算音階對應到的頻率
=ROUND(1/E2/2*1000000,0)

Arduino practice: 小型打地鼠

1. 以arduino實做一個打地鼠小遊戲,Serial序列顯示分數(可用七段顯示器或LCD替換顯示分數方式),每3秒隨機一個LED發亮,玩家需要在三秒內按到該發亮LED對應的按鈕才算得分,成功得一分,失敗則扣一分。

2. 電路圖:

3. 程式碼:

// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led1 = 2;
int led2= 3;
int led3= 4;
int led4= 5;
int led5= 6;
int button1 = 8;
int button2 = 9;
int button3 = 10;
int button4 = 11;
int button5 = 12;
static int score=0;
int keyValue=0;

// the setup routine runs once when you press reset:
void setup() {
  Serial.begin(9600);
  // initialize the digital pin as an output.
  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
  pinMode(led3,OUTPUT);
  pinMode(led4 ,OUTPUT);
  pinMode(led5 ,OUTPUT);
  pinMode(button1, INPUT);
  pinMode(button2, INPUT);
  pinMode(button3, INPUT);
  pinMode(button4, INPUT);
  pinMode(button5, INPUT);
  initial();
}
void initial(){
 digitalWrite(led1,LOW); 
 digitalWrite(led2,LOW); 
 digitalWrite(led3,LOW); 
 digitalWrite(led4,LOW); 
 digitalWrite(led5,LOW); 
 Serial.println(“—–Welcome to Whack-a-mole Game!—–“);
}


// the loop routine runs over and over again forever:
void loop() {
  
  int a = random(2,7);      //隨機選取五個LED之一發亮
  digitalWrite(a, HIGH);  

  unsigned long time = millis();
  while( millis()-time < 3000){    // 三秒換一次LED發亮
    keyValue= digitalRead(a+6);
    if(keyValue){
    break;
    }
  //Serial.println(keyValue);
  delay(10);
  }
  
  if(keyValue){
      score++;
  }else{
      score–;
  }
  digitalWrite(a, LOW);
  Serial.print(“Score: “);
  Serial.println(score);
}


參考:
1. Autodesk circuit: (提供接線、coding模擬,功能完整,使用上方便,不會有爆炸危險XD)
https://circuits.io/circuits/

Network Security(一)

nslookup: 查DNS,也就是說可以把網址丟進去查IP  => 替代指令: dig
1. nslookup [OPTIONs] HOST [SERVER]-debug
-d2
-port=VALUE
-type=VALUE
A: IPv4
AAAA: IPv6
A+AAAA: 同時IPv4 + IPv6
NS: 查Name Server(當然HOST也要填入name server)
PTR: 查HOST對應到的domain name, 也就是IP轉出URL
CNAME: 查HOST的別名
ps. 某些URL會對應多組IP,所以建議先查出IP

dig: 查DNS
2. dig [@SERVER] {Q_OPTIONs} {D-OPTIONs} HOST

Learn about bash? shell? (二)

8. 環境變數?自訂變數?
– 自訂變數只能在當個process使用
ex. 我在終端機裡面設定
=> variable=”hello”
=> echo $variable
會跑出 hello
但是開了別的終端機時,echo $variable,就沒東西囉
ps. 即使在同一個終端機下,終端機的child process也讀取不到$variable
=> 利用export variable
能夠使同一個終端機下的child process也能使用$variable
但開啟別的終端機,還是無法使用$variable

有關環境變數問題集:
1. 到底有哪些變數是環境變數?
2. 自訂變數export後就是環境變數了嗎?
3. 如何讓自訂變數能夠永久存在?
4. PS1是環境變數嗎?

9.