본문 바로가기

Programming

(208)
백세코딩 #개발자(이력과 회사) 소프트웨어 기업의 조건1. 오픈된 생태계를 구성할 수 있는 열린 개발자 문화를 가지고 있어야 하며, 폐쇄적인 자신들의 수익 모델로 수익 대부분을 가지고 가지 않는다.2. 단일 제품이나 단일 서비스로써 상용화된 제품군을 가지고 있으며, 이를 판매하며 수익을 올리는 비즈니스 모델을 가지고 있다.3. 사용자에게 가치를 증가시키는 모델을 가지고 있으며, 소비를 위한 서비스만을 제공하지 않는다. DevOps적인 역량과 유지보수 체계를 위한 개발환경의 구성에 대해서 인사이트를 가지고 있는 개발자가 최고의 개발자- 기존물리서버환경에 대한 이해와 가상 컴퓨터 환경에 대한 이해- 호환성에 해당하는 OS와 하드웨어에 대한 지식- 서버의 구축과 설정, 자동화에 대한 통찰력- 가상화 환경에서의 시스템 구성과 노하우- 성능과 ..
백세코딩#개발자 개발자로 산다는것, 그것은 '개발을 즐겁게 하면서 사는 것이다'. 프로그래밍의 기본1. 자료를 선언하기2. 크기를 비교하고 분기하기3. 정해진 자료를 이동하기 소프트웨어 개발의 무한 반복 사이클정해진 명세 -> 지시된 설계 -> 구현 -> 그결과 테스트이러한 과정은 기업용 애플리케이션을 만든 곳이라면 경험하게 될것이다. 2가지 환경이 빠져있음1. 개발자에게 멋진 아이디어를 묻는다.2. 고민할 시간이나 구현할 도구를 만들 수 있도록 한다. 정해진 금액과 목표, 명세가 뚜렷한 기업용 애플리케이션을 만드는 현장이라면 두가지는 무의미하거나 무가치적으로 판단되는 경우가 많다. 내가 생각하는 성공이란?성공은 자신이 정한것을 이루는것. 1. 10년, 20년, 30년 후의 자신의 모습을 상상해보고 정의해봐라.2. 현재..
캡슐화와 정보은닉 캡슐화클래스 혹은 객체라는 개념을 접할 때 가장 먼저 생각나게 하는 용어 가운데 바로 캡슐화 -캡슐화는 관련된 데이터와 함수를 묶는 장치이다. 관련된 데이터와 관련된 함수들을 클래스라는 하나의 캡슐 속으로 그룹화 혹은 묶어주는 장치 또는 매커니즘이다.따라서 캡슐화를 다른 말로 표현할 때 번들링(bundling)이라고도 한다.어떤 개념을 추상화시시켜 표현하는데 있어서 큰 도움이 된다.추상화가 잘되면 될수록 프로그램의 모듈화를 향상시키는 결과가 된다. 기존 절차지향 언어에서도 이러한 캡슐화를 위한 시도로 C언어에서는 구조체나 공용체를 통해 사용하기도 하였다.그러나 이 장치들은 관련된 데이터들을 묶어주는 장치에 불과했다.이로 인해 특정 함수와 관련된 데이터들을 추적한다는 것이 매우 어려웠다.이는 소프트웨어 유..
클래스와 객체 클래스의 개념과 특성 클래스는 명세 장치이다.- 여러 유사 객체들이 공통적으로 갖는 속성이나 행위를 기술하는 명세 장치로 볼 수 있다. 클래스의 특성1.클래스는 고유한 이름을 지닌다.- 특정 도메인에서 클래스가 중복될수 없기 때문에 클래스도 다른 클래스와 구별되기 위한 고유한 이름을 갖는다.- 특정 도메인에서 클래스를 추출하여 표현할 때는 이름이 중복되거나 이름이 다른데 의미가 동일한 클래스가 존재해서는 안된다. 예) 고객클래스와 회원클래스 의미가 동일하기때문에 둘 중 하나만 선택 2.클래스는 속성을 지닌다.- 클래스는 의미 있는 정보 저장소 역할을 하기 위해서 속성을 내포한다.- 속성을 상태변수, 멤버 변수, 멤버 데이터 등으로 표현예) 고객 클래스의 속성으로 '아이디', '비밀번호', '이름' 3. ..
소프트웨어 개발 패러다임과 객체지향 소프트웨어 개발 패러다임패러다임은 바라보는 시각, 뷰, 관점. 소프트웨어 개발 페러다임소프트웨어 개발에 대한 시각 소프트웨어 개발 패러다임의 변화로 소프트웨어의 개발 비용, 품질, 유지보수에 많은 변화를 가져왔고 지속적으로 변화를 가져온다. 구조적 방법론, 정보공학 방법론, 객체지향 방법론, 컴포넌트 기반 방법론, 서비스지향 방법론 절차지향 패러다임소프트웨어 개발에 있는 기능중심, 절차중심의 관점에서 개발하는 방식소프트웨어 공학에서는 이를 구조적 개발방식1970년~1980년 초반까지 소프트웨어 개발이 있어서 주류를 이루었던 패러다임소프트웨어 재사용이나 소프트웨어 유지보수에 있어서 많은 한계점 드러남기능 또는 함수 중심으로 소프트웨어를 개발하기 때문에 데이터들을 국지화(Localization)가 되어 있지..
스프링부트 보안 OAuth2 스프링 부트 OAuth2OAuth2는 피보탈, 구글, 아마존, 페이스북, 트위터 등의 회사에서 채택한 공개 표준 명세이다이들 회사는 크레덴셜(클라이언트ID와 비밀키)에 기반한 액세스 토큰(access token)을 발급하는 식으로 서비스 접근 권한을 부여한다. 리소스 오너Resource Owner(사용자)는 어떤 앱이 자신의 계정에 접근하는 행위를 특정 스코프(읽기 또는 쓰기)로 제한한다.인증서버 Authorization Server는 사용자 신원을 검증한 뒤 앱 클라이언트에 인증 토큰을 발행하고, 리소스 서버는 오직 이 인증 토큰을 통해서만 접근할 수 있게끔 리소스를 보호한다.따라서 앱 클라이언트는 반드시 사용자이름, 비밀번호, 토큰으로 인증을 받아야 리소스에 접근할 수 있다.인증과정은 API로 검증해..
스프링 부트 보안 (예제) 스프링 부트 보안 크로스사이트 스크립팅(cross-site scripting), 인증(authorization), 인가(authentication), 보안세션(secure session), 신원확인(identification), 암호화(encryption) 등 여러 전문 분야를 섭렵하며 보안을 적용하기란 쉬운일이 아니다.스프링 시큐리티 개발팀은 각고의 노력 끝에 서비스 메서드에서 전체 웹애플리케이션에 이르기까지 보안을 쉽게 적용할 수 있도록 길을 열었다.스프링 시큐리티 sping security는 AuthentifactionProvider를 중심으로 특화된 UserDetailsService를 제공하며, LDAP, 액티브 디렉터리(Active Directory), 커버로스(Kerberos), PAM, AO..
스프링부트 웹 개발 (샘플) 스프링부트 웹 개발스프링 프레임워크는 웹 기술을 spring-web, spring-webmvc, spring-websocket, spring-webmvc-portlet 모듈로 지원한다.spring-web 모듈은 멀티파트 파일업로드, (서블릿 리스너를 이용한)스프링 컨테이너 초기화, 웹 애플리케이션 컨텍스트 등 무릇 웹이라면 갖춰야 할 공통 요소를 제공한다.spring-mvc 모듈(웹 서버 모듈)은 스프링 MVC(모델-뷰-컨트롤러) 및 웹애플리케이션용 REST 서비스 구현체를 지니고 있다.두 모듈에는 아주 강력한 JSP 태그 라이브러리, 커스텀 바인딩 및 검증, 유연한 모델 전송, 커스텀 핸들러와 뷰 리졸버 등 다 새로운 기능이 포함되어 있다.스프링 MVC의 핵심은 org.springframework.we..