글쓰기 메뉴
Blank

볼테르의 명언으로 시작된 혼란

처음엔 그냥 좋은 문장 하나 찾았으니 대충 멋있는 척 올려보자였는데 이게 쉽사리 끝이 나질 않는다.


Perfect is the enemy of good

- Voltaire


0. 의미 정하기

완벽함에 이르기 위해 작업을 끝내지 못한다면 충분한 상태로 끝난 작업보다 못하다는 해석이 적당하다.


1. 원문 찾기

Le meglio è l'inimico del bene

볼테르(Voltaire)의 철학사전(Dictionnaire philosophique)에 있는 내용으로 옥스포드 인용 사전에 수록되어 있다고 함.

2003년 구글 answers 에서 사용자들끼리 레퍼런스를 찾아내는 재미난 쓰레드도 있네.


2. 영문 번역 구하기

The best is the enemy of good

좋고 나쁨의 여러 단계에서 사회통념적으로 영단어 "best"가 의미하는 단계를 어디로 보는가에 따라 문장의 느낌의 달라질텐데 나는 "best" 가 극도로 좋다는 표현으로 느껴지지 않아 Perfect가 사용된 문장이 좋다. 

The perfect is the enemy of good


3. 한글 번역 구하기

인터넷에 '볼테르'의 명언으로 번역된 문구는 크게 2가지.

최선은 선의 적이다

"선(善)"이 "최선(最善)"에 못 미친 상태인건 맞는 것 같은데 "선"이라는 단어가 그 쓰임에 와닿지 않고 "최선"은 극한의 상태를 표현한다고 느껴지지 않는다. 돌직구같은 아래의 번역이 마음에 든다.

완벽함은 훌륭함의 적이다


4. 내 사업에 적용하기

그런데 제품을 만들어 사업을 하는 나는:

정말 "완벽함"을 추구하지 않아도 될까?

스티븐 잡스의 아이폰은 완벽함을 추구하는 제품의 아름다움과 강력함을 증명한 결과물이 아닌가?

완벽함을 포기하고 현재에 안주하고자 하는 내게 당위성을 부여하는 변명의 문장인가?

만약 완벽함이 아니라면 내 작업과 제품의 "훌륭함" 단계는 무슨 기준으로 정해야할까?


5. 두통으로 고통받기

아, 머리 아퍼.

내가 이 문장에 왜 매달리고 있는거지?

그렇지만 뭔가 생각을 포기해버리면 안될 것 같은 기분.


6. 뜬금없이 논픽션 소개하기

내 친구 중에 부모님이 크고 아름다운 식당을 하는 친구가 있어.

어릴 때부터 잘 알던 친구고 그 집 부모님들과도 오래 알고 지내서 거기서 뭘 먹고 돈을 내본적이 없지.

하지만 너무 당연하게 갈 때마다 식사를 마치면 계산서를 들고 카운터로 가.


"어머니, 잘 먹었습니다. 여기, 5만원 맞죠?"

"이놈 봐라? 내가 니 돈 받겠냐? 맛있게 먹었으면 자주나 와라."


"어휴~ 어머니, 자꾸 돈을 안받으시니까 부담스러워서 못 오자나요."

"에라, 이놈아! 어여 가고 다음주에 또 와."


6-1. 뜬금없이 픽션 쓰기

그런데 서로가 대사를 바꾸면 아주 골때리지.


"어머니, 저한테 돈 받으실거 아니죠? 또 올께요!"

"5만원이나 나왔는데 또 돈 안내고 그냥 가려고?"


"어휴~ 어머니 언제는 제가 돈 냈어요? 하루이틀 알고 지낸 사이도 아니고."

"아니 이놈아 공짜로 처먹을라면 1~2년에 한두번이나 오던가!"


7. 결론내기

뻔한 결론이 나와버렸네.

내 제품의 "훌륭함"을 내가 판단할 수 없다는 것.


비유로 든 얘기가 생산자와 소비자의 거래에 대한 얘기라 오해의 여지가 있지만, 여기서 강조하고 싶은 부분은 각자의 입장에서 안전하게 할 수 있는 말이 있다는 것과 어떤 말을 입 밖에 꺼내면 웃긴 놈이 된다는 것.


제품의 사용자들이 제품의 훌륭함과 완벽함을 판단할 수 있는 것이지 내가 제품의 훌륭함과 완벽함을 단정한다는 것이 이미 주제넘은 일인 것 같네.


8. 감사하기

이쯤에서 다시 한번, 내 사업이 인터넷/온라인 서비스에 기반하고 있음에 감사해야겠네.

이건 조각이나 벽화, 건축이나 공산품과 다르게 명확한 문제를 해결하는 기능들을 작은 단위로 끊임없이 사용자에게 제공하고 실시간에 가깝게 어떤 단계에 있는지 가늠할 수 있다는 점이 정말 감사하네.


제품의 단계가 "완벽함 - 훌륭함 - 충분함 - 부족함 - 쓰레기" 다섯 단계라고 봤을 때 내 제품들은 아직 부족함과 쓰레기 사이를 오가고 있지만 이건 문자 그대로 "단계"인거야.

하나씩 해결하고 한걸음씩 내딛으면 결국 앞으로, 위로 나아갈 수 있는 그런 게임이지.


다들 힘내자구.

영문위키: Perfect is the enemy of good


+) 내가 대체 왜, 어디서 시작해서 어떤 전개로 여기까지 온거냐?

어디서 왔지?
[["www.google.co.kr", 54], ["synd.kr", 32], ["m.search.daum.net", 13], ["search.daum.net", 5], ["m.facebook.com", 13], ["www.google.com", 8], ["www.google.co.jp", 2], ["lm.facebook.com", 1], ["www.google.com.ph", 1], ["www.google.com.tr", 1], ["unknown", 971], ["www.google.com.sg", 1], ["www.google.de", 3], ["www.google.co.nz", 1], ["com.google.android.googlequicksearchbox", 1], ["www.facebook.com", 5]]
다른 글들
1 3
Square

다이어트 2 단계

다이어트 2 단계. 
카메라 촬영후, 충격 받아 급시작했던 다요트.
2 단계로 접어 들었다. 그냥 하던대로 하면 된다.


1단계 마무리를 축하하며, 
씨푸드 뷔페로 배를 두둑히 불렸고, 
스트로베리 무스 리코타 치즈 케익과 바삭 바삭한 씨리얼을 넣은 요거트 아이스크림 디저트 까지 먹었다.
문제는 그 다음날.
그러고나니, 식단 조절할 때 느끼지 않던 식욕이 돈다. 
-_-;

랍스터를 생각하며 참아야지.
2 2

ref: 디자인

저는 많은게 부족하지만 그 중에 미적감각이 가장 부족합니다.
저 뿐 아니라 많은 개발자들이 개발자만의 심미안으로 제품을 디자인하고 거기에 만족하는(!) 무시무시한 일들이 일어나고 있죠.
씬디는 아직 극명한 컨셉도 없고 계획한 기능도 모두 갖추지 못했습니다.
몇단계를 지나 조금 안정되면 전문 디자이너의 도움을 받아 깔끔하고 편리한 디자인으로 변경하도록 하겠습니다.
현재는 원하는 기능과 단계, 테스트를 위해 조금씩 변경해보고 있습니다 넓고 깊은 이해부탁드립니다!
2 2
Square

소프트웨어와 제안서의 품질은 반비례 관계

얼마전에 소프트웨어 개발과는 무관한 자리에서 농담으로 나온 얘기.
그런데 이 말이 계속 머리에 맴돌아.
개인적인 경험을 떠올려보니 이게 점점 맞는 말이더라고.
왜 그럴까 생각해봤어.
- 기능 단위로 가/불가 여부 정도만 확인
- 성능표, 스펙 등의 자료만 제공
- 제안서의 목적은 제품이 아니라 판매
- RFP를 왜 개발사가 만들어? 충공깽
- 발주사는 뭘 만들어야할지 1도 모른단 말이지
- 그래서 작성자의 글빨과 PPT빨이 유일한 품질 변수
애초에 시작이 농담이야. 진지하게 받아들이지마.
그치만 제안서 작성과 요구사항 분석 단계에 기술자가 참여해야한다는 말은 진심이야.
*상식적으로 참여할 것 같지? 아니야ㅋㅋ 보통 "시킨거나 잘 만드세요"라는 말을 들어.
0 0

미니멀리즘

미니멀리즘의 첫 단계는 비우기인데.
이 단계에서 뜻 밖에도 얻는 것이 참 많다
나의 주변이 정리 정돈 되고
멀쩡하지만 불필요한 것들을 버린다는 죄책감 섞인 경험이 소유욕과 소비를 절제 하게 한다. 
신기하게 모든 것은 가볍게 비워져가도 통장 하나만은 묵직해진다
신기한 경험이다.
1 2
Square

희생

자기것을 포기하고 남을 준다는것
그게 희생이 아닐까.
난 내걸 포기하고 누군가에게 나의것을 준적이 있나
어느 책에서 읽었는데 성남의 큰교회 목사님이
병으로 쓰러진뒤 깨어나서 천국과 지옥을
구경하고 왔다고 했다
깨어나자마자 더러운 정치세력과 권력으로 
가진돈을 전부다 기부했다고 한다
지옥도 단계가 있었는데 제일 고통스러운곳에
있던 사람들이 대부분 목사와 무당이었다고 했다
천국도 갔었는데 자기집을 짓다가 말아서 들어가보니
상 두개가 벽에 걸려 있었는데 고아원에서 자랄때
어릴때 길에서 추운사람한테 자기 점퍼 벗어준거랑
자기가 먹을빵을 더 배고푼 사람에게 준것이었댄다
부자 교회가 되고 기부를 엄청 많이 했는데 
왜 상이 이거 밖에 없냐고 따졌더니
천사가 자기를 희생하는게 젤 큰상이라고 했댄다
기억이 가물거려서 정확히 썼는지도 몰겠고
목사님 말이 사실인지 아닌지는 모르지만
그 욕심 많던 사람이 깨어나자마자 전부를 기부했다니
아무튼 뭔가 보고 느끼고 온거 같긴 하다
어제 다큐멘터리에 나온 아이들은
인간이 하기 힘든 내가 한번도 해보지 않은 
희생이란걸 그 어린나이에 하고 있었다
그 아이들은 나에게,다른 사람들에게 
희생이란 이런것이라는 것을
직접 보여주고 가르쳐줄려는 
진짜 천사가 아닐까~(서프라이즈 엔딩)
2 2
Square

간접연애

며칠 전부터 보기 시작한 네이버 웹드라마 <시크릿 메세지>. 남자 주인공은 빅뱅의 탑, 여자 주인공은 일본의 여배우 우에노 주리다. 대략적인 줄거리는, 각자 지난 사랑에 대한 상처를 안고 살던 두 남녀가 우연한 계기를 통해 새로운 사랑에 빠지게 되는 내용인듯하다. (드라마 진도상 아직 사랑까지는 아니고 조금씩 썸을 타는 단계인듯?)
빅뱅의 탑이 노래뿐 아니라 연기도 하는지는 몰랐는데, (사실 관심이 없어서 빅뱅의 탑이라는 건 드라마 소개를 보고 알았다. ㅋㅋ)연기를 잘하는지는 몰라도 역할에는 어울리는 것 같다. 그리고 그동안 이름만 들었던 우에노 주리라는 매력적인 일본 여배우를 발견했다.
아직 두 남녀는 서로 만나지도 못하고 얼굴도 모르는 상태다. 앞으로의 전개가 기대된다.  그런데...
난 언제부턴가 멜로 드라마(영화)를 볼 때마다 간접연애를 하고 있다. 드라마로 하는 간접연애.
언제쯤 간접연애 말고 직접연애를 해볼 수 있을까.
0 0

깃(깃허브) 브랜치 작업 커맨드 히스토리

이번팀은 자기 계정으로 포크안하고 origin 클론 받아서 브랜치만 쪼개서 작업하던데 난 포크시켜서 하는게 마음이 편해.

문제는 할때마다 까먹는다는거 ㅋㅋ
깃보다 서브버전을 오래, 자주 써서 그런것도 있고 서브버전은 체크아웃, 브랜치, 머지, 커밋 이렇게 비교적 직선에 가까운 작업 형태인데 깃은 확실히 시각화 될 수 있는 수준의 단계에 대한 이해가  필요한 것 같음.
암튼.. 깃허브를 쓴다고 가정하고 내 방식을, 내 기억을 위해 기록.
1. 원본 리모트 레파지토리 내 계정으로 fork
2. 클론
3. 리모트 네임 변경
4. 원본 리모트 레파지토리 추가
5. 최신 소스 동기화
6. 작업 브랜치
7. 작업 작업 작업
8. rebase - 마스터 헤드 이동 (브랜치 작업 시작 후 upstream master 의 커밋이 있는 경우)
9. rebase - 커밋 합치기
10. rebase - upstream 최신 HEAD 로 이동
12. Delete branch (local & remote)
13. Push
14. github 에서 풀리퀘스트 작성 및 전송
<링크>
http://www.popit.kr/오픈소스-git-프로젝트-pull-request-보내기/

http://dogfeet.github.io/articles/2012/git-merge-rebase.html
0 0

맥 시에라 vi / vim 클립보드 사용하기

1~4 단계의 과정이 필요할 수 있다.
1. ~/.vimrc
아래 내용을 사용자 홈디렉토리 아래 .vimrc 파일에 추가한다 (없으면 만든다)
2. +clipboard 로 컴파일 됐는지 확인한다
clipboard 옵션 없이 컴파일 된 경우

clipboard 옵션이 포함된 경우
2-1. clipboard 옵션이 없는 경우 brew 로 vim 을 설치한다
맥에는 기본으로 vim 이 설치되어 있다.
아래와 같이 brew 로 vim 을 설치하여 시스템 디폴트 vim 교체할 수 있다 (실제로 교체되지는 않고 path 설정 바꿔주는 듯)
3. 어떤 vim 이 호출되는지 확인한다
3-1. /usr/bin/vim 이 잡힌다면 /etc/paths 파일을 수정하여 /usr/local/bin 이 /usr/bin 보다 위에 나오도록 한다
4. 여기까지해도 동작되지 않는다면 
client-server 옵션으로 설치하면 동작하는 경우가 있다고 한다.
4-1. .vimrc 설정
1번의 설정으로 충분하나 아래와 같이 설정할 수 있다 (참조)
4 4
Square

업데이트 정리
알림과 글거리

열흘 정도 씬디는 손도 못대다가 이틀정도 짬을 내 몇가지 업데이트를 적용했습니다.
더딘 작업의 원인은 작업 시간과 인력이라는 절대적인 리소스의 부족도 있습니다만 그보다는 "잘 쓰고 잘 보여준다" 라는 주제가 너무 어려워 스케치와 설계만 반복하던게 더 크네요.
페이지 단위의 글쓰기나 기절할 정도로 화끈한 결과물 디자인은 설계와 스케치 그리고 자료조사만으로 시간을 잡아먹고 있었고 구글 보이스 입력은 적용 직전까지 개발했었으나 개발단계에서의 테스트 결과와 실사용 테스트 결과의 차이가 커서 시간만 잡아먹고 후일로 미루게 됐네요.
그 외에 사용자 행동과 입력 내용을 분석해 딥/머신 러닝으로 새로운 글쓰기를 제안해보자는 의견도 실사용이 가능한 수준으로 개발하자니 덩어리가 커서 망설이고 있습니다.
십여일의 방치가 마음의 짐이되어 괴로움을 떨쳐내기위해 조금 덩어리가 작고 맥락이 다른 기능들을 업데이트했습니다.
1. 폰트 변경
주 폰트였던 네이버의 나눔 고딕과 MS의 맑은 고딕을 구글과 어도비의 Noto Sans KR 로 변경했습니다.
제목에는 noto 폰트가 사용되고 있었습니다만 이를 본문 등으로 확대 적용했습니다.
그간은 PC와의 평균적인 스타일 유지를 위해 보다 범용적인 고딕체를 사용했습니다만 모바일 사용자가 압도적이라 모바일 기준으로 변경했습니다.
2. 카드 디자인 변경
noto 폰트의 굵기(weight)를 normal 보다 한단계 낮은 300으로 사용하고 있습니다. 기존의 둥그런 덩어리의 카드 디자인이 여리여리한 폰트와 잘 맞지 않아 선을 살려보려고 디자인을 변경했습니다. 덩달아 제목의 크기도 살짝 작아졌습니다.
낯설고 마음에 들지 않는다는 의견이 있습니다만 ㅠ.ㅠ
3. 알림
요원(!)간의 활동과 내부활동을 위한 일반적인 알림 기능을 적용했습니다. 웹소켓 등을 사용하지 않고 있어 완전한 실시간은 아닙니다만 현재의 규모에선 아직 필요를 못 느끼고 있습니다. 
작성 글에 댓글이 등록되거나, 작성한 글이나 댓글이 추천받을 때, 댓글 입력시 @로 사용자를 호출할 때 알림이 생깁니다. 최근 5건의 알림은 우상단에 있는 종 아이콘을 눌러 확인할 수 있습니다.
알림은 7일간 보관되고 7일간의 전체 알림을 확인하는 페이지는 아직 없습니다.
4. 글거리
"ㅇㅇ에 대해 글을 써보세요" 라는 기능의 시작은 게스트 사용자들이 "asdf" 식의 무의미한 테스트 글을 작성하는 것을 좋은 방향으로 유도해보자는 의도였습니다.
그리고 그 뒤로 의미없는 문자들로 작성되는 게스트글들이 사라졌으니 효과가 있었네요.
게다가 주제어를 사용한, 주제어와 유사한 글이 간간히 등록되는 것에 혼자 고무되어(!) 이를 "글거리"라는 이름으로 모두에게 공개하면 좋겠다고 생각하게 됐습니다.
메뉴에서 글거리 항목을 클릭하고 들어가면 간단하게 글거리를 등록할 수 있습니다.
글거리를 등록한 요원이 누군지는 노출되지 않습니다. 재밌는 거리들이 등록되면 저도 멋진 글 좀 써보고 싶습니다 ㅎㅎ
5. 추천글 로직 변경
이건 뭐 씬디 없어지는 날까지 계속 변경되지 않을까 싶습니다. 태그와 키워드, 작성자를 기준으로 보여주던 것 중 작성자 기준을 삭제하고 일정 시간 이내의 추천수와 조회수로 변경해봤습니다.
여전히 딱히 마음에 드는 결과가 나오진 않네요 ㅎㅎ
끝!
+)
아. 시스템 업데이트도 있었네요.
딱히 해킹을 당했거나 성능에 영향이 있는 정도는 아니였지만 스팸시스템들도 계속 스팸 등록을 시도하고 있었고 널리고 널린 감염 시스템들이 묵묵히 공격을 수행하고 있기에 fail2ban 필터를 늘리는 등의 보안 강화 작업이 있었습니다.
그냥... 그랬다구요. ㅎㅎㅎ
뜬금없음에 종지부를 찍어보자면...
씬디 요원님들 애정합니다~ ㅎㅎ
1 1
Square

SSL 인증서 설치 및 적용
스마트폰 ssh 접속으로 5분만에 완료?!!?!
그것도 무료??!!?!??!

이건 누구의 얘기도 아닌 제 얘기. 제가 씬디에 https 를 적용하기 않고 버틸 수 있던 합리적(!) 이유들.

하지만 계속 눈에 밟히는....
그리고 괜시리 갖고 싶은 녹색 자물쇠
그리고 오늘.. Let's encrypt 와 EFF 의 Certbot 으로 인증비용없이 뻥안치고 스마트폰으로 5분만에 SSL 도입 끝.
물론 후속 설정들과 이미지, 외부 소스 등에 대한 url 점검과 설정이 필요했지만 이건 레알 신세계.
근데 이거 나만 몰랐어???
불과 몇달전에도 클라한테 인증서 구매시키고 서버세팅했었는데???
블로그 참 열심히 하시는 존경스러운 outsider 님이 2015년에 베타를 경험했던 포스팅은 여기.
이후 EFF 에서 Certbot 에 Apache, Nginx 등의 소프트웨어와 서버 OS 를 플러그인으로 개발하면서 지금은 서버설정까지 Certbot 이 완료시켜주고 있음.
설치는 EFF Certbot 페이지에 가서 자신의 서버와 웹서버를 선택하면 나오는 메뉴얼대로 (대략 5 ~ 7 커맨드) 하면 끝.
난 심지어 지하철에서 스마트폰으로 ssh 연결해서 설정 끝냈음. ㅇㅇ
내 케이스는 nginx / ubunt 14.04 LTS 로 실제 설치 커맨드 히스토리는 아래와 같음. 아래가 전부임.
이렇게 하면 1) 이메일 주소 입력하세요. 2) 이메일 수신 OK? 3) (서버레벨에서 확인된 도메인 중) 어떤 도메인 쓸꺼임? 4) https 만 씀? 80도 같이 씀? 이렇게 4개 물어보고 답하면 된다.
이후에 nginx 에서 http 접속을 https 로 리디렉션 시키던지 Rails 에서 모든 연결에 ssl 을 적용하는 등의 설정을 하면 됨. 이건 별도의 글로 작성.
이제 Let's encrypt 라는 회사를 살짝 알아보자.
리눅스 재단 (Linux Foumdation) 과의 협력프로젝트라고 사이트 상단에 '이미지'가 박혀있는데 어떤 관계인지는 확인하지 못했다.
ISRG 라는 캘리포니아의 기업에서 "HTTP" 보안이 기업들과 사용자들의 비용절감에 직간접적인 도움이 된다는 생각으로 시작했다고한다.
기본적으로 ACME (인증관리자동화환경) 을 보고 있고 실제로 해당 목적을 훌륭하게 수행하는 솔루션이 있다. letsencrypt 에서 개발하다가 현재는 EFF 에서 개발하고 있으며 패키지이름은 Certbot. 인증절차 및 인증서 설치 이후 갱신을 "명령어 하나로" 처리해준다.
SSL CA 로 중요한것은 얼마나 많은 주효한 클라이언트가 이를 인증된 CA 로 받아들이는가 하는 부분인데 해당 목록은 이곳 링크에서 확인할 수 있고 파폭 2.0+, 크롬, 익스 XP3+, 엣지, 안드 2.3.6+, 맥 사파리 4.0+, iOS 사파리 3.1+ 등등 그냥 믿고 사용해도 되는 수준이다.
또 하나는 letsencrypt 의 생존력인데.. 인증서가 무료다보니 기업의 유지가능성도 살펴보는게 좋겠다.
기업 스폰과 기부금으로 운영되는 것으로 보이며 공식홈페이지에서 스폰서들은 소개하고 있다.
문서상으로 년간 30만불(3년유지) 또는 35만불을 지원하는 플래티넘 스폰서는 mozilla, Akamai, SISCO, EFF, OVH, chrome 등의 6개사이고 그 외 IdenTrust,  포드재단, 페이스북, 디지털오션, 볼터, 쇼피파이 등 다수의 스폰서들이 있다.
역시나 결론은 그냥 믿고 쓰면 되겠군이라는 결론 ㅋㅋ
EFF 는 Electronic Frontier Foundation 의 약자로 한국위키 이름이 "전자 프런티어 재단" 이다.

뭔가 틀리진 않았지만 우습달까?
EFF 는 '디지털 월드' 에서 사용자들의 자유를 지키기 위해 1990년 설립된 비영리 재단으로 블루 리본 캠페인도 여기서 시작했다고 한다.
물리적으로는 관계되기 힘든 연결고리 없는 사람들과 조직이 어느날 나에게 직접적으로 혜택을 주는 일들이 많아지는게 참 재밌고 고마울 뿐이다.

진짜 고마우면 Donate! 
Support Let's encrypt
Support EFF Certbot
2 1
Square

씬디 시즌투를 시작한다

시즌1이라는게 없었는데 시즌2를 시작한다니 놀랍군.
어쨋든 시즌2는 다음과 같이 요약됨.
숨겨진 감성이든
누군갈 욕을하든
알게된 지식이든
맛있는 사진이든
자꾸쓰면 잘써진다.
잘쓰려면 자꾸쓰자.
글쓰기는 잔근육빨.
0 0

Rails 모든 연결 SSL 로 변경하기 + Nginx Redirect

Let's encrypt 와 EFF 그리고 여러 스폰서들과 개인기부자들 덕분에 간단하게 SSL 을 적용했으니 이제 모든 http 연결을 ssl 로 돌려보자.
Rails 에서는 Controller 단위에서 force_ssl 을 사용할 수도 있고 보다 와이드하게 전체 설정에서 다룰 수도 있다.
씬디는 https 변경에 다른 별 이슈가 없기때문에 config/environments/production.rb 에 force_ssl 을 설정했다.
이렇게 설정하면 route 룰을 포함해 모두 ssl 연결로 변경된다.
NginX 나 Apache 등을 리버스 프락시로 구성하여 백단에 서버들에게 넘겨준다면 다음의 헤더를 반드시 포함시켜야한다.
Rack 서버는 1) 443 포트로 연결되었는지 2) ENV['HTTPS'] 값이 "on" 인지 3) X-Forwarded-Proto 헤더가 "HTTPS" 인지 3 가지를 보고 판단하기 때문에 리버스 프락시 뒤에 있는 puma 나 unicorn 등은 443 포트가 아닌 다른 포트나 유닉스소켓으로 통신하기 때문에 HTTPS 연결인지 확인하지 못하고 계속 리디렉션 시키게 된다.
NginX 나 Apache 단에서 301 리디렉션으로 연결 프로토콜을 변경할 수도 있겠다.
80 포트를 수신하는 서버 설정을 넣고 해당 설정에서는 http 를 https 로 변경하여 리디렉션시키면 443 을 리스닝하고 있는 아래의 설정이 요청을 수신하게 된다. 
끝.