[Python] 함수 인자
·
Language/Python
파이썬으로 작성된 코드를 보다보면 함수 인자에 *args, **kwargs라는 생소한 인자가 들어간다. 이 키워드들이 어떤 것인지, *가 무엇을 의미하는지 확인해본다.packing/unpackingpacking은 여러 인자를 하나의 값으로 묶어주는 기능이다. 함수 인자의 이름 앞에 *를 붙여주면 된다.xdef foo1(*args): print("type", type(args)) print("value", args)​foo1(1, 2, 3, 4)위 코드를 실행하면 아래와 같이 출력된다.xxxxxxxxxxtype value (1, 2, 3, 4)foo1함수의 인자에 1, 2, 3, 4를 전달했으며 함수는 이 값들을 튜플의 형태로 가져온다. 따라서 인자의 갯수에 상관없이 함수를 호출할 수 있다.unpackin..
[C++] Reference(1/2)
·
Language/C C++
C/C++에서는 데이터를 관리하기 위해 기본적으로 두 가지 종류의 저장소를 제공한다. 변수 포인터 : 포인터는 다른 저장소를 가리키는 메모리 주소를 저장한다. 주로 크기가 일정하지 않은 문자열이나 배열 등에 사용한다. C++은 여기에 참조(Reference)라고 하는 특수한 종류의 변수가 존재한다. 참조는 일반 변수의 저장소를 공유하기 위해 만든 실제 변수가 아닌 컴파일러가 인지하는 가상 변수를 말한다. C++의 포인터는 메모리 주소에 직접 접근해서 데이터를 읽고 수정할 수 있다. 이를 통해 비교적 크기가 큰 데이터를 빠리게 처리할 수 있다. 일반 객체지향 언어는 포인터를 제공하지 않는다. 대신 가상 포인터와 가상테이블을 사용하여 필요에 따라 서로 다른 데이터 저장소를 가리킨다. int, float같은 ..
[C++] 클래스 생성자
·
Language/C C++
클래스의 인스턴스를 생성할 때 반드시 생성자가 호출된다. 생성자를 통해 클래스가 어떻게 생성되는지 살펴보자.암시적 생성자와 명시적 생성자객체를 생성하는 방법은 클래스 내 멤버을 어떤 방식으로 초기화하느냐에 따라 호출되는 생성자가 달라지게 된다. 아래 예시 코드를 통해 알아보려 한다.아래와 같은 Point 클래스를 정의해보았다.x#include class Point{public: int x; int y;​ Point() : x(0), y(0) { printf("Point() called!\n"); }​ Point(int x) : x(x), y(0) { printf("Point(int x(%d)) called!\n", x); }​ Point(int x, int y) : x(x), y(y) { printf("..
[Python] Pyenv
·
Language/Python
보통 파이썬 개발환경을 구축하는데 virtualenv를 사용한다. 프로젝트별 설치 패키지를 분리해서 관리하기 위해서이다. 개발하는데 파이썬 버전이 문제가 되서 새로 설치하려다가 pyenv를 통해 파이썬 버전도 관리할 수 있는 것을 봤다. 이것을 사용해서 프로젝트에 파이썬 버전까지 따로 관리를 할 수 있게 됐다.설치설치는 ubuntu18.04, 16.04 모두 확인했다.설치하기 전에 아래의 패키지들을 설치해야한다. 그래야 pyenv를 정상적으로 사용할 수 있다.xxxxxxxxxx$ sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm lib..
[Python] Visdom
·
Language/Python
시각화를 위한 도구인 visdom 사용법을 간단히 정리했다.설치환경 : windows10 , python3.7 설치pip 명령어를 통해 설치할 수 있다.pip install visom 서버 실행설치를 완료한 다음 아래의 명령어를 실행한다.xxxxxxxxxxpython -m visdom.server위 링크로 접속한다.이런 페이지가 나온다. 사용법xxxxxxxxxximport visdomvis = visdom.Visdom()visdom 을 사용하기 위해 위처럼 선언한다.서버가 켜져 있어야 오류 없이 실행된다. texttext를 통해 문자를 띄울 수 있다. 사용법은 아래와 같다.xxxxxxxxxxvis.text("Hello wolrd", env="main")위 코드를 실행하면 웹 페이지에 텍스트가 생긴 것을 ..
[PHP] session
·
Language/PHP
세션(session)은 컴퓨터 과학에서, 특히 네트워크 분야에서 반영구적이고 상호작용적인 정보 교환이며 둘 이상의 통신 장치나 컴퓨터와 사용자 간의 대화나 만남을 의미하는 다이얼로그(dialogue)이다.넓은 의미에서의 세션은 클라이언트가 서버에 접속하여 접속을 종료하기까지를 의미한다. HTTP 프로토콜은 stateless의 특성을 가져 클라이언트 측의 정보를 유지할 방법이 없다. 따라서 클라이언트에 대한 정보를 서버측에 저장하여 요청을 보낸 클라이언트를 식별하는 방법을 사용한다. 이 때 서버측에 저장하는 데이터를 세션이라고도 한다.PHP에서도 다른 웹 프로그래밍 언어와 같이 세션을 이용하기 위한 기능을 제공한다. xxxxxxxxxx# session_test.php​# $_SESSION을 사용하기위해서는..
[PHP] require VS include
·
Language/PHP
PHP에서는 파일을 포함시키는 require와 include 두 가지 키워드가 존재한다. 이 두 가지를 번갈아 가면서 써도 큰 차이를 느낄 수 없다. 언제 require를 사용해야하고, 언제 include를 사용해야 할까?먼저 예제 코드를 작성해 봤다.xxxxxxxxxx# index.php
[PHP] psr4
·
Language/PHP
PHP5에 오토로딩 기능이 추가되었지만 라이브러리를 오토로딩하려면 직접 spl_autoload_register 메소드를 호출하여 일일이 등록해야 한다. 외부 라이브러리를 사용할 경우 일일이 이를 등록하는 것은 만만한 작업이 아니다.PSR-4 는 PSR-0 을 대체하는 새로운 오토로딩 표준으로 다음과 같이 정규화된 클래스 이름(FQCN; Fully Qualified Class Name) 을 규정하고 있으며 이를 준수하여 패키지를 개발할 경우 패캐지 관리자인 컴포저를 통해 손쉽게 의존성 있는 모든 패키지를 로딩할 수 있다.xxxxxxxxxx\(\)*\ 실습테스트하려는 프로젝트 구조는 다음과 같다proj├── composer.json├── index.php└── src └── lib └── Worker.php..