웹서버 http 서버 - 갑 / client - 을 → 따라서 client가 request하고 sever가 response함 request 시 url 요청한다. 그래서 http 서버는 static(=정적인) 데이터를 response 해준다 URL - 자원 요청 URI - 식별자 요청 흔히 아파치 사용함. 이는 jsp(자바코드) 요청이 오면 처리를 못하기 때문에 톰켓을 붙인다 jsp요청이 오면 톰켓에 제어권을 넘기고 톰켓에서는 해당 코드를 컴파일한 후 .html파일에 덮어씌운다. 그리고 다시 아파치에 돌려주면 아파치는 이를 client에 response한다. 일반적으로 웹브라우저에서 요청을 하는데 웹브라우저는 jsp를 읽을 수 없기 때문에 .html 형식으로 response 한다 서블릿 - 자바코드로 웹을..
JPA는 영속성 컨텍스트를 가지고 있다 영속성 → 데이터를 영구적으로 저장 컨텍스트(context) → 대상에 대한 모든 정보를 가지고 있음 JPA는 DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다 ORM의 특성 덕분에 가능하다. JAVA를 예로 들면 각 DB에 Obj 타입 데이터를 넣을 수 없는데 클래스 형태로 먼저 작성하고 이를 데이터베이스에 넣는 방법(ORM)으로 처리하기 때문이다 JPA는 OOP관점에서 모델링을 할 수 있게 한다 방언처리가 용이하여 Migration하기 좋음 JPA에 추상화 객체를 하나 만들고 필요한 것을 연결해서 쓰다가 변경해야하면 원래는 코드를 많이 바꿔야하지만 추상화객체에 연결된 부분만 바꿔주면 되도록 할 수 있다 HTTP가 무엇인가요? 소켓(Socket) - 운영..
JPA란? JAVA Persistnce API의 준말로 'JAVA의 데이터를 영구히 저장할 수 있는 환경을 제공하는 API' API란 Application programming interface 즉, 프로그램을 만드는 방법을 말한다 ※ 프로토콜과 인터페이스의 차이 프로토콜은 동등한 관계가 존재하는 약속(ex. www) 인터페이스는 상하 관계가 존재하는 약속 JPA는 ORM 기술이다 Object Relational Mapping, 자바 오브젝트를 데이터베이스에 연결하는 방법론 DB 테이블과 자바의 데이터는 타입이 다르다. 따라서 DB 테이블을 클래스를 통해서 모델링해야한다. 이 때 원래는 테이블을 만들고 자바에서 모델링하는데, ORM을 통해 이 과정이 반대로 진행되도록 한다. 즉, 모델링(JAVA클래스 생..
DI는 많은 필터를 지원한다 필터는 일종의 문지기 역할을 한다 스프링이 자체적으로 가지고 있는 필터를 사용할 수 있고, 사용 설정을 따로 하거나 직접 만들 수도 있음 톰캣이 가지고 있는 필터는 필터(filter)라고 부르고, web.xml이 이 역할을 한다 스프링 컨테이너가 가지고 있는 필터는 인터셉터(intercepter) 라고 부르며, 이는 AOP와 연관되어 있다 스프링은 엄청나게 많은 어노테이션이 있다 어노테이션 → 주석의 역할도 하면서 컴파일러가 읽을 수 있는 힌트를 준다 (일반 주석은 컴파일러가 무시함) // 부모클래스 class Animal() { run(); } // 자식클래스 Dog extends Animal(){ /* 상속된 클래스에서 @Override 할 경우 컴파일러가 실행되면서 자연..
자바는 프레임워크이다 프레임워크(Framework)란 틀(frame) 안에서 동작(work)한다는 뜻이다. 자바는 오픈소스이다 오픈소스(open source)는 공개되어 있는 자료를 말한다. 오픈소스는 공개되어 있기에 내부 구조를 파악할 수 있고 사용 시 불편한 점이 있다면 개선점을 기여(contribute)할 수 있다 스프링은 IoC 컨테이너를 가진다 IoC는 Inversion of Controll, 즉 제어의 역전을 말한다 일반적으로는 아래와 같이 새로운 오브젝트가 생기면 이는 이름은 같아도 다른 공간에 저장되어 있는 다른 데이터가 된다 // heap 메모리에 A 오브젝트가 저장된다 사과 A = new 사과(); public void make(){ /* heap 메모리에 새로운 A 오브젝트가 저장된다..
새롭게 시작
Bottom Navigation 이란? 앱 하단에 위치한 탐색 모음이다. 사용자가 탭 한 번으로 최상위 카테고리에 쉽게 접근 및 전환이 가능하도록 만든다. 탐색 모음을 하단에 배치한 것은 모바일 디바이스 사용성에 대한 연구 결과에 따른 것으로, 메인 기능 및 자주 사용되는 작업은 화면 아래쪽에 배치하는 것이 편리하기 때문이다. 사용방법 1. build.gradle에 implementation 해준다. ( ※ Android Studio 4.1.1 버전의 경우 기본 설정되어있다) 2. res 폴더 우클릭 - New - Android Resource File 3. 파일명 설정 후 Resource type을 'Menu'로 바꿔준다. 그리고 확인 4. 생성한 파일에 코드를 작성한다 5. 하단 내비게이션이 들어갈 ..
github rgithub repository 이름 변경 이름을 변경할 repository의 Settings에 들어가서 Repository name에 변경할 이름을 넣고 Rename을 클릭한다 깃허브(github)의 저장소(repository) 이름 변경은 간단하지만, repository의 URL 주소가 변경되기 때문에 기존 주소로는 git을 주고받을 수 없게 됩니다. 따라서 아래와 같이 후속 작업이 필요합니다 안드로이드 스튜디오에서 변경하는 법 1. 안드로이드 스튜디오 VCS - Git - Remotes를 눌러준다 2. Git Remotes에서 등록되어 있는 주소 수정버튼을 누른다 3. 변경된 주소 부분을 수정한 후 확인 버튼을 누른다 4. 정상적으로 작동하는지 테스트한다 git 프로그램으로 변경하는 법
github에 코드 버전 관리를 하면 공개(public) 혹은 비공개(private) 설정을 할 수 있습니다. 공개 설정을 하면 누구나 코드를 볼 수 있기 때문에 비공개 설정하는 것이 일반적인데요. 의도치 않게 저장소(repository)를 공개 설정으로 생성했다면 비공개 설정으로 다시 변경해 줄 필요가 있습니다 github repository public -> private 변경 1. github 로그인 후 공개 설정을 변경하기 원하는 저장소에 들어간 후 우측 상단의 Settings를 눌러줍니다 2. Settings 페이지의 가장 하단 부분에 Danger Zone에서 change visibility를 눌러줍니다 3. Change repository visibility 창이 뜨면 Make private를..
splash screen 이란? Splash screen은 이미지나 로고, 현재 버전의 소프트웨어를 포함한 그래픽 요소를 보여주는 화면으로 프로그램이 로딩되고 있다는 것을 사용자에게 알려주기 위해서 사용한다. ※ Meterial Design 가이드에서는 사용하지 않을 것을 권장하고 있으므로 꼭 필요한지 확인 후에 사용할 것. 사용방법 1. res/drawable 폴더에 splash_background.xml 파일을 생성하고 아래 코드를 입력한다 splash_background.xml 2. res/values 폴더에 styles.xml 파일을 생성하고 아래 코드를 입력합니다 styles.xml 3. SplashActivity class를 생성하고 아래 코드를 입력한다. SplashActivity.java ..
github 연동하기 1. 안드로이드 스튜디오를 실행한 후 VCS - Import into Version Control - Share Project on Github 2. github 계정으로 로그인한다. github 계정의 아이디/패스워드가 일치함에도 Credentials로 로그인이 안되는 경우에는 github에서 Token을 생성하여 로그인한다. 자세한 방법은 게시글 하단 참조. 3. 정상적으로 로그인 되었다면 github에 새로운 project를 생성할 수 있게된다. 4. github에 업로드할 코드를 선택하고 add 버튼을 눌러주면 된다 5. 이후 코드를 작성하고 commit - push 의 작업을 거치면 github에서 소스코드를 확인할 수 있다 github token 발행 방법 (Invalid..
git 용어정리 Repository : 저장소를 의미하며, 저장소는 히스토리, 태그, 소스의 가지치기 혹은 branch에 따라 버전을 저장한다. 저장소를 통해 작업자가 변경한 모든 히스토리를 확인 할 수 있다. Working Tree : 저장소를 어느 한 시점을 바라보는 작업자의 현재 시점. Staging Area : 저장소에 커밋하기 전에 커밋을 준비하는 위치. Commit : 현재 변경된 작업 상태를 점검을 마치면 확정하고 저장소에 저장하는 작업. Head : 현재 작업중인 Branch를 가리킨다. Branch : 가지 또는 분기점을 의미하며, 작업을 할때에 현재 상태를 복사하여 branch에서 작업을 한 후에 완전하다 싶을때 Merge를 하여 작업을 한다. Merge : 다른 branch의 내용을 ..
git이란 git이란 버전 관리 시스템(VCS, Version Control System) 중에 하나이다. 소스코드를 효과적으로 관리할 수 있게 해주는 무료, 공개 소프트웨어이다. 소스코드를 여러 개발 PC와 저장소에 분산해서 저장하기 때문에 중앙 서버와 로컬 저장소 중에 한 곳에 문제가 생기더라도 빠르고 쉽게 복원할 수 있다. ※ git은 VCS이고 github는 git과 연결하여 소스 코드를 저장할 수 있는 웹사이트 중 한 곳이다. ※ VCS는 말 그대로 파일의 버전을 관리해주기 때문에 계속 추가/변경되는 코드를 효율적으로 관리하는 것을 도와준다 ※ 버전 관리 시스템은 형상 관리 도구(Configuration Management Tool)라는 단어와 혼용하기도 한다 git을 사용하는 이유 - 여러명이..
개발자는 필요에 의한 개발을 해야한다 코딩을 배우기 전에 사무직으로 근무한 적이 있어요. 컴퓨터로 문서작성하는 것에 문제가 없는 사회초년생이었고 업무강도가 낮은 편이어서 코딩의 필요성을 느끼지 못했습니다. 다만, 스트레스 받는 일이 있었다면 바로 '단순 반복 작업' 이었습니다. 경력이 1년이든 10년이든, 누군가는 해야하는 작업인데 동네 중학생을 데려다놔도 할 수 있는 그런 일이요. 그 당시에는 '당연한 일' 이라고 생각했고, 별 생각없이 하루이틀 고생하면 완료되었기에 개선의 필요성을 느끼지 못했습니다. 시간이 지나서 코딩을 배우고나니 그 당시에 했던 일들이 무척이나 비효율적이라는 것을 깨닫게 되었습니다. 그러다가 부모님의 직장에서 사무 일을 도와드리는데 무척이나 수고스럽지만 별 것 아닌 반복작업들을 발..