티스토리

page hit
검색하기

블로그 홈

page hit

inpages.tistory.com/m

hit

구독자
6
방명록 방문하기

주요 글 목록

  • OpenGL 설치 가이드 (Ubuntu) https://zenoahn.tistory.com/87 Ubuntu에서 OpenGL 시작하기 Ubuntu에서 OpenGL 프로그래밍 환경 구축하기 우분투에서 OpenGL을 이용해서 빨간 창을 띄우는 방법을 소개해드리려 합니다. 1. Ubuntu를 설치하세요 Ubuntu 홈페이지에서 Ubuntu를 받아 USB에 부트디스크를 만들.. zenoahn.tistory.com glad 가이드 https://askubuntu.com/questions/1186517/which-package-to-install-to-get-header-file-glad-h Which package to install to get header file glad.h? I am trying to compile this example http.. 공감수 0 댓글수 0 2020. 4. 13.
  • Pintos 시작하기, 환경 설정하고 설치하는 방법 pintos 설치 과정이 잘 정리된 사이트는 이 곳을 참고하자. pintos의 공식 문서 사이트와 버클리 대학의 운영체제 강의 사이트도 좋은 참고 자료이다. 설치 과정은 앞서 언급한 블로그를 참고하여 설치한다. 공식 문서에 따르면, 높은 버전의 gcc와 bochs 등도 사용할 수 있다고 나오지만, 설치 중 여러 에러 메시지를 만나서 결국 블로그에 나와있는 버전과 동일하게 진행하였다. 환경 설정 아래와 같은 버전의 개발 환경을 구축하였다. Ubuntu 12 32 bit (i386) gcc 4.4 bochs 2.6.2 설치 과정에서 사용한 명령어는 아래와 같다. sudo apt-get install gcc sudo apt-get install g++ qemu-system-i386 -version pintos.. 공감수 0 댓글수 0 2020. 1. 7.
  • 우분투에서 VMware 설치, 삭제하는 명령어 우분투와 같은 리눅스 운영체제에서도 가상 머신 VMware를 설치하여 다른 운영체제를 사용할 수 있습니다. sudo sh ./VMware-Player.Bundle 삭제하는 명령어는 아래와 같습니다. sudo vmware-installer -u vmware-player 공감수 0 댓글수 0 2020. 1. 6.
  • 안드로이드 스튜디오 gradle dependency 추가 메뉴 안드로이드 스튜디오에서 안드로이드 어플을 개발할 시, 라이브러리를 Gradle 파일에 추가해주는 방법입니다. 메뉴를 이용해서 추가할 수 있고, 직접 gradle 파일을 작성해줄 수도 있습니다. UI 이용 [프로젝트 이름] 우클릭 -> Open Module Settings (F4) -> Dependencies Module:app gradle 파일에서 직접 dependencies를 추가해줘도 됩니다. 공감수 0 댓글수 0 2019. 12. 19.
  • docker: Error response from daemon: Unknown runtime specified nvidia. nvidia-docker를 설치한 뒤 도커를 실행시키는데 아래와 같은 에러가 발생했습니다. --runtime 옵션이 아닌 --gpus 옵션을 이용하면 해결할 수 있습니다. docker: Error response from daemon: Unknown runtime specified nvidia. $ sudo docker run -it --rm --gpus all 공감수 0 댓글수 1 2019. 11. 27.
  • C/C++ vim 설정 $ vim ~/.vimrc set number " line number 표시 set ai " auto indent set si " smart indent set cindent " c style indent set shiftwidth=4 " shift를 4칸으로 (auto indent할 때 white space가 네 칸이 됨) set tabstop=4 " tab을 4칸으로 set ignorecase " 검색 시 대소문자 구별하지 않음 set hlsearch " 검색 시 하이라이트(색상 강조) set expandtab " tab 대신 띄어쓰기로 set background=dark " 검정배경을 사용 set nocompatible " 방향키로 이동 가능 set fileencodings=utf-8,euc-kr .. 공감수 1 댓글수 0 2019. 10. 26.
  • 우분투 설치 시 화면 깨짐 현상 해결 우분투 설치 시 화면 깨짐 현상과 관련된 블로그 및 글 링크 우분투에서 grub 화면에 진입하려면 쉬프트키를 계속 누르거나 esc 키 연타할 것. https://m.blog.naver.com/PostView.nhn?blogId=kalkins&logNo=80189440368&proxyReferer=https%3A%2F%2Fwww.google.com%2F 우분투 블랙스크린 문제, 우분투 화면 깨짐, 우분투 부팅 문제, Ubuntu black screen issue, 우분투 12.10, 우분투 13.04 저는 현재 HP 8750P 노트북에 우분투를 사용하고 있습니다.물론 오래된 HP DV6000 노트북에도 우분... blog.naver.com http://reachlab-kr.github.io/linux/20.. 공감수 0 댓글수 0 2019. 10. 26.
  • C++ inline function inline int add(int a, int b) { return a+b; } 인라인 함수inline function는 C++의 특징 중 하나입니다. 인라인 함수를 사용하는 이유는 무엇일까요? 소스 코드를 실행시키면 메인 함수가 먼저 실행되고, 메인 함수에서 다른 함수들을 호출할 것입니다. 다른 함수를 호출할 때, 호출된 함수의 매개 변수, 반환 주소 등이 메모리 스택에 저장됩니다. 이 과정에서 메모리에 접근에 값을 써야 해서 오버헤드overhead가 발생합니다. 즉, 물리적인 메모리 공간을 접근해 값을 써야 하므로 그 만큼 시간이 많이 걸립니다. 이러한 함수 호출 오버헤드function call overhead를 줄이기 위해 인라인 함수를 사용합니다. 인라인 함수를 사용하면 어떤 일이 벌어질까요? 인.. 공감수 0 댓글수 1 2019. 10. 24.
  • C/C++ 컴파일 과정 | gcc/g++ 명령어 소스 코드는 아래의 그림과 같은 컴파일 과정을 거쳐 실행 파일로 만들어 집니다. 전처리기preprocessor: 소스 코드의 주석 제거, define을 치환하는 기능을 합니다. 컴파일러compiler: 어셈블리 파일로 변환합니다. 어셈블리 코드는 CPU 명령어 조합이며, 어셈블리어는 CPU에 의존적입니다. 어셈블러assembler: 오브젝트 코드 파일로 변환합니다. 오브젝트 코드는 0과 1로 이루어진 이진 코드입니다. 그리고 아직 주소 정보가 확정되지 않은 상태입니다. 링커linker: 오브젝트 파일들을 묶어서 실행 코드 파일로 변환합니다. 운영체제가 로딩할 수 있도록 주소 정보를 할당한 파일을 만들어 냅니다. 따라서 링커는 운영체제에 의존적입니다. 컴파일 과정을 조금 더 자세하게 살펴보겠습니다. 전처리.. 공감수 1 댓글수 1 2019. 10. 24.
  • PyCharm Unresolved reference error 파이참 IDE를 이용해 파이썬 코드를 작성하는 중 'Unresolved reference'에러가 에디터에 표시되었습니다. 텐서플로를 이용해 코드를 구현하는 중에 아래와 같은 에러가 표시되었습니다. Unresolved reference 'Model' Unresolved reference 'Dense' Unresolved reference 'Flatten' Unresolved reference 'Conv2D' from tensorflow.keras.layers import Dense, Flatten, Conv2D from tensorflow.keras import Model 위 코드에서 Dense, Flatten, Conv2D, Model 부분에서 빨간 줄이 나타나면서 에러 표시가 났습니다. 그런데 이상하게.. 공감수 0 댓글수 0 2019. 10. 24.
  • tensorflow 2.0 GPU 에러 | GPU 메모리 부족할 때 텐서 플로우 홈페이지 튜토리얼을 따라하면서 TensorFlow 2.0 버전을 학습하고 있는데, 아래와 같은 에러 메시지가 나왔습니다. 튜토리얼에 나와있는 코드를 그대로 작성하였기에 코드에는 문제가 없다는 생각을 가지고, 에러 메시지를 읽어보았습니다. 전체 에러 메시지는 이 글의 아랫 부분에 있습니다. tensorflow.python.framework.errors_impl.UnknownError: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above. 위의 에러 메시지를 읽어보니 "cu.. 공감수 6 댓글수 4 2019. 10. 24.
  • 그래프 개념과 구현 그래프Graph는 정점vertex와 간선edge으로 구성된 데이터 구조입니다. 노드 사이에 간선으로 연결되며, 간선은 방향을 가질 수도 있고 방향을 가지지 않을 수도 있습니다. 즉, 그래프는 아래와 같은 두 가지 속성을 지니고 있습니다. 노드node라고도 부르는 정점의 유한 집합으로 구성됩니다. (u, v) 형태의 순성쌍으로 이루어진 간선의 유한 집합으로 구성됩니다. (u, v)는 정점 u에서 정점 v로 이어지는 간선을 나타냅니다. 방향이 있는 그래프directed graph에서 (u, v)와 (v, u)는 같지 않습니다. 간선은 시간이나 거리, 요금과 같은 가중치weight, 값, 비용을 나타낼 수도 있습니다. 위에서 본 그래프의 속성에서 살펴본 것처럼 그래프의 간선이 여러 종류의 값을 나타낼 수 있기.. 공감수 0 댓글수 0 2019. 10. 22.
  • 우분투 temporary 디렉토리 우분투, 리눅스 운영체제에서 root 디렉토리 아래에 tmp 디렉토리가 존재한다. 시스템이 재부팅되면 tmp 안에 저장된 데이터는 삭제된다. 텐서플로우로 mnist 데이터를 로드하는 과정에서 tmp/data 디렉토리에 저장하는 경우가 많다. stack exchange stack exchange 공감수 0 댓글수 0 2019. 10. 20.
  • 우분투 16.04와 18.04에서 NVIDIA 그래픽 드라이버 설치하는 방법 우분투 16.04와 18.04에서 NVIDIA 그래픽 카드 드라이버를 설치하는 방법을 소개하는 유용한 링크는 다음과 같다. 우분투 버전별로 그래픽 드라이버를 설치하는 방법이 다른 듯하다. 1. 우분투 18.04 버전 18.04버전에서 그래픽 드라이버를 설치하기 위해 아래 링크를 참고하면 좋다. https://codechacha.com/ko/install-nvidia-driver-ubuntu/ Ubuntu18.04 LTS에 nvidia 드라이버를 설치하는 방법 | codechacha 우분투 18.04를 설치 후 화면이 멈추는 일이(lockup) 잦아졌습니다. 원인은 nvidia 그래픽카드 드라이버를 설치하지 않아 발생한 문제였습니다. 드라이버는 수동, 자동으로 설치하는 방법이 있습니다. 먼저 자신이 설치해.. 공감수 0 댓글수 0 2019. 8. 5.
  • 안드로이드 빌드 관련 유용한 링크 안드로이드 오픈소스 관련 유용한 링크는 다음과 같다. 우분투 16버전을 이용하여 Android 6 버전을 빌드하는 블로그이다. https://gamdekong.tistory.com/56?category=763105 안드로이드 포팅 1-2 AOSP 빌드하기 작업환경 : ubuntu 16.04 LTS 타겟 : Android 6.0 ( Marshmallow) 1. 현재 존재하는 output들을 삭제한다. $ make clobber 2. 환경 설정을 한다. $ source build/envsetup.sh or $ . build/e.. gamdekong.tistory.com 따라하면 큰 어려움, 에러 없이 쉽게 빌드할 수 있다. 공감수 0 댓글수 0 2019. 8. 5.
  • 우분투에서 자바 버전 여러 개 관리하며 사용하기 우분투에서 여러 버전의 자바를 설치하여 이용할 수 있다. 먼저 설치된 자바 버전을 확인하는 명령어는 다음과 같다. $ sudo update-java-alternatives --list java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64 java-1.8.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.8.0-openjdk-amd64 1.8 버전으로 설정되어 있고, 1.7 버전이 설치되어 있다. 1.7 버전으로 바꾸는 명령어는 아래와 같다. $ sudo update-java-alternatives -s java-1.7.0-openjdk-amd64 공감수 0 댓글수 1 2019. 8. 5.
  • google code prettify 예제 Python Java python 소스코드 abc java 소스코드 bb """ network.py ~~~~~~~~~~ """ #### Miscellaneous functions def sigmoid(z): """The sigmoid function.""" return 1.0/(1.0+np.exp(-z)) def sigmoid_prime(z): """Derivative of the sigmoid function.""" return sigmoid(z)*(1-sigmoid(z)) """ network.py ~~~~~~~~~~ """ #### Miscellaneous functions def sigmoid(z): """The sigmoid function.""" return 1.0/(1.0+np.exp(-z).. 공감수 0 댓글수 0 2019. 7. 17.
  • aosp LI, LIF, LPr, LPw 의미 addSharedUserLPw와 같은 메소드가 많이 보인다. 다음의 의미를 갖는다. fooLI(): the caller must hold mInstallLock fooLIF(): the caller must hold mInstallLock and the package being modified must be frozen fooLPr(): the caller must hold mPackages for reading fooLPw(): the caller must hold mPackages for writing 출처 https://stackoverflow.com/questions/9776579/android-source-code-functions-peculiar-names# 공감수 0 댓글수 0 2019. 7. 11.
  • git 사용법 참고 사이트 목록 git 사용하는 참고할만한 사이트 목록 https://yokang90.tistory.com/47 - 우분투(Ubuntu) Git & GitHub 설치 및 사용법 # 우분투 환경에서 Git & GitHub 사용을 처음 해봐서 찾아보다가 정리해두면 좋을 것 같아서... 1. Git 설치 및 설정 sudo apt-get install git-core - 'apt-get' 이용하여 설치 git config --list - 기본 설정.. yokang90.tistory.com https://github.github.com/training-kit/downloads/kr/github-git-cheat-sheet/ GitHub Git Cheat Sheet Git 설치하기 GitHub은 가장 일반적인 저장소(reposit.. 공감수 0 댓글수 0 2019. 6. 20.
  • 알고리즘 분석 | 최악의 경우, 평균, 최상의 경우 Worst cases, Average cases, and Best cases 알고리즘을 분석 할 때 세 가지 경우로 나눌 수 있다. 워스트 케이스, 에버리지 케이스, 베스트 케이스 세 가지가 있다. 선형 탐색(Linear search)을 예로 들어보자. 최악의 경우 최악의 경우는 알고리즘이 실행되는 시간의 상한을 결정한다. 프로그램을 실행 할 때 연산이 수행되는 횟수가 최대가 되는 경우이다. 선형 탐색의 경우 찾으려는 원소가 배열에 존재하지 않거나 배열의 끝에 존재하는 경우이다. 배열에 찾으려는 원소가 존재하지 않으면 배열의 전체 원소와 모두 비교를 한다. 따라서 선형 탐색의 최악의 경우 시간 복잡도는 $\large \theta (n)$ 이다. 평균적인 경우 평균적인 경우를 계산하는 방법은 다음과 같다... 공감수 1 댓글수 0 2019. 5. 23.
  • 알고리즘 분석 방법 | 점근적 분석 성능(Performance) 분석을 하는 이유 프로그램을 작성할 때 고려해야하는 사항이 많다. 사용자 편의성이 좋아야하며, 모듈성, 보안, 유지 관리 등이 중요하다. 이 뿐만 아니라 성능도 중요하다. 그렇다면 성능은 왜 중요한 것일까? 답은 간단하다. 성능이 좋아야 앞서 언급한 것들을 이룰 수 있다. 성능을 공부하는 이유 중 또 다른 하나는 재미있기 때문이다. 조금 더 실용적인 예를 들어보자. 만약 워드나 한글 같은 텍스트 에디터가 100페이지를 로드하는데 한시간이 걸린다면 어떨까? 동영상을 재생하기 위해 1시간이 걸린다면 어떨까? 이러한 경우 퍼포먼스, 즉 성능은 필수적이다. 성능 분석은 어떻게 할 수 있을까? 하나의 문제 혹은 태스크를 풀 수 있는 두 가지 알고리즘이 있다고 생각해 보자. 어느 것이 .. 공감수 0 댓글수 0 2019. 5. 22.
  • 티스토리에 Github Gist 이용하여 소스코드 snippet 붙여 넣기 Github Gist 사용하기 2 3 4 5 6 Hello Gist!! 확장자 명을 .c .cpp .py .java 와 같이 맞추어 주면 코드 하이라이트 기능이 자동으로 적용된다. 진짜 마지막 테스트... 공감수 0 댓글수 0 2019. 5. 17.
  • C++ STL Maps 사용하는 방법 C++ STL Maps Maps은 associative container이다. key value와 mapped value의 조합으로 구성되는 원소를 저장하는 associative container이다. std::map 선언하기 map m; // creates a map m where key_type is of type string and data_type is of type int map의 길이 int length = m.size(); // gives the size of the map map에 삽입하기 m.insert(make_pair("hello", 9)); // here the pair is inserted into the map where the key is "hello" and the value.. 공감수 0 댓글수 0 2019. 4. 23.
  • C++ STL Sets 사용하는 방법과 멤버 함수 C++ STL Sets 집합은 C++ 표준 템플릿 라이브러리 중 하나이다. 집합(Sets)은 특정한 순서로 특정 원소를 저장하는 컨테이너(container)이다. 주로 사용되는 함수들은 아래와 같다. 선언은 다음과 같이 한다. sets s; // creates a set of integers집합의 크기는 다음과 같이 구할 수 있다. int length = s.size(); // gives the size of the set.집합에 새로운 원소는 insert() 함수를 이용한다. s.insert(x); // inserts an integer x into the set s원소를 지울 때는 erase() 함수를 이용한다. s.erase(val); // erases an integer val from the s.. 공감수 0 댓글수 0 2019. 4. 23.
  • C++ Lower Bound-STL 사용하는 방법 C++ STL Lower Bound 사용하기 lower_bound( begin(), end(), value)[ begin(), end() ) 범위 중에서 value 값이 나타나는 하한을 반환한다. 만약 value가 없다면, value보다 큰 값중에서 가장 작은 값을 반환한다. 즉, value 와 같거나 큰 값이 처음 나타나는 위치를 반복자로 반환한다. 예제 1 #include #include #include using namespace std; int main() { vector v; // vector v.push_back(10); v.push_back(20); v.push_back(30); v.push_back(22); //sort(v.begin(), v.end()); vector::iterator i.. 공감수 0 댓글수 0 2019. 4. 23.
  • C++ 반복자란 무엇인가? 반복자 iterator의 개념 반복자는 포인터와 상당히 비슷하다. 컨테이너에 저장되어 있는 원소들을 참조할 때 사용한다. 포인터와 비슷한 객체이다. 반복자는 컨테이너에 저장된 원소를 순회하고 접근하는 일반화된 방법을 제공한다. 반복자는 컨테이너와 알고리즘이 하나로 동작하게 묶어주는 인터페이스 역할을 한다. 알고리즘마다 다른 방식으로 컨테이너를 순회할 수 있기 때문에 반복자에도 여러 종류가 있다. An iterator is an object that can "iterate" (navigate) over elements. - The C++ Standard Library 반복자는 컨테이너 내부의 원소(객체)를 가리키고 접근할 수 있어야 한다. 반복자는 다음 원소로 이동하고 컨테이너의 모든 원소를 순회할 수 있.. 공감수 0 댓글수 0 2019. 4. 23.
  • C++ 벡터 특정 원소 지우는 방법 vector.erase() C++ 벡터에서 특정원소 지우는 방법 erase(int position) 해당하는 위치의 원소를 지운다. v.erase(v.begin()+4)는 벡터 v의 다섯 번째 원소를 지운다. erase(int start, int end) 해당하는 범위의 원소를 지운다. start는 포함하고, end는 포함하지 않는다. v.erase(v.begin()+2, v.begin()+5)는 세 번째부터 다섯 번째 까지의 원소를 지운다. 예제 https://www.hackerrank.com/challenges/vector-erase/problem #include #include #include #include #include using namespace std; int main() { /* Enter your code her.. 공감수 0 댓글수 0 2019. 4. 20.
  • C++ vector를 이용해 정렬하는 방법 C++ 벡터를 이용해서 정렬하는 방법 sort(vector.begin(), vector.end())를 이용하면 벡터를 정렬할 수 있다. 다음과 같은 의문이 든다. 벡터 sort는 어떤 정렬을 사용할까? int형 벡터가 아닌 char형도 정렬되겠지? #include #include #include #include #include using namespace std; int main() { /* Enter your code here. Read input from STDIN. Print output to STDOUT */ int N, input; cin >> N; vector v; for(int i = 0; i > input; v.push_back(input); } sort(v... 공감수 0 댓글수 0 2019. 4. 20.
  • C++ 벡터를 이용해서 길이가 다양한 이차원 배열 구현하기 C++ 벡터를 이용해서 이차원 배열 구현하기 c++에서는 vertor를 이용해서 가변 길이의 배열을 구현할 수 있다. 생각해볼 문제는 배열을 이용해서 구현하는 것과 무슨 차이가 있느냐라는 것이다. 배열을 이용하는 것과 벡터를 이용하는 것의 차이는 무엇인가? 벡터를 사용하는 방법은 무엇인가? #include #include #include #include #include using namespace std; int main() { /* Enter your code here. Read input from STDIN. Print output to STDOUT */ int n, q, k; scanf("%d %d", &n, &q); // create vectors of vectors vector v(n); // .. 공감수 0 댓글수 0 2019. 4. 19.
  • 리눅스 우분투에서 환경 변수 설정하는 여러 가지 방법 리눅스에서 환경 변수 설정하는 여러 가지 방법들 리눅스 터미널에서 환경 변수를 설정하는 방법을 정리해 놓았다. 방법 1) export PATH=$PATH:/home/username/abc이 방법은 터미널을 다시 시작하면 설정한 값이 없어진다. 방법 2) nano .profile 혹은 vi ~/.profile 혹은 vi ~/.bashrcexport PATH=$PATH:/home/username/abcsource .profile방법 3) 시스템 변수 vi /etc/environment위의 명령어를 통해 환경 변수를 추가한다. 이 방법은 시스템 환경 변수를 이용한다. 기존에 있는 PATH 부분을 잘못 건드리면 우분투 운영체제가 통째로 날아가 버릴 수 있다. 공감수 2 댓글수 0 2019. 4. 12.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.