2016年9月29日 星期四

螺釘安卡

鐵釘
用於一般木料之接合,通常使用於室內。

鋼釘
接和水泥牆面或木料與水泥材料,硬度高,不易鏽蝕

銅釘
用於木質飾品之接合固定,價格較低

木螺絲
用於木料或搭配壁虎使用於水泥材料

鐵板牙螺絲
用於固定鐵板材之物件,搭配華司使用可增加鎖固能力

鑽尾螺絲
又稱自攻螺絲,末端鑽尾設計可較輕鬆鑽穿軟金屬材料

安卡壁虎
埋入水泥中搭配螺釘使用,使其膨脹於恐壁,增加牢固

膨脹螺絲
埋入水泥材質中,做螺釘上固定,一般為較大載重使用

華司
搭配羅斯使用,增加鎖固面積,加強鎖固能力





2016年9月27日 星期二

android app 開發安裝

觀念:

1. 安裝JDK
2. 安裝Eclipse或者Android Studio
3. Eclipse or Android Studio 都要安裝Android SDK, Android Studio內建,Eclipse要去抓Android Studio 的 Android SDK

4. 安裝設定模擬器
5. 也可以直接run在手機

2016年9月20日 星期二

路由器

兩片網路卡
最簡單的路由器是一部電腦插兩片網路卡,可以銜接兩個不同網址的網路,隔離兩個網路內部流量與對外流量,不致互相干擾。目前個人電腦 CPU 處理能力快,網路卡也快,IO 處理能力強,1500 byte 的流量大概每秒可以處理 3~40 Mbits,64 byte 處理能力大致會照比例下降。用個人電腦作 router 有些缺點,第一速度不夠快,表現不穩,路由通信協定不足,個人電腦有硬碟,使用一般通用作業系統,故障率比較高,ethernet 之外其它種類界面支援不足。速路由器 CPU 用的不多,大多在介面上直接處理以加快速度。


轉遞網路封包
既然主機想要將資料傳送到不同的網域時得透過路由器的幫忙,所以啦,路由器的主要功能就是:『轉遞網路封包』囉!也就是說,路由器會分析來源端封包的 IP 表頭,在表頭內找出要送達的目標 IP 後,透過路由器本身的路由表 (routing table) 來將這個封包向下一個目標 (next hop) 傳送。這就是路由器的功能。 那麼路由器的功能可以如何達成呢?目前有兩種方法可以達成:

硬體功能:例如 Cisco, TP-Link, D-Link 等公司都有生產硬體路由器, 這些路由器內有嵌入式的作業系統,可以負責不同網域間的封包轉譯與轉遞等功能;

軟體功能:例如 Linux 這個作業系統的核心就有提供封包轉遞的能力。
高階的路由器可以連結不同的硬體設備,並且可以轉譯很多不同的封包格式,通常...價格也不便宜啊! 在這個章節裡面,我們並沒有要探討這麼高階的咚咚,僅討論在乙太網路裡頭最簡單的路由器功能: 連接兩個不同的網域。嘿嘿!這個功能 Linux 個人電腦就可以達成了!那怎麼達成呢?

NAT
瞭解了路由器之後,接下來你可能需要瞭解到什麼是 NAT (Network Address Translation, 網路位址轉譯) 伺服器, NAT 是啥?其實 IP 分享器就是最簡單的 NAT 伺服器啦!嘿嘿,瞭解了嗎?沒錯, NAT 可以達成 IP 分享的功能, 而 NAT 本身就是一個路由器,只是 NAT 比路由器多了一個『 IP 轉換』的功能。怎麼說呢?

一般來說,路由器會有兩個網路介面,透過路由器本身的 IP 轉遞功能讓兩個網域可以互相溝通網路封包。 那如果兩個介面一邊是公共 IP (public IP) 但一邊是私有 IP (private IP) 呢? 由於私有 IP 不能直接與公共 IP 溝通其路由資訊,此時就得要額外的『 IP 轉譯』功能了;

Linux 的 NAT 伺服器可以透過修改封包的 IP 表頭資料之來源或目標 IP ,讓來自私有 IP 的封包可以轉成 NAT 伺服器的公共 IP ,就可以連上 Internet !


路由器與交換機的差別
路由器與交換機的差別,路由器是屬於OSI第三層的產品,交換機是OSI第二層的產品。第二層的產品功能在於,將網路上各個電腦的MAC位址記在MAC位 址表中,當區域網路中的電腦要經過交換機去交換傳遞資料時,就查詢交換機上的MAC位址表中的資訊,將封包傳送給指定的電腦,而不會像第一層的產品(如集 線器)每台在網路中的電腦都發送。而路由器除了有交換機的功能外,更擁有路由表作為傳送封包時的依據,在有多種選擇的路徑中選擇最佳的路徑。此外,並可以 連接兩個以上不同網段的網路,而交換機只能連接兩個。並具有IP分享的功能,如:區分哪些封包是要傳送至WAN。路由表儲存了去往某一網路的最佳路徑,該 路徑的「路由度量值」以及下一跳路由器。參考條目路由獲得這個過程的詳細描述。

L2,L3 ,switch , router & routing table

Layer2:

1. Layer2 用OSI 第二層 MAC address 來交換資訊

2.  當Switch收到一個封包並要轉送時,會先去檢查封包中MAC位址是什麼,並且根據這個位址去查詢CAM表,這個表裡面有MAC位址及出口埠的對應。(CAM: Content Addressable Memory, 用來動態紀錄MAC地址。)

這個CAM表是經由學習得來的。怎麼學習呢?當Switch收到一個封包時,便會去查詢CAM表,如果沒有找到相關的資訊,為了找到這個封包目標MAC位址的出口埠時,Switch會以廣播的方式,將封包往全部的埠都丟出去,當擁有該目標MAC位址的Switch收到這個封包時,會回傳訊息給原來的Switch,而原來的Switch就會以收到這個訊息的埠,當成該目的MAC位址的出口埠,於是CAM表就學到了這筆記錄。 學習起來後,那麼下次就不用廣播而直接傳送。

而這筆記錄,在Switch重新開機、斷電或是一段時間內沒有收到該目的MAC位址的封包時,記錄就會被清掉,等到下次再收到同樣的封包時,由於沒有紀錄,就會再次廣播以重新習得該筆記錄。

廣播封包是很占頻寬的,為了防止這種情形發生,必須要有一種協調的機制,那個東西就是STP(Spanning-Tree Protocol),它會協調同一個區域網路中所有的Switch,並以Root Switch為起點,建立起一個樹狀結構的路徑,而樹狀結構的終點就是一個結束點,這個終點會Block起來,簡單來說,就是門被關起來不准通過。如此,當廣播封包到達這個點時就會直接停止,於是廣播風暴得以避免,而這個終點就是某臺Switch與其他Switch連接的埠。

3. 廣播風暴只會發生在一同個LAN裡面發生

4. 而Router及Switch的功能是不一樣,Router主司路由,也就是該封包要怎麼被轉送到另一個子網路,而Switch是用於區域網路的交換,在區域網路裡,設備之間是用MAC去溝通而不是IP,另外,Switch的交換速度是很快的,路由器是相對較慢的。


Layer3:

如果再把路由表的功能加入 L2 Switch,那麼它就會變成 L3 Switch,可以為 VLAN 建立適當的路由表,讓效能更加提昇。L3 的交換器又稱為 IP Switch 或 Switch Router,透過專屬的 ASIC 晶片來解析第三層表頭(如 IP Header)以達到傳送目的,因此通常可以提高到每秒百萬封包的效能以及數十個高速乙太網路連接埠之容量。L3 Switch 的路由表可以對 VLAN 做更有效的管制,讓廣播封包不會無限制的傳送。







2016年9月19日 星期一

Recursion Algorithm

1.
一般來說,有兩種方式可以撰寫具有重覆執行 (Repetitive)特性的演算法:
Iteration (迴圈)
Recursion (遞迴)

Def: algorithm 中含有self-calling (自我呼叫)敘述存在。




2.遞迴的種類:
直接遞迴 (Direct Recursion):
函式或程序直接呼叫本身時稱之。

void function(void)
    {
     function(void);
     }

間接遞迴 (Indirect Recursion):
函式或程序先呼叫另外的函式,再從另外函式呼叫原來的函式稱之。

void function(void)
    {
     function1()
         void function1(void)
            {
              function();
             }
     }



3.遞迴演算法則的設計:
找出問題的終止條件 (即:base case).
找出問題本身的遞迴關係 (即:general case).
 Procedure 遞迴副程式名(參數)
{
  if (base case)
     return(結果); ……//達到終止條件時結束遞迴,需要時回傳結果
  else
     general case; ……//利用general case執行遞迴呼叫,需要時加上return
}


























2016年9月18日 星期日

條件運算子(Conditional Expressions)

變數 = ( 條件運算式 ) ? 變數值1 : 變數值2;

在指定敘述的「=」號右邊是條件運算式,其功能如同if/else條件,使用「?」符號代替if,「:」符號代替else,如果條件成立,就將變數指定成變數值1,否則就是變數值2。

hour = (hour >= 12) ? hour-12 : hour;

上述程式碼使用條件敘述運算子指定變數hour的值,如果條件為true(即不等於0),hour變數值為hour-12,false(等於0)就是hour。


Chrome 不再支援 NPAPI (Java Applet 所需的技術)

Chrome 不再支援 NPAPI (Java Applet 所需的技術)
Web 瀏覽器的 Java 外掛程式有賴於跨平台外掛程式架構 NPAPI,過去十多年來所有主要 Web 瀏覽器都一直支援這個架構。Google 的 Chrome 版本 45 (訂於 2015 年 9 月發行) 捨棄了對 NPAPI 的支援,受影響的外掛程式包括 Silverlight、Java、Facebook Video 以及其他以 NPAPI 為基礎的外掛程式。

Java 應用程式是透過 Web 瀏覽器,以 Web Start 應用程式 (啟動之後便不需要使用瀏覽器來進行互動) 或是 Java Applet (可以使用瀏覽器進行互動) 的方式來提供。此變更不會影響 Web Start 應用程式,只會影響 Applet。
如果您無法使用 Chrome 來存取 Java 應用程式,Oracle 建議您改用 Internet Explorer (Windows) 或 Safari (Mac OS X)。

2016年9月17日 星期六

perl quotes

Alternative Quotes: qq, q, qw, qx

print qq/Hello\n/;                  # same as: print "Hello\n";
print q/He owes $5.00/;       #  same as: print 'He owes $5.00', "\n";
@states=qw( E T A L );       # same as ("E", "T", "A","L")
$today = qx(date);               # same as $today = 'date'; 



While we usually think of quotes as literal values,
in Perl they function as operators,
providing various kinds of interpolating and pattern matching capabilities.
Perl provides customary quote characters for these behaviors,
but also provides a way for you to choose your quote character for any of them.
In the following table, a "{}" represents any pair of delimiters you choose.

Customary  Generic        Meaning        Interpolates
                 ''       q{}          Literal             no
               ""      qq{}          Literal             yes
               ``      qx{}          Command             yes*
                        qw{}         Word list            no
                //       m{}       Pattern match          yes*
                         qr{}          Pattern             yes*
                         s{}{}      Substitution          yes*
                         tr{}{}    Transliteration         no (but see below)
              <<EOF                 here-doc            yes*

    * unless the delimiter is ''.



perl operators and precedence


operators
+
-
*
/

precedence
4+2*4
(4+2)*4

notice:  ++ different location different result
print $num1++ . "\n";
result: 10

print $num1;
11

print ++$num2 . "\n";
11



$letter  = "a";
$letter++;
print  "$letter\n";





perl conditionals

loop,foreach

if elsif else

unless

perl arrays

array

push

pop

shift

merge

reverse

sort

qw



perl variables

$a = 1;

($a , $b) = (1,2);

$c = $a + $b ;

print "$a\n";
print "$b\n";
result: 1 2

print "$c\n";
result: 3

notice:
print "$a + $b \n";
result: 1 + 2

$str = "Hello Wrold!\n";
print "$str\n";
result: Hello World!


my $name = 'Foo';
print 'Hello $name, how are you?\n';
Single quoted result:  Hello $name, how are you?\n

print "Hello $name, how are you?\n";
Double quoted result:  Hello Foo, how are you?



notice:
$name = 'Foo'; the same as $name = "Foo";
\  在許多程式語言解釋為跳脫字元。
\n 在許多程式語言解釋為換行字元。
quoted裡的元件基本上會當作字串處理,包含實際字串和便數字串。所以 print "$string"可以,但是如果是print "$strint++\n"就不行。要使用print $sting++."\n"


perl basics

1. 由shebang (#!) 開始

#!/usr/bin/perl

類 Unix 作業系統的程式載入器會分析 Shebang 後的內容,將這些內容作為直譯器指令,並呼叫該指令,並將載有 Shebang 的檔案路徑作為該直譯器的參數。


 2. 以browser呼叫執行傳回最少要加上

print "Content-Type: text/html; charset=\"UTF-8\"\n\n";


3. exit;


example code:

#!/usr/bin/perl

print "Content-Type: text/html; charset=\"UTF-8\"\n\n";

print "Hello World!\n";

exit;

result:

Hello World !

2016年9月16日 星期五

mysql to mariaDB(before version 10)

1. 安裝 MariaDB。你的MySQL所有工具,連接程式都可以如常運作。你也不需要匯出和匯入資料。

格式與檔案名稱都是相同的。

2. 所有客戶端的API、協議和結構都是相同的;

3. 所有文件件​​名、二進製文件、路徑、端口、套接字等……全都是一樣的;

4. 所有的MySQL與其他語言(PHP、Perl、Python、Java、.NET、MyODBC、Rub、MySQL C..)

的連接文件無需任何改動,在MariaDB就可工作;


MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能輕鬆成為MySQL的代替品。

在存儲引擎方面,10.0.9版起使用XtraDB(名稱代號為Aria)來代替MySQL的InnoDB。


版本方面,MariaDB直到5.5版本,均依照MySQL的版本。

因此,使用MariaDB5.5的人會從MySQL 5.5中了解到MariaDB的所有功能。

從2012年11月12日起發布的10.0.0版開始,不再依照MySQL的版號。

10.0.x版以5.5版為基礎,加上移植自MySQL 5.6版的功能和自行開發的新功能。


相對於最新的MySQL5.6,MariaDB在性能、功能、管理、NoSQL擴展方面包含了更豐富的特性。

比如微秒的支持、線程池、子查詢優化、組提交、進度報告等。

MariaDB 權限管理

概念:
1. 使用指令的權限,使用者對所有資料庫使用指令的權限。
grant select on *.* to 'user'@'host';

資料指令權限有select,insert,update,delete,file
結構指令權限create,alter,index,drop,create temporary tables,show view,create routine,alter routine,excute,create view,event,trigger
系統管理指令權限 grant,super,process,reload,shut down,show database,lock tables,create user

2. 對資料庫的權限,可以專為單一資料庫開放所有權限,但其他資料庫只有select的權限。
grant all privileges on database.* to 'user'@'host';


建立使用者:
create user 'user'@'host' identified by 'password';
顯示使用者:
select user,host from mysql.user;
顯示使用者權限:
show grants for 'user@'host';

修改使用者密碼:
set password for 'user'@'host' = password('password');

刪除使用者:
delete from mysql.user where user='user' and host='host';










sysV vs systemd

開機過程
Runlevel(sysV):  開機時選擇runlevel(在inittab設定). 不同的runlevel會執行不同的rc.d裏的service的link. 實際的啟動script在init.d裡面

Systemd:  一堆 unit 項目集合變成一個 group 稱為 target. target 可想成是runlevel.disabled的service 在/usr/lib/systemd/system/裡,enabled的service link 到 /etc/systemd/system 

管理
sysV: init, chkconfig, service.........
systemd: systemctl(stand for: system ConTorL)

其他比較由於 systemd 可以自訂服務相依性的檢查,因此如果 B 服務是架構在 A 服務上面啟動的,那當你在沒有啟動 A 服務的情況下僅手動啟動 B 服務時, systemd 會自動幫你啟動 A 服務。

常用指令
(systemctl 命令 服務.service)
命令: enable(開機自動執行),disable,status,start,restart,stop
ex: systemctl status httpd.service

列出有哪些 target(runlevel): systemctl list-units --type target
列出系統target(runlevel): systemctl get-default 
切換 current target: systemctl isolate multi-user.target (runlevel 3) 
切換 current target: systemctl isolate graphical.target (runlevel 5) 
切換開機target: systemctl set-default multi-user.target (runlevel 3) 
切換開機target: systemctl set-default graphical.target (runlevel 5)




2016年9月6日 星期二

AR, VR, MR

1. 顯示器,沒有把自己本身當參數加進去處理
   例如:電影,電視

2. AR(Augmented Reality) 擴增實境
   把自己本身當參數處理你看到的影像.
   例如算出你處於不同位置所看到的影像不同,像是Pokemon Go
  
3. VR(Virtual Reality) 虛擬實境
   把自己本身當參數處理你看到的影像.加上盡量給你感官。
   Oculus Rift
   HTC Vive
   Sony PS VR
  
   更簡單型:Google Cardboard, 裝入手機即可
  
  
4. MR(Mixed Reality)混合實境
   把其他人事物也當作參數處理看到的影像。
   例如虛擬會議。
   windows holograpic
  
技術:
加強影像處理卡
全景影像,3D
感官設備

同軸電纜(Coaxial Cable)

一般同軸電纜品名記號說明

3C-2W
5C-2V
5C-FB


第一項之數字:表示外部導體之約計外徑(mm)
第二項之文字:"D"表示特性阻抗 50 歐姆
       "C"表示特性阻抗 75 歐姆
第三項之文字:"2"表示PE充實絕緣型。
       "F"表示發泡PE絕緣型。
第四項之文字:"V"表示外部導體為一層編織後施以PVC外被覆。
       "W"表示外部導體為二層編織後施以PVC外被覆。
       "B"表示外部導體為兩面鋁箔麥拉帶縱包再加上鍍錫軟銅線編織


第四台線路 到目前為止,他們的標準配線一定是5C cable ,而且是國外的
台灣做高頻線的KNOW HOW ,規模 還是比國外差很多

2016年9月5日 星期一

otg(usb on the go)

conception:
computer---device(mobile) through usb cable

mobile become server
mobile---device(usb drive)

otg add a line to tell mobile is device or server


傳統 usb port 出pin 有
1. vbus (5v)
2. GND
3. D+
4. D-

otg 只有 micro接口, total出5pin
1. vbus
2. GND
3. D+
4. D-
5. ID

線材裡面都是跑4條線 只差在接頭,
OTG 線一端有一根PIN多接了個GND,
讓機器分辨誰是主機、誰是Device,故單以外觀是無法分辨的。

2016年9月4日 星期日

半導體技術(Semiconductor Technology)

晶圓,晶圓代工:
(台積電,GlobalFoundries,聯電,三星電子,中芯國際,力晶、世界先進、上海華虹宏力、韓國東部(Dangbu)、以色列Tower Jazz。

晶片線路製造技術,IC 設計公司:
(聯發科, 高通, Intel, 安謀(ARM))

日本晶圓切割機大廠:
Disco

封裝製造技術,數個晶粒封裝在同一顆IC內,稱為多重晶片構裝(Multi Chip Package)

IC 設計廠十分依賴工程師的智慧,這裡所述的每個步驟都有其專門的知識,皆可獨立成多門專業的課程,像是撰寫硬體描述語言就不單純的只需要熟悉程式語言,還需要瞭解邏輯電路是如何運作、如何將所需的演算法轉換成程式、合成軟體是如何將程式轉換成邏輯閘等問題。

P2P

P2P
定義:
對等網路(peer-to-peer),一種網路技術和網路拓撲結構。

應用:
1. 直接的:2電腦對接

2. 防火牆後的p2p:
    Client 連結到p2p server ,另一個client也連結到同一個p2p server .目的是讓所有的防火墻後的設備可以連結。
  例子1 : 一些家裏網路攝影機不用複雜的設定,可以透過網路攝影機公司的server讓遠端連線。
  例子2 : p2p 下載
  例子2 : NAS, quickconnect

缺點 p2p server 可以擷取資料。
例如Dropbox幫我們同步各裝置的資料,其實它也有一份我們的資料。