본문 바로가기

issue & tip

(18)
문자열과 날짜 문자열문자 덩어리를 하나의 데이터로 다루는 처리 문자열의 기초지식자바에서는 문자열 데이터를 String 클래스로 다루는 것이 기본기본형인 char를 이용해 1문자씩 다룰수 있지만, 방법이 불편해서 사용하지 않는다.일반적으로 문자열 조작에는 String형을 사용한다. String 클래스는 일반 클래스와 구별되어 특별 취급.new를 사용하지 않고도 인스턴스화할 수 있다. String test = "String 클래스이다."; new 연산자로 선언String test = new String("String 클래스이다."); 하지만 new 연산자로 선언하는 것은 의미도 없고 이중으로 인스턴스를 만들게 된다. String 클래스는 인스턴스의 데이터가 변하지 않는 불변(immutable)클래스이다.String형 데이..
백세코딩#소프트웨어 개발의 기본 소프트웨어 개발의 기본'객체지향'의 원리는 현대의 소프트웨어 개발의 핵심인 유지보수하기 쉽고 유연하게 확장되는 소프트웨어를 만드는데 가장 충실한 기초 역할을 한다. OOP의 기본원칙은'하나의 클래스나 모듈은 하나의 기능을 해야 한다.''가능한 확장성을 고려해서 만들어져야 한다''클래스와 모듈 접근하는 인터페이스는 단일해야 한다.''인터페이스는 하나의 기능과 모듈을 불러야 한다''모듈이나 클래스는 메시지를 통해서 연결되어야지 직접호출하거나 직접 연계되어서는 안된다.' 이러한 원리는 SOLID라는 기본적인 원칙소프트웨어 개발자들은 경험이 풍부해지기 전에 '내가 만든 코드가 재사용되기보다는 선배나 다른 사람이 만들어 놓은 코드를 흉내내기' 때문에 SOLID의 원칙에 대해서는 충분한 연습을 한 다음에 다시 생각..
백세코딩#코드리뷰 코드리뷰개발자에게 코드 리뷰가 어려운 이유 1. 리뷰는 언제나 상호 합의가 된 상황에서 진행되어야 한다.2. 리뷰어의 해당 결과물에 대해서 객관성을 가지고 서로 인지해야 한다3. 개발자 자신의 작업물에 대해서 정말 객관적으로 바라볼 수 있는 작성자가 선정되어야 한다. 소프트웨어 코드는 정량적인 검토와 정성적인 검토를 구분해야 한다.구분이 모호해지면 리뷰는 그 방향성을 상실하게 된다.주목받는 개발 방법론의 추세는 '테스팅'을 주로 하고 있다. SRS와 같은 요구사항에 집중하기 보다는 TDD와 같은 방법으로 완성된 산출물의 품질을 높이는 방법을 주로 사용하고 있다.당장의 성과물을 위해서라면 코드 리뷰보다는 테스팅에 집중하는 것이 더 효율적이다. 빠르게 고속개발하고 테스트를 통해서 버그를 찾은 다음 수정하는 ..
백세코딩 #빅데이터 정보시스템을 다루는 소프트웨어 아키텍트들은 이제 근본적인 데이터의 흐름과 그 가치에 대해서 관여하기 시작했다. 그동안 축적된 경험과 과학적인 판단을 근거로 기업의 정보시스템이 경영진드르이 경영판단 보조수단에서 새로운 사업의 가치와 방향성에 대해서 제시하기 시작했다.데이터 사이언티스트의 시대가 시작됐다. 데이터 사이언티스트?데이터에서 패턴을 찾아내 비즈니스 기회로 만든다라는 목적으로 데이터와 정보를 다루는 사람들이다.그들은 프로그래머이며 통계학자이고 컨설턴트인 사람들이다.빅데이터를 다루는 데이터 사이언티스트들이 이런 통찰력을 갖춘사람으로 성장하려면 기본적으로 IT 기술에 능숙하고 소프트웨어 프로그래밍의 알고리즘에 익숙하며 패턴인식에 대한 경험이 풍부해야 한다.프로그래머가 소프트웨어의 도움을 받아 도달할 수..
백세코딩 #소프트웨어 개발 방법론과 DevOps 객체지향의 개념객체지향이라는 개념은 어느정도 프로그래밍을 한 사람에게 이해가 되는 개념이다.대부분의 개발자 중에는 객체 중심 분석/모델링(OOA/M)에 대해 믿음이 없는 분들도 많다.객체중심이라는 개념은 '소프트웨어의 정적구조'에 무게중심을 두고 서술하고 있기 때문에 동적인 구성과 환경을 기반으로 소프트웨어를 개발하는 분들에게는 이 개념은 의미가 작게 느껴질 수 밖에 없다.그렇다면 소프트웨어 환경에서 '정적'과 '동적' 구조의 차이는 무엇인가?그것은 데이터의 흐름을 중요시하게 여기는 비즈니스 환경이나 서비스 중심의 환경은 대부분 순간적인 데이터 흐름을 중요시 하게 된다.그런 환경을 '정적' 환경이라고 하고 이 환경에서는 OOA/M는 매우 효과적으로 발현된다.하지만, 실시간으로 데이터가 흐르고 게임과 가이..
백세코딩 #개발자(이력과 회사) 소프트웨어 기업의 조건1. 오픈된 생태계를 구성할 수 있는 열린 개발자 문화를 가지고 있어야 하며, 폐쇄적인 자신들의 수익 모델로 수익 대부분을 가지고 가지 않는다.2. 단일 제품이나 단일 서비스로써 상용화된 제품군을 가지고 있으며, 이를 판매하며 수익을 올리는 비즈니스 모델을 가지고 있다.3. 사용자에게 가치를 증가시키는 모델을 가지고 있으며, 소비를 위한 서비스만을 제공하지 않는다. DevOps적인 역량과 유지보수 체계를 위한 개발환경의 구성에 대해서 인사이트를 가지고 있는 개발자가 최고의 개발자- 기존물리서버환경에 대한 이해와 가상 컴퓨터 환경에 대한 이해- 호환성에 해당하는 OS와 하드웨어에 대한 지식- 서버의 구축과 설정, 자동화에 대한 통찰력- 가상화 환경에서의 시스템 구성과 노하우- 성능과 ..
백세코딩#개발자 개발자로 산다는것, 그것은 '개발을 즐겁게 하면서 사는 것이다'. 프로그래밍의 기본1. 자료를 선언하기2. 크기를 비교하고 분기하기3. 정해진 자료를 이동하기 소프트웨어 개발의 무한 반복 사이클정해진 명세 -> 지시된 설계 -> 구현 -> 그결과 테스트이러한 과정은 기업용 애플리케이션을 만든 곳이라면 경험하게 될것이다. 2가지 환경이 빠져있음1. 개발자에게 멋진 아이디어를 묻는다.2. 고민할 시간이나 구현할 도구를 만들 수 있도록 한다. 정해진 금액과 목표, 명세가 뚜렷한 기업용 애플리케이션을 만드는 현장이라면 두가지는 무의미하거나 무가치적으로 판단되는 경우가 많다. 내가 생각하는 성공이란?성공은 자신이 정한것을 이루는것. 1. 10년, 20년, 30년 후의 자신의 모습을 상상해보고 정의해봐라.2. 현재..
Lombok 라이브러리 Lombok 라이브러리는 Java 코드를 컴파일할때 자동으로 추가 메서드를 만들어 컴파일해 주는 라이브러리라고 할 수 있다. Lombok은 설정(표시) 어노테이션을 기준으로 '.class' 파일을 만들 때 getter/setter 등을 자동으로 추가하도록 만들 수 있기 때문에 개발자의 입장에서는 약간의 어노테이션을 추가하기만 하면 된다. Getter/Setter 메서드를 생성하거 toString(), 생성자 함수를 생성하는 등의 일상화된 작업의 반복을 자동화함으로써 개발 시간을 단축할 수 있다. Lombok의 어노테이션 @NotNull Null값이 될수 없다는 것을 명시. NullPointerException에 대한 대비책 @Cleanup 자동으로 close() 메서드를 호출하는 역할 @Getter/Se..