본문 바로가기

전체 글

(192)
[Kotlin] 코틀린 기초문법 요약 (Kotlin Summary) 미루던 코틀린 공부를 시작하였습니다. 사실 자바에 익숙한 사람이면 스킵해도 되는 부분이 많아보이지만, 기초를 다시 한번 복습하는 의미에서 포스팅합니다. 목차 구문 (Syntax) 출력 (Output) 주석 (Comments) 변수 (Variables) 데이터 타입 (Data Types) 연산자 (Operators) 조건문 (If, Else) While Loop Break/Continue 배열 (Arrays) 반복문 (For Loop) Ranges 함수 (Functions) 클래스/객체 (Classes/Objects) 생성자 (Constrctors) 상속 (Inheritance) NullSafe 1. 구문 (Syntax) “Hello World”를 출력 fun main() { println("Hello W..
[Java] 자바 스트림 API에 대해 (Java8 Stream Guide & Example) 스트림API를 이해하기 위해서는 lamdba expressions. Optional, method references에 사전학습 하는 것을 권장합니다. Java Method Reference Java Lamdba Expressions Java Optional Stream API는 자바 8에 추가되어 다수의 데이터를 다룰 때 사용하는 배열이나 컬렉션의 비효율적인 면을 개선하기 위해 탄생한 방법입니다.(데이터를 입출력할 때 사용하는 스트림( I/O Streams )(ex: FileInputStream)과는 다른 개념입니다.) 스트림 API는 데이터를 추상화하여 다루어 다양한 데이터 타입을 같은 방법으로 다룰 수 있게 됩니다. StreamAPI 는 컬렉션(이하 기존 반복문)은 외부 반복을 통해 작업하지만 스트..
대칭키 암호화 방식 개요 (ECB, CBC) 실무에서 자주 사용하는 암복호화 알고리즘이 어떤 원리로 동작하는지 정리해보았습니다. 블록 암호 모드 주어진 평문을 블록 단위로 (암호화 키) 암호화하는 기법이다. 대칭 암호화 방식은 하나의 평문을 블록 단위로 나누어서 암호화 또는 복호화를 하고 있다. 평문의 길이가 블록 암호의 블록 크기보다 커서 남는 경우에는 어떻게 할까? 예) 300비트 평문을 AES로 암호화 하는 경우 AES의 블록 크기: 128비트 블록 개수: 3개 3번째 블록에 저장되는 데이터 크기: 44비트 패딩(Padding): 블록의 남은 부분에 데이터를 채워 넣는 것을 말한다. 정리하자면, 평문을 128비트로 나누어서 남은 비트는 Padding으로 들어간다는 뜻이다. 여기서 패딩 알고리즘 기법으로 PKCS#5 등이 사용되는데 그렇게 어려..
[Flutter] 8주간의 플러터 스터디 회고 진행 기간: 2022/03/06 ~ 2022/04/24 (8주) 내용: Udemy Dart를 사용한 완전한 2021 Flutter 개발 부트캠프 스터디 기관: https://study.flearner.co/ (플러너) 올해 2월, 지인분에게 플러터 스터디를 소개받았습니다. 일과 학업을 동시에 병행하고 있던 상태라서 신청하지 않으려고 했지만 무슨 객기였는지, 앱 개발에 관심 있었기도 해서 자신의 한계를 경험해보고 싶었고, 그렇게 스터디를 신청했습니다. 덕분에 하드 한 일정의 8주간을 보냈네요. 스터디는 강의를 통해 진행되었으며, 온라인에서 스터디 멤버들과 후기와 내용을 공유하는 방식으로 진행되었습니다. 1주 차 (I Am Poor App) 플러터에 대한 소개와 간단한 UI의 App을 만들고, 빌드하고 직접..
[Flutter] Firebase DB 값 순서정렬(Timestamp, 시간 순 정렬) 강의를 보고 따라 해서 완성한 채팅어플이다. 다 잘 동작하는데 채팅의 순서가 이상하게 꼬여서 올라온다. 찾아보니 FireBase의 채팅 doc ID들은 랜덤으로 생성되는데 여기의 문자열 순서대로 정렬되어 채팅어플에 뿌려주고 있으므로 순서가 뒤죽박죽 섞이던 것이다. 메시지에 시간필드를 추가해주면 정렬할 수 있지 않을까 시도해봤다. cloud_firestore_platform 라이브러리의 Timestamp 클래스를 사용해주어 현재 시간과 함께 add 해주자. Firebase에서 확인해보면 timeStamp 속성이 잘 추가되어 있다. 그리고 stream에서 firebase DB의 값을 가져올 때 orderBy를 이용해 timeStamp 순으로 정렬하여 갖고 오면 의도한 대로 잘 정렬된다.
[Flutter] 코드 리팩토링 & 소스추출에서의 Widget과 Method의 차이 개요 중복된 소스를 공통으로 만들어 사용할 때 클래스와 메소드, 어느 방식으로 리팩토링 하는 것이 더 좋을까? 기존 코드 Padding( padding: const EdgeInsets.symmetric(vertical: 16.0), child: Material( elevation: 5.0, color: Colors.lightBlueAccent, borderRadius: BorderRadius.circular(30.0), child: MaterialButton( onPressed: () { //Go to login screen. Navigator.pushNamed(context, LoginScreen.id); }, minWidth: 200.0, height: 42.0, child: const Text( '..
[인터넷보안] 6-1. 웹 보안 취약점 개요 보호되어 있는 글입니다.
[JavaScript] AES256 암호화 처리 function aes256Encrypt(text){ var key = CryptoJS.enc.Utf8.parse(encryptKey); //암호화키 (32자리) 할당 var iv = CryptoJS.enc.Hex.parse(ivVal);// IV값할당 return CryptoJS.AES.encrypt(text, key, {iv:iv}).toString(); } encryptKey(비밀키) - 16바이트 (16자리)를 입력시 AES-128 출력 - 24바이트 입력 시 AES-192, 32바이트 입력 시 AES-256으로 출력한다. Iv - 배열 값은 16바이트 고정 - ivVal 파라미터에 값을 넣어준다.