반응형

Server OS: Ubuntu 16.04

Flask, Python 3.5.2

Browser: Mozilla Firefox


Flask를 써서 웹페이지로부터 GET, POST 등의 요청(request) 처리하는 코드를 만들었는데, 이상하게 웹페이지에서 form을 이용해서 POST 요청을 보낼 때마다 화면에 400 에러만 나오고 실행이 되지 않았다. 브라우저 화면에 출력되는 자세한 메세지는 다음과 같다:


400 Bad request. The browser (or proxy) sent a request that this server could not understand.


이 경우는 서버의 flask에서 받아들여야 하는 POST parameter가 없을 때 발생한다. 웹페이지의 form에서 실제로 만들어서 submit하는 name과 value의 조합 중에서, 정작 flask에서 실제로 파싱해야 하는 파라미터의 값이 없는 경우이다.


따라서 웹페이지에서 사용자 입력을 통해서 만들어 보내는 form에서 전송하는 파라미터 이름의 목록과 flask에서 request.form['파라미터_이름']으로 받아들이는 목록이 일치하는지 확인하자.



반응형
블로그 이미지

Bryan_

,
반응형

Tools: flask, Jinja2, python 3.5.2


플라스크(flask)에서 웹페이지 템플릿 엔진으로 Jinja2를 쓰는데, flask에서 넘겨 주는 데이터의 값은 분명히 숫자인데 다른 숫자 변수와 단순 비교(==)로 안되는 것이었다. 아마 스트링으로 바뀐 것 같은데, int(변수명)이 Jinja2에서는 안 된다.


Jinja2 에서 변수의 데이터 타입 캐스팅을 하려면 변수명 뒤에 vertical bar(수직선) 문자( | )를 쓰고 데이터 타입을 명시하면 된다.


만약 flask에서 넘겨 주는 변수가 아래와 같다면,

my_var = '1234'


html 파일에서는 아래와 같이 정수로 바꿀 수 있다.

{{ my_var|int }}


이제 숫자로 비교할 수 있다.

{% if my_var|int == 1234 %}

    <div> my_var 의 값은 1234입니다. </div>

{% endif %}




반응형
블로그 이미지

Bryan_

,
반응형

MWC에서 열린 삼성 갤럭시 S9 (Samsung Galaxy S9) 언팩(Unpacked) 행사를 한 줄로 요약하면,

"카메라 많이 좋아졌다."

조금 더 추가하자면, "애플에서 되던 거 우리도 이제 된다."


유튜브 라이브 스트리밍으로 발표를 본 전체적인 느낌은...

애썼다.. =_=


사실 그럴 수밖에 없는 것이 작년 갤럭시 S8 때는 이전과 완전히 다른 새로운 것들을 많이 보여줬었는데 비해, 이번에는 카메라가 눈에 띄게 좋아진 것 외에는 모두 갤럭시 S8 때 있던 것이 그대로 계승돼서 새로운 것이 거의 없었기 때문이다.

애플의 아이폰 네이밍 방식을 빌리자면, 이번 갤럭시 S9은 "갤럭시 S8s" 였다.



작년 갤럭시 S8 언팩 때는:

홈 버튼이 사라져서 S7 대비 폰의 전체적인 디자인이 확 달라졌고,

인피니티 디스플레이를 처음 선보였고,

인공지능 비서 빅스비(Bixby)가 처음 나왔고,

런처 UI 디자인이 대폭 바뀌었고 (Samsung Experience 8),

폰을 PC처럼 만들어 주는 덱스(Dex)도 처음 나왔다.


물론 빅스비의 모자란능과 덱스의 부족한 효용성, 예쁨을 얻고 내구성과 가장자리 터치 오류도 같이 얻은 엣지 디스플레이에 대한 호불호가 논란거리가 되었지만, 적어도 갤럭시 s8 언팩 행사에서는 역대 갤럭시 S 시리즈 중에 가장 많은 변화를 보여줬기 때문에 삼성 치고는 신선한 느낌이 있었다.


반면에 이번 갤럭시 S9에서 대폭 개선된 부분이 주로 CPU, 카메라 모듈, 내장 메모리 속도 등 눈에 직접 띄지 않는 것들 위주다 보니 작년 대비 달라진 것을 눈과 귀로 표현하기가 어려웠을 것이다.


그래도 언팩 행사에서 인상 깊었던 몇 가지를 보면:


*후면 카메라(Telephoto 렌즈)에 가변 조리개가 들어간 것

  - 스마트폰 카메라 입장에서는 분명 아주 큰 발전이지만, 이게 사실 카메라를 re-imagine 했다고 말하기에는 이미 DSLR, 미러리스, 똑딱이가 보편적인 상황에서 좀 약하지 않나?

  - 그래도 조그마한 스마트폰에 가변 조리개를 우겨 넣은 것은 대단함.

  - 저조도 사진은 원래부터 평가가 좋았는데 이번에 훨씬 더 좋아진 듯.


*수퍼 슬로모션(Super slow motion) 카메라

  - 960fps를 찍을 수 있게 되었는데, 일상에서 재미있는 것들을 만들고 싶어 보이게 소개하는 장면에서는 관객들의 호응을 이끌어내는 데 성공했다.


*스테레오 스피커

  - 아이폰에서 되던 거 이제 우리도 됨 (1)

  - 갤럭시 S8/노트8까지는 마이크만 스테레오라서 직접 고음질/고화질 비디오를 찍어 놓고도 이어폰 없이 스피커로 들으면 그저 평평한 소리밖에 안 되었는데, 이제야 들을 만한 스피커가 된 듯 하다.

  - AKG 튜닝과 DOLBI ATMOS가 음질을 어느정도 개선해 주는지는 사운드 덕후가 아니라서 잘 모르겠다. 적어도 전작보단 좋아졌다.


*증강현실 이모지(AR Emoji), 개인화된 이모지

  - 아이폰에서(정확히는 아이폰 X) 되던 거 이제 우리도 됨 (2)

  - 나를 닮은 얼굴에 옷을 입을 수 있는 아바타로 확장된 정도

  - 애플이 이미 보여줘서 신선함이 떨어진 점은 아쉬움.

  - 나를 닮은 이모지 여러 개를 미리 만들어서 따로 저장해 뒀다가 금방 불러서 쓸 수 있게 UI 차원에서 편의를 높인 것 같다.


*빅스비 비전에서 카메라 화면에 보이는 글자를 바로 해석해 주는 기능

  - 언팩에서 공개한 건 빅스비 2.0이 아니라 '빅스비 비전'의 기능 일부였다.

  - 빅스비 버전 2.0은 버전만 언급하고 소개를 안 했다. 아직 개발이 덜 끝난 것 같다. 아직은 대화 능력의 대폭 향상(가령 대화를 계속 이어 가면서 맥락을 파악한다던지)을 기대하기에는 시기상조인 것 같다.


*색깔 잘 뽑았다.

  - 노트8 때는 도대체 왜 그랬어요? ㅜㅜ



아쉬운 점은 전체적으로 많지만, 이것도 몇 가지만 꼽아 보면,

*작년 S8 언팩 때보다 발표 시간은 더 길어졌는데, 훨씬 더 재미없었다.


*어차피 "갤럭시 S8s"의 포지션이 될 게 뻔한데 성능 개선 얼마나 잘 되었는지 강조를 너무 안함.

  - 엑시노스 9810은 긱벤치 점수가 싱글코어 3600점대, 멀티코어 8000 후반대 점수로 애플을 많이 따라잡았다. 전작 S8/S8+/노트8의 긱벤치 점수가 싱글코어 1900~2000점, 멀티코어 6000대인 것을 생각하면 안드로이드 진영에서 대폭 향상된 것임.

  - 홍채인식 센서가 좋아지면서 인식 범위와 넓어지고 속도도 빨라졌다는 소문이 출시 전부터 있었다. 게다가 전면 카메라를 조합해서 어떤 환경에서도 바로바로 인식되도록 개선한 것으로 알고 있는데, 이것에 대한 소개가 너무 없었다.


*신형 덱스 디자인 안 예쁘다. ㅜㅜ

  - 이전 덱스의 동그란 디자인을 유지한 채 평평하게 놓을 수 있도록 만들 수도 있었을 텐데... 아니면 각도조절 가능하게 하거나.. (그 대신 비싸지니까 그냥 원가절감 한 거겠지?)

  - 그리고 이건 매니악하긴 하지만, 아직 덱스에서 가상 머신(VM)이나 특정 운영체제의 실행 환경을 제공하는 시도만 하고 아직 개발이 완료된 것 같지는 않다. 이걸 빨리 성공해서 도커(docker) 같이 특정 운영체제를 위한 격리된 환경을 만들어 주는 것이 되면 개발자나 IT geek 입장에서 꽤 주목을 받았을 것이다.


*발표 마지막에 손에 갤럭시S9 들고 우르르 뛰어 나와서 춤추다 나간 사람들은 뜬금없었다.

  - 왜 한 걸까?



결론적으로, 발표하러 나온 사람마다 "I'm excited" 라고 했지만, 보는 입장에서 그다지 exciting 하지 않았다.

분명 S8 출시 이후로 삼성이 열일한 것은 알겠는데, 그게 일반 대중에게 충분히 각인될 정도는 아니었다.






반응형
블로그 이미지

Bryan_

,
반응형

스마트폰을 갤럭시 노트8로 바꾼 지 5개월이 거의 다 되었다.


그동안 갤럭시노트8 박스에 번들로 들어 있던 투명 케이스와 통신사에서 사은품으로 준 아라리 에어핏 케이스만 써 왔는데, 다른 케이스를 좀 써봐야겠다는 생각이 들어서 찾아 보았다.


거의 5개월이 다 되어서야 케이스를 찾아보게 된 것에 다른 이유는 없고, 원래 노트8 뒷판이 호불호가 많이 갈리는 (개인적으로는 듀얼카메라+지문센서 영역의 존재감이 너무 큰 게 마음에 들지 않는) 디자인이라서 케이스를 사고 싶은 생각이 별로 없었다가, 평창 동계올림픽에 맞춰서 나온 갤럭시노트8 올림픽 에디션의 흰색 뒷판이 생각보다 예뻐 보여서 뽐뿌가 오게 되었다

(그나저나 삼성은 이번 노트8 평창에디션 색상 꽤 잘 뽑았던데 왜 양산할 계획이 없는 걸까? =_=)


그래서 케이스를 이용해서라도 나의 오키드 그레이 색상의 노트8에 흰색 뒷판을 만들어 보고 싶었고, 또 하나는 지금 쓰는 아라리 에어핏 케이스보다 좀더 얇은 케이스가 하나 있으면 좋겠다는 생각도 있어서 결국 두 개를 질렀다. ㄷㄷ;




1. 하미코리아 디즈니 푸우 하드 케이스



케이스 모양은 어디서나 볼 수 있는 전형적인 하드케이스 모양이고 소재도 플라스틱이다.



하미코리아 홈페이지[1]에 가 보면 이것 말고도 노란색, 남색에 다른 디자인의 케이스도 있지만, 나는 흰색을 사야겠다는 목표가 확실해서 '푸우 앤 티거'로 결정.



폰에 끼워 보니, 목표로 했던 흰색과의 조합은 달성했다. 

디즈니 캐릭터 푸우와 티거도 무난하고, 푸우의 빨간 옷과 몇몇 노란 색이 포인트를 준다.



폰을 엎어 놓을 경우, 케이스의 네 귀퉁이가 화면보다 아주 약간 더 올라와 있기 때문에 화면이 바닥에 닿지는 않는 것 같다. 하지만 강화유리를 붙인다면 무조건 강화유리가 먼저 바닥에 닿을 것 같다. 뒷판의 카메라 부분은 케이스 두께가 있기 때문에 바닥에 직접 닿지 않아서 기본적인 보호는 된다.



참고로 케이스가 윗부분과 아랫부분이 모두 사진처럼 깎여져 있어서 스마트폰의 테두리를 완벽하게 보호하지는 않는다. USIM 칩을 바꿀 때 편하긴 하겠지만, 사실 나는 그럴 일이 거의 없기 때문에 저렇게 스마트폰 윗쪽 테두리를 절반 가까이 노출하면 괜히 테두리 부분이 생활 스크래치에 취약해지는 것은 아닌가 하는 생각이 들어서 좀 아쉽다. 그냥 케이스가 스마트폰 상단 부분을 전체적으로 덮어 줘도 괜찮을 텐데...


아무튼 "흰색" 케이스가 필요했기 때문에 이정도면 무난하고 만족스럽다.


정리하면,

  • 디자인: 색깔 + 디즈니 캐릭터 덕분에 평타는 친다. (+개인 취향)
  • 가성비: 디즈니 제휴 때문에 비싸다. ㅠㅠ
    (하미코리아에서 할인 없이 사면 무려 23000원인데,
    대신 인터넷을 잘 뒤져보면 15000원보다 싸게 살 수는 있음)
  • 보호능력: 그냥 전형적인 플라스틱 하드케이스의 보호능력 그 이상도 그 이하도 아님.
  • 그립감: 번들케이스 끼고 쓸 때와 차이가 없음. 무광 플라스틱 소재의 특성상 손에서 잘 미끄러질 위험은 감수해야 함. TPU 소재의 아라리 에어핏 케이스에 비하면 너무 맨들맨들해서 손에서 미끄러져 떨어질 위험은 더 높다. ㅜㅜ 결국 예뻐서 쓰는 것.




2. 오하이(ohi) 스킨핏 매트 케이스


오하이 케이스[2]는 거의 케이스를 안 씌운 듯한 생폰 수준의 모양과 그립감이 마음에 들어서 구입했다.



손으로 가린 부분에 시리얼 넘버가 있는데, 이걸 오하이 홈페이지에 회원가입하고 입력하면 20% 할인 쿠폰(유효기간 1년)을 준다. 모든 오하이 제품에 다 있는 듯 하다. :) 참고로 첫 회원가입을 하면 1000포인트도 주기 때문에 오하이에서 또다른 제품을 구입할 때 유용할 듯.



다크그레이 색상을 샀는데, 다른 말 필요 없고 진짜 얇다

재질은 딱딱하긴 한데 살짝 휘어지는 것을 허용하는 정도이고, 살짝 비친다.



핏이 예술이다. ㄷㄷ... 

노트8 테두리와 일체감이 장난이 아니다. 거의 생폰을 쥐고 쓰는 느낌. 

전원/볼륨/빅스비 버튼 부분은 구멍이 뚫려 있어서 버튼을 직접 누르게 되어 있다.



양쪽 엣지 부분은 갤럭시노트8의 엣지 테두리보다 살짝 더 위로 올라와서 덮어 주는데, 그래도 화면까지 덮지는 않는다. 좋은 점은 오하이 케이스 자체도 약간 휘어져서 노트8의 테두리를 감싸 주듯이 딱 붙어 있다는 점이다. 덕분에 폰과의 일체감이 높다.



워낙 얇아서 엣지 스크린 기능을 쓰는 데에도 지장이 없다. 그 대신 화면보다 높이 올라오는 부분이 하나도 없기 때문에 화면은 절대 보호해 주지 못한다. =_= 아라리 에어핏 케이스는 두꺼운 대신 엎어 놓아도 화면보다 높은 부분이 있어서 화면이 바닥에 닿지 않게 보호해 주는 것을 생각하면, 오하이 케이스의 경우는 극단적으로 얇은 두께로 인해 화면보호를 희생하는 trade-off가 있다.



하단의 이어폰과 USB-C 케이블 단자 부분이 다른 케이스보다 좀더 타이트하게 맞춰져 있기 때문에, 혹시 이어폰이나 충전 케이블 잭 부분이 두꺼우면 케이스와 살짝 간섭이 되지는 않을까 하는 생각은 든다. 하지만 노트8에 같이 들어 있던 AKG 번들 이어폰과 충전 케이블을 쓸 때에는 문제가 없었다.


참고로 오하이 스킨핏 매트 케이스는 표면이 살짝 오톨도톨하기 때문에 무지 얇은데도 불구하고 손에 쥐었을 때 그나마 덜 미끄러지게 도움을 준다. 그리고 표면을 이렇게 처리하는 것은 그만큼 스크래치가 덜 생기고, 생기더라도 티가 덜 나는 효과가 있다.



정리하면,

  • 디자인: 군더더기 없는 깔끔함 + 거의 생폰 수준의 핏을 보여 준다.
  • 가성비: 동일한 포지션의 얇은 제품들에 비하면 가격이 살짝 더 비싸지만, 그만큼 품질이 좋다고 생각됨.
  • 보호능력: 없다. ㅋㅋ 오직 테두리와 뒷판 스크래치를 방지하려는 목적으로 산 것임.
  • 그립감: 생폰 수준의 그립감에 적당히 마찰력이 있는 표면 덕분에 미끄럼을 방지해 준다.


갖고 있는 세 개의 케이스를 비교해 보면:

  • 디자인: 오하이 스킨핏 >= 하미코리아 디즈니 > 아라리 에어핏
  • 무게와 두께: 오하이 스킨핏 >> 하미코리아 디즈니 > 아라리 에어핏
  • 가성비: 아라리 에어핏 == 오하이 스킨핏 >> 하미코리아 디즈니
  • 보호능력: 아라리 에어핏 >> 하미코리아 디즈니 > 오하이 스킨핏 
  • 그립감: 아라리 에어핏 >> 오하이 스킨핏 > 하미코리아 디즈니


비교해 보니 결국 예쁨을 얻고 보호를 포기한 듯. ㅋㅋㅋㅋㅋ

그때 그때 기분과 목적에 따라 바꿔 끼는 걸로 해야겠다. 




<참고자료>

[1] http://www.hamee.co.kr/shop/shopdetail.html?branduid=805745&xcode=071&mcode=005&scode=001&type=Y&search=&sort=manual

[2] http://theohi.co.kr/product/%EC%98%A4%ED%95%98%EC%9D%B4-%EA%B0%A4%EB%9F%AD%EC%8B%9C-%EB%85%B8%ED%8A%B88%EC%9A%A9-%EC%8A%A4%ED%82%A8%ED%95%8F%EB%A7%A4%ED%8A%B8-%EC%BC%80%EC%9D%B4%EC%8A%A4/52/

반응형

'Life > 리뷰' 카테고리의 다른 글

에이수스 젠워치3 (ASUS ZenWatch3) 사용기  (0) 2018.05.29
삼성 갤럭시 S9 언팩 요약  (0) 2018.02.26
블로그 이미지

Bryan_

,
반응형

OS: Ubuntu 16.04 (amd64)

GPU: AMD Radeon HD 7850



우분투 16.04에서 그래픽 카드로 AMD 것을 썼더니, 그다지 매끄럽게 잘 작동하는 것 같지가 않다. 몇 년 전에 비하면 점점 좋아지고는 있지만, Nvidia 그래픽 카드에 비하면 여전히 오류가 많이 발생하는 것이 체감된다.


나는 업무 특성상 우분투 PC에 연결된 모니터 2개를 다 쓰다가 가끔 출력을 모니터 1개로만 내보내는 등의 디스플레이 설정을 자주 변경하는 편인데, 그러는 과정에서 열에 한 번 정도는 화면을 재구성하는 과정에서 화면 전체가 멈추는(freezing) 문제가 발생한다.


(Ubuntu 16.04에 있는 디스플레이 설정)


증상을 보면, 마우스는 마음대로 움직일 수 있는데, 화면 전체가 고정된 이미지처럼 꼼짝도 하지 않고 아무 것도 클릭할 수 없다. 키보드로 몇몇 단축키(창 닫기, Super 키를 눌러서 Unity 메뉴 보이기 등의 시도)를 눌러 봐도 화면 상에는 아무 변화가 일어나지 않는다.


하지만 정작 시스템은 멀쩡하게 돌고 있는 상황이다. 다른 컴퓨터에서 SSH로 접속해도 잘 되고, 웹 서버도 잘 돌고 있고, 데스크탑 화면에서 돌리는 모든 프로그램이 다 켜져 있는 것으로 잡히기 때문이다. 즉, 유일하게 화면을 '그리는(?)' 부분만 고장이 났다고 볼 수 있다.


가장 쉬운 해결 방법은 물론 그냥 전원 버튼을 직접 눌러서 강제로 재부팅하거나, 쉘이 작동한다면 sudo reboot 명령으로 재부팅하는 방법이겠지만, 기왕이면 이미 돌아가고 있는 서비스들을 유지하고 화면만 복구하는 것이 좋을 것이다.


Unity의 디스플레이 설정이 모니터 2개를 제어하는 과정에서 문제를 일으키거나, Unity (lightdm 서비스) 자체가 오류가 나서 다운되는 경우이므로 이 두 가지를 해결하는 것이 핵심이다.

내가 시도해 본 해결 방법은 다음과 같다.



1. Ctrl + Alt + F1 키를 눌러서 tty1 쉘 화면에 진입한다.

만약 이것이 뜨지 않는다면, 다른 컴퓨터에서 SSH를 통해 접속이 되는지 확인한다. SSH로도 접속이 안 되면 정말로 시스템이나 커널이 다운된 것이므로 강제로 재부팅을 해야 한다.



2. 쉘에 로그인한 뒤, 문제의 원인이 되는 디스플레이 설정 프로세스를 검색한다.


$ ps -ef | grep unity-control-center


만약 프로세스가 실행 중인 것으로 검색이 되면, 해당하는 프로세스의 PID를 가지고 kill 한다.

$ sudo kill -9 [PID of unity-control-center]



3. Ctrl + Alt + F7 키를 눌러서 다시 우분투 Unity 화면으로 돌아온다.

만약 화면이 정상적으로 반응을 한다면 고쳐진 것이다.



4. 3번까지 했는데도 여전히 화면이 아무 반응이 없으면, Ctrl + Alt + F1 키를 눌러서 다시 tty1 쉘 화면에 진입하고, 아래 명령으로 lightdm 서비스를 재시작한다.


$ sudo service lightdm restart



그러면 곧바로 우분투 데스크탑 로그인 화면이 뜰 것이다.

아쉽지만, lightdm 서비스를 재시작하게 되면 그 전에 화면에 띄워져 있던 어플리케이션은 모두 강제 종료된다.



사족)

잠깐... 이러면 재부팅과 거의 다를 바가 없잖아? ㅠㅠ

그래도 재부팅보다는 빨리 복귀할 수는 있으니 조금 더 좋은 걸로?

그리고 백그라운드 서비스 몇 개는 살아 있으니까 완전 재부팅은 아님..





반응형
블로그 이미지

Bryan_

,