목록 전체 글 (102)
글쓰는 개발자

한때 즐겨보던 "유랑쓰"라는 부부여행 유튜브 채널이 있었다. 발리 여행전에 여행지에 대해 알아보기 위해 검색중에 알게 된 채널인데 잔잔한 분위기의 영상미가 좋아 한때 즐겨 보던 채널이다. 부부가 직장을 그만두고 유랑하며 사는 것을 컨셉으로 하는 채널로 다양한 여행지를 다니는 부인 중심으로 영상을 만들고 남편이 편집을 하는 여행 유튜브 채널로, 코로나 특수 및 주식 키워드로 유튜브 알고리즘에 노출되면서 이런 저런 협찬과 광고를 받아서 채널을 키우기 시작하였다. 채널을 보는 사람을 모두 다 알지는 못하지만 그들의 일반적이지 않은 용기있는 삶의 방식에 감화되어 영상을 보는 구독자가 많았으리라 생각한다. 그들은 신혼집을 팔아 그 돈을 주식에 넣고 그 수익금으로 여행을 다니며 영상을 제작했다. 수년간의 여행에 ..
되고 싶은 나와 아무것도 할 수 없는 나와의 간극 퇴사 후 2년 인생의 슬럼프 시기라는 생각이들 정도로 성과를 내지 못했다. 회사를 나오고 해보고 싶은것도 많았고 주식공부, 독서모임, 인터넷 강의 수강, 코인투자 등등 이런 저런 시도를 해보았지만 좀처럼 끈기있게 지속 가능한 것들이 없었다. 어느날은 필이 꽂혀 꾸역꾸역 카페를 가서 앱 두개를 완성해 배포했지만 반응이 좀처럼 없다 싶이 하자 그 또한 시들해져버렸다. 한때는 너무 심심하고 외로워 x와 비슷한 페이스북의 스레드에 푹 빠져 다양한 사람들의 삶을 구경하고 댓글을 달아주는 재미로 시간을 보낸적도 있고, 때론 게임에 빠져 한주 두주 한달 두달의 시간을 흘려보낸 적도 있다. 하지만 한차례의 충동이 끝나거나 게임의 엔딩을 보고나면 언제 그랬냐는 듯 다시 ..

일본에서 만든 사과게임에 한때 푹 빠졌던 적이있다. 1 부터 9까지의 숫자 적힌 사과가 펼쳐져 있고, 그 합이 10이 되는 사과를 드래그 하면 사과가 지워지는 식의 간단한 규칙이지만 제한된 시간동안 빠르게 지워나가야 하기에 목표로 하는 점수에 따라 자체적으로 난이도 조절이 가능하다. 대학교 프로젝트로 C++ MFC / C# 등으로 게임을 직접 만들어 본 경험이 있다. 스테이지가 하나인 1984 게임, 사천성, 윷놀이 등의 비교적 간단한 퍼즐류 게임들이었지만 엔진없이 게임을 만드는 것은 생각보다 할일이 많다. 0부터 시작하는 게임제작은 한마디로 노가다에 가깝다. 하지만 엔진이 없는 만큼 더욱 자유도 높은 게임을 만들수 있다. 일단 만드려는 게임의 리버스 엔지니어링부터 시작해야 한다. 게임을 할때마다 궁금..
1. 함수swift의 함수는 func로 시작한다func hello() { print("Hello")} 매개변수를 받아 문자열을 리턴하는 함수func printMessage(name: String, count: Int) -> String { return("\(name) is \(count) years old")} 함수가 단일 표현식을 가진다면 return 구문을 생략할 수 있다.func printMessage(name: String, count: Int) -> String { ("\(name) is \(count) years old")} 매개변수 앞에 따로 외부 매개변수명을 지정할수도 있다.func printMessage(userName name: String, age count: Int) -> Strin..
1. for-in 구문 swift의 for in 문은 다음과 같다.var array = [1, 2, 3, 4, 5]for index in array { print(index)} 이는 아래와 같이 범위문으로 변경 가능하다.for index in 1...5 { print(index)} index를 따로 사용할 필요가 없을 때는 밑줄로 생략도 가능하다.var sum = 0for _ in 1...5 { sum += 1}print(sum) 2. repeat while 반복문repeat while은 do while을 대체한다.var i = 0repeat { i += 1} while(i > 10)print(i) 3. switch 구문swift의 case문에는 break 문이 필요치 않다.let value = 1swi..
1. 옵셔널 타입변수를 선언할 때 ?를 사용해 옵셔널 선언이 가능하다.var index: Int? 이제 index는 정수 혹은 아무런 값도 할당되지 않을수 있다. 어떤 값도 할당되지 않을때 옵셔널은 nil 값을 갖는다.var index: Int?if index != nil { // 값이 할당되어 있다.} else { // 값이 할당되어 있지 않다.} 옵셔널 값을 사용하기 위해서는 ! 문구를 사용하여 강제 언래핑 해주어야 한다.var index: Int?index = 12if index != nil { print(index!)} else { print("index is nil")} 강제 언래핑 대신, 옵셔널로 할당된 값은 옵셔널 바인딩을 이용하여 임시 변수나 상수에 할당할 수 있다.var i..
1. 문자열 데이터 타입문자열은 변수, 상수, 표현식, 함수 호출을 조합하여 구성할 수 있다.var userName = "Kim"var count = 25var message = "\(userName) has \(count) apples."print(message) 결과Kim has 25 apples. 여러 줄의 문자는 삼중 따옴표 안에 넣어서 선언할 수 있다.var multiline = """ 안녕하세요 "김철수" 라고 합니다. 반갑습니다. """ print(multiline) 2. 상수와 변수변수는 var 키워드를 사용하여 선언하며, 상수는 let을 사용해서 선언한다.var userName = "Jim"let maxCount = 20 3. 튜플튜플은 여러 값을 하나의 항목으로 그루핑하는 ..

아무 서비스나 만들면 안되는 이유 기능이 적은 간단한 서비스 만든다고 해도 회원 별 기능을 제공하는 서비스를 만든다면 회원 정보를 저장하기 위해 데이터 베이스가 필수로 사용된다. 그리고 데이터 베이스에서 데이터를 읽고 쓰고 전달해주는 역할을 하는 무언가가 필요한데 이를 서버프로그램이라 부른다. 서버 프로그램 자체는 특별할것이 없다. 앱이나 웹같은 단말, 클라이언트의 요청을 받고 데이터 베이스에 저장된 정보를 읽고 이를 전달해 주는 역할을 한다. 문제는 서버 프로그램은 어딘가에 존재하는 물리적 단말 서버 컴퓨터에서 실행이 되어야 하며 24시간 서비스 중단이 일어나지 않기 위해서는 서버컴퓨터는 계속해서 켜져 있어야 한다는 사실이다. 서버 프로그램이 필요한 서비스를 제공하기 위한 가장 간편한 방법은 AWS (..