본문 바로가기

Mac

Metasploit Framework 설치하기 on MacOS | Installing Metasploit Framework on MacOS 해킹 툴로 널리 사용되는 Metasploit 를 설치하는 과정을 소개해 보고자 한다. Metasploit 는 pen testing tool로서 아주 유명한 것 중의 하나이다. 과거에는 맥에 설치하는데 있어서 manual 하게 설치하고, 시간도 상당히 소모하였으나 근래에는 아주 손쉽게 설치할 수 있게 되었다. 물론 KALI 와 같은 것을 VM에 설치하여 사용할 수도 있겠으나, 메인 시스템에 설치하여 사용할 때 생기는(가령 아주 빠르며, 손쉽게 사용가능) 장점이 있기에 Mac 에 직접 설치하여 사용하는 사용자들이 많아지고 있다. Process 1. Metasploit Framework 다운하기. here is the download for Mac 에서 파일을 다운하여 실행을 하면 아래와 같은 인스톨 창이 뜰.. 더보기
[MAC/TIP] Mac wireless card set up on Kali Linux 1) Making sure these were in /etc/apt/sources.listdeb http://http.kali.org/kali kali-rolling main contrib non-free # For source package access, uncomment the following line deb-src http://http.kali.org/kali kali-rolling main contrib non-free 2) Making sure everything was readyapt-get update && apt-get dist-upgrade 3) Rebooting the kernelreboot 4) Finding out my version:root@kali:~# uname -a Linu.. 더보기
OSX 스크린샷 기본 포맷 변경 jpg,png,gif,tiff,pdf | how to change ScrreenShot Image format to jpg,png,gif,tiff,pdf on OSX 맥을 사용하다 보면, 스크린샷을 찍어 활용할 경우가 허다하다. 그런데, OSX의 기본 스크린샷 포맷은 png 이다. 경우에 따라서 다른 형태로 변환을 할 필요가 생기는데 OSX 자체적으로 손 쉽게 이미지 포맷을 변환해서 스크린샷을 찍을 수 있다. 아주 간단히 터미널 명령어 하나만으로도 가능하다. 기본 터미널 명령어는 아래와 같다.defaults write com.apple.screencapture type 포맷 && killall SystemUIServer포맷 위치에 png, jpg, gif, pdf, tiff 등 다양한 형태의 이미지 포맷을 넣고 터미널에서 실행을 하면, 촬영하는 스크린샷은 해당 이미지 포맷 형태로 뱉어내어 준다. 물론 확장 포맷에 따라 화질의 차이가 있을 수 있으니 이는 사용자의 판단.. 더보기
스타크래프트 1.18 테스트버전 다운 및 실행 for win & mac | STARCRAFT 1.18 down & launch for Windows & Mac 다운로드테스트버전 설치 방법이 변경되었습니다. 새로운 테스트버전에서는 드디어 MacOS를 지원합니다.MAC OS 용 Starcraft 1.18 다운받기 기존 스타크래프트 or 브루드워 설치 유무와 상관없이 무료로 이용가능합니다. Windows 용 스타크래프트 1.18 다운받기 설치 및 실행 위 다운로드 링크로 Launcher 파일을 다운받고 실행합니다.언어에서는 한글이 아직 없기에 ENGLISH 를 선택합니다. 물론 여타 언어를 선택해도 무방합니다.설치 화면이 나오면 '동의'를 체크합니다.Continue를 누릅니다.설치가 완료되기를 기다립니다.설치가 완료되었다면 실행을 합니다. 실행하기실행을 하고 나면 아주 앤틱(?)하고 친숙한 오프닝 화면이 등장합니다. 테스트 서버에 피쉬서버(한국지역서버)가 추가되었습.. 더보기
아나콘다(Anaconda)에 TensorFlow 설치하기 on Mac | Installing TensorFlow at Anaconda on MAC OS X Anaconda 설치Anaconda 는 여러 수학, 과학 패키지를 기본적으로 포함하고 있는 파이썬 배포판입니다. Anaconda 는 "conda" 로 불리는 패키지 매니저를 사용하여 Virtualenv 와 유사한 환경 시스템을 제공합니다. (역주: 텐서플로우 뿐만이 아니라 일반적인 데이터 사이언스를 위해서도 아나콘다를 추천합니다)Virtualenv 처럼 conda 환경은 각기 다른 파이썬 프로젝트에서 필요한 패키지들의 버전이 충돌되지 않도록 다른 공간에서 운영합니다. 텐서플로우를 Anaconda 환경으로 설치하면 기존 파이썬 패키지들을 덮어쓰지 않게됩니다.Anaconda를 설치합니다.conda 환경을 만듭니다.conda 환경을 활성화 하고 그 안에 텐서플로우를 설치합니다.설치 후에는 텐서플로우를 사용하고.. 더보기
애플 스크립트를 이용한 이메일 보내기 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.. 더보기
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 003 - 링크 찾기 및 삭제하기 (Adding and deleting links) 이번에는 기본 URL 에서 크롤링 하려고 찾은 링크들을 파일에 저장을 하려고 합니다. 멀티 프로세싱 혹은 멀티 쓰레딩 작업을 통해서, 하나의 과정은 링크를 찾아 파일에 넣어 저장하고, 다른 하나의 과정은 이렇게 찾은 링크들을 크롤링하게 하려고 합니다. 여기에서 찾은 링크를 파일에 저장을 할 시에 중복되는 링크도 존재하기 마련입니다. 그래서 그런것들의 중복 크롤링을 막기 위해, 애초에 크롤링할 파일에 해당 링크 URL 이 존재하면 추가적으로 append 하지 않게 하면 됩니다. 시작해 볼까요? 우선 이미 만들어 둔 파일에 링크를 더해가는 함수를 정의하겠습니다. ▼ append 모드로 해당 경로를 열어줍니다. 그리고 이것을 file 로 명명하겠습니다.▼ 파일을 열어 전달해 줄 데이터 값을 넣고 뒤에는 개행문.. 더보기
Web Crawler 002 - Creating Crawled files and Queue 이번 시간에는 지난 시간에 프로젝트(폴더)를 만드는 코딩에 이어, 웹사이트를 크롤링할 때 크롤링해야 할 웹페이지들의 URL 값을 가지고 있어야 하는데, 그렇게 하기 위해서 queue를 만들어 긁어 올 웹페이지 주소를 넣어 두려고 합니다. 이렇게 queue에 저장된 웹페이지 URL 을 가지고 다 긁어왔으면 해당 URL을 crawled 로 넘겨주어 더 이상 중복 크롤링하지 않게 하려고 합니다. 말보다는 코딩을 보는게 더 빠를거라 봅니다. 시작해 볼까요~? 히위~꼬우~! 지난 시간에 만든 부분에 아래와 같이 주석을 달아 주었습니다. 그리고 이번에 만들 부분에 주석도 함께 넣었습니다. 프로젝트 이름과, 기본 주소를 인자로 받는 파일을 만들어 줄 함수를 아래와 같이 정의하겠습니다. ▼ 기본 URL 을 가지고 어떤.. 더보기
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.. 더보기
How to sync your Mac's Documents, Desktop, and any other folder to Dropbox How to sync your Mac's Documents, Desktop, and any other folder to DropboxWe're in the early days of the cloud, but it's easier than you might think to put all your important files onto Dropbox. There are plenty of reasons to put things into the cloud, be it as a backup or to access them remotely from other devices. But putting things into the cloud can be a hassle — Apple's trying to make it a .. 더보기
find files and folders recursively in Python Using glob and iglob. Python 3.5+ Starting with Python version 3.5, the glob module supports the "**" directive (which is parsed only if you pass recursive flag):import glob for filename in glob.iglob('src/**/*.c', recursive=True): print(filename)If you need an list, just use glob.glob instead of glob.iglob. Python 2.2 to 3.4 For older Python versions, starting with Python 2.2, use os.walk to recursively walk a direc.. 더보기
남의 컴퓨터를 내 마음대로 다룬다? - 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.. 더보기
Shut down, sleep, restart, display sleep, log out commands on OS X with bash, applescripts. Shut down without showing a confirmation dialog:osascript -e 'tell app "System Events" to shut down'Shut down after showing a confirmation dialog:osascript -e 'tell app "loginwindow" to «event aevtrsdn»'Restart without showing a confirmation dialog:osascript -e 'tell app "System Events" to restart'Restart after showing a confirmation dialog:osascript -e 'tell app "loginwindow" to «event aevtrrst.. 더보기
PyQt installation with python3 on Mac OS X by using HOMEBREW You can install it with homebrew using the --with-python3 flag:unset PYTHONPATH brew install sip --with-python3 brew install pyqt --with-python3And relink the site packages if necessary. 더보기
[Folder Action] - 이미지에 나의 서명(signature) 만들어 넣기 with python program - 3 이전 시간에 만든 여러장의 이미지에 사인(서명)을 넣는 코딩을 활용해서 이번시간에는 특정 폴더에 대상 파일들을 떨구면, 자동으로 서명된 이미지 파일들을 돌려주게하는 폴더액션(맥의 오토메이터 활용)을 만들어 보도록 하겠습니다. 우선 터미널을 띄워주고 shell script 를 하나 만들어 주려고 합니다. 아래와 같이 make_multiple_signature.sh 라는 이름을 가지는 bash 스크립트를 만들도록 하겠습니다.▼ 파이썬이 있는 경로를 앞에 적습니다. 저는 현재 파이썬 배포판 중의 하나인 아나콘다를 사용하고 있습니다. 그래서 앞 부분에 아나콘다의 파이썬 경로인 '~/anaconda/bin/python' 을 넣어줍니다. 뒤에는 이전 시간에 만들어 둔 파이썬 파일의 경로를 넣어 줍니다. 파인더에서 .. 더보기
이미지에 나의 서명(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. 안녕하세요. 이번에는 여러장의 이미지(사진)들을 하나의 파일로 병합(합치기)하는 과정을 파이썬을 이용해서 코딩해 보겠습니다.주로 이미지를 다룰때는 이미지 관련 툴(가령 포토샵)들을 많이 사용을 합니다. 그러나 이런 툴들을 다루더라도 여러장의 파일들을 열고 사이즈에 맞게 붙이고 크기 조절하고 저장하고 일련의 과정들을 거쳐야합니다. 다소 번거로울 수도 있는 이런 일들을 프로그램으로 간단히 처리하게 하려고 합니다. 물론 디테일한 프로세싱은 상기의 툴을 이용하는게 나을수도 있습니다. 그래서 여기서는 단순하게 몇장의 이미지들을 같은 규격의 사이즈로 크기 조절 후 가로형태로 나란히 붙여주게끔만 하겠습니다. 이를 잘 숙지하고 응용을 한다면, 여느 프로그램 못지않은 나만의 툴을 구현할 수 있을 것입니다. 각설하고 시작.. 더보기
GTK VS Qt in Python Development Frameworks. GTK vs QtGTK+ and Qt are open-source cross-platform User Interface toolkits and development frameworks. These are the two most popular frameworks in use for GNU/Linux and BSD because they are open-source and give developers a powerful toolkit to design Graphical User Interfaces. GTK+ is used as the standard toolkit for the GNOME and Xfce Desktop Environments while Qt is used for KDE Plasma and L.. 더보기
Xcode with Swift - 텍스트 넘겨주기(Handing Over) iOS 에서 버튼을 클릭했을 때, 텍스트에 있는 내용을 다음 창으로 전달하는 간단한 모듈을 만들어 보고자 한다. 새로운 프로젝트를 만들기 위해 아래와 같이 뉴 프로젝트를 생성한다.▼ iOS Application 에서 싱글 뷰를 선택하고 다음으로 넘어간다.▼ 프로젝트명을 적당한 이름을 기입해 준다. 여기서는 텍스트를 넘겨준다는 의미로 'HandingOver'라고 명명하였다.▼ 프로젝트를 생성해줄 폴더를 찾아 'Create'를 눌러준다.▼ 이렇게 생성된 프로젝트는 아래와 같은 창을 보여준다.▼ 애플리케이션에서 보여지는 부분을 다루는 메인스토리리 보드를 선택하면 아래와 같은 화면이 나타난다. ▼ 우측 아래에 있는 Objects에서 버튼을 찾고, 메인스토리 보드에 드랙해서 적당한 위치에 자리 잡아준다.▼ 입력할.. 더보기
[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)컴퓨터가 "생각"을 할 수 있을까요? 이것은 자주 논쟁이 일어나는 쟁점이기도 합니다. 컴퓨터는 결정을 내리는 부분에서 일을 잘합니다. 어떤 앱이든 필수적인 것 중 하나가 결정을 내리는 것이며 무엇을 하는지 어디로 가는지 아는 것이 프로그램의 흐름에서 매우 중요합니다. 프로그램 흐름은 "참이면 이곳으로 가고, 참이 아니면 저쪽으로 간다" 또는 "참이 아니면 참일 때까지 이 작업을 계속해서 수행한다."와 같은 하나의 긴 결정의 연속입니다. 우리의 삶도 이렇게 많은 결정을 해야 하는 일들로 가득 차 있으며, 때로 생각하지 않고 결정을 내리기도 합니다. 어떤 신발을 신을지, 몇 시에 출근할지, 또는 언제 길을 건너는 것이 좋을지 등 우리가 매일 마주치는 결정의 순간들입니.. 더보기