又LAG隨性筆記
  • 關於我
  • 作品集
  • 生活隨筆
  • 與我聯絡
  • 隨手扎

隨手扎

April 20, 2019

實現Python裏面的classmethod和staticmethod

在Python裏面存在著兩個用於定義物件方法的內建函式(built-in function) – classmethod和staticmethod。其實我一開始在學的時候根本沒用過他們(´・ω・`),先不管他們常不常用,雖然應該就是常用所以才會被放進內建函式,不過因爲常見的特殊語法–修飾器,使得隨後定義的方法與實際作用變得不同,常讓初學的人摸不著頭緒。今天就來以實現說說這兩個函式。

預備知識

首先你要先有基本的Python概念。接著最好已經很瞭解 修飾器 的作用。如果不瞭解修飾器,強烈建議先閱讀函式修飾器。 雖然本文在最後也爲實現一個相似於修飾器的函式版本 – [wrap](#修飾器的作用與實現 – wrap) ,不過其又涉及到其他知識,並不建議直接閱讀。

Check List

  • 我瞭解最基本Python
  • 我知道Python裏面修飾器的作用

實現classmethod和staticmethod – MyClassmethod, MyStaticmethod

在實現之前,必須先瞭解classmethod和staticmethod有甚麼特性?在使用後會發生什麼事情?

一般而言,在定義物件方法時會給與def methodName(self, *args, **kargs),其中self表示物件實例本身。如果你瞭解 Lua 會發現是同樣的顯式引用發法,並且Lua中的語法糖instance:method(...)(相當於class.method(instance, ...)),幾乎就對應於Python裏面的Instance.method(*args, **kargs)(相當於Class.method(Instance, *args, **kargs))。

相較之下,C++、Java裏面的this,或是VB裏面的Me,就是隱式用法。我自己是比較喜歡顯式引用,比較明確。

April 13, 2019

嘗試localhost的HTTPS伺服器

前言

因為一些原因,在區域網路開發環境的時後,還是需要HTTPS伺服器來做一些測試(最近瀏覽器實在太嚴格了Orz,不是HTTPS有些東西就無法做…)。 爲此,我主要參考了如何在五分鐘內建立SSL憑證和SSL是什麼鬼(方便起見,我改過標題,還請自己連回去看看原文)。前者甚至在GitHub建立了腳本可直接拿來使用,不過我決定還是親自嘗試一下。
除了上述兩篇以外,其實還有找到許多不錯的文章,還自徑往下看看參考資料。不過這兩篇,前者的CA與伺服器的私鑰、憑證是正式分開的, 此次我只想要建立一個自我簽署的憑證,能在區域網路使用就好。而後一篇足夠簡單,但應付我所需要的情況還需要做些調整。

快開始吧

使用環境:

  • Linux
  • OpenSSL
  • Node.js
    • express.js

建立伺服器私鑰(同時也是CA私鑰)

openssl genrsa -des3 -out server.key 4096

這邊我改成4096。雖然是區域網路使用,我還是想要高一點安全性。

April 1, 2019

JShell? 程式語言越來越像Lisp

JShell

JShell是在JAVA 9之後引入進來。 我是在翻JAVA 12(OpenJDK)工具的時後看到的,雖然好像長期支援(LTS)版本是JAVA 11… 算了,反正目前系統裝有JAVA 8(1.8)和手動下載的JAVA 12。

每個版本之前是有差異的。同樣都是編譯成class檔案,但在不同JRE下可能無法執行。上學期就有學弟妹來問,結果A編譯的B不能執行,只能由B來編譯分享給A。(向後兼容)

TK 之後再來說些這幾天看了幾個開源專案後對於這版本的事情的想法。

現在說回來 JShell。

  • ««
  • «
  • 1
  • 2
  • 3
  •  … 
  • 32
  • 33
  • »
  • »»
© 又LAG隨性筆記 2023