[바미] Go의 signal에 대해 알아봅시다.
·
프로그래밍(Basic)/Golang
BackEnd단에서 프로그램을 Go언어로 짜다 보면 Go 프로그램이 Unix signal을 처리해 주었으면 하는 때가 있죠. 예를 들어, SIGTERM signal을 받았을 때 적절하게 서버를 종료하는 경우나 커맨드라인 도구에서 SIGINT를 받았을 때 프로세스를 멈추는 경우가 그런 경우인데요. 오늘은 채널을 이용하여 signal을 다루는 방법을 살펴보겠습니다. 코드 package main import "fmt" import "os" import "os/signal" import "syscall" func main() { sigs := make(chan os.Signal, 1) done := make(chan bool, 1) signal.Notify(sigs, syscall.SIGINT, syscall...
[바미] MVC, MVP, MVVM 패턴에 대해 알아봅시다.
·
프로그래밍(Basic)/이론
MVC 패턴 MVC 패턴은 크게 Model-View-Controller 3가지로 나눈 소프트웨어 개발 방법론입니다. Model : 일반적으로 DB테이블에 해당한다. 순수한 데이터로서 DB의 역할을 하거나 DB에 데이터를 요청해서 원하는 데이터를 받는 역할을 합니다. 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 하고 View나 Controller에 대한 정보는 알수없습니다. View : Controller로 데이터를 받아서 클라이언트 측 기술인 html/css/javascript를 이용해 표현하는 역할을 합니다. 데이터를 따로 보관하지 않고 처리합니다. Controller : 사용자가 접근 한 URL에 따라서 사용자의 요청사항을 파악한 후에 그 요청에 맞는 데이터를 Model에 의뢰하고, Mode..
[바미] 서로가 서로를 필요로 할 때
·
프로그래밍(Web)/업무관련
class ExamClass { constructor() { ... this.init(); } init() { this.A = new constructorA(this.B); this.B = new constructorB(this.A); this.C = new constructorC(this.A, this.B); } } 위처럼 A는 A를 생성하기 위해 B가 필요하고, B는 B를 생성하기 위해 A가 필요하는 상황이였습니다. 그 때는 ExamClass를 사용하여 해결하였습니다. class ExamClass { constructor() { ... this.init(); } init() { this.A = new constructorA(this); this.B = new constructorB(this.A); t..
[바미] DDR5, 세상을 또 한 번 업그레이드하다
·
IT 관련 정보
DDR5 시대가 눈앞으로 다가왔다. 5G, 인공지능에 이어 증강현실과 메타버스까지 고속 대용량 데이터 처리가 관건인 서버 환경에서 고성능 컴퓨팅은 필수 요소가 됐다. 여기에 글로벌 빅테크 기업들의 데이터 센터 서버 확대 추세까지 더해져, DDR5는 미래형 첨단 산업의 키를 쥔‘게임 체인저’로 급부상하고 있다. 전 세계 D램 시장을 바꿔 놓은 삼성전자는 일찍이 DDR5 개발로 IT 산업 베이스의 세대교체를 주도하고 있다. DDR5 D램은 2013년도에 출시한 DDR4를 잇는 D램 반도체 규격으로, DDR4보다 약 2배 빠른 4800Mbps 이상의 데이터 처리 속도와 약 4배 커진 최대 512GB[1]의 용량을 자랑한다. 이러한 차세대 고성능 메모리는 클라우드와 인공지능, 빅데이터, 자율주행 등으로 급증하는..
[바미] NVIDIA GeForce RTX 4090의 600와트가 실제로 어디에서 왔는지 - GPU 및 구성 요소의 추정치
·
IT 관련 정보
번역기 돌린 거라 오역이 많이 있을 수 있으며, 자세한 내용은 원문을 참고 바랍니다. 이번에도 GPU의 전력 소비에 대한 결론을 도출할 수 있도록 개별 구성 요소의 전력 소비를 외삽하려고 합니다. Turing과 함께 저는 와트에서 거의 정확히 맞았고 이번에는 회로 기판이 실제로 그렇게 될 것인지는 미스터리가 아닙니다. GeForce RTX 3090 Ti 및 회로 설계를 기반으로 흥미로운 세부 사항을 도출할 수 있지만, 이에 대한 자세한 내용은 잠시 후에 설명합니다. 하지만, 보드 파트너들도 확인한 바에 따르면 Geforce RTX 3090 Ti의 보드는 차세대 보드와 비슷하지만 1:1로 사용할 수 없다는 사실입니다. 나중에 핀 호환 칩만 교체하면 된다는 추측은 사실이 아니어야 합니다. 물론 많은 제조업체..
[바미] 이벤트 버블링 (Feat. 너는 움직이면 안돼지..)
·
프로그래밍(Web)/업무관련
얼마전 JS로 업무를 보던 중에 생겼던 일입니다. 그 문제들을 해결하기 위해 공부하며 알아왔던 것들을 공유하고자 올리게 되었습니다. 어떤 창 안에서 무언가를 삭제 하려 할 때 확인 팝업창이 뜨게 되는데 그 확인 창을 닫게 될 때 그 창도 같이 닫히게 되는 버블링 현상을 마주하였습니다. 좀 더 쉽게 설명하자면 예시로 다나와 견적함을 들자면 여기에서 SSD항목을 삭제하려 할 때 삭제하겠냐는 확인 창이 뜰 것이고, 확인, 취소를 누르면 견적함 창까지도 꺼졌던 것이지요. 이 문제를 해결하기 위해 이벤트 버블링에 대해 알아야했고, 그 전에 이벤트 등록에 대해 알고 있어야 했었습니다. 이벤트 등록이란 웹 애플리케이션에서 사용자의 입력을 받기 위해 필요한 기능입니다. 아래와 같은 코드를 말하는데 print Event..
[바미] 메모리 릭(memory leak)현상을 마주하다.
·
프로그래밍(Web)/업무관련
메모리 릭(memory leak) 현상은 현상은 컴퓨터 프로그램이 필요하지 않은 메모리를 계속 점유하고 있는 현상을 말합니다. 할당된 메모리를 사용한 다음 반환하지 않는 것이 누적되면 메모리가 낭비되고, 더 이상 불필요한 메모리가 해제되지 않으면서 메모리 할당을 잘못 관리할 때 발생하죠. 이 일이 어처구니 없는 실수로 제게도 발생해버렸습니다. 실시간으로 조회하는 함수() { functionA(); ... } 원인은 지속적으로 무언가를 조회하는 함수 안에 있는 functionA() 안에서 의미없는 오브젝트를 생성했기 때문이였는데요. fucntionA() { let objectA = new class(); } 이번 일을 계기로 콘솔창에 있는 좋은 기능을 하나 알게 되었는데요. Perfomance monito..
[바미] 개발자용 노트북 추천해봅니다. (Ver 2022)
·
IT 관련 정보
노트북 구매에 관련한 꿀팁을 얻고 싶으시다면 아래 링크를 참고하세요! [바미] 노트북 구매 시 꿀팁. 안녕하세요. 제 블로그 유입 중에 노트북 관련된 글의 유입이 많아 노트북을 구매하실 때 좋은 팁을 공유하고자 합니다. 해당 글은 개발용 노트북이 아닌 노트북 고를 때 유의할 점임을 먼저 알 codesk.tistory.com 2023년도 버전이 업데이트 되었습니다. [바미] 개발자용 노트북 추천해봅니다. (Ver 2023) 노트북 구매에 관련한 꿀팁을 얻고 싶으시다면 아래 링크를 참고하세요! [바미] 노트북 구매 시 꿀팁.안녕하세요. 제 블로그 유입 중에 노트북 관련된 글의 유입이 많아 노트북을 구매하실 때 좋 codesk.tistory.com 안녕하세요. 개발자용 노트북 추천글에 뜨거운 반응을 힘입어 이..
[바미] Array 중복된 id값 제거하기.
·
프로그래밍(Basic)/Javascript(TS,Node)
Array 내에 id 값이 중복된 것을 제거하는 작업은 정말 많이 쓰이죠. 여러 방법으로 제거 하는 방법을 알려드리겠습니다. let example = [{ id: "무지", value: "1" },{ id: "보르도", value: "2" }, { id: "무지", value: "1" }, { id: "콘", value: "3" }]; 위와 같은 배열이 있을 때 id값이 중복된 것을 제거 해보도록 하겠습니다. lodash _.uniqBy(example, "id"); lodash를 사용하면 위와 같이 한 줄로 가능합니다. 참고로 lodash 라이브러리는 자바스크립트로 개발시 가장 많이 사용되는 라이브러리 중에 하나입니다. array 를 다룰때 번거로움을 없애고 쉽게 사용할 수 있도록 해줄뿐만 아니라 obj..
Bami
기록하며 성장하기