목록분류 전체보기 (45)
채널오렌지 THE I.O.T

조와 함께 졸업작품을 했고 우리 조는 아두이노로 만든 스마트안전모와 관리자가 안전모를 관리하는 어플을 만들었다. 안전모엔 주위 상황의 데이터를 수집하는 조도, 가스, 터치, 가속도센서와 보조하는 led, 카메라, 블루투스 통신, 스피커&앰프 모듈을 장착하고 앱에서 받은 데이터로 동작한다. 나도 코드에 많이 관여는 했지만 주로 했던건 앱 UI 디자인이였다. 저 그림 만드는데 의외로 시간이 걸렸다. canva랑 인터넷에서 포토샵으로 만들었는데 처음 써보는지라.. 센서값을 임계값 이상 받으면 위 화면에 색깔이 바뀌고 소리가 나 관리자에게 알려주며 데이터를 입력하면 송신을 누르면 아두이노에게 데이터가 전송되어 정해놓은 동작을 할 수 있다. 카메라는 다른 조원이 했는데 카메라 특성상 보드를 따로 설정해야 해서 아..

MVC패턴은 아키텍쳐를 설계하기 위한디자인 패턴이다. 디자인 패턴이란 소프트웨어 설계에서 상황에 따라 자주 쓰이는 설계 방법을 정리한 코딩 방법론이다. MVC는 Model, View, Controller의 약자로 애플리케이션을 세 역할로 구분한 패턴이다. Model 데이터 저장하는 컴포넌트 View UI 컴포넌트 Controller Model과 View를 중개하고 사용자의 요청을 처리하는 컴포넌트 위는 Spring MVC다. 백엔드의 기본적인 프레임워크라 할 수 있고 웹 서버와 연관되어 개발이 편하고 깔끔하다. 이 내용은 Spring를 다루고 공부할때 다시 보도록 해야겠다.

이번에 졸업작품과 학교시험이 안드로이드 스튜디오를 써야해서 알아야 할게 좀 있다.. 그래서 나를 위해 기본적인 개념을 정리하였다. folder와 file의 용도 java 하위에 패키지명의 하위 폴더, 프로젝트 생성시 입력한 패키지 이름과 동일 패키지 이름 아래에 MainActivity.java java(generated) 3.2부터 제공, 내부적사용 res drawable 이미지파일저장 / layout 액티비티(화면) 구성 xml / menu 메뉴 xml values 문자열 string.xml / 색상표 colors.xml / 스타일 themes.xml res(generted) 3.5부터 제공, 내부적사용 manifests AndroidManifest.xml 파일, 앱의 여러정보 Gradle Script..

객체지향 프로그래밍을 OOP (Object-Oriented Programming)이라 한다. 현실 세계에 존재하는 사물들을 객체라 하고 프로그램 설계에 반영하는 기법이다. 특징 추상화 필요한 정보을 중심으로 간소화 한다. 불필요한 부분은 숨기고 인터페이스와 구현을 분리시킨다. 캡슐화 객체에 필요한 메소드와 데이터를 그룹화 시킨다. 정보 은닉하여 외부의 데이터 접근을 막는다. 상속 중복되는 코드의 재사용을 위해 상위 클래스의 기능을 하위 클래스가 사용할수 있게 한다. 다형성 변수와 메소드를 상황에 따라 다른 결과를 내게한다. Overriding 부모 클래스 메서드를 자식클래스에서 재정의 Overloading 한 클래스에서 메소드를 이름만 같고 파라미터와 자료형을 다르게 한다. 객체지향 vs 절차지향 객체지..

Queue 자료구조는 시간 순서로 먼저 넣은 데이터가 먼저 나오는 FIFO 저장방식이다. enqueue O(1) / dequeue O(1) Priority queue는 순서 상관없이 우선순위가 높은 데이터가 먼저 나온다. Heap은 우선순위큐의 구현과 일치하며 완전이진트리다. 트리는 대개 Linked list다. 그런데 Heap은 트리지만 array 기반이다. 이유는 새 node는 힙의 마지막 위치에 추가해야 하는데 그 과정이 array 기반이 편하기 때문이다. Heap 구현 array의 0번째 index는 편의를 위해 사용하지 않는다, 완전이진트리의 특성을 활용하여 array의 index만으로 부모 자식간의 관계를 정의한다. n번째 node에서 left choild node = 2n / right ch..

Linked List는 Node 구조체다. Node는 데이터 값과 다음 Node의 address를 저장한다. 이 리스트는 물리적인 메모리상에선 비연속적으로 저장되나 Node가 다음 Node의 주소를 가리킴으로써 논리적 연속성을 가진 자료구조다. 또, 데이터가 추가 되는 시점에서 메모리를 할당하여 좀 더 효율적으로 사용할 수 있는 장점이 있다. 논리적 연속성 Array는 메모리 상에서 순차적으로 저장하여 연속성을 유지한다. Linked List는 메모리상에선 비연속적이므로 메모리 사용이 자유로운 대신, Next address를 추가적으로 저장하므로 데이터 하나당 차지하는 메모리가 더 커진다. 데이터 삽입/삭제 O(1) Array에서 중간에 데이터를 삽입/사제하면 해당 인덱스 뒤의 모든 원소들은 shift를..

네트워크 네트워크는 정보와 자원 공유를 위해 링크로 연결된 노드의 집합이다. 컴퓨터가 통신망에서 그물처럼 연결된 체계라 할 수 있다. 인터넷 전 세계를 연결하는 국제 정보 통신망으로, 디지털기기로 연결되어 사람들이 정보를 공유할 수 있는 공간이다. 네트워크들의 네트워크라고 할 수 있다. 웹 웹은 인터넷 공간에서 제공하는 서비스다. 인터넷과 달리 브라우저에서만 엑세스 할 수 있다. 멀티미디어 정보를 Hypertext로 연결하여 제공한다.

인텔리제이에서 새로운 폴더를 만들어 클래스 파일을 추가하면 실행이 오류가 한가득이다. 그 원인은 그 폴더는 소스 디렉터리가 아닌 일반 디렉터리로 분류돼있기 때문이다. 새로운 프로젝트를 하기 위해 디렉터리를 바꿔보자. 텅텅 비어있는 Solution 폴더를 소스 디렉토리로 만들어보자. Ctrl + Alt + Shift+ S를 눌러 Project Structure를 실행하자. Modules를 누르자. 그리고 소스 디렉토리를 추가하려는 폴더를 클릭 후 Mark as: 옆에 있는 Sources를 누르면 오른쪽의 Source Folders에 폴더가 추가된 것을 확인할 수 있다. 그럼 apply를 누르자. Solution 폴더가 파란색이 되어 소스 디렉토리로 바뀐 것을 확인할 수 있다.

이제 시험기간에다가 졸작 발표가 눈앞에 와서 아무것도 하기 싫지만.. 그 핑계로 쉬기에는 내 양심이 찔려 조금씩이라도 공부하기로 했다.. 블록은 "함수 호출"이다. Block 호출된 함수가 자신의 할 일을 끝낼 때까지 호출한 함수한테 retrun하지 않음. Non-Block 호출된 함수가 바로 return 하여 호출한 함수가 일할 수 있음. 동기는 "함께" 다. Synchronous 호출한 함수가 호출된 함수의 수행 결과와 종료까지 신경 쓴다. Asynchronous 호출한 함수가 호출된 함수의 수행 결과와 종료를 신경 쓰지 않는다. 원래 예시를 만들려고 했는데 재밌는 예시를 찾았다. 이보다 재밌게 만들려고 해 봤자 너무 베끼는 것 같아서.. 그리고 이를 참고하면 쉽게 이해될 것 같아서 링크를 남긴다. ..

HTTP HTTP(HyperText Transfer Protocol)는 웹 사이트에서 인터넷 초기부터 사용했던 프로토콜(데이터 교환방식 규칙)이다. 웹 서핑시 서버에서 브라우저로 데이터를 전송할 때 많이 사용된다. 텍스트 교환이며 암호화 되지않아 내용이 쉽게 노출될 수 있다. HTTPS HTTPS(HyperText Transfer Protocol Secure) 프로토콜은 HTTP에 Secure 이름이 붙어서 짐작가능한데, HTTP 프로토콜의 정보가 암호화되지 않는 점을 해결한 프로토콜이다. 해결방법은 공개키 암호화를 사용하며 SSL이라는 보안 소켓 계층을 통하여 데이터 도난을 막았다. SSL은 서버와 브라우저 사이에 암호화된 연결을 만든다. 그리고 TLS(전송 계층 보안) 프로토콜을 통해서 무결성을 제공..