POABOB

小小工程師的筆記分享

0%

前言

藉由 基礎篇 所提供的簡單範例,我們可以發現如果我們把每個路由都寫成一個閉包(Closure)的形式,很容易導致程式碼不易閱讀,並且把所有資料都寫在一個檔案非常難以去釐清 RESTful API 服務的類型相關的依賴類

所以本篇將要介紹如何將 SLIM 4 構建成一個屬於 ADR 模式的一個框架,構建之前也會介紹傳統 MVC 框架的架構,之後再來講解如何使用 JWT 如何用作登入後產生 Token 並且驗證其身份資訊

閱讀全文 »

前言

上學期學校的實作課之中,介紹了 Nodejs 的事件驅動、異步I/O特點,同時也練習使用 Express 和 React 充當前後端的框架。

於是乎我在想,PHP 當紅的框架是 Laravel,當初使用 Laravel 5.6 的時候,只知道它是一個完善的 PHP MVC 框架,可是如果單純使用 RESTful Api 的形式去使用,又顯得過於肥大,再加上 Laravel 學習曲線偏高,導致我對於這個框架避而不談。

就在我查找其他替代框架時(Symphony、CakePHP、CodeIgniter 4、Slim)發現了 Slim,Slim 這個框架非常特別,它不像主流框架一開始就跟你說它有什麼什麼功能,而是你需要什麼功能,可以按需擴充成自己想要的狀態。

更何況它符合PSR-7(Request、Response)PSR-11(Denpendency Injection)PSR-15(Middleware)的規範,要找適用的函式庫都有一定的形式規範,不用擔心遇到寫法雜亂的 library。

閱讀全文 »

一、前言

這幾天連假友人遠距解題的期間,我也順便看了他所解的題目並便用TS拿來解。該解題方式使用Codility產生題目,這次我們是限時2小時,總共4題。

閱讀全文 »

一、Hexo deploy報錯

最近當我開始把以前使用過的Hexo拿來重新架設Blog,突然發現再deploy的情況產生了Error…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ C:\Users\poabob\Desktop\my-blog> npm run deploy

> hexo-site@0.0.0 deploy C:\Users\poabob\Desktop\my-blog
> hexo deploy

(node:10324) Warning: Accessing non-existent property 'lineno' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
(node:10324) Warning: Accessing non-existent property 'column' of module exports inside circular dependency
(node:10324) Warning: Accessing non-existent property 'filename' of module exports inside circular dependency
(node:10324) Warning: Accessing non-existent property 'lineno' of module exports inside circular dependency
(node:10324) Warning: Accessing non-existent property 'column' of module exports inside circular dependency
(node:10324) Warning: Accessing non-existent property 'filename' of module exports inside circular dependency
INFO Deploying: git
INFO Clearing .deploy_git folder...
INFO Copying files from public folder...
FATAL Something's wrong. Maybe you can find the solution here: https://hexo.io/docs/troubleshooting.html
TypeError [ERR_INVALID_ARG_TYPE]: The "mode" argument must be integer. Received an instance of Object
at copyFile (fs.js:2042:10)
at tryCatcher (C:\Users\poabob\Desktop\my-blog\node_modules\bluebird\js\release\util.js:16:23)
at ret (eval at makeNodePromisifiedEval (C:\Users\poabob\Desktop\my-blog\node_modules\bluebird\js\release\promisify.js:184:12), <anonymous>:13:39)
at C:\Users\poabob\Desktop\my-blog\node_modules\hexo-fs\lib\fs.js:144:39
閱讀全文 »

一、前言

由於上一篇實作URL Shortener雖然在效能上有不錯的效果,可是當我們使用自增id順序的方式導致ShortId容易被眼尖的資安人員(or駭客)發現是有跡可循的,一來觀感不太好,二來容易預測導致被惡意使用。
那麼我們要如何在不改變現有的架構下,完美的解決這個問題呢?
於是我想到,如果在資料表中,id已經被生成好,但是欄位值是空的狀態下,是不是就可以搜尋特定範圍的空值,以更新的方式來代替插入?

閱讀全文 »

一、前言

碩一下這學期相對課業沒那麼重,剛剛好友人陳同學告訴我有一個Dcard後端實習面試,完整詳讀之後發現其實題目不難且待遇豐厚,引起我對於實習面試的熱誠。

學習了後端也有一段時間了,時常因為沒有做筆記,需要翻找己以前的程式碼片段(還好都沒有刪掉),許多相關知識也因此停留在記憶的角落而堆積灰塵,若我不去主動複習,也許他就真的被我遺忘了吧?

因此讓我知道建立學習紀錄的重要性,所以我才倉促架設這個部落格,一部分想記錄我實作這項作業的方式,另外一部分是想分享自己的知識讓需要的人可以了解。

由於篇幅關係,後續還會有兩篇文章,主要是關於這篇基礎功能的優化和加強,那就請大家來閱讀敝人對於作業的解題。

  • Repo:https://github.com/POABOB/Dcard-intern-project
閱讀全文 »