본문 바로가기
반응형

🌱 Computer Science/Programming14

🧐 파이썬 코드를 잘 짜는 법 : 병렬처리 라이브러리 비교분석 이번엔 파이썬의 한계점과 병렬처리를 통한 성능개선을 알아보고자 한다. 데이터엔지니어에게 필요한 덕?목 중에 하나가 성능을 고려해서 효율적으로 코드를 짜는거랄까..? (아찔훼) 지금 우리 회사에서는 spark 대신 파이썬의 pandas로 대부분의 데이터를 처리한다 (회사와서 spark 쓸 줄 알고 기대했는데) 하지만 점점 데이터의 크기가 커질수록 어느정도 한계를 느꼈고, 이를 개선할수 있는 병렬처리에 대해 찾다가 이글을 쓰게 되었다. 판다스 한계점: 속도도 느리고, 메모리도 많이 잡아먹네?! 판다스의 dataframe은 기본적으로 각각의 row 또는 columns을 순차적(sequential)으로 처리한다. 해당 작업이 완료될때까지 기다렸다가 하나하나씩 처리하는 방식이다. 그래서 데이터의 크기가 커질수록,.. 2022. 9. 30.
🧐 파이썬 코드를 잘 짜는 법 : 의존성 주입(dependency injector) 회사에서 'dependency injection 라이브러리 도입해서 리팩토링하는게 좋을거 같다' 라고 하셔서 부리나캐 공부했다. 그런데 이곳저곳 친구들한테 물어보니까 의존성주입은 고사하고 보일러플레이트도 처음 본다다고 하더라..ㅎㅎ 그래서 새삼 내가 많은걸 배울수 있는 좋은 환경에 있구나..! 라고 우리팀과 팀원분들에게 감사함을 느꼈다! 1. 배경 : 객체지향 개발 5대 원리 (SOLID) 시작은 의존성 주입이였다.. 왜 필요한가? 라는 단순한 질문으로 찾아보다가..'의존성 역전'때문이라는걸 알게 되었고.. 이게 뭐지? 라고 찾아보다가..'객체지향개발 5대 원리'까지 와버렸다.. 프로그래밍 설계의 근본 중에 근본인데 아직까지 모르고 있다니 조금 부끄러워서 이렇게 정리를 시작하게 되었다. 죄송한데 초면이.. 2022. 8. 8.
🧐 파이썬 코드를 잘 짜는 법 : 메모리 구조와 메모리 할당방식 이해 사실 지금 코틀린을 공부해야만 하는 상황인데, 갑자기 파이썬 글 쓰기..ㅎㅎ 역시 사람은 모순적인 동물이야..나는 청개구리 그전에 오래전에 내가 썼던 자바와 파이썬의 차이점을 먼저 되짚어봤다. https://pearlluck.tistory.com/632 Python과 Java 차이점 | 객체지향vs절차지향 면접에서 자주 물어보는 기초 질문이라 한번 정리해보려고 한다. 뭔가 보수적인 회사(?) 또는 코딩테스트가 없어서 개발능력을 팩트체크해보려고 할 때 아래처럼 질문을 받았다. Q: 자주 사용하 pearlluck.tistory.com 차이점 중에서 자바는 정적 타이핑언어이고, 파이썬은 동적 타이핑 언어다. 라는 특징이 있다. 저 글을 썼던 당시에는 단지 자바는 변수를 선언해야하고, 파이썬은 안해도 된다라고만.. 2022. 8. 1.
[Git] 실무에서 은근히 유용한 git stash와 git squash 이 글을 쓰게 된 이유 실무에서 자주 사용하는 git 명령어들에 대해서 짚고 넘어가보려고 한다! 사실 입사하기전에는 몰랐는데, 일을 하다보니까 은근히 실무에서 많이 사용하는 명령어들이다! 참고로 git rebase도 일을 하다보면서 익숙해진 명령어였다! 함께보면 좋을글 : https://pearlluck.tistory.com/754 [Git] merge말고 rebase를 사용해야하는 이유, Rebase vs Merge 이 글을 쓰게 된 이유 벌써 회사에서 6개월이나 넘게 깃을 썼지만, 그럼에도 헷갈린당ㅜㅜㅜ 나 혼자 commit, push 할때는 그래도 괜찮은데 문제는 다른 팀원들이랑 브랜치를 같이 써야야할 경우.... pearlluck.tistory.com 목차 Git Stash 언제 사용하는가? gi.. 2022. 7. 10.
[Git] merge말고 rebase를 사용해야하는 이유, Rebase vs Merge 이 글을 쓰게 된 이유 벌써 회사에서 6개월이나 넘게 깃을 썼지만, 그럼에도 헷갈린당ㅜㅜㅜ 나 혼자 commit, push 할때는 그래도 괜찮은데 문제는 다른 팀원들이랑 브랜치를 같이 써야야할 경우....git rebase가 문제다.. 사실 사내에서는 git merge가 아닌 rebase를 하도록 컨벤션을 지정했는데, 내가 여기에 익숙하지 않다보니 rebase를 할때마다 헷갈린다.. 그래서 깃도 꼬이고..브랜치 정리도 안되고.. (그래요 제가 죄인입니다😢) 그래서 이번에 git rebase 대해서 확실히 짚고 넘어가보려고 한다..! 브랜치 병합 예를 들어, 아래와 같이 2개의 브랜치가 있는 상황이라고 생각해보자 main 브랜치는 기존의 개발작업을 진행했던 브랜치고, 새로운 피쳐를 추가개발해야해서 main.. 2022. 5. 29.
[Test] mypy로 python 타입 검사하기 동적 타이핑 언어 파이썬은 동적 (dynamic) 타이핑 언어이다. 즉, 문자열인지 정수인지 실수인지 코드의 타입을 지정해줄 필요가 없다는 것이다. 개발자로써 코드를 짤때 타입을 생략해도 되니까 간단하고 편하다라고 느낄 수 있지만, 반대로 유지보수를 할때 해당 변수에 뭐가 들어가있는지 예상이 불가능해서 더 불편하다고 느낄수도 있다. 결국엔 타입을 생략하는 동적타이핑 언어라고 해도 명확하게 타입을 지정하는 편이 더 낫다. 이렇게 타입을 지정하고, 생략하고는 개인의 차이가 있을수 있기 때문에 이런 스타일을 통일하는게 좋다. 그래서 파이썬 코드에 파입을 명시하기 위한 표준을 위해 파이썬 3.5 이상부터는 타입어노테이션이 추가되었다. 이 표준에 따라 변수나 함수에 타입이 명시된 파이썬 코드는 정적 타입검사기로 .. 2022. 3. 24.
[Test] python 테스트코드의 필요성(feat.pytest) 테스트의 무한굴레 테스트 코드를 알기전.. 나는 정말 아마추어스럽게 테스트 했다.. 코드를 수정하고, 서버를 동작시키면서, 수정한내용이 오류가 없는지 계속계속 봤다.. 테스트를 할 때마다 디비에 접속해야했고, 특히나 수정하는 작업이 디비의 결과값에 영향을 주는 경우 계속해서 다시 원복을 시켰다... 이렇게 테스트의 무한 굴레에 직접 빠져보니까 정말 시간도 너무 오래걸리고 뭔가 비효율적임을 느꼈다. 계속해서 아 이게 맞나..? 라는 생각에 같은 작업만 반복하는 기분이 들었다. 테스트코드의 필요성 이렇게 배포를 하면서 느낀점은 나도 내가 짠 코드를 못 믿겠다는것이다. 그래서 계속 배포를 할때마다 긴장을 했다. 이번에도 실패하면 어쩌지?하면서.. 그런데 생각해보니 애초에 꼼꼼한 테스트를 했다면 이런 불안과 걱.. 2022. 3. 23.
Pycharm Black 설정 및 사용법 가이드 black이란? 2018년 파이썬 재단에서 만든 Python Code Formatter coding convention이 아직 명확하지 않다면 자동 포맷팅 도구인 black에 따라 진행하는것도 나쁘지 않을지도? 공식문서 git : https://github.com/psf/black docs : https://black.readthedocs.io/en/stable/ black 설치 및 적용 설치 : $ pip install black 적용 : $black 파일명.py 그럼 코드 자체가 black 포매터 규칙에 따라 자동으로 변경된다. 예를 들면 " ->' 라던가.. 줄바꿈이라던가..이런걸로 변경됐는지 확인해볼수 있다. Pycharm black 설정 혹시 pycharm을 쓰고 있다면, 아래의 내용으로 bla.. 2022. 3. 22.
한창 힙했던 언어 Python과 요즘 가장 힙한 언어 Rusty python과 Rusty(러스트) 스크립트 언어 세계 부동의 1위 python 그리고 시스템 프로그래밍계 떠오르는 샛별 rusty 파이썬은 컴파일해서 사용하는 프로그램이나 라이브러리를 개발할때 사용하고, 러스트는 컴파일하기 불편하거나 github같은 곳에서 바로 사용해야하는 시스템 유틸리티를 만들떄 자주사용한다. 요즘 힙한언어, rusty Mozilla 재단의 Graydon Hoare가 설계한 시스템 프로그래밍 언어. 초기에는 Mozilla의 실험적인 웹랜더링 엔진인 Servo를 개발하기 위한 목적. 이 엔진은 병렬 렌더링을 지원하는 크로스플랫폼 웹 렌더링 엔진이라 메모리 안전성을 보장하도록 설계. 러스트에는 차용검사(borrow checking)이라는 기능이 있다. 소스코드를 바이너리로 컴파일하기 전에.. 2021. 12. 3.
[Programming] Python과 Java 차이점 | 객체지향vs절차지향 면접에서 자주 물어보는 기초 질문이라 한번 정리해보려고 한다. 뭔가 보수적인 회사(?) 또는 코딩테스트가 없어서 개발능력을 팩트체크해보려고 할 때 아래처럼 질문을 받았다. Q: 자주 사용하는 개발언어가 무엇이냐 A: 파이썬입니다 Q: 파이썬밖에 할줄 모르나요? A: 아..자바도 조금할줄 압니다...! Q: 그럼 자바와 파이썬의 차이점은 무엇이죠? 근데 개인적으로 이런질문을 아니 이런질문을 하는 회사는 뭔가 답답한 느낌이 든다랄까.. 솔직히 개발언어는 각자 장단점이 있고, 스타일이 있어서 비교할만한 주제가 아닌것같은데.. (실제로 구글링해도 명확하게 구분한 글이 없네.) 그래도 기본을 짚고 넘어가는 목적으로 한번 알아보자. 자바(JAVA) 1. 객체지향 언어 데이터를 객체로 취급해서 기능들을 하나의 객체로.. 2021. 8. 4.
728x90