일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- git
- Codeforces
- Python
- 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
- 프로그래머스 코딩테스트 연습문제
- Word Cloud
- terraform
- pycharm
- 프로그래머스 코딩테스트 연습
- 프로그래머스 월간 코드 챌린지 시즌1
- 애드센스
- github
- 브랜디
- 프로그래머스 월간 코드 챌린지
- PostgreSQL
- Firefox
- 파이썬
- WPF
- heroku
- c#
- 스코페2021
- github actions
- 클린 코드
- Spring Boot
- 프로그래머스 코딩 테스트 연습
- 바이오데이터 엔지니어
- selenium
- PostgreSQL 설치 시 에러
- FastAPI
- 디자인 패턴
- Today
- Total
목록분류 전체보기 (103)
프로그래밍 연습하기
구매했던 책을 읽기 시작했습니다. 예전에 헤드 퍼스트 시리즈의 책은 내용을 풀어내는 스타일이 별로라고 생각했었는데, 읽다보니 괜찮은 스타일이라고 느꼈습니다. 서양 감성? 이라고 할까요.. 책의 전체적인 스타일은 뭔가 좀 저에겐 어색한 감성이기는 한데 내적으로는 무언가 계속 저에게 생각할 여지를 주는 것과 이야기식으로 내용을 풀어내는 것은 괜찮다고 느꼈습니다. 디자인 패턴도 열심히 보고 정리해봐야겠습니다.
옵저버 패턴은 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 연락이 가고, 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의합니다. 옵저버들을 관리하는 Subject 인터페이스를 구현하는 클래스를 만들고, Observer 인터페이스를 구현하는 옵저버 클래스들이 있게 됩니다. Subject 인터페이스는 옵저버 등록, 삭제, 알림 메소드가 있고 Observer 인터페이스는 업데이트 메소드가 있습니다. Subject 인터페이스에서 알림 메소드 안에서 Observer 인터페이스의 업데이트 메소드를 사용해서 내용을 갱신할 수 있습니다. 옵저버 패턴은 자바에서 java.util.Observable 을 통해 사용할 수도 있습니다. 하지만 이는 클래스를 상속받아서 구현해야되기 때문에 재사용성에 제약..
스트래티지 패턴(전략 패턴)이란? 알고리즘군을 정의하고 각각을 캡슐화하여 교환하여 사용할 수 있도록 만듭니다. 행동을 인터페이스로 만들고, 사용할 클래스에서는 인터페이스를 선언해주고 구체적인 행동은 그 인터페이스를 구현한 클래스를 사용해주는 식으로 만듭니다. 전략 패턴을 보면서 스프링 프레임워크의 DI와 비슷하다고 느꼈는데, 자세한 내용은 좀 더 공부해보고 정리하려고 합니다. 참고 자료 - Head First Design Pattern
오늘은 Head First Design Pattern 책을 구매하였습니다. 헤드 퍼스트 시리즈 책 중 한 권을 예전에 도서관에서 잠깐 살펴봤었는데, 책이 내용을 풀어가는 스타일이 뭔가 눈에 안들어오고 마음에 들지 않아서 덮은 기억이 있었습니다. 그럼에도 디자인 패턴 책으로 많이 언급이 되어서, 이번에 한번 읽어보려고 합니다. 또 디자인 패턴 책으로 많이 언급되는 것이 GoF의 디자인 패턴 이라는 책인데, 평을 살펴보니 C++ 과 스몰톡을 사용하고 책이 조금 읽기 불편하다는 평을 봐서 헤드 퍼스트 책을 구매하게 되었습니다.
오늘 클린 코드를 거의 다 읽었습니다. 어떻게 보면 당연한 이야기를 하는 것도 있었고, 알고 있으면서 실천하지 못한 부분도 있었습니다. 그리고 이러한 내용을 잘 적용하려면 많은 경험이 필요하겠다 라고 느꼈습니다. 주요 내용을 간단하게 정리해보자면 주석을 달기보다는 코드에서 의도를 파악하는 것을 강조 변수나 메소드, 클래스의 네이밍이 중요하다. 메소드와 클래스를 쪼개기 이것은 첫번째와도 연관되는데, 다양한 책임이 있다면 이름 짓기가 어렵다. 테스트의 중요성 테스트를 원활하게 작성하려면 기능별로 쪼개는 것이 중요하다. 리팩토링의 중요성 한번에 완벽한 코드를 작성할 수는 없다. 지속적인 리팩토링으로 완성해나가야 함. 못 읽은 부분을 포함하여 나중에 다시 읽어봐야겠습니다. 그리고 디자인 패턴에 대해서도 공부해야..
오늘은 처음으로 남에게 의뢰를 받아서 프로그램을 작성해봤습니다. 사실은 누나의 부탁이구요. 무엇이 필요한건지 설명을 듣고 보니까 네이버 블로그의 댓글을 엑셀로 정리하는 간단한 프로그램이었습니다. 원래는 크몽에 의뢰할려고 했었는데 혹시나 해서 저한테 맡겨보기로 했답니다. 파이썬을 자주 써보긴 했지만 엑셀을 다뤄보진 않았었는데요. 이번 기회에 한번 간단하게 익혀봤습니다. openpyxl 라이브러리를 이용하여 쉽게 사용할 수 있었습니다. 저도 예전부터 크몽같은 곳에서 간단한 의뢰를 받아서 용돈벌이나 해볼까 생각했었는데, 여러가지 이유때문에 주저했습니다. 이번 기회를 통해서 비슷한 작업을 몇번 더 해보고 싶네요.
JetBrain IDE에서 사용되는 단축키를 정리 해보려고 합니다. 점점 추가해 갈 예정입니다. Ctrl + K 깃 커밋 Ctrl + Shift + K 깃 푸쉬 (두 파일 선택 후) Ctrl + D 파일 diff 비교
최근에 산 책이 두 권 있습니다. 이펙티브 자바와 클린 코드라는 책인데요. 클린 코드같은 경우에는 저번에 구매하고 나서 블로그에 글을 하나 썼는데 아직 조금밖에 읽지 못했네요. 틈날때마다 읽으려고 하긴 하는데 마음대로 잘 되지 않습니다. 독서하는 시간을 따로 정해두고 읽는 것도 괜찮은 것 같네요. 이펙티브 자바는 최근이라고 하기에는 좀 오래되긴 했지만... 이 책도 역시 초반부만 살짝 읽은 수준입니다. 이펙티브 자바 또한 좋은 책이라고 생각해서 정리하려고 노력중인데 아직 글 하나밖에 쓰지 못했네요. 두 책 다 언어를 떠나서 코딩하는 데 있어서 생각해볼 부분이 많은 것 같습니다. 마음에는 사고싶은 책이 몇 권 더 있는데 아직 사놓은 좋은 책들도 안읽은 상태에서 또 구매하는 것은 자제하고, 책 읽는 시간을 ..

예전에 공공데이터 API를 이용하여 미세먼지 관련 정보를 받아오는 프로젝트를 만든 적이 있습니다. 그런데 2020년 1월 쯤 해서 기존 API가 폐기된다는 안내를 받았습니다. 담당자분 정보 및 연락처는 수정을 했습니다. 그래서 새로운 API를 이용해서 코드를 짰었는데, 그 코드를 오늘 다시 손보게 되었습니다. 발견했던 문제중 하나가, 제가 받아온 지역이름과 기상 데이터를 (지역이름(string), 기상 데이터(dictionary)) 이렇게 튜플로 묶어놓는 바람에 문자열로 묶을때 해당 객체가 __iter__이고 str인지 아닌지를 검사해서 각각 다른방식으로 묶는 해괴한? 함수를 만들어놨었더라구요. 그래서 'location'과 'weather data'를 키로 하는 딕셔너리로 바꾸고 그것을 이용하는 함수도 ..
Git 사용이 아직 미숙해서 gitignore파일 설정을 잘못 한다던가, 올리지 말야야 될 것을 올리는 경우가 종종 있었습니다. 앞으로도 자주 사용할 것 같아서 정리를 해보려고 합니다. git rm 파일이름 원격 저장소에 있는 파일과 로컬 저장소에 있는 파일 모두 삭제 git rm --cached 파일이름 원격 저장소에 있는 파일만 삭제 -r 옵션을 사용하고 폴더 이름을 입력하여 폴더 하위의 모든 파일을 삭제할 수 있습니다. 당연하지만 삭제 해준 후 commit, push를 해주어야 적용이 되는 것을 확인할 수 있습니다.