목록분류 전체보기 (40)
백엔드 개발자
최근 카카오 데이터센터 화재로 학교에서 배운 데이터센터가 생각이 났다. 분명 자연재해나 사고를 대비해 같은 지역에 여러 개, 혹은 범위가 더 넓게 배치되는 등 더 높은 단계일수록 점점 거리가 확장되면서 보안 수준이 높아졌던 것 같은데 이번 카카오는 그렇지 않은 것일까 하는 생각이 들었다. 그리고 이런 내용을 배웠지만 이 사건에 대해 제대로 말할 수 없던 것이 아쉬웠다. 그래서 오늘 데이터 센터 내용을 간단히 다시 정리해보려고 한다. 우리 전세계는 네트워크 통신망 인터넷으로 모두 연결되어있다. 그래서 모든 It 기반의 일들은 이러한 통신망과 데이터센터를 거치게 되어있다. 데이터 센터는 서버들의 집이다. 각각의 렉에 수만대의 서버가 꽂혀있고 그것들이 모여있다. 데이터 센터는 사용목적에 따라 두 가지로 나뉜다..
양자컴퓨터는 양자역학의 기술을 이용한 컴퓨터이다. 큐비트 정보 단위의 사용한다. 현재 컴퓨터에 사용되는 단위는 비트이다. 비트는 0과 1로 이루어져 있어 0이거나 1이 된다. 그런데 큐비트는 0과 1을 동시에 가지고 있다. 기존 비트에서는 0과 1 두가지로 나눠진다면 큐비트는 한번에 연산이 가능한것이다. 기존 컴퓨터에서 정답을 찾기위해 이쪽 길로 가보고 저쪽길로 가보고 한 번 확인을 해야 다음길로 갈 수 있다. 하지만 큐비트는 그것을 한 번에 계산하기 때문에 속도를 엄청나게 줄이게 된다. 장점 장점은 속도가 빨라진다. 특히 경우의 수와 같은것이 가장 크게 돋보이는 장점인데, 경우의 수 계산이 엄청 빨라지게 되면서 예를 들어 백신과 같은 여러 경우의 수로 실험을 하는 등의 일처리가 빨라지면서 백신이 빨리 ..
간단한 개념 동형암호는 암호화 한 상태의 값으로 계산한 값과 암호화 하지 않은 상태의 값으로 계산한 값이 같다고 하여 동형암호이다. 한마디로 암호화 된 상태로 연산을 할 수 있는 기술이다. ex) 한 마법사가 있다. 마법사는 고장난 물건을 모두 고쳐줄 수 있다. 우리는 이 마법사에게 고칠 물건을 상자에 넣어 잠근 채로 보낸다. 그럼 마법사는 상자안에 무엇이 든지 모르지만 물건을 고쳐주고 우리는 다시 상자를 받아 확인할 수 있다. -> 고칠 물건이 무엇인지 알리지 않아 노출될 위험없이 결과를 받을 수 있다. 그래서 장점은 암호화 된 상태로 연산을 하기 때문에 기존 개인정보가 노출될 위험이 적다는 것이다. 요즘 개인정보가 많이 쓰이는데 동형암호를 이용하여 프라이버시를 지킬 수 있다. 하지만 단점은 연산 속도..
프리코스 2주차는 기능 요구사항 프로그래밍 요구사항 과제 진행 요구사항 을 만족시키면 되었고 주요 과제는 기능 작성 전 기능 목록을 미리 readMe 파일에 올리는 것. 그리고 커밋 컨벤션에 맞춰 기능단위로 커밋하는 것이었다. 기능 목록을 미리 작성하는게 처음이라 너무 익숙하지 않아 코드 작성도 전에 많이 고민이 되었다. 또 커밋 컨벤션을 처음 지키려니 간단한데도 의심이 많이 들었다. 겨우 적응을 하니 그 이후 기능들은 아주 쉽게 작성되었고 테스트 코드도 처음 작성해 보았다. 그런데 웬걸 스프링 강의를 들으며 눈으로 보긴했지만 처음 작성해 보는데 아주 술술술 잘 작성하였다. 그리고 작은 단위로 미리 테스트 코드로 실행하여 자동 확인되니 아주 재미있고 편리했다 !! 앞에서 BufferedReader 사용으..
이번 3주차는 로또 게임 기능을 구현하는 것이었다. 기능요구사항 프로그래밍 요구사항 과제 진행 요구사항을 지켜 프로그램을 작성하면 된다. 기능요구사항은 크게 어렵지 않다. 하지만 그 외 요구사항들과 코드 컨벤션 등 여러가지 지켜가며 코드를 작성해야 하는것이 에너지가 많이 소모되었다. 예외 처리도 신경써야 했다. 이번 주차에서 저번 주차와 달라진 것은 객체 지향 프로그래밍 이었다. 막상 기능도 나누고 클래스도 나누고 .. 들어만 봤지 실제로 구현해본적은 없어서 시작이 많이 어려웠다. 저번에는 한 파일에 모든 함수를 다 넣어 작성했었다. 겨우 완성하고 오늘 피드백 문서를 보니 고쳐야 할 게 너무 많았다. 그래서 직접 내 코드에 코드리뷰를 남겼다. 함수 쪼개기 노력과 모든 것은 객체라는 마음.. 을 가지고 노..
1주차 후기를 쓰고 내가 보기에도 이건 아니다 싶어 비공개로 등록한 후 다른 사람들의 주간회고록을 살펴봤다 아니 사람들이 아니라 사람이었다. 한 사람의 후기를 보자마자 내가 아주 형편없는 글을 썼다는 것을 알았다..^^ 그래서 다시 작성.. 나름 저번에 readMe 작성하느라 배운 스킬^^ 이 있으니 다시 잘해보자. .. 하려다가 하지 못했다 이게 최선인가 보다 이전에 작성한 후기.. 나름 고심끝에 작성한.. -------- 이번 우아한테크코스 5기는 신청한 인원 모두가 프리코스에 참여할 수 있게 됐다 프리코스도 선발 과정이지만 이것 자체가 성장을 할 수 있는 과정이라고 한다 총 4주차로 진행되는데 수요일날 미션을 받고 1주차가 시작되었다. 수요일 부터 다음주 화요일까지인데 그 기간동안 자유롭게 미션을 ..
SOLID 란 ? SRP - Single Responsibility principle (단일 책임 원칙) OCP - Open/closed principle (개방-폐쇄 원칙) LSP - Liskov substitution principle (리스코프 치환 원칙) ISP - Interface segregation principle (인터페이스 분리 원칙) DIP - Dependency inversion principle (의존관계 역전 원칙) SRP 단일 책임 원칙 - 한 클래스는 하나의 책임만 가져야 한다. 한 클래스 안에 여러가지의 기능이 있으면 유지보수나 변경이 어려워진다. 나중에 이 클래스가 하는 기능이 어떤 것인지 모를 수도 있게된다. 이게 뭐하는 클래스지?? 또 기능을 너무 세세하게 나눠놓는 것..
유클리드 호제법 a 와 b의 최대공약수는 b와 (a%b)의 최대 공약수와 같다 (a>b 일 경우) ex) 12 와 8의 최대 공약수는 12나누기 8의 나머지 값인 4와 8의 최대 공약수와 같다. gcd(12,8) == gcd(8,12 mod 8 ) 확장 유클리드 호제법 전혀 어렵지 않다. 유클리드 호제법과 유사하다. 선형 방정식 ax + by = gcd(a,b) 일 경우 x와 y의 값을 구할 수 있다. 유클리드 호제법을 적용한다. 위 식에서 gcd(a,b) == gcd(b, a%b) == gcd(a%b , b%(a%b)) .......... 이런식으로 유클리드 호제법을 적용해주게 된다. 어떻게 예를 들어 a = 300, b = 200 일 때, 300x + 200y = gcd(300, 200) 이라 하면 ..