본문 바로가기

분류 전체보기131

Android / 안드로이드란? *안드로이드란 무엇일까? 안드로이드는 구글에서 만든 스마트폰용 운영체제(OS)이다. 휴대용 단말기를 위해 만들어진 것일 뿐만 아니라 다양한 앱을 만들어 설치하면 실행될 수 있도록 구성된 앱 플랫폼이기도 하다. 안드로이드폰은 손으로 터치할 수 있는 스마트폰으로써 아이폰과 함께 가장 많이 사용되며 안드로이드의 가장 큰 특징은 오픈 소스라는 것이다. 안드로이드의 대표적인 특징들은 다음과 같다. 오픈 소스 안드로이드는 오픈 소스로서 개발자에게 개방되어 있으며 아파치 2.0 라이선스를 사용한다. 자바 개발 언어 안드로이드를 개발할 때 사용하는 언어는 자바와 코틀린이다. 자바는 전 세계에 많은 개발자가 있어 안드로이드 앱 개발에 뛰어들 수 있다. 코틀린은 최근에 만들어진 프로그래밍 언어의 장점들을 갖고 있으며, J.. 2020. 7. 7.
React / RX https://m.blog.naver.com/jdub7138/220983291803 Reactive Programming과 Rx 비동기 데이터 흐름Reactive Programming을 한줄로 설명하자면 다음과 같습니다. (출처: https://gist.gi... blog.naver.com 2020. 7. 6.
React / 클래스형 컴포넌트와 함수형 컴포넌트 리액트에서 컴포넌트를 선언하는 방식은 두가지다. 클래스형 컴포넌트 함수형 컴포넌트 - 클래스형 컴포넌트 예시 - 함수형 컴포넌트 예시 *클래스형 컴포넌트와 함수형 컴포넌트의 차이는 무엇일까? 특징 클래스형 컴포넌트 - state 기능 및 라이프사이클 기능을 사용할 수 있다. - 임의 메서드를 정의할 수 있다. - render함수 가 꼭 있어야한다. - render함수 내에서 보여주어야 할 JSX를 반환해야한다. 함수형 컴포넌트 - 클래스형 컴포넌트 보다 선언하기가 훨 씬 편하다. - 클래스형 컴포넌트보다 메모리자원을 덜 사용한다. - 프로젝트 완성 후 빌드하여 배포할때 클래스형 컴포넌트보다 결과물의 파일크기가 작다. - state와 라이프사이클 API의 사용이 불가능하다. (리액트 16.8v. 업데이트 .. 2020. 6. 22.
Android / ThreeTenABP 마스터하기 https://blog.naver.com/nakim02/222004139447 [Android Studio, Datetime] ThreeTenABP 마스터하기 마스터라고 하기엔 좀 그렇지만, 웬만한 경우 아래 케이스로 다 해결이 가능할 듯 싶다.​ThreeTenABP... blog.naver.com 2020. 6. 18.
Http 상태코드 다이어그램 github.com/for-GET/http-decision-diagram for-GET/http-decision-diagram An activity diagram to describe the resolution of HTTP response status codes, given various headers. - for-GET/http-decision-diagram github.com 2020. 6. 17.
React / Recoil - 또 다른 React 상태 관리 라이브러리 https://ui.toast.com/weekly-pick/ko_20200616/ Recoil - 또 다른 React 상태 관리 라이브러리? 많은 React 상태 관리 라이브러리들이 있고, 가끔 새로운 라이브러리가 등장한다. 그러나 페이스북에서 직접 상태 관리 솔루션을 소개하는 것은 흔하지 않다. 이 라이브러리가 어떤 장점이 있고 � ui.toast.com 2020. 6. 16.
Spring / Understanding MicroSERVICE Architecture www.slideshare.net/kashifalisiddiqui/understanding-microservice-architecture-with-java-spring-boot Understanding MicroSERVICE Architecture with Java & Spring Boot This is a deep journey into the realm of "microservice architecture", and in that I will try to cover each inch of it, but with a fixed tech stack of Java with… www.slideshare.net 2020. 6. 16.
React / JSX정의 및 장점 그리고 문법 *JSX란 JSX는 자바스크립트의 확장 문법이며 XML과 매우 유사하게 생겼다. JSX는 리액트로 프로젝트를 개발할 때 사용되므로 공식적인 자바스크립트 문법은 아니며, 바벨에서는 여러 문법을 지원할 수 있도록 preset 및 plugin을 설정한다. JSX는 브라우저에서 실행되기전 코드가 번들링되는 과정에서 바벨을 사용하여 일반 자바스크립트 형태의 코드로 변환된다. 예시는 다음과 같다. //JSX function App() { return ( Hello react ); } function App() { return React.createElement("div", null, "Hello", React.createElement("b", null, "react")); } *JSX의 장점 보기 쉽고 익숙하다 일.. 2020. 6. 14.
React / 번들러 *번들러? 리액트에서 프로젝트를 만들 때 node_modules라는 디렉터리도 함께 생성되며, 프로젝트 생성 과정에서 node_modules디렉토리에 react모듈이 설치된다. 그러면 import구문을 통해 리액트를 불러와서 사용할 수있는데 여기서 한가지 알아야 할 점이 있다. 모듈을 불러와서 사용하는 것은 원래 웹 브라우저에서는 없던 기능인데 이러한 기능을 브라우저에서도 사용하기 위해 번들러 개념이 탄생한 것이다. 번들러는 파일을 묶듯이 연결하는 것을 의미하며, 브라우저가 아닌 환경에서 자바스크립트를 실행할 수 있게 해주는 환경인 Node.js가 지원해준다. (참고로 Node.js에서는 import가 아닌 require라는 구문으로 패키지를 불러올 수 있다.) 대표적인 번드러로는 웹팩, Parcel, .. 2020. 6. 13.
React / Ubuntu 20.04 LTS에서 Node.js 및 npm설치하기 별거 없다. 1. 설치 명령어 sudo apt update sudo apt install nodejs npm 2. 버전확인 명령어 nodejs --version npm --version 2020. 6. 13.
React / 초기 렌더링과 리렌더링 *초기 렌더링 어떠한 UI 관련 프레임워크, 라이브러리를 사용하든지 간에 맨 처음 사용자 화면에 뷰를 보여주는 것을 초기 렌더링이라고 한다. 리액트에서는 렌더링을 다루는 render함수가 있다. render() {...} render함수는 다음과 같은 특징이 있다. 컴포넌트를 정의 뷰의 모양새와 작동 방식에 대한 정보를 지닌 객체 반환 내부 컴포넌트 재귀적 렌더링(컴포넌트 내부엔 컴포넌트가 들어갈 수 있다.) 이러한 특징을 가진 render함수를 가지고 초기 렌더링을 할때 과정은 다음과 같다. 내부컴포넌트 렌더링을 시작으로 최상위 컴포넌트와 내부 컴포넌트들을 렌더링함. 최상위 컴포넌트 렌더링 작업이 끝나면 지니고 있는 정보들을 사용하여 HTML 마크업을 만듬. 실제 페이지의 DOM요소 안에 주입. DOM.. 2020. 6. 13.
React / 리액트란? *리액트(React.js) 리액트는 페이스북에서 2013년 3월에 발표된 자바스크립트 라이브러리이며 페이스북의 소프트웨어 엔지니어 Jordan Walke가 개발하였다. 리액트는 사용자 인터페이스를 만들기 위해 사용되고 있으며 컴포넌트 기반으로 되어있어 컴포넌트에 데이터를 내려주면 개발자가 설계한대로 UI가 만들어져 사용자에게 보여진다. 또한 최대한 성능을 아끼고 편안한 사용자 경험을 제공하도록 구현되어 있으며 구조가 MVC, MVW 등인 프레임워크와 달리, 오직 View만을 신경 쓴다. *리액트의 특징 컴포넌트 리액트는 컴포넌트 기반의 라이브러리이다. UI를 하나의 큰 덩어리로 생각하면 컴포넌트는 그 덩어리를 이루는 작은 요소들이다. 그런 요소들을 설계해서 쌓아 올리면 하나의 UI가 만들어지며 컴포넌트들.. 2020. 6. 11.
정처기 줄임말 모음 정규화 과정 : 도부이결다조 [두부이걸다줘?] 도 : 도메인이 원자값 (1NF) 부 : 부분적 함수 종속제거 (2NF) 이 : 이행적 함수 종속 제거 (3NF) 결 : 결정자이면서 후보키가 아닌것 제거 (BCNF) 다 : 다치종속 (4NF) 조 : 조인 종속성 이용 (5NF) 소프트웨어 생명주기 : 조지기 [생명주기 내에 조지기] 조 : 조직생명주기 프로세스 지 : 지원생명주기 프로세스 기 : 기본생명주기 프로세스 애플리케이션 테스트 : 단통시인 [단통시인은 앱테스트를 잘함] 단 : 단위테스트 통 : 통합테스트 시 : 시스템 테스트 인 : 인수테스트 프로젝트 관리유형 : 비위일품인 [비위가 일품인 사람은 프로젝트 관리를 잘함] 비용 관리 위험 관리 일정 관리 품질 관리 인력 관리 프로젝트 요소 : 프자생.. 2020. 6. 3.
Redis란 Redis를 알아가기에 앞서 레디스는 NoSQL의 종류 중 하나이므로 NoSQL에 대해서 잠깐 짚어보겠다. *NoSQL NoSQL은 데이터간의 관계를 정의하지 않고 고정된 스키마를 갖지 않는 새로운 형태의 데이터베이스로서, 관계형 DB를 경량화한 데이터베이스이다. 관계형 데이터베이스의 특징을 제거하고 만들어진 다른 모든 형태의 DBMS를 칭하기도 하며, SQL계열 징의어를 사용할 수 있다는 사실을 강조한다는 면에서 "Not Only SQL"로 불리기도 한다. *SQL과 NoSQL의 차이 *Redis 레디스는 Remote Dictionary Server의 약자로 Key-Value구조의 비정형 데이터를 저장하고 관리하기 위한 오픈소스 기반의 비관계형 데이터베이스 관리시스템이며 세션을 담는 서버이다. *Red.. 2020. 6. 1.
React / S3 웹호스팅 이용하기 blog.wonizz.tk/2020/04/13/reactjs-s3-web-hosting/ [Reactjs] S3 웹호스팅 이용하기 - WONIZZ.LOG / 리액트 JS S3를 통해 웹호스팅을 하게되면서, origin이 S3이다보니, CDN서비스가 필요해지게 되었습니다. AWS에서 제공해주는 CloudFront를 S3 앞에 붙이면됩니다. 엣지 서비스가 되기 시작하는것인데 도메인(Rounte blog.wonizz.tk 2020. 5. 31.
Spring batch에서 멀티스레드로 Step실행하기 jojoldu.tistory.com/493 Spring Batch에서 MultiThread로 Step 실행하기 일반적으로 Spring Batch는 단일 쓰레드에서 실행됩니다. 즉, 모든 것이 순차적으로 실행되는 것을 의미하는데요. Spring Batch에서는 이를 병렬로 실행할 수 있는 방법을 여러가지 지원합니다. 이번 �� jojoldu.tistory.com 2020. 5. 31.
JAVA / 함수 호출방식 Call by value와 Call by reference *함수 호출방식 Call by value : 값에 의한 호출 Call by value는 메소드 호출 시에 사용되는 인자의 메모리에 저장되어 있는 값을 복사하여 보낸다. 예제를 살펴보자 -예시- Class CallByValue{ public static void swap(int x, int y) { int temp = x; x = y; y = temp; } public static void main(String[] args) { int a = 10; int b = 20; System.out.println("swap() 호출 전 : a = " + a + ", b = " + b); swap(a, b); System.out.println("swap() 호출 후 : a = " + a + ", b = " + b);.. 2020. 5. 31.
JAVA / 가비지 컬렉션(garbage collection) 가비지 컬렉션이란 메모리 관리 기법 중의 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 자동해제하는 기능이다. 즉, 더이상 참조하지 않는 힙의 쓰레기 메모리 공간을 자동으로 날려주는것이다. 이러한 가비지 컬렉션 기능을 가지고 있는 언어를 매니지드 언어라고하며 없는 언어들은 언매니지드 언어라고한다. 자바와 C#은 대표적인 매니지드 언어이며 C와 C++은 대표적인 언매니지드 언어이다. 보통의 언어들은 메모리관리를 할수 있지만 자동의 여부에 따라 매니지드 언어이냐, 언매니지드 언어이냐 나뉘게 되는것이다. 자바는 더티페이지가 존재하며 가비지가 어느정도 쌓이면 처리한다. 또한 가비지 컬렉션은 자바에서 준비된 가비지 컬렉션 스레드에 의해 처리된다. - 그렇다면 가비지컬렉션은 언제 작동.. 2020. 5. 31.
Ubuntu / 커맨드 꿀팁 및 터미널 커스터마이징하기 https://m.blog.naver.com/PostView.nhn?blogId=codeitofficial&logNo=221861721998&proxyReferer=https:%2F%2Fm.facebook.com%2F [코드잇 꿀팁] 개발자라면 꼭 알아야 할 커맨드 꿀팁! 안녕하세요, 온라인 코딩 스쿨 코드잇입니다. 오늘은 개발자라면 꼭 알아야 하는 커맨드 꿀팁을 준비했습니... blog.naver.com https://vvshinevv.tistory.com/77 Bash Terminal을 세련되게(Mac) 👍 이번 블로그에서는 테마, Powerline, 폰트, Powerline-gitstatus를 추가하여 위의 첨부한 이미지와 같이 일반 Base Terminal을 아름답고 유용하게 보이게 하는 방법을 .. 2020. 5. 31.
JAVA / Calendar와 Date 그리고 java.time패키지 Date는 날짜와 시간을 다룰 목적으로 JDK1.0부터 제공되어온 클래스이다. JDK1.0.이 제공하는 클래스의 수와 기능은 지금과 비교할 수 없을 정도로 빈약했다. Date클래스 역시 기능이 부족했기 때문에, 서둘러 Calendar라는 새로운 클래스를 그 다음 버전인 JDK1.1부터 제공하기 시작했다. 1. Calendar와 GregorianCalendar Calendar는 추상클래스이기 때문에 직접 객체를 생성할 수 없고, 메서드를 통해서 완전히 구현된 클래스의 인스턴스를 얻어야 한다. Calendar cal = new Calendar(); // 에러!!! 추상클래스는 인스턴스를 생성할 수 없다. Calendar cal = Calendar.getInstance(); // Calendar 클래스를 구현.. 2020. 5. 30.
네트워크 / stateful과 stateless란? *Stateful stateful은 클라이언트가 자신의 이전 상태를 기록하고 있다는 것이고 서버는 사용자의 상태를 기억하고 있다가 유용한정보로 활용한다는 것이다. 더 쉽게 말하면 클라이언트와 서버가 서로 요청 및 응답에 대한 히스토리를 가지고 통신을 할 수 있는 스트림이 계속 유지되는 것을 말한다. 이 방식은 TCP, Socket, Message Queue 등에 적합하며 이는 서버의 부하가 크다. *Stateless stateless란 클라이언트가 서버에 요청할 때 이전의 상태를 소멸시키고 접속한다는 것이고 서버는 사용자의 히스토리를 기억하고 있지 않는다는 것이다. 즉, 한번의 요청과 응답이 이루어지면 클라이언트와 서버와의 연결선이 끊어지며 클라이언트와 서버가 주고받았던 데이터들은 다음 요청 및 응답에 .. 2020. 5. 30.
Java / java.lang패키지 java.lang패키지는 자바프로그래밍에 가장 기본이 되는 클래스들을 포함하고 있다. 그렇기 때문에 java.lang패키지의 클래스들은 import문 없이도 사용할 수 있게 되어 있다. 그 동안 String클래스나 System클래스를 import문 없이 사용할 수 있었던 이유가 바로 java.lang패키지에 속한 클래스들이기 때문이었던 것이다. 우선 java.lang패키지의 여러 클래스들 중에서도 자주 사용되는 클래스 몇 가지만을 골라서 살펴보자. 1. Object 클래스 클래스의 상속을 학습할 때 Object클래스에 대해서 이미 배웠지만, 여기서는 보다 자세히 알아보자. Object클래스는 모든 클래스의 최고 조상이기 때문에 Object클래스의 멤버들은 모든 클래스에서 바로 사용 가능하다. Object.. 2020. 5. 30.
JAVA / 예외처리(exception handling) 1. 프로그램 오류 프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우가 있다. 이러한 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다. 이를 발생시점에 따라 '컴파일 에러'와 '런타임 에러'로 나눌 수 있는데, 글자 그대로 '컴파일 에러'는 컴파일 할 때 발생하는 에러이고 프로그램의 실행도중에 발생하는 에러를 '런타임 에러' 라고 한다. 이 외에도 '논리적 에러'가 있는데, 컴파일도 잘되고 실행도 잘되지만 의도한 것과 다르게 동작하는 것을 말한다. 예를 들어, 창고의 재고가 음수가 된다던가, 게임 프로그램에서 비행기가 총알을 맞아도 죽지 않는 경우가 이에 해당된다. 컴파일 에러 : 컴파일 시에 발생하는 에러 런타임 에러 : 실행 시에 발생하는 에러 논리적 에러 :.. 2020. 5. 28.
MVC패턴 *MCV패턴 MVC란 Model-View-Controller의 약자이며 소프트웨어 공학에서 사용되는 소프트웨어 디자인패턴이다. 디자인패턴에 대해서 궁금하다면 아래링크 클릭. https://hyeonstorage.tistory.com/99 디자인 패턴의 종류에 대해 알아보자 - Design Patterns 디자인 패턴의 종류에 대해 알아보자 * 프로그래밍에서 디자인 패턴이란? 프로그래밍을 하다 보면 반드시 라이브러리, 패키지, 모듈, 프레임워크 같은 것들을 사용합니다. 이 프로그래밍을 도와 hyeonstorage.tistory.com MVC패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향없이 쉽게 고칠 .. 2020. 5. 28.
Ubuntu / Github연결하기 *우분투에 깃헙(원격저장소) 연결하기 일반적으로 Window OS에서 작업한 소스들을 GitHub에 저장하고, 저장되어있는 파일들을 리눅스에서 내려받아 서버 유지보수 및 개발을 하게되는데 이것을 리눅스에서의 서버셋팅이라고하며 '배포' 한다고도 한다. 배포는 크게 2가지 방법을 가지고 있다. 첫째, Window OS에서 jar파일로 압축하여 리눅스에 배포하는 방법 둘째, jar파일로 압축하지않고 통째로 원격저장소에 보내고 배포하는 방법 보통 두번째 방법이 일반적이며 지금 이해를 못했다하더라도 일단 이렇게 알아두고 넘어가자. 연결하기에 앞서 우분투에 원격저장소를 연결하기전에 원격저장소에 repository가 존재해야하며 이번 포스팅의 컨셉은 윈도우OS에서 작업한 파일들을 GitHub에 저장하고 우분투에 해당.. 2020. 5. 27.
Ubuntu / 자바파일 생성하고 컴파일 및 실행하기 *자바파일 생성하기 자바파일을 만들어보자. 만약 JDK가 설치되지않았다면 아래링크 참조. https://swdevelopment.tistory.com/125 ubuntu / JDK 설치하기 *JDK 설치하기 JDK를 설치하기에 앞서 현재 내가 가지고 있는 저장소에 다운받고자하는 JDK버전이 있는지 확인해보자. 여기서 중요! sudo apt-cache search는 내가 가지고 있는 저장소에서 설치할 수 있�� swdevelopment.tistory.com JDK가 설치되어있다면 본론으로 들어가자. 1. 자바파일 생성시 ubuntu 디렉토리에 위치해야하며 현재 위치를 확인하고 ubuntu디렉토리가 아니라면 이동 본인은 위치가 ROOT 디렉토리에 있어서 위와 같이 이동했다. 2. nano 에디터를 활용하여 .. 2020. 5. 27.
Ubuntu / JDK 설치하기 *JDK 설치하기 JDK를 설치하기에 앞서 현재 내가 가지고 있는 저장소에 다운받고자하는 JDK버전이 있는지 확인해보자. 여기서 중요! sudo apt-cache search는 내가 가지고 있는 저장소에서 설치할 수 있는 항목들을 보여주는 명령어이고 apt-get update는 sudo apt-cache search를 통해 우리에게 보여주는 항목들을 최신화 시켜주는 명령어이다. 조심해야 할 것은 apt-get update를 주지않고 바로 sudo apt-cache search를 할 경우 내가 설치하고자하는 파일을 저장소가 가지고 있음에도 불구하고 list를 최신화 시키지 않아 저장소를 바꾸는 일을 초래할 수 있으니 유의할것! 그리고 만약 apt-get update 위와 같이 진행하고 항목을 살펴보았을때 .. 2020. 5. 27.
JAVA / 내부 클래스(inner class) 내부 클래스는 클래스 내에 선언된다는 점을 제외하고는 일반적인 클래스와 다르지 않다. 다만 앞으로 배우게 될 내부 클래스의 몇 가지 특징만 잘 이해하면 실제로 활용하는데 어려움이 없을 것이다. 내부 클래스는 사용빈도가 높지 않으므로 내부 클래스의 기본 원리와 특징을 이해하는 정도까지만 학습해도 충분하다. 실제로는 발생하지 않을 경우까지 이론적으로 만들어 내서 고민하지말자. 1. 내부 클래스란? 내부 클래스는 클래스 내에 선언된 클래스이다. 클래스에 다른 클래스를 선언하는 이유는 간단하다. 두 클래스가 서로 긴밀한 관계에 있기 때문이다. 한 클래스를 다른 클래스의 내부 클래스로 선언하면 두 클래스의 멤버들 간에 서로 쉽게 접근할 수 있다는 장점과 외부에는 불필요한 클래스를 감춤으로써 코드의 복잡성을 줄일 .. 2020. 5. 27.
Ubuntu / 우분투 저장소 변경하기 *Ubuntu 저장소 바꾸기 오늘은 우분투에서 저장소를 변경해보자~ 1. 우선 우분투를 실행하고 현재 위치를 살펴보자. 본인은 /home/ubuntu에 위치해있다. 2. 저장소를 변경하려면 ROOT폴더로 가야한다. cd .. 두번 입력하여 ROOT폴더로 위치하자. 3. 현재 저장소를 확인 및 변경하려면 sources.list로 가야하는데 이 파일의 경로는 /etc/apt이다. 이동! ls를 입력하면 현재 내가 위치하고있는 폴더가 가지고 있는 파일 또는 디렉토리를 확인할 수 있다. 위와 같이 /etc/apt로 이동하여 sources.list가 존재하는것을 확인할 수 있다. 4. 그 다음 우분투에 기본적으로 설치되어있는 nano에디터를 통해 sources.list를 GNU로 연다. 위와 같이 입력하면 패스워.. 2020. 5. 24.
Ubuntu / 우분투 설치하기 *Ubuntu 설치 운영체제 우분투를 설치해보자. 설치하기에 앞서 설치환경셋팅이 필요한데 본인은 Window OS를 사용하고 있으므로 다음과 같이 진행하였다. 1.제어판으로 이동하여 프로그램 클릭 2. Windows 기능 켜기/끄기 클릭 3. 'Linux용 Windows 하위 시스템' 항목을 체크 후 확인 누르고 재부팅하면 끝! 설치환경셋팅을 마쳤다면 우분투를 다운받으로 고고~ 4. MicroSoft Store로 이동하여 Ubuntu 검색 5. 최신버전인 20.04 Ubuntu클릭 하고 다운로드하면 끝~^^ 6. 다운로드 완료! 즐거운 개발하세요~^^ 2020. 5. 24.