본문 바로가기

All11

[Design Patterns]Factory pattern, 객체를 만들어내는 Intro 이번에는 Factory pattern입니다. Factory pattern은 공장에서 상품을 찍어내는 것처럼 객체를 찍어내는 패턴입니다. Factory pattern은 factory Method와 abstract Factory, 두 가지로 나뉩니다. 공부하면서 비슷하지만 다른 두 형태를 구분하기가 까다로웠는데 stackoverflow의 답변 하나가 나름(?) 명쾌하게 풀어줍니다. The main difference between a "factory method" and an "abstract factory" is that the factory method is a method, and an abstract factory is an object. ‘factory method는 method이고, a.. 2022. 7. 4.
[Kotlin]List to Array with Type cast, 리스트를 원하는 타입의 배열로 Intro Kotlin에서 List를 Array로 바꾸는 방법이야 여러가지가 있겠지만 가장 간단한 것으로 toTypedArray가 있습니다. 대부분의 경우에 toTypedArray로 해결이 됩니다. 하지만 만약 List을 Array으로 Casting이 필요한 경우에는 해결이 되지 않습니다. 그럴땐 이렇게! Result val anyList: List = listOf(1, 2, 3) val wantArray: Array = anyList.map { it as Int }.toTypedArray() List의 map 메서드를 활용해서 각 요소를 원하는 Type으로 변경한 이후 toTypedArray 메서드를 사용하는 방법입니다. (혹시 다른 방법이 있다면 알려주세요!) 전체 소스 코드는 이곳에서 확인 가능하십.. 2022. 6. 2.
[Design Patterns]Observer pattern, 변화에 반응 Intro 오늘은 간단하게 Observer 패턴에 대해서 공부해봤습니다. Observer 패턴은 어떤 객체가 변했을 때 등록된(혹은 보고 있던) 관찰자(Observer)들에게 통지하는, Behavioral Pattern입니다. Kotlin에서는 Observer pattern을 두 가지의 형태로 구현할 수가 있습니다. 하나는 Standard, 그러니까 평범한 모습으로 구현이 가능하고, 하나는 Kotlin의 observable delagates를 활용한 방법입니다. Standard 먼저 Standard하게 구현한 모습입니다. Observer 관찰하고 있는 객체가 변했을 때 Observer의 update가 동작하게 될 겁니다. interface Observer { fun update() } Observable.. 2022. 5. 16.
[Vue]Want Reuse? Use Composables, 재사용에는 믹스인 대신 컴포저블 Intro 기존, 그러니까 Vue2에서는 코드를 재사용하기 위한 방법으로 Mixin(믹스인)을 활용했습니다. Vue3로 넘어오면서 Mixin을 대체하는 Composables이 생겼습니다. Vue3 공식 문서에서는 Mixin 대신 Composables를 사용하기를 추천하고 있습니다. 하지만 생각보다 Composables를 소개해주는 문서(혹은 글)가 한국어로 된 건 없더군요. 아직 Vue3는 한국에서 사용하시는 분들이 조금 적은 게 아닌가 싶네요. 어쨌든 공식 문서를 요약하는 글이겠지만 Composables에 대해서 주저리주저리 떠들어보겠습니다 Result // App.vue Mouse position is at: {{ x }}, {{ y }} ... // mouse.js import {onMounted,.. 2022. 5. 12.
[Vue]Pass Object as Router Params, 라우트 파라미터로 오브젝트 넘기기 Intro Vue에서는 다른 페이지로 이동하기 위해 Vue Router를 사용합니다. Router를 사용하다 보면 단순히 페이지만을 옮기는 게 아닌 데이터도 함께 옮기고 싶은 때가 있습니다. 그럴 때를 위해 query와 params를 Vue Router는 준비해 두었죠. 하지만 요게 요게 맘대로 안 될 때가 있습니다. 바로 Object 형식의 데이터를 옮기고 싶을 때 말이죠. Result // PUSH const router = useRouter() router.push({ name: 'xxx', params: { 'A': JSON.stringify({ stringify: 'JSON.stringfy', GOOD: 'So GOOD!!!' }) } }) // RECEIVE const route = useRo.. 2022. 4. 29.
[Javascript]Array Multi Column Sorting, 여러 조건으로 배열 정렬 Intro 오랜만에 작성하는 글은 Javascript의 Array Multi Column Sorting. 뭔가 있어 보이지만 여러 개의 조건으로 배열을 정렬하는 건 기본 메서드인 sort로 이미 가능합니다. 하지만 그 모습은! 조금 못 생겼으므로 나름대로 다듬어 봤습니다. Result const multiSorting = (data, columns) => { const comparer = (a, b) => { return compareMultiple(a, b, Object.entries(columns)) } const compareMultiple = (a, b, columnsEntries) => { let index = -1 const length = columnsEntries.length while (.. 2022. 4. 7.