개발자 일지129 [리눅스 기초]리눅스 디렉토리 구조 -리눅스의 디렉토리 종류 및 구조에 대해 알아본다. -생활코딩의 리눅스 강의를 바탕으로 학습 및 보충학습하였다. -ubuntu 12.10을 사용하였다. 리눅스에서는 루트 디렉토리(/)를 기준으로 트리형태로 여러 디렉토리가 존재한다. 디렉토리의 종류와 성격마다 명령어, 파일들이 분류되어 있다. 이는 리눅스가 파일시스템표준안(Filesystem Hierachy Standard, FHS)을 따르기 때문이다. FHS에 맞게 명령어와 파일들이 적절한 디렉토리에 잘 정리가 되어 있다. 표준안은 강제성이 없기 때문에 현재 일부 리눅스 시스템은 FHS를 잘 따르지 않는다고 한다. 현재는 자주 안 쓰이는 디렉토리들도 있고 필수적으로 쓰이는 디렉토리들도 있는데 알아야 하는 디렉토리들을 정리한다. /(root) 가장 최상위.. 2021. 3. 18. [파이썬 기초]데이터타입 - list, 기타 컨테이너 타입(튜플,딕셔너리) -파이썬 데이터 타입인 컨테이너 타입 중 하나인 list에 대해 알아보며, 기타 다른 컨테이너 타입도 간단하게 알아본다. -공식 문서와 강의 학습을 함께 하였다. -생활코딩 파이썬 강의를 바탕으로 학습 및 보충학습 하였다. -파이썬은 3.9.2 ver를 사용한다. 파이썬에는 크게 다음과 같은 타입이 있다. 문자열 타입 숫자 타입 : 정수(int), 실수(float), 복소수(complex) 컨테이너 타입 : 리스트(list), 튜플(tuple), 딕셔너리(dictionary) 여기서는 컨테이너 타입에 대해 집중적으로 알아보려고 한다. 리스트(list) 변수 하나에는 하나의 값이 존재할 수 있다. 한 변수에 2개 이상의 값을 담기 위해서는 컨테이너 타입을 사용해야 한다. 여기서는 컨테이너 타입 중 list.. 2021. 3. 16. 깊은 복사(Deep Copy)와 얕은 복사(Shallow Copy)의 이해 -자바에서 객체를 복사하는 두 가지 방법에 대해 알아본다. 디자인패턴 중 프로토타입 패턴을 학습하면서 깊은 복사, 얕은 복사의 개념이 나왔다. 이 기회에 제대로 알아볼 생각으로 글을 쓴다. 대충 알고 있었는데 예시를 작성하며 내부 동작 등을 제대로 파악해보려고 한다. 얕은 복사와 깊은 복사의 개념 얕은 복사(Shallow Copy)란 객체의 실제 값이 아닌 참조값(주소값)을 복사하는 것이다. 반면 깊은 복사(Deep Copy)란 참조값이 아닌 인스턴스를 새로 복사하여 아예 실제값을 복사하는 것이다. 밑의 예제로 설명하는 것이 더 이해가 쉽기 때문에 바로 예제로 들어간다. 얕은 복사(Shallow Copy) 우선 Fruit이라는 클래스를 다음과 같이 만든다. Fruit.java public class Fr.. 2021. 3. 15. [파이썬 기초]open() 함수로 파일 읽기 -파이썬 index.py 내부의 내용을 파일로 따로 만들어 open() 함수로 읽어본다. -생활코딩 파이썬 강의를 기반으로 학습 및 보충학습하였다. -파이썬은 3.9.2 ver를 사용한다. 현재 index.py라는 파일은 다음과 같다. #!Python print("Content-Type: text/html") print() import cgi form = cgi.FieldStorage() #a태그 클릭시 id값에 따른 pageId 분기처리 if 'id' in form: pageId = form["id"].value else : pageId = 'welcome' print(''' WEB HTML CSS JavaScript {title} The World Wide Web (abbreviated WWW or .. 2021. 3. 15. [파이썬 기초]제어문 - 조건문(if)과 논리연산자(and,or) -파이썬에서 조건에 따라 명령을 해석하는 조건문에 대해 알아본다. -논리연산자 and,or에 대해 알아본다. -생활코딩 파이썬 강의를 기반으로 학습 및 보충 학습하였다. -파이썬은 3.9.2 ver를 사용한다. 조건문 사용 방법 및 예제 조건문이란 조건에 따라 원하는 코드를 수행할 수 있도록 해주는 문법이다. Java 등의 언어에서 그렇듯이 파이썬도 if가 기본적인 조건문 명령어이다. 차이점은 else if인데 else if는 elif라고 표현한다. 예제를 보면 더 쉽게 이해된다. 예제는 아이디가 'kim'이면 Hello Kim을 출력하고 kim이 아니면 Who are you?를 출력하는 간단한 프로그램이다. 우선 입력값을 받는 방법에 대해 먼저 알아야 한다. 다음과 같이 사용한다. user_id = i.. 2021. 3. 14. [파이썬 기초]데이터타입-Boolean다루기 -파이썬에서 Boolean 타입에 대해 알아본다. -생활코딩 파이썬 강의를 학습 및 보충 학습하였다. -파이썬은 3.9.2 ver를 사용한다. Boolean 문법 사용방법 파이썬 역시 True,False 등의 불리언(Boolean) 타입이 있다. 사용법은 다음과 같이 한 번에 정리하였다. #비교 연산자(Comparision operator) print(1==1) #True print(1 파이썬 – os.path 모듈 ◎ os.path는 파일 경로를 생성 및 수정하고, 파일 정보를 쉽게 다룰 수 있게 해주는 모듈. os.path.abspath(path) 현재 경로를 Prefix로 하여 입력받은 경로를 절대경로로 바꿔서 반환합니다. >>> abspath('tmp' devanix.tistory.com 위 블로.. 2021. 3. 14. [리눅스 기초]쉘 스크립트(Shell Script) 개념 및 사용법, 컴파일 언어와 인터프리터 언어의 차이점 -리눅스의 쉘 스크립트에 대해 알아본다. -생활코딩의 리눅스 강의를 바탕으로 학습 및 보충 학습하였다. -ubuntu 12.10을 사용하였다. 쉘 스크립트란? 쉘 스크립트(Shell Script)는 쉘로 하는 프로그래밍이라고 볼 수 있다. Java나 C언어 처럼 조건문, 반복문 등의 일반적인 프로그래밍 문법을 사용할 수 있다. 그러나 컴파일 방식이 아닌 인터프리터를 통한 스크립트 방식이라는 차이점이 있다. 컴파일 언어와 인터프리터 언어의 차이점을 대충 알고 있어서 이 기회에 한 번 정리해본다. 컴파일 언어 스크립트 언어 컴파일러를 거쳐서 기계어로 번역한 후 한 번에 실행(번역 후 실행) 인터프리터가 코드를 한줄 한줄 해석하며 실행(번역하며 실행) 컴파일을 하기 위해 변수 선언 등의 제약사항이 많음 변수를.. 2021. 3. 14. [리눅스 기초]I/O Redirection 개념 및 사용법 -리눅스의 I/O Redirection의 개념과 사용법을 알아본다. -생활코딩의 리눅스 강의를 바탕으로 학습하였다. -ubuntu 12.10을 사용하였다. I/O Redirection이란? 직역하는대로 Input/Output의 재방향(화)이다. 입력과 출력의 기본적인 방향을 바꿔 입력값을 모니터 출력(기본출력)이 아닌 파일에 출력하여 저장하거나 파일값을 출력하는 등 입출력 방향을 재설정할 수 있다. 리눅스의 기본 입출력은 다음과 같다. 표준입력(stdin: 키보드) 표준출력(stdout: 모니터) 표준에러(stderr: 모니터) 즉, 기본적으로 키보드의 표준입력값은 모니터에 출력된다. 또한 에러 역시 모니터에 기본적으로 출력된다. I/O Redirection 명령어를 사용하면 이런 표준값들을 변경하여 다.. 2021. 3. 12. [파이썬 기초]URL 쿼리스트링(Query String) 가져오기 -URL의 쿼리스트링(Query String) 값을 가져오는 방법을 알아본다. -생활코딩의 파이썬 강의를 바탕으로 학습하였다. -파이썬은 3.9.2 ver를 사용한다. 쿼리스트링이란? URL의 뒤에 입력 데이터를 함께 제공하는 가장 단순한 데이터 전달 방법이다. 웹개발에서 데이터를 요청하는 방식 중 대표적인 것이 GET방식과 POST방식인데, 주로 GET방식으로 데이터를 요청할 때 쓰이는 방법이다. URL주소뒤에 물음표(?)를 붙이고 key1=value1&key2=value2...방식으로 데이터를 요청한다. 예를 들어 다음과 같은 URL을 가정해보자. https://roadofdevelopment.tistory.com?category=python&category=1 이 경우라면 category=pytho.. 2021. 3. 12. [파이썬 기초]홈페이지 CGI 구현하기 -웹사이트를 CGI를 연동하여 구현한다. -생활코딩의 파이썬 강의를 기반으로 학습하였다. -파이썬은 3.9.2 ver를 사용한다. 단순한 웹사이트를 CGI를 이용하여 프로그래밍적으로 다룰 수 있는 웹애플리케이션을 구현해본다. htdocs디렉토리에 index.py 파일을 만들었다. 이 상태에서 그냥 127.0.0.1/index.py로 접근하면 파이썬 포맷팅 에러가 발생하니 최상단에 #!Python이라는 시작 주석을 넣어준다.(윈도우 기준이며 리눅스는 다름) 이후 다시 127.0.0.1/index.py로 접근하면 여전히 Internal Error가 발생하지만, 에러 로그의 내용이 바뀌어 있다. 에러 내용은 End of script output before headers라고 나온다. 참고로 에러 로그는 C:\.. 2021. 3. 10. [파이썬 기초]데이터타입-숫자,문자열 다루기 -파이썬 데이터타입 숫자,문자열을 다루는 여러 방법을 학습한다. -생활코딩의 파이썬 강의를 기반으로 학습하였다. -파이썬은 3.9.2 ver를 사용한다. 숫자 잘 정리된 것이 있어서 가져와봤다.(출처는 맨 아래 명시) a = 10, b = 20, c = 3 이라 가정한다. + 더하기 a + b = 30 - 빼기 a - b = -10 * 곱하기 a * b = 200 / 나누기 b / a = 2.0 % 나머지 b % a = 0 ** 제곱 a ** c = 1000 // 몫 a // c = 3 문자열 기본 #기본적인 문자열 출력 print('Hello world') print("Hello world") #escape 사용 print("Hell'o' \"w\"orld") #newline1 print('H') pr.. 2021. 3. 10. [리눅스 기초]CLI 개념 및 사용 이유, 다중명령어(세미콜론,파이프라인 등) -리눅스 CLI 개념 및 사용하는 이유에 대해 알아본다. -다중명령어인 세미콜론(;)과 파이프라인(|)을 알아본다. -생활코딩 리눅스 강의를 기반으로 학습 및 보충학습하였다. CLI란? Command Line Interface의 약자이다. 명령어 기반의 인터페이스로, 명령어를 내려 유저와 컴퓨터가 상호작용하는 방식이다. 반대까지는 아니지만, 다른 방식의 인터페이스가 그 유명한 GUI(Graphic User Interface)이다. GUI는 마우스 등의 입력장치를 통해 그래픽적으로 컴퓨터를 사용하는 방식이다. 리눅스는 GUI,CLI 모두 사용할 수 있지만 CLI를 더 많이 쓴다고 한다. 특히 서버 운영을 위한 리눅스는 CLI방식으로 많이 이용한다. GUI 방식은 그래픽을 이용하는 만큼 리소스 낭비가 있기 .. 2021. 3. 9. [디자인패턴]싱글톤 패턴(Singleton Pattern) -디자인패턴 중 싱글톤패턴에 대해 학습한다. 싱글톤패턴이란? 싱글톤패턴이란 객체를 하나만 생성하여, 이후 생성된 하나의 객체만을 참조하여 사용하는 패턴이다. new 연산자로 직접 인스턴스를 생성하지 못하게 하고, 인스턴스를 생성할 수 있는 static method를 만들어 이를 통해 인스턴스를 생성한다. 이 method를 여러번 사용하여도 매번 인스턴스가 새로 생성되어 heap 메모리에 올라가는 것이 아니라, 처음 호출시 단 한번만 메모리에 올라간 후 계속해서 그 인스턴스를 사용한다. 예제 학습 package Singleton; public class Singleton { //static method를 통해 접근해야 하기 때문에 인스턴스를 담을 변수를 static 변수로 선언한다 private stati.. 2021. 3. 8. [파이썬 기초]웹서버 및 파이썬 설치, CGI 연동 -웹서버와 파이썬을 설치하는 방법을 간단히 정리한다. -CGI로 파이썬과 웹서버를 연동하는 방법을 학습한다. -생활코딩의 파이썬 강의를 기반으로 학습하였다. -파이썬은 3.9.2 ver를 사용한다. 웹서버 설치 웹서버로 사용하기 위한 bitnami WAMP라는 것을 설치해야 한다. java와 톰캣 등만 사용하다보니 생소한 용어 및 프로그램들이 많이 나와서 차근차근 정리해야겠다. bitnami WAMP란 bitnami라는 오픈소스 통합 소프트웨어 번들을 제공하는 기업에서 제공하는 통합 솔루션이다. WAMP는 Window, Apache, Mysql, Php의 약자라고 한다. 이 것들을 한 번에 설치, 사용할 수 있는 프로그램이다. bitnami.com/stack/wamp WAMP Bitnami WAMP St.. 2021. 3. 8. [개인적인 포스팅]파이썬을 시작 하는 이유 Java 개발자이고 아직 Java도 고수가 아니기 때문에 새로운 언어를 배우려는 생각은 하지 않았다. 괜히 이곳저곳 걸터놓은 잡(?)한 개발자가 되기 싫었던 것도 있었다. 하지만 이제 나중에 이직을 위한 코딩테스트를 준비해야겠다는 생각을 했고, 여기서 유리하거나 많이 쓰이는 언어들을 검색해본 결과 파이썬,C++이 많이 쓰인다는 것을 알았다. 그래서 파이썬과 C++중 고민을 많이 했다. 알고리즘 테스트 목적 자체가 쓰는 언어가 무엇인지가 아니라 어떤 문제해결능력을 가졌는지 보는 것이기 때문에 사실 도구는 그렇게 중요하지 않다는 의견이 많았다. 그러나 Java는 정말 많이 안 쓴다는 의견이 많아서 결국 고민 끝에 파이썬을 공부하기로 결심했다! C++을 공부할까도 생각했는데, C++이 아닌 파이썬을 선택한 이.. 2021. 3. 7. [디자인패턴]팩토리 메소드 패턴(Factory Method Pattern) -디자인 패턴 중 인스턴스 생성 여부를 팩토리 클래스에서 결정하는 팩토리 메소드 패턴을 알아본다. 팩토리 메소드 패턴이란? 인스턴스 생성을 팩토리 클래스라는 인스턴스 생성 전용 클래스를 만들어 필요에 맞게 인스턴스를 생성하는 방식이다. 인스턴스를 사용하는 클라이언트 및 어플리케이션 쪽에서 직접 생성하는 것이 아니라, 인스턴스를 생성하는 구체적인 클래스를 이용하여 따로 생성하는 것이다. 이렇게 하면 인스턴스 생성에 대한 내용이 바뀌더라도 팩토리 클래스만 수정하면 되기 때문에 객체지향적으로 설계할 수 있고 클래스 간의 결합도가 낮아져서 유지보수에도 효율적이다. 예제 내용 예제는 나이에 따른 처방 시스템을 변경하는 예제이다. 나이에 따라 baby, children, adult, oldman 타입으로 구분하여 .. 2021. 3. 7. [리눅스 기초]다운로드 방법 - wget, git clone -리눅스에서 링크를 이용하여 다운로드 받는 방법을 알아본다. -혹시 wget,git clone을 알기 위해 오신 분이라면, 이번 포스팅은 작동 안 되는 부분 중 미해결 부분들이 많아서 다른 블로그를 참고하는 것이 더 좋을 것 같습니다. 정리 목적으로 포스팅한 것이며 추후 해결된 부분은 다시 업데이트할 예정입니다.리눅스에서 파일을 다운로드 받는 방법은 여러 방법이 있는 것 같은데 그 중 2가지를 소개한다. 잠깐 전에 포스팅한 apt-get install과 차이점이 헷깔렸는데, apt-get install은 리눅스 전용 기본 패키지들을 다운로드 받는 것이고 아래 소개하는 wget, git은 일반적인 파일들(리눅스와 관련여부 상관없이)을 다운로드 받는 것으로 보인다. wget url주소 : url주소로 다운로.. 2021. 3. 7. [리눅스 기초]패키지 매니저(Package Manager) -생활코딩 리눅스 강의를 기반으로 정리, 추가 보충 학습 했다. -리눅스에서 새로운 소프트웨어 등을 설치할 수 있는 패키지 매니저의 개념과 명령어 등에 대해 알아본다. -가상머신 프로그램인 오라클 버츄얼박스로 우분투(ubuntu) 12.10을 사용하였다. 패키지 매니저란? 리눅스에서 소프트웨어를 다운로드 및 업데이트 받을 때 패키지 매니저를 사용한다. 패키지 간에 서로 필요한 관계를 의존성(dependency)라고 하는데, 패키지 매니저는 이러한 의존성 관계 시스템이라고 볼 수 있다. 일종의 앱스토어라고 볼 수 있다. 리눅스보다 nodejs를 먼저 배웠는데 nodejs의 NPM(Node Package Manager)도 이러한 시스템을 모티브로 만들어진 것 같다. 참고로 mkdir, ls 등의 명령어는 기.. 2021. 3. 7. [디자인패턴]템플릿 메소드 패턴(Template Method Pattern) -디자인패턴 중 템플릿 메소드 패턴을 알아본다. 템플릿 메소드 패턴이란? 다른 디자인패턴에 비해 비교적 간단한 패턴 같다. 참고한 YABOONG님 블로그에 소개된 GOF 정의를 소개하자면, Defines the skeleton of an algorithm in a method, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithms structure. 라고 정의되어 있다. 슈퍼클래스의 한 메소드에 알고리즘 뼈대를 정의하고 서브클래스에 몇단계들을 맡긴다. 템플릿 메소드(뼈대를 정의한 메소드)는 서브클래스가 알고리즘 .. 2021. 3. 3. [리눅스 기초]파일 편집(nano,vi) 이용하기 -생활코딩 리눅스 강의를 기반으로 정리, 추가 보충 학습 했다. -리눅스 문서 편집기 중 하나인 nano,vi 사용법을 익혀본다. -가상머신 프로그램인 오라클 버츄얼박스로 우분투(ubuntu) 12.10를 사용하였다. 리눅스에서의 파일 편집 리눅스에서는 메모장, 워드패드 같은 파일 편집기가 존재하는데 nano, vi, vim 등 많은 편집기들이 존재한다. nano는 가장 기본적인 편집기로 최소한의 기능만을 갖고 있다. vi는 nano보다 좀 더 다양한 기능을 갖고 있다. 그리고 vim은 'vi improved'로 UNIX 기본 편집기 vi의 업그레이드 버전이라고 보면 된다. 리눅스는 vim만 설치되어 있어서 vi 명령어와 vim 명령어 모두 vim을 실행한다. 실습은 nano로 진행하려고 한다. nano.. 2021. 3. 2. 이전 1 ··· 3 4 5 6 7 다음