[Redis] Redis 3편. Spring Boot와 Redis | Lettuce, RedisTemplate, RedisRepository
·
DevOps/DevOps
개요 Redis는 다양한 언어와 함께 사용할 수 있다. 이번 포스팅에서는 spring boot 프로젝트에서 사용하는 Redis에 대해 알아보도록 한다. 현재 개발 운영 방식에 알맞은 방법으로 Redis를 도입할 수 있도록 각각의 라이브러리와 방식을 공부하는 것이 목적이다. 전체 코드는 깃허브에서 확인 가능하다. Lettuce와 Jedis 스프링 프로젝트에서 사용하는 레디스는 두 가지 종류가 있다. Lettuce Lettuce는 Netty 기반 라이브러리로 Asynchronous & Non-blocking으로 구현되어 있다. Netty란? 네트워크 애플리케이션 개발을 위한 오픈소스 자바 프레임워크로, 비동기 이벤트 기반의 네트워크 애플리케이션을 쉽게 개발할 수 있도록 관련 도구와 라이브러리를 제공한다. 자..
[Redis] Redis 2편. 기본 자료형
·
DevOps/DevOps
개요 인프런 실전! Redis 활용 강의를 듣고 정리한 포스팅이다. redis의 자료형에 대해 알아보고 익숙해지기 위해 예시 코드를 작성해보도록 한다. Redis 자료형 특징 데이터 타입에 따라 명령어가 다르다. 대소문자 구별을 하지 않기 때문에 명령어를 대문자/소문자 구분없이 작성 가능하다. Strings 문자열, 숫자, serialized object(JSON) 등 여러 자료형을 저장하는 Strings Type이다. 레디스는 int, Integer 등 별도의 숫자 관련 자료형 없이 모두 strings로 저장한다. strings로 저장되어도 사칙 연산이 가능하다. (Java를 가장 많이 쓰는 입장에서 이 점이 젤 신기했다.) Strings 명령어 SET lecture라는 변수에 “inflearn-red..
[Redis] Redis 1편. 개념과 특징, 설치 및 간단한 사용법
·
DevOps/DevOps
개요 인프런 실전! Redis 활용 강의를 듣고 정리한 포스팅이다. Redis의 개념과 특징, 설치, 간단한 사용법에 대해 정리한다. 해당 강의는 특정 프로그래밍 언어에 종속되는 것이 아니기에, spring boot에 redis를 사용하는 것은 후속편에서 포스팅할 예정이다. Redis 알아보기 Remote Dictionary Server의 약자로, 다수의 서버가 공유하는 해시 테이블이다. Remote: Redis 서버는 각각의 서버 안에 로컬하게 존재하는 것이 아니라, 개별적인 원격상 존재해서 다수의 서버가 공통으로 사용할 수 있다. Dictionary: key-value 쌍으로, 상수의 시간 복잡도로 사용이 가능하다. Redis 특징 표준 C로 작성된 오픈소스 인메모리 데이터 저장소이다. 백업을 제외한..
[인턴십] 2023 ICT 학점연계 인턴십 회고
·
회고 & 후기/회고 & 후기
개요총 4개월(+ 2개월 예정) 간 학점 연계 ICT 인턴십 업무를 수행하였고 이에 대한 회고를 작성하는 포스팅입니다.회고는 배운 것을 중심으로 총 5가지 사항으로 나누어보았습니다.회사의 운영과 협업 경험사용자가 있는 서버 운영 및 개선 경험 사내 세미나를 통한 프로그래밍 역량 강화 및 소통 능력 향상데이터 기반 사용자 경험 개선백오피스 개발  회사의 전반적인 운영과 협업 프로세스 파악스타트업 생태계의 성장 경험 인턴십 동안 빠르게 변화하는 스타트업 환경에서의 경험을 통해 깨달은 점은 능동적이고 유연한 태도의 중요성입니다. 초기 스타트업의 특성 상 예측 불가능하고 변화가 빠르기 때문에, 꼼꼼한 계획보다는 유연하게 대처하고 적응하는 능력이 중요하다는 것을 체감했습니다. MBTI 극한의 J를 달고있는 저로서..
[spring] null 처리를 위한 spring의 Stringutils
·
Dev/Spring & JPA
개요 서버 단 코드를 구현할 때 null 처리를 미리 해주는 것이 중요하다. 특히 요청과 응답에 대한 코드를 모두 작성하면서, 서버 개발자가 미리 null 처리를 잘 해주면 불필요한 트랜잭션을 막을 수 있음을 알게 되었다. 또한 null이 들어오면 안 되는 상황에서 null을 활용함으로써 적절한 예외 처리를 할 수 있고, 버그를 방지할 수 있다. 굳이 강조하지 않아도 기본적으로 중요한 null 처리, java spring 개발자는 이 널 처리를 어떻게 하면 좋을까? Stringutils 문서 를 확인해보면 Stringutils는 spring framework에서 제공하는 String 타입에 대한 메소드다. StringUtils (Spring Framework 6.1.2 API) hasText Check ..
[BackEnd] 메일 전송 시 CSS 적용(inline 자동 변환기)
·
Dev/Backend
개요JAVA로 특정 사용자에게 메일을 전송하는 프로그램을 개발하는데, 이때 메일은 html 파일로 템플릿을 만들어서 보낸다.템플릿에 CSS를 적용하면 CSS를 style 태그로 담은 페이지는 정상적으로 잘 작동하지만, 메일 발송을 할 때에는 정상적으로 작동하지 않는다. 이유와 해결방법에 대해 작성하는 포스팅이다.  문제상황과 이유, 해결 방법 메일 전송 시 CSS가 깨지는 이유Gmail, Naver 등의 이메일 서비스는 각 사의 보안상 메일 내용을 일부 변조를 하게된다. 이때 script, style등 head태그 내부에 작성하는 내용들이 메일 전송 시에 배제된다고 한다.  HTML에 CSS를 적용하는 방법은 3가지가 있다.외부 .css 파일을 적용style 태그를 사용하는 임베디드 방식각각의 HTML ..
[TypeScript] 클래스와 인터페이스
·
언어/JS & TS
JS, TS와 OOP JS의 변수와 함수는 모두 객체다. 이는 JS의 모든 객체가 프로토타입(prototype)이기 때문이다. 프로토타입 언어란 모든 객체가 최소한 하나 이상의 다른 객체(그들의 프로토타입으로부터) 상속을 받는 언어이다. 이때 상속되는 정보를 제공하는 객체를 프로토타입이라고 한다. 따라서, JS로 객체지향 코드를 구성하려면 애로 사항이 많았다. 이 문제를 해결하기 위해 ES6(ECMAScript 2015)부터는 클래스 문법을 추가하였고, 보다 자바스럽게 클래스를 구성할 수 있게되었다. 클래스 TS의 클래스 문법은 JS와 크게 다르지 않다. 다만, JAVA의 객체 지향 문법을 끌어와서 쓰다보니 JS에는 없는 것까지 사용하면서 몇몇 제약이 생긴다. JS의 클래스 선언 방식 class Stud..
[TypeScript] 함수 표현식 & Call∙Constructor Signature
·
언어/JS & TS
개요 JS와 비교하여 TS에서 함수 타입을 정의하는 방법, 이와 관련한 호출 시그니처와 생성자 시그니처에 대해 정리한다. 함수 타입 정의 가장 기본적으로 함수를 정의하는 방법은 다음 내용과 같다. 1. 함수의 반환값 타입은 추론되기 때문에 생략 가능하다. function add(a: number, b: number): number { return a+b; } 2. 화살표 함수도 반환값 타입은 생략 가능하다. const add = (a: number, b:number) => a+b; 3. type 별칭을 통해서 함수 타입을 정의할 수 있다. type GreetFunction = (a: string) => void; function greeter(fn: GreetFunction) { // .... } 이와 ..
[JavaScript] JS의 논리연산자, OR과 AND
·
언어/JS & TS
개요 JS의 논리연산자는 다른 언어에 비해 두드러지는 특성이 있다. 이러한 논리 연산자를 잘 다뤄야 명확하게 코드를 구현할 수 있다. JS의 OR Operator 전통적인 프로그래밍에서 OR 연산자는 불린값을 조작하는 데에 쓰인다. 우리가 일반적으로 생각하는 하나라도 참이면 true, 하나라도 거짓이면 false인 것이다. JS의 논리연산자가 불린값을 다루는 방법은 다음과 같다. alert(true || true ); // true alert(false || true ); // true alert(true || false ); // true alert(false || false ); // false 가장 아래 false || false인 경우를 제외하고 모두 true를 반환한다. 조금 더 구체적으로 알아..
[JavaScript] JS의 this
·
언어/JS & TS
개요 JS의 this 는 전통적인 프로그래밍 언어의 this와 다른 양상을 띈다. 이러한 this 의 역할을 잘 이해하고 사용하는 것이 중요하다. JS 강의 영상에 설명이 잘 되어 있어, 이번 포스팅을 통해 정리해본다. this this 는 호출한 객체를 가리키는 키워드이다. 즉, 호출하는 방법에 의해 결정된다. let person = { name: 'sebin', age: 20, printThis: function () { console.log(this); // person 객체 출력 console.log('this === person: ', this === person); console.log('this === window: ', this === window); }, }; // 그냥 함수 호출하면 t..
[TypeScript] Narrowing | Type Assertions & Type Guards
·
언어/JS & TS
Narrowing TS에서 타입 검사를 통해 조건을 좁혀서 특정 행동을 하는 것을 통칭하여 Narrowing이라고 한다. Type Assertions 타입 단언은 말 그대로 타입을 단언적으로 명시해주는 것이다. 타입 스크립트가 타입 추론을 통해 판단할 수 있는 타입의 범주를 넘어서는 경우, 더이상 추론하지 않도록 직접 지시한다. 💡타입 단언은 C나 JAVA의 타입 형변환과는 다른 개념이다. 형변환은 실제로 데이터 자료를 변환시키지만, 타입 단언은 실제 데이터를 바꾸는 것이 아니라 타입 정보를 명확히 남기는 것이므로 오직 컴파일 과정의 타입체킹에만 사용된다. (코드 자체에 에러는 발생하지 않지만 실행하다보면 오류를 일으키기도 한다.) 타입 단언 선언 방법 document.getElementById를 id가..
[백준/7785] 회사에 있는 사람 | 딕셔너리 | 코드 비교
·
PS/BOJ&Programmers
회사에 있는 사람 Baekjoon Online Judge Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다. www.acmicpc.net 회사에 출입하는 사람의 기록이 남는다. 이 기록을 통해 회사에 남아있는 사람의 목록을 출력한다. 알고리즘 회사에 남아있는 사람을 체킹해야 하므로 출입 카운트를 해주었다. 입장 + 퇴장은 무조건 짝수이므로 홀수 카운팅이된 사람은 회사에 남아있는 사람이다. 입력 받은 이름을 정답 출력에 사용해야 하고 각각의 사람마다 카운팅 기록을 남겨주어야 하기 때문에 딕셔너리를 활용했다. 전체 코드와 알게된 점 import sys; input = sys.stdin.readline n = int(input()) dic = dict() le..
[TypeScript] TS 기본 지식 | 정적타입언어, tsc, 타입
·
언어/JS & TS
개요 TypeScript 언어를 공부하는 과정을 정리한다. microsoft에서 제공하는 자료를 토대로 진행한다. TypeScript Basics Each and every value in JavaScript has a set of behaviors you can observe from running different operations. That sounds abstract, but as a quick example, consider some operations we might run on a variable named foo. If we break this down, the first runna microsoft.github.io 정적 타입이란? 동적 타입 언어와 정적 타입 언어 (정적 타입 검사(S..
[Docker] Docker Container OS와 VM | Docker Image Layer
·
DevOps/Docker
개요업무 관련해서 컨테이너, k8s 등 인프라 관련 발표를 진행할 일이 있었다. 이 업무를 맡으면서 컨테이너와 K8S라는 기술이 등장한 배경과 이점이 무엇인지에 대해 잘 이해했다고 생각했는데 뾰족한 질문들에 대한 답을 못했다.  질문 리스트는 다음과 같다.도커 OS와 가상환경 OS의 차이점. (왜 컨테이너 OS가 더 가벼운건지?)도커 이미지 생성 원리(도커 이미지 레이어)여러 컨테이너로 배포한다고 했을 때 port가 중복이 될텐데 그러한 문제는 발생하지 않는지?아무튼 질문에 대해 궁금하기도 하고, 확실히 알아야 할 것같아 이번 포스팅을 통해 정리해본다.  Host OS와 Guest OS 가상머신과 컨테이너의 차이점을 알기 위해서는 먼저 Host OS와 Guest OS란 무엇인가? 에 대한 이해가 필요하다..
[GCP] 인스턴스 접속 시 ssh key 접근 불가 해결 | ssh 없이 인스턴스 사용하기
·
DevOps/GCP
개요보통 서버에 SSH 접속 버튼을 눌러 접속하는데chmod 명령어로 ssh 키 관련 작업을 하고 서버에서 나간 이후....계속 아래와 같은 SSH 인증 관련 에러가 발생했다.    로그를 살펴보니까, Invalid ssh key entry 이런 오류가 발생했다.새로 키를 발급 받고 메타데이터에 추가하는 등 발버둥을 쳤지만 해결이 안돼서 다음과 같은 방법을 진행했다.  직렬 콘솔VM 인스턴스에서 직렬 콘솔에 연결을 설정하면 부팅 및 네트워킹 문제를 디버그하고 고장 난 인스턴스의 문제를 해결하는 등 여러 VM 인스턴스 관련 기타 문제 해결 작업을 수행할 수 있다. 실제로 포트를 연결하고 콘솔에 들어가보면 서버 상태와 관련한 로그들이 출력되므로, 문제 해결에 좋은 도구가 될 것같다.   직렬 콘솔을 사용한 ..
sebinChu
'분류 전체보기' 카테고리의 글 목록 (5 Page)