--전체 보기-- 117

클래스, 객체, 인스턴스를 알아보자

◆ 클래스(Class) ▶ 개념 - Obejct를 만들어 내기 위한 설계도 - 연관되어 있는 변수(Variable)와 메서드(Method)의 집합 ▶ 특징 - 객체의 상태를 나타내는 필드(field)와 객체의 행동을 나타내는 메소드(method)로 구성된다. - 필드란, 클래스에 포함된 변수(variable)를 의미 - 메소드란 어떠한 특정 작업을 수행하기 위한 명령문의 집합 ◆ 객체(Object) ▶ 개념 - 소프트웨어 세계에 구현할 대상 - Class에 선언된 모양 그대로 생성된 실체 ▶ 특징 - 'Class의 Instance'라고도 부른다. - Object는 모든 Instance를 대표하는 포괄적인 의미를 갖는다. - OOP의 관점에서 Class의 타입으로 선언되었을 때 'Object'라고 부른다...

[항해 5기] 항해99를 마치고..

12월 26일의 면접부터 1월 5일의 사전test, 그리고 4월 15일 수료까지. 가끔 지인들에게 우스갯소리로 "배를 타고 항해하는 줄 알았는데, 수영해서 바다를 건너는 거였어요"라고 항해99를 설명할 정도로 지난 96일, 1,531시간(매일 16시간) 동안, zero-base였던 나에게 무엇 하나 쉬웠던 순간은 단언컨대 없었다. - 주 6일, 9 to 9 이상의 스터디 시간 - 쉴 틈 없이 부여되는 팀 단위 과제 - 때때로 발생하는 팀원과의 의견 충돌 - 문제에 대한 정답을 스스로 찾는 자기주도적 학습 - 특히, '왜 이것밖에 못하는가'라는 자기성찰과 자괴감의 시간들 사실, 99일이라는 '짧은 기간', '공부하는 환경', '몰입'까지 이 3가지 이점만 보고 항해99를 시작했었다. 그러나 실제 커리큘럼을..

[항해 5기] 7주차 Week I Learned (클론코딩)

이번 항해에서의 7주차 프로젝트는 클론코딩이다. 지난 주차에 프론트 개발자들과 협업했던 경험을 바탕으로 한층 더 수월하게 협업하며 개발에 임할 수 있었다. 클론 코딩 대상은 "Colley"라는 어플로 흔히 클론하지 않으면서 배웠던 기능들을 최대한 발휘 할 수 있는데 주안을 두었다. 이번에는 마이페이지를 맡아, 기본적인 CRUD를 진행하며, 시큐리티를 조금씩 알아보고 정리 할 수 있는 시간이었다. ㅇ 프로젝트 소개 Colley ㅇ 프로젝트 개요 세상 모든 덕질이 다 모인 곳 ! 혹시 귀여운 굿즈를 모으나요? 아니면 디즈니나 스누피 소품을 좋아하나요? 콜리는 자신의 덕질을 뽐내고, 정보를 나누면서 취향을 공유하는 덕질 플랫폼이에요 - 주소: http://colley-hanghea.s3-website.ap-n..

9장. 웹 브라우저

■ XML 등의 마크업 언어 ㅇ 마크업이란? 태그 등을 이용하여 문서나 데이터의 구조를 명기하는 언어의 한 가지 태그는 원래 텍스트와는 별도로 원고의 교정부호와 주석을 표현하기 위한 것이였으나 용도가 점차 확장되어 문서의 구조를 표현하는 역할을 하게 되었다. 이러한 태그 방법의 체계를 마크업 언어라 한다. 마크업 언어의 종류 : SGML, HTML, XML, XHTML, SVG 등 ㅇ XML (Extensible Markup Language) W3C에서 개발된, 다른 특수한 목적을 갖는 마크업 언어를 만드는데 사용하도록 권장하는 다목적 마크업 언어이다. XML은 주로 다른 종류의 시스템, 특히 인터넷에 연결된 시스템끼리 데이터를 쉽게 주고 받을 수 있게 하여 HTML의 한계를 극복할 목적으로 만들어졌다...

[항해 5기] 6주차 Week I Learned (미니프로젝트2 / ERD란?)

이번 6주차는 각 주특기인 리액트와 자바를 이용하여 미니 프로젝트를 구현하는 첫 협업 기간이다. 프론트와 백이 처음으로 발을 맞춰보는 기간인 만큼, 여러 케이스를 미루어보아 팀내 각 구성원의 능력보다 커뮤니케이션이 더 중요하다는 사실도 새삼 알게 되었다. 물론 우리조는 프론트와 백단 모두 서로 배려해가며 프로젝트를 마칠 수 있음에 감사하다. 우리가 진행했던 프로젝트는 "밥친구"로 1인가구가 늘어 홀로 밥을 먹을 수밖에 없는 사람들을 위한 맛집 모임 사이트이다. 원하는 지역에 있는 맛집에 모임을 만들어 신청한 구성원들과 함께 식사를 할 수 있는 구조로 이루어져 있다. 개인적으로는 더 많은 기능에 참여하지 못한 부분이 아쉽지만 더 실력을 키워 구현해보지 못한 기능들도 도전해보고 싶다. 이상으로 프로젝트 관련..

[항해 5기] 5주차 Week I Learned (CORS)

항해에서의 이번 5주차는 생각보다 실력의 진전이 거의 없었던 것처럼 느껴진 한 주였다. 그러나 포기하지 않고 지금과 같이 꾸준하게 시간과 노력을 투자한다면 결국 실력은 오를 것이라고 생각한다. 6주차 미니프로젝트가 끝나는대로 스프링 강의를 찾아 기초부터 다시 쌓아보아야겠다. ㅇ CORS란? (cross-origin resource sharing) : 직역하면 교차출처 리소스 공유라고 볼 수 있다. 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제이다. 이때 출처란 Protocol과 Host, 포트 번호(ex. :8080 등)까지 모두 합친 것을 의미한다. 웹에서는 다른 출처의 리소스 요청을 제한과 관련된 2가지 정책이 존재하는데..

8장. 프로그래밍 언어 처리

■ 단어에서 문장으로 스티븐 C 존슨은 1970년대 초반 벨 연구소에서 yacc이라는 프로그램을 작성했다. yacc가 만들어내는 프로그램은 스택을 사용하는 시프트-리듀스(shift-reduce) 파서(parser)다. 여기에서 시프트는 토큰을 스택에 넣는다는 뜻이고, 리듀스는 스택의 맨 위부터 매치된 토큰들을 다른 어떤 것으로 대치한다는 뜻이다. ㅇ 예시) shift-reduce parser 1) 오른쪽 상단에 보시는 것과 같이 문법이 정의 되어있고, 하단의 값을 빨간색 입력값으로 넣고자 한다. 2) 가장 먼저 shift에 의해서 num값이 stack으로 이동한다. 3) reduce할 수 있는 EXPR로 치환되어 입력한다. 4) 같은 방법으로 stack에는 * 연산자가 OP로 치환되어 들어갑니다. 5) ..

TDD vs BDD vs DDD vs ATDD

■ TDD (테스트 주도 개발, Test Driven Development) ㅇ 개념 : 테스트가 주도하는 개발로 테스트 코드를 작성하여 검증된 코드를 가지고 실제 코드를 작성하는 애자일의 대표적인 개발 방법론 ㅇ 특징 - 짧은 개발 서클의 반복을 갖는 소프트웨어 개발 프로세스 - 테스트를 통과하는 코드를 작성하고 상황에 맞게 리팩토링 ㅇ 장/단점 - 코드의 가독성 향상 : 각 모듈의 역할이 단순해지고 명확해짐 - 프로젝트의 유지보수와 확장이 용이 - 프로젝트의 품질을 높이고, 효율적인 테스트 경험과 사용자의 입장을 고려한 개발 진행이 가능 - 진입장벽 : 테스트 코드 작성에 대한 학습이 필요하며, 익숙해지는데 많은 시간이 필요 - 작성시간 및 코드량 증가 : 비지니스 로직, 코드 디자인 외에도 테스트 ..

7장. 데이터 구조와 처리

■ 대용량 저장장치 inode는 유닉스 운영체제에서 사용하는 자료 구조로, 파일 시스템 내부에 파일을 유지하는 중요한 정보를 담고 있다. 일반적으로 전체 파일 시스템 디스크 용량의 대략 1% 정도가 inode 테이블에 할당된다. 어떤 한 파일이나 디렉토리를 만들게 되면 1개의 inode가 만들어진다. 그 inode가 inode Table에 등록이 되고, 등록되는 entry-number를 그 inode에 대한 inumber라고 한다. ▶ inode에 대해 더 자세히 알고싶다면♬ [Linux Kernel Concept, File System] (1) 유닉스 파일시스템과 Inode구조체 리눅스는 유닉스 계열의 시스템이다. 유닉스 계열의 시스템에서는 모든 것을 파일로 취급한다고 한다. (1%는 아닌 것도 있다고..

[항해 5기] 4주차 Week I Learned (ORM, SQL, MVC)

■ ORM ㅇ 개념 - 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것을 말한다. 1) 객체지향 프로그램은 클래스를 관계형 데이터베이스는 테이블을 사용한다. 2) 객체 모델과 관계형 모델 간의 불일치가 존재, ORM을 통해 객체 간의 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다. - 데이터베이스 Object ㅇ 장점 객체 지향적인 코드와 비즈니스 로직에 더 집중할 수 있다. SQL 쿼리가 아닌 객체 모델로의 프로그래밍에 더욱 집중하고 코드에 집중하기에 가독성을 올려준다. 재사용 및 유지보수의 편리성이 증가한다. ORM이 독립적으로 작성되어 있어 해당 객체들을 재활용할 수 있다. 때문에 모델에서 가공된 데이터로 디자인패턴을 견고하게 유지할 수 있다. DBMS에 대한 종속성이 줄어든다...