본문 바로가기
728x90
반응형

분류 전체보기647

머신러닝과 딥러닝 이해 인공지능 : 기계가 지능을 갖도록 하는 것. '지능'은 주변 환경에서 기계가 적절하고 예측가능한 방식으로 동작하는 것. 문제는 '지능'이라는 개념이 매우 모호함. AI의 역사. -1956년 다트머스대학 워크샵에서 "사람처럼 생각하는 기계"라는 개념의 AI라는 용어 등장. 이후 다양한 AI기술이 개발되어왔음. 2000년대에 딥러닝등이 개발된듯.. 인공지능과 머신러닝,딥러닝의 관계 인공지능과 머신러닝,딥러닝은 기술범주에 있어 포함관계이다. 머신러닝: 특징 데이터를 입력 받아, 자동으로 분류 등과 작업을 수행할 수 있는 프로그램(알고리즘)을 자동으로 만들어 내는 기술 딥러닝: 특징 추출부터 추론/예측까지 전 주기의 자동화를 실현한 머신러닝의 한 분야. 최근 인공지능 붐을 가져오는데 실질적인 기여를 함. 머신러.. 2023. 3. 10.
글 삭제하기(DB 데이터 삭제하기) 글 삭제하기 기능을 추가해본다. 1. 상세페이지에 글 삭제 버튼을 추가하고, 버튼 클릭시 /articles/{{article.id}}/delete 로 이동하도록 한다. (이 때 경로에 {{article.id}}값을 넘겨서 GET요청에 삭제대상 글의 id정보를 넘길 수 있도록 했다) (HTML에서 DELETE요청을 할 수 없어서, GET요청을 하였다. 추후에 JS를 이용하여 DELETE요청 방식으로 해보겠다) 2. Controller에서 해당 경로로 @GetMapping을 한다. 3. repository를 이용하여 DB에서 삭제대상 Entity를 받아오고 4. 삭제대상이 존재하면(null이 아니라면) repository를 이용하여 해당 entity를 삭제함. (추가) 5. 삭제시, 삭제되었다는 알림창을 보.. 2023. 3. 9.
스프링부트 .sql 파일 실행오류, 엔티티 id자동생성 오류 강의를 따라하다, .sql파일에 sql스크립트를 적어 더미데이터를 넣는 과정이 있었는데, 똑같이 따라해도 오류가 발생했다. Article이라는 테이블에 값을 넣는 코드였는데, Article이라는 테이블을 찾을 수 없다는 오류가 발생했다. 오류는.. article테이블을 찾을 수 없다는 것 외엔 정보가 없어 이리저리 찾아봤는데.. hibernate가 초기화 되기 전 .sql이 실행되어서 그렇다는 답을 찾았다. 그리하여 해결을 위해 application.property 파일에 다음과 같은 코드를 작성하였다. spring.jpa.defer-datasource-initialization= true; 스프링부트에서는 기본적으로 애플리케이션을 실행할 때 데이터 소스를 즉시 초기화하는데, 위 코드를 작성하면 애플리케.. 2023. 3. 9.
Computer System Organization(Bus, Interrupt) 하나 혹은 여러개의 CPU, device controller들은 공유 메모리에 접근가능한 common bus에 연결됩니다 CPU와 devices 들이 동시에 실행된 경우 메모리 사이클을 위해 경쟁하게 됩니다. (BUS를 사용하기 위한 경쟁.) Bus Bus는 3개의 버스로 이루어져 있습니다. -address bus :주소를 옮기는 버스 -data bus :데이터를 옮기는 버스 -control bus :데이터를 쓸건지 가져올건지 등의 조작을 전달하는 버스 (참고: 32bit 아키텍쳐 등을 이야기할 때 32비트는 한번에 처리할 수 있는 데이터의 양, register의 크기, bus의 크기가 모두 32bit라는것임. 합쳐서 32비트가 아니라 각각이 32비트.. address bus가 32bit면 2^32개의 .. 2023. 3. 9.
Network Layer 이 블로그 글을 참고하여 공부하지 마십시오. 기록용으로 막 써내린 막장 글이므로 도움은 커녕 혼란만 가중시킬 뿐입니다. Layering Application Transport Network DataLink Physical 인접한 레이어끼리만 소프트웨어적인 인터페이스로 상호작용할 수 있다. 왜 레이어링 할까? 1. Reduce complexity: 복잡성을 줄일 수 있어서 2. Improve flexibility: 유연성을 증진하기 위해서 레이어가 나누어져 있기 때문에 유지,관리가 더 용이해진다 그런데, 레이어링의 단점도 존재한다. -최적의 성능을 내지 못한다. 레이어마다 참조할 수 있는 정보의 한계가 있다. (application 레이어에서는 application 레이어에 해당하는 헤더 정보만 볼 수 있.. 2023. 3. 9.
Network Core: Circuit switching, Packet switching Network Core : Mesh of interconnected routers 네트워크 코어에서 데이터를 전달하는 방법은 1. Circuit switching 2. Packet switching 이 있다. Circuit switching bandwidth를 나누어 사용하는 방식이다. 자동차 도로를 여러 차선으로 나눈다고 생각하면 된다. 사전에 Call setup을 통해 리소스를 할당해야 하고, 전용 도로(회선)으로 나눠놓으니, 성능이 보장된다는 장점이 있다. 그러나, 옆 도로에 차가 없는 상황에서도 내 전용 도로만 사용해야하기에 속도가 불필요하게 느릴 수 있다. Packet switching 오늘날 사용하는 방식이다. 도로를 나누지 않고 공유한다. 따라서, 한 번에 한 패킷만 전달가능하지만 그만큼 빠.. 2023. 3. 9.
게시물 수정하기(DB 갱신) 1.상세페이지에서 수정버튼을 누르면 /articles/글번호/edit으로 이동하고, 2. edit페이지에서 내용을 수정해 submit버튼을 누르면 /articles/update로 post요청을 한다. 3. /articles/update로의 post요청을 처리한다(DB 갱신) 우선, 글의 상세페이지를 보여주는 mustache파일에 수정하기 링크를 하나 추가한다. 링크는 /articles/{{article.id}} 로 해서 현재 글의 id값이 url주소에 사용되게 했다. Controller에서 /articles/{id}/edit 경로의 get요청을 처리한다. repository를 이용해 DB에서 해당id번호에 맞는 entity를 찾아, articleEntity변수에 저장한다. view로 데이터를 전달하기 위.. 2023. 3. 9.
리다이렉트 설정하기 글 작성버튼을 눌렀을 때, 해당 글의 상세페이지로 이동했으면 좋겠다. 리다이렉트를 해주면 된다. PostMapping하고있는 컨트롤러의 리턴으로 redirect:/경로 를 적어주면 된다. 여기서 글의 id는 saved.id에 있으므로 getter를 이용하여 id값을 꺼내 썼다. articles/index.mustache 에서는 타이틀을 누르면 해당 글의 상세페이지로 이동하도록 했다 간단하게 title을 a태그로 감쌌다. 2023. 3. 8.
DB의 모든 데이터 목록 가져오기 저번시간 특정Id의 아티클 데이터를 가져온것에 이어, 이번에는 모든 아티클 데이터를 가져와, 글 목록을 보여주자. 방법은 지난시간과 매우 비슷하다. 컨트롤러에서 1. repository가 DB에서 모든 데이터를 가져옴 2. entity 리스트를 모델에 등록 3. 뷰페이지 설정 을 하면 된다. /articles로 GetMapping해주고, repository.findAll() 메소드를 이용하여 아티클 엔티티 묶음을 가져온다. 이 때, articleRepository.findAll()의 리턴타입은 Iterator인데, ArticleRepository클래스 파일에서 findAll메소드를 오버라이딩하여 ArrayList로 반환하게 해주었다. . 그렇게 가져온 값은 List 타입 변수에 저장해두고, 뷰로 데이터를.. 2023. 3. 8.
CG의 HW&SW Hardware - 출력장치 -Vector displays devices -Raster displays devices Display techniques in CGs - 출력 기법 -Random scan displays -Raster scan displays Random scan displays 아날로그 형태로 출력한다.(penplotter는 기계가 펜으로 그림을 그려줌) 객체만 획 단위로 연속적으로 그린다. 흑백 이미지만 가능(색을 바꾸는것은 펜을 바꾸어야함) 사실감 있는 표현이 힘듦 메모리 절약됨 새로운 기술 적용이 힘듦 확대해도 부드러운 이미지(확대시 퀄리티 좋음) JPG,GIF,BMP,TIF등의 확장자 Raster scan displays 주사선을 따라 pixel단위로 그림 디지털 형태로 출력한다... 2023. 3. 8.
데이터 조회하기 DB의 데이터를 조회하여 웹 페이지로 확인해보자. 이전에, /articles/new 에 접속해서 데이터를 입력하면, DB에 해당 데이터를 저장하도록 했다. 이번에는 /articles/1000 에 접속시 id가 1000인 데이터를 꺼내 보여줘보자. 1. 사용자가 브라우저를 통해 데이터를 요청함. /articles/{id} 2. 요청 url을 컨트롤러가 받아, 받은 url에서, 찾고자 하는 데이터의 정보를 repository에 전달. 3.repository는 DB에 데이터 요청, DB는 entity를 repository에 전달. 4. entity를 Model을 통해 View로 전달. 우선 View부터 만든다. 표 형식으로 보이게 했고, id, title,content를 보여준다. article이라는 데이터를.. 2023. 3. 8.
롬복(Lombok) 사용하기(생성자 코드 줄이기, 로깅) 롬복을 사용하여 리팩터링하기. 리팩터링으로 코드를 압축시킬수도 있고, 출력시스템을 간단하게 로깅으로 바꿀 수도 있다. 우선 롬복을 사용하기 위해 build.gradle의 dependencies에 아래 두 줄을 추가한다 compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' 이후, 화면 우상단에 있는 코끼리 모양을 눌러 롬복을 설치. lombok 플러그인도 설치한다. (설치후에는 Enable annotation processing을 체크해주어야 함) 생성자, toString 간단하게 생성하기 생성자와 toString.. 길던 코드를 다 지워버리고 클래스에 어노테이션을 붙이면 된다. 생성자는 @AllArgsCo.. 2023. 3. 8.
h2 데이터베이스 insert, select 데이터베이스는 데이터를 테이블 형태로 관리한다. 테이블은 행과 열로 구성되어있다. 웹 콘솔 접근하기. resources 아래 application.properties파일을 열어보면 아무것도 적혀있지 않은데, 이곳에 spring.h2.console.enabled=true 를 적어주면 h2 DB를 웹 콘솔로 접근할 수 있게 된다. localhost:8080/h2-console 로 접속하면 이러한 로그인창이 뜨는데, 중간에 JDBC URL을 잘 적어줘야한다. 이것은 어디서 확인하느냐? 서버 실행시키고 터미널을 보면 값들이 주루룩 나와있는데, 여기서 jdbc로 검색해보면 나온다. 이것을 저 JDBC URL에 붙여넣고 로그인 하면 된다. 그럼 대략 이런 창이 나온다. select문을 이용하고 run을 눌러보면 아.. 2023. 3. 8.
[Springboot] JPA를 이용하여 DB에 데이터 생성하기 JPA의 핵심 도구로는 Entity, Repository가 있다 Entity는 자바객체를 DB가 이해할 수 있게 규격화한 데이터임. 이렇게 잘 규격화한 데이터를 repository라는 일꾼을 통해 DB에 전달되고 처리됨. 우선, DTO인 ArticleForm 타입의 form을 toEntity()메소드를 이용하여 Entity인 Article타입으로 변환해야 한다. 이를 위해 1.entity패키지 내에 Article클래스를 만들어야하고 2.ArticleForm클래스 내에 toEntity()메소드를 만들어야 한다. 이것은 entity패키지의 Article클래스이다. 클래스를 JPA Entity로 지정하기 위해서 @Entity 어노테이션을 붙인다. title과 content필드에는 @Column어노테이션을 붙여.. 2023. 3. 8.
[Spring boot] 폼 데이터를 받아 컨트롤러에서 확인하기 1. 폼이 있는 view페이지 생성. form태그의 action과 method설정. 여기서 보낸 데이터는 DTO에 담김. 2. dto 작성 3. controller 작성 templates 폴더 아래에 articles폴더를 만들고 그 아래 new.mustache 파일을 생성했다. 여기에 form태그를 만들었는데, title과 content 입력 input이 있고, submit 버튼이 있다. action 경로는 /articles/creates 이고 메소드는 post로 설정. 각 인풋태그는 name을 설정해주었는데, 여기서 설정한 name이 다음단계에 만들 dto의 필드명과 같아야 한다. 기본패키지 아래 dto패키지를 만들고, ArticleForm 클래스를 작성하였다. 아까 input태그에 있었던 name인 .. 2023. 3. 7.
뷰 템플릿 레이아웃 나누기 이러한 레이아웃이 있다. 상단 네비게이션 바, 하단 푸터, 중앙부에 콘텐츠가 자리잡고있다. 네비게이션 바와 푸터는 어느 페이지든 항상 있을터인데.. 매번 그 긴 코드를 다 적어주어야 할까? 조립식으로 사용하자. (header.mustache) Navbar Home (current) Link Dropdown Action Another action Something else here Disabled Search HTML파일의 맨 위~ nav바까지의 모든 코드를 header.mustache 파일에 저장하였고 (footer.mustache) @myPage link footer또한 footer부분부터 html의 맨 아래코드까지 따로 footer.mustache에 저장하였다. {{>layouts/header}} {.. 2023. 3. 7.
[Spring boot] mustache템플릿, Controller, Model resources/static/에 저장한 파일은 /파일명 경로로 접속하면 해당 파일을 보여준다. .mustache 템플릿 엔진 사용하기. templates폴더 아래에 .mustache파일을 생성하고, 플러그인도 설치한다. (얼마전 Node.js강의에서 썼던 .ejs와 비슷하게 생각하면 될 것 같다) HTML인데 중간에 변수, 반복문 등을 넣을 수 있는 듯 하다. 변수는 {{변수명}} 으로 사용하면 된다. 그런데.. 이 파일을 어느경로로 접속시 보여줄건지, 변수는 뭘 줄건지... 를 정해야 하는데 그것을 각각 Controller, model이 담당하게 된다. Controller, Model java폴더 아래 디폴트폴더 아래에 controller라는 패키지를 하나 생성한다. @Controller를 입력하여 .. 2023. 3. 7.
Operating System 운영체제란 무엇인가? 유저와 컴퓨터 하드웨어 사이에 있는 프로그램. 운영체제 시스템의 목표는 다음과 같다 -일반유저 관점: 프로그램 실행, 문제해결을 쉽게 하게 해줌 -시스템 관점: 자원관리(cpu,메모리,스토리지), 프로그램 제어 -편리성(convenience)과 효율성(efficiency). (ex: windows의 GUI는 편리성을 줌) 운영체제의 편리성과 효율성은 대개 trade-off 관계이다. 컴퓨터 시스템은 네 가지 요소로 구성됨. -하드웨어: CPU,memory, I/O devices(스토리지 등) -운영체제: (여러 응용프로그램 또는 유저들의 H.W 사용요청이 있을 때 자원관리를 함) -응용프로그램 -유저 운영체제는 자원 할당자임. 물리, 추상화된 자원을 모두 다 관리함. Physical.. 2023. 3. 7.
[알고리즘] 선택정렬, 삽입정렬, 쉘 정렬 (추상클래스 AbstractSort) 더보기 public abstract class AbstractSort { public static void sort(Comparable[] a) {}; protected static boolean less(Comparable v, Comparable w) { return v.compareTo(w)1칸 떨어진 원소들끼리 삽입정렬 순으로 정렬을 진행함. 그럼 뒤에있는 원소가 제일 작은 값일때도 금방 앞으로 보낼 수 있게 된다. public class Shell extends AbstractSort{ public static void sort(Comparable[] a) { int N = a.length; int h = 1; while(h=1) { for(int i=h;i.. 2023. 3. 7.
[자바] 백준 3758번: KCPC https://www.acmicpc.net/problem/3758 3758번: KCPC 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 테스트 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫 번째 줄에는 www.acmicpc.net Team클래스를 만들고, Team[] list에 각 팀의 정보를 저장한 후 문제에서 제시한 조건대로 정렬하여 순위를 매기면 된다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWri.. 2023. 3. 5.
728x90
반응형