본문 바로가기

Tutorial

[PYTHON 3] Tutorials 45. Struct (bytes data <-> normal data(human readable)) 안녕하세요. 이번 시간에는 Struct 에 대해서 알아보도록 하겠습니다. 파이썬에서 Struct이 무엇인지부터 얘기를 시작해볼까 합니다. 파이썬에서는 어떠한 형태의 데이터, 가령 numbers, letters, string 와 같은 데이터를 bytes (0,1 으로 이루어진 바이너리 형태의 데이터) 데이터로 converting 할 수 있습니다. 그럼 왜 이렇게 bytes 형태의 데이터로 전환을 할까요? 이는 우리가 사용하는 컴퓨터가 데이터를 저장하거나 네트워크를 통해 이러한 데이터를 주고 받을 때, 이진형태의 bytes data( 0, 1 )로 데이터를 다루기 때문입니다. 그러나 이런 형태의 데이터는 인간이 확인하여 인지하기는 힘든 점이 있습니다. 그러므로 평소에는 인간들이 읽을 수 있는 형태로 스크린에.. 더보기
[PYTHON 3] Tutorials 43. Image Merge Effect (서로 다른 채널을 이용 이미지 병합하기 such ghost images) 이번에는 여러 장의 이미지를 가지고 각각의 이미지에서 채널을 분리하여 이 채널(모드)들을 서로 교차시켜 보겠습니다. 간혹 크리피한 이미지들, 가령 귀신 그림마냥 하나의 이미지에 다른 이미지가 살며시 얹혀 있는 그림이 있는데, 이렇게도 구현할 수 있는 방법 중 하나입니다. 말보다는 코드를 통해 보겠습니다. 다소 차이는 있겠으나, 구현 방법은 비슷합니다. 원본 이미지 - 고양이들 찬조출현.▼원본이미지(고양이들)를 열어 cat 이라는 변수에 저장합니다. ▼cat 에서 r,g,b 각각의 채널(모드)로 분리를 합니다. ▼분리한 채널(모드)를 merge(병합) 을 이용하여 새로운 이미지로 만들어 new_img 변수에 저장합니다. ▼이렇게 새로 만든 이미지를 확인하겠습니다. 원본 이미지의 고양이들과 차이가 전~혀 없.. 더보기
[PYTHON 3] Tutorials 40. Cropping Images (이미지 잘라내기) 이전 시간에는 파이썬에서 이미지를 불러오는 모듈인 "Pillow"에 대해 알아보았습니다. 이번에는 이렇게 불러들인 이미지를 기호에 맞게 처리하는 방법 중 하나인 image crop 에 대해 알아보려고 합니다. 앞에서 사용한 코드를 그대로 재활용하겠습니다.▼ 사용할 이미지에서 표시된 부분만 cropping(잘라내기) 후 새로운 파일로 저장을 하려고 합니다. 여기에서 사용할 위치값이 존재하는데, 4개의 인자를 필요로 합니다. (가로 시작점, 세로 시작점, 가로 범위, 세로 범위) 이런 순서로 값을 넣어주어야 합니다.▼ 위에서 언급한 위치값을 area 변수에 저장을 하겠습니다. 가로 시작점:100, 세로 시작점:100, 가로 범위: 1000, 세로 범위:1200 의 값을 area 에 저장을 합니다.▼ 원본 이.. 더보기
[PYTHON 3] Tutorials 39. Pillow (필로우- 이미지 처리) 파싱, 이미지 처리, 연산 등의 분야에서 거의 알려지지 않은 파이썬 라이브러리 : Pillow파이썬(Python)이 프로그래밍 언어로써 확고한 지위를 차지할 수 있었던 몇 가지 이유가 있다. 기존 라이브러리에 더불어 써드 파티에서 제공하는 방대한 양의 라이브러리만 봐도 알 수 있다. 그러나 너무 많은 나머지 가치를 충분히 인정받지 못하고 파묻히는 아까운 라이브러리들도 있다. 또한, 한 영역에만 집중적으로 작업하는 프로그래머는 다른 유형의 작업을 위해 만들어진 라이브러리를 통해 얻을 수 있는 유익한 부분을 미쳐 모르는 경우도 있다. 이번 시간에 다룰 라이브러리가 그 중 하나인 "Pillow"이다. 필로우(Pillow)용도: 간편한 이미지 처리 장점: 이미지 처리 경험이 있는 대부분의 파이썬 사용자들은 PI.. 더보기
[Swift] 028 Functions and Closures - 2 (함수의 다중 파라미터 ) for beginners Functions다중 파라미터 함수Swift의 함수 개념은 앞서 살펴보았듯이 수학적인 개념 이상의 것입니다. 넓은 의미에서 Swift의 함수는 한 개 이상의 파라미터를 받아들이고 숫자뿐만 아니라 다른 타입도 받아들인다는 점에서 더 유연하고 강력합니다. 한 개 이상의 파라미터를 받아들이고 Doouble형 이외의 타입도 반환하는 함수를 만들어보겠습니다. 다중 파라미터 함수▼ func buildASentence(subject : String, verb : String, noun : String) -> String { return subject + " " + verb + " " + noun + "!" } buildASentence("Swift", verb: "is", noun: "cool") buildASent.. 더보기
[Swift] 025 Making Decisions - 3 (조건문 - switch-case) for beginners 의사 결정(Making Decisions) - Switch-Case스위치문 사용(Switching things around) 앞의 예문에서는 세 개의 if 문이 가능한 case를 처리했지만 비교할 가능성이 더 있다면 어떻게 해야 할까요? 반복되는 if문이 다소 길면 코드를 입력하는데 지루하고 읽는 것도 어려울 것입니다. switch문은 값을 검토해서 몇 가지 패턴과 비교합니다. 그런 다음, 처음 매칭되는 패턴이 있는 코드 블록을 실행시킵니다. if문을 사용할 때보다 switch문은 다수의 코딩을 처리할 때 매우 유용합니다. switch문은 여러가지 가능한 경우로 구성되어 있습니다. 각 경우는 case라는 키워드로 시작됩니다. 특정 값과 비교할 수도 있지만, Swift에서는 더욱 복잡한 패턴과 비교하는 여.. 더보기
[Swift] 023 Making Decisions - 1 (조건문) for beginners 의사 결정(Making Decisions)컴퓨터가 "생각"을 할 수 있을까요? 이것은 자주 논쟁이 일어나는 쟁점이기도 합니다. 컴퓨터는 결정을 내리는 부분에서 일을 잘합니다. 어떤 앱이든 필수적인 것 중 하나가 결정을 내리는 것이며 무엇을 하는지 어디로 가는지 아는 것이 프로그램의 흐름에서 매우 중요합니다. 프로그램 흐름은 "참이면 이곳으로 가고, 참이 아니면 저쪽으로 간다" 또는 "참이 아니면 참일 때까지 이 작업을 계속해서 수행한다."와 같은 하나의 긴 결정의 연속입니다. 우리의 삶도 이렇게 많은 결정을 해야 하는 일들로 가득 차 있으며, 때로 생각하지 않고 결정을 내리기도 합니다. 어떤 신발을 신을지, 몇 시에 출근할지, 또는 언제 길을 건너는 것이 좋을지 등 우리가 매일 마주치는 결정의 순간들입니.. 더보기
[Swift] 022 Launching Xcode (Xcode 실행하기) for beginners Xcode 실행하기 지금까지는 Swift의 REPL을 사용해 코드를 입력하고 결과를 보았습니다. REPL은 즉각 피드백을 제공하면서 짧은 소스 코드에서는 작동이 매우 잘 되었습니다. 그러나 앞으로는 더 긴 코드를 사용하게 될 것입니다. 긴 코드를 저장 및 로드하고 편집을 쉽게 하기 위해서는 Xcode를 사용해야 합니다. Xcode는 애플이 제공하는 iOS, OS X, Apple TV OS 용 Swift 앱을 개발 할 때 사용하는 개발 환경입니다. spotlight를 이용하여 실행하기▲ Xcode 경로 찾아서 실행하기▲ Xcode 시작 창▲ 플레이그라운드 저장 중▲ 새롭게 생성된 플레이 그라운드 창▲ Xcode 의 새롭고 재미있는 기능은 플레이그라운드(playground)입니다. Swift는 프로그래머들이.. 더보기
[Swift] 020 Iterating Collections (컬렉션 반복) for beginners 기본적인 컬렉션 타입인 배열과 딕셔너리를 모두 살펴보았습니다. 이젠 배열과 딕셔너리를 반복하는 방법에 대해 알아보고자 합니다. 컬렉션을 반복하는 것은 배열이나 딕셔너리 내의 값을 각각 검사하고 검사 후 잠정적으로 작업을 수행하는 것입니다. 반복은 우리가 일상생활에서 항상 하는 일을 말합니다. 업무를 완료하기 위해 문서로 작성된 단계별 리스트대로 작업할 때 이 리스트의 내용을 반복하는 것입니다. 데이터를 가지고 반복할 때도 다르지 않습니다. 반복은 매우 기본적인 코딩 작업으로 예제를 가지고 다뤄보도록 하겠습니다. Swift에서는 컬렉션에 대한 반복을 쉽게 만들 수 있게 다양한 구문을 제공합니다.배열 반복(ARRAY ITERATION)C 언어를 사용해 본 분들이라면 for 반복문 개념이 매우 친숙할 것입니다.. 더보기
[Swift] 019 Declare Array and Dictionary (배열, 사전 선언하기) for beginners 지금까지 만든 배열과 딕셔너리는 선언할 때 초기화 되었습니다. 그러나 Swift 언어로 프로그램을 개발할 떼에는 때로 초기화 없이 배열이나 딕셔너리를 생성하는 것도 필요합니다. 선언 당시 애플리케이션 내에서 값이 알려지지 않았거나 빈 배열 또는 빈 딕셔너리를 라이브러리나 프레임 워크 내의 메서드로 채울 필요가 있습니다. 빈 배열(The Empty Array)빈 배열을 선언하는데 두 개의 명명법이 사용됩니다. 위 방식은 배열을 "손으로" 직접 입력해서 선언한 형태이고 Array 키워드와 괄호로 묶은 배열의 타입이 사용됩니다. 그리고 Swift는 사용할 수 있는 "약식" 형태의 두 번째 방법도 제시함니다. 위 예제는 Int 값을 가지고 있는 빈 가변 배열을 선언합니다. 가변 배열이기 때문에 배열을 변.. 더보기
[Swift] 018 Dictionary (사전) for beginners 딕셔너리(The Dictionary) 사전을 생각하면 유명한 사전 편집자인 대니얼 웹스터(Daniel Webster)가 떠오를 것입니다. 도서관 서가에 꽂혀 있는 사전에는 뜻을 자세하게 설명한 단어들이 잘 정리되어 있습니다. 또한, 사전에서 단어의 정의를 찾을 때는 알파벳 순서대로 찾습니다. Swift 언어의 딕셔너리(Dictionary)도 우리가 알고 있는 사전처럼 사용합니다. 딕셔너리는 같은 타입을 가진 여러개의 값을 저장하는 하나의 컨테이너라고 볼 수 있습니다. 각각의 값은 유일한 키(key)와 값(value)에 물려 있으며, 이 키와 값은 딕셔너리 안에서 해당 값을 찾기 위한 식별자의 역할을 합니다. 배열의 값들과 달리 딕셔너리 안에 저장된 값은 어떤 순서가 정해져 있지 않습니다. 그래서, 실제로.. 더보기
[Swift] 013 Using Aliases (앨리어스 사용하기) for beginners 앞서 타입에 대해서 알아보고 변수와 상수를 인식하고 분류하는 것이 Swift 언어에 얼마나 중요한지도 살펴보았습니다. 불변(변하지 않는)하는 속성처럼 타입은 프로그램의 모든 수와 문자열의 필수 요소입니다. 그러나, 때로 타입 앨리어스(type alias)를 사용해 소스 코드의 가독성을 높이고 싶을 때도 있을 것입니다.타입 앨리어스는 타입에 다른 이름을 넣으라고 Swift에 말하는 방법입니다.타입 앨리어스를 사용해 원래의 Swift 타입인 UInt8 이 EightBits로 재정의했습니다. 그리고 EightBits는 그 다음 선언문에도 사용되었습니다. 조금 더 나아가 타입 앨리어스를 또 다른 타입 앨리어스에 할당할 수도 있습니다.▼NewBits 와 EightBits는 UInt8 의 아래에 있습니다. 타입 측.. 더보기
[Swift] 012 Printing made easy (출력도 쉽게) for beginners 지금까지 REPL에서 문자열을 출력할 때 print 메서드를 사용했습니다. 이 메서드를 다시 살펴보고 좀 더 복잡한 문자열을 구성하는데 이 출력 메서드를 어떻게 사용하는지 알아보겠습니다. print메서드의 편리한 기능 중 하나는 변수의 내용을 힘들이지 않고 다른 텍스트와 같이 즉시 출력하는 것입니다. C 언어나 Objective-C 언어에 익숙한 개발자라면 포맷된 텍스트를 표현하기 위해ㅐ 입력해야 하는 양이 엄청나다는 것을 알고 있을 것입니다. C 언어의 printf와 Objective-C 언어의 NSLog()가 그 대표적인 표현식 예제입니다. 아래 예제는 Objective-C의 코드입니다. NSString *myFavoriteCity = " New Orleans"; NSString *myFavorite.. 더보기
[Swift] 011 Boolean - True or False (참 또는 거짓) for beginners Swift가 지원하는 또 다른 타입은 불(Bool) 또는 불리언(Boolean)형입니다. 불형은 true 또는 flase의 단일 값을 가지고 있으며 "12가 3보다 더 큰가?" 또는 "55는 12와 같은가?" 와 같은 질문에 대한 답의 비교 수식에 사용됩니다. 이런 논리 비교는 객체 리스트의 반복을 종료하거나 조건문의 실행 경로를 결정하는 등 소프트웨어 개발에 많이 사용됩니다. 아래 예제에 사용된 비교식은 '~보다 더 큰', '더 크거나 같은', '~보다 작은', '작거나 같은', '같은', '같지 않은' 등의 비교 연산을 나타내고 있습니다. 비교의 "참(trueness)"을 근거로 불의 true 또는 false가 반환됩니다. Int 형과 Double 형의 수치 타입 모두 비교되는지 보여주는 Int 형 .. 더보기
[PYTHON 3] Tutorials 3. Strings string 은 컴퓨터 프로그래밍에서 일종의 텍스트라고 생각하시면 됩니다. 가령, 이름, 문장등과 같은것을 일컬어 string이라고 할 수 있겠죠. 파이썬에서는 string 을 사용하기 위해서는 single quote(' ') 혹은 double quote(" ") 을 사용합니다. 위 문장들에서 " " , ' ' 안에 있는 것을 string으로 인식합니다. 위 문장에서 'I don't think she is 20' 이 부분은 오류가 있습니다. ' ' 은 시작과 끝을 알려주어야 하는데 don't 에도 single quote가 있어서 이 부분을 문장의 끝으로 인식을 해 버린 것입니다. 이럴경우 아래 그림과 같이 double quote을 사용하여 문제 해결을 합니다. double quote 을 사용하여 문장 전.. 더보기
[PYTHON 3] Tutorials 1. Python Installation 안녕하세요. Jason 입니다. 앞으로 시간이 있을 때 파이썬 튜토리얼을 조금씩 만들어서 올려보려고 합니다. 프로그램 초심자들도 쉽게 익힐 수 있는 언어 중 하나인 파이썬을 소개하고 조금이나마 컴퓨터를 활용한 생산성 향상에 도움이 되었으면 하여 시작하게 됨을 알려드립니다. 저의 컴퓨터 환경은 맥을 기반으로 하고 있어서 맥 위주로 설명이 이루어 지겠으나, 윈도우나 리눅스 등 여타 다른 OS 에서도 크게 다르지 않습니다. 읽어 보시고 궁금한 점이 있으시면 아는 한도내에서 설명을 드리겠습니다. 그럼 시작을 해 볼까요? 우선 파이썬을 시작하기에 앞서 프로그램을 설치해야겠죠? 아래 보이는 python.org 에 들어가셔서 다운받아 설치하셔도 됩니다. 주소는 : https://www.python.org 입니다. 그.. 더보기