본문 바로가기

애플

애플 스크립트를 이용한 이메일 보내기 with 첨부파일. Sending an Email with attachments using AppleScript tell application "Mail" set theSubject to "제목을 넣어준다." -- the subject set theContent to "본문에 들어갈 내용을 적는다" -- the content set theAddress to "수신인의 메일 주소를 적는다" -- the receiver -- set theSignatureName to "시그너쳐 이름을 넣어준다." -- the signature name set theAttachmentFile to "SH:Users:SH:Desktop:ScreenShots:1.png" -- 첨부파일의 경로를 설정한다. set msg to make new outg.. 더보기
Web Crawler 013 - Initializing first spider - 첫 스파이더 구동하기. 자, 이번 시간부터는 본격적으로 웹 사이트 크롤링을 해 보도록 하겠습니다. 그러기 위해서 이제까지 만들어 둔 함수 및 파일들을 한 곳에서 일괄적으로 다루어야 함으로 main.py 라는 파일을 만들도록 하겠습니다. 그리고는 아래와 같이 파일들도 불러오고 쓰레딩(threading) 관련 모듈도 불러 옵니다. 하나의 스파이더로 처리하는 것은 비효율적이겠죠? 몇 개는 링크들을 찾는 크롤러로 활동하게 하고, 또 다른 몇개의 스파이더들은 다른 스파이더들이 찾은 링크를 타고 들어가서 또 링크를 찾고 이렇게 서로 협업을 하게 하기 위함입니다. 개략적인 내용은 쓰레딩을 lookup 해보시면 아시리라 봅니다. ▼ 프로젝트 네임을 아래와 같이 정해주었습니다. 그냥 단순하게 홈페이지 이름을 기입하였습니다. 지금은 이렇게 써 .. 더보기
Web Crawler 012 - Domain Name Parsing - 도메인 네임 파싱하기. 안녕하세요. 이번 시간에는 크롤러가 어느 웹사이트를 크롤링 할지를 정해주는 도메인 네임에 대해 알아보고자 합니다. 인터넷은 참으로 광범위한 공간이죠. 만약 이러한 공간을 특별한 조건없이 크롤링하게 한다고 하면 어떻게 될까요? 아마도 내 컴퓨터의 모든 자원은 전세계 인터넷을 뒤지고 다니느라 바빠질 것입니다. 이러한 무한 루프를 방지하기 위해서는 특정한 조건을 주어 이 범위를 만족하는 사이트들만 크롤링 하라고 명령을 내려야 할 것입니다. 그래서 필요한 것이 도메인 네임입니다. 제 블로그를 기준으로 얘기를 하자면, 여기의 주소는 https://creativeworks.tistory.com 입니다. 여기에서 도메인 네임은 tistory.com 이 됩니다. 만약 tistory.com 을 제가 혼자 다 사용하고 있.. 더보기
Web Crawler 011 - Adding Links to Queue - 링크를 웨이팅 리스트에 추가하기. 이번 시간에는 이전 시간에 이어서 웹페이지에서 찾아낸 링크들을 waiting list 에 추가하는 함수를 만들어 보도록 하겠습니다. 어떤 특정 사이트에 있는 전체 웹페이지들을 크롤링하기 위해서 해당 사이트의 홈페이지를 들어가고 거기서 링크를 타고 타고 가서, 해당 사이트의 모든 링크들을 찾을 것입니다. 이렇게 찾아낸 링크 값들을 waiting list 에 넣게 하는 스파이더와 waiting list 에 저장이 된 링크들을 각각 따로 크롤링 할 스파이더들을 만들어야 합니다. 이와 같은 일련의 과정중 전자인 찾은 링크들을 waiting list ( queue) 에 넣어주기 위한 함수를 만들것 입니다. 우선 아래와 같이 찾은 링크를 인자로 받는 함수를 선언해 줍니다. ▼만약 전달 받은 링크의 url 값이 qu.. 더보기
Web Crawler 009 - Crawling Pages You want to crawl - 크롤링 하고자 하는 페이지 링크들 크롤링하기. 오랜만에 글을 쓰는 것 같네요. 이번에는 지난 시간까지 만들어 둔 코드부분에 크롤링을 할 수 있게 하는 함수 crawl_page() 부분을 추가해 주도록 하겠습니다. 아래와 같이 함수를 정의해 주겠습니다. thread_name, page_url 을 인자로 받도록 하겠습니다.▼만약에 전달 받은 page_url 값이 기존에 crawled 되어 있는 리스트에 존재하고 있다면, 중복해서 또 크롤링 해 줄 필요가 없겠죠? 그래서 없는 경우에만 크롤링할 수 있도록 조건을 달았습니다.▼크롤링된 값에 없는 url 이면, 이제부터는 해당 url 을 크롤링 할 것이라고 사용자에게 알려주는 문구를 보여주게 하고 있습니다. 물론 크롤링 할 page_url 이 어떤 것인지도 함께 표기하도록 하였습니다. ▼그리고 waiting .. 더보기
How to check the length of a media file on bash - bash 를 이용한 동영상 파일 길이 알아내기. There are several methods to do that. I'd like to post one of the easiest way how I can find out the length of a video(media) file by using. First of all, you need to install 'FFMPEG' with homebrew on mac (if you are using it). if you don't know how to install homebrew on MAC, you can check it on my blog link below [MAC TIP] Mac에 Homebrew 설치하기 Here we go~, Something similar to:ffmpeg -i input 2>.. 더보기
Web Crawler 006 - Creating the spider - 스파이더 만들기. ## 시작하기에 앞서, Paek 님이 지적해 주신 사항입니다. 이전 시간까지는 main.py 로 작성을 하였는데, 파일명을 general.py 로 바꾸었습니다. 왜냐하면 추후에 만들어둔 모든 함수, 파일을 한곳에서 처리하기 위해 별도로 main.py 를 만들기 위함입니다. 지적해주신 Peak님 감사합니다. ## 이제 기본으로 필요한 도구들(함수)을 만둘어 보았으니, 다음으로 크롤링을 위한 스파이더를 만들어 보도록 하겠습니다. 파이썬에서 말하는 스파이더는 마치 거미가 거미줄(web)을 여기저기 돌아 다닌다는 의미로 네이밍이 되었습니다. 그와 마찬가지로 코딩을 통하여 웹상에서 링크를 타고 타고 돌아다니게 하기 위해 스파이더를 만들어 주도록 하겠습니다. 우선 필요한 모듈을 불러오도록 하겠습니다. 아래와 같이 .. 더보기
Web Crawler 005 - Parsing HTML and Find Links - HTML 파싱 및 링크 찾기. 이번 시간에는 HTML 을 파싱하고 웹페이지에서 링크들을 찾는 것 까지 다루어 보도록 하겠습니다. 우선 HTML을 파싱하기 위해 관련 모듈을 불러오겠습니다. ▼ urllib 에서 parse 도 불러오겠습니다. ▼ 링크를 찾는 클래스를 정의해 주도록 하겠습니다. ▼ 초기화를 아래와 같이 하고 HTMLParser를 종속하게 하였습니다. ▼ 웹페이지에서 tag 를 다루는 함수를 정의하고 찾게 될 tag를 확인할 용도로 print() 하도록 하였습니다. ▼ 에러는 아래와 같이 우선 정의해 주었습니다.▼ 클래스 기초 정의는 끝났습니다. 그럼 이게 어떤 의미인지 알아보도록 하겠습니다. 아래 코드를 보시면 finder 는 LinkFinder() 로부터 생성하였습니다. 그리고 웹페이지에서 찾을 태그가 feed() 안에.. 더보기
Web Crawler 004 - Accelerate Crawling by avoiding repetition - 중복을 회피하여 크롤링 속도 개선하기. 이전 시간까지는 기본적으로 어떤 웹 사이트를 크롤링하기 위해서 기초작업을 하였습니다. 프로젝트 생성, 링크를 저장할 파일 만들기, 파일 내용 삭제하기 등등. 이번에는 웹 크롤링을 할 때, 어떤 페이지를 타고 들어간다고 생각해보세요. 거기서 링크를 파일로 저장을 하였는데, 다른 곳에서도 같은 링크를 찾을 경우가 많을 것입니다. 이렇게 서로 중복되는 링크들을 크롤링을 하게 된다면, 시간이 꽤 걸릴 것입니다. 물론 몇 페이지가 안된다면, 체감할 정도는 아닐 것입니다. 그러나 크롤링 할 페이지가 1만 혹은 그 이상이 된다고 한다면, 상당한 시간을 중복된 링크를 크롤링하는데 소요하게 될 것입니다. 그래서 이번에는 이러한 중복 자체를 크롤링 하기 이전에 제거하는 코딩을 해 보려고 합니다. 파이썬에서는 여러개가 중복.. 더보기
Web Crawler 003 - 링크 찾기 및 삭제하기 (Adding and deleting links) 이번에는 기본 URL 에서 크롤링 하려고 찾은 링크들을 파일에 저장을 하려고 합니다. 멀티 프로세싱 혹은 멀티 쓰레딩 작업을 통해서, 하나의 과정은 링크를 찾아 파일에 넣어 저장하고, 다른 하나의 과정은 이렇게 찾은 링크들을 크롤링하게 하려고 합니다. 여기에서 찾은 링크를 파일에 저장을 할 시에 중복되는 링크도 존재하기 마련입니다. 그래서 그런것들의 중복 크롤링을 막기 위해, 애초에 크롤링할 파일에 해당 링크 URL 이 존재하면 추가적으로 append 하지 않게 하면 됩니다. 시작해 볼까요? 우선 이미 만들어 둔 파일에 링크를 더해가는 함수를 정의하겠습니다. ▼ append 모드로 해당 경로를 열어줍니다. 그리고 이것을 file 로 명명하겠습니다.▼ 파일을 열어 전달해 줄 데이터 값을 넣고 뒤에는 개행문.. 더보기
Advanced scheduling of Mac OS Wake and Sleep Time Mac OS has a settings panel that allows you to schedule the Wake, Sleep and Shutdown time for your Mac, but there is only one sche dule allowed, everyday, or every friday, or every weekend, and so on. I wanted a different wake and shutdown time for the weekend and weekdays. This is possible using cron, and the command line tool pmset. The crontab below wakes the Mac up at 5pm every weekday and s.. 더보기
남의 컴퓨터를 내 마음대로 다룬다? - Python Reverse Shell_004 - Client Connection to Server (파이썬 리버스 쉘 - 클라이언트에서 서버에 연결하기) 지난 시간에 이어서 이번 시간에는 클라이언트(타겟팅 컴퓨터 혹은 내가 조정하고자 하는 컴퓨터)에서 실행시킬 코드를 다루어 보도록 하겠습니다. 우선 아래와 같이 필요한 모듈을 import 해줍니다. ▼ 소켓을 실행시켜 변수 s 에 넣겠습니다.▼ 서버(내 컴퓨터)의 아이피 주소를 호스트에 할당해 줍니다. 여기 있는 아이피로 클라이언트(숙주 컴퓨터)가 찾아오게 하는 겁니다. 물론 아래와 같이 자신의 아이피를 고스란히 누설하는 크래커는 없을 것입니다. 보통은 다른 루트를 여러번 경유하게 하거나, 중간에 다른 매개체(!!)를 거치게 합니다. 이 부분은 다루지 않겠습니다. 그러다 정말 철컹철컹 당할 사람을 만들면 안되겠기에.....;; 아래 아이피도 임의의 가상 아이피 입니다. 집에서 공유기를 사용하신다면, 192.. 더보기
남의 컴퓨터를 내 마음대로 다룬다? - Python Reverse Shell_003 - Sending Commands to the Client (파이썬 리버스 쉘 - 클라이언트에게 명령어 보내기) 지난 시간까지는 통신을 하기 위한 소켓 생성, 소켓 바인딩, 소켓 수용하는 것 까지 간략히 만들어 보았습니다. 이번 시간에는 멀리 있는 클라이언트 컴퓨터에게 어떤 명령을 전달할지에 관한 부분을 다루어 보도록 하겠습니다. 우선 명령어를 보내기 위한 함수를 정의하겠습니다.▼명령어를 일회성으로 보내고 말 것이 아니기에 특정 조건이 들어오기 전까지는 계속 사용하게 할 반복문을 사용하였습니다.▼내가(서버) 내릴 명령어를 입력받을 input() 을 넣고 이 값을 cmd(Command)라는 변수에 저장을 하게 하겠습니다.▼만약에, 이 cmd 값이 'quit' 라는 입력이 들어오면 상기의 모든 과정을 종료시키게 하려고 합니다. ▼if 조건인 cmd == 'quit' 가 만족되면 conn 인 커넥션도 종료하고, 소켓인 .. 더보기
남의 컴퓨터를 내 마음대로 다룬다? - Python Reverse Shell_002 - Binding the Socket and Listening for Connections (파이썬 리버스 쉘 - 소켓 묶기, 연결 대기) 앞 시간에는 멀리 떨어져 있는 다른 컴퓨터와 데이터를 주고 받는 통신을 하기 위해 소켓을 만들어 주었습니다. 이번에는 그렇게 만든 소켓의 데이터를 바인딩(묶어주기)하고 바인딩된 데이터를 가지고 상대 컴퓨터와 접속하게 하고, 그 접속을 서버(내 컴퓨터)에서 받아들이게 하는 과정까지 다루어 보도록 하겠습니다. Socket Binding(소켓 바인딩)통신을 하기 위해서는 통신 기기간(여기서는 컴퓨터) 데이터가 어디에서 오고 어디로 가는지를 알아야 합니다. 이럴 때 사용하는 개념이 아이피(host)주소와 포트(port) 입니다. 그리고 이러한 host와 port를 바인드(묶어주기) 해주어야 어떤 데이터가 오가는지 쉽게 파악할 수 있습니다. 이는 송수신 데이터는 국제 규약인 프로토콜(Protocol)을 따라야 하.. 더보기
남의 컴퓨터를 내 마음대로 다룬다? - Python Reverse Shell_001 - Creating a Socket (파이썬 리버스 쉘 - 소켓 만들기) 안녕하세요. 이번에는 새로운 PYTHON SERIES 를 올려볼까 합니다. REVERSE SHELL 이라고 합니다. 처음 들어보는 분들도 계시겠지만, 개략적인 내용은 대부분 알고 있는 친숙한 개념입니다. 우선 아래 그림을 먼저 살펴볼까요? ▼ 왼쪽 그림에서 A -> C 로 접속을 하려고 하는데 중간에 방화벽(Firewall)이 존재할 경우가 있습니다. 이는 사용자들이 특정 웹서버나 사이트에 접속하는데 어려움을 겪게 하는 요인이 되기도 합니다. 물론 보안상 혹은 다른 여타의 이유로 방화벽을 설정하기도 하지만, 기업체에서 단순히 접속을 막아두는 경우도 있습니다. 이럴 경우 VPN(Virtual Private Network: 가상 사설망)을 이용해서 우회하기도 하지만 이 역시 한계가 있습니다. 이럴때 사용하는.. 더보기
오디오 파일 자동 변환 시키기 by using FFMPEG, PARALLEL with CLI, Automator - (Automatic Converting FLAC files to M4A files using ffmpeg, parallel with CLI, Automator) 안녕하세요. 리눅스 시스템을 사용하는 유저라면 쉽게 접할 수 있지만, 윈도우즈나 맥을 사용하는 유저 중 대다수는 명령어를 사용해서 내가 사용하고자 하는 프로그램을 만든다는게 다소 낯설수 있을 것입니다. 그러나 많은 자동화 시스템 중 비교적 손쉽게 만들 수 있는 부분이 있는데, 그 중 하나인 homebrew 를 사용하여 오디오 자동 변환 프로그램을 구현하는 것입니다. 몇 줄의 명령어만 넣으면 오디오 파일을 변환할 수 있습니다. 여기에 맥에 있는 오토메이터(Automator)를 이용하여 특정 폴더에 변환할 파일 혹은 폴더를 투척(집어넣기)만 하면 자동으로 변환을 시켜주게 만들어 보도록 하겠습니다. 우선 이 시스템은 맥킨토시(MAC) 이기에 여기에 맞추어 작성을 하겠습니다. 오토메이터 부분만 제외한다면 윈도우.. 더보기
Terminal shell 실행가능 VS Automator shell 에러? PATH에 주목. I have a simple Gruntfile that I want to be able to run from an icon in my OSX dock. I have created a very simple shell script (launcher.sh) that I will save as an application so I can add it to my dock. It works great when I run it directly in my Terminal:#!/usr/bin/env bash $(grunt serve --open)It also works fine with this shebang: #!/bin/bash However when I call the shell script from an Autom.. 더보기
이미지에 나의 서명(signature) 만들어 넣기 with python program - 2 from PIL import Image, ImageDraw, ImageFont import os, glob target_image = Image.open('/Users/SH/Desktop/Signature/python_logo.png') fontsFolder = '/Library/Fonts/' selectedFont = ImageFont.truetype(os.path.join(fontsFolder,'Zapfino.ttf'),15) draw = ImageDraw.Draw(target_image) draw.text((200,150), 'Creative Works for jason', fill='white', font=selectedFont) target_image.save('/Users/SH/Desktop/.. 더보기
[PYTHON] 간단히 이미지(사진)들 합치기 by using python - Merge images by using python program. 안녕하세요. 이번에는 여러장의 이미지(사진)들을 하나의 파일로 병합(합치기)하는 과정을 파이썬을 이용해서 코딩해 보겠습니다.주로 이미지를 다룰때는 이미지 관련 툴(가령 포토샵)들을 많이 사용을 합니다. 그러나 이런 툴들을 다루더라도 여러장의 파일들을 열고 사이즈에 맞게 붙이고 크기 조절하고 저장하고 일련의 과정들을 거쳐야합니다. 다소 번거로울 수도 있는 이런 일들을 프로그램으로 간단히 처리하게 하려고 합니다. 물론 디테일한 프로세싱은 상기의 툴을 이용하는게 나을수도 있습니다. 그래서 여기서는 단순하게 몇장의 이미지들을 같은 규격의 사이즈로 크기 조절 후 가로형태로 나란히 붙여주게끔만 하겠습니다. 이를 잘 숙지하고 응용을 한다면, 여느 프로그램 못지않은 나만의 툴을 구현할 수 있을 것입니다. 각설하고 시작.. 더보기
Xcode with Swift - 텍스트 넘겨주기(Handing Over) iOS 에서 버튼을 클릭했을 때, 텍스트에 있는 내용을 다음 창으로 전달하는 간단한 모듈을 만들어 보고자 한다. 새로운 프로젝트를 만들기 위해 아래와 같이 뉴 프로젝트를 생성한다.▼ iOS Application 에서 싱글 뷰를 선택하고 다음으로 넘어간다.▼ 프로젝트명을 적당한 이름을 기입해 준다. 여기서는 텍스트를 넘겨준다는 의미로 'HandingOver'라고 명명하였다.▼ 프로젝트를 생성해줄 폴더를 찾아 'Create'를 눌러준다.▼ 이렇게 생성된 프로젝트는 아래와 같은 창을 보여준다.▼ 애플리케이션에서 보여지는 부분을 다루는 메인스토리리 보드를 선택하면 아래와 같은 화면이 나타난다. ▼ 우측 아래에 있는 Objects에서 버튼을 찾고, 메인스토리 보드에 드랙해서 적당한 위치에 자리 잡아준다.▼ 입력할.. 더보기
애플, OS X 엘 케피탄 10.11.3 퍼블릭 베타 버전 업데이트 개시. 애플의 데스크탑 최신 운영체제인 OS X 엘 케피탄의 퍼블릭 베타 버전이 공개 되었다. 이번 퍼블릭 베타 버전에서는 릴리즈 노트가 명기되지 않아 어느 부분에 주안점을 두고 있는지 알 수가 없다. 이는 몇일전 공개한 개발자 버전과 마찬가지다. 다만 이전 버전에서 발견된 몇몇 버그 수정을 염두에 두고 있지 않나 추측할 뿐이다. 차후 변경 사항이 확인되면 업데이트를 따로 할 예정이다. 더보기
[PYTHON 3] Tutorials 41. Combine Images Together (이미지 병합하기 like watermark(워터마크)) 이번시간에는 파이썬을 이용해서 워터마크를 만들어 보려고 합니다. 이를 위해서는 서로 다른 두 이미지를 병합하는 과정을 다루어야 합니다. 워터마크 만들기 ( Make a water mark using python) 원본 이미지 1 - 잡스 횽아 ㅠ_ㅠ.▼ 워터 마크로 사용할 원본 이미지 2 - 스티브 잡스가 작고할 당시에 회자된 애플 이미지▼ 이미지 처리를 위한 모듈인 필로우를 불러옵니다.▼ 각각의 이미지를 열어주어 변수 steve, apple 에 저장을 합니다.▼ 워터마크로 사용할 이미지의 크기를 확인해 봅니다.▼ 위의 워터마크로 사용할 이미지의 크기를 확인 한 이유는, 만약 이미지의 크기가 맞지 않으면 오류가 발생하기 때문입니다. 향후에는 이미지의 크기와 상관없이 동적으로 적용할 수 있는 방법을 알아볼.. 더보기
[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] 027 Functions and Closures - 1 (함수 코딩하기 ) for beginners 함수와 클로저 사용하기(Writing Functions and Closures)이제까지 변수, 상수, 딕셔너리, 배열, 루프 구문, 제어 구문 등 많은 내용을 알아보았습니다. REPL 명령행 인터페이스 및 Xcode의 플레이그라운드 기능을 사용해 간단한 코드를 입력하며 Swift 언어를 조금 알아 보았습니다. 그러나, 지금까지 코드를 몇 개 입력하고 결과를 관찬ㄹ하는 실험 수준에만 머물렀는데, 이제는 코드를 조금 더 체계화할 필요성이 있습니다. 이제부터는 간결하지만, 다시 사용할 수 있는 함수를 사용해 Swift 코드를 좀 더 깔끔하게 정리하고자 합니다. 함수(The Function)학창시절 함수에 대해 공부를 해 본적이 있을겁니다. 기본적으로 함수는 산수식으로 입력을 받아 계산을 수행하고 결과를 제공하.. 더보기
[Swift] 026 Making Decisions - 4 ( while문 사용 ) for beginners While 문 사용 (While you were away...) 지금까지 if, for, switch-case문을 이용해 Swift의 강력한 제어와 반복 기능을 경험했습니다. 그러나 Swift의 추가 구조문에서는 생각을 자연스럽게 표현하는 방법도 제공합니다. 소프트웨어를 개발할 때 루프의 논리를 표현하고 싶지만 정확한 반복 횟수를 모를 때가 있습니다. 예를 들면 특정 기준을 충족시킬 때까지 무엇인가에 반복하려고 합니다. 그리고 값의 표를 계산하고 싶지만 계산된 값이 특정 숫자보다 크기 전까지는 멈추고 싶지 않습니다. while 루프는 Swift의 루프 구조문으로 사용자가 선택한 조건이 충족될 때까지 동일한 코드가 계속해서 실행되게 할 수 있습니다. while 문의 기본적인 구조는 아래와 같습니다.whil.. 더보기
[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] 024 Making Decisions - 2 (조건문 - IF / ELSE IF / ELSE) for beginners 의사 결정(Making Decisions) - IF / ELSE IF / ELSE 하나의 선택은 충분하지 않아(When one choice is not enough) 때때로 비교 연산으로 양자택일 이상의 것을 얻을 수 있습니다. 앞에서 만든 세 개의 상수 tree로 예를 들어 보겠습니다. tree의 각 타입은 제품의 타입과 연관이 있습니다. 각각의 tree 타입에 대한 상품을 반환하고자 한다면 어떻게 해야 할까요? for 루프에 래핑된 다중 if 문▲var treeArry = [tree1, tree2, tree3] for tree in treeArry { if tree == "Oak" { print("Furniture") } else if tree == "Pecan" { print("Pie") } els.. 더보기
[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는 프로그래머들이.. 더보기