Brent's Hexo

A place for inside peace

用途

  • 可以看成資料、檔案的摘要(message digest)。但又不會透漏原始的資訊

  • 檢視資料的完整性(integrity)
    資料前後有無變動、修改


架構為

1
2
stateDiagram-v2
信息M --> H(m)=雜湊值HashValue :Hash Function

給定任意長度的資料可以產出固定長度的文字(通常為256或512 bit)
而產出的文字又稱雜湊值(hash value 或 digest)


hash function 特點

  • 計算快
    不需要花太多的計算成本。
    hash value 的長度是由演算法所決定,
    不論原始資料的大小,都會產生固定長度的hash value
  • 避免碰撞(Collision resistance)
    不可發生存在兩個不同內容卻產生同個hash value 的狀況
  • 單向性
    無法由hash value 反推出原始的資料
    hash value 不會揭露任何原始資料的訊息。
    攻擊者無法藉由hash value 字面上的意思得到任何關於原始資訊的訊息

安全性(Security)

分成兩點

  • Collision Resistance (抗碰撞性)

    找到M1,M2 符合 H(M1)=H(M2)

  • Preimage Resistance (抗原像性)
    可分成 Preimage resistance 和 second preimage resistance
    Preimage resistance 指的是

    給定 h= H(M1),很難找到M1

Second preimage resistance 指的是

給定 M1 ,很難找到 另外一個M2 ≠ M1 ,可以符合H(M1)=H(M2)

恩…這聽起來很像前面所講的抗碰撞性


常見的演算法

  • MD5
  • SHA1
  • SHA2
  • SHA3
  • BLAKE2

目前MD5和SHA1都已被發現有缺陷。非必要就別用了。
雖然有些軟體的驗證還是會提供MD5值供辨識


參考

Hashing Algorithms and Security - Computerphile

RFC 6234

What is Dexel ?

What is Voxel(體素)?

Dexel

壓縮的體素(voxel)模型。 dexel 模型透過一到三組群的射線與物體的交點來表示一個物體。
優點是只需要儲存交點的資訊,可以大大的減少儲存空間,並且布林運算是dexel 射線間的線性運算,速度快精度高。

What is the difference between dexel-based method and conventional one?

Is there any limit when applying this method ?

不同的製程參數會導致不同的掃出體積( sweep volume) ,如果是一維的特徵則是指沉積高度與寬度。
其中沉積寬高,會因為製程的參數,如果是WAAM 會受電流A 與 移動速度 V影響;如果是LP-DED ,則會受到供粉速率mf (mass of powder feed rate )與移動速度V,雷射功率 P 影響。
在幾何外型模擬中,除了 製程參數 外,還需要考慮的還有 刀具路徑 的影響。(在這篇文獻中並沒有相關的探討)

What is Dexel-based simulation ?

Dexel-based 比較適合固定每層高的製程,例如: SLM 。相較起來用於DED 製程的模擬文獻比較少。
Tri-dexel-based simulation 常用於切削加工模擬。

Untitled

材料的資訊 可以儲存成,(X,Y,Z)
每個X,Y 沿著 DEXEL 射線掃略,Z 可以看成是 INDEX NUMBER 。 如果這個區域沒有材料,則設成EVEN;反之,則設成ODD 。
因此,對於增材來說就是改變Z的位元(Parity of the number)

製程參數對於熔覆特徵的資訊如何取得

進行製程的實驗。設定實驗材質中,單道(single track)不同電流與移動速度,並利用輪廓量測儀器,取得沉積的特徵尺寸,藉由這些實驗資料建立經驗數值,來得到不同製程參數下的沉積特徵尺寸。

Function (A , V) = [寬度、高度] $\rightarrow$ 建立virtual tool的尺寸


閱讀資料

葉片幾何外觀幾個重要的部位稱呼

  • Leading Edge (LE)
  • Trailing Edge(TE)
  • Suction Side (SE)
  • Pressure Side (PS)
  • chord
  • 利用7個圓弧定義葉片輪廓 - seven arcs method

    利用7個相切的圓弧定義出葉片的剖面形狀

  • NACA - National Advisory Committtee for Aeronautics airfoils
    利用數學公式定義camber line上葉片輪廓的厚度的一套系統方法
    標示上NACA 後面會有四碼數字代表剖面幾何的重要參數
    因此,資訊處理上,就可以根據這樣的編號系統來做分類與搜尋

註: Camber line

設計airfoil時的一條假想線。通過Leading edge 和 trailing edge ,把airfoil 分成上下兩半部
定義翼型的曲率,翼弦(chord)為中線,而camber 大小定義了在沿著弦移動過程,翼型特徵偏離弦的距離大小或說是厚度。

當翼型是完全對稱的時候,camber 也就是0 。

閱讀


Segmentation and Constrained Fitting Algorithm(SCFA)

相關文獻


Constraints based nonrigid registration method

Robust Profile Reconstruction algorithm

Library

參考文獻

ML

流程

  • 匯入需要的module ,檔案
1
2
3
import pandas as pd 
file_path = '../input/data/melb_data.csv'
home_data = pd.read_csv(file_path)
  • 選定要分析的 response y 和 features X

    1
    2
    3
    y= home_data.prices
    melb_features = ['Rooms', 'Bathroom', 'Landsize', 'Lattitude', 'Longtitude']
    X = home_data[melb_features]
  • 有些還會需要將原有資料做split。
    將資料分成training和verify data (通常為 80% : 20%)

  • 建立所需的模型
    看是要利用哪一種迴歸模型(目前有看到的Random forest, desicion tree regressor)

1
2
3
4
graph LR
A[Estimator的主要兩個方法] --> B[fit]
A --> C[Transform]

1
2
3
4
import sklearn.tree import DescisionTreeRegressor

melb_model = DecisionTreeRegressor(random_state= 1)
melb_model.fit(X,y)
  • 利用模型進行預測

    1
    2
    3
    # compare the origin data and prediction data 
    print(X.head())
    print(melb_model.predict(X.head()))
  • 模型驗證(model validation)

    模型所預測的結果與實際發生的結果相近程度

但要用什麼方法來做驗證? metrics 矩陣
MAE (Mean absolute Error)
一般而言誤差指的是

error = actual - predicted
$$
MAE = 1/n \sum |y_{true} - y_{pred}|
$$

而在MAE 矩陣中, 我們將這個誤差轉換成一個正數
用來理解模型預測的品質
而這個數值可以理解成模型所預測的結果偏離實際的距離

  • Validate data

    在模型建立的過程中, 就先把某些部份的資料排除, 作為後續用來驗證模型預測品質的資料組

1
2
3
4
5
6
7
8
9
10
from sklearn.model_selection import train_test_split

train_x,val_X,train_y,val_Y = train_test_split(X,y,random_state=1)
#定義模型
mymodel = DecisionTreeRegressor()
mymodel.fit(train_x,train_y)

# 把 validate data 丟給模型, 做預測
val_predicted = mymodel.predict(val_X)
print(mean_absolute_err(val_Y,val_predicted))
  • underfitting vs. overfitting
    • overfitting
      對模型現有的資料,可以擬合的狀態非常好, 但對於新的資料,卻並非總是如此

    • underfitting

對於決策樹的深度,不夠深, 造成不論是驗證的資料或是訓練資料都無法產生足夠好品質的預測結果

用來量化資訊的不確定性

Entropy : a qunatity from nformation theory to measure uncertainty
越多不確定性,越需要更多問題來做決策樹

  • Mutual Information(MI)
    MI 越小,表示兩個特徵的相關性越低。若為0,表示這兩個數值相互獨立。correlation 只能偵測線性的關係,mutual Information 可以偵測到任何形式的相關性。

Feature scaling

  1. Normalization : 把數值縮到[0,1]這個範圍
    $
    x_{norm}^{(i)} = \frac{x^{(i)} - x_{min}}{x_{max}-x_{min}}
    $

  2. Standardization : 把數值的平均值移到0,標準差移到1
    $
    x_{std}^{(i)} = \frac{x^{(i)} - \mu_x}{\sigma_x}
    $

特點

  • KEY-VALUE 型式

  • 可用來表示儲存資料

  • 易讀

  • 表示方式

    • 映射 mapping

      以 冒號(:) 分開,KEY 和 VALUE ,冒號後方還需添加一個空格

    • 清單 sequence
    • 資料型態 scalar
      可以混和這三種型式,來組合成所需要的資料結構。

sequence + scalar

1
2
3
- Mark
- John
- Amy

sequence + mapping

1
2
3
4
5
6
7
8
- 
name: Tom
height: 180
weight: 80
-
name: Jimmy
height: 175
weight: 70

sequence + sequence

1
2
3
- [name, age, gender]
- [Tom, 25, M]
- [Amy, 28, F]
- YAML 會自動判斷該VALUE 是哪種型態,但若想要特別指定解讀的資料型態,可以加上一些符號作為指定。
1
2
3
4
5
6
A: 123  #整數
B: !!str 123 #利用!! ,指定型式為字串
C: Hello World #字串
D: "John" #利用雙引號,指定為字串
E: 123.5 # 符點數
F: !!float 123.5 #符點數
  • 註解
    使用# 作為單行註解

Python module

  • 安裝
    1
    pip install pyyaml

教學資源

參考

Maragoni effect

現象說明

The Marangoni effect is the mass transfer along an interface between two fluids due to the surface tension gradient (which fluid from areas with low surface tension is transferred to areas with higher surface tension).
由於溫度梯度的關係,造成區域表面張力的差異,而形成一個流動傳導的驅力。
DED 中的溫度梯度,則是由於移動的熱源與冷卻速率造成的。

說明

表面張力的溫度梯度若為正,表示表面張力隨著溫度越高越大。

表面張力的溫度梯度若為負,表示表面張力隨著溫度越高越小。

對於大部分鋼材,表面張力的溫度係數,受材料中硫含量的影響。
如果硫含量小於30 ppm ,dγ / dT < 0,溶池易向外擴散,形成較低穿透深度的溶池形狀。
如果硫含量大於60 ppm ,dγ / dT > 0,溶池易向內集中,形成較深的穿透深度的溶池。
但也容易使得空氣不易逸散,而形成孔隙(porosity)

參考

原連結
https://schollz.com/software/croc/

一個由go 寫成,跨平台的檔案傳輸軟體

傳輸的方式很簡單,只要兩台電腦都安裝有croc

傳輸方 $ croc send FileName

程式會產出一組文字 [code phrase]

接收方 $ croc [code phrase]

這樣就可以囉

傳送方也可以自訂 code phrase

1
$ croc send --code [code phrase] FileName

安裝:

Croc Github
- Linux
$ curl https://getcroc.schollz.com | bash

- Windows
    利用Powershell 開始
    $ scoop install croc

詳細的說明可以參考創作者的連結。

有興趣的可以試試看

作為測試HEXO MathJax的第一篇

做為測試紀錄

表格

1
2
3
4
5
6
7
8
9
10
$$
\begin{array}
\hline
& \color{red}A & B & C \\\\
\hline
June\ & 10 & 3 & 1 \\\\
July\ & 6 & 15 & 2 \\\\
Aug \ & 8 & 7 & 5
\end{array}
$$

顯示
$$
\begin{array}
\hline
& \color{red}A & B & C \\
\hline
June\ & 10 & 3 & 1 \\
July\ & 6 & 15 & 2 \\
Aug \ & 8 & 7 & 5
\end{array}
$$


highlight

1
2
3
4
5
6
$$
\bbox[border:2px solid red]
{e^x=\lim_{n\to\infty} \left(1+\frac{x}{n} \right)^n
\qquad (1)
}
$$

顯示
$$
\bbox[border:2px solid red]
{e^x=\lim_{n\to\infty} \left(1+\frac{x}{n} \right)^n
\qquad (1)
}
$$

MATH

1
2
3
4
5
6
7
8
9
10
11
12
13
\begin{equation} 
\begin{aligned}
\beta(p,q) &= \frac{\Gamma(p)\Gamma(q)}{\Gamma(p+q)} \\\\
&= \frac{(p-1)!(q-1)}{(p+q-1)!}
\end{aligned}
\end{equation}

\begin{equation}
\begin{aligned}
\ddot{\underline{r}} &= \frac{d^{2}\underline{r}}{dt^{2}} \\\\ &= 0
\end{aligned}
\end{equation}

顯示

發現:

1
當使用\begin{equation}\end{equation},可以不用使用 $$'content'$$這樣的格式

\begin{equation} \begin{aligned}
\beta(p,q) &= \frac{\Gamma(p)\Gamma(q)}{\Gamma(p+q)} \\
&= \frac{(p-1)!(q-1)}{(p+q-1)!}
\end{aligned}
\end{equation}

\begin{equation} \begin{aligned} \ddot{\underline{r}} &= \frac{d^{2}\underline{r}}{dt^{2}} \\ &= 0
\end{aligned} \end{equation}

矩陣

$$ A_1 =
\begin{pmatrix}
1&0&0 \\
0&1&0 \\
0&0&1
\end{pmatrix}
$$
$$ A_2 =
\begin{bmatrix}
0&0&1 \\
0&1&0 \\
1&0&0
\end{bmatrix}
$$
$$ A_3 =
\begin{matrix}
1&1&1 \\
1&1&1 \\
1&1&1
\end{matrix}
$$

圖片(failed)

$$
\usepackage{epic}
\begin{picture}
\unitlength=1mm
\put(0,0){\vector(0,1){60}}
\put(0,0){\vector(1,0){80}}
\put(0,0){\circle*{1}}
\put(-5,60){$$y$$}
\put(80,-5){$$x$$}
\end{picture}
$$

參考

大家來學Latex

去年工作需求自學了點資料庫的東西
使用的介面是免費的db browser
算是蠻好入手
介面也算友善的軟體工具
以下是先前做過的一些基本的測試指令

test code

以下為測試的資料表格

1
2
3
4
5
6
# data 
SerialNo,Description,Price,Qty
book,30,25,28
pen,10,30,8
notebook,15,20,15
crayon,20,10,20

計算總額,並且新增一個新的欄位,照總額排序

  • 如果只想顯示某幾個欄位,就打出欄位名稱,
    全部都顯示 , 直接打上 * 就可以囉

  • 計算式,自己的習慣是加上括號 AS 新欄位的名稱

  • 如果要遞增,後面加上 ORDER BY “欄位名稱” ASC
    遞減,則是 ORDER BY “欄位名稱” DESC

1
2
3
SELECT SerialNo,Description,(Price*Qty) AS Total 
FROM test_table_A
ORDER BY TOTAL

當滿足某個條件,執行 A ,不滿足就執行 B

1
2
3
4
5
6
7
8
9
10
SELECT Description,Price,Qty, 
CASE WHEN (QTY > 22)
THEN
(Price -2)
ELSE
Price
END AS N_Price

FROM test_table

列出兩張表不同的地方

假設有A、B兩張 TABLE
想要列出兩張表差異的部分
集合的運用也是相當基本而重要的
後續還有表格的JOIN
都是當初搞了好久的東西

1
2
3
4
5
6
7
SELECT * FROM (SELCT * FROM A 
EXCEPT
SELECT * FROM B)
UNION ALL
SELECT * FROM (SELECT * FROM B
EXCEPT
SELECT * FROM A)

前面的部分取出(A-B),
後面的部分取出(B-A)
最後把兩段結果,取聯集

取兩張表的交集

1
2
3
SELECT * FROM A
INTERSECT
SELECT * FROM B

takeout

一開始學的時候,都很想回去excel
心想說這東西不是excel 就可以做了嗎?
常常花了很多時間找指令
在資料量大的時候
用SQLite其實讀取和抓資料快很多啊
後續還可以結合Python 的 pandas 還有Regular expression
會更靈活

自己目前在這個領域還是很粗淺
多學多看看囉
其他的就後續慢慢補上

Ref

Recently I start to learn something about the markdown, html, css and javascript. Surprisingly, I found more and more interesting things behind this.

List something I would review followinglly.

Tools for creating slides

Tools for music

Javascript Resources

0%