본문 바로가기

전체 글71

[우아한테크코스 3기] 레벨 3 - 회고 언젠가부터 남과 비교하는 것이 익숙해졌어요. "이건 누구보다 잘해, 이건 누구보다 못해"라는 생각들은 성장의 밑거름이 될 때도, 되려 독이 될 때도 있었어요. 앞의 생각들은 "쉽다", "힘들다"라는 무서운 생각 또한 들고 오기에 이를 쉽게 떨쳐버릴 수 있는 저만의 개발자 성장 체조 원칙을 공유해보려 해요. 개발자 성장 체조 원칙 원칙 1 - 키보드에서 손을 뗀다 생각을 코드로 작성하는 것은 재밌어요. 다만 생각을 코드로 옮기기 전, 옳은 방향인지 한 번 더 고민해봐요. 동료와 생각을 공유해봐도 좋고요. 원칙 2 - 대충 아는 것은 아는 것이 아니다 "~에서 봤는데", "~가 이렇게 하던데"라는 말은 무게감이 떨어져요. 적용하려는 기능이 왜 필요한지 장/단점이 뭔지 알고 적용해봐요. 기능의 필요성을 찾아가.. 2021. 9. 27.
[DB] 정규화란? 데이터베이스 정규화(Normalization)는 데이터 중복을 줄이고 데이터 무결성을 개선하기 위해 정규화 단계에 따라 관계형 데이터 베이스를 구조화하는 프로세스예요. 이상 현상(Anomly) 정규화되지 않은 관계에서 관계를 수정(업데이트, 삽입/삭제) 하려고 하면, 아래와 같은 부작용이 발생할 수 있어요. 업데이트 이상 업데이트 후 동일한 정보가 여러 행에 표시될 수 있어요. 삽입 이상 테이블에 값을 못넣게 될 수 있어요. 위 그림에서 아직 어떤 과정도 지정되지 않은 교수의 경우, 과정 코드를 null로 설정하는 경우를 제외하고는 기록 할 수 없어요. 삭제 이상 위 그림에서 일시적으로 어떤 과정에도 배정되지 않으면, row자체가 사라질 수 있어요 위와 같은 문제들을 해결하기 위해 정규화 단계가 도입되었.. 2021. 9. 25.
[Java] Java7과 Java8의 특징 정리 Java7의 특징 Try-with-resources 지원 다이아몬드 연산자를 활용한 Type Reference(타입 추론)지원 다중 Exception Catching 숫자 리터럴에서 언더스코어(underscore) 지원 Switch문에서 String 객체 사용가능 @SafeVarargs 지원 Java8의 특징 Heap Permanent Generation 제거 Interface Default and Static Methods Functional interfaces Lambda expressions Method References Date and time API 지원 Optional 지원 Stream API Collections Parallel Array Sorting (배열 정렬의 병렬처리) Bas.. 2021. 9. 18.
[Java] 해시 함수(Hash Function)란? 해시 함수는 임의의 길이를 갖는 메시지를 입력받아 고정된 길이의 해시값을 출력하는 함수예요. 저장된 자료의 양에 상관없이 원소 하나를 저장하고 검색하는 것을 상수 시간에 가능하게 하기 위해 해시 테이블이 나왔어요. Hash 함수 임의의 길이의 데이터를 고정된 길이릐 데이터로 매핑하는 함수예요. h(x) = x mod 13 위와 같은 계산값을 좋은 해시 함수의 조건 계산이 간단해야 함. 입력 원소가 해시 테이블 전체에 고루 저장되어야 함. (해시 충돌을 막아야 한다는 말이에요) 위에서 정의한 함수에서 7과 20의 값을 입력하면 같이 7이라는 출력값이 나와요. 이때 해시 충돌이라 얘기해요 해시 충돌 해결 체이닝 같은 주소로 해싱되는 원소들을 모두 하나의 연결 리스트에 매달아서 관리, 원소를 검색할 때는 해당.. 2021. 9. 14.
[Docker] —memory 옵션 kernel 예외 docker run -it --name swap_500m \ --memory=200m \ --memory-swap=500m \ ubuntu:14.04 위와 같은 명령어를 실핼할때 WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. 커널 설정의 문제로 swap에 대한 제한을 지원하지 않는다는 경고문구가 떠요(컨테이너는 실행됨!). 지금 사용하는 리눅스 커널은 swap limit capabilities를 지원하기에. grub 설정을 바꾸고 재시작해요. sudo vim /etc/default/grub 아래 내용을 추가해요. ... GRUB_CMDL.. 2021. 8. 29.
[DB] 하이버네이트(Hibernate)란? ORM 기술에 대한 명세인 JPA(Java Persistence API)의 구현체의 한 종류 JPA의 구현체이므로 JPA의 특징을 함께 정리했어요. Hibernate란? 하이버네이트는 자바 언어를 위한 ORM 프레임워크에요. JPA의 구현체로, JPA 인터페이스를 구현하며, 내부적으로 JDBC API를 사용해요. JPA는 관계형 데이터베이스와 객체의 패러다임 불일치 문제를 해결할 수 있다는 점과 영속성 컨텍스트(엔티티를 영구 저정하는 환경) 제공이 큰 특징이에요. JPA 자바 애플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스에요. 라이브러리가 아닌 인터페이스이므로 특정 기능을 하진 않아요. JDBC 자바 프로그래밍 언어와 다양한 데이터베이스 SQL 또는 테이블 형태의 데이터 사이에 .. 2021. 8. 25.
[AWS] EC2 인스턴스 생성하기 이번 포스팅은 네트워크, 서브넷 설정과 보안그룹 설정이 완료되어있다는 가정으로 작성됐어요. EC2 서비스 선택 인스턴스 시작 버튼 클릭 단계 1: Amazon Machine Image(AMI) 선택 - 서버 환경에 따라 선택 단계 2: 인스턴스 유형 선택 - 프리티어는 t2.micro 선택 (과금의 위협) 단계 3: 인스턴스 세부 정보 구성 (서브넷 설정이 완료됐음을 가정) 퍼블릭 IP 자동 할당 서브넷 사용 설정(비활성화)을 고를 경우 DHCP 주소가 제공돼요 활성화를 할 경우 퍼블릭 IP가 할당돼요 비활성화를 할 경우 퍼블릭 IP가 할당되지 않으며 외부 인터넷에서의 접속이 차단돼요. 주의할 점은 VPC내에 퍼블릭 서브넷이 없는 경우 외부(인터넷)에서 접속이 불가능해요. 외부에 공개하면 안 되는 중요한.. 2021. 8. 23.
[Java] Json Data를 리스트로 변환하자 with Jackson 나라별 백신 접종률 데이터를 JSON으로 가져왔는데, 데이터양이 엄청나게 무시무시해요. (현재 기준 약 3만 개) 또한 JSON Data를 자세히 보면 컬렉션 안에 컬렉션이 있다는 것을 확인할 수 있어요. 저는 이 많은 데이터 중 오직 country 필드의 값이 World인 데이터만 가져오려고 해요. 어떻게 해야 할까요? [ { "country": "Afghanistan", "iso_code": "AFG", "data": [ { "date": "2021-02-22", "total_vaccinations": 0, "people_vaccinated": 0, "total_vaccinations_per_hundred": 0.0, "people_vaccinated_per_hundred": 0.0 }, { "dat.. 2021. 8. 20.
[OS]멀티 프로세스와 멀티 스레드의 차이는 무엇일까? 멀티 프로세스와 멀티 스레드는 둘 다 시스템의 컴퓨팅 성능을 높이는 데 사용되는 처리방식의 일종이에요. 혼용되는 키워드 실행단위 cpu core에서 실행하는 하나의 단위로 프로세스와 스레드를 포괄하는 개념이에요. 실행단위는 프로세스 일수도, 스레드일 수도 있어요. 프로세스 하나의 스레드만 가지고 있는 단일 스레드 프로세스에요. 동시성 한순간에 여러 가지 일이 아니라, 짧은 전환으로 여러 가지 일을 동시에 처리하는 것처럼 보이는 것이에요. 먼저 프로세스와 스레드에 대해 알아보도록 하죠. 프로세스 프로세스는 코드로 작성된 프로그램이 메모리에 적재되어 사용할 수 있는 상태가 된 것이에요. 프로그램 자체는 생명이 없어요. 프로그램은 보조 기억장치에 존재하며, 실행되기를 기다리는 명령어(코드)와 정적인 데이터의 .. 2021. 8. 20.