AWS - IoT (Internet of Things) IoT == 사물인터넷 즉 한마디로 표현하자면, 인터넷 네트워크에 무선으로 연결될 수 있는 모든 물체를 의미합니다. 좀 더 구체화 된 의미로는 사용자에게 정보를 제공하거나 작업을 자동화 하기 위해 데이터 송수신을 지원하는 센서, 소프트웨어 및 기타 기술을 탑재하고 있으며, 서로 연결된 사물을 의미합니다. 즉 IoT 개념이 적용되는 사물(장치)들을 IoT 디바이스라고 말할 수 있습니다. 쉽게 예를 들자면 : 교통 관리 시스템, 차량 연결, 스마트 홈과 같이 특정 디바이스의 상태(데이터)을 분석하고 전송하며 그 데이터들로 무언가를 처리하여 관리하는 시스템들이 해당됩니다. 교통 관리 시스템 처럼 CCTV를 이용하여 교통량 등을 파악하여 신호등의 시간을 조..
Pointer(포인터) 메모리 "주소"를 저장하는 "변수" "아니 그게 뭔말이에요...? 그건 뭐 언제 왜 쓰는데요;;;;" 만약에, a라는 변수가 있다고 해봅시다. int a = 10; 해당 변수는 메모리 영역 어딘가에 "주소"를 가지고 자리 잡고 있을겁니다. 그리고 그 주소안에는 10이라는 정수가 살고있죠. 만약에 a가 가지고 있는 값을 다른 주소에 저장하고 싶다면? int a = 10; int b = a; 위 코드와 같이 int b = a 와 같다고 선언함으로써 b는 a값을 가지게 됩니다! 근데 뭔가 궁금한게 생기지 않나요? 저렇게 b = a 라고 선언하면 b가 a의 주소를 가지고 주소안에 있는 값을 가지는 걸까? 아니면 a값을 복사해서 b의 주소안에 넣는 걸까? 위와 같이 선언하게 되면 b는 a의..
본 취직후기는 지인의 소개로 인해 면접을 보고 통과한 케이스입니다. 안녕하세요. 요즘 블로그에 글을 많이 안올렸는데, 사실 그동안 토익 공부랑 면접 준비를 하느라 바빴습니다. 시험도 끝나고 면접도 잘 봐서 합격하게 되었고, 저는 C++, Linux 소프트웨어 개발자로 취직하게 되었습니다?....... 제 글들을 보면 아시겠지만, 저는 자바 스프링 개발자입니다. 그래서 원래는 웹 백엔드 개발자로 취직을 할려고 목표를 세웠지만. 사실 웹 개발자가 저의 최종 목표는 아니였고, 최종적으로는 클라우드나 임베디드 소프트웨어를 개발하는 것이 저의 목표였습니다. 그때 마침 지인의 소개로 IVI를 개발하는 회사에서 연락이 왔고, 면접을 보고 합격했습니다 허허... 저는 Java, Spring이 주 스킬이여서 사실 많은 ..
Pull Request는 누군가의 레파지토리를 가져다가 수정하고 그게 반영되게 해주세요 ㅠ 라고 말하는거랄까?...... 내가 깃허브에서 검색을 하던 도중 맘에드는 Someone's Repo를 발견했다. 흠.... 이걸 뭔가 가져다가 조금 수정하면 되게 좋은 작업이 될거 같다!! 그렇다면 어떡해야 하지?...... 일단, Someone's Repo를 복제해다가 나의 로컬 저장소에 저장을 먼저 해야 될 것이고, 로컬에서 코드를 업데이트하고 Commite을 한 다음에 Someone's Repo에도 적용이 되게 요청을 하면 될것이다 !! 복제를 한다 -> Fork My Repo에 저장된 것을 로컬 저장소에 저장한다 -> Clone 코드를 업데이트한다. Commite을 한다. My Repo코드를 Someone'..
이 문제가 나한테서 검증하고 싶은게 뭘까? 저는 항상 이 마인드로 접근을 합니다 :) 세상에 존재하는 모든 문제, 테스트들은 검증을 하고자 하는게 있고 결과를 원합니다. 그 중 에서도 많은 기업들에서 코딩 테스트를 보게 하는 이유는 분명히 존재합니다. 여러분들의 실력이 혹시는 구라가 아닌지 ㅋ + 이 사람이 문제 해결을 잘 하는지. 그래서 문제를 읽어보고 제일 먼저 생각이 들어야 하는 것은.... 1. 이 문제에서 주어진 값들로 어떤 결과가 나오면 될까? 말 그대로 매개변수를 가지고 어떤 결과를 만들면 되는 것인가? 이것을 제일 먼저 파악해야 합니다. 2. 구하기 위해서는 어떤 자료구조와 알고리즘이 필요한가? 여기서부터가 중요합니다. 구해야 하는 결과를 알았다면 일단 어떤 자료구조를 쓰는게 효율적이면서 ..
드디어 실제로 사용자들에게 서비스를 할 웹프로젝트를 개발하게 됬습니다 :) 사실은 아무나 붙잡고 외주하겠다 이러면서 구하게 된 일은 아닙니다 하핳 ! 어머니가 작은 인테리어 디자인 회사를 운영중이신데, 아직은 규모가 작다보니 많은 견적문의를 받기 힘드신 상황입니다... 블로그와 인스타그램에서 적극적으로 홍보중이시지만, 불규칙적인 견적서 형태와 요청이 많다보니 일일히 보면서 처리하기에 힘이 드는편입니다. 그래서 회사에서 진행했던 디자인 포트폴리오를 소개하면서 견적문의를 만들어 정형화된 문항을 작성하게 함으로써 견적서를 통일시켜 업무에 있어서 좀 더 쉽게 진행할 수 있도록 할 예정이며, 홍보에 힘이 될 수 있도록 여러 시스템 개발을 고려중입니다. 무엇보다 필요에 의해서 편리하기 위해서 개발을 한다는 사실이 ..
IndexOutOfBoundsException 배열의 범위를 벗어난 인덱스에 접근하여서 발생합니다. int[] arr = {1,2,3,4,5,6,7,8}; int a = arr[9]; 위 코드에서 배열은 총 길이가 8입니다. 하지만 인덱싱 개념으로는 7까지 존재합니다. 그런데 밑에서 배열의 9번째 값을 꺼낼려고 시도합니다. 바로 이 순간 IndexOutOfBoundsException 이 발생하게 됩니다 :( 보통 많이 하는 실수... for(int i = 0; i
AWS(Amazon Web Service) 뭔가 들으면 어렵고 사용하기 힘들것 같지만 실제로 그렇지 않습니다. Amazon에서 Server를 돈을 받고 제공하는 시스템이며, 여러가지 인프라 시스템과 기능들을 제공하고 있어서 서버를 효율적으로 사용하며 관리가 가능하여 인기가 많습니다. AWS (Amazon Web Service) AWS는 190개 이상의 서비스를 제공하고 있으며 스토리지, DB, 인프라 기술, AI, 데이터 분석 등과 같은 많은 기능을 제공합니다. 아마존의 모든 서비스는 API중심으로 설계되어 있어 모든 기능을 API로 사용이 가능합니다. 세계 점유율 1위를 달리고 있는 클라우드 이며, 총 128개 이상의 Edge Location을 보유해 글로벌 서비스를 최적의 환경속에서 제공합니다. 왜 ..
POJO (Plain Old Java Object) 말 그대로 "오래된 방식의 간단한 자바 객체" 이다. POJO 간단하게 말해서 필드와 Getter, Setter와 같은 기본 기능만을 갖는 기본 객체를 의미한다. 자세히는 특정 "기술"에 종속되 있는 상태로 개발하지 않는 개념을 위해 등장한 언어이다. 종속성으로 인해 시스템 업그레이드, 모듈 교체와 같은 상황에서 많은 불편함이 있었기에 POJO라는 개념이 탄생했다. (특정 기술 == Framework) 아마 자바 스프링 개발자이기에 해당 내용이 궁금할 것이다. Spring이 POJO개념을 잘 지킨 프레임워크이기 때문이다. IOC, DI, AOP 와 같은 개념들이 모두 결합력을 느슨하게 하여 의존성을 낮춤으로써 종속성이 낮아지는 현상이 발생한다. 즉, 위..
NPE(NullPointerException) null 값을 참조할 경우 발생시키는 예외이다. 개발자가 두려워 하는 에러 중 하나. 상황은 이러하다. Service클래스에서 만든 JPA를 활용한 DB접근 메소드를 검증하고자, test클래스를 만들어 실행 시켰다. 자세한 코드는 다음과 같다. Service @Service public class UserService { @Autowired UserRepository userRepository; public Long join(User user){ userRepository.save(user); // JpaRepository 메소드 활용 return user.getId(); } Test class UserServiceTest { @Autowired UserSe..
Spring Data JPA에서 제공하는 쿼리 메소드 기능 중 하나인 @Query 어노테이션에 대해 알아보자 ! @Query 복잡한 조건을 요구하는 경우에 AND, OR, JOIN 등을 JPA 메소드를 통해서 사용할려면 불편할 때가 많고, 무엇보다 성능 저하 우려가 있기 때문에 직접 쿼리문을 짜는게 효율적이다. 그때 사용하는게 바로 @Query이다. (Named Query 같은 것도 있지만 매개변수가 많아지면 너무 길어져서 지저분 하다....) 특징 JPQL을 사용한다 (객체지향 쿼리문. 테이블 대신 Entity클래스를 사용하고 컬럼 대신 필드를 사용한다) 직접 쿼리문을 작성하기에 복잡한 작업이 가능하다 INSERT, UPDATE, DELETE 과 같이 SELECT가 아닌 DML들은 @Modifying과..
변경감지란(Dirty Checking)? 트랜잭션 Commit시에 영속화 되있는 Entity에서 가지고 있던 최초의 정보와 바뀐 Entity정보를 비교해서 바뀐 부분을 자동으로 UPDATE 해준다고 생각하면 됩니다 ! 처음에는 당연히 이해가 잘 안갈겁니다...코드로 직접 보는게 BEST죠? 전체 코드 보기 : https://github.com/WOOOOJI/jpa_test_code GitHub - WOOOOJI/jpa_test_code: 기본적인 JPA 사용법 기본적인 JPA 사용법. Contribute to WOOOOJI/jpa_test_code development by creating an account on GitHub. github.com 1. Dirty Checking (변경 감지) Dirty..
JPA (Java Presistence API) 자바 진영에서 ORM 기술 표준으로 사용되는 인터페이스 모음이다. 대표적으로 Hibernate, Spring JPA 가 있다. 쉽게 말하면 JPA는 객체와 테이블을 자동으로 매핑시켜서, 쿼리문 작성 없이도 DB에 접근을 할 수 있다. 만약 해당 내용이 생소하시다면 다음 글을 먼저 보고 와주세요 !....https://wooj-coding-fordeveloper.tistory.com/74 1. JPA Dependency 등록 gradle 기준으로 다음 코드를 build.gradle에 추가해주셔야 JPA을 사용하실 수 있습니다 :) implementation 'org.springframework.boot:spring-boot-starter-data-jpa' 2..
Enum == 열거형 쉽게 말해서 서로 관련이 있는 상수들의 집합을 의미한다. 자바에서는 final한 상태를 의미하며, 클래스가 만약 상수로만 구성되있다면 class 대신 enum이라고 선언하여 해당 객체는 상수의 집합이다! 라고 나타낼 수 있는 것이다. 일단 왜 쓰는지?뭐든 공부를 할때는 목적이 중요하다고 생각합니다. 내가 이걸 왜 배우는지, 언제 어디에 써먹을껀지 등....... 차근차근 코드들을 보면서 이해하고 사용해봅시다 :) 1. 간단하지만 뭔말인지? 하는 코드 int kindOf = 3; public static final int cop = 1; public static final int fireFighter = 2; public static final int docter = 3; public..
일단 결론부터. 둘의 제일 큰 차이점은 쿼리문을 직접 쓰냐 안쓰냐 차이다. 그러면 당연히 두개의 장단점이 다를것이다. 자세히 알아보도록 하자 ! 하지만 그전에 ORM, SQL Mapper 에 대해 알고있어야지 두개의 기술에 대해 이해가 갈 것이다. - ORM (Object Relational Mapping) 사실 직역만 해봐도 어떤 기술인지 감이 올 것이다. 객체-관계 매핑 -> 자바 진영에서의 객체 데이터와 RDBMS(관계형 데이터베이스)의 데이터를 자동으로 매핑(연결) 시켜준다는 의미이다. 여기서 객체 데이터는 클래스를 의미하고 RDBMS 데이터는 테이블을 의미한다. 고로 다음과 같은 장단점들이 존재한다. 장점 쿼리문을 직접 작성할 필요가 없다. (자동) 코드를 객체지향적으로 짤 수 있기에 직관적이며..
Flutter - Google 에서 만든 크로스 플랫폼 개발 Framework React와 제일 많이 비교가 되며 현재는 Flutter가 점유율이 훨씬 높아지고 있는 추세다 (2022 Stackoverflow 설문조사 결과) Why Flutter? Flutter는 동일한 코드로 멀티 플랫폼 어플리케이션 제작이 가능합니다. Dart언어 기반인데, 해당 언어도 Goolge팀에서 만든것으로 언어와 프레임워크가 같은 Google 팀에서 일을 하기에 기술의 변화에 대응이 빠르고, Flutter를 좀 더 쾌적하게 사용하기 위해 Dart팀에서 업데이트를 해주는 등 관리가 철저합니다. 1. Flutter 설치하기 (Dart언어 설치 필수) 페이지 접속시 Flutter를 실행할 플랫폼에 따른 설치 방법들이 자세하게 나와..