목록2024/03 (28)
hmk run dev
UX는 사용자 경험(User Experience)다. 사용자 경험을 중시하는 서비스는 반드시 성공하기 마련이다.(물론 다양한 복합적인 요소도 필요, 반박 시 그 말도 맞긴 함) 토스, 카카오 뱅크, 업비트 등등 수많은 서비스들이 증명했다. 토스나 카뱅같은 서비스가 아닌 다른 1 금융권 서비스에서 해외입출국금지 메뉴를 이용하려면 어떻게 해야 할까? 경험상, 굉장히 번거로운 몇 개의 과정을 거쳐 신청해야 한다. 심지어 은행앱을 설치했음에도 별도의 앱을 설치해야 하는 경우도 있다. 나는 이런 꼭 필요하고 자주 이용하는 메뉴임에도 이런 UX를 만나면 피가 거꾸로 솟는다.... 반면에, 카뱅을 이용하면 간단하게 토글 버튼하나로 해당 서비스를 이용할 수 있다. 기가 막히다! 좋은 UX란 무엇일까? 좋은 사용자 경험..
주로 FE 개발을 하고 있지만, 실무에서는 종종 리눅스 명령어를 사용해야 하는 경우가 많습니다. 리눅스 명령어는 각종 테스트를 수행하거나 커널에 작업을 요청하거나 필요한 정보를 확인하는 데 유용합니다. 또한, CLI(Command Line Interface)를 통해 작업하는 것이 GUI(Graphical User Interface)보다 업무 효율을 높일 수 있습니다. 마우스를 사용하는 것보다 키보드로 명령어를 입력하는 것이 시간을 절약할 수 있습니다. (시간 -> 자원 -> 돈) 배워야하는 이유는 간략하게 나열해 볼 수 있겠네요 시스템 관리: 리눅스는 다양한 서버 및 임베디드 시스템에서 널리 사용되며, 이러한 시스템을 관리하기 위해 명령줄 인터페이스를 사용하는 것이 효율적입니다. 기본 명령어를 알고 사용..
코딩은 개발자들이 해야 하는 많은 일 중 하나 개발자의 필요조건일 뿐, 비즈니스 목적을 달성하기 위한 도구일 뿐 그 외에 어떤 일들이 있는가? 1. 우선순위 선정하기 2. 개발 일정과 비용 산출하기 3. 주어진 여건에서 최적의 결정하기 4. 비기능적 요구사항과 계약 조건 검토하기 5. 지리적으로 분산된 팀들과 협업하기 6. 사업 목표 이해하기 7. 전체 비즈니스에 영향을 미칠 기술 선정하기... 등등 주위를 보면 존경받는 / 함께 일하고 싶은 / 팀에 큰 전력이 되는 개발자들은 코딩뿐만 아니라 위 역량이 뛰어남 주위 개발자를 보면서 수집한 행동들을 기반으로 크게 본질, 관계, 속마음 3개의 키워드를 선정해 팀에 기여하는 개발자란 어떤 모습인지에 대해 정리해 보겠습니다. 1. 본질 Situation 1 어..
디자인 패턴은 프로그램을 개발하는 과정에서 빈번하게 발생하는 디자인 설계문제를 정리해서 상황에 따라 간편하게 적용할 수 있게 정리한 것입니다. 선배 개발자 분들의 시행착오 끝에 그중 가장 효과적이라고 알려진 패턴으로 잘 활용할 수만 있다면 적지 않은 시간과 노력, 시행착오를 줄일 수 있습니다. 간략하게 미리 알아두고 풀고 싶은 문제가 있을 때 적재적소에 적용한다면 좋겠습니다! 디자인 패턴 용도에 따라 나누기 가장 대중적으로 널리 알려진 나누는 기준은 생성, 구조, 행동으로 나눈 기준입니다. 생성 패턴(Creational Pattern) 객체 인스턴스를 생성하는 패턴으로, 객체를 생성하는 방법과 시점을 추상화하고, 코드의 유연성, 재사용성 및 유지보수성을 향상시킵니다. 싱글턴 패턴(Singleton Pat..
이 글로 얻을 수 있는 것 - 메모리릭을 디버깅 할 수 있는 자신감! - Node.js 환경이든 브라우저 환경이든 크롬 브라우저의 Memory 탭에서 메모리 누수의 범인을 찾을 수 있음! 메모리 누수(Memory Leak)이란? 메모리 누수는 실제로는 필요하지 않은데, 메모리를 계속 차지하고 있는 현상 메모리 누수가 있으면 뭐가 문제일까? JS를 동작시킬 메모리가 부족하니까, 성능이 좋지 않게 된다. - GC의 활동이 늘어나면, CPU 사용량이 늘어난다. - CPU intensive한 작업이 늘어나면, 이벤트 루프가 블로킹되서 연산이 느려진다. 띄워놓은 Node.js 서버가 죽는다. - SIGABRT 등의 시그널로 인한 프로세스 종료 - 인스터스가 재시작되고 일부 요청에 대한 응답이 실패할 수 있음 - ..
의도적 수련이란 자신의 기량 향상을 목적으로 반복적으로 하는 것이다. 단순 노동이 아니라 자신의 약점을 개선하려고 노력하는 것만이 의도적 수련이다. 업무를 하면서 의도적 수련을 같이 하려면 업무를 하면서 빠르게 피드백받고 교정하면서 성장하는 "애자일 철학"이 필요하다. 양치질을 30년 했다고 매일 똑같은 패턴, 강도로 반복만하니 양치질의 고수라고 하지 않는다. 같은 일을하더라도 어떤 분야에서 전문가가 되려면 의도적 수련을 해야한다. 개발을 예로들면, 단순한 것을 개발하더라도, 더 빠르게, => 속도, 기존 로직 혹은 비즈니스 요구 파악, 이전에 쌓아 놨던 재사용성의 도움 더 안전성 있게, => 테스트 더 재사용 가능하게, 더 확장에 용이하게, 더 동료들이 이해하기 쉽게, 위와 같은 사항들을 항상 상기시키..
15년 차 정도되는 시니어 개발자분이 감사하게도, 회사생활에 대한 사내 세미나를 열어주셨다. 평소에 같은 동료로서, 같은 개발자로서 존경심을 갖고 계셨던 분이 해주셨던 말들을 짧게 요약해 보고, "어떤 사람이 일을 잘하는 사람인가?"에 대한 개념이 잘 서지 않을 때마다 봐야겠다. 프로? 아마추어? 어떤 한 분야(종목)에 대해서 - 아마추어 : 돈을 내고 즐긴다. - 프로 : 돈을 받고 직업으로 일한다. ex) 게이머 - 아마추어 : 시간이 날 때 틈틈이 즐긴다. 꼭 승리하지 않아도 즐거우면 OK - 프로 : 목표는 승리, 승리를 위해서라면 합법적인 모든 방법을 동원해서 목적달성 프로(의식)? - 몸값에 맞는 가치를 한다. > 사장님 또는 고객은 쉽게 돈을 주지 않는다. > 항상 내가 생각하는 것보다 훨씬..
디자인 패턴이란? 소프트웨어에서 디자인 패턴은 반복적으로 발생하는 문제 상황에 대한 해결책을 제시하는 일반적인 설계 템플릿입니다. 디자인 패턴은 소프트웨어 공학에서의 최선의 실천 방법을 정리하고, 재사용 가능한 코드를 작성하기 위한 지침을 제공합니다. 디자인 패턴은 다음과 같은 주요 목적을 가지고 있습니다: 재사용성: 디자인 패턴은 특정 문제에 대한 해결책을 제공하므로, 해당 문제가 발생할 때마다 동일한 패턴을 재사용할 수 있습니다. 이를 통해 코드의 재사용성이 증가하고, 개발 시간과 비용을 절감할 수 있습니다. 유지보수성: 디자인 패턴은 코드의 구조화를 도와주며, 코드의 의도를 명확하게 전달합니다. 이는 코드를 이해하고 유지보수하는 과정을 단순화하고 오류를 방지할 수 있도록 돕습니다. 확장성: 디자인 ..
polling 클라이언트가 평범한 http request를 서버로 계속 날려서 이벤트 내용을 전달받는 방식이다. 가장 쉬운방법이지만 클라이언트가 계속적으로 request를 날리기때문에 클라이언가 많아지면 서버의 부담이 급증하게 된다. http request connection을 맺고 끊는것 자체가 부담이 많은 방식이다. 그리고 클라이언트에서 실시간정도의 빠른 응답을 기대하기도 어렵다. polling은 http 오버헤드가 발생한다는 단점이 있다. 하지만 일정하게 갱신되는 서버 데이터의 경우 유용하게 사용할 수 있는 방식이다. (ex. 대시보드 갱신) SocketSSE(Server-Sent-Event) Socket SSE 브라우저 지원 대부분 브라우저에서 지원 대부분 모던 브라우저 지원(polyfills 가..
교착 상태 해결 - 예방 - 회피 - 검출 후 회복 교착 상태 예방 참고로, 교착 상태 조건 중 하나라도 충족되지 않는다면 교착상태는 절대로 발생하지 않는다. - 애초에 교착 상태가 발생하지 않도록 예방 - 교착 상태 발생 조건(상호 배제, 점유와 대기, 비선점, 원행 대기) 중 하나를 없애버리기 상호배제 없애기 모든 자원을 공유 가능하게 만든다? => 이론적으로 가능하지만 현실적인 해결법은 아니다. 점유와 대기 없애기(자원을 할당받은 상태에서 자원을 대기하는 것) 특정 프로세스에 자원을 모두 할당하거나, 아예 할당하지 않는 방식으로 배분 => 자원의 활용률을 낮출 수 있는 방식 비선점 조건을 없애기 선점이 가능한 자원(e.g CPU)에 한해 효과적 => 모든 자원이 선점 가능한 것은 아니다. (한 프..