왜 나는 IPython 노트북을 경멸하는가
이유1: Esc 두 번 아닌가요?
나는 키보드 구동형이다. 나는 평평한 창 관리자를 사용한다. 나의 마우스는 사치품으로 여겨진다. 나는 키보드에서 손을 들어 나의 사고 흐름을 끊고 16시간 비행하는 것처럼 느껴진다. 두 연결이 나의 마우스로 계속 이동하는 것은 고통이다.(내 마우스가 나쁜 것은 아니다. 나는 내 마우스를 좋아한다! 그러나 나는 나의 키보드를 더 좋아한다...).
평평한 창 관리자가 무엇인지 모르는 사람들에게는 본질적으로 열린 창과 상호작용을 하는 방식으로 작업 공간으로 그룹을 나눈다. (조합 키를 통해 전환)나는 자동으로 열린 창을 맞추는 것을 좋아한다. (나를 믿어라. 나는 이미 Alt Tab hell과 back을 겪었다.) 내 프로그램이 버튼을 통해 열리고 화면의 특정 부분을 자동으로 채우는 것은 하늘이 내린 좋은 기회이다.
네가 본 모든 것은 두 번의 버튼을 통해 이루어진 것이다
그러나 전체 노트북 환경에 대한 나의 가장 큰 불만은 반드시 노트북과 직접적인 관련이 있는 것은 아니다. 그것은 실제적이고 작업 가능한vim 단축키 지원과 관련이 있다.
나는 단축키를 좋아한다. 코드와 관련된 모든 텍스트가 위아래로 내비게이션을 할 수 있는 것을 보면 내 몸 전체가 j
과 k
에 연결된다.나의 caps-lock
키가 Esc
에 다시 비치면 나는vim에서 더 많은 제어 스위치를 '정상' 모드로 전환할 수 있다.보통 이것은 문제가 되지 않습니다. 왜냐하면 저는 VS코드에서vim 확장을 사용하고emacs에서는 사악한 모드를 사용합니다. (저는 doom-emacs을 사용하며 기본적으로vim 키를 사용하여 귀속합니다.)
그러나 Vim 확장된 Jupyter/IPython 단원을 불러오는 중 (웹 인터페이스나 VScode를 통해) 하느님은 esc
키를 두 번 누르는 것을 금지하십니다. 그렇지 않으면 편집기 전체를 가져옵니다.이것은 내가 지금 방의 절반에 도달해야만 내가 일하고 있는 단원을 다시 클릭할 수 있다는 것을 의미한다. 이것은 인체공학적으로 너무 나쁘다.
현재, 이것은 IPython의 구체적인 문제가 아닐 수도 있다. 단지 나는 아직 효과적인 확장을 찾지 못했다. 왜냐하면 기술적으로 말하자면 모든 확장이 정상적으로 작동할 수 있기 때문이다!esc
을 클릭하면 Vim에서'정상'모드로 들어갈 수 있지만, 이것은 노트북에서 단원격을 정상적으로 전환하는 능력을 파괴할 수 있다. 왜냐하면 기술적으로 말하자면 당신은 실제 단원격에 있지 않기 때문이다.
원인 2: 인쇄 (유형 (df)) 가 디버깅되지 않았습니다.
IPython/Jupyter 노트북은 순서대로 실행됩니다. 문제가 있을 수도 있고 없을 수도 있습니다.그러나 노트북에 대한 나의 불평은 주로 디버깅에서 나온다.일반적으로 코드의 한 줄에 단점을 설정하면 디버거가 이 점에서 코드 실행을 잠시 멈추고 우리는 일부 변수를'감시'로 설정할 수 있다.i, e. 디버거는 실행 중 이 변수를 추적할 수 있습니다.예를 들어 아래 코드에서
output = tf.nn.Conv2D(some_image, filter, ...
나는 convolution을 어떤 이미지에 적용할 것이다.실제 조작을 걱정하지 마라. 중요한 것은 내가 한 장의 이미지(또는 부동점 값 행렬)를 촬영하고 이를 응용하고 있다는 것이다. 이것은 실제 값을 바꾸고 값의 유형을 바꿀 수 있다(일부는 NaN
으로 돌아갈 수도 있다). 그리고 권적에 따라 원시 이미지의 실제 모양을 바꿀 수도 있다.현재, 이 조작이 무엇을 하고 있는지 진정으로 검사하기 위해서, 나는 다음과 같은 일련의 혐오스러운 일을 할 수 있다.
print(output.shape) # get shape
print(type(output)) # make sure I actually get a return Tensor
print(np.isna(np.sum(output.values))) # make sure no NaNs popped up
아마도 최악의 경우:
# I'm PRINTING an IMAGE as its
# RAW values, how in the
# actual heck is this helpful..?
print(output)
마찬가지로 위에서 말한 바와 같이 IPython 노트북의 길이는 단원 출력의 충전에 따라 증가한다는 것을 기억하세요.예처리 단계를 검증하기 위해 한 노트북에서 print(output)
을 여러 번 실행했다고 상상해 보세요.이것은 매우 저효이다!
객체의 값이나 속성을 찾을 때마다 해당 문을 삭제하거나 다시 추가해야 하는 수고스럽고 불필요하며 전반적으로 비효율적인 인쇄 명령문이 필요하지 않은 다음 명령문과 비교합니다.내가 알고 싶은 모든 변수에 대한 모든 것이 보였다. 이것은 더욱 유용하고 깨끗한 인코딩 실천이다.
VScode의 디버거에서 출력 변수에 watch
을 사용했기 때문에 모양, 유형 등이 모두 보이기 때문에 추가 코드가 필요하지 않습니다
마지막: 엔지니어가 배치할 코드를 어떻게 보는지 익히다
이것은 아마도 가장 분노하지 않는 원인일 것이다.배치 가능한 코드는 무작위 인쇄 문장을 포함하지 않으며, 보통 함수 사이에 유방향 무환도를 형성합니다!이러한 비순환성은 Jupyter 노트북에서 깨졌다. 왜냐하면 다른 단원에서 한 단원을 바꾸면 다음 단원의 출력이 바뀌지 않기 때문이다.내가 다음 일을 했다면 내 뜻을 말해줄게.
출력이 정확하다는 것은 분명하지만, 만약 내가 지금 a
(또는 b
)의 값을 바꾸고 위의 칸만 다시 운행한다면, 아래의 결과는 정확하지 않다.
따라서 노트북 전체를 다시 실행해야 한다. (이것은 큰 문제가 아니다. 편리한 하단 목록이 있지만, 나는 마우스를 다시 사용해야 한다. 마우스가 전체 파이프의 자연 기능 흐름을 깨뜨렸다.)그러나 여기서 가장 큰 문제는 모듈화입니다. 단독 단원에서 모든 데이터 예처리 절차를 완성하지 않으면 한 노트에서 다른 노트로 쉽게 전환할 수 없습니다.패키지를 가져오는 것처럼 수첩을 다른 수첩으로 가져올 수 없습니다.
배치는요?!이스, 데이터 엔지니어 일이죠...?틀렸어!!우리는 우리의 코드를 어떻게 배치하고 어떤 범례를 따라야 하는지를 고려해야 한다. 이런 범례에서 우리가 생성한 코드는 모듈적으로 교환할 수 있고 가장 중요한 것은 테스트하기 쉬운 형식을 따라야 한다.일부 프레임워크는 전체 파이프라인을 유방향 무환도 (예를 들어 Kedro 등) 로 설정하는 데 도움을 줄 수 있지만, 순수한 학술 연구 외에 데이터 과학 파이프라인을 구축하는 것이 특정 환경에 적합하지 않다는 것을 고려하지 않으면, 이것은 여전히 번거롭고 효율이 매우 낮다.
한 마디로 하면 IPython 노트북은 장점이 있고 시범을 보이기 쉽다. 그러나 본고는 Jupyter/IPython 노트북에 대한 나의 견해와 내가 왜 데이터 과학/기계 학습 관련 임무에서 가능한 한 그것들을 피해야 하는지를 소개한다.
만약 네가 이런 포효를 좋아한다면 나를 따라와라
Reference
이 문제에 관하여(왜 나는 IPython 노트북을 경멸하는가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/_aadidev/why-i-despise-ipython-notebooks-4eok
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
IPython/Jupyter 노트북은 순서대로 실행됩니다. 문제가 있을 수도 있고 없을 수도 있습니다.그러나 노트북에 대한 나의 불평은 주로 디버깅에서 나온다.일반적으로 코드의 한 줄에 단점을 설정하면 디버거가 이 점에서 코드 실행을 잠시 멈추고 우리는 일부 변수를'감시'로 설정할 수 있다.i, e. 디버거는 실행 중 이 변수를 추적할 수 있습니다.예를 들어 아래 코드에서
output = tf.nn.Conv2D(some_image, filter, ...
나는 convolution을 어떤 이미지에 적용할 것이다.실제 조작을 걱정하지 마라. 중요한 것은 내가 한 장의 이미지(또는 부동점 값 행렬)를 촬영하고 이를 응용하고 있다는 것이다. 이것은 실제 값을 바꾸고 값의 유형을 바꿀 수 있다(일부는 NaN
으로 돌아갈 수도 있다). 그리고 권적에 따라 원시 이미지의 실제 모양을 바꿀 수도 있다.현재, 이 조작이 무엇을 하고 있는지 진정으로 검사하기 위해서, 나는 다음과 같은 일련의 혐오스러운 일을 할 수 있다.print(output.shape) # get shape
print(type(output)) # make sure I actually get a return Tensor
print(np.isna(np.sum(output.values))) # make sure no NaNs popped up
아마도 최악의 경우:# I'm PRINTING an IMAGE as its
# RAW values, how in the
# actual heck is this helpful..?
print(output)
마찬가지로 위에서 말한 바와 같이 IPython 노트북의 길이는 단원 출력의 충전에 따라 증가한다는 것을 기억하세요.예처리 단계를 검증하기 위해 한 노트북에서 print(output)
을 여러 번 실행했다고 상상해 보세요.이것은 매우 저효이다!객체의 값이나 속성을 찾을 때마다 해당 문을 삭제하거나 다시 추가해야 하는 수고스럽고 불필요하며 전반적으로 비효율적인 인쇄 명령문이 필요하지 않은 다음 명령문과 비교합니다.내가 알고 싶은 모든 변수에 대한 모든 것이 보였다. 이것은 더욱 유용하고 깨끗한 인코딩 실천이다.
VScode의 디버거에서 출력 변수에
watch
을 사용했기 때문에 모양, 유형 등이 모두 보이기 때문에 추가 코드가 필요하지 않습니다마지막: 엔지니어가 배치할 코드를 어떻게 보는지 익히다
이것은 아마도 가장 분노하지 않는 원인일 것이다.배치 가능한 코드는 무작위 인쇄 문장을 포함하지 않으며, 보통 함수 사이에 유방향 무환도를 형성합니다!이러한 비순환성은 Jupyter 노트북에서 깨졌다. 왜냐하면 다른 단원에서 한 단원을 바꾸면 다음 단원의 출력이 바뀌지 않기 때문이다.내가 다음 일을 했다면 내 뜻을 말해줄게.
출력이 정확하다는 것은 분명하지만, 만약 내가 지금 a
(또는 b
)의 값을 바꾸고 위의 칸만 다시 운행한다면, 아래의 결과는 정확하지 않다.
따라서 노트북 전체를 다시 실행해야 한다. (이것은 큰 문제가 아니다. 편리한 하단 목록이 있지만, 나는 마우스를 다시 사용해야 한다. 마우스가 전체 파이프의 자연 기능 흐름을 깨뜨렸다.)그러나 여기서 가장 큰 문제는 모듈화입니다. 단독 단원에서 모든 데이터 예처리 절차를 완성하지 않으면 한 노트에서 다른 노트로 쉽게 전환할 수 없습니다.패키지를 가져오는 것처럼 수첩을 다른 수첩으로 가져올 수 없습니다.
배치는요?!이스, 데이터 엔지니어 일이죠...?틀렸어!!우리는 우리의 코드를 어떻게 배치하고 어떤 범례를 따라야 하는지를 고려해야 한다. 이런 범례에서 우리가 생성한 코드는 모듈적으로 교환할 수 있고 가장 중요한 것은 테스트하기 쉬운 형식을 따라야 한다.일부 프레임워크는 전체 파이프라인을 유방향 무환도 (예를 들어 Kedro 등) 로 설정하는 데 도움을 줄 수 있지만, 순수한 학술 연구 외에 데이터 과학 파이프라인을 구축하는 것이 특정 환경에 적합하지 않다는 것을 고려하지 않으면, 이것은 여전히 번거롭고 효율이 매우 낮다.
한 마디로 하면 IPython 노트북은 장점이 있고 시범을 보이기 쉽다. 그러나 본고는 Jupyter/IPython 노트북에 대한 나의 견해와 내가 왜 데이터 과학/기계 학습 관련 임무에서 가능한 한 그것들을 피해야 하는지를 소개한다.
만약 네가 이런 포효를 좋아한다면 나를 따라와라
Reference
이 문제에 관하여(왜 나는 IPython 노트북을 경멸하는가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/_aadidev/why-i-despise-ipython-notebooks-4eok
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(왜 나는 IPython 노트북을 경멸하는가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/_aadidev/why-i-despise-ipython-notebooks-4eok텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)