본문 바로가기

개발자 일지120

[파이썬 기초]홈페이지 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.
[리눅스 기초]help와 man -생활코딩 리눅스 강의를 기반으로 정리, 추가 보충 학습 했다. -리눅스의 명령어 help, man을 살펴 본다. -가상머신 프로그램인 오라클 버츄얼박스로 우분투(ubuntu) 12.10을 사용하였다. 중요한 명령어나 옵션들은 숙달되어 외워 사용해야 하거나 구글링으로 찾아 사용할 수 있다. 하지만 좀 더 디테일하게 확인하기 위해 스스로 내부 명령어 메뉴얼을 참고할 수 있다. 리눅스를 잘 다루는 개발자들은 자주 사용할 것 같다. help와 man 명령어 명령어 --help : 명령어에 대한 간단한 관련 메뉴얼이 나온다. 위의 이미지는 보는 것 처럼 mkdir --help를 통해 간단한 메뉴얼을 확인할 수 있다. 상단의 Usage: mkdir [OPTION]... 부분은 명령어를 쓰는 방식 및 명령어의 기능.. 2021. 3. 1.
[리눅스 기초]디렉토리, 파일 관련 명령어 -생활코딩 리눅스 강의를 기반으로 정리, 추가 보충 학습 했다. -리눅스의 디렉토리, 파일에 대한 명령어와 구조를 살펴본다. -가상머신 프로그램인 오라클 버츄얼박스로 우분투(ubuntu) 12.10를 사용하였다. CLI와 GUI 운영체제를 다루는 방식은 CLI(Command Line Interface)와 GUI(Graphic User Interface)로 나눌 수 있다. 대부분 알다시피 윈도우에서 마우스를 이용해 아이콘을 클릭하여 명령을 내리는 방식을 GUI 방식이라고 한다. 리눅스 OS 역시 GUI방식으로 설치가 가능하다. CLI방식은 윈도우 CMD나 리눅스 터미널을 사용하는 방식이다. 리눅스의 경우 터미널에 명령어를 입력하면 쉘(Shell)이 이를 해석하여 커널이 해석할 수 있는 명령어로 변경되어 하.. 2021. 3. 1.
JAVA JVM(Java Virtual Machine)의 개념, 구조, 작동과정 -컴파일된 파일을 실행하는 가상머신인 JVM(Java Virtual Machine)에 대해 알아본다. JVM이란? 컴파일러가 컴파일한 파일을 실행하는 가상 머신이다. '가상'의 머신이기 때문에 하드웨어적인 요소가 아니라 JDK에 포함된 일종의 프로그램이다. 개발자는 인간이 이해 가능한 영어로 자바 문법에 맞게 코드를 java파일로 작성한다. java파일은 컴파일러를 통해 자바 바이트코드로 작성된 class파일로 변환된다. 자바 바이트코드로 변환된 파일은 가상머신인 JVM이 해석할 수 있게 된다. 그렇기 때문에 JVM만 설치되어 있다면 어떤 운영체제(OS)에서도 실행가능하다. 기존의 C++같은 경우에는 컴파일한 파일이 OS에 종속된다. 예를 들어 리눅스기반 OS에서 개발하고 컴파일을 했다면 윈도우에서는 바.. 2021. 2. 27.
[제이쿼리]$('a,b')와 $('a','b')의 차이점 최근 프로젝트에서 $('a', 'b') 문법이 종종 나오고 있는데 해석할 때마다 헷깔릴 때가 있어서 정리한다. $('a','b')라고 쓰면 b개체에 포함된 a개체를 선택한다는 의미이다. $('a, b')로 쓰면 a와 b 개체를 모두 포함한다. head1 head2 headData1 headData2 2021. 2. 23.
[디자인패턴]어댑터 패턴(Adapter Pattern) -디자인 패턴 중 어댑터 패턴에 대해 알아본다. 어댑터 패턴? 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환하는 패턴이다. 인터페이스 호환성이 맞지 않아 같이 사용할 수 없는 클래스를 연관 관계로 연결해서 사용할 수 있게 해주는 패턴이다. 블로그들을 보니 전기 콘센트와 플러그의 예시를 많이 든다. 한국의 가전제품은 220V이다. 110V가 표준인 일본의 제품을 한국에서 사용하기 위해서는 돼지코라는 어댑터가 필요하다. 이런 발상을 기반으로 패턴을 이해하면 도움이 될 것이다. 어댑터 패턴은 클래스방식과 객체방식이 있으며 우선 객체방식으로 예제를 만들었다. 예제 어댑터패턴을 활용한 간단한 예제를 만들어 보았다. 기존의 솔루션(OldSoultion) 이후 새로운 솔루션(NewSo.. 2021. 2. 22.
커널(kernel)과 쉘(shell)에 관하여 -운영체제(리눅스)를 구성하는 두 가지 요소인 커널과 쉘에 대해 알아본다. 커널(kernel)이란? '커널'이란 운영체제(OS)의 두 가지 구성요소 중 하나이다. 커널은 하드웨어를 직접적으로 제어하는 운영체제의 핵심이며 프로세스 관리, 메모리 관리, I/O 시스템 관리, 파일 시스템 관리 등을 수행한다. 흔히 리눅스의 우분투, 센토스 등의 배포판은 리눅스 커널을 기반으로 만들어졌다고 보면 된다. 리눅스 커널을 기반으로 만들어진 배포판들을 흔히 리눅스라고 칭한다. 커널은 리눅스가 부팅될 때 메모리로 로드된다. 쉘(shell)이란? '쉘'이란 운영체제(OS)의 두 가지 구성요소 중 나머지 하나이다. 쉘은 커널을 컨트롤할 수 있으며 커널은 하드웨어를 컨트롤한다. 즉, 하드웨어를 유저가 컨트롤하기 위한 인터페이.. 2021. 2. 22.
[디자인패턴]전략 패턴(Strategy Pattern) -디자인 패턴 중 전략패턴에 대해 알아본다. 전략패턴이란 전략패턴이란 특정 객체의 행위 알고리즘군을 각각 캡슐화하고 필요시에 객체지향 원칙을 위배하지 않고 교환해서 유연하게 사용할 수 있는 패턴이다. 여기서 행위 알고리즘 자체를 '전략'으로 표현하고, 이런 전략을 상황에 맞게 교체해주는 역할을 하는 클래스를 '컨텍스트'라고 표현한다. 컨텍스트는 클라이언트와 전략 사이에서 '접점'역할을 한다. 행위 알고리즘 자체는 인터페이스로 설계하고 각자 캡슐화된 행위로 구현한다. 예시 컴퓨터 백신 인스톨러 A, B가 있다고 가정하며 둘다 네이버백신을 설치하는 프로그램. 추후 요구사항이 B 인스톨러의 프로그램을 V3백신으로 바꿔달라는 요구사항이 들어온 경우 전략패턴으로 샤샤샥 바꾸는 예제 전략패턴 적용 전 예시 pack.. 2021. 2. 20.
DHCP의 개념 및 할당 과정 -DHCP가 무엇인지 알아본다. -DHCP의 동작 과정을 간단하게 살펴본다. 1.DHCP란 Dynamic Host Configuration Protocol의 약자이며 직역하면 '동적 호스트 설정 프로토콜'이다. PC가 고정IP를 사용하는 것이 아니라, 유동IP를 사용할 수 있게 도와준다. DHCP를 통해 클라이언트(ex>내 PC)는 라우터(ex>내 공유기)를 통해 사설IP를 할당 받는데, 이 할당받는 IP는 정해진 IP를 고정으로 할당 받는 것이 아니다. 일정 기간 라우터의 DHCP서버를 통해 '임대'받는 것이다. 즉, DHCP서버에서 특정 IP를 클라이언트들에게 임대해주는 기술이라고 요약할 수 있다. DHCP서버는 라우터에 포함되어 있지만 라우터와 따로 두고 사용하는 경우도 많다고 한다. 2.장점 클라.. 2021. 2. 17.
공인IP와 사설IP의 차이점 -네트워크 기본 상식인 공인IP와 사설IP의 차이점을 구분한다. -공인IP와 사설IP를 변환해주는 NAT에 대해서 간단하게 살펴본다.(자세한 사항은 추후 포스팅 예정) 공인IP와 사설IP란? IP라는 것은 ISP(인터넷 서비스 공급자)가 제공하는 주소이다. 여기서 ISP는 SK, KT, LG U+ 등이 있다. 이 업체들은 우리가 인터넷을 신청하면 IP를 제공하는데 각 신청 당 1개의 IP를 제공한다. 이 IP는 외부에서도 인식 할 수 있는 유일무이한 IP이며 이 IP를 공인IP(public IP)라고 한다. 보통 일반적인 가정에서는 이 공인IP를 공유기(라우터)가 할당 받아서 각각의 스마트폰, 노트북 등에 사설IP(Private IP)로 제공한다. IP확인은 cmd창에서 'ipconfig' 명령어로 확인.. 2021. 2. 16.