주어진 배열(N: 2n+1)에서 단 1개만 중복(쌍을 가지지 않는)되지 않는 요소라고 할때본 요소를 찾는 방법으로 일반적으로 정렬 (오름차순이던 내림차순이던) 후 linear 하게 순차적으로 요소를 비교 하여 값 추출 하는 방법을 생각 할 수 있습니다. func searchNonDuplicateElement(A : [Int]) -> Int { var sorted = A.sorted() var idx = 0 while (true) { if sorted.count - 1 != idx { if sorted[idx] == sorted[idx + 1] { idx += 2 } else { return sorted[idx] } } else { return sorted[idx] } }} 먼저 배열을 정렬 한 다음 순차..
RxSwift 를 사용하면서 느낀점은 정말 코딩이 간편해지고 명확해진다는 것입니다.RxSwift를 이용하여 MVVM-C 패턴 을 짜보겠습니다. MVVM - C 패턴은 기존 MVVM 패턴에 Coordinator 라는 패턴을 결합한 패턴입니다. Coordinator 에서 화면 전환 및, ViewController & ViewModel 의 객체를 세팅하여 ViewController가 Single Responsibility Principle 을 가질 수 있도록 합니다. 또한, ViewModel에 비지니스 로직을 구현하여 마찬가지로 ViewController가 Single Responsibility Principle 을 가질 수 있도록 합니다. 기본 구조로는 -- Coordinator_1-- ViewControl..
RxSwift를 공부하고나서 정리한 글입니다.큰 틀에서 보면 Observer 와 Observable 에 대해 이해만 하신다면 RxSwift에 대해 크게 어려움이 없으실 겁니다.아래는 Observer 와 Observable에 대한 대략적 설명입니다. 관찰자(Observer)는 보초병이라 가정하고, 관찰가능한 무언가는 수신 무전기(Observable)라고 가정 하겠습니다. 보초병 보초를 서다 무언가를 발견합니다. 이상함을 감지한 보초병은 송신 무전기를 통해 이상을 알립니다. (이벤트 발생)당직본부에서 수신 무전기 (구독자)를 가지고 있던 당직사관이 무전을 감지하여 병력을 파견 합니다. (이벤트 발생에 따른 처리) 여기서 보초병의 송신무전기가 Observer 가 됩니다.당직사관이 가지고 있는 수신 무전기가 O..
RxSwift 는Reactive Extension Swift, Swift를 사용하여 Reactive Programming을 도와 주는 일종의 API 입니다. Reactive Programming은 OOP 개념과 같은 일종의 개발 패러다임입니다. 위키페디아를 인용 하자면 (영어를 잘 못하므로 이해부탁드립니다.)In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. "컴퓨팅에서, 반응형 프로그래밍은 데이터스트림들과 변화의 전파와 관계되어 있는 선언적인 프로그래밍 패러다임이다. " 라고 합니다. 이렇게 보니 선언형 프로그래밍이란 말..
양방향 SSL은 서버와 클라이언트가 서로의 공개키를 사용하여 핸드 쉐이킹을 하는 SSL 프로토콜이다.일반적인 (대부분의) HTTPS 통신은 단방향 SSL 프로토콜로, 서버의 공개키를 사용하여 핸드쉐이킹을 하는데, 이러한 통신에서 클라이언트는 서버를 검증하지만(서버의 공개키를 사용하여 검증) 서버는 클라이언트가 누군지 모르는 문제가 있다.이 때문에, 클라이언트(사용자) 인증을 위해 아이디, 비밀번호를 서버로 보내 서버가 클라이언트를 인지하도록 한다. 클라이언트에서 서버로 아이디, 비밀번호를 보낼때 (쉽지는 않지만) 비밀번호 탈취의 위험이 있다. 단방향과 마찬가지로 클라이언트가 서버에게 요청을 보낼 시, 서버가 자신의 공개키를 클라이언트에 보내고,클라이언트는 서버의 공개키를 CA를 통해 검증을 한다. 여기까..
암호화 알고리즘을 다루는 일을 하다보니 용어에 대한 이해가 필요할 것 같아 정리를 해본다. 평문 (Plain Text)- 암호화의 대상이 되는 텍스트 해쉬 (hash)- Message Digest (단축, 유일값)- 알고리즘 종류에 따라 결과 값의 길이가 고정이다.- 인풋에 따른 결과값이 고정이다. 동일 인풋이라면 결과는 같다.- 종류 : MD5(16byte), SHA1(20), SHA256(32) 등 대칭 키 블록 암호 알고리즘 (Symmetric Key Block Crypto Algorithm)- 암호화, 복호화 시 사용되는 키가 동일- 암호화 대상이 되는 평문을 블록 사이즈 만큼 잘라 암호화 블록을 연결하여 암호화- 종류 : AES, DES, SEED, ARIA 등 블록 모드 (Block Mode)..
기본적인 flux, redux 개념을 알고 있다는 가정하에 예제를 사용하여 설명한다(이것은 본인이 공부한 내용의 이해를 돕기위해 작성되었다.) 먼저 Action, Reducer 를 각각의 파일로 나눠서 관리하겠다. 1. actions.jsexport const RANDOM_STRING = 'RANDOM_STRING'; export function generateRandomString(size) { const _genRandomString = (size) => { let text = ''; const table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; for(let i = 0 ; i < size; i++){ text += ta..
대칭키라 함은 암,복호화에 쓰는 키가 동일하다는 것이다. 비대칭키는 그러면 무엇이겠는가?암호화를 하는데(encrypt) 키와 복호화 하는데(decrypt) 쓰는 키가 다르다는 것이다. 대표적으로 RSA가 있다.비대칭키에 대한 설명은 다음에 하고 오늘은 대칭키 암호화에 대해 말하고자 한다. 대칭키 암호화는 키의 길이에 따라 종류가 나뉘며 대체로 128비트, 256비트를 사용하며, AES같은경우는 192비트의 키도 사용한다.우리나라에서 많이 사용하는 대칭키 암호화 알고리즘을 나열해보자면 seed, aes, aria 정도가 되겠다. 패딩암호화 알고리즘을 사용하여 평문을 암호화 할때는, 평문을 블럭단위로 나누어 각 블록을 해당 알고리즘으로 암호화 하는 방식이다.이러한 방식을 블록 암호화라 한다.평문을 블록단위로..
JAVA로 만든 executable jar를 pkg로 만들어보자. * 준비물- appmaker2.app, executable jar, terminalURL : https://sourceforge.net/projects/jarappmaker/ (appmaker2.app) 1. appmaker2.app로 test.jar를 test.app로 변환2. 변환한 test.app 파일의 Contents -> MacOS -> launcher 를 텍스트 에디터로 연다.2.1 여기서 작업할 내용은 - 자바 설치 유무- 자바 버전 체크 osx(mac)에서는 JAVA가 설치되어 있지 않은 상태에서 terminal에서 java 명령어를 쓰면 OS 자체에서 JDK를 설치하라고 Oracle 사이트를 링크한다.JDK를 설치하면 자동..
자바스크립트에서 비동기식 프로그래밍을 하다보면 피치못하게 콜백헬에 부딪히는 경우가 발생한다.아래는 async1이 수행 후, async2, async3, async4가 차례로 수행되도록 (절차적으로 작동) 하는 비동기식 코드다.let async1 = (callback) => { callback();}let async2 = (callback) => { callback();}let async3 = (callback) => { callback();}let async4 = (callback) => { callback();} async1(() => { async2(() => { async3(() => { async4(() => { }) }) })})함수의 내용을 생략했기 때문에 뭐 이런거 가지고 문제가 되는가 하는..
- Total
- Today
- Yesterday
- reactivex
- AES
- angular
- App Transport Security
- full stack
- HTTPS
- PCX
- TLS1.2
- 암호화
- yss
- 전자서명
- iOS10
- 대칭키
- executable jar
- execute double click
- 윈도우 라이브러리
- remote debug
- rxswift
- node js
- Universal CRT
- MEAN stack
- ATS
- ucrtbase.dll
- TypedArray
- Visual Studio
- JavaScript
- Node.js
- build set
- 비대칭키
- cipher
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |