분류 전체보기 120

GDSC Solution Challenge 일지 - 2

CORS 정책에 며칠 발목이 잡혔지만 해결했다. 왜 CORS에서 발목이 잡혔나에 대한 이유와 해결과정은 나중에 한꺼번에 정리해서 올릴 때 같이 해야겠다. 메인 기능 구현에 들어가기 전에 ERD 설계를 했다. 말 그대로 모든 게 처음이라 이것도 어떻게 해야 할지 고민이 많았다. 데이터베이스 강의를 들었지만 막상 설계를 들어갈 때는 다시 공부해야 했다. 정규화를 한다고 한 건데 불만족스러운 부분이 많지만 이 또한 경험이다. 다음에는 더 보강해서 할 수 있다고 생각한다! 무엇보다도 정말 재밌다. 강의로 들었을 땐 지루한 부분이 많았지만 역시 실전에 들어가서 팀원과 의미 있다고 생각하는 결과물을 만드니 뿌듯하다. 역시 백문이 불여일견! 백 번 듣는 것보다 한 번 해(보)는 게 낫다! 이제 ERD 설계대로 각종 ..

GDSC Solution Challenge 일지 -1

한동안 바빴었기에 이제야 글을 쓴다.. 공부하랴, 뒤늦게 개발자 준비하랴, 연애하랴, 운동하랴 너무 바쁘다.. 글을 쓰는 지금도 바쁘지 않은 것은 아니지만 방학이기도 하고, 내가 해온 기록들을 짧게나마 착실히 남기고 싶다. 작년에 교내 GDSC에 합류해서 활동하다가 이번에 Solution Challenge에 참여하게 됐다! 팀빌딩이 완전 자유였던 데다 지인이 거의 없어서 어찌해야 할지 몰랐지만 다행히 자기 PR을 좋게 봐준 학우가 러브콜을 보내주었다. ㅠㅠ 그렇게 백엔드 2명, 프론트엔드 1명, PM 1명인 4인조가 정해졌다. 팀원 3명 모두 재능있고, 성격 좋고, 열정 넘치는 친구들이다. 함께 해서 영광이고 이번 기회에 서로 많은 것을 얻어가고 좋은 인연으로 남았으면 좋겠다! 각설하고, 솔챌 이야기를 ..

네트워크 프로그래밍

네트워크 network 네트워크란? 서로 데이터를 주고 받을 수 있는 컴퓨터 및 장치들의 집합이다. 네트워크 내에서 통신의 주체가 되는 장비를 ‘노드(node)’라고 한다. 노드는 컴퓨터, 프린터, 라우터, 브릿지, 게이트웨이와 같은 네트워크 장비이기도 하다. 노드 중에서 일반적인 컴퓨터를 호스트라고 부른다. 네트워크 주소 network address 모든 네트워크 노드(장비)들은 각각의 고유한 네트워크 주소를 갖고 있다. Java 프로그래밍에서 네트워크 주소 네트워크 주소는 바이트 목록(byte[])이다. Java의 기본 숫자 타입(int, long, float)은 네트워크 주소를 저장하기에 적당하지 않다. Java의 int 타입 변수는 4바이트이지만 바이트의 순서는 big-endian이기 때문이다. ..

글쓰기 머신이 필요하다면? Freewriter, Pomera

Portable Smart Typewriter 디지털 타자기 이전에 집필에 사용할 프로그램을 소개한 적이 있다. 이번에는 전자기기를 소개할 것이다. 상술할 전자기기는 글쓰기에 특화돼 있다. 더 정확히 표현하자면 '들고 다니며 장소와 시간의 제약을 최소화하여 글쓰기에 집중할 수 있도록 돕는 기기'다. 언제 어디서든 아이디어가 떠올랐다면 이 기기를 꺼내고 시간 단위로 집중할 수 있다. 이들은 과거 오직 글쓰는 것만이 목적이었던 워드프로세서에서 발전을 거듭해 현재에 이르러서 오늘날의 마니악하면서 심플한 모습을 갖추었다. 그럼 각설하고, 글쓰기 머신에 대한 소개와 기기 그 자체에 대한 주관적 견해를 곁들여서 적어보겠다. 포메라 DM250 포메라 DM250은 일본의 전자 문구류 회사인 킹짐에서 만든 디지털 메모 ..

네트워크(11) - 전송층

전송층은 네트워크층과 응용계층 사이에 위치해 있다. 이는 네트워크층으로부터 서비스를 제공받고 응용계층에게 서비스를 제공할 의무가 있다. 전송층 서비스 전송층은 다음과 같은 서비스를 제공한다. 프로세스 대 프로세스 통신 제공 전송층 서비스를 사용하는 실행중인 프로그램이다. 메시지를 적절한 프로세스에 전달할 책임을 갖는다. 포트번호 프로세스끼리는 클라이언트/서버로 통신한다. 프로세스 통신을 위해서는 로컬호스트, 로컬프로세스, 원격호스트, 원격프로세스가 필요하다. 전송층은 프로세스 통신에서 포트번호의 역할을 한다. 로컬호스트와 원격호스트는 IP주소를 사용하고 프로세스는 포트번호를 사용한다. 소켓 주소 : 각 종단점을 연결하기 위해 필요한 주소이다. IP주소 + 포트 번호를 합해서 만든다. 흐름제어 단어 그대로..

네트워크(10) - 인터넷 제어 메시지 프로토콜 ICMP

이전에 IP 프로토콜에서는 문제점이 있었다. 신뢰성이 없고 비연결형 데이터그램을 전달하고, 최선의 노력만 하며, 오류 보고 및 수정 기능과 오류제어와 해결 매커니즘이 없다. 또한 라우터나 다른 호스트가 동작하고 있는지 알 필요가 있다. 이 모든 문제를 보완하기 위해 설계된 것이 ICMP다. ICMP의 메세지는 두 가지 유형으로 나뉜다. 오류 보고 메시지 : 라우터나 호스트가 IP패킷을 처리하는 중에 발견되는 문제를 보고한다. 질의 메시지 : 호스트나 네트워크 관리자가 다른 라우터나 호스트로부터 특정 정보를 획득할 때 사용한다. 8바이트 헤더와 가변 길이의 데이터 부분을 가지고 있다. 코드 code 필드는 메시지의 유형의 이유를 지정한다. 헤더의 나머지 부분은 각 메시지 별로 다르다. 데이터 부분은 오류와..

네트워크(9) - 인터넷 프로토콜 IP

IP는 TCP/IP 프로토콜이 사용하는 전송 메커니즘으로, 신뢰성이 없고 최선의 노력으로 전달 서비스를 제공한다. 이 말인 즉슨, 데이터 전달에 최선을 다하기는 하나 오류가 생기거나 폐기되는 것에 대해 책임을 지지 않는다는 의미다. 데이터 그램 방식의 패킷 교환망을 위해 설계된 비연결형 프로토콜이기도 하다. 네트워크층에서 경로설정, 주소지정 등의 역할을 한다. 데이터그램 IP계층의 패킷을 의미한다. 길이는 가변적이며, 헤더와 데이터 부분으로 구성되었다. 헤더는 20~60바이트이며, 경로지정과 전달에 필요한 정보를 포함하고 있다. TCP/IP에서는 4바이트 단위로 표시한다. 헤더 내 필드는 다음과 같다. 버전 VER : 4비트로 구성되었으며, IP의 버전을 표시 헤더 길이 HLEN : 4비트로 구성, 데이..

네트워크(8) - 주소 변환 프로토콜 ARP

주소 변환 논리는 주소는 호스트나 라우터가 사용하는 32비트 길이의 전세계적으로 유일한 주소다. 물리주소는 로컬 네트워크에서 만 유효한 주소이다. 하드웨어로 구현된다. 패킷을 호스트나 라우터로 전달하기 위해 논리 및 물리 주소가 필요하며, 논리 주소를 물리 주소로 변환하거나 그 반대의 행위가 필요하다. 정적 변환 : 논리와 물리 주소 연관 테이블을 생성하여 필요 시 테이블에서 검색해 찾아내는 것. 동적 변환 : 논리나 물리 주소 중 하나만 알면 프로토콜을 이용해 다른 하나를 알아내는 것이다. ARP는 논리에서 물리 주소로 변환하는 것이고 RARP는 그 반대이나 현재는 사용하지 않는다. ARP는 논리주소를 물리주소로 변환시킨다고 하였다. 이는 네트워크층에 ICMP와 함께 자리해 있다. ARP 요청은 브로드..

네트워크(7) - 유선 이더넷

근거리 통신망 LAN 지역적으로 제한된 지역에서 독립적인 장치들이 서로 통신할 수 있는 데이터 통신 시스템을 일컫는다. 오늘날 LAN들은 대부분 WAN(광역 통신망)이나 인터넷에 연결한다. IEEE 표준 이더넷 무선 통신을 전제로 해서 단일 주파수 통신을 하는 무전기처럼 타인에게 이야기하는 동안은 그 상대방은 수신만 가능하다. CSMA/CD(충돌검출)방식을 사용한다. 논리 링크 제어 LLC : 흐름제어, 오류제어, 프레임 생성 일부분의 역할을 처리하는 부계층이다. 서로 다른 LAN 사이에 연결성을 제공하기도 한다. 매체 접근 제어 MAC : 프레임을 만드는 기능의 일부나 토큰에 대한 방식을 정의하는 기능을 담당한다. 이더넷 II 프레임 형식 프레임은 다음과 같은 6개 필드로 구성된다. 프리엠블 목적지 주..

알고리즘(17) - NP-완비

NP 완비 NP-complete 요약하자면, 현실적인 시간 내에 답을 얻을 수 있는 해법이 존재하는 것을 말한다. 여기서 이제까지 다룬 모든 알고리즘은 다항식 시간, 즉 입력 크기가 n일 때 최악의 경우에도 수행시간이 O(n^k)의 시간이 걸리는 알고리즘들이었다. 하지만 모든 문제를 컴퓨터로 다항식 시간에 풀 수 있지 않다. 정확히는 풀 수 있으나 현실적인 시간 내에 풀 수 없는 문제가 있고, 아무리 시간이 주어져도 풀 수 없는 문제가 존재한다. 간혹 들어보는 표현 중에 "슈퍼 컴퓨터로 몇 십년 이상 걸리는 문제"가 그것이다. P 는 polynomial이란 의미로, 문제가 주어졌을 때, 대답을 다항식 시간에 할 수 있는 문제이다. NP는 yes라는 근거만 주어지면 다항식 시간에 풀 수 있는 문제이다. N..

728x90
반응형