Today_I_Learned
-
개발자 네트워킹, 꼭 필요할까? 내가 개발자 커뮤니티를 하는 이유(Feat. 오늘은 써야지)Today_I_Learned/etc 2025. 4. 6. 17:30
일을 막 시작했을 때에는 개발자 네트워킹보다는 혼자 잘 하면 된다는 주의였다. 그래서 같은 개발자들을 만나기보다는 회사에서는 회사 사람들만 알고 지냈고 그 외에는 홀로 혹은 비개발자 친구들과 시간을 보내곤 했었다.'혼자서도 잘 하면 된다.'라는 생각에는 지금도 동의한다. 하지만 사람이 한결같이 성실하기란 쉽지 않고, 초심은 늘 희미해져가기 마련이다. 나도 모르는 새에 성장에 대한 욕구가 약해졌던 것 같다.첫 이직을 하고 다시 열심히 잘 해보려 마음 먹었을 때, 지인 소개로 글또를 알게 됐다. '글쓰기' 외에도 커피챗과 온라인 미팅을 통해 다른 사람들과 교류할 기회가 있었다. 이것을 계기로 개발자 커뮤니티 활동을 했을 때 내가 얻는 것에 대해 더 탐구해봐야 생각했다.그렇게 해서 시작하게 된 모임이 항해99..
-
글또 10기 활동을 마치며: 웹개발자로서의 나의 공부 방법 확립기Today_I_Learned/etc 2025. 3. 30. 22:04
서론글또 10기의 공식적인 활동이 오늘로써 종료된다. 글또 활동을 하면서 나의 공부법에 변화가 있었기에 글또 10기 회고 겸 그 변화를 관찰한 내용을 정리해본다. 본론공부 방식의 변화기존보통 공부 주제는 업무든 사이드 프로젝트든 실제 개발을 하다가 모르는 부분을 만났을 때 자연스럽게 선정이 되었었다. 그러면 당연히 문제 상황을 해결하기위해 그 자리에서 바로 인터넷 검색을 시작했다. 그리고 적용방식까지 알아내서 실제로 프로젝트에 하나씩 적용을 해 본다. 원하는 결과가 나올 때까지. 그러나 이 방식의 문제점은 무엇이었을까? 바로 '기억력'이다. 한 번 찾아본 내용도 시간이 지나면 까먹고, 또 검색하고, 코드를 다시 열어 보고... 이런 악순환이 반복됐다.글또 10기 활동 후글또 활동을 하면서 내 공부법엔 이..
-
아키텍처 이론은 실제 실무에선 어떻게 적용될까? (feat. 레이어드 아키텍처, 클린 아키텍처, 항해플러스)Today_I_Learned/Web 개발 2025. 3. 23. 15:58
서론상사로부터 비즈니스 로직과 데이터 로직을 분리하라는 조언을 듣게 되었다. 소프트웨어 개발 시 각 계층의 역할을 구분 짓고 어떻게 소통해야 하는 아키텍처를 항해에서 배웠던 것 같은데... 가물가물한 기억을 다시 되새김질 하기 위해 항해 플러스 과정을 진행할 당시 필기했던 내용을 펼쳐 보았다. 오마이 갓! 각보다 많은 내용이 내 머리 속에서 휘발된 상태였다.역할과 책임을 분리하는 것과 관련 있는 개념은 레이어드, 클린 아키텍처였다. 이 개념들을 다시 정리하기 위해, 이번에는 실무 적용 기회를 놓치지 않기 위해, 왜 계층 간 역할을 구분지어야 하는지 정확히 알기 위해 항해 플러스 과정을 복습하고 이 포스팅으로 정리하게 되었다. 본론1. 레이어드 아키텍처와 클린 아키텍처 개념 및 사용 이유1) 레이어드 아키..
-
[개념 정리] 의존성 주입(feat.Python)Today_I_Learned/etc 2025. 3. 5. 09:28
내가 이해하려고 작성하는 의존성 주입(DI, Payment Injection) 의존성이란?말 그대로 한 Class 가 다른 Class, 모듈 등 외부의 기능을 필요로 하는 성질. 즉, 어떠한 Class 가 Class 외부의 것을 참조하고 있는 상태를 의존성이 존재한다고 이해하면 된다.의존성은 최소화하여 사용하는 것이 시스템의 유지 보수 측면에서 효율적이다.의존성 '주입' 이란?'주입' 은 '넣다.' 와 같은 의미라 볼 수 있다. 즉, 어떠한 클래스가 클래스 외부를 참조하도록 의존성을 넣어주는 여러 방법이 흔히 말하는 '의존성 주입' 이다.그럼 '의존성을 넣어주는' 행위란 뭘까? 도대체 어떻게 클래스에 의존성을 넣어준다는 말인가?이를 설명하기 위해 예시 코드를 작성해 보았다. 단, 스스로의 이해를 위해 직..
-
브라우저의 번역 기능을 사용하면 가끔 서버 기능이 오동작 하는 이유Today_I_Learned/Web 개발 2024. 11. 18. 13:45
현상)미리 준비된 data 리스트를 불러와 -> 원하는 일부 data 선택 -> 서버로 전송 -> 서버는 선택된 data 를 DB에 저장 -> 필요 시점에 저장한 data 를 불러와 -> 사용위와 같은 순서로 동작하는 기능이 있는데 마지막 '사용' 단계에서 Error 가 발생함. 원인 파악 과정)DB 에 저장된 data 의 모양새를 보니 다른 data 들과 양식이 다른 것을 확인-> data 가 어느 시점에서 잘못 생성되었는지 확인하기 위해 동작의 역순으로 디버깅 -> 'data 선택' 단계에서 선택된 data 가 이상한 모양으로 변수에 담기고 있다는 것을 console 출력으로 확인원인은 바로 웹 브라우저의 내장 번역 기능을 사용하면서 html code 가 변형되었기 때문.더 정확히는 번역을 위해 웹..
-
Web 개발 시 주의할 점 (1) - 해쉬Today_I_Learned/Web 개발 2024. 10. 18. 13:21
1. hash 를 잘 활용하자.TestModel.objects.filter(column_name=value) 를 작성한 나에게 상사가 말했다.여기서 사용하려고 hash를 넣은거에요 text로 비교하지말고 hash로 비교해요hash 를 직접 사용해 본적이 없었기에 hash 를 사용해야 하는 이유를 일아보았고 조사 결과를 정리한 내용은 다음과 같다.조건)model 이 자신을 어느 정도 식별할 수 있는 column 을 가지면서, 해당 값을 hash 로 변환한 값도 갖는 경우. 혹은 그렇게 기획되었거나 그렇게 바뀔 예정인 경우.(여기서 '어느 정도' 라는 모호한 표현을 사용한 이유는 id 처럼 완벽하게 고유한 값이 아닌 경우도 포함하기 위함이다.)ex)| id | name | name_hash ..
-
99클럽 코테 스터디 16일차 TIL: 스택/큐, Leetcode 921. Minimum Add to Make Parentheses ValidToday_I_Learned/Algorithm 2024. 6. 25. 23:33
문제https://leetcode.com/problems/minimum-add-to-make-parentheses-valid/description/통과 여부Pass 나의 접근(오답) 처음에는 짝이 맞지 않는 괄호의 수를 세면 된다고 생각했다.(반례) 하지만 괄호의 짝은 모두 맞지만 방향이 다른 경우도 있었다. 결국 stack 을 사용하게 되었다.문자열을 순회하며 '(' 는 push 하고, ')' 을 만나면 stack 에서 pop 을 하도록 한다.')' 를 만났는데 stack 이 비어있으면 s 를 완성하기 위한 문자 삽입 횟수를 +1 한다.class Solution: def minAddToMakeValid(self, s: str) -> int: ans = 0 stack = [..
-
99클럽 코테 스터디 15일차 TIL: 스택/큐, Leetcode 2390. Removing Stars From a StringToday_I_Learned/Algorithm 2024. 6. 24. 22:48
문제https://leetcode.com/problems/removing-stars-from-a-string/description/ 통과 여부Pass 나의 접근문자열을 순회하며 문자를 하나씩 string 변수에 붙인다. * 을 만나면 string 변수의 마지막 문자를 제거한다.시간 복잡도 측면에서 더 좋은 방법 (항해99 스터디를 통해 알게 된 방법)stack 에 넣고, * 이 나오면 stack 을 pop 한다.class Solution: def removeStars(self, s: str) -> str: ans = '' for c in s: if c != '*': ans += c else: ..