본문 바로가기

분류 전체보기

(77)
[Swift]세탁 횟수 문제 구현 3 지난 시간까지 시뮬레이션을 작성해 보았다. 이제 적절한 매개변수를 대입해 결과를 확인해 보자. 먼저 매개변수는 총 다섯 개로 다음과 같은데 나의 라이프 사이클 기준으로 몇 가지를 미리 정했다. stuffNumber: 속옷은 총 10 세트 있는 것으로 가정하였다. 양말 10쌍, 팬티 10개, 민소매 10개... washTerm: 세탁 주기는 7(일주일) 일이다. repeatNumber: 반복 횟수는 100번을 하였는데, 100번이면 세탁 주기가 7일이므로, 700일이고 약 2년(100 x 7 ÷ 365 ≈ 1.92)이다. possibility: 그날그날 속옷을 입을 확률인데, 나의 경우 7일 동안 평일에는 거의 속옷을 입고, 주말에는 사용할 수도 있고 않을 수도 있다. 그래서 대략 7일 중 6일 정도 속옷..
[Swift]세탁 횟수 문제 구현 2 이전 포스팅에 이어, normalLaundrySimulator의 반복문 내에 들어갈 동작을 구현해 보자. 먼저 가장 안쪽 반복문 부분((1)에 해당)을 정의를 할 텐데, 해당 반복문은 이전 세탁과 다음 세탁 사이의 날들에 대한 부분이다. 다시 말해 그날그날 속옷을 입을지 결정하고, 다 입은 속옷을 세탁바구니에 넣는 작업까지 하게 된다. 어떤 날, 속옷을 입을지 말지는 확률에 의해 정해지도록 설계하였다. 그리고 이러한 확률이 매개변수로 전달되도록 지난 포스팅에서 함수의 정의 부분을 설명한 바 있다. 이러한 확률과 Swift가 제공하는 random 함수를 사용하여 그날그날 속옷을 입을지 말지 결정하였다. let isPossible: Bool = { Double.random(in: 0.0 ..< 1.0) < ..
[Swift]세탁 횟수 문제 구현 1 지난 포스팅에서 세탁 횟수에 영향을 미치는 요인을 두 가지로 정리했다. 일정하지 않은 세탁물의 양 입을 속옷을 선택하는 방법 이번 포스팅에서는 해당 요인이 세탁 횟수에 얼마나 영향을 주는지 알아보기 위해 시뮬레이션을 작성하여 살펴볼 것이다. 먼저 세탁물에 대한 클래스인 Stuff를 정의하자. 해당 클래스에서 생성된 인스턴스(속옷)가 다른 영역에서도 같은 객체로서 참조하길 원하기 때문에 클래스로 정의하였다. // Stuff.swift class Stuff { static var sPreference: Int = 0 // Whenever create a instance, add unique ID. private(set) var preference: Int = 0 private(set) var washedNu..
세탁 횟수 문제 민망하지만 나는 대학교에 입학하고 나의 옷을 스스로 세탁했다. 그래도 벌써 8년이 넘었다. 일주일에 한 번 정도 세탁을 하니까, 8년이면 약 400번(8 *365 / 7) 정도의 세탁을 하는 셈이 된다. 세탁물의 종류는 다양하다. 속옷(양말, 팬티 민소매 등)과 같이 한 번 입고 바로 세탁해야 하는 옷들도 있고, 집에서 세탁하기에는 민감한 옷들도 있다. 그리고 계절이나 날씨와 같은 환경적인 요소가 옷의 세탁을 결정하기도 한다. 이번 포스팅에서는 속옷과 같이 한 번 입고 세탁해야 하는 옷들에 대해 이야기해보려고 한다. 세탁된 속옷을 다시 입을 때면 종종 다음과 같은 의문이 들곤 한다. (사실 매우 자주 든다) “이 팬티는 산지 얼마 안 된 거 같은데 왜 이렇게 낡았지??” “이 양말의 짝은 분명 얘인데, ..
0-3. HRC 코드 공유 및 사용 방법 HRC 관련해서 작년 7월에 첫 포스팅을 개시했으니까, 개발한 지 1년이 넘었다. 이제 사용하기에 꽤 편해졌고, 코드도 공유할 만큼 정리가 되었다고 판단이 되어 이번 포스팅을 준비했다. HRC는 단말기를 기준으로 총 3개의 부분으로 구성되어 있다. PC를 통해 구동되는 서버 부분 NodeMCU를 중심으로 한 하드웨어 부분 아이폰 애플리케이션 부분 사용 방법을 살펴보기 전에 먼저 아래 원격 저장소(GitHub)에서 프로젝트 파일을 내려받는다. https://github.com/Taeminator1/Home-Remote-Control 1. PC를 통해 구동되는 서버 부분 집에서 사용하고 있는 공유기에 대한 설정을 변경해줘야 한다. iptime 기준으로 아래 포스팅을 참고하면 된다. https://taemin..
3-5. Script Launcher를 이용해 서버 실행시키기 이전 포스팅(https://taeminator1.tistory.com/64)에서 설명했듯이, 계정에 로그인할 때마다, Terminal 앱을 열고, .js 파일(HRC 플랫폼에서는 app.js 파일)이 있는 곳으로 디렉터리를 변경하고, .js 파일을 실행하는 일은 여간 귀찮은 일이 아니다. Terminal 앱 실행 디렉터리 변경하기 .js 파일 실행 현재는 Script Launcher라는 macOS용 앱을 개발하여 계정에 로그인할 때마다 자동으로 위의 세 가지 작업이 실행된다. 이번 포스팅을 통해 이전에 시도했던 방법들과 Script Launcher에 대해 간략히 소개하고자 한다. [첫 번째 시도] app.js 파일을 기본 디렉터리로 옮기고, 로그인 시에 Terminal 앱 실행하기 앞에서 말한 세 단계 ..
0-2. 사용 후기 및 개선 이번 포스팅에서는 HRC(Home Remote Control)를 실제로 사용하면서 느낀 점들을 적어보고자 한다. 매번 느끼는 거지만, 개발과 실사용에 대한 간극은 생각보다 크다. 개발 시에 생각하지 못했던 많은 부분들이 실제 사용을 통해 드러나게 되었다. 몇몇 문제들은 해결하기도 하였는데, 이번 포스팅을 통해 간략히 정리하고자 한다. 먼저 좋았던 점을 살펴보자. 기본 기능 밖에서 에어컨을 조작하여, 집에 들어오자마자 시원한 냉기를 느끼는 것이 HRC의 가장 큰 목적이었다. 어떤 이유로 서버를 꺼놓기라도 하는 날에는 그 불편함은 이루 말할 수 없었다. 동선 HRC를 사용하기 전에는 집에 들어오면 기본적으로 창문을 닫기 위해 창문까지 걸어가야 했지만 HRC를 사용하면서 출입구에서 창문까지 걸어가는 동선을 줄..
mac에서 Script를 이용해 Terminal에서 명령어 실행하기 node.js 파일을 실행하기 위해서 터미널을 자주 사용하는데, 이럴 때마다 매번 디렉터리를 변경해주고 실행하는 것이 여간 귀찮은 일이 아니다. 그래서 이번 시간에는 Script 파일(.command 파일을 사용할 것이다)을 이용하여 터미널에서 명령어를 실행하는 방법을 알아보려고 한다. 매우 간단하지만 아주 유용한 방법이다. 먼저 TextEdit를 열어, 새로운 도큐먼트를 만든다. 기본적으로 .rtf로 만들어지게 되는데, 아래와 같이 Format에 Make Plain Text를 눌러 .txt 파일로 변경해 준다. 그리고 Terminal에서 실행하길 원하는 명령어들을 입력해 준다. 나는 Documnet 디렉터리의 어떤 파일들이 있는지 확인하기 위해 아래와 같이 입력해 주었다. 그다음 아래와 같이 파일명을 ..