[번역] 개발자 중심 성능 테스트 선언문
번역2024. 6. 23. 16:29[번역] 개발자 중심 성능 테스트 선언문

소개https://k6.io/our-beliefsgrafana사의 성능 테스트 툴인 k6의 공식문서에 포함되어 있는 내용입니다. 성능 테스트에 관심이 있는 개발자 / 학생분들이 읽기 좋은 내용입니다.저는 자료 번역을 할 때 직역하지 않습니다. 필요해 보이는 내용은 추가하고 불필요하다고 생각되는 내용은 지웁니다. 원래 글을 그대로 읽고 싶으시면 원문을 읽으시는 것을 추천합니다.  간단한 테스트가 테스트를 안하는것보단 낫다.성능 테스트는 실제 클라이언트의 행동과 환경을 유사하게 모방하는 것이 좋습니다. 하지만 그것보다 중요한 것은 테스트를 수행하는 것입니다. 80:20 규칙은 상위 20%의 작업만으로 80%의 가치를 얻을 수 있으며 간단한 테스트를 통해 개선하는 것이 아예 안 하는 것보다 훨씬 좋다는 것을 ..

가만히 있어도 주변에서 칭찬해주는 챌린지: 도파민 디톡스 후기
회고록2024. 6. 15. 14:30가만히 있어도 주변에서 칭찬해주는 챌린지: 도파민 디톡스 후기

도파민 디톡스란도파민 디톡스(dopamine detox)는 현대사회에 흔한 도파민을 쉽게 수급할 수 있는 매개체를 소비하지 않음으로써 본업에서의 집중력, 행복감 등을 향상하는 챌린지입니다. 제가 고교시절 시도했던 게임 끊기(익명 커뮤니티에 올렸던 게시글, 게시판 내 최고 조회수)와 같은 행위를 요즘에는 도파민 디톡스라는 단어로 불리며 인기가 있는 것 같습니다. 최근 뉴스에서 초·중등학생에게 유튜브, 쇼츠 등이 문제라고 이야기하고 있습니다. 쇼츠가 건강하지는 않다는 의견에는 동의하지만 제 또래 세대만 해도 어릴 떄부터 유튜브를 접하며 자랐기에 옛날부터 문제라면 문제였는데 이제 와서 뉴스에서 떠드는게 공감이 안됩니다. 이 글에서는 7일간 도파민 디톡스를 했으며 그동안 든 생각에 대해 정리했습니다. 시작하게 ..

[TypeScript] TypeORM 커스텀 함수 구현하기
Node.js2024. 6. 6. 12:13[TypeScript] TypeORM 커스텀 함수 구현하기

도입본 케이스는 ORM레벨의 에러 때문에 작성되었기에, ORM에 직접 메서드를 추가하는 접근방식을 사용했습니다.만약 Data Access Layer에 Customized Method를 추가하고 싶으시다면 TypeORM 레퍼지토리를 참조하는 클래스를 구현하세요. TypeORM 커스텀함수가 필요하게 되어 구현하게됐다. 처한 상황은 다음과 같다.발생 환경: MySQL, Mac발생 조건: upsert method를 사용하고 충돌 조건을 PK가 아닌 Key를 사용함결과: upsert signature은 Upsert를 시도한 객체를 반환하는데 ORM에서 객체를 찾지 못해 TypeORM 에러 발생#10909번 이슈 때문에 이를 해결하기 위해 TypeORM에 함수 하나를 추가해보려고 한다. 코드//custom-orm-..

그냥 하기 (명량한 염세주의)
생각 정리2024. 5. 18. 04:43그냥 하기 (명량한 염세주의)

인생 사는 마인드에 관한 이야기이다. 우선, 나는 철학에 대한 지식이 없다. 단순히 내 사고 방식과 유사하고 내가 옳은 사고방식이라고 생각하는 것에 대한 정리다.내가 옳다고 생각하는 것은 명량한 염세주의다. (버틀란드 러셀 왈) 염세주의는 뭐고 명량한 염세주의는 무엇인가? 우선 염세주의에 대해 설명하겠다.염세주의는 비관주의라고도 말한다. 세계는 원래 불합리하며 비애로 가득찬 곳으로 당신이 느끼는 행복이나 희열도 덧없는 일시적인 것에 불과하다고 보는 마인드다. 그렇다면 세상은 불합리할까?아니 세상은 합리적이다. 그림이 좋아 미대 입시를 준비하고 있는 친동생은 하기 싫어하는 내신공부와 입시미술을 반드시 공부해야한다. 그렇지 않으면 다른 학생들보다 더 안좋은 환경에서 공부하게 될 것이기 때문이다. 이런 불합리..

[Nest.js] HTTP query에 따라 Service가 동적으로 할당되어야 한다.
트러블 슈팅2024. 5. 7. 17:33[Nest.js] HTTP query에 따라 Service가 동적으로 할당되어야 한다.

프로젝트 소개 및 요구사항 waktaverse games라는 약 30개의 팬게임과 협업하는 게임 포럼/배포 서비스입니다. 왁타버스 게임즈 | Waktaverse GamesWaktaverse Games를 통해 왁물원의 게임을 한곳에서 즐겨보세요!waktaverse.games 본 웹 사이트에는 2가지 클라이언트가 존재합니다.웹 브라우저(react)팬게임 개발자용 클라이언트(electron)각 클라이언트마다 고유의 refresh 토큰을 가지고 있어서 메서드 내부에서 처리해줘야 하는 중복 로직이 많았습니다.그래서 이번 글에서는 다음과 같은 작업을 수행해보겠습니다.클라이언트가 더 추가되도 코드의 변경이 일어나지 않도록 개선request query에 따라 service가 동적으로 할당되도록 개선  Service 동..

How to.2024. 4. 22. 18:10css를 활용한 다크모드 이미지 자동 대응

소개다음 영상을 보시면 무슨 말인지 쉽게 이해할 수 있습니다.아이디어https://github.com/joonas-yoon/boj-extended?tab=readme-ov-file GitHub - joonas-yoon/boj-extended: 백준 온라인 저지(BOJ)를 확장된 기능과 함께 사용해보세요. 기능 요청백준 온라인 저지(BOJ)를 확장된 기능과 함께 사용해보세요. 기능 요청과 버그 제보는 언제나 환영합니다. - joonas-yoon/boj-extendedgithub.com 코드아래 코드는 본인이 사용하고 있는 블로그 스킨에 맞게 수정해서 사용하세요.저는 berry skin v4를 사용하고 있어서 다음과 같은 코드로 작성했습니다./* 기본 이미지 색상 */img { filter: none;..

머신러닝과 딥러닝의 차이
etc2024. 4. 21. 20:23머신러닝과 딥러닝의 차이

도입 역사 흐름대로 알려줌. 독자가 단순히 외우는 것보다 배경을 알아가면서 이해하기 위함. 전통적인 프로그래밍 vs 머신러닝 프로그래밍: 개발자가 문제를 해결하기 위해 알고리즘 구현 머신러닝: AI가 스스로 학습하며 문제 해결 알고리즘 직접 구현 def 프로그래밍_처리방식(algorithm: Algorithm, data: Data) -> Answers: // ...Algorithm return answers; def 머신러닝의_처리방식(data: Data, answers: Answers) -> Algorithms: // ... Data, Answers return algorithms; 그렇다면 어떤 경우에 각 두 전략이 적합한가? 프로그래밍: 수식화/도식화하기 쉬운 경우 머신러닝: 수식화/도식화하기 어려..

Node.js2024. 4. 21. 18:03[Typescript] builder 패턴 남용 금지

자바 계열에서 넘어오신 분들이 builder 패턴을 통해 인스턴스 생성 전략을 무분별하게 사용하는 경우가 있습니다. 만약, 인자가 많아 빌더패턴을 적용해야한다는 이유는 TypeScript에서는 적절한 이유가 되지 못합니다. TypeScript에서 named parameter 가능하기 때문에 인자가 많다는 이유로는 builder 패턴을 사용할 필요가 없습니다. 코드interface UserProps { nickname: string; email: string; role: UserRoleEnum; deletedAt: Date | null;}export class User extends Entity { private constructor(props: UserProps, id?: UserID) { super(..

[DDD] 도메인 엔티티, Domain Entity
DDD2024. 4. 17. 07:35[DDD] 도메인 엔티티, Domain Entity

도입 대기업들이 DDD를 지향하는 이유는 비즈니스가 만나는 필연적인 복잡성 때문입니다. Gitlab, Netlify 등의 서비스만 봐도 우리가 공부할 때 접하는 CRUD 프로젝트와는 비교되지 않는 비즈니스 로직의 복잡성이 존재합니다. 비즈니스 로직의 복잡성을 관리하기 위한 접근 방식이 바로 객체지향 프로그래밍 개념을 사용하여 객체 간 복잡한 동작을 모델링 하는 것 입니다. 자세히 설명하면 특정 영역에서 어떤 행위가 가능한지 불가능 한지를 모방하는 것입니다. (e.g. 계좌에 잔고가 있다면 인출할 수 있지만 잔고가 없다면 인출할 수 없음.) Domain-Driven은 도메인을 모델링하는 데 사용할 수 있는 아티팩트를 도입합니다: 이제 본 아티팩트 중 하나인 엔티티에 대해 이야기해보겠습니다. DDD에서 En..

DDD2024. 4. 16. 01:45[DDD] 값 객체, Value Object

엔티티 식별 우리는 특정 모델의 여러 인스턴스들을 각자 구분할 수 있을 때 엔티티를 통해 도메인 개념을 모델링합니다. 식별자가 존재하는지의 여부로 '값 객체'인지 '엔티티'인지 구분할 수 있습니다. 다음 예시를 보겠습니다: 우리가 흔히 말하는 User는 엔티티입니다. 왜냐하면 User의 인스턴스는 고유한 식별자(ID)를 가지고 있으며 ID를 통해 다른 각자 다른 User라는 것을 알 수 있기 때문에 User를 엔티티라고 부릅니다. 여기서 사용하는 고유한 식별자 방식은 UUID나 auto-increment 방식입니다. 값 객체(Value Object) VO에서 두 인스턴스의 구조가 같다면 같은 값 객체라고 볼 수 있습니다. 구조적 동일성(Structural Equality) 구조적 동일성은 두 객체가 동일..

[PostgreSQL] 내가 enum을 쓰지 않는 이유
Node.js2024. 4. 14. 18:57[PostgreSQL] 내가 enum을 쓰지 않는 이유

이 글은 연산 속도에 관해 이야기하지 않습니다. 단순히 확장성과 용량에 대해서만 이야기합니다. 도입 유저의 권한이라는 요소를 열거형으로 관리할 지 고민하였습니다. 본 글에서는 선택적인 요소를 어떻게 처리하는 것이 좋을지 고민해본 내용을 정리해보려고 합니다. 본문 상세한 설명은 후술. 비교 표: 방식 설명 저장 용량 SMALL INT 저장 용량이 가장 작음, 애플리케이션이 문자열과 매핑해주는 방식 2byte ENUM 확장이 일어나면 DDL이 변경되는 방식, 확실한 무결성 4byte * 가짓수 n = 4n VARCHAR 저장 용량이 큰 방식 (문자열 매핑은 필요없음) 4byte * 길이 n = 4n 별도 테이블 확장에 가장 열려있음. 저장 용량을 가장 많이 차지하는 방식 가장 큼 열거 요소로 enum을 선택..

PostgreSQL Check란? Check를 사용하지 말아야하는 이유
Node.js2024. 4. 11. 21:03PostgreSQL Check란? Check를 사용하지 말아야하는 이유

PostgreSQL에는 Check란? SQL 레벨에서 지원하는 제약조건입니다. (PostgreSQL만 지원하는 것이 아님.) 데이터 insert 요청 시 PostgreSQL DBMS가 값 검증을 수행해주는 제약조건입니다. 다음과 같이 사용할 수 있습니다: CREATE TABLE products ( product_no integer, name text, price numeric CHECK (price > 0) -- 가격 컬럼에 항상 양수만 들어갈 수 있도록 검증 ); Check를 사용하면 이점 애플리케이션에서 값에 대한 검증을 하지 않아도 됨. 서버 코드가 굉장히 간단해짐. 반대로 존재하는 큰 단점 DBMS 마이그레이션 시 검증 기능의 유실됨. 특정 DBMS에 의존하게 됨. (MySQL 8.0.16 이하버..

[개발자 셋업 공유] 집에서 누워서 코딩하기
How to.2024. 4. 8. 03:32[개발자 셋업 공유] 집에서 누워서 코딩하기

마지막 업데이트: 2024.04.08쿠팡 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있습니다. 도입최근 집에 저만의 코딩 환경을 구축하여서 이를 글로 한번 남겨보려고 합니다. 혹시나 개인 코딩 환경 세팅에 관심이 있으시다면 참고해보시는 것도 추천드리며 세팅에 진심이신분이 계시면 댓글로 공유해주시면 감사하겠습니다. 개요가벼운 M1 PRO 사용침대 위 노트북을 둘 수 있는 노트북 거치대눈뽕 방지용 블루라이트, Dark Reader를 활용위와 같은 이유로 키보드 라이트 끔팔에 피쏠릴까봐 블루투스 키보드를 활용마우스 제로를 위해 vim 설정 애용. (ide, chrome은 vim만으로 사용)위와 같은 이유로 github 등 환경에서 명령어 지향목 건강을 위한 라텍스 베게상세한 설명이 들어갈 수 있는 것..

How to.2024. 3. 14. 17:36티스토리 특정 게시글 광고 제거하는 법

다음 css 코드를 광고 제거하고자 하는 게시글의 html 수정을 통해 삽입하면 됩니다. 참고로 html 재수정을 하더라도 태그는 볼 수 없으니 본 글을 북마크 해두시는 것을 추천드립니다. 코드 원리 revenue_unit_wrap, adsbygoogle 클래스가 달려있는 광고를 display: none을 통해 제거합니다. adsbygoogle 클래스의 경우 인라인 스타일을 이용하여 display 옵션을 주었기 때문에 css 최상위 우선순위 important을 주었습니다. 적용 예시 광고 제거 된 글: 5년차 네이버 면접관이 말하는 함께하고 싶은 개발자 광고가 있는 글: [한빛미디어 서평단] 헤드퍼스트 자바 - 자바로 여는 무한한 객체지향 세계

생각 정리2024. 3. 14. 17:045년차 네이버 면접관이 말하는 함께하고 싶은 개발자

수익창출하지 않은 글입니다. 문제 시 삭제하겠습니다. 질문 내용: https://youtu.be/3aokY48UZkk 면접관 소개 스타트업 인턴 1.5년차 네이버 5년 근무(3년 정직원, 1.5년 팀장) 면접관으로 활동 인터뷰 질문 면접관 경험 상 좋아하는 개발자의 특징은? 이런 사람은 뽑고싶다: 엔지니어랑 긱(Geek)한 사람. 대부분 이런 사람들이 실력이 좋기 때문에 스타트업에서 바로 일할 수 있어서 좋음. 원 질문 대기업의 경우, 신입은 키워서 쓴다. -> 코딩테스트, CS공부 이런 사람과는 같이 일하기 싫다: 신입인데 가술 스택이 k8s, Redis, Kafka, MSA, 아키텍처 등인데 질문 했을 때 제대로 답을 하지 못하는 사람, 겉멋이 많이 들었다고 생각되어 신뢰할 수 없음. 많은 기술을 사..

[리뷰] 헤드퍼스트 자바 -자바로 여는 무한한 객체지향의 세계
도서 리뷰2024. 2. 24. 18:03[리뷰] 헤드퍼스트 자바 -자바로 여는 무한한 객체지향의 세계

선택 이유 '헤드퍼스트 자바'는 평소에도 이름은 들어봤던 도서 중 하나였습니다. 약 20권의 도서 제공 목록 중 본 도서 을 다음과 같은 이유로 선정하게되었습니다. 개발자라면 반드시 알아야하는 객체지향을 소개합니다. 두뇌가 쉽게(head first) 이해할 수 있는 예제를 활용하여 자바와 객체지향에 대해 설명했습니다. 개념을 이해하는 것을 넘어 쉽게 활용할 수 있도록 실전 능력을 기를 수 있습니다. 잠깐.. 왜 Head First인가? 이 책에서 두뇌는 길게 늘어쓴 글보다는 그림을 더 중요하게 여긴다고 설명합니다. 분명히 아무런 의미 없는 호랑이 사진이며 독자를 사냥할 것도 아닌데도 뇌는 호랑이 사진에 집중하게 됩니다. (두뇌가 먼저 반응하는 = Head First) '헤드퍼스트 자바'에서는 이러한 점을..

html에서 React로 마이그레이션 시 겪었던 문제점
트러블 슈팅2024. 2. 5. 17:25html에서 React로 마이그레이션 시 겪었던 문제점

서론 난 왜 이걸 하고 있는가? 현재 교수님이 속해 있는 회사의 렌딩페이지를 급하게 만들어야 했습니다. html5up이라는 html 예제 모음 사이트에서 가져와서 내부 콘텐츠만 변경하여 작업하기로 결정하였습니다. 다운받은 예제는 외부 라이브러리 없이 html, css, js만으로 구현되어 있습니다. 이를 추후 간편한 수정을 위해 React로 마이그레이션을 진행해야만 했습니다. 무슨 문제에 봉착했는가? 다운받은 템플릿(live demo)에 속해있는 js 기능이 정상적으로 동작하지 않았습니다. React에 포함되어 있는 /public/index.html의 body 태그 내 마지막 줄에 js를 불러오는 script 태그를 추가했지만 실패했습니다. 본론 작업에 실패했던 이유 React의 동작 방식에 대한 이해 ..

대학생 둘이서 사업단 찾아가서 후원금 받고 해커톤 개최하는 이야기
회고록2024. 1. 29. 08:00대학생 둘이서 사업단 찾아가서 후원금 받고 해커톤 개최하는 이야기

자기소개 저는 경남권 대학에서 메가브레인이라는 컴퓨터공학과 학술 동아리를 운영하고 있습니다. 이번에 교내에서 컴퓨터공학과 학우를 대상으로 학술 해커톤을 개최하였으며 이에 대한 회고를 한번 해보고자합니다. 해커톤 기획 해커톤 개최가 이번이 처음은 아닙니다. 작년에도 저랑 (전)팀장과 함께 동아리원만을 대상으로 해커톤을 개최해보았습니다. 다만 기존 동아리 내에서 진행하는 팀 프로젝트와의 차이점을 크게 못 느꼈었습니다. 그래서 이번 해커톤에서는 새로운 인연과 재미를 목적으로 하여 모집 대상을 컴퓨터공학과, 디자인학과 학우분들을 대상으로 기획하게 되었습니다. 어떻게 하면 참여자를 많이 모집할 수 있을까? 코로나 시기 이후로 학생의 "동아리는 의무다."라는 관념이 사라져서 저희가 행사 참여자를 모집한다고 하더라도..

Java2024. 1. 23. 15:03Assert를 통해 좋은 코드 작성하기

서론 최근 Github에서 코드를 살펴보던 중 assert 키워드의 존재를 알았습니다. 학교에서는 들어보지도 못한 키워드였지만 assert만의 장점이 굉장히 매력적이어서 한번 글로 남겨보고자합니다 예시 코드는 Java로 작성하겠습니다. 본론 Assert란 무엇인가? assert는 대부분의 언어에 존재하는 코드가 올바르게 동작하는지를 확인하는 용도의 키워드입니다. assert는 '표명하다'라는 의미로 조건(condition)과 함께 사용할 수 있습니다. 런타임 중에 Assert 키워드를 만나면 condition을 확인합니다. true이면 다음 라인으로 넘어가고 false라면 AssertError를 발생시킵니다. Assert의 장점이 무엇인가? Assert를 사용하지 않아도 if를 활용하여 충분히 올바르게 ..

#1 Java I/OStream이란
Java/의존성 제거 시리즈2024. 1. 2. 12:00#1 Java I/OStream이란

서론 이 시리즈는 3개월간 Spring, Docker, Jetbrains ide, Non-standard libraries etc 하이레벨 기술을 사용하지 않고 서비스를 구현해보는 시리즈입니다. 누구보다 자동화, 숏컷, 프레임워크를 좋아하지만 너무 맹목적으로 기술에 의존하지 않기 위해 공부합니다. 또한, 개인이 작성한 블로그 글을 읽지 않고 공식 문서만을 읽으면서 공부하며 자동완성, 붙여넣기 기능을 사용하지 않습니다. 기준: JDK 8 I/O Stream이 무엇인지 알아볼 것입니다. 본론 Stream이란 Stream은 '(계속) 흐르다'라는 의미를 가지고 있습니다. 저희가 일상에서 들을 수 있는 용어는 스트리밍(Streaming)으로 Java에서는 자원의 입/출력을 이야기합니다. 자바에서는 데이터를 I/..

image