전체 글 7

Ubuntu - 1. 패키지 업데이트와 사용자 관리

우분투를 공부하면서 단축된 단어들이 너무 많아 잘 기억이 나지 않거나 햇갈렸던 적이 잦았습니다.익숙해지면 왜 이런 단어들을 사용했는지 이해가 가지만, 처음 사용하는 입장에서 cat, rm, ls 등등의 명령어나 옵션들이 어떤거지? 라는 의문을 갖게 합니다. 하지만 이는 unix의 철학이기도 한데요, unix 네이밍 철학의 원칙은 간결함, 일관성, 조합 가능성을 핵심으로 하기 때문에 사실 핵심적인 몇 가지의 단축된 단어들만 알고 있으면 이를 조합해 다른 네이밍 또한 어느정도 유추가 가능합니다. 따라서 이번에는 우분투의 기본 명령어를 정리하며, 단어들의 유래에 대해 알아보려고 합니다.패키지 업데이트sudo apt update이 명령어는 시스템의 패키지 목록을 업데이트 하라는 뜻입니다. 여기서 sudo, ..

linux 2025.04.14

프로그래머스 > 아이템 줍기 (JavaScript)

문제: https://school.programmers.co.kr/learn/courses/30/lessons/87694?language=javascript문제의 요구사항지형은 각 변이 x축, y축과 평행한 직사각형이 겹쳐진 형태로 표현하며, 캐릭터는 이 다각형의 둘레(굵은 선)를 따라서 이동합니다.지형을 나타내는 직사각형이 담긴 2차원 배열 rectangle, 초기 캐릭터의 위치 characterX, characterY, 아이템의 위치 itemX, itemY가 solution 함수의 매개변수로 주어질 때, 캐릭터가 아이템을 줍기 위해 이동해야 하는 가장 짧은 거리를 return 하도록 solution 함수를 완성해주세요.문제의 제한사항rectangle의 세로(행) 길이는 1 이상 4 이하입니다.rect..

알고리즘 2025.01.12

[책 리뷰] 쏙쏙 함수형 코딩

자바스크립트는 함수형과 객체지향을 모두 지원하는 멀티 패러다임 언어입니다. 과연 나는 평상시에 프론트엔드 개발을 진행하며 함수형 프로그래밍 방식으로 잘 개발하고 있었을까? 라는 의문이 들어에릭 노먼드의 '쏙쏙 들어오는 함수형 코딩'을 읽게 되었습니다. 이 책은 평상시에 단순히 효율화를 위해 사용하던 자바스크립트의 map, reduce 등의 기본적인 배열 메서드에 대해 왜 이런 방식으로 개발해야 하는지 다시 한 번 생각하게 해주었고, 코드를 어떻게 하면 조금 더 클린 코드로 작성할 수 있을지에 대해 어느 정도 방향성을 알려준 책이였습니다.액션, 계산, 데이터책에서 반복적으로 강조하는 개념이 있는데, 액션, 계산, 데이터의 분리입니다. 액션은 부수 효과가 있는 실행 시험과 횟수에 의존하는 함수이고,계산은 순..

책 리뷰 2024.12.29

zustand 라이브러리 코드 분석하기

Zustand는 작고 빠르며 확장 가능한 React 프로젝트에서 사용하는 상태 관리 라이브러리입니다. 이전에 redux, recoil 등등의 상태 관리 라이브러리를 써왔지만,redux의 경우 보일러 플레이트가 많고 복잡하다는 단점이 있고,recoil은 더 이상 라이브러리의 업데이트가 이뤄지지 않는다는 단점이 있었습니다. 이러한 상황 속에서 zustand 라이브러리는 간결하고 경령화된 라이브러리로 점차 인기를 얻고 있습니다.  zustand가 인기가 많아지고 있는 비결에는 다음과 같은 특징들이 있습니다.간결한 api: 복잡성 없이 간단하게 사용 가능경량화: 가벼운 라이브러리 크기유연성: middleware를 통한 확장 가능성능: 최소한의 상태 변경과 렌더링으로 동작내부적으로 어떻게 동작하는지 알면, 코드적..

프론트엔드 2024.12.02

카카오 싱크와 퍼머 링크 도입기

필자의 회사에서 카카오 싱크와 퍼머링크를 도입하면서 겪었던 시행착오와 이를 어떻게 개선했는지 적어보자 한다. 이 글을 읽으면, 필자가 카카오 싱크를 어떻게 도입하게 되었으며,유저 플로우를 어떻게 개선해 나갔는지 확인할 수 있을 것이라고 생각한다. 카카오 싱크란,간편가입으로 내 회원을 쉽고 빠르게 모으고,카카오톡에서의 정교한 타겟 마케팅 도구까지 제공하는 카카오의 새로운 비즈니스 솔루션이다. 필자의 회사에서 '카카오 싱크'를 도입하기로 결정한 이유도 바로 '자동 로그인'과 '간편가입' 기능을 활용하기 위함이였다.카카오 싱크를 사용한 메인 동작 플로우는 다음과 같다.카카오 싱크 설계하기카카오 싱크를 사용해 로그인을 진행하고, 사용자 정보를 받아오기 위해서는 서버와 클라이언트에서 특정 처리가 필요하다.참고: ..

프론트엔드 2024.05.05

1년차 프론트엔드 개발자가 설계하는 방법

연차가 쌓일수록 개발하는 시간보다 설계하는 시간이 길다고 한다. 이번에는 설계가 얼마나 중요한지 모르고 있었던 필자가,설계에 대해 여러 시행착오를 겪고 어째서 설계가 중요하다고 느꼈는지 적어보고자 한다. 본문에 들어가기 전 미리 스포를 하자면(?) 필자가 직접 느낀 설계의 장점은 '편하다' 라는 점이였다. 필자는 설계할 때, 크게 5가지를 중점적으로 정리한다.동작 플로우는 어떻게 되는가?UI를 어떻게 그릴 것인가?로직적으로 중요한 부분은 어떤 것인가?구현은 어떻게 할 것인가?api는 프론트에서 필요한 필드들을 모두 갖추고 있는가?동작 플로우는 어떻게 되는가?아무리 열심히 개발을 했다고 정작 동작하는 방식과 플로우가 기획과 다르다면,QA기간에 급하게 수정을 하거나 심하면 다시 설계를 하고 개발을 해야 하는..

프론트엔드 2024.02.27

보안을 책임지는 SSL. 동작 원리로 자세하게 파헤치기

SSL이 어떻게 동작하는지를 알고싶었을 뿐인데, 어느덧 네트워크와 SSL에 관련된 수많은 웹페이지를 펼치고 있는 나를 보며... SSL의 배경과 전반적인 동작 원리를 정리하고자 다짐하였다. SSL이 뭐죠? 전송 계층 보안(영어: Transport Layer Security, TLS, 과거 명칭: 보안 소켓 레이어/Secure Sockets Layer, SSL)[1]는 컴퓨터 네트워크에 통신 보안을 제공하기 위해 설계된 암호 규약이다. 이 규약은 인터넷 같이 TCP/IP 네트워크를 사용하는 통신에 적용되며, 통신 과정에서 전송계층 종단간 보안과 데이터 무결성을 확보해준다. 네? 이게 무슨 말이죠..? 필자는 처음에 해당 정의를 읽고 조용히 나가기 버튼을 눌렀다. (후...) 그런고로 가장 기본적인 배경부터..

네트워크 2022.06.20