분류 전체보기180 [Java] JVM의 동작 원리 (부제 : Java를 처음 공부하는 당신에게) Java의 탄생 배경Java는 1991년 썬 마이크로시스템즈(이하 썬)의 제임스 고슬링과 아서 밴 호프를 주축으로 한 엔지니어들이 플랫폼으로부터 독립적으로 실행 가능하도록 개발한 언어입니다. 참고로 여기서 플랫폼이란 운영체제와 CPU 아키텍처를 말합니다. 대표적으로 Windows, Linux, Mac 그리고 x86과 핸드폰에 주로 쓰이는 arm이 있습니다. 이해를 높이기 위해서, 잠시 91년도로 돌아가볼까요? 90년대 초는 C와 C++ 의 사용률이 높았던 시절입니다. 그들은 왜 당시 핫했던 C나 C++를 사용하지 않았을까요? 객체지향 프로그래밍을 하려면 C++로도 가능했지만, C++는 플랫폼에 따라 컴파일러에 차이가 있어 플랫폼 간 실행파일의 호환성이 보장되지 않았습니다. 이는 인터넷의 발전으로 다양한 .. Language/Java & Kotlin 2023. 9. 22. [GIT] .gitignore가 작동하지 않을 때 대처 방법 .gitignore에 제외하고 싶은 파일을 추가했음에도 반영되지 않는 경우가 있습니다. 그럴 땐 .git에 남아있는 캐시 때문인데요, 캐시를 제거해주기 위해선 아래와 같이 입력해주면 됩니다. git rm -rf --cached . 캐시를 제거하면 기존에 staging 영역에 있던 파일들이 unstaged 되므로, git add . 를 해줍니다. 이상으로 글을 마치겠습니다. CS/기타 2023. 6. 23. [Spring] JPA Auditing을 활용하여 생성/수정시간 자동화하는 방법 서론 오늘은 Spring Boot 환경에서 JPA Auditing을 활용하여 생성/수정시간 자동화하는 방법에 대해서 알아보겠습니다. 본론 BaseTimeEntity란 클래스를 만들어 생성과 수정 시간이 필요한 모든 요소의 상위 클래스로 지정하여, Entity들의 createdDate, modifiedDate를 자동으로 관리하겠습니다. JPA Auditing Entity 클래스의 상단에 @MappedSuperclass를 추가해줍니다. 이를 추가함으로써, JPA Entity 클래스들이 BaseTimeEntity을 상속할 경우 필드들(createdDateTime, modifiedDateTime)도 칼럼으로 인식하도록 만듭니다. 또 @EntityListeners(AuditingEntityListner.class.. Framework/Spring 2023. 6. 22. [Java] IntelliJ에서 Junit으로 테스트 환경을 구축하는 방법 서론 오늘은 Java와 IntelliJ 환경에서 테스트 환경을 구축하는 방법과 Junit을 활용해 간단하게 테스트 코드를 작성하는 방법에 대해서 알아보겠습니다. 본격적인 내용에 들어가기 앞서, 먼저 질문을 하나 드리고자 합니다. 우리(개발자)는 왜 작성해야 할까요? 테스트 코드를 작성해야 하는 까닭 자바를 활용한 백엔드에선 테스트 코드 없이 테스팅하기 어렵다. 제 경험을 이야기해보자면, 저는 주로 Javascript를 활용했기 때문에, 제가 작성한 코드의 결괏값을 확인하기 편했었습니다. console로 결괏값을 출력하면 끝이기 때문이죠. 사내에서 프론트엔드 개발할 때도 테스트코드의 필요성에 대해서 크게 체감하진 못했습니다. 반면 백엔드 개발은 테스트 코드 없이 각각의 기능을 테스트하기 어렵다고 느꼈습니다.. Language/Java & Kotlin 2023. 6. 22. [Java] 객체 생성 패턴이란? (빌더패턴, 자바빈패턴, 점층적 생성자 패턴) 서론 롬복의 @Builder 어노테이션과 빌더패턴에 대해 알아보도록 하겠습니다. 본론 개요 빌더 패턴은 객체를 생성할 때 사용하는 디자인 패턴 중 하나로, 동일한 프로세스를 거쳐 다양한 구성의 인스턴스를 만드는 방법 중 하나입니다. 객체를 생성하는 클래스와 표한하는 클래스를 분리하여, 동일한 절차에서도 서로 다른 표현을 생성하는 방법을 제공합니다. 빌더 패턴을 사용하는 이유 Builder 패턴은 "복잡한 객체의 구성과 표현을 분리하여 동일한 구성 프로세스가 여러 개의 서로 다른 표현을 생성할 수 있도록" 하는 것을 목표로 합니다. - Gang of Four design patterns 제가 느낀 장점은 한 마디로 객체를 생성할 때, 빠진 값이 없도록 생성하도록 돕는다는 것 입니다. 객체를 생성하는 디자인.. Language/Java & Kotlin 2023. 6. 21. [Architecture] (2) 시스템 요구사항의 종류 서론 이번 글에서는 시스템 요구사항 중 6가지 (성능, 확장성, 신뢰성, 보안, 배포, 기술 스택)에 대해 자세히 알아보겠습니다. Performance 먼저, Performance (성능)에 대해서 알아보겠습니다. 성능은 하드웨어 스펙과 작업량이 주어졌을 때, latency (대기 시간)을 최소화하고 throughput (처리량)을 최대화하는 것을 말합니다. 퍼포먼스 이슈의 원인은 요청이 쌓여서 응답이 느려지는 것이며, 이는 네트워크, db io, os run queue 등 다양한 요소에서 발생할 수 있습니다. 성능 측정 방법과 원칙 성능 측정 방법은 스펙과 작업량을 고정하는 것입니다. 성능을 향상시키기 위해서는 1) 효율성과 2) 동시성, 3) 성능, 4) 확장성의 원칙을 고려해야 합니다. 효율성은 리.. CS 2023. 6. 8. [Architecture] (1) 소프트웨어 아키텍처를 알아야 하는 이유 서론 오늘은 소프트웨어 아치텍처에 관해서 알아보도록 하겠습니다. 소프트웨어 아키텍처, 왜 배워야 할까? 여러분은 개발자와 소프트웨어 엔지니어의 차이를 아시나요? 저는 이 차이가 소프트웨어를 단순히, 개발하는 능력에만 국한되는 것이 아니라, 시스템 요구사항을 분석하고 개발할 수 있는 능력에서 온다고 생각합니다. 일반적으로 소프트웨어를 만들기 위해서는 기획 요구사항과 디자인에 대해 분석하고 개발합니다. 웹 프로그램을 만든다고 하면, 화면 설계에 맞게 UI와 페이지 디자인을 구현하고 DB ERD를 설계하고 백엔드 로직을 작성합니다. 개발은 이렇게 끝날 수 있습니다. 그렇지만 이렇게 한다고해서 시스템 요구사항을 만족시키느냐? 그렇지 않습니다. 대체, 시스템 요구사항이 뭔데? 시스템 요구사항이란 다음 6가지 기준.. CS 2023. 6. 8. [CSS] Pseudo-Element 중 ::before와 ::after에 관해 알아보자 서론 CSS를 사용하다보면, 다양한 Pseudo-Element를 사용하여 스타일링 해야 할 때가 있습니다. 오늘은 CSS Pseudo-Element(수도) 중 ::before와 ::after 관해 알아보는 시간을 갖도록 하겠습니다. Pseudo-Element란 Pseudo-element란 HTML element의 특정 부분에 스타일을 지정할 수 있도록 selector에 추가되는 키워드입니다. selector 만으로 원하는 element를 지정할 수 없을 때 사용합니다. 잠깐, selector에 대해서 모르신다구요? 대표적인 selector가 class selector죠. 아래 예시의 .box와 같이요. selector에 대해서 더 알고 싶으신 분들은 아래 링크를 참고 부탁드립니다. box .box { w.. Web/CSS 2023. 6. 4. [React] CRA(Create React App) 환경에서 env 파일 사용하는 방법 서론 CRA(Create React App) 환경에서는 API 끝점, 키 및 기타 설정과 같은 환경별 구성을 관리하는 것이 확장 가능하고 유연한 애플리케이션을 구축하는 데 매우 중요합니다. 다행히도, CRA는 환경 파일을 사용하여 환경 변수를 처리하는 간단한 방법을 제공합니다. 이 튜토리얼에서는 CRA 프로젝트에서 env 파일을 효과적으로 활용하는 방법에 대해 알아보겠습니다. 1단계: 환경 파일 생성 시작하려면 프로젝트 루트에 새 파일을 만들고 이름을 ".env"로 지정하십시오. CRA는 이 파일을 자동으로 인식하고 개발 중 환경 변수로 내용을 로드합니다. 파일 이름은 점으로 시작해야 하며 파일 확장명이 없어야 합니다. 2단계: 환경 변수 정의 .env 파일 내에서 환경별 변수를 키-값 형식으로 정의할 .. Framework/React & RN 2023. 6. 2. NVM을 활용하여, Node Version을 관리하는 방법 서론 오늘은 NVM을 활용하여, Node Version을 관리하는 방법에 관해서 알아보도록 하겠습니다. 설치 방법 설치 방법에는 2가지가 있습니다. curl로 설치 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.1/install.sh | bash wget으로 설치 wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.1/install.sh | bash 그러면 아래와 같은 메세지가 출력됩니다. => Appending nvm source string to /home/lesstif/.bash_profile => Appending bash_completion source string to /hom.. Language/JS(Node.js) 2023. 4. 22. [CSS] 마우스 오버(hover) 이벤트로 메뉴 화면 보이기/감추기 서론 대상독자 HTML과 CSS 만으로 화면에서 태그를 감췄다 보였다 처리해주고 싶은 개발자 본론 구현방법 먼저, 정답은 아주 간단합니다! CSS 가상선택자 :hover 속성을 활용하면 충분히 구현할 수 있습니다. 우선 먼저, css에서 label 태그로 마우스 오버 대상 태그를 생성하고 보여줄 목록을 ul 태그로 설정합니다. 메뉴에 대한 기본 속성을 display : none으로, :hover 상태를 display: block 등으로 지정해주면 됩니다. 이게 끝입니다!! 만약 리액트와 같은 UI 라이브러리를 사용한다면, 컴포넌트 onMouseEnter와 onMouseLeave 속성을 사용하면 됩니다. 리액트에서의 방법은 추후 다뤄보도록 하겠습니다. 실제 코드 See the Pen Untitled by .. Web/CSS 2023. 4. 19. [RN] React Native/Typescript 환경에서 env 파일 사용하는 방법 서론 대상독자 RN 개발 시, env 파일을 사용하고 싶은 개발자 학습목표 오늘은 RN Expo와 타입스크립트 환경에서 env 파일을 설정하는 방법에 대해서 알아보겠습니다. 본론 라이브러리 설치하기 // js yarn add react-native-dotenv; // ts yarn add -D @types/react-native-dotenv; react-native-dotenv를 설치해줍니다. 타입스크립트의 경우, 타입을 지정하기 위한 @types/react-native-dotenv 라이브러리를 추가로 설치해줍니다. babel.config.js 수정하기 그런 뒤, babel.config.js 파일에서 해당 값을 plugins 항목에 넣어줍니다. module.exports = function () { re.. Framework/React & RN 2023. 3. 27. 이전 1 ··· 3 4 5 6 7 8 9 ··· 15 다음 반응형