프롤로그

회사에서 진행하고 있는 오픈소스 데이터 분석 플랫폼 Brightics Studio에서 6월 초에 One Way ANOVA 시 에러 가 이슈로 등록이 되었고, 그냥 함수 버그겠지라며 대수롭지 않게 생각하고 있었다.

 

갑자기 8월 19일~20일 사이에 사내 게시판과 메일로 엄청나게 위와 동일한 이슈가 쏟아졌다. 메신저, 전화로까지 연락이 온다. 하하.

그러는 순간 마션의 첫 대사가 떠올랐다. 

 

 

“I'm pretty much fucked. That's my considered opinion. Fucked.”

아. 뿔. 싸. 씨. 발. 좆. 됐. 다.

 

그제야 이슈의 원인을 파악하기 시작했다. 

 

원인을 찾기 위해 에러 로그인 numpy.linalg.linalg.LinAlgError: SVD did not converge로 구글링을 해서 찾고 numpy 소스코드를 찾았지만 정확한 원인을 찾기 힘들었다.

 

왜... 소스코드를 제대로 파악을 못하니라고 잔소리를 들었지만... 아무리 찾아도 나오지 않았습니다... 팀장님? ㅠㅠ 

 

처음에는 사내 특정 솔루션을 설치하면서 윈도 업데이트를 해서 그것과 관련된 사이드 이펙트라고 파악했었는데, 그것도 문제가 아니었다. 어떤 사람은 발생하고 어떤 사람에게서는 나타나지 않았다. 

 

다행하게도 내 자리의 윈도 10 PC에서도 동일한 버그가 발생하였다. 그리고 마찬가지로 집에 있는 PC에서도 동일한 버그가 발생했다. 휴... 동일한 이슈가 발생한다는 건 얼마나 즐거운 건지 모르겠다. 재현이 된다는 거이기 때문이다.

 

윈도키+R => winver를 확인하니, 윈도 10, 버전 2004. 공통된 부분이었다. 이로서 버그의 힌트는 얻었고 다음날 돌아와서 발생한 사람에게서도 확인을 하니 모두 동일한 윈도 버전을 사용하고 있었다. 

 

... 그럼 원인이 윈도 10의 문제라고?
ㅇㅇ
그것도 딱 버전 2004에서만 발생을 한다.

 

윈도 10 이슈이니 아무리 구글링을 해도 코드를 뒤져도 원인이 당연히 나올 수 없었다. 

그래서 다시 제대로 된 검색어로 구글링을 하니 이제야 결과가 조금 보이기 시작했다. 

 

polyfit and eig regression tests fail after latest Windows 10 update #16744 
LinAlgError using scipy.signal.savgol_filter since windows 10 (2004) update #12747

 

공통된 의견은 윈도 10을 업데이트 한 뒤로 numpy와 scipy가 동작하지 않는다는 거였다. 최초 우리 쪽 이슈만 더 빨리 받아들였어도 더 빨리 해결책을 찾을 수 있었고 더 빨리 공유할 수 있었을 텐데 좀 아쉽긴 하다. 아래 삼천포에 설명한 pyarrow & jvm도 공유를 하지 못해서 아쉬웠다. 

 

삼천포

예전에도 비슷한 이슈 경험이 있었다. 그땐 numpy가 아니었지만 pyarrow에서 사용하는 jvm이 리눅스 커널 특정 버전 3개? 에서만 발생을 했다. JVM crashes after updating to kernel with patch for Stack Guard flaw CVE-2017-1000364 그 때도 버그 원인 찾고 해결책 찾느라 죽는 줄 알았다(아무도 안 알아주지만 ㅋㅋ). 지금이야 구글링해도 몇 건이라도 나오는데, 그때는 발견된 초창기라 나오지 않아서 정말 엄청 삽질을 하고 linux kernel을 업데이트했었다.

 

원인

  • 윈도 10, 버전 2004 업데이트

  • Windows 10, Version 2004 Update

 

해결방법

  • anaconda의 numpy와 디펜던시 라이브러리 사용

  • numpy+mkl(Intel® Math Kernel Library)와 디펜던시 라이브러리 사용

  • 기타 

anaconda를 사용하면 문제가 발생하지 않는다. 대다수 python 프로젝트는 anaconda를 사용해서 위 문제점이 빨리 발견되지 않은 것 같다. Brightics Studio에서는 특정 이슈때문에 https://www.python.org에서 제공하는 python을 사용하고 있었고 그냥 pip로 기타 라이브러리를 관리하고 있었다. 그래서 anaconda로 라이브러리를 변경했지만, 또 다른 버그?로 인해서 다시 원복을 했다. 그래서 2번째 방법으로 조치하기로 마음먹었다. 

삽질 목록

  1. anaconda로 이전 

    => sqlite에서 rank와 같은 windows 함수에서 또 다른 이슈 발생

  2. 원복

  3. numpy‑1.18.5+mkl‑cp36‑cp36m‑win_amd64.whl 만 설치

    => scipy를 사용하는 함수에서 값이 틀리게 나오는 이슈 발생

  4. scipy‑1.5.2‑cp36‑cp36m‑win_amd64.whl를 추가 설치

    => statsmodels를 사용하는 함수에서 에러 발생

  5. statsmodels‑0.11.1‑cp36‑cp36m‑win_amd64.whl를 추가 설치

    => numexpr 이슈 발생과 gensim을 사용하는 함수에서 에러 발생

  6. numexpr‑2.7.2‑cp36‑cp36m‑win_amd64.whl patsy‑0.5.1‑py2.py3‑none‑any.whl를 추가 설치 및 gensim에서 사용하고 있는 scipy 라이브러리 소스코드 변경

numpy와 연관된 라이브러리를 다 변경해주면 된다. 

Brightics Studio에서는 아래 5개 + 소스 코드 수정으로 눈에 보이는 버그는 다 잡은 것 같다. 

그러고 나서 One Way ANOVA 시 에러 이 이슈는 closed 시킬 수 있었고, 사내 게시판을 통해 조만간 패치된 버전을 릴리스 한다고 공지했다.

 

교훈

이번에도 느꼈다. 아무도 믿지 말자. 윈도도 MS도 사람도. 

Posted by KraZYeom

댓글을 달아 주세요

raywenderich 동영상 다운로드 받는 방법

창과 방패의 뚫고 막히는 것 처럼 자주 다운로드 받는 방법이 막힌다. 

딱 1년전에 Ray Wenderlich 동영상 다운로드 받기를 포스팅 했지만 금방 막혀버렸다.

이번에는 조금더 간단해졌다. 지난번에는 mmpeg 명령어로 스트리밍되는 것을 다운로드 받았다면, 이번에는 그냥 wget으로 받으면 땡이다.


사파리 상의 원하는 동영상에서 마우스 오픈쪽 버튼을 눌러 Show Frame Source를 클릭한다.


그리고 바로 아래에 frame source가 나타는데 그것을 Cmd + C를 해서 복사를 하고, Sublime Text와 같은 툴에 붙여넣기를 한다. 그리고 1080p, 720p 등으로 원하는 화질으로 찾기를 한다. 그러면 원하는 URL을 찾을 수 있고, 이 주소를 또 복사를 해서 터미널 창에서


wget https://xxx.xxx.xxxx/xxxxxxxx.mp4 명령어를 입력하면 다운로드 받을 수 있다.




Posted by KraZYeom

댓글을 달아 주세요

참조: OpenSSH Legacy Options


OpenSSH 7.0 이상에서 ssh를 사용해서 원격에 접속을 하려할 때 몇 몇 알고리듬은 보안상의 이유로 기본적으로 비활성화 되어 있다. 


NAS와 무선 인터넷 공유기의 ssh를 접속을 하려 하는데 아래와 같이 에러가 나면서 원격 접속이 되질 않는다. -o 옵션을 줘서 알고리듬을 추가 해도 된다. 또는 ~/.ssh/config에 host 정보를 추가 해주면 자동으로 적용이 된다.


no matching host key type found. Their offer: ssh-dss

My Cloud NAS 접속시 문제

krazyeom@MBP:~$ ssh  root@192.168.219.18
Unable to negotiate with 192.168.219.18 port 22: no matching host key type found. Their offer: ssh-dss

ssh -oHostKeyAlgorithms=+ssh-dss root@192.168.219.18

~/.ssh/config

Host 192.168.219.18
HosKeyAlgorithms +ssh-dss


no matching key exchange method found. Their offer: diffie-hellman-group1-sha1

ASUS 무선 공유기 접속 문제

krazyeom@MBP:~$ ssh  admin@192.168.219.5
Unable to negotiate with 192.168.219.5 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 admin@192.168.219.5

~/.ssh/config

Host 192.168.219.5
KexAlgorithms +diffie-hellman-group1-sha1






​ ​​마음에 드셨으면 아래 추천 버튼을 꾹 눌러주세요. :]


Posted by KraZYeom

댓글을 달아 주세요

  1. 소소한삶 2018.04.03 14:08  댓글주소  수정/삭제  댓글쓰기

    안녕하세요.

    포스터 내용으로 시도해 보다 오타가 있는 것 같습니다.

    예제에서 HosKeyAlgorithms +ssh-dss에서 Host에 t가 빠져 있는 것 같네요.

1월 15일 첫 커밋을 시작으로, 2월 12일 오후 1시 40분에 1차 편집 완성본을 만들었다. 


올해 첫 뻘짓 작업을 기획, 시행, 그리고 완성. iOS 9 Day By Day 한국어


iOS 9 Day By Day 시리즈가 PDF로 출간되었다는 소식을 접하고 번역을 할 생각을 하였다. 원본이 PDF 기준으로 책 표지까지 109페이지 밖에 안되어서 혼자 해도 얼마 안 걸릴 것 같았지만, 혼자 하면 귀찮기도 해서 빨리 번역을 해보고 색다르게 번역을 해보자는 결심해  #이상한모임 맴버를 주축으로 트위터, 페이스북에 있는 iOS 개발자들에게 낚시 글을 돌렸다. 함께 번역을 해보자고. 


총 13챕터. 한 챕터에 한 명씩 번역하기로 하였다. 커뮤니케이션 오류로 1명이 2개의 챕터를 번역을 해서 약간 꼬이기는 했지만, 무사히 번역을 마쳤다. 한 챕터당 6~10페이지 이내로, 그것도 대부분 코드와 사진이 있는지라 번역에 들어간 시간은 많지 않았다.


그리고 원저자에게 메일을 남겼다. 한국에서 놀고 먹는 iOS 개발자인 척하는 사람인데 번역을 해도 되느냐고... 기존에 Ray Wenderlich에서도 번역 활동을 한 경험도 있고 어쩌고저쩌고...


그리고 얼마 시간이 지나지 않고 답변이 왔다. 

Hi Sungwook,

Thanks for getting in touch. We're happy for you to translate iOS 9 Day By Day. If you translated the book, we would host it on our site, and then you can share the link to the wider Koren Community.

We will also add that you translated the book to the front-cover.

In a wider sense, we're also trialing a number of language specific web pages to describe to non-English speakers, exactly what we do. Is there a large number of developers in Korea who don't speak English?

Thank you for your email. It has been very interesting and I hope to speak again soon,

All the best, Matthew


이후에도 몇 번의 이메일이 오고 갔다. 초등학교 수준의 영작문 실력으로 보내도 찰떡같이 알아먹는 원어민!


구글 닥스 스프레드 시트에 간단하게 할 일 및 리스팅을 작성하고 작업을 시작했다.  그리고 또한  Github에 리포지토리를 하나 만들고 작업을 시작했다.


1월 말까지 번역을 마치고 싶어서 일주일이 지난 시점에서 한 번 빨리해달라고 쪼았...


그 이후에 문서 템플릿 통일 작업, 말투 통일 작업 등등을 하는데도 시간이 엄청나게 걸렸다. 전문적으로 해본 경험이 없다 보니 더더욱 시간이 걸리는 듯 하다. 그래서 세부적인 내용을 검토 하지 못 했다.


설 연휴까지 마치기로 마음 먹었고, 오늘까지 휴가여서 오늘 아침 부터 스타벅스에 출근해서 1차 편집 작업을 마쳤다. 휴. 


도움을 주신 13명에게 감사의 말을 남기며… 다음 뻘짓을 찾아야겠다.  


부산대학교 맞춤법 검사기, Github, MacDown, Xcode, Pages에게도 감사의 말을 전한다. 땡스 잡스.



Posted by KraZYeom
TAG iOS 9

댓글을 달아 주세요

  • 다운로드 받는게 위법이면 삭제 하도록 하겠습니다.

특정 개발 싸이트의 영상을 1년 유료 구독을 하고 거의 만기가 다가와서 1년간 거의 동영상을 보지 못해서 일단 다운로드 받아두려고 했다. 


얼마전까지는 그냥 소스 보기를 통해서 http://######/####.mp4 패턴으로 동영상 링크가 바로 보여서 다운로드 받기 쉬웠는데 갑자기 최근에 그런것을 막을려고 하는지 한번더 iframe으로 감싸서 소스 노출을 막았다.








뭐 어쩔수 없지... 하면서 포기 하던 찰라. Chrome에서 View Frame Source를 하니 iframe의 html 코드까지 싹 다 보인다. 땡스. 

거기서 바로 mp4 또는 720p로 검색을 하고 링크를 적절하게 찾아서 복붙하니 영상이 떡 하니 보이고 세이브를 하니 다운로드 된다. 


받아 놓는다고 보진 않겠지만... 팁.


모자이크 처리 하니.. 므흣하다.




Posted by KraZYeom

댓글을 달아 주세요

  1. 혹시 2016.08.22 11:29  댓글주소  수정/삭제  댓글쓰기

    비슷한 문제에 처해있는데 저좀 도와주실수 있으신지요
    cw5002101@gmail.com 입니다