본문 바로가기

전체 글

(611)
[C++] -> 와 . 의 차이
[Linux] gcc컴파일 옵션 [gcc 컴파일] 1) gcc 파일명(*.c) : Default로 out 파일이 생성된다. (ex a.out) 2) gcc -c 파일명(*.c) : 오브젝트 파일을 생성한다. 3) gcc -c 오브젝트_파일명(*.o) 파일명(*.c) gcc -o 실행파일명(*.out) 오브젝트_파일명(*.o) 4) gcc -o 실행파일 파일명(*.c) : 실행 파일을 만든다. (3번을 한줄로...) [gcc 옵션] 1. -Wall 옵션 : 모든 모호한 코딩에 대해서 경고를 보내는 옵션 2. -W 옵션 : 합법적이지만 모호한 코딩에 대해서 경고를 보내는 옵션 3. -W -Wall 옵션 : 아주 사소한 모호성에 대해서도 경고가 발생 4. O2 옵션 : 최적화 레벨 2로 설정. (대부분의 최적화를 시도) 5. -E 옵션 : ..
[C&C++] #include 기본 포함 경로, ""와 <> 차이 #include 전처리기에서 의 기준 위치는? : C 언어 관련 전체 목차 http://blog.naver.com/tipsware/221010831969 1. C 프로젝트에서 include 기준... blog.naver.com
[C++] enum class 어떻게 보면 enum값이 암시적 형변환이 되어서 int 와 비교가 가능하다는 것은 이점으로 보일 수 있지만, 프로그래머가 예상하지 못한 휴먼 에러를 발생할 수 있습니다. enum class를 도입함으로써 더이상 int 로 암시적 형변환이 되는게 불가능해졌습니다. 이는 기존의 enum 암시적 형변환을 유용하게 사용하셨던 분들께는 안좋은 소식일 수 있지만. 이렇게 까다롭게 열거자들의 형식이 강력하게 제한된다는 점이 우리 개발자들이 만들 수 있는 휴먼에러의 위험성을 줄일 수 있다는 이점이 존재합니다. 이제 명확하게 명시적 형변환을 통해서 열거자를 비교해야 합니다. [C++] enum class (scoped enum) 에 대해서 안녕하세요. BlockDMask 입니다. 오늘은 C++11에서 추가된 enum c..
[C++] 네임스페이스(namespace) 란? 네임스페이스가 뭔지 알기 전에 아주 간단한 Hello World 예제를 살펴봅시다. C++에서 Hello World 를 찍어내려면 와 같이 입력하면 됩니다. C를 미리 공부하셨다면, C에서의 HelloWorld 예제랑 차이점을 몇가지 찾아낼 수 있을 것이고 이런 질문을 하겠죠.. ※ 일단, 헤더파일부터 다르네요. => 그거야 사용하는 함수가 다르니까 헤더파일이 다른 것이겠죠? C 언어에서는 printf 함수를 사용했다면, C++ 에서는 cout이라는 함수를 사용합니다. cout 함수를 사용하기 위해 "iostream"(input/output stream 이라는 뜻입니다.) 헤더파일을 인용한 것입니다. ※ 엥? 그렇다면 using namespace std; 는 뭐죠? 처음 보는 건데? => 이 질문을 받기..
[Linux] 파일속 문자열 찾기 리눅스 파일 찾기, 파일속 문자열 찾기 1. 리눅스 파일명으로 검색하는법. 사용법 find [찾을위치] -name [파일명] 예) 최상위 폴더부터 하위로 'apache'로 시작하는 파일 찾기. find / -name 'apache*' 예) usr 폴더부터 하위로 'apa'로 시작하는 파.. overcode.tistory.com
volatile 변수 volatile 변수 변수를 선언할 때 앞에 volatile을 붙이면 컴파일러는 해당 변수를 최적화에서 제외하여 항상 메모리에 접근하도록 만듭니다. volatile로 선언한 변수는 사용할 때 항상 메모리에 접근합니다. 즉, 이 변수는 언제든지 값이 바뀔 수 있으니까 항상 메모리에 접근하라고 컴파일러에게 알려주는 것입니다. 예를 들어 다음과 같은 반복문이 있습니다. 컴파일러는 이 코드를 최적화하여 while 반복문을 없애버리고 i에 그냥 10을 할당해버립니다(Visual Studio의 /O2 옵션, GCC의 -O3 옵션). 대략 이런 모습이 됩니다(어셈블리까지 설명하지 않고 C 코드로 대신 설명했습니다). 여기서 i를 volatile로 선언하면 반복할 때마다 항상 i의 메모리에 접근해야 하므로 컴파일러는 ..
[Linux] gcc -o 컴파일 과정
[Spring] Spring 설치 https://jerryjerryjerry.tistory.com/64?category=280350 [Spring] Spring 설치방법, 톰캣 서버 연결, 디렉토리 구조 * Spring 이란?에 대한 포스팅 : http://jerryjerryjerry.tistory.com/62 * Spring 설치 방법 1. 첫번째 설치방법으로는 이클립스 안에서 STS 플러그인을 설치하는 방법이 있다. 2. 두번째 설치방법으로는 이클립.. jerryjerryjerry.tistory.com
[Spring] 스프링, 스프링 프레임워크(Spring Framework) 1. 스프링이란? 스프링프레임워크(Spring Framework) - 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 스프링(Spring)이라고도 불린다. - 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공한다. - Framework : 개발할 때 설계 기본이 되는 뼈대나 구조 / 환경 (문제 영역을 해결한 재사용, 확장 가능한 라이브러리.) 프레임 워크는 자주 쓰일 만한 기능들을 한데 모아 놓은 유틸(클래스)들의 모음(집합) - 설계의 기반이 되는 부분을 기술한 확장 가능한 기반 코드와 사용자가 이 코드를 자기 입맛대로 수정, 확장하는데 필요한 라이브러리 이 두가지 요소가 통합되어 제공되는 형태이다. - 사용자가 이 기반 코드를 이용해 일정 수준 이상의 품질을 보장받는 코드를, 비교적..
OSI 7계층 > [LAYER 4] 전송 계층 > PORT 1. PORT(포트), 넌 누구니? 포트는 운영 체제 통신의 종단점이다. 이 용어는 하드웨어 장치에도 사용되지만, 소프트웨어에서는 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위이다. 사용법 : URI 문법에 의해서 사용 및 표기할 수 있으며, IP 주소와 함께 표기하는 예는 다음과 같다. ftp://000.000.000.000:21 여기서 000.000.000.000은 IP 주소를 나타내며 : 다음의 21이 포트 번호를 의미한다. 2. PORT(포트), 언제 사용될까? 포트(port)는 보통 항구나 공항(airport)을 나타냅니다. 이러한 항구와 공항은 외부세계와 접속할 수 있는 관문이 됩니다. 컴퓨터에서도 마찬가지입니다. 컴퓨터에서의 포트(port)란 외부의 다른 장비와 접속하기 위한 플러그와..
Debug mode, Release mode, Assert Debug mode 와 Release mode -Visual studio에서 Complie 모드로는 debug 모드와 Release 모드로 나눌 수 있다. - debug 모드 : 실행 파일에 디버그와 관련된 디버깅 정보를 삽입하여 디버깅을 효율적으로 할 수 있도록 도와준다. 프로젝 gatsbyv.tistory.com 85.21 assert 사용하기 assert 매크로는 assert.h 헤더 파일에 정의되어 있으며 정해진 조건에 맞지 않을 때 프로그램을 중단합니다. 즉, assert에 지정한 조건식이 거짓(false)일 때 프로그램을 중단하며 참(true)일 때는 프로그램이 계속 실행합니다. assert(표현식) 단, NDEBUG 매크로가 정의되어 있으면 assert는 무시됩니다. 그러므로 Visual S..
크로스 컴파일(cross compile) 크로스 컴파일러(cross compiler)는 컴파일러가 실행되는 플랫폼이 아닌 다른 플랫폼에서 실행 가능한 코드를 생성할 수 있는 컴파일러이다. 크로스 컴파일러 툴은 임베디드 시스템 혹은 여러 플랫폼에서 실행파일을 생성하는데 사용된다. 이것은 운영 체제를 지원하지 않는 마이크로컨트롤러와 같이 컴파일이 실현 불가능한 플랫폼에 컴파일하는데 사용된다. 이것은 시스템이 사용하는데 하나 이상의 플랫폼을 쓰는 반가상화에 이 도구를 사용하는 것이 더 일반적이게 되었다. A 머신(host) 에서 컴파일러를 돌려서 B 머신(target) 에서 동작하는 바이너리를 만드는 것을 크로스 컴파일이라고 합니다. 이때 사용하는 컴파일러가 크로스 컴파일러 입니다. 예를들어, 맥북에 안드로이드 스튜디오를 설치하고 소스코드를 빌드한 ..
Cross entropy의 이해, 사용 방법(Categorical, Binary, Focal loss) 이 글에서는 여러 가지 클래스를 분류하는 Classification 문제에서, Cross entropy를 사용하는 방법와 원리를 알아봅니다. 1. Tasks 우선, 두가지 문제를 봅시다. 1-1) Multi-Class Classfication 각 샘플(이미지)은 클래스 C 중 하나로 분류될 수 있습니다. 해는 0번, 즉 [1 0 0] (원핫인코딩), 달은 1번, [0 1 0], 구름은 2번, [0 0 1] 으로 분류될 수 있다는 말입니다. CNN은 s(scores) 벡터를 출력하고, one hot 벡터인 타겟(ground truth) 벡터 t와 매칭이 되어 loss값을 계산할 것입니다. 즉, Multi-Class Classification은 여러 샘플(이미지)에서 C개의 클래스 중 하나의 클래스로 분류하..
[Keras] Dense, Fully connected Layer 누구나 이해할 수 있는 딥러닝 - cs231n 5강 (Convolutional Neural Networks, CNN) - cs231n 5강의 내용을 정리한 글입니다. - 최대한 쉽게, cs231n 강의를 스스로 다시 이해하며, 처음 딥러닝을 공부하는 사람들도 쉽게 이해할 수 있게 정리해보았습니다. - 저도 초보인지라 틀리는 cding.tistory.com 신경망 신경망은 위의 그림에서 input -> activation function -> output 연산이 되고 output이 새로운 input이 되는거라고 생각하면 됩니다. 신경망의 기본 함수 형태는 아래와 같습니다. y = f(Wx+b) f() : 활성화 함수 W : 가중치 x : input data y : output data 기본신경망 만들기 t..
[Keras] Sequential model 시작하기 1. 케라스 Sequential 모델 시작하기 2. 입력 형태 지정하기 3. 컴파일 4. 학습 1. 케라스 Sequential 모델 시작하기 2. 입력 형태 지정하기 만들어진 모델은 입력 형태에 대한 정보를 필요로 합니다. 때문에 Sequential 모델의 첫 번째 레이어는 입력 형태에 대한 정보를 받습니다. 두 번째 이후 레이어들은 자동으로 형태를 추정할 수 있기 때문에 형태 정보를 갖고 있을 필요는 없습니다. 형태 정보를 전달하기 위한 방법은 다음과 같습니다. 정수형 또는 None으로 구성된 형태 튜플(shape tuple)의 input_shape 인자를 첫번째 레이어에 전달합니다. 여기서 None은 음이 아닌 어떠한 정수를 받을 수 있음을 의미합니다. 참고로 input_shape에는 배치 차원은(b..
Tensorflow vs Keras / 딥러닝 프레임워크 keras와 tensorflow 차이점 ​ keras는 using tensorflow backend 라고 한다. 케라스는 텐서플로우를 백엔드로 사용하고 있다. keras는 tensorflow보다 사용자 입장에서 친말한 프레임워크이다. keras의 내부 모듈는 tensorflow를 기반으로 사용할 수 있다. ​ keras VS tensorflow는 사과 VS 바나나의 관계가 아니다. ​
Tensorflow vs Keras
[python] 설치된 패키지 버전 확인 [python] 설치된 package 버전 확인 pip로 설치된 package 목록을 보기 위해서는 pip에 freeze 옵션을 사용합니다. freeze에 대한 옵션 설명은 아래와 같습니다. freeze Output installed packages in requirements format. 실제로.. jybaek.tistory.com
[Keras] set_image_dim_ordering Versions: Keras - 2.3.1 TensorFlow - 1.14
[Jupyter Notebook] 가상환경 Kernel 연결하기 jupyter notebook 시작과 설정 설명 Jupyter Notebook에 가상환경 Kernel 연결하기 목차 1. 아나콘다 가상 환경 만들기 아나콘다에 가상환경을 구성하도록 합니다. tf2.0 이라는 이름을 가진 파이썬 가상 환경을 만들었습니다. conda create -n tf2.0 python 자세한 내용은 이전 글을 통해 chancoding.tistory.com
[Jupyter notebook] 단축키 Command Mode ( press Esc to enable) shift-Enter : run cell, select below Ctrl-Enter : run cell Alt-Enter : run cell, insert below Y : to code M : to markdown B : insert cell below X : cut selected cell C : copy selected cell Shift-V : paste cell above V : paste cell below Z : undo last cell deletion D,D : delete selected cell Shift-M : merge cell below Edit Mode ( press Enter to enable) Shift-Ta..
[Jupyter notebook, anaconda]ModuleNotFoundError: No module named 'tensorflow' Jupyter Notebook에 가상환경 Kernel 연결하기 [텐서플로우] ModuleNotFoundError: No module named 'tensorflow' 오류 해결 방법 단일 응용 프로그램이 아닌 경우에는 환경 설정이 제일 어려운 일입니다. 동일한 방법으로 했는데 왜 난 안될까? 포기했다가 다시 설치하면 되는 경우도 있고 이것 저것 다 따라해서 뭐때문에 copycoding.tistory.com
anaconda 기본 명령어
anaconda 가상환경(Virtual Environment)은 앞서 말씀드린대로 python을 개발할 때 필수라고 할 수 있습니다. 저도 Android 개발만 할 때는 가상환경에 다소 생소했습니다. 하지만, python을 다루게 되면서 가상환경이 왜 필요한지에 대해 깨닫게 되었습니다. 가상환경(Virtual Environment)이란? 가상환경은 말 그대로 가상의 개발 환경을 만들어 주는 것입니다. 들어 보셨을지는 모르겠지만, 가상머신(Virtual Machine)을 이용해 os를 가상으로 올려서 윈도우 환경이나 리눅스 환경을 만들어 개발을 하는 경우가 있습니다. tensorflow라는 패키지(package)를 import해서 사용하고 있습니다. 그럼 왜 그냥 설치해서 사용하면 되지, 굳이 가상환경을 만들어서 새로 패..
[CNN] lenet-5 LeNet은 CNN을 처음으로 개발한 얀 르쿤(Yann Lecun) 연구팀이 1998년에 개발한 CNN 알고리즘의 이름이다. original 논문 제목은 "Gradient-based learning applied to document recognition"이다. 우선 LeNet-5의 구조를 살펴보자. 그림1에서 볼 수 있듯이 LeNet-5는 인풋, 3개의 컨볼루션 레이어(C1, C3, C5), 2개의 서브샘플링 레이어(S2, S4), 1층의 full-connected 레이어(F6), 아웃풋 레이어로 구성되어 있다. 참고로 C1부터 F6까지 활성화 함수로 tanh을 사용한다. [CNN 알고리즘들] LeNet-5의 구조 LeNet-5 => https://bskyvision.com/418 AlexNet => ..
ImageNet Alexnet Resnet VGG Lenet GoogLenet YOLO
Jenkins, Docker, AWS 처음에는 Jenkins 를 단독으로 설치하려고 하였으나, 이참에 Docker 를 이용해서 자동화된 테스트까지 돌리고 싶어서, Docker 위에 Jenkins 를 설치하기로 마음 먹었다. Docker Docker 는 환경의 구성을 Image 로 만들어 두고 이를 Container 를 이용해 항상 동일한 환경을 제공해주는 Platform 이다. 여기서 Image 는 세팅 환경이고, Container 는 실행 환경이라고 볼 수 있다. Image 로 Jenkins 를 세팅하고, Container 에서 Jenkins 를 구동한다. Docker 를 이용해 Jenkins 를 세팅하게 되면, Docker 내부의 Docker 를 만들어서 일정한 테스트 환경을 유지하는데 사용할 수 있다. AWS CLI AWS CLI 는 ..
backend 이해하기 사용한 서버 목록 - WAS 서버 (자바+스프링) 3대 - Mysql 서버 2대 (Master, Slave) - Redis 서버 1대 (세션,캐시) - Nginx 웹서버 1대 - Jenkins 서버 1대 - Vault 서버 1대 - Ngrinder 서버 1대 - Pinpoint 서버 1대 프로젝트 서버 구조에 대한 전반적인 설명 - 사용자는 Nginix IP로 Http 요청을 보냅니다. - Nginix의 Reversed Proxy 기능을 통해 WAS서버 3대에 부하를 분산시킵니다. - WAS서버는 데이터 접근을 위해 Mysql서버와 Redis서버에 요청을 보냅니다. - Jenkins서버는 CI/CD 구축을 위해 사용하여 Github에 코드를 push할 시 통합, 배포를 자동화 시켜줍니다. - Jenkin..
[Jenkins] CI ( Continuous Integration ) / CD ( Continuous Delivery ) CI 서비스는 전체 응용 프로그램을 컴파일하고 테스트합니다. 또한 지속적인 딜리버리는 이 테스팅 된 애플리케이션을 예를 들어 알파 테스터가 조기 피드백을 사용하고 제공 할 수 있도록 저장소로 푸시합니다. CD 빌드는 프로덕션 환경에 자동으로 배포되며 광범위한 베타 테스트에도 사용할 수 있습니다. CD는 린 로지스틱스를 목표로 합니다. 새 코드 추가부터 승인 테스트까지 프로세스를 자동화합니다. CD는 모든 단계를 자동화하여 빌드를 배포 할 준비가 되었습니다. 지속적인 딜리버리 : 응용 프로그램을 구축하고 테스트를 실행하는 것 외에도 응용 프로그램은 "전달"되기도합니다. 이는 종종 누군가가 수동 테스트를 수행 할 수 있도록 서버에 배치하거나 테스트 그룹의 사용자에게 전자 메일로 전송하는 것을 의미합니다. 프..