IP(Internet Protocol) IP는 송신 호스트와 수신 호스트가 패킷을 보내 서로 정보를 주고 받는 인터넷 규약이다. IP address는 각 장치를 나타내는 고유의 주소를 말한다. 현재 IP주소는 IPv4/IPv6 두가지 체계를 사용하고 있다. IPv4는 32bit의 값을 8bit씩 끊어 .으로 나누는 방식을 사용한다. 약 43억개의 숫자를 가질 수 있는데 최근 대부분이 사용되어 할당이 종료되었고, 반납된 IP 주소를 받거나, 미리 확보해놓은 곳의 IP 주소를 받아 사용할 수 있다. IPv6는 4자리의 16진수 숫자 8개로 표기하고 :으로 나누는 방식을 사용한다. 아직 보급율이 1%도 되지 않지만 점차 사용율이 올라갈 것으로 생각된다. 특징 1. 비신뢰성(unreliability) - 패킷이..
99일간의 항해 5주차 주특기 심화주 주특기 심화주가 완료되었다. 기본주차에서 만들었던 게시판 기능에 로그인, 댓글 CRUD 등 여러가지 기능들을 추가하였다. 이번 주차에서는 클라이언트와 서버 간의 데이터 전송 부분이 많이 포함되어 있어서 이 부분을 한 번 더 확실히 다질 수 있었다. 과제 요구사항에서 프론트를 예쁘게 꾸미는데는 시간은 안써도 된다고는 했지만 그래도 텍스트만 나열할 수 없기에 어느정도의 틀은 만들어야했고 이 부분에서 시간이 조금 소모된 것 같다. 다음 미니 프로젝트주차에는 직접 프론트를 만들 일이 없어 서버에만 집중을 할 수 있을 것 같아 기대를 하고 있다!! 로그인 기능은 spring security를 사용했는데 생각보다 spring security가 해주는 부분이 많았고, 찾아보니 내..
99일간의 항해 4주차 주특기 주차의 시작(2) 스파르타코딩 Spring 수업을 월요일까지 완주하였다. 기초 수업이라 그런지 난이도가 그렇게 높지 않아 쉽게 이해하며 들을 수 있었다. 그리고 월요일 오후와 화요일까지 이틀동안 과제를 마무리하였다. 과제는 게시판 만들기었는데 로그인 기능 없이 기본적인 CRUD로 글 작성, 글 불러오기, 글 자세히보기의 3페이지 정도로 완성을 하였다. 그리고 그 이후로는 인프런에서 spring 기초반 수업을 계속해서 들었다. 인프런 수업은 이 기술을 어떻게 쓰는지보다는 왜 쓰는지, 원리가 무엇인지를 더 잘 알 수 있게 설명해주셔서 좋았다. 이전에는 의존성 주입이 왜 쓰이게 되는지 어렴풋이만 알고 자세한 내용은 모르고 사용하고 있었는데, spring 없이 순수 자바로만 프로젝..
99일간의 항해 3주차 알고리즘 3주차는 수요일까지는 알고리즘을 마무리하였다. 알고리즘은 40문제를 넘어 60문제까지 쭉쭉 돌파하였다. 41번 문제부터는 대부분이 난이도가 있는 주제의 문제들로 이루어져있다. BFS, DFS, 다이나믹 프로그래밍, 백트래킹 등의 주제들은 개념 자체도 쉽지 않았지만 개념 자체만으로 풀 수 있는 문제들이 아니라 특정한 방법을 찾아내는 머리도 필요하였다. 예를 들면 체스판에 퀸을 겹치지 않게 놓는 문제에서는 대각선까지도 신경써야했기에 왼쪽 대각선과 오른쪽 대각선을 배열로 다시 만들어서 방문을 확인하는 것이 매우 기발했던 것 같다. 그래도 지난주보다는 문제푸는 속도나 문제를 처음 접했을 때 어떤식으로 풀어가야될지에 대한 감이 빨리 왔던 것 같고, 앞으로도 매일 오전에 1시간 정도..
Thymeleaf Template engine의 한 종류이다. 동적으로 template를 제어할 수 있다. Spring에서는 가장 많이 쓰이는 Template engine이다. Freemaker, Velocity, JSP(Java Server Pages)와 같은 template engine과는 다르게 전체적인 마크업 구조를 흐트리지 않기 때문에 서버를 실행하지 않아도 쉽게 확인할 수 있다. Template Engine Template을 동적으로 제어 및 관리할 수 있다. 서버에서 내려주는 Data를 가지고 렌더링을 할 수 있기 때문에 유지보수에서 큰 장점을 가지고 있다.
Mave 과 Gradle Maven, Gradle은 빌드 관리 도구이다. 빌드란 소스코드 파일 및 프로젝트에서 쓰인 파일 및 자원(xml, propoerties 등)을 컴퓨터에서 실행할 수 있는 소프트웨어로 변환하는 과정으로 컴파일, 테스팅, 배포 등의 모든 작업을 일컫는다. 여기서 빌드 관리 도구란 위의 빌드를 자동으로 도와주는 도구이다. 어플리케이션을 개발할 때 수 많은 라이브러리가 필요하다. 이 때 우리가 하나하나를 직접 다운 받고 관리하기 힘들기 때문에 빌드 관리 도구를 사용한다. 특징 - 소스 코드를 컴파일, 테스트, 정적 분석 등을 통해 실행 가능한 어플리케이션으로 만들어주는 프로그램 - 라이브러리 자동 추가 및 관리 - 라이브러리 버전을 자동으로 동기화 Maven 현재 가장 많이 사용되고 있..
항해 2주차 2주차는 알고리즘 문제 풀이를 6일동안 진행하였다. 문자열 등의 쉬운 난이도부터 DFS, BFS, 백트래킹의 어려운 난이도까지 40문제를 풀었다. 처음 20문제 정도는 따로 공부를 하지 않아도 무리 없이 술술 풀어나갔던 것 같다. 하지만 그 후에 재귀함수 주제가 시작되는 부분부터 해당 알고리즘에 대해 따로 공부할 시간이 필요했다. 재귀적으로 문제를 풀 때마다 마치 영화 인셉션처럼 꿈에서 꿈으로 들어가는 그런 기분이었고, 틀린 부분을 찾는 것도 매우 쉽지 않았다. 어려운 문제들은 3시간, 4시간이 걸리도록 생각에 생각을 거듭하였던 것 같고 안될 것 같다고 생각되는 문제는 답을 한 번 보고 머리속에 넣은체로 다시 내가 직접 코딩을 해보았다. 학생 때 수학 문제 푸는 걸 좋아했던 것처럼 알고리즘 ..
유클리드 호제법 유클리드 호제법에서 호제법이란 두 수가 서로 상대방 수를 나누어 원하는 수를 얻는 알고리즘이다. 알고리즘에서는 최대 공약수를 얻는데 사용된다. 개념 정수 A, B가 주어지는 경우 A와 B의 최대 공약수는 A를 B로 나눈 나머지를 R이라고 할 때 B 와 R의 최대 공약수와 같다. 여기서 B와 R의 최대 공약수 역시 B를 R로 나눈 나머지를 R2라고 할 때 R과 R2의 최대 공약수와 같다. 이런식으로 재귀적으로 숫자를 줄여갈 수 있으며 나머지가 0이 될 때 마지막으로 숫자를 나눈 값이 최대 공약수이다. R = A % B R2 = B % R R3 = R % R2 .... 0 = Rx % Rx-1 최대 공배수는 Rx-1이 된다. 최소 공배수는 최대 공약수만 알면 쉽게 구할 수 있다. A, B가 ..