반응형

개발/개발 공통 27

g

[Linux] shell 자주 쓰는 명령어를 정리해 보자

Linux에서 shell은 명령할 수 있는 인터페이스이다 시스템에서 원하는 동작을 수행하기 위한 사용자 인터페이스는 크게 2가지로 나눌 수 있다. 우리에게 익숙하고 사용자 친화적인 GUI 방식 와 전통적인 심플한 방식의 CLI가 있다. GUI (Graphic User Interface) 우리가 눈으로 보면서 실제로 입력하고 클릭하고 하는 동작들을 수행하는 인터페이스이다. CLI (Command Line Interface) 터미널로 정해진 명령어를 사용자 입력을 통해 받는 인터페이스이며, Linux에서 사용하는 shell 이 여기에 해당된다. CLI 방식은 자주 사용하다 보면 익숙해지지만 처음 사용하거나 익숙해지지 않으면 불편하다. 특히 윈도우 방식과 IDE 위주로 개발했던 개발자라면 리눅스 환경과 CLI..

g

[객체 지향] SOLID 원칙에 대해서 알아보자

객체 지향을 공부하면서 SOLID 원칙을 빼놓을 수 없다. SOLID 원칙에 대해서 공부해 본다. SOLID란 로버트 마틴이 2000년대 초반에 명명한 객체지향 프로그래밍 및 설계의 다섯 가지 기본 원칙을 마이클 페더스가 소개한 것이다. 프로그래머가 시간이 지나도 유지 보수와 확장이 쉬운 시스템을 만들고자 할 때 이 원칙들을 함께 적용할 수 있다. SOLID 원칙들은 소프트웨어 작업에서 프로그래머가 코드가 읽기 쉽고 확장하기 쉽게 될 때까지 소프트웨어 소스 코드를 리팩터링 하여 코드 냄새를 제거하기 위해 적용할 수 있는 지침이다. 1. 단일 책임 원칙(SRP) 모든 클래스는 하나의 책임만 가지며, 클래스는 그 책임을 완전히 캡슐화해야 함을 일컫는다. 클래스가 제공하는 모든 기능은 이 책임과 주의 깊게 부..

g

[객체 지향] 객체 지향 프로그래밍(OOP)에 대해 알아보자

객체 지향(Object oriented) 이란? 우리가 실생활에서 쓰는 모든 것을 객체라 하며, 객체 지향 프로그래밍은 프로그램 구현에 필요한 객체를 파악하고 각각의 객체들의 역할이 무엇인지를 정의하여 객체들 간의 상호작용을 통해 프로그램을 만드는 것을 말한다. 객체는 클래스라는 틀에서 생겨난 실체이다. 따라서 객체 지향 프로그램은 객체와 객체 간의 연결로 되어 있으며 각각의 객체 안에 자료구조와 알고리즘이 들어있는 것이다. 쉽게 말해서 프로그래밍을 할 때, 이 프로그램 내의 구성요소들을 각각 쪼개고 그 요소들끼리 서로 통신하는 개념으로 프로그래밍을 한다고 생각하면 된다. 이것이 절차 지향과의 큰 차이다. 결국 절차지향은 말 그대로, 어떤 순서로 프로그램이 돌아가느냐 의 관점에서 코드를 작성하는 것이고 ..

g

[도서 리뷰] 소프트웨어 장인 책을 읽은 후기

http://www.yes24.com/Product/Goods/20461940 소프트웨어 장인 - YES24 더 나은 개발자가 되어, 더 좋은 코드를 전달하고 싶은 당신을 위하여...이 책에서 풀어낸 소프트웨어 장인정신의 프로페셔널리즘, 기술적 탁월함, 고객 만족은 애자일, 린(lean) 원칙들과 시너지 www.yes24.com 총평 소프트웨어 엔지니어링 관련 업무를 하며 처음으로 접한 책이다. 많은 추천과 후기가 있는 걸 보면 분명히 얻을 수 있을게 많다고 생각해서 정말 진지하게 꼼꼼하게 읽었다. 많은 사람들이 읽었다고 해서 다 맞거나 모두 공감할만한 내용은 아닐 수 있지만 적어도 소프트웨어를 진지하게 바라보기 시작하는 내 입장에서는 많은 내용이 공감되고 와닿았다. 개발을 하다 보면 실제 개발보다는 이..

g

[개발 상식] 프로그래밍 패러다임을 알아보자

프로그래밍 패러다임의 개념과 패러다임 3가지 종류에 대해서 알아보도록 하겠다. 프로그래밍 패러다임 프로그래밍 패러다임은 어떠한 방식으로 프로그래밍을 할지, 프로그래밍 혹은 코드를 바라보는 관점에 대한 고민에서 나온 전략이라고 볼 수 있다. 사람이 프로그래밍을 하고 컴퓨터가 프로그래밍된 대로 돌아가는데, 결국 똑같은 기능을 하더라도 어떻게 프로그래밍을 하느냐에 따라 코드가 천차만별이 될 수 있다. 따라서 프로그래밍이 지향하는 혹은 지양하는 방법들과 프로그래밍할 언어가 어떠한 고민과 철학을 갖고 만들어졌는지에 대한 생각이라고 이해할 수 있다. 대표적으로 절차적, 객체지향, 함수형 프로그래밍이 있다. 1. 절차적 프로그래밍 절차 혹은 순서에 따라 프로그래밍을 하는 방식으로, 어떤 프로시저의 호출을 바탕으로 한..

g

[라이브러리] 정적(static) vs 공유(shared)

정적 라이브러리(Static Library)란? 프로그램 빌드 시에 라이브러리가 제공하는 코드를 실행 파일에 넣어서 빌드하는 방식의 라이브러리를 의미한다. 정적 라이브러리를 사용하여 컴파일하면 링커가 프로그램이 필요하는 부분을 라이브러리에서 찾아 실행파일에 복사한다. 실행파일에 다 들어가기 때문에 실행할 때 라이브러리가 필요 없이 다 포함되어 있다. 장점은 시스템 환경이 변해도 애플리케이션에 아무런 영향이 없고, 완성된 애플리케이션을 안정적으로 사용할 수 있다는 점이다. 반면에 사용하는 모든 오브젝트 코드를 실행 파일에 포함하기 때문에 메모리에 로드되는 애플리케이션 코드 크기가 커진다는 단점이 있다. 리눅스에서는 확장자 a가 붙는다. 공유 라이브러리(Shared Library)란? 어떤 라이브러리가 제공..

g

[개발문화] 데일리 스크럼을 더 잘하기 위한 방법

데일리 스크럼이란? 스크럼 방법론에서 쓰이는 용어로, 날마다 하는 짧은 회의를 뜻한다. 매일 현재 상태를 업데이트하고 조율하는 것 을 의미한다. 다른 애자일 방법론인 XP에서는 스탠드업 미팅이라고 하는 것도 있다. 스탠드업 미팅에서는 회의를 서서한 것이 필수적이다. 데일리 스크럼의 기본 원칙을 보면 아래 세가지 정도이다. 15분 이내로 가능한 짧게 정해진 시간은 없다 어제 무엇을 했는지, 오늘 무엇을 할건지, 막히는 부분/도움이 필요한 부분이 있는지를 이야기한다 이렇게 데일리 스크럼을 잘 활용하면 장점이 많다. 우선 구성원 간에 같은 목표를 향할 수 있다. 매일 같이 서로 어떤 일을 하는지 알 수 있고 정보 공유가 자연스럽게 되면서 함께 일해나가는 느낌이 든다. 두 번째로는 친밀해져서 의사소통이 잘 된다..

반응형