본문 바로가기

분류 전체보기96

YAPP 17th 활동 시작 대학생 기업형 연합 IT 동아리 YAPP YAPP은 대학생들의 다양한 아이디어와 열정, 그리고 가능성을 바탕으로 조그마한 변화일지라도 의미가 있는 일을 해나가고, 기존에 없던 새로운 가치를 만들기 위해 노력하는 대학생 기업형 IT동 yapp.co.kr 2020년 7월 중순, Yapp의 17기 모집 공고를 보았습니다. 다른 분야의 사람들은 물론 같은 분야의 사람들과의 협업 경험도 적었었기 때문에 다양한 사람들과의 협업 프로젝트를 하고 싶었고, 그러기 위해 대학생 IT 연합 동아리인 YAPP을 지원하게 되었습니다. 협업 경험을 원해서 지원하기도 했지만, 주변에 같은 분야를 공부하는 개발자가 없어서 같은 분야에 관심이 있는 사람들도 만나보고 싶었어요 :) 그래서 포트폴리오를 만들어 제출했고, 다대일 약 30분.. 2020. 8. 13.
HTTP와 HTTPS 1. HTTP와 HTTPS 차이점 HTTP HTTPS - HyperText Transfer Protocol의 약자 - 포트번호 : 80 - 인터넷에서 사용하는 웹 서버와 사용자의 인터넷 브라우저 사이에 문서를 전송하기 위한 통신 규약 - 암호화가 전혀 되어 있지 않아, 그냥 텍스트 그대로 전송 - wireshark*와 같은 패킷캡쳐 프로그램으로 패킷캡쳐를 해보면 정보가 그대로 노출되어 있는 것을 볼 수 있습니다. * wireshark : 네트워크 패킷을 캡처하고 분석하는 오픈소스 도구 - HTTPS보다 트래픽이 적게 발생 - HyperText Transfer Protocol over Secure Socket Layer(SSL)의 약자 - 포트번호 : 443 - HTTP 프로토콜의 보안성을 강화한 프로토콜.. 2020. 7. 27.
디자인 패턴 - MVC 패턴 (Model-View-Controller) MVC는 Model-View-Controller의 약자입니다. Model, View, Controller. 3가지의 형태로 역할을 나누어 개발하는 방법론입니다. 비즈니스 로직과 UI로직을 분리하여 유지보수를 독립적으로 수행할 수 있도록 하는 것이 장점입니다. Model 애플리케이션이 "무엇"을 할 것인지를 정의합니다. 비즈니스 로직과 데이터를 다루는 영역으로, View나 Controller에 대한 정보를 알면 안됩니다. Model의 상태에 변화가 있을 때, Controller와 View에 통보합니다. 예 : 처리되는 알고리즘, DB, 데이터 등등 View 화면에 무엇인가를 보여주기 위한 역할을 합니다. (UI) 컨트롤러 하위에 종속되어, 모델이나 컨트롤러가 보여주려고 하는 모든 필요한 것을 보여줍니다. .. 2020. 6. 2.
디자인 패턴 - 전략 패턴 (Strategy Pattern) 전략 패턴 (Strategy Pattern) - 행위 패턴 (Behavioral Pattern) 중 하나 => 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴 => 1. 한 객체가 혼자 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하는지에 대해서 중점을 둔다. => 2. 객체 사이의 결합도를 최소화 하는 것에 중점을 둔다. 1. 객체들이 할 수 있는 행위 각각에 대해 전략 클래스 생성 2. 유사한 행위들을 캡슐화 하는 인터페이스 정의 3. 객체의 행위를 동적으로 바꾸고 싶은 경우, 직접 행위를 수정하지 않고 전략을 바꿔주므로써 행위를 유연하게 확장하는 방법 인터페이스 (MovableStrategy) 아래 예시에서 운송 수단을 정해주는 전략 클래스들을 캡슐화 하기 위한 인터페이스 publ.. 2020. 5. 31.
디자인 패턴 - 옵저버 패턴 (Observer Pattern) 옵저버 패턴 (Observer Pattern) - 행위 패턴 (Behavioral Pattern) 중 하나 => 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴 => 1. 한 객체가 혼자 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하는지에 대해서 중점을 둔다. => 2. 객체 사이의 결합도를 최소화 하는 것에 중점을 둔다. - 관찰 대상의 상태가 변화했을 때, 관찰자(Observer)에게 통지하는 패턴 - 상태 변화에 따른 처리를 기술할 때 효과적으로 활용 (MVC 패턴에서 Model과 View의 분리 등..) - Observer 클래스에 상태 변화를 알려주고, Observer는 다시 그 변화에 맞는 결과를 나타낸다. "한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 정보.. 2020. 5. 30.
디자인 패턴 - 추상 팩토리 패턴 ( Abstract Factory Pattern ) 추상 팩토리 패턴 (Abstract Factory Pattern) - 생성 패턴 (Creational Pattern) 중 하나 => 인스턴스를 만드는 절차를 추상화 => 객체를 생성, 합성하는 방법이나 객체의 표현 방법을 시스템과 분리해줍니다. => 무엇이 생성되고, 누가 이것을 생성하는지, 어떻게 생성되는지, 언제 생성되는지 결정하는 데 있어서 유연성을 높일 수 있습니다. - 팩토리 클래스에서 서브 클래스를 생성할 때 if-else 문을 쓰지 않아요. => 팩토리 패턴의 조건문으로부터 벗어납니다 - 구현보다 인터페이스를 위한 코드 접근법을 제공 - 서브 클래스를 확장하기 쉽게 할 수 있어요. Super Class (Computer) public abstract class Computer { public.. 2020. 5. 30.
디자인 패턴 - 팩토리 메소드 패턴 (Factory Method Pattern) 팩토리 패턴 (Factory Pattern) - 생성 패턴 (Creational Pattern) 중 하나 => 인스턴스를 만드는 절차를 추상화 => 객체를 생성, 합성하는 방법이나 객체의 표현 방법을 시스템과 분리해줍니다. => 무엇이 생성되고, 누가 이것을 생성하는지, 어떻게 생성되는지, 언제 생성되는지 결정하는 데 있어서 유연성을 높일 수 있습니다. - 객체 생성 처리를 서브 클래스로 분리하여 처리 => 캡슐화 - 클래스의 인스턴스를 만드는 시점을 서브 클래스로 미뤄요. - 추상화 된 것에 의존하도록, 구상 클래스에 의존하지 않도록 합니다. - 서로 간의 종속성을 낮추고, 결합도를 느슨하게 하며, 확장을 쉽게 합니다. => 예를 들어, PC 클래스에 대해 수정이 일어나더라도, 클라이언트는 알 수 없기.. 2020. 5. 30.
디자인 패턴 - 싱글턴 패턴 (Singleton Pattern) 싱글턴 패턴 (Singleton Pattern) - 생성 패턴 (Creational Pattern) 중 하나 => 인스턴스를 만드는 절차를 추상화 => 객체를 생성, 합성하는 방법이나 객체의 표현 방법을 시스템과 분리해줍니다. => 무엇이 생성되고, 누가 이것을 생성하는지, 어떻게 생성되는지, 언제 생성되는지 결정하는 데 있어서 유연성을 높일 수 있습니다. // 장점 // - 한 번의 new 생성으로 인스턴스를 사용하기 때문에 메모리 낭비 방지 - 싱글톤 패턴으로 만들어진 클래스의 인스턴스는 전역 인스턴스(static instance)이기 때문에, 다른 클래스의 인스턴스들이 데이터를 공유하기 쉬움 - Android App의 경우, 각 액티비티나 클래스 별로 주요 클래스들을 일일이 전달하기가 번거롭기 때문.. 2020. 5. 30.
디자인 패턴 - 프로토타입 패턴 (Prototype Pattern) 프로토타입 패턴 (Prototype Pattern) - 생성 패턴 (Creational Pattern) 중 하나 => 인스턴스를 만드는 절차를 추상화 => 객체를 생성, 합성하는 방법이나 객체의 표현 방법을 시스템과 분리해줍니다. => 무엇이 생성되고, 누가 이것을 생성하는지, 어떻게 생성되는지, 언제 생성되는지 결정하는 데 있어서 유연성을 높일 수 있습니다. - 이미 만들어진 객체를 복사해서 객체를 생성하는 방식 - 어떠한 객체를 여러 개 만들어야 할 경우, 객체 생성에 드는 코딩 분량을 현저히 줄일 수 있다. - 프로토타입 패턴을 사용하면, 여러 객체 생성 및 초기화에서 발생하는 오버헤드(Overhead)를 줄일 수 있다. - 클래스로부터 객체를 생성하기 어려운 경우에도 사용 아래 예시에 사용될 St.. 2020. 5. 29.
프로그래머스 - 불량 사용자 (Java 풀이) 출처 : 프로그래머스 - 2019 카카오 개발자 겨울 인턴십 코딩테스트 문제 [ 문제 설명 ] 개발팀 내에서 이벤트 개발을 담당하고 있는 무지는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량 사용자라는 이름으로 목록을 만들어서 당첨 처리 시 제외하도록 이벤트 당첨자 담당자인 프로도 에게 전달하려고 합니다. 이 때 개인정보 보호을 위해 사용자 아이디 중 일부 문자를 '*' 문자로 가려서 전달했습니다. 가리고자 하는 문자 하나에 '*' 문자 하나를 사용하였고 아이디 당 최소 하나 이상의 '*' 문자를 사용하였습니다. 무지와 프로도는 불량 사용자 목록에 매핑된 응모자 아이디를 제재 아이디 라고 부르기로 하였습니다. 예를 들어, .. 2020. 5. 21.
프로그래머스 - 튜플 (Java풀이) 출처 : 프로그래머스 - 2019 카카오 개발자 겨울 인턴십 코딩테스트 문제 [ 문제 설명 ] 셀수있는 수량의 순서있는 열거 또는 어떤 순서를 따르는 요소들의 모음을 튜플(tuple)이라고 합니다. n개의 요소를 가진 튜플을 n-튜플(n-tuple)이라고 하며, 다음과 같이 표현할 수 있습니다. (a1, a2, a3, ..., an) 튜플은 다음과 같은 성질을 가지고 있습니다. 중복된 원소가 있을 수 있습니다. ex : (2, 3, 1, 2) 원소에 정해진 순서가 있으며, 원소의 순서가 다르면 서로 다른 튜플입니다. ex : (1, 2, 3) ≠ (1, 3, 2) 튜플의 원소 개수는 유한합니다. 원소의 개수가 n개이고, 중복되는 원소가 없는 튜플 (a1, a2, a3, ..., an)이 주어질 때(단, .. 2020. 5. 4.
에트리(ETRI) 연구연수생 후기 어떻게 ETRI에 지원하게 되었냐면요 2019년 6월, 친한 언니의 추천으로 한국전자통신연구원(ETRI) 연구 연수생 여름 인턴을 지원하게 되었습니다. 그 전까지는 아직 3학년 초반이라 취업준비나 인턴에 대한 생각만 막연하게 해본 상태였고, 이미 2018년에 ETRI에서 연구연수생 생활을 해본 친한 언니는 그 경험을 바탕으로 저에게 추천해주었어요. 그래서 처음에는 지원해서 되면 새로운 경험해보는거고~ 아님 마는거고~ 의 마음으로 지원했었던 것 같아요. 그 당시 ETRI에 지원하는 방식은 자유형식 이었습니다. 면접도 없었고, 자기소개서도 pdf, ppt, 영상 등등의 자유 형식으로 제작해서 지원기간 안에 오프라인 우편물로 전달하면 되는 거였어요! (2019년 겨울 인턴부터는 글로 쓰는 온라인 자소서 지원형.. 2020. 1. 17.