목록WHAT I LEARN (83)
Nonamed Develog
어떤 문제가 있었나?오늘은 그동안 과제로 인해 밀린 코드카타를 풀어봤다. 최대공약수와 최소공배수, 3진법 문제가 특히 어려웠는데, 기초적인 수학 공부가 필요하다고 느꼈다. 물론 이론은 다시 보니 어렵지 않게 이해했지만 코드로 바꾸는 것은 쉽지 않았다. 컴퓨터적 사고를 잘할 수 있게 훈련을 해야겠다.무엇을 시도했나?튜터 님의 조언이 생각나 무작정 종이를 가져와 문제를 풀어봤다. 특히 3진법 문제는 실제로 적어보니 머리속으로 정리할 때보다 어떻게 코드를 작성해야 하는지 아이디어가 떠올랐다. 예를 들어 10진법을 3진법으로 바꾸려면 3으로 계속 나눠서 더 이상 나눠지지 않을 때 몫과 나머지를 나열할 수 있다. 하지만 한번 더 나눠서 몫을 0으로 만들면 나머지로만 나열하여 3진법 수를 알아낼 수 있었다. 즉, ..
어떤 문제가 있었나?오늘은 팀 과제를 마무리하고 발표하는 날이었다. 우리 팀을 포함해서 총 6팀이 발표하는데 피드백에서 많이 언급됐던 것 중 하나가 DB파일은 github에 업로드하지 않는다는 것이다. 이 피드백은 이미 지난 프로젝트에서도 언급되었지만 이번 팀 프로젝트를 진행할 때 생각하지 못했다. 또한 과제에 대한 나의 이해도가 얼만큼인지 가늠할 수 없어 발표 전 코드를 복습해 봤다. 코드를 작성할 때 인스턴스에 대한 궁금한 부분이 있었던 걸 협업이라는 핑계로 외면했지만 더 이상 외면할 수 없었다.무엇을 시도했나?.gitignore를 활용하지는 않았지만 지난 Git 2차 특강에서 배운 브랜치 생성 후 협업하는 방법을 이용하여 프로젝트를 진행했다. 기능 브랜치로 push 후 merge를 하지 않거나 충..
어떤 문제가 있었나?협업을 하다보니 작성 코드의 논리가 어긋나버렸다. 코드 작동은 잘 되는데 코드 리뷰를 하자면 비활성화 되어있는 객체가 있거나 중복으로 작성된 코드도 있었다. 예를 들어 flask route가 1개였는데 2개가 되어서 한 동작으로 진행될 코드가 두 동작으로 나뉘어 있다거나, DB에 저장하는 코드가 2가지였다. 무엇을 시도했나?조원 한 분이 의문을 제기했고 다같이 코드를 리뷰하면서 어디서부터 꼬인건지 찾기 시작했다. 아직 조원 모두 flask에 대한 이해도가 부족하여 조심스럽게 의견을 나눴고, "코드가 작동하는데 수정하지말고 유지하자", "그래도 수정해야할 건 하자"라는 의견들이 나왔다. 내 의견은 전자였는데 잘못 건드렸다가 코드가 망가질 수도 있다는 두려움이 있었기 때문이다. 결론적으..
어떤 문제가 있었나?class를 활용하여 회원가입과 포스트 작성을 구현하는 팀 과제에서 내가 맡은 부분은 입력받은 비밀번호를 파이썬 라이브러리 hashlib을 사용하여 암호화한 후 비밀번호가 암호화되었다고 로그를 남기는 것이었다. 비밀번호를 암호화하는 작업은 어렵지 않았다. 문제는 비밀번호가 암호화됐다는 알림을 파이썬 라이브러리 logging을 이용하여 출력하는 부분에서 생겼다. Member class와 Post class input 입력 사이에 로그 메시지 출력을 원했으나 두 개의 input 사이에 중첩되는 현상이 생겼다.이름을 입력하세요: nameID를 입력하세요: id비밀번호를 입력하세요: 123╒════════╤══════╕07/05/2024 06:15:44 PM :INFO: The passwor..
어떤 문제가 있었나?팀 과제 를 진행 중 클래스에 대한 이해도가 부족하여 문제를 이해할 수 없었다. 또한 PyCharm과 git을 함께 사용하는 방법은 배우지 못해서 협업하는데 어려움이 있었다.무엇을 시도했나?복습으로 클래스 관련 파이썬 기초/심화 강의를 수강하고, 해당 강의의 코드를 실행해보며 이해하려고 노력했다. 하지만 문제를 푸는데 어려움이 있어서 추가적으로 구글링을 시작했다. 한 파이썬 강의 포스트를 연재하는 한 블로그를 발견했다. 완전히 이해는 안되지만 그 블로그를 참조하여 문제를 따라 코드를 작성해봤다.어떻게 해결됐는가?코드를 작성하니 50% 정도는 이해한 느낌이었다. (문제를 어떻게 풀어야하는지 이해한 정도...) 완벽히 이해하기 위해서 예제도 풀어보고 클래스에 대한 내용은 필사를 하며 머..
1. 다중 반복문의 이해어떤 문제가 있었나?어제 UP DOWN 게임 문제를 풀 때 재시작 여부를 묻고 그에 따라 게임을 초기화하거나 종료하는 기능을 내가 원하는 것의 의 8할 정도만 완성해서 찜찜했다. 오늘 가위 바위 보 문제를 푸는데 똑같은 조건이 있어서 이 것을 해결하고자 했다. 문제는 다중 반복문을 사용할 때 어느 위치에 루프를 설정하는지, if 문에서 continue/break를 적절하게 사용하는지가 너무 헷갈렸다. 작성한 코드에 무한 루프를 설정하면 무한으로 출력되거나 원하는 부분이 출력되지 않았다. UP DOWN 게임 문제를 풀 때와 마찬가지로 y/n의 선택지를 주고 다시 게임을 진행할지 묻는 코드에서 y, n 이외의 입력값이 있으면 다시 y/n 선택지로 돌아가는 루프를 구현하기 어려웠다. y..
1. 입력한 값이 범위가 벗어날 경우 설정어떤 문제가 있었나?import randomrandom_number = random.randint(1, 100)위의 random 입력값의 범위는 1~100 정수가 되는 것이 조건이다. 따라서 try/except을 이용하여 1~100 정수 외 숫자와 문자를 제외시켜보려 했다.try: print("UP&DOWN! 1~100까지 숫자를 입력하세요!") number = int(input("숫자 입력: ")) if number random_number: print("DOWN") else: print(f"딩동댕! 정답은 {random_number}입니다!") print(f"시도한 횟수: {count}") ..
어려웠던 부분웹개발 종합반을 복습하길 잘했다는 생각이 들었던 게 복습하면서 어려운 부분이 상당히 많았기 때문이다. 그중에 Web Scraping과 Crawling 부분이 보기엔 쉬워 보이는데 직접 태그를 찾는 게 여간 쉬운 일이 아니었다. 연습이 필요하다고 느꼈다. 또한 Flask, DB, SQLite 등 4주차 수업은 내가 미니 프로젝트에서 활약을 많이 못한 이유를 여실히 보여줬다. (이해하지 못한 부분이 대부분) 아마도 시간이 남으면 미니 프로젝트 코드를 점검해 봐야겠다. 새로운 팀으로 편성이 되어 제비 뽑기를 통해 팀장이 되었다. 직전 프로젝트에서는 팀장의 역할을 제대로 하지 못했다고 스스로 생각했고 이 전 프로젝트의 2조 발표자 님의 소회가 참 감명 깊어 팀장으로서 새로운 팀에서 역할을 잘하고 ..