본문 바로가기

분류 전체보기

(386)
<알고리즘> 퀵정렬은 병합정렬보다 항상 좋은 선택인가 1. 소개 최근에 필자는 하스켈이라는 언어를 공부하고 있다. 함수형 프로그래밍에 대한 깊은 이해를 위해서 겉핥기를 하고 있는데, 최근 정렬과 관련하여 궁금한 점이 생겨서 이렇게 정리하게 되었다. 참고로 이 포스팅에서 하스켈에 대해 깊이 알 필요는 없으며 함수형 언어라고만 생각해도 이해하는 데에는 지장이 없다. Data.List는 리스트 정렬을 위한 sort 함수를 제공한다. 이 함수는 퀵정렬을 쓰지 않는다. 대신 병합 정렬이라는 알고리즘의 효율적인 구현을 사용한다. - WikibooksHaskell - 지금까지 공부하기로는 대부분의 언어에서 정렬 함수는 퀵정렬(Quick Sort)을 활용하고 있다고 배웠다. 심지어 같은 시간복잡도를 가지는 병합정렬에 비해 일반적으로 더 빠르며, 면접 준비에서도 그렇게 대..
<월간회고> 09월 | Nothing Better 들어가며 9월 회고라고 쓰긴 했지만 사실상 3분기 회고가 될 것 같다. 7월과 8월 모두 일이 너무 바빠서 회고를 쓸 시간이 없었다. 조금 힘들긴 했지만 그만큼 성장도 많이할 수 있었다. 인프런에서 주최한 컨퍼런스인 인프콘에 참여하여 첫 오프라인 컨퍼런스를 맛보기도 했고, 목적조직이었던 기존 파트에서 기능조직으로 신설된 파트로 옮기며 FE로써 새로운 도전도 해볼 수 있었다. 특히 이 기간동안 새로운 사람을 굉장히 많이 만났다. 파트에 새로운 분들을 맞이하며 스스로를 돌아보기도 했고, 다른 FE 조직과 간담회도 하면서 다른 FE는 무슨일을 하는지 알 수 있었다. 위처럼 여러가지 경험과 기회가 생겼던 것에 대해 주변 사람들에게 감사하고, 스스로가 행복하다고 느끼고 있다. 이번 달에는 1. 블로그 지난 6월의..
<UI> Material You (Material Design 3) 1. 소개 2021년 구글IO에서 안드로이드12와 함께 새로운 머터리얼 디자인으로 Material You를 발표했다. Meterial You는 머터리얼 디자인의 3번째 버전으로 작년 하반기부터 안드로이드 SDK에도 지속적으로 업데이트되고 있다. 그렇다면 이 Material Design 3 을 알아보기 전에 버전1과 2에 대해 잠깐 짚어보자. 머터리얼 디자인은 구글에서 모든 플랫폼에 일관성 있는 디자인을 제공하기 위해 고안한 것이다. 2014년 구글IO에서 공개되었고, 이 때는 위의 왼쪽처럼 각져있는 것이 특징이다. 처음 위 디자인이 나온 이후 여러 피드백을 반영해 현재 우리가 흔히 쓰고 있는 M2가 등장한다. 사실상 M1과 베이스는 동일하므로 버전명을 붙여서 얘기하지는 않는다. Make personal ..
<TS> 타입가드 * 소개 - 타입가드는 타입스크립트 컴파일러가 더 명확하게 타입을 예측할 수 있도록 코드를 작성하는 방법 중 하나이다. 공식문서를 찾아보니 Narrowing(좁히기)와 동의어로 쓰이는 것 같아서 정리해보려한다. - 이번 포스팅에서 다루는 타입가드의 종류는 7가지 이다. * typeof Type Guards * Truthiness Narrowing * Equality Narrowing * The in operator Narrowing * instanceof Narrowing * Using type predicates * Discriminated Unions * typeof Type Guards - 가장 기본적으로 알고 있는 타입가드방식이다. data는 number 또는 string을 받을 수 있으나 typ..
<TS> 효과적으로 타입 명시하기 1. 소개 필자가 타입스크립트를 사용하던 초반엔 선언하는 모든 곳에 당연히 타입을 명시해야 한다고 생각했다. 하지만 타입스크립트를 계속 쓰다보니 자연스럽게 타입추론이 생각보다 잘 일어난다는 것을 깨달았고, 단순한 선언 구문에서는 사용하지 않았다. 타입 스크립트의 많은 타입 구문은 사실 불필요합니다. 이펙티브 타입스크립트 p.108 그럼에도 불구하고 타입을 언제 명시하는 것이 좋을지에 대해서는 크게 생각해본 적이 없었다. 그러나 최근 이펙티브 타입스크립트를 읽으며 타입추론에 대해 좀 더 자세하게 접하게 되었고, 그 중 어떤 상황에서 타입명시를 쓰면 좋을지에 대해 읽고 정리해보았다. 타입이 추론될 수 있음에도 여전히 타입을 명시하고 싶은 몇 가지 상황이 있습니다. 이펙티브 타입스크립트 p.112 2. 사용 ..
<네트워킹> 인프런 심야 FE 후기 0. 행사 정보 - 일자 : 2022년 06월 17일 - 장소 : 인프랩 오피스 (오프라인) - 내용 : FE 오프라인 네트워킹 행사 1. 소개 얼마 전 강의를 들으려 인프런에 들어갔다가 놀라운 이벤트를 발견했다. 바로 오프라인 네트워킹 행사를 한다는 것이다. 현재 블로그 자기소개에도 써두었듯 필자는 공유하며 성장하는 개발문화를 지향하고, 그 문화가 좋아서 개발자가 되었다고 해도 과언이 아니다. 특히 오프라인 세션에서 다양한 사람들과 교류하며 공유하고 시야를 넓혀가는 것을 꿈꿨는데 코로나라는 사태로 인해 쉽지 않았다. 그 와중에 위의 이벤트를 보자마자 너무 기쁘게 신청했다. 게다가 FE를 위한 네트워킹 데이라니 생각만해도 설랬다. 50명만 뽑는 행사였는데 인원이 많아 60명으로 늘렸고, 다행히 당첨되어 ..
<월간회고> 06월 | YESTERDAY 들어가며 이번 달도 업무로 매우 바빴다. 다양한 사람을 만나기도 했고, 동료들이 퇴사도 하면서 여러가지 생각이 많은 한 달 이었다. 그래도 10일 정도 본가에서 근무하며 심적인 여유를 갖기도 했다. 특히 이번 달에는 인프런 심야 FE라는 오프라인 행사에도 참여했었다. 이렇게 공유나 커뮤니티가 활발한 FE라는 직무에 속해있음이 스스로도 원하는 것을 하고 있고 좋은 곳에 속해있다는 느낌을 많이 받았다. 행사 후기는 아마 조만간 따로 쓸 것 같다. 이번 달도 저번 달 처럼 공부를 많이 하지는 못했다. 하지만 실망하지는 않았다. 스스로 발전하지 못하고 있는 것은 아닐까 고민을 했었는데, 우연히 본 문장에서 큰 감명을 받았다. 어제는 할 수 없었던 것을 오늘 할 수 있게 되었다면 성장한 것이다. 이런 느낌의 글이..
<TS> 유틸리티 타입으로 반복 줄이기 1. 반복 줄이기 - 타입스크립트를 사용하다보면 실제 런타임에 동작하지 않는 코드(타입 관련 코드)임에도 반복되는 작업들을 하는 경우가 생긴다. - 실제 런타임에 동작하는 코드에서는 다양한 방식으로 반복을 줄이기 위해 노력한다. 하지만 우리는 타입스크립트의 타입과 관련된 부분에서는 크게 신경쓰지 않거나 어떻게하면 좋을지 모르곤 한다. 이를 해결하기 위해 타입스크립트에서 어떻게 이러한 부분을 해결할 수 있을지 알아보자. * 확장 - 인터페이스의 확장은 반복을 제거하는 방법 중 하나이다. interface Person { firstName: string; lastName: string; } interface PersonWithBirthDate extends Person { birth: Date; } - 타입..
<Node> M1 Mac에서 Rosetta로 노드 패키지 설치하기 * 배경 - 최근 Cypress라는 프론트엔드에서의 E2E테스트 툴을 공부하면서 발생한 문제와 그 해결과정을 공유하려 한다. 사실 Cypress 공식 문서에 해결방법이 나와있긴 하지만 왜? 라는 의문이 생길 수 있고, 다른 패키지를 설치할 경우에도 충분히 발생할 수 있는 문제이다. - 필자는 MacBook M1 Air (맥북 M1 에어) 모델을 사용하고있으나 지금까지 OS 관련 문제를 겪어본 적은 없었다. 프론트엔드의 경우 M1과 관련된 특별한 호환 이슈는 들어본 적이 없기도 했고, 비교적 최근에 (2021) 맥북을 구매해서일 수도 있다. - 하지만 Cypress를 설치하고 실행했더니 다음과 같은 Cypress failed to start 에러가 발생하였다. - Platform이라는 텍스트를 봤을 때, ..
<월간회고> 05월 | 제자리 걸음 들어가며 월초에 연휴로 조금 쉬었던 것을 제외하면 매우 바빴던 한 달이었다. 업무상 월말에 꽤 일이 많았다. 안정적인 자리를 잡게 되면서 커리어적인 고민도 많이 했다. 맡은 일은 너무 재미있고 도전적인 것도 할 수 있는 너무 좋은 기회였다. 하지만 스스로가 지금까지를 돌아볼 시간도 부족했던 것 같고, 앞으로의 방향성을 깊게 고민해보지 않은 것 같다는 느낌을 받았다. 그와는 별개로 퇴근 후 공부가 소홀해진 것 같아 스스로에게 조금 실망하기도 했다. 이번 달에는 1. 업무 관련 공부 퇴근 후 FE관련 공부와 인프라쪽 공부를 꾸준히 하려고 했으나 생각만큼 잘 안됐다. 일이 바빴던 것도 있지만 개인적으로 조금 헤이해진 것은 아닐까 반성하고 있다. 지난 달, 앞으로 도입하고 싶었던 내용을 공유하고 싶다고 작성했었..