Jason lee

typescript

Typescript Modules

Modules * 可以用 as 來改名,例如export { Product, PrintProduct as PrintProductName } Export * 由 export 裡面的物件來決定哪些物件要被開放出去 products.ts "use strict"; class Product{ name: string } function PrintProduct(source: Product){ console.log(source.name); } export { Product, PrintProduct as PrintProductName } Import * 如果要把全部的東西從 products modules 引用進來,我們可以用 import * as Products from "./products" 來執行,但呼叫 modules 裡面的物件時,前面必須加上
typescript

Typescript classes

Class * Typescript 每一個 class 裡面只能有一個 constructor * 預設的 Access Modifier 是 public * 存取 class 內部 properties 都必須用 this 關鍵字 class Student { fullname : string; constructor(public firstname: string, public lastname: string) { this.fullname = firstname + " " + lastname; } } let jason = new Student("Jason", "Lee"); Properties & Method class Student { fullname : string; // properties get fullName(): string { return
1 min read
typescript

tsconfig.json 是什麼?

Typescript 從 1.5的時候新增了一個東西叫 tsconfig.json,它是一個單純的 JSON file,主要作用是提供預設的編譯 (compile) 選項,同時這個檔案會放在專案的根目錄下 (root folder) tsconfig.json 範例 { "compileOnSave": true, "compilerOptions": { "module": "commonjs", "sourceMap": false, "outDir": "js", "target": "es6", "watch": true } } notes: 1. 如果tsconfig.json沒有提供"files"屬性,編譯器會默認包含當前目錄及子目錄下的所有TypeScript文件(*.ts 或 *.tsx)。 如果提供了"files"屬性值,只有指定的文件會被編譯。 Reference: tsconfig.js :https://github
1 min read
typescript

當升級 Typescript 到 1.8.7, 不過 tsc 的版本還是 1.5.3

有一陣子沒有接觸到 Typescript 了,想說來複習一下就把 Typescript 升級到 1.8, 然後遇到一些靈異現象,例如說 tsc --target ES6 不支援(只支援 ES3 or ES5) 也不支援 --watch 等參數,用 tsc --version查了一下,我的 tsc 版本竟然只有 1.5.3,可是我明明升級到 1.8.7 啊,難道我見鬼了?? 後來跟 google 大神請教了一下,原因是之前裝的 Typescript for visual studio 所造成的,可以用 where tsc 查出 tsc
1 min read
dns

Sender Policy Framework

今天分享的是一個 Email 詐欺的手法,駭客其實會想盡辦法透過很多方式騙你點擊一些惡意的連結,以達到資料偷取或攻擊的目的,一個常見的方式就是寄電子郵件給你,你一會說嘿嘿嘿我才沒有那麼笨,我才不會上當的,我會去看寄件人的 Email address, 如果不是我認識的人我才不會去開信,可是問題其實就是在這邊,駭客會假冒你朋友的Email address然後寄信給你啊 !! 假設有個壞人用 hello@jasonlee.in 當寄件人寄出一封邀請函給某個妹子,想要電話,我們有沒有什麼方式可以阻止這種冒用網路的行為? 其實是有的,我們需要在我們的DNS 裡面加入 SPF 的紀錄 例如: v=spf1 include:_spf.google.com include:mail.zendesk.com -all include 的部分是指可以從那些 ip address 送出郵件,而最後面的 -all 是指出如果有任何的Email 不是從這些 ip address
2 min read
golang

Golang 的 package 管理

當把全部的 golang 項目放到同一個 golang workspace 都會遇到一個問題,那就是 3rd party package 版本控制的問題。例如:我有一個 golang workspace 他的入徑是 c:/go-projects/src 然後下面有兩個項目分別較 project-one 和 project-two 而這兩個項目都有用到網路上的某一個包 (假設叫 gozip), 當 project-one 要升級 gozip 套件的時候,另外一個項目 project-two 也被需要強迫被升級,因為它們的引用gozip 套件來源是同一個地方,所以有些人比較喜歡用 golang workspace per project 的方式來進行開發,讓彼此golang的專案不會受到影響。 在 Golang 1.5 的時候引入了一個 GO15VENDOREXPERIMENT 環境變數,
2 min read
golang

Golang 如何做到 substring 和 substr

substring 和 substr 其實都是字串擷取的 function, 但這兩個的差異是什麼呢? substring 是設定 "開始" 和 "結束" (字串內容並不包含最後一個字)的位子,並擷取字串,而 substr 是設定 "開始位子" 和 "要擷取的長度",下面我們用一個實際的範例來展示 假設我們有一個字串 "Hello, World" 我們想要取的 lo, W 的字段,我們可以怎麼做 1. 用 substring 的方式,設定想要擷取字串的 "開始" 和 "結束" 位址,我們可以這樣寫 (結束位子一定要大於開始位子) package main import "fmt" func main() { str := "Hello, World" result
1 min read
nginx

SSL 安全性評分

很多人都會用 Nginx 來架設網站,也會用安裝 SSL 憑證來加強安全性,國外有一個網站 https://ssllabs.com 可以幫你檢查你的 SSL 憑證是否設定完善,安全性如何,並給你一個安全等級,讓你了解到你的 SSL 網站是否安全 這邊分享幾個常見的問題,修改掉這些問題,分數多少都會提高喔,下面提供 nginx 修改方式 1. This server is vulnerable to the POODLE attack. If possible, disable SSL 3 to mitigate. Grade capped to C. SSL 2.0 or 3.0
1 min read