이전 글에서 Primitive type 과 Reference type에 대해서 공부했다. 이번에는 오토박싱(Autoboxing)과 언박싱(Unboxing)에 대해 알아보자 - Autoboxing and Unboxing Oracle Java Doc에서는 이렇게 말하고있다. Autoboxing is the automatic conversion that the Java compiler makes between the primitive types and their corresponding object wrapper classes. For example, converting an int to an Integer, a double to a Double, and so on. If the conversion goes..
- Java의 자료형 자바의 자료형에는 원시 타입(Primitive type), 참조 타입(Reference type) 두가지 타입이 있다. 1. 원시타입 (Primitive type) Primitive type은 stack 메모리 공간에 값 자체가 저장되며 boolean, int, long, char 등이 있다. 2. 참조타입 (Reference type) Reference type은 heap 메모리 공간에 저장되며 해당 객체들의 주소를 stack 메모리 공간에 저장한다. 기본형 이외 대부분의 타입들을 말하며, 배열, 클래스 인터페이스 등이 있다. int a = 1; // stack 에 저장 Integer b = new Integer(); // heap에 저장하고 주소값을 참조 3. 래퍼 클래스 (Wr..
- assert, guard assert - 특정 조건을 체크하고, 조건이 성립되지 않으면 메시지를 출력하게 할 수 있는 함수 - assert 함수는 디버깅 모드에서만 동작하고 주로 디버깅 중 조건의 검증을 위하여 사용 guard - 뭔가를 검사하여 그 다음에 오는 코드를 실행할지 말지 경정 하는 것 - guard 문에 주어진 조건문이 거짓일 때 구문이 실행됨 var value = 0 assert(value == 0) value = 2 assert(value == 0, "값이 0이 아님") func guardTest(value: Int) { guard value == 0 else { return } print("안녕하세요") } guardTest(value: 2) // 아무것도 안나옴 guardTest(..
- 구조체 /* struct 구조체 이름{ 프로퍼티와 메서드 }*/ struct User { var nickname: String var age: Int func information() { print("\(nickname) \(age)") } } var user = User(nickname: "ked", age: 20) print(user.nickname) user.nickname = "albert" // 변경 user.information() // method 호출 - 클래스 /*class 클래스 이름 { 프로퍼티와 메서드 }*/ class Dog { var name: String = "" var age: Int = 0 init() { // 인스턴스가 생성되면 호출 } func introduce() ..
- 상수와 변수 // 상수 let a: Int = 20 // 변수 var b: Int = 100 - 컬렉션 타입 // Array // 데이터 타입의 값들을 순서대로 저장하는 리스트 var numbers: Array = Array() var names: [String] = [] numbers.append(1) // 추가 numbers[0] // 조회 numbers.insert(1, at: 2) // index로 추가 numbers.remove(at:0) // index로 삭제 // Dictionary // 순서없이 key, value 한 쌍으로 데이터를 저장하는 컬렉션 타입 var dic: Dictionary = Dictionary() var dic: [String, Int] = [:] var dic: [..
서버 혹은 웹만 개발하던 내가 처음으로 개인적인 앱을 출시해봤다. 아래는 앱 다운로드 링크다. https://play.google.com/store/apps/details?id=com.jnot.rojjealbum 로쩨앨범 - Google Play 앱 가족 사진 공유 앨범 play.google.com - 선결론 결론만 먼저 말해보자면 재밌는 경험이었고, 계속 경험중이다. 앱은 에러도 많고 기능도 충분치 않지만 출시해봤다는데 의의를 둔다. 이 앱을 만들게 된 목적도 있기 때문에 조금씩이지만 에러도 수정해 나가고 있다. 출시자체는 안드로이드만 진행했다. ios는 개인 폰이 아이폰이라서 로컬 빌드로 진행했다. 구글스토어와 달리 애플 앱스토어는 매년 돈을 내야해서 출시를 안한건 아니다.(사실맞다) 앱을 개발하는 ..
계기 시간이 참 빠르게 지나간다. 어느새 12월이 되었다. 다음 달이면 로쩨가 세상에 나온다. 로쩨를 위해 해줄 수 있는게 뭐가 있을까 생각하다가 아빠가 나름 개발잔데 뭔가 하나 만들어줄순 없을까 생각이 들었다. 문득 로쩨사진을 양가 부모님 단톡방에 따로 보내는 수고스러움을 겪고 있는 아내를 보고 이거다 싶었다. Flutter 선택의 이유 Java를 주로 사용하기 때문에 보통 서버 혹은 웹 관련 일들만 했었다. 그러다 올해 친구와 같이 진행한 Come Hear 프로젝트 이후 앱개발에 관심이 생겼다. 데이터를 다루는 서버도 매력 있었지만 내가 내린 데이터로 화면을 꾸미는 친구를 보고 뭔가 재밌겠다는 생각이 들었던 것 같다. 그러다 가족공유 사진앨범을 만들어보고 싶다는 생각이 들었고 나는 아이폰을 쓰기 때문..
한국관광공사 x 카카오 에서 주관하는 '2022 관광데이터 활용 공모전' 에 참가한 후기랄까, 회고를 남겨보려고 한다. 결론부터 말하자면 공모전을 끝까지 진행하면서 많은 시행착오와 다른 역할군의 필요성들을 느꼈고 이것저것 경험해볼 수 있었던 정말 좋은 경험이었다. 이 경험이 사실 제일 큰 결론이자, 결과라고 생각한다. 부수적으로 우수상을 수상했다. Come Hear 소개 시각장애인은 어떻게 여행할까? 시각장애인은 동행한 사람들의 설명으로 여행을 한다고 한다. 단순히 보는 여행이 아닌 모두가 들을 수 있는 여행 앱. Come Hear. 여행을 듣다. 기획의도 - 일반 사람들이 흔히 하는 여행이 아닌 특별한 앱을 만들어보자 - 시각장애인은 어떻게 여행할까? - 시각장애인이 여행을 즐길 수 있도록 보는 여행이..
본 포스팅은 인프런 - Dowon Lee 님의 Jenkins를 이용한 CI/CD Pipeline 구축 강의를 듣고 정리한 내용입니다. 강의링크 CI (Continuous Integration) - 작업된 코드의 컴파일, 테스트, 패키징 작업이 포함 CD (Continuous Deployment) - CI에 의해서 패키징된 결과물을 서버에 배포하는 작업 - 지속적인 배포와 지속적인 제공 JenKins - CI/CD 툴 - 소프트웨어 개발 시 지속적 통합 서비스를 제공하는 툴이다. 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 Git등의 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해 준다 - 젠킨스 이미지 다운로드 docker pu..
현재 위치(경도,위도) 기반으로 범위 내 데이터를 구해야 할 이슈가 생겼다. 예시 - 현재 위치 37.579651 (Latitude) 126.977041 (Longitude) - DB 정보 table : locationMap 위도 : MAPX_LAT 경도 : MAPY_LON - 검색할 반경 : 20 = 20km (1km = 1) SELECT * FROM locationMap WHERE (6371*acos(cos(radians(37.579651))*cos(radians(MAPX_LAT))*cos(radians(MAPY_LON) - radians(126.977041))+sin(radians(37.579651))*sin(radians(MAPX_LAT)))) < 20 limit 0, 30 위처럼 쿼리를 날리면 ..