프롤로그

회사에서 진행하고 있는 오픈소스 데이터 분석 플랫폼 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

댓글을 달아 주세요




미국 시간으로 오늘 2017년 11월 17일 금요일 애플 파크 비지터 센터를 일반인에게 공개했습니다. 며칠 전에는 직원에게 공개했다고 합니다. :-) 


아쉽게도 애플 파크는 공사 중이라서 그런지 근접 조차 못 했네요. 


애플 파크 비지터 센터는 현재 애플 본사인 Infinite Loop 점과 동일한 컴파니 스토어 계열입니다. 다른 매장과 다른 점은 옷, 모자 등 흔히 말하는 굳즈를 팔고 있죠. 전 세계에 2곳 애플 본사 구사옥, 신사옥 옆에만 있습니다.


애플 파크 비지터 센터는 크게 5곳으로 나누어져 있습니다. 조형물 공간, 애플 스토어, 애플 카페, 애플 파크를 바라볼 수 있는 옥상 그리고 중요한 지하 화장실... -_ -;


애플 파크 조형물 AR

주차장에 차를 주차하고 딱 들어서면 사람들이 아이패드 프로를 들고 뭔가 하고 있습니다. 뭔가 했더니 애플 파크 조형물에 아이패드의 전용 AR 앱을 실행하면 그냥 알루미늄이었던 조형물이 실제처럼 보입니다. 왼쪽에는 시간대 설정을 할 수 있는데, 해가 뜨고 지는 과정에서 그림자 위치도 변화합니다. 야간에는 운동장에서 사람들이 운동도 하고, 주차장에는 차가 움직이면서 주차도 합니다. 퀄리티가 후들후들합니다. 역시 자작 앱이 최고인듯합니다.






그리고 쓸어 올리면 지붕이 벗겨지고 속 모습도 볼 수 있습니다. 스티브 잡스 극장은 지하에 지어져 있네요? +_+ 신기방기.


애플 파크는 자연친화적? 과 자연 재생 에너지를 사용하기로 유명한데 그것을 눈으로 보기 쉽게 표현했습니다. 주차장과 메인 건물 천장에 있는 태양광으로 전기를 중앙에 모아서 건물 곳곳에서 사용하게 됩니다. 이동하는 모습을 영상으로 볼 수 있습니다. 후들후들.. 


그리고 저 멀리 자연풍으로 건물 내부의 공기 순환과 온도 조절을 하나 봅니다. 후들후들... 


애플 스토어

일반적인 애플 스토어와 별반 다를 게 없습니다. 통 유리로 이루어져 있고, 크게 디자인은 런던에 있는 스토어나 프랑스 루브르 박물관에 있는 스토어처럼 아주 막 이쁘지는 않은 것 같습니다. 


다만! 컴퍼니 스토어 계열이기 때문에 다양한 애플 액세서리류를 판매합니다. Infinite Loop 점은 신제품이 나오지 않아서 실망을 했었는데, 애플 파크점은 신상품이 엄청나게 많습니다. 애플 책... 이 너무 비싸서 몇 개 뽑아서 작게 만든 엽서 3종, 아이콘 형식으로 색색으로 되어 있는 메모리 카드, 모자, 쇼핑백, 옷... 하지만 나름 비싸서 ㅠㅠ 어떤 것을 사야 할지 엄두가 안 나네요. 지인 직원 찬스를 써서 저렴하게 구입을 해야겠습니다 =ㅁ=;


그리고 아이폰, 맥북, 아이패드 등이 전시되어 있고... 신기하게 아이맥이 없네요. 가운데는 교육을 받을 수 있는 의자와 스크린이 설치되어 있습니다. 그리고 각종 애플 제품 관련 액세서리!


애플 카페

애플 카페는 전 세계 유일한 것 같습니다. 물론.. 본사 안에 있긴 하지만 일반인이 그냥 접근을 할 수 없기에... 공개된 곳의 첫 카페입니다! :-)

직원들은 카페 로고가 찍힌 옷을 입고 있으며, 아이패드 메뉴판으로 주문을 받는 것 같습니다. 음료는 $2~5, 스낵은 $4 정도 하는 것 같습니다. 물은 공짜인 듯합니다!! 뭐 특별할 게 없습니다. 휴지에 로고라도 박혀 있을 줄 알았는데 없네요. 


옥상 전망대

2층으로 올라가면 넓게 트인 공간이 나옵니다. 바로 앞에 애플 파크 본관이 일부분 나무에 가려서 보이고요. 바람이 통하는 구조라 시원합니다. 새 건물이어서 그런지 나무 냄새가 좀 나긴 했습니다. 


사람들이 다 사진을 찍고.. 직원에게 부탁하면 사진을 찍어줍니다. 여자분에게는 잘.. 찍어주고 저에게는 이상하게 찍어줘서 실망했습니다. -_ -; 팔은 왜 들라고 한 건지... 2번째 애플 컴파니 스토어이고 새로운 건물의 옆에 있는 스토어여서 정말 궁금했는데 궁금증이 풀려서 좋습니다. 좋은 관광 코드사 될 것 같고요. 애플 팬들에게는 좋은 성지순례 코스가 될 것 같습니다. :-) 


여러분도 샌프란시스코를 방문하면 애플 파크 비지터 센터에 방문해보세요. (다만.. 왕복 2시간 이상 걸리니... 가깝지는 않습니다.) 구글 맵... 아닌 애플 맵에서 Apple Park Visitor Center로 검색하면 됩니다!



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


Posted by KraZYeom

댓글을 달아 주세요

iTunes 12.7에서 iOS AppStore가 삭제 되어 버렸다. ... 어쩌자는거냐 애플!


하지만 애플에서 기업에게 제공할 목적으로 Deploy apps in a business environment with iTunes에서 iTunes 12.6.3을 제공하고 있다. 직접 다운로드 링크


  1. 다운로드를 받고 installer로 인스톨을 한다. 
  2. Option 키를 누르고 독에 있는 iTunes 아이콘을 클릭을 해서 실행한다. 
  3. 라이브러리 생성과 라이브러리 선택이 나오는데, 라이브러리 선택을 클릭한다. 
  4. Music 폴더 안에는 12.7용 iTunes 라이브러리가 있고, 하위 iTunes 폴더안에 보면 Previous iTunes Libraries이름으로 이전 라이브러리들이 있다. 그 중 최신 것이나, 원하는 날짜의 iTunes 라이브러리를 선택하면 다시 Apps라는 목록이 생긴것을 확인 할 수 있다.



Posted by KraZYeom

댓글을 달아 주세요

WD My Passport 2TB 외장하드를 구입하였다. 기본 포멧이 윈도우 포멧으로 되어 있어, macOS의 디스크 유틸리티로 파티션을 나누고 포멧을 하는 순간 아래 그림과 같은 에러가 뜨면서 더 이상 포멧이 진행되지 않는다.

Mediakit reports not enough space on device for requested operation.


다양한 방법으로 포멧을 시도하다가 다 실패하고 reddit에서 해결 방법을 찾았고 성공했다. 

  • 우선 터미널 애플리케이션을 실행을 한다. 

  • 아래 명령어를 입력한다. 

diskutil list


맥에 연결된 디스크 목록이 나타난다.


목록중 포멧을 위한 외장하드를 선택을 한다. 이 경우에는 disk3이다. * 실수로 다른 디스크를 포멧 할 수 있으니, 주의 또 주의하자.

krazyeom@MBP:~$ diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.3 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                 Apple_APFS Container disk1         500.1 GB   disk0s2

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +500.1 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Untitled                471.1 GB   disk1s1
   2:                APFS Volume Preboot                 21.9 MB    disk1s2
   3:                APFS Volume Recovery                519.9 MB   disk1s3
   4:                APFS Volume VM                      5.8 GB     disk1s4

/dev/disk2 (disk image):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        +2.0 TB     disk2
   1:                        EFI EFI                     209.7 MB   disk2s1
   2:                  Apple_HFS Time Machine Backups    2.0 TB     disk2s2

/dev/disk3 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *2.0 TB     disk3
   1:       Microsoft Basic Data                         2.0 TB     disk3s1

  • 다음 명령어로 강제로 지정한 외장하드를 언마운트 한다. 

diskutil unmountDisk force disk3


  • 다음 명령어로 unix 커맨드 유틸리티인 dd로 부트 섹터에 zero를 쓴다. 

sudo dd if=/dev/zero of=/dev/disk3 bs=1024 count=1024


  • 마지막으로 다음 명령어로 지정한 외장하드에 파티셔닝을 한다.

diskutil partitionDisk disk3 GPT JHFS+ "My External HD" 0g


포멧팅하는 것을 확인할 수 있다. 

krazyeom@MBP:~$ diskutil partitionDisk disk3 GPT JHFS+ "My External HD" 0g
Started partitioning on disk3
Unmounting disk
Creating the partition map
Waiting for partitions to activate
Formatting disk3s2 as Mac OS Extended (Journaled) with name My External HD
[ / 0%..10%..20%..30%..40%..50%.......................... ]


최종적으로 EFI 파티션이 추가로 만들어지고 전체 파티셔닝이 잘 된 것을 확인 할 수 있다.

krazyeom@MBP:~$ diskutil partitionDisk disk3 GPT JHFS+ "My External HD" 0g
Started partitioning on disk3
Unmounting disk
Creating the partition map
Waiting for partitions to activate
Formatting disk3s2 as Mac OS Extended (Journaled) with name My External HD
Initialized /dev/rdisk3s2 as a 2 TB case-insensitive HFS Plus volume with a 155648k journal
Mounting disk
Finished partitioning on disk3
/dev/disk3 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *2.0 TB     disk3
   1:                        EFI EFI                     209.7 MB   disk3s1
   2:                  Apple_HFS My External HD          2.0 TB     disk3s2

  • 구글링을 하다보니, EFI 공간으로 약 209.7 MB 정도가 파티션이 나눠져야 하는데 없어서 그런가 보다. 다른 디스크에서는 EFI 파티션이 할당된 것을 확인할 수 있다.


자 이제 마지막으로 언니들은 고이 분산 저장하도록 하자.

Posted by KraZYeom

댓글을 달아 주세요

  1. kjh 2017.11.14 00:07  댓글주소  수정/삭제  댓글쓰기

    넘감사해요ㅠㅠ

  2. layyee 2018.07.05 10:45  댓글주소  수정/삭제  댓글쓰기

    와 진짜 최고에요,, 갑자기 뻑나더니 disk2s2라고 뜨길래 검색해봤는데 이런 방법을 올려주셔서 살려냈습니다 복받으세요
    들숨에 재력을 날숨에 휴가를,, 적게 일하시고 많이 버세요