본문 바로가기

What I Learned27

[WIL] Day 9 IP알아내는 법. InetAddress사용하기. InetAddress ia = InetAddress.getLocalHost() 하면 현재 로컬호스트의 ip주소 알려줌 InetAddress.getAllByName(“www.google.com”)하면 해당 도메인의 ip를 알수가 있다. 서버는 ServerSocket(port)로 해서 열수가 있다. 그 다음에는 ss.accept()로 클라이언트를 기다리게 된다. 클라이언트는 접속할려면 ip와 port가 필요하다. 클라이언트도 Socker인스턴스를 만들게 되고 ss.accept()에 접속하게 된다. 그런후 accept()이후 socket을 리턴하게 됨. 클라이언트와 서버 측 둘다 소켓이 생성이 된 것이고 두 소켓은 서로 연결된 관계이다. 두 소켓은 inputst.. 2023. 5. 16.
[WIL] Day 8 왜 그렇게 하지? 다시 한번 목표를 설정해줄게. 현재 우리의 목표는 스크랩하려는 json파일을 한 프레임씩 스크랩할 때마다 그에 대응되는 이미지값의 이름을 생성해내는 txt파일의 이름과 동일하게 만들어줘야되. 그러게하기 위해서 우리는 그 통일할 이름을 “{json파일 이름 } + {frame_number}”로 통일하기로 했어. 다만 지금 우리의 현재 디렉토리에서 해당 그림이 위치한 디렉토리로 이동하는데에 어려움을 겪고 있어. 그래서 내가 디렉토리의 구조를 다시 알려줄게. 디렉토리의 순서대로 얘기해줄게. 먼저 제일 큰 “PRV” 폴더가 있고 그 안에 ‘label’과 ‘original’ 폴더가 있어. 그리고 먼저 ‘label’의 하위 디렉토리를 살펴보면… ‘label’ -> ‘CAT’ ‘DOG’ -> (‘D.. 2023. 5. 14.
[WIL] Day 7 https://aihub.or.kr/aihubdata/data/view.do?currMenu=115&topMenu=100&aihubDataSe=realm&dataSetSn=59 해당 웹페이지에서 반려동물 행동데이터셋을 확보. 제목은 “반려동물 구분을 위한 동물 영상”인데 데이터보면 고양이랑 강아지 행동 분류 데이터임. 여기서 어노테이션이 나는 바운딩박스 밖에 없는 줄 알았는데 여기는 몇가지 key point로 어노테이션을 해주었음. json파일이 주어졌는데 기존에 사용하던 Yolov5에서는 keypoint detection을 지원하지 않는듯 하다. 그래서 Yolov7-pose(이것도 오픈소스 제작한듯) 활용을 해서 yolo format으로 먼저 바꿔야할듯 하다. Yolov7-pose 제작자분 설명 링크:.. 2023. 5. 14.
[WIL] Day 6 Collection은 바구니 add()를 통해서 데이터 추가, size()는 데이터 갯수를 알려줌. 바구니의 데이터를 꺼낼때 iterator사용, 꺼낼게 있는지 확인하는 것이 hasNext(), 꺼내주는 것이 next(). Collection자체로는 순서를 알수가 없음. List()는 collection을 상속, 다른 점은 순서를 기억을 해준다. get(int)로 순서대로 리턴해줄 수 있음. Set()은 중복을 허용하지 않음. 같은 데이터는 한번만 적용. Map(), key와 value를 가지고 있는 자료구조. push()로 저장, get()으로 key에 해당되는 value리턴. List()를 구현해준 클래스는 ArrayList()가 있고 Set()을 구현한 클래스는 HashSet(), Map()을 구현.. 2023. 5. 13.
[WIL] Day 5 array를 compare해주는 함수. Arrays.compare(배열1, 배열2), 리턴값이 int다. 같으면 배열1이 배열2보다 크면 양수 반대면 음수가 나온다. Arrays.sort(배열), 말그대로 배열을 정렬해주는 함수. Arrays.binarySearch도 있음. 어떤 객체를 정렬하기 위해서는 어떤 값을 기준으로 정렬해야 하는지 그 기준을 정해줄 필요가 있음. 그래서 해당 객체는 Comparable이라는 interface를 implements해주어야한다. 또는 sort함수에 비교방법을 정의한 클래스를 추가해주어도 된다. 해당 클래스는 Comparator라는 interface를 implement해주어야한다. intellij에서 command line arguement를 추가하는 방법은 아래와 같.. 2023. 5. 12.
[WIL] Day 4 시리즈4편 NFT에 대하여, Non Fungible Token. Fungibility는 대체 가능하다는 의미. Non Fungibility는 대체 불가하다는 것, 예를 들면 땅, 한정판 신발, 한정판 카드, 전세 계약 같은 것들은 대체 불가하다고 한다. 토큰은, 블록체인의 안정성을 기반으로 화폐를 발행해서 사용이 가능하다. 어떻게 토큰을 발행? -> 2가지 기능을 갖고있는 스마트 컨트랙을 만듬. 1. 돈을 받으면 2. 토큰을 줌. 간단하지만 만약에 토큰의 발행을 제한한다면?딱 1개만 만든다면? 그리고 그 토큰에 이미지, 영상, 노래, 계약을 만들면? 이때 NFT가 탄생한다.그래서 앞선 예시로 그림을 산다고 할때 실제 그림을 사는 것이 아닌 토큰을 구매하는 셈이 된다. 그럼 그 돈을 주고 왜 이미지를 사는.. 2023. 5. 10.
[WIL] Day 3 클래스(static) 메소드 vs 인스턴스 메소드 필드: 클래스가 가지는 속성. 내가 알기로는 클래스 메소드는 레퍼런스 객체 생성하지 않고 바로 참조해서 사용가능. 반면에 인스턴스 메소드는 객체 참조를 해야하고 사용해야 함. (그게 맞음) 인스턴스 필드는 static이 안붙어있는 필드. 얘네들은 클래스 메소드에서 사용 불가. 또 클래스 필드는 static block에서 초기화가 가능하다. Static 블록은 main 메소드보다 먼저 실행한다. 꼼수 같은 작업이 가능하다. public class User { String name; // 인스턴스 필드 String address; boolean isVip; static int count ; // 클래스 필드 static{ // static 블록에서 초기화 가.. 2023. 5. 8.
[WIL] Day 2 WIL Day 2 -시리즈1편- 어떻게 블록체인에서 비디오 영상을 판매할 수 있는가? 펜케이크 스왑, 스시 스왑 왜 이더리움에서 바이낸스 체인으로 옮기는 거래소가 있는가? 블록체인==데이터베이스, append만 가능, 지우거나 변환은 안됨. “탈중앙화” 특정 개인이 DB를 관리할 수가 없음. 블록에는 데이터와 나의 해시 그리고 이전 블록의 해시가 필요하다. static이 붙은 메소드는 클래스 메소드라고 부를 것. 얘네는 인스턴스를 만들지 않아도 사용이 가능하다. JVM은 클래스를 어디서 찾을까요? -> CLASSPATH에서 찾는다, 그리고 읽은 클래스 파일을 PERM에 저장.그러면 static한 메소드를 알게된다.PERM은 스택이다. 자바 스택에 저장된 메소드 실행정보 하나를 스택 앤트리하고 한다. st.. 2023. 5. 8.
[WIL] Day 1 Spring 학습 단계: 김영한님 쉅들을 예정. 김영한님 쉅 듣기 전에 Java선수 필수. 스프링 완정정복 코스 스프링 입문부터 ~ 스프링 DB 2편까지 쭉 학습. 이후에 실습 코스 야생형으로 학습. 이후에 다시 스프링부스트와 스프링 고급형 듣기. 스프링 DB듣기 전에 기본 DB수업 선수 필요. Java 복습: 자바 파일은 컴파일을 하면 자바 class 파일이 생성이 된다. Class 파일을 생성하는 방법은 “javac 파일이름.java”이다. 그러면 해당 class파일이 생성이 되고 class파일을 실행시키기 위해서 “java 클래스파일이름”을 타입하면 해당 클래스파일을 실행시킨다. 자바는 클래스가 필요하고 클래스의 이름의 첫번째 알파벳은 대문자이다. 클래스안에는 필드 또는 메소드가 들어가 있다. 필드.. 2023. 5. 4.