분류 전체보기(187)
-
프로세스 스케줄링(Process scheduling)
Scheduler? 기본적으로 모든 프로세스는 크게 두 가지 단계로 이루어져 있다. 하나는 CPU만 사용하는 CPU burst 단계, 다른 하나는 I/O(input/output) 작업만 하는 I/O burst 단계이다. 각 프로세스는 CPU에 할당되어 작업을 하게 되고, 해당 CPU의 자원을 점유하여 하고자 하는 동작을 실행한다. 문제는 I/O busrt 단계에서는 CPU가 놀게 된다는 점이다. CPU가 노는 시간을 줄이기 위해 고안된 방법이 바로 스케줄링, 이러한 동작을 하는 모듈을 스케줄러라고 한다. 목적 프로세스 스케줄링은 다음 두 가지 목적을 위해 존재한다. CPU의 성능을 높인다 프로그램의 성능을 높인다 CPU 입장에서의 성능이란? 다음과 같이 나타낼 수 있다. CPU 이용율: 전체 시간 중 쉬..
2023.06.11 -
[디자인 패턴] 커맨드 패턴, 팩토리 메서드 패턴, 상태 패턴
커맨드 패턴 세 줄 개념 실행 기능 단위로 캡슐화 함으로써 여러 기능을 실행할 수 있는 재사용성 높은 클래스 설계 기능 자체를 캡슐화 하기 때문에 Invoker와 Reciver간의 의존성 자체를 제거(기능 자체의 세부구현 변경이 Invoker와 Reciver의 수정 없이 이뤄질 수 있음) 기능 자체를 다루는 로직이 필요할 때 사용(되돌리기, 히스토리 기록 등) 유용한 사례 실행 취소가 가능한 명령들을 다양하게 다뤄야 하는 텍스트 에디터 보상 트랜잭션 공유 리소스를 바탕으로 병렬 처리를 원할 때(ex. 커맨드 단위로 멀티 스레드에서 동작) 느낀 점 처음에 커맨드 패턴을 코드상에서 봤을 때 마치 side effect를 적극적으로 사용하는 패턴으로 보였음 excute()의 반환 타입이 실질적인 응답 데이터를 ..
2023.05.28 -
[디자인 패턴] 싱글톤, 데코레이터
싱글톤 패턴 세 줄 개념 클래스의 인스턴스화를 단일 인스턴스로 제한하여 하나의 객체 사용을 강제하는 패턴 두 개 이상의 인스턴스화를 방지하는 게 핵심 구현 방법 메모리 사용에서의 이점 + 하나의 데이터 출처를 강제하는 용도로 사용 유용한 사례 Logger 많은 곳에서 사용되며 사이드 이펙트가 없고 인스턴스를 재활용했을 때의 효용이 높음 공유 리소스에 대한 동시 엑세스 제어 리소스에 대한 엑세스를 전역에서 요구 하나의 객체만 존재해야 하는 경우 위 세 개의 조건을 모두 만족하는 경우 고려해 볼 수 있음(무조건 사용해야 하는것이 아님) 문제점 싱글톤은 SRP를 위반한다 싱글톤 객체는 자기 자신의 인스턴스를 감시하는 책임 + 스스로의 구성정보를 제공하는 책임. 두 개의 책임을 가지고 있는 객체 메모리 관리에 ..
2023.05.28 -
DragGPT + Stream
DragGPT 익스텐션이 기본적으로 non-stream으로 동작하다 보니, 응답을 다 받기까지의 로딩 속도가 매우 답답하게 느껴지는 부분이 있었다. 고쳐야지... 하고 매번 생각만 하며 게으름을 피우다 보니 이제야 작업을 하게 되었다. 기존에 DragGPT를 만들며 재미있게 개발했던 포인트 중 하나는 XState였는데, 사실 이번에 코드를 오랜만에 보는 만큼 XState가 낯설게 느껴지지 않을까 하는 걱정이 있었다. 그러나 실제 개발 단계에서는 걱정을 무색하게 만들 정도로 편하게 작업할 수 있었다. 기존 채팅 상태머신에 receiving 상태를 하나 추가해서 작업하는 것만으로도 관심사를 많이 좁혀서 작업할 수 있었는데, state 패턴의 장점을 극한까지 느낀 것 같았다. 작업을 하면서 알게 된 사실인데,..
2023.05.28 -
많이 늦은 2022회고
연 초에 회고를 6시간 동안 쓰다가 날려먹은 이후... 회고를 다시 쓸 엄두가 나지 않아 하염없이 미루고 있었다. 문득 이러다가 2년치 회고를 쓰겠다는 생각이 들어 빠르게 압축본으로 적어보려고 한다. 상반기 재작년 말에 이직을 한 후, 작년 상반기에는 새로운 조직에 적응하며 배우는 게 참 많았다. 개발팀의 학습 문화나 코드 리뷰 문화에서 얻은 것들을 체화하고, 그 과정에서 사용하지 않았던 근육을 사용하는 듯한 고통과 짜릿함을 동시에 느꼈던 시기였다. 테스트 코드 React 유닛테스트 코드 작성을 시작하면서 테스트란 무엇이고 왜 해야 하는지, 그리고 유지보수 가능한 테스트 코드 작성을 위해 무엇을 고려해야 하는지에 대한 고민과 인사이트를 많이 얻은 시기이다. 역설적으로 테스트 코드를 작성하다가 잘못된 컴포..
2023.04.30 -
발전속도가 미쳤다
하루하루 AI관련 생태계의 확장과 새로운 기술에 대한 뉴스가 쏟아진다. 따라가기가 벅차다. 아니, 사실 못 따라간다... 사내 콘텐츠를 바탕으로 한 챗봇을 만들어 보려고 주말 동안 PoC를 했다. 스프린트에 정식으로 반영되어 이번 스프린트부터 타 스쿼드에서 시범적으로 작업에 들어간다. 콘텐츠 텍스트를 임베딩해서 vector store에 갱신하고, 유저 쿼리시 콘텍스트를 함께 제공하는 방식이다. 유저에게 꼭 필요한 정보들이 제대로 전달되지 않는 이슈가 있던 스쿼드에 먼저 도입된다. 할 수 있는게 너무 많아서 질식할 것 같다. 하나씩 꾸준히 놓치지 않고 따라가야지.... 너무 격변의 시기다
2023.03.29