Android Studio 로 다른 팀원이 올려준 파일을 다운 받아서 여는데 웬 이런 창이 떴다 If you don’t trust the source, stay in the safe mode. Loading, running, or building a Gradle project may execute potentially malicious code from its build scripts. 무슨 뜻인지 모르겠지만 Grale어쩌구 라는 거 보니 프로젝트 올린 사람이랑 나랑 버전차이 같은 게 나서 인 것 같아서 일단 Trust Project를 눌렀다. 악성코드 있고 이런 건 아니니까 Trust눌렀지..ㅎㅎ 그랬더니 빌드가 안되고 이런 오류가 뜬다. Invalid Gradle JDK configuration fo..
전체 글
삼시세끼 잔잔하게 개발하는 프로그래밍 수련기 : Spring boot, Algorithm, Android[Spring] 스프링 부트 첫걸음 3 : REST API에 데이터베이스 연동 (MySQL, MyBatis) ** 해당 글은 하단 참고란의 영상을 보고 따라서 공부하며 기록한 글입니다. 이전글과 이어집니다. [Spring] 스프링 부트 첫걸음 : Android앱 REST API 서버 만들기 2 (POST, PUT, DELETE 요청, @RequestParam, Postman) [Spring] 스프링 부트 첫걸음 : Android앱 REST API 서버 만들기 2 (PUT요청, @RequestParam, Postman) ** 해당 글은 하단 참고란의 영상을 보고 따라서 공부하며 기록한 글입니다. 이전글과 이어집.. onedaythreecoding.tistory.com 이전글에서 get, post, put,..
database 데이터베이스 : 데이터를 저장하는 공간구조 Schema 스키마 : MySQL에서 DB와 거의 유사하게 사용되지만 엄밀히 말하면 다른 개념이라고 함. 데이터베이스를 설계하기 위해 먼저 그리는 지도같은 개념. 데이터베이스를 만들 때 제일 먼저 스키마를 생성하여 자신이 만들 데이터베이스의 구조를 정의함. 데이터베이스를 만들 때 기존에 만들어둔 스키마에 데이터구조를 추가해서 사용할 수 도 있음. 하지만 관련성없는 데이터구조들을 같은 스키마에 만든다면 나중에 관리와 찾기가 어려워짐. 따라서 서로 관련성있는 데이터구조들을 하나의 스키마에 관리하는 것이 좋음. MySQL을 처음 설치했다면 sys라는 스키마 하나만 존재함. -> 스키마에 테이블을 추가하는 방식으로 DB를 구성하는 것 같음.. 그럼 DB..
새 프로젝트를 클론받았다. 브랜치를 생성하고 첫 푸시를 하고 싶다. 근데 나는 gitlab이랑 github를 둘 다 사용하느라 git의 config정보인 name과 email을 global로 설정해놓지 않았다. 그래서 프젝 새로 생길때마다 설정해줘야 함 까먹지 마라~~~~ 혹시 기억이 안난다면 참고 : git 내 계정 name과 email 설정정보 확인 확인하고 가자. 아래 과정을 따라가자. 깃허브에서 로그인에 사용할 토큰을 발급받는다. -> 참고 : 깃허브 토큰 발급 방법 토큰을 사용해서 git remote set-url 명령을 활용해 리모트 저장소 주소에 토큰을 함께 설정한다.(이 방법이 제일 오류 안나더라..) -> 참고 : 토큰 로그인 방법 모음 git config 의 name과 email을 설정..
개발하다보면 원래 보던 형식이랑 달라서, 효율성이 떨어져서 불편한 경우가 있다~ 기존에 보던 방식대로 바꾸고 싶은데 참 귀찮고 그렇다 안드로이드 스튜디오에서 패키지 기준으로 보여주는 설정도 그 중 하나. 설정 아이콘에서 Compact Middle Packages 를 누르면 된다. 패키지 기준으로 보여지지 않는 상태에서는 패키지 기준으로 보여주고 패키지 기준으로 묶어 보여주는 상태에서는 폴더 기준으로 풀어서 보여준다.
새 프로젝트에 참여해보자! 다른 사람이 올려둔 레포를 클론받는 방법 cmd창을 열고 cd로 내가 작업할 폴더 위치로 이동한다. 이 위치에 프로젝트가 받아진다. 아래 git명령어들을 입력한다. git clone //프로젝트가 클론 받아짐 git branch //내가 작업할 새 브랜치 생성 git chechout //새 브랜치로 이동 //아무 변경사항이나 만든 뒤 //혹시 브랜치를 만드는 사이에 새 푸시가 있었는지 모르니 pull함 git pull origin main //(main이 아니라 master일 수도 있다.) git add . //변경사항 add git commit -m "커밋메세지 입력" git push origin 여기까지 하면 새 프로젝트 클론받고, 내가 작업할 새 브랜치 생성하고, 해당 브..
[Spring] 스프링 부트 첫걸음 2 : Android앱 REST API 서버 만들기 2 (PUT요청, @RequestParam, Postman) ** 해당 글은 하단 참고란의 영상을 보고 따라서 공부하며 기록한 글입니다. 이전글과 이어집니다. [Spring] 스프링 부트 첫걸음 : Android앱 REST API 서버 만들기 1 ** 해당 글은 하단 참고란의 영상을 보고 따라서 공부하며 기록한 글입니다. IDE 준비 Eclipse STS : Sping.io 사이트에서 Projects > Spring Tools 4 다운받아 설치(https://spring.io/tools) Spring Tools 4 is.. onedaythreecoding.tistory.com 이전글에서 GET으로 데이터 조회기능을 만..
[Spring] 스프링 부트 첫걸음 1 : Android앱 REST API 서버 만들기 1 (GET요청, @PathVariable) ** 해당 글은 하단 참고란의 영상을 보고 따라서 공부하며 기록한 글입니다. IDE 준비 Eclipse : 나는 설치되어있음 STS : Sping.io 사이트에서 Projects > Spring Tools 4 다운받아 설치(https://spring.io/tools) Spring Tools 4 is the next generation of Spring tooling Largely rebuilt from scratch, Spring Tools 4 provides world-class support for developing Spring-based enterprise appli..
merge 하려했는데 conflict난다고 안된다면 가장 쉽게 첫번째로 해볼 수 있는 해결방법~~ git stash //현재 로컬 변경상태를 따로 저장해두고 변경 전으로 돌아감 git merge //머지함. 머지가 잘 되면 이제 문제 없음. git stash pop //내 로컬 변경사항들을 다시 돌려놓음!(동시에 stash list에서는 해당 stash 내용이 사라짐) 차례로 입력하면 된다. git stash : 아예 새로 생성한 파일이 아닌 파일들의 commit 이전 내용들(add한 것도)을 잠시 없애주고 어딘가에 저장해둔다. 아예 새로 생성한 파일은 add 후 stash하면 적용된다. (https://wikidocs.net/17169) git stash list 만약 내가 stash 해놨던 내용이 있..
그동안 프로젝트를 몇 번 참여했는데 마구잡이로 하는 코딩에 기준을 좀 만들고 싶었다 돌아가기만 하면 장땡인.. 그런 코드 말고 좀 더 좋은 코드를 짜고 싶었는데 뭐가 좋은 코드인지 알아야 말이지 ㅋㅋ 그래서 책을 읽어보기로 했다. [Clean Code 클린 코드,애자일 소프트웨어 장인 정신] 저자 : 로버트 C. 마틴 이 책은 3개의 부분으로 구성되어있다. 1. 이론 2. 이론 적용 예시와 설명 3. 실전 풀 코드 이론 부분에서는 말 그대로 '어떤 게' 좋은 코드인지 그 방향성과 기준들을 제시한다. 여기에서도 매번 예제를 들어서 설명을 해 두어서 이해하기에 어려움이 없었다. (다만 이제 알록달록한 IDE의 효과가 없어서 한줄한줄 읽기 귀찮아하는 나를 제외하면) 그런데 고작 프로젝트 몇번 해 본 나에게는 ..
티스토리 스킨을 바꿔 보았다. Odyssey 오디세이 스킨으로! 그런데 글 수정 삭제 버튼이 없어서 구글링해서 버튼 만들고, 버튼이 너무 다닥다닥 붙어있길래 간단히 버튼 간 여백도 추가로 설정 해봤다. 블로그관리 > 꾸미기 > 스킨 편집 > html 편집 위 메뉴로 들어간다. html편집은 잘못건들면 큰일날 거 같지만.. 겁먹을 거 없고 세 가지만 확인하면 된다. 1. 코드를 삽입할 위치 2. 삽입할 코드 3. 삽입할 코드에서 내가 바꾸고 싶은 부분을 정확한 내용으로 바꾸기 이 세가지만 잘 확인하자!!! 나도 이번에 1번을 헷갈려서 애먹었다;; 하지만 사실상 오늘은 1,2번만 잘 보면 되니 쉽다. 하나씩 확인해보자 1. 코드를 삽입할 위치 html 화면을 한번 클릭해 커서를 두고 Ctrl+f를 눌러 '이..
Mediapipe : 여러가지 얼굴, 동작 등 인식 모델들을 제공함 OpenCV : 웹 캠 조작 Dynamic control → 아두이노 등 모터를 달아서 그 모터의 각도를 조절하는 데에 사용하는 듯. (?? 용도가 뭐지? Module이란 걸 가져다 쓰는 듯한데) 손가락 모델 가져오고 모델에 knn이라는 알고리즘으로 제스쳐 모델(?) 데이터들을 학습시킴 웹캠 이미지 읽어오기 각 조인트(점)의 x,y,z값ㅇ르 사용할거임 관절 벡터 만듦 Normalize : 각 벡터를 그 벡터의 길이로 나눠줘서 해당 벡터의 크기 1인 벡터를 구함 각도 구함 : 아크코사인 어쩌구.. 벡터의 각도를 구한다는 소리인 듯(즉 손가락 조인트마다의 각도를 구함. 이를 동작 구분하는 기준으로 활용. 라디안 값으로 나오니까 degree값..
상황 do-while문과 cin을 사용해 특정 값이 입력되기 전까지는 반복해서 입력을 받아 입력에 따른 작업을 하도록 했다. 그런데 특정 입력 부분만 되면 입력하고 엔터를 치는 순간 내가 이상한 값을 계속 입력하고 있는 것처럼 혼자 무한 루프를 돌았다 해결 cin은 입력받은 값이 입력을 저장하려는 변수의 자료형과호 호환되지 않으면 입력을 받지 않고 입력버퍼에 그대로 남겨둔 채 다음으로 넘어간다 입력버퍼에 남아있는 값이 다음 입력으로 인식되어서 무한루프를 도는 것처럼 보이게 된다. cin 입력값과 저장하려는 변수의 자료형이 맞는 지 확인하자 해결 그 외 알게된 것 cin : 입력버퍼의 개행문자나 공백 직전 값까지를 가져온다. 입력버퍼에 개행문자를 남겨둠. 개행문자를 남겨둬서 cin >>사용 후 cin.ge..
시간복잡도 정리 Dynamic 최단경로 : n^3 0-1배낭 : min(2^n, nW) 최적이진탐색트리OBST : n^3 Backtracking 그래프 색칠 노드의 수 : m^n Branch and Bound 0-1배낭 : 2^n 방법 핵심 정리 Dynamic: 작은 부분들부터 계산해서 Bottom-up으로 올라가며 작은 부분들의 결과를 이용해 다음 단계 결과를 계한하는 것. 의존적. 한번 계산한 값은 바뀌지 않음 principle of optimality 최적성원칙을 만족해야 함 - 큰 문제의 최적해는 최적의 작은 문제 해들로 구성되어야 함 최적화 문제 Backtracking : state space tree를 사용해 bound를 만족하는 노드에 대해 promising유망함을 점검하고 유망한 노드만 그..
Chap13 그래프의 응용 1. 스패닝 트리 (신장트리) 원래 그래프의 노드는 모두 포함. 간선은 최소로, 연결그래프를 유지하며 노드수-1개로 줄인 트리. 사이클 없음. 종류 깊이 우선 스패닝 트리 : dfs로 방문한 간선들로 만듦 너비 우선 스패닝 트리 : bfs로 방문한 간선들로 만듦 2. 최소 스패닝 트리 간선의 가중치(비용) 합을 최소로 하는 스패닝 트리 구하는 방법 종류 Kruskal 알고리즘(간선 수 e) 모든 엣지들 중 비용이 최소인 엣지들부터 추가해가며 사이클이 만들어지지 않도록 추가여부를 선택함 엣지를 크기순으로 정렬해두고 써도 되지만 min heap을 만들어 사용하면 더 효율적. 이 경우 heap구성시간 O(e) + 최소 엣지 탐색 시간 O(loge) = O(e+loge)소요. Prim..