ππ₯π₯ λΌμΌλ¦¬μ μ½λ λΆμ€λ¬κΈ° ππ₯π₯
μμ½ CI/CDλ μ ν리μΌμ΄μ
κ°λ° λ¨κ³λ₯Ό μλννμ¬ μ ν리μΌμ΄μ
μ λ³΄λ€ μ§§μ μ£ΌκΈ°λ‘ κ³ κ°μκ² μ 곡νλ λ°©λ²μ΄λ€. μλ μΈ κ°μ§ λ¨κ³λ‘ κ΅¬λΆ ν μ μλ€.
μ§μμ μΈ ν΅ν© Continuous Integration μ§μμ μΈ μλΉμ€ μ 곡 Continuous Delivery μ§μμ μΈ λ°°ν¬ Continuous Deployment [μΆμ²] https://www.redhat.com/ko/topics/devops/what-is-ci-cd π‘ “CD"λ μ§μμ μΈ μλΉμ€ μ 곡(Continuous Delivery) λ°/λλ μ§μμ μΈ λ°°ν¬(Continuous Deployment)λ₯Ό μλ―Ένλ©° μ΄ λ μ©μ΄λ μνΈ κ΅νμ μΌλ‘ μ¬μ©ν μ μλ€.
κ°λ
CI λ€μμ κ°λ°μκ° μμ± λ° μμ ν μ½λκ° μ§μμ μΌλ‘ ν΅ν©/ν
μ€νΈ(Continuous Integration) λλ κ²μ μλ―Ένλ€. CI μμ
μμλ λꡬ, νλ‘κ·Έλλ° μΈμ΄, νλ‘μ νΈ λ± κΈ°ν μ¬λ¬ μμΈμ λ°λΌ λ§μ΄ λ€λ₯΄μ§λ§ μΌλ°μ μΌλ‘λ λ€μκ³Ό κ°λ€.
riley published on included in Etc Web worker Web Worker λ λ©μΈ μ€λ λμ λΆλ¦¬λ λ³λμ λ°±κ·ΈλΌμ΄λ μ€λ λμμ μ€ν¬λ¦½νΈλ₯Ό μ€νν μ μλ κΈ°μ μ΄λ€. UI μ€λ λμλ λ³κ°μ μ€λ λλ₯Ό μ€νμμΌ μ¬μ©μ μΈν°νμ΄μ€λ₯Ό λ°©ν΄νμ§μκ³ μμ
μ μνν μ μλ€.
Web worker scope Web workerλ λ©μΈ μ€λ λμ λ³λμ worker μ€λ λλ₯Ό κ°λλ€. λ©μΈ μ€λ λμμ window κ°μ²΄λ GlobalScope μ΄μ§λ§ worker μ€λ λμμλ λ³λμ μ€μ½ν λ²μλ₯Ό κ°λλ€. Worker μ’
λ₯μ λ°λ₯Έ Scope worker μ€λ λλ λ©μΈ μ€λ λ window κ°μ²΄μ μ‘μΈμ€ν μ μλ κΆνμ΄ μκΈ° λλ¬Έμ windowμ λ©μλλ DOMμ μ§μ μ μΌλ‘ μ μ΄ν μ μλ€.
νμ¬μμ Javascript μ© μλΉμ€ SDKλ₯Ό κ°λ°νλ©΄μ μ€μ νλ webpack5 μ€μ νμΌμ κΈ°λ‘νλ€. μ€λμ μ μ κΉ μ ν΄λ³΄μλκ² webpack2 λ²μ μ΄μλλ° μ΄λμ 5κΉμ§ λμλ€. μκ³ μ¬μ©νλκ² μλλ€λ³΄λ μ°λ©΄μ μ λ₯Ό λ¨Ήμλ€…π₯Ίπ₯Ίπ₯Ί
Webpack5 μ€μ νκΈ° (ESM μ¬μ©) νμ¬μμ κ°λ°ν SDKλ CJS(CommonJS)μμ ESM(ECMAScript Module) λͺ¨λ λ°©μμ μ¬μ©νμ¬ κ°λ°νλ€. ESM λͺ¨λ λ‘λ μ¬μ©νκΈ° μν΄ package.jsonμ μλ μ€μ μ μΆκ°νλ€.
package.json
1 "type": "module" μλ κΈμμλ CJSκ° κΈ°λ³Έκ°μ΄κΈ° λλ¬Έμ λΌμ΄λΈλ¬λ¦¬μ κ²½μ° CJSλ‘ κ°λ°νλ κ²μ μΆμ²νκ³ μλ€.
Node Modules at War: Why CommonJS and ES Modules Canβt Get Along μ€μΉ λΌμ΄λΈλ¬λ¦¬ 1 npm install --save-dev webpack webpack-cli webpack-merge webpack-stream webpack-merge μΉν© μ€μ μ νλλ‘ λ³ν©ν΄μ£Όλ λΌμ΄λΈλ¬λ¦¬.
Tuckerμ Go μΈμ΄ νλ‘κ·Έλλ° μ±
λ΄μ©μ μ 리νμμ΅λλ€.
1. μΈν°νμ΄μ€ μ μ μΈν°νμ΄μ€ μ μΈ μΈν°νμ΄μ€ μ μΈμ typeμ μ΄ λ€ μΈν°νμ΄μ€ λͺ
μ μ°κ³ interface ν€μλλ₯Ό μ΄λ€. κ·Έλ° λ€ {} λΈλ‘ μμ μΈν°νμ΄μ€μ ν¬ν¨λ λ©μλ μ§ν©μ μ¨μ€λ€. 1 2 3 4 type DuckInterface interface { Fly() Walk(distance int) int } μ μμ¬ν λ©μλλ λ°λμ λ©μλλͺ
μ΄ μμ΄μΌνλ€. 맀κ°λ³μμ λ°νμ΄ λ€λ₯΄λλΌλ μ΄λ¦μ΄ κ°μ λ©μλλ μμ μ μλ€. μΈν°νμ΄μ€μμλ λ©μλ ꡬνμ ν¬ν¨νμ§ μλλ€. μΈν°νμ΄μ€ μ μΈ μμ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 package main import "fmt" type Stringer interface { String() string } type Student struct { Name string Age int } func (s Student) String() string { return fmt.
Tuckerμ Go μΈμ΄ νλ‘κ·Έλλ° μ±
λ΄μ©μ μ 리νμμ΅λλ€.
string ꡬ쑰 string νμ
μ Go μΈμ΄μμ μ 곡νλ λ΄μ₯ νμ
μΌλ‘ κ·Έ λ΄λΆκ΅¬νμ κ°μΆμ΄μ Έ μλ€. νμ§λ§ reflect ν¨ν€μ§ μμ StringHeader ꡬ쑰체λ₯Ό ν΅ν΄ λ΄λΆκ΅¬μ‘°λ₯Ό μΏλ³Ό μ μλ€. 1 2 3 4 5 6 7 8 9 10 // StringHeader is the runtime representation of a string. // It cannot be used safely or portably and its representation may // change in a later release. // Moreover, the Data field is not sufficient to guarantee the data // it references will not be garbage collected, so programs must keep // a separate, correctly typed pointer to the underlying data.
μ.. μλ²½νκ² μ΄ν΄νμ§λ λͺ»νλ€ πππ
μ€ν λ©λͺ¨λ¦¬μ ν λ©λͺ¨λ¦¬ λλΆλΆμ νλ‘κ·Έλλ° μΈμ΄λ λ©λͺ¨λ¦¬λ₯Ό ν λΉν λ μ€ν λ©λͺ¨λ¦¬ μμ λλ ν λ©λͺ¨λ¦¬ μμμ μ¬μ©νλ€. ν¨μ λ΄λΆμμλ§ μ¬μ©λλ κ°μ μ€ν λ©λͺ¨λ¦¬μ ν λΉλλ€. ν¨μ μΈλΆλ‘ 곡κ°λλ λ©λͺ¨λ¦¬ 곡κ°μ ν λ©λͺ¨λ¦¬ μμμ ν λΉλλ€. C/C++ μΈμ΄μμλ malloc() ν¨μλ₯Ό μ§μ νΈμΆν΄μ ν λ©λͺ¨λ¦¬ 곡κ°μ ν λΉνλ€. μλ°μ κ²½μ° ν΄λμ€ νμ
μ νμ, κΈ°λ³Έ νμ
μ μ€νμ ν λΉνλ€. Go μΈμ΄λ μ΄μ€μΌμ΄ν λΆμ(escape analysis) μ ν΄μ μ΄λ λ©λͺ¨λ¦¬μ ν λΉν μ§ κ²°μ νλ€. μ΄μ€μΌμ΄ν λΆμ(escape analysis) GC μ»΄νμΌλ¬λ ν¨μμ ν¨ν€μ§λ₯Ό λμ΄ μ μμ μΌλ‘ νμΆ κ²μ¬λ₯Ό μννλ€.