본문 바로가기

전체 글109

저는 소켓이 처음이라니까요? 안녕하세요! 조엘입니다! "처음이라니까요" 시리즈 다섯 번째 주자 바로 소켓입니다. 👏👏 사실 소켓은 처음 접해보는 주제는 아니에요. 네트워크 시간에 배웠지만, 수업에서 제공해주는 코드를 따라 치기에 급급했던 기억이 나네요. 😅 소켓이 무엇이고, 어찌 동작하는지, 그리고 웹에서는 어떻게 소켓을 사용하는지 알아봐요! 💪 *** 소켓이란? *** 위키피디아에서 정의한 소켓은 다음과 같아요. 네트워크 소켓(network socket)은 컴퓨터 네트워크를 경유하는 프로세스 간 통신의 종착점이다. 오늘날 컴퓨터 간 통신의 대부분은 인터넷 프로토콜을 기반으로 하고 있으므로, 대부분의 네트워크 소켓은 인터넷 소켓이다. 네트워크 통신을 위한 프로그램들은 소켓을 생성하고, 이 소켓을 통해서 서로 데이터를 교환한다. 소켓.. 2021. 5. 10.
Level1 미션 + 학습 로그 정리 안녕하세요! 조엘입니다! 🤞🤞 우아한테크코스에서는 미션을 PR로 제출하고, 해당 미션에서 배운 것을 학습로그로 기록하고 있어요. 레벨 1의 학습 목표는 다음과 같았는데요. 자바 프로그래밍 언어에 대한 기본 문법을 익혀 프로그래밍하는 경험을 한다. 읽기 좋은 코드를 구현하는 것이 왜 중요한지와 코드를 개선해 읽기 좋은 코드로 변경해 보는 경험을 한다. 자신이 구현한 코드에 대해 단위 테스트와 리팩토링하는 경험을 한다. 웹 프론트엔드에서 웹 백엔드까지 프로그래밍해 웹 애플리케이션을 개발하는 경험을 한다. 학습로그를 정리하면서 레벨 1에서 배워야 할 부분 중 단위 테스트에 대한 공부가 조금 모자랐다는 생각이 드네요! 물론 테스트 코드를 작성하고 TDD 기반으로 미션을 진행하려고 노력은 했습니다만,,, 단위 테.. 2021. 4. 26.
저는 SOLID가 처음이라니까요? (2편) 안녕하세요! 조엘입니다! "처음이라니까요" 시리즈 네 번째 주자 바로 SOLID 원칙입니다. 👏👏 SOLID가 왜 중요한 개념인지 같이 공부해보도록 해요! 저번 1편에 이어 2편에서는 LSP / ISP / DIP를 다루도록 하겠습니다! *** Liskov Substitution Principle (리스코프 치환 원칙) *** 세 번째 원칙은 LSP, 리스코프 치환 원칙이에요. 정의는 다음과 같아요. "상위 타입의 객체를 하위 타입의 객체로 치환해도, 상위 타입을 사용하는 프로그램은 정상으로 작동해야 한다." LSP는 앞서 살펴본 OCP를 지원하는 원칙이에요. LSP는 다형성에 대한 원칙이거든요. LSP를 준수한 프로그램에서는 상위 타입의 객체를 사용하는 기존의 코드에, 하위 타입의 객체를 대입해도 프로그.. 2021. 4. 15.
저는 SOLID가 처음이라니까요? (1편) 안녕하세요! 조엘입니다! "처음이라니까요" 시리즈 네 번째 주자 바로 SOLID 원칙입니다. 🎺🎺 SOLID가 왜 중요한 개념인지 같이 공부해보도록 해요! 다룰 내용이 많아서, 1편에서 SRP / OCP를, 2편에서 LSP / ISP / DIP를 다루도록 하겠습니다! *** SOLID 원칙 *** 객체 지향 프로그래밍은 각자의 책임들을 완수하는 객체들을 만들고, 이를 협력시켜 큰 문제들을 풀게 했어요. 독립성과 신뢰성이 높은 객체들로 조합된 프로그램은 절차 지향적으로 작성된 프로그램에 비해 유지 보수와 확장에 유리하다고 해요. 하지만 이론은 알아도 막상 코드를 "객체 지향적"으로 작성하려면 머리가 굳어버리는데요! 대충 클래스 정의하고, 대충 조합해서, 뚝딱뚝딱 굴러가게만 짠 코드는 결코 유지 보수와 확장.. 2021. 4. 14.
저는 상태 패턴이 처음이라니까요? 안녕하세요! 조엘입니다! "처음이라니까요" 시리즈 세 번째 주자 바로 상태 패턴입니다. 상태 패턴을 제가 어떻게 이해하고, 정리하고, 적용했는지 알려드릴게요! 💪 피드백 환영입니다! 댓글 달아주세요 :) *** 전략 패턴 복습 *** 앞선 포스팅에서 전략 패턴에 대해서 알아봤어요! - 전략 패턴 포스팅 : papimon.tistory.com/75 전략 패턴은 객체 간의 커뮤니케이션에 유연성을 부여하는 Behavioral 패턴 중에 하나였어요. 전략 패턴은 특정 전략(알고리즘)이 어플리케이션의 동작에 필요하며, 사용자의 요청 등 상황에 따라 특정 전략(알고리즘)이 런타임에 바뀌어야 할 때 유용한 디자인 패턴이에요. 여러 전략들을 추상화한 interface를 만들었고, 실제 전략들을 구체화시킨 class들을.. 2021. 3. 19.
저는 전략 패턴이 처음이라니까요? 안녕하세요! 조엘입니다! "처음이라니까요" 시리즈 두 번째 주자 바로 전략 패턴입니다. 자랑은 아니지만, 사실 디자인 패턴이라는 걸 우테코 들어와서 처음 들어봤어요. 😂 그래서 전략 패턴 하나를 배우고 익히는데 시간이 오래 걸렸던 것 같아요. 그러면 전략 패턴을 제가 어떻게 이해하고, 정리하고, 적용했는지 알려드릴게요! 💪 피드백 환영입니다! 댓글 달아주세요 :) *** 디자인 패턴 *** 위키피디아에서 정의하는 디자인 패턴의 정의는 다음과 같아요. 디자인 패턴은 소프트웨어 설계에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 솔루션이다. 디자인 패턴은 프로그래머가 어플리케이션이나 시스템을 디자인할 때 공통된 문제들을 해결하는 데에 쓰이는 형식화된 가장 좋은 관행이다. 가장 유명한 GoF.. 2021. 3. 13.
HashMap/HashSet의 원리 안녕하세요! 조엘입니다! 오늘은 HashMap과 HashSet이 어떻게 데이터를 저장하는지에 대해 한번 알아보아요! 💪 피드백 환영입니다! 댓글 달아주세요 :) *** HashMap *** HashMap은 Map 인터페이스를 구현한 컬렉션이에요. Map 인터페이스는 Key Object와 Value Object를 같이 저장하는 데이터 구조예요. Key Object를 기반으로 데이터를 저장하고, 접근하기 때문에 Key Object는 고유해야 해요. 따라서 Key Object는 중복해서 저장할 수 없어요. 또한 저장 순서와 출력 순서를 보장하지 않는 데이터 구조라고 알려져 있어요. *** HashSet *** HashSet은 Set 인터페이스를 구현한 컬렉션이에요. HashSet은 내부적으로 HashMap으로.. 2021. 3. 13.
저는 객체 지향이 처음이라니까요? 안녕하세요! 조엘입니다! "처음이라니까요" 시리즈 첫 주자 바로 객체 지향입니다. 솔직히 말하면, 객체 지향이랑은 초면은 아닙니다. 분명히 학교에서 배우긴 했어요. 클래스는 뭐다, 붕어빵 붕어빵 틀, 다형성, 캡슐화 등등... (학교 커리큘럼이 이상해져서 정말 맛만 보고 끝났지만 😒) 근데 막상 객체 지향에서 중요한 건 이런 용어들이 아니더라고요. 객체 지향에서 뭐가 중요한지 하나씩 알아봅시다 :) 틀린 내용이 있을 수 있습니다! 알려주세요! 댓글 환영합니다 😁 *** 정의 *** 기존 학교 과제나 알고리즘 테스트에서 작성한 코드들을 생각해보면, 데이터에 필요한 절차를 거쳐 원하는 결과로 가공되도록 코드를 작성했어요. 지금까지 제가 이러한 코딩 방식을 가지고 불편해하지 않았던 이유는 한 번 짜고 평생 볼.. 2021. 2. 22.
저는 모든 게 처음이라니까요? 안녕하세요! 조엘입니다 :) (닉변 했어요ㅜㅜ 파피란 이름을 뺏겨서ㅜㅜ) 2월 2일부터 우테코 3기 크루로써 공부 중입니다! 과정에 적응하고, 미션 하느라 정신이 없어서 한동안 블로그에 소홀했는데요, 제가 우테코에 들어온 지 한 20일이 되었는데 가장 크게 느꼈던 것은 바로... 아는 게 하나도 없다! 였습니다 자바 문법이며, 디자인 패턴이며, 객체 지향이며, 개발 방법론이며, 전부 초면이라 친해지는 데 정신이 없습니다. (난 대체 컴공에서 무엇을 배운 것인가... 😅) 뭐 어쩌겠습니까 친해져야죠 그래서 블로그에 "처음이라니까요?" 시리즈를 시작해 볼까 합니다! 처음이니까 대충 공부한 걸 기록한다는 뜻은 아니고요, 해당 개념을 처음 접하고, 이해하고, 정리하고, 적용하는 프로세스를 한 번 기록해 볼까 합.. 2021. 2. 22.
반응형