goodkus의 등록된 링크

키자드에 등록된 총 181개의 포스트를 확인하실 수 있습니다.

Naver Blog

매크로를 이용한 프로그래밍

가끔씩 프로그래밍을 하다보면 에러를 검사하는 부분이 있어야 하는데 없애기는 그렇고 있자니 성능저하라는 생각이 들때가 있다. 그러던 중 열혈강의 C++ 책 코드중에서 매크로를 이용하는 부분이 있다. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 #include <iostream> #define DEBUG 1 //#define DEBUG 2 using std::cin; using std::cout; using std::endl; int main(void){ int size; cout<< "할당하고자 하는 배열의 크기 : "; cin >> size; int* arr = new int[size]; #if DEBUG==1 cout<<" 디버그 모드 입니다. " <<endl; if(arr==NULL){ cout << "

Naver Blog

간략한 용어정리

생성자(Constructor) : 객체를 생성과 동시에 초기화할 수 있는 메커니즘. 소멸자(Destructor) : 객체가 소멸되기 이전에 소멸자가 먼저 호출되는 메커니즘. 캡슐화(Encapsulation) : 관련 있는 데이터와 함수를 하나의 단위로 묶는 것. 액세스 함수(Access funtion) : 멤버 변수의 접근을 위한 함수(get,set함수) 자기참조 포인터 : 자기 자신을 가리키는 용도로 사용하는 포인터(this) 복사 생성자 : 자기 자신과 같은 형태의(자료형) 객체를 인자로 받을 수 있는 생성자. 얕은 복사(Shallow Copy) : 주소 값만을 복사. 깊은 복사(Deep Copy) : 관련 데이터의 주소가 아닌 값 자체를 복사함. 범위 지정 연산자(scope resolution operator) : 이름공간의 범위를 지정할 때 사용( :: ) 오버라이딩(Overriding) : Base 클래스에 선언된 형태의 함수를 Derived 클래스에서 다시 선언하는 것.

Naver Blog

복사생성자의 무한루프

열혈강의 C++책을 보면 재밌는 내용이 나온다. 참고 : 복사 생성자의 전달 인자 선언에서 const 선언은 해 주지 않아도 상관없다. 그러나 & 선언은 반드시 해 줘야 한다. 그 이유에 대해서는 이번 장의 내용을 완전히 끝낸 다음 고민해 보기 바란다. 결론만 이야기를 한다면, & 선언이 없다면 무한루프에 빠져 버리기 때문이다. 다행히 대부분의 컴파일러는 & 선언을 해 주지 않으면 컴파일 오류를 발생시켜 준다. 참으로 고마운 일이 아닐 수 없다. 왜? 무한루프에 빠지게 되는지는 천천히 생각해 보기 바란다. 예제소스이다. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include <iostream> using std::cout; using std::endl; class AAA{ public: AAA(){ cout<<"AAA()"<<endl; } AAA(int i){ cout<<"AAA(int

Naver Blog

const, const 멤버 함수와 비 const 멤버함수

Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #include <iostream> class Point{ int x; int y; public: Point(int _x = 0, int _y = 0):x(_x),y(_y){} int GetX() const{return x;} int GetY() const{return y;} void SetX(int _x){x=_x;} void SetY(int _y){y=_y;} void Print() const { cout << x << ',' << y << endl;} }; int main(){ const Point p1(0,0); Point p2(2,3); p1.Print(); p2.Print(); cout << "p1: " << p1.GetX() << ',' <<p1.GetY() << endl; c

Naver Blog

소멸자에 virtual을 써야하는 이유.

소멸자에 virtual을 써야하는 이유. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 #include <iostream> using std::endl; using std::cout; class AAA{ char* str1; public: AAA(char* _str1){ str1 = new char[strlen(_str1)+1]; strcpy(str1,_str1); } ~AAA(){ cout<<"~AAA() call!"<<endl; delete []str1; } virtual void ShowString(){ cout<<str1<<' '; } }; class BBB : public AAA{ char *str2; public: BB

Naver Blog

가상 함수 동작원리

Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 #include <iostream> using std::endl; using std::cout; class A{ int a; int b; public: virtual void fct1(){ cout<<"fct1(...)"<<endl; } virtual void fct2(){ cout<<"fct2(...)"<<endl; } }; class B : public A{ int c; int d; public: virtual void fct1(){ cout<<"overriding fct1(...)"<<endl; } void fct3(){ cout<<"fct3(...)"<<endl; } }; int main(void){ A* aaa = new A(); aaa->fct1(); B* bbb = new B();

Naver Blog

연산자 오버로딩

Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 #include <iostream> using namespace std; class Point{ private : int x; int y; public : Point(int _x = 0, int _y = 0):x(_x),y(_y){} void Print() const {cout << x<<','<<y<<endl;} int GetX() const { return x; } int GetY() const { return y; } const P

Naver Blog

cout, cin, endl 이해하기

※이거를 보기 위해선 우선 연산자 오버로딩부터 확인하는 것이 좋다. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #include <stdio.h> namespace mystd{ char* endl="\n"; class ostream{ public: ostream& operator<<(char *str){ printf("%s", str); return *this; } ostream& operator<<(int i){ printf("%d", i); return *this; } ostream& operator<<(double i){ printf("%e", i); return *this; } }; ostream cout; } using mystd::cout; using mystd::endl; int main(){ cout<<"Hello World"<<

Naver Blog

[Error] Eclipse Android 프로젝트 생성시 appcompat 경로 에러

안드로이드 프로젝트를 만들었는데 에러가 떴다. 에러내용 : 뜬금없어서 뭔 개소리인가 했다. '저 jar파일을 못찾으니 어서 찾아'라는 내용이다. 오류가 뜨는 해당경로로 들어가라. 해당경로로 가면 파일이 없다. 이 파일은 libs안에 보면 들어있다. 안에 있는 android-support-v4.jar android-support-v7-appcompat.jar 를 폴더 바깥으로 꺼내라. 위의 그림처럼 꺼내놓으면 끝이다. 그리고나서 이클립스에서 오류나는 프로젝트를 새로고침하면 된다. 프로젝트 클릭하고 F5를 눌러라. 그럼 자기네들이 알아서 다 잡는다. 만약 그래도 안되면 프로젝트의 속성으로 들어가라. (오른쪽 클릭하거나 프로젝트 클릭한 상태에서 alt+enter) android 탭의 Library에 Is Library를 체크해주면 된다.

Naver Blog

도전 임베디드 OS만들기

아우 씁. 도전! 임베디드 OS만들기 / 인사이트 책에서 arm-linux-gcc-3.3.2.tar.bz2를 다운받아라고 주소가 표기되어있지만, 링크 다 틀려있다. http://www.filewatcher.com/m/arm-linux-gcc-3.3.2.tar.bz2.74783042-0.html 여기 들어가면 ftp서버로 다운받게 되어있다. 아........하다가 욕나옴... 내가 잘못한건지는 몰라도 3.4버전의 gcc로는 qemu가 설치가 안되는거 같다. 책에서 나오는 0.91버전도 sdl이 없다해서 설치해줘도 qemu는 설치도 안되고...... 최신버전 qemu를 설치해줘도 안되고... 뭐가 문제일꼬

Naver Blog

용어정리

MCU(Micro Controller Unit) : 특정 시스템을 제어하기 위한 전용 프로세서. PC의 CPU라 생각하면 됨. ==== 6장 ICMR(Interrupt Controller Mask Register) : 인터럽트를 마스킹하는 레지스터. 각 비트에는 고유의 인터럽트가 바인딩되어 있고, 해당 비트를 set(1로 변경)하면 바인딩되어 있는 인터럽트가 통과됨. ICLR(Interrupt Controller Level Register) : 인터럽트를 FIQ로 할지 IRQ로 할지 설정하는 레지스터. ICCR(Interrupt Controller Control Register) : 프로세서가 Idle모드가 아닐 때 ICMR의 설정을 무시할지 여부를 결정. 설정할수 있는 비트가 DIM 하나뿐임. DIM(Disabel Idle Mask)이 0으로 설정하면 Idle모드가 아닐 때에마나 iCMR에 1로 설정된 인터럽트를 발생시킴. ICIP(Interrupt Controller IRQ Pe

Naver Blog

도전! 임베디드 OS만들기 - 1장

도전! 임베디드 OS만들기(부제 : 코딩하며 배우는 운영체제 원리) 저자 : 이만우 (숭실대 컴퓨터학부 졸업, SSM, 삼성전자 반도체 총괄중.) 출판사 : 인사이트. (인사이트 책이 괜찮음) 초판 1쇄 발행 : 2009. 04. 01 이 책을 보고 따라함에 있어서 책에 있는 내용을 조금 정리했으며, 구버전으로 설정되어 있는 환경을 요즘 나온 환경으로 구축하였습니다. 문제가 될 경우 게시글을 정리하도록 하겠습니다. 자! 시작해봅시다. 운영체제란? - 응용 프로그램과 하드웨어 사이에서 인터페이스 역할을 하며 시스템의 동작을 제어하는 시스템 소프트웨어. -> 시스템의 자원과 동작을 관리하는 소프트웨어. 운영체제의 역할 - 프로세스 관리 - 스레드, 프로세스 - 스케줄링 - 동기화 - IPC - 저장장치 관리 - 메모리 관리 - 가상 메모리 - 파일 시스템 - 네트워킹 - TCP / IP - 기타 여러 프로토콜 - 사용자 관리 - 계정 관리 - 접근권한 관리 - 디바이스 드라이버 - 순차

Naver Blog

VirtualBox로 Ubuntu 설치하기 (VirtualBox 설정하기)

음.... 나는 윈도우로 작업을 하니 가상머신을 통해서 리눅스(ubuntu)를 설치하도록 하겠습니다. vmware나 virtualbox나 아무거나 사용해도 상관없지만 vmware는 셰어웨어이고, virtualbox는 프리웨어입니다. 개인적으로는 virtualbox를 사용하는 것을 추천합니다. (사람들 평을 봐도 이게 더 가볍다고 하더라구요.) 가상 머신(Virtual Machine, VM)은 컴퓨팅 환경을 소프트웨어로 구현한 것, 즉 컴퓨터를 에뮬레이션하는 소프트웨어다. 가상머신상에서 운영체제나 응용프로그램을 설치 및 실행할 수 있다. http://ko.wikipedia.org/wiki/%EA%B0%80%EC%83%81_%EB%A8%B8%EC%8B%A0 1. ubuntu를 먼저 우선적으로 다운받으세요. http://www.ubuntu.com/download/desktop 위 주소로 들어가서 64bit를 다운받거나 32bit를 다운받으세요. 전 64bit를 받았습니다. 세부적인 설명은

Naver Blog

VirtualBox로 Ubuntu 설치하기 (Ubuntu설치하기)

ubuntu를 설치하겠습니다. 1. 첫 화면은 언어선택입니다. 한글로 설치해도 별 문제 없습니다. 전 영어로 설치하겠습니다. install now를 클릭합니다. 2. 설치에 대한 설명이 나오며 몇가지 옵션이 나옵니다. 한글로 설치하면 한글로 설명이 나옵니다. 아무것도 체크를 안해도 되지만 전 'Download updates while installing‘옵션을 체크했습니다. 그리고 continue를 누르세요. 3. 이 디스크에 OS가 검색되지 않았다고 나옵니다.(VirtualBox의 경우 고정할당으로 설정한 가상 하드 드라이브입니다. PC의 하드디스크가 아닙니다.) 그래서 어떻게 설치할건지 묻는 화면입니다. 아무것도 없으니 전부 지우고 설치한다고 하겠습니다.(다른 OS가 설치되어 있을경우 신중하게 선택하세요) 그리고 install now를 누르세요. 4. 설명 생략합니다. 어디냐고 묻습니다. 인터넷에 연결되어있다면 저절로 현재 위치가 잡힐겁니다. continue를 누르세요. 5. 키

Naver Blog

Ubuntu_GuestAdditions 설치하기

ubuntu는 유연하게 사용하기 위해선 게스트에디션을 설치 해줘야 합니다. 게스트에디션 설치를 통해서 공유폴더나 해상도 변경 등 여러 옵션이나 각종 드라이버가 설치됩니다. 가상머신을 좀더 효율적으로 다뤄준다고 생각하면 됩니다. 게스트 에디션을 설치하는 방법에는 두가지가 있습니다. 첫번째는 가상머신을 이용했을 경우(저는 VirtualBox를 사용합니다.)와 두번째는 terminal에서 두들기는 방법입니다. 1] VirtualBox를 이용한 설치 1. VirtualBox 화면에서 장치 - 게스트 확장 설치를 클릭합니다. 2. 아래 화면의 창이 나타나면서 실행할건지 취소할건지 나옵니다. 실행을 누릅니다. 3. 관리자 권한이 필요하다고 나타납니다. 패스워드를 입력합니다. 4. 설치가 시작됩니다. 설치하는 동안 놀다가 설치가 끝나면 재부팅을 해주면 게스트에디션이 설치됩니다. 5. 재부팅 후 화면이 커진것을 확인할 수 있습니다. 2] terminal에서 두들겨보기 정확한 문서를 보고싶으면 첫번

Naver Blog

Ubuntu VirtualBox Sharedfolder 설정

ubuntu와 virtualbox 공유폴더를 설정해보겠습니다. 우선 공유폴더를 설정하려면 GuestAdditions이 설치되어 있어야 합니다. 1. 우선 ubuntu에 공유될 폴더를 생성해줍니다. 폴더 생성은 mkdir입니다. 2. 윈도우에서 공유할 폴더를 생성합니다. 3. 가상머신의 화면에서 장치 - 공유 폴더 설정으로 들어갑니다. 4. 공유 폴더창에서 오른쪽의 폴더+ 된 아이콘을 클릭합니다. 5. 공유를 추가합니다. 폴더 경로는 아까 생성한 폴더의 경로를 넣어주고, 폴더 이름은 해당되는 폴더가 virtualbox에서 alias가 붙는다고 생각하면 됩니다. 읽기 전용을 하면 ubuntu에서 쓰기가 안되며, 자동 마운트를 하면 나중에 입력하게 될 명령어를 재부팅 할 경우입력하지 않아도 됩니다. 항상 사용하기는 뭔지 몰겠네요. 설정하고 확인을 누릅니다. 6. 공유 폴더가 추가된 것을 확인할 수 있습니다. 7. 아래의 명령어를 입력합니다.] sudo mount -t vboxsf [아까설

Naver Blog

linux 옵션 정리

tar [option] [target file.tar] [SRC file] c : 새로운 묶음을 생성 (create) x : 묶음을 해제 (extract) v : 묶음이 생성되고 해제되는 과정을 보기(verbose) f : 묶음파일명을 지정(file) z : 묶으면서 gzip j : 묶으면서 bzip2 t : 묶음 풀기전 목록보기 (list) C : 묵음이 풀리는 디렉토리 지정(change directory) 주로사용) tar -xvf 파일명 tar -cvf 파일명

Naver Blog

도전! 임베디드 OS만들기 - 2.1장(ARM 크로스 컴파일 환경구축)

원래는 1장의 마지막에 나오는 부분이지만, 환경을 구축하는 부분이라 2장으로 옮겼습니다. 1. arm-linux-gcc 파일 다운로드 먼저, 환경구축을 하려면 arm용 gcc컴파일러 패키지를 받아야합니다. 근데, 책(4쇄발행)에 나와있는 주소를 입력하면 사이트가 없습니다. http://www.filewatcher.com/m/arm-linux-gcc-3.3.2.tar.bz2.74783042-0.html 여기에서 다운을 받으면 됩니다. 책은 주소가 옮겨졌는지 다른 주소로 바꼈습니다. http://www.insightbook.co.kr/books/programming-insight/%EB%8F%84%EC%A0%84-%EC%9E%84%EB%B2%A0%EB%94%94%EB%93%9C-os-%EB%A7%8C%EB%93%A4%EA%B8%B0/%EC%86%8C%EC%8A%A4%EC%BD%94%EB%93%9C%EC%99%80-%EC%B0%B8%EA%B3%A0-%EC%9E%90%EB%A3%8C 이 주

Naver Blog

도전! 임베디드 OS만들기 - 2.2장(qemu설치)

이제 qemu를 설치해봅시다. 책에 적힌 주소를 입력하면 페이지가 삭제되었다고 나옵니다. 그러면서 위키로 페이지가 연결됩니다. http://wiki.qemu.org/Index.html 여기로 바로 들어가세요. 책의 설명으로는 qemu 0.9.1버전을 구동하기 위해선 gcc 3.x버전이 필요하다고 합니다. 다운그레이드 하지말고 qemu 최신버전을 받으세요. 현재 우분투에선 gcc 3.x버전을 지원하지 않습니다. 그래서 따로 파일을 받아서 작업을 해야하는데 번거롭습니다. qemu 최신버젼에 gcc 4.x로 구동하도록 하겠습니다. 전 전에 작업하던 버전인 2.1.2버전을 사용하겠습니다. 1. 먼저 qemu 파일을 다운받아 보겠습니다. 위 상단의 링크에서 받아도 되지만 옮겨야하는 번거로움이 있습니다. 상단의 주소에서 다운로드주소 받아왔습니다. 일단 qemu를 받을 폴더를 하나 만들어주고, wget으로 파일을 받아줍시다. mkdir workspace wget http://wiki.qemu-p

Naver Blog

도전! 임베디드 OS만들기 - 2.3장(u-boot 설치)

이제 마지막으로 u-boot를 설치해봅시다. gumsitx_uboot 파일을 찾으려고 돌아다녀봤는데 못찾았습니다. http://www.insightbook.co.kr/books/programming-insight/%EB%8F%84%EC%A0%84-%EC%9E%84%EB%B2%A0%EB%94%94%EB%93%9C-os-%EB%A7%8C%EB%93%A4%EA%B8%B0/%EC%86%8C%EC%8A%A4%EC%BD%94%EB%93%9C%EC%99%80-%EC%B0%B8%EA%B3%A0-%EC%9E%90%EB%A3%8C 출판사에서 제공하는 파일을 다운로드 받으세요. 이제 설치를 시작해보겠습니다. 1. 파일을 옮기든 우분투에서 다운받든 합시다. 2. 압축을 풀어봅시다. tar -xvf gumstix_uboot.tgz 3. 폴더를 이동하여 make distclean을 입력합시다. cd gumstix_uboot make distclean 4. 파일들이 삭제되는 것을 볼 수 있습니다. 이제 계속

Naver Blog

도전! 임베디드 OS만들기 - 2.4장(hello world 출력)

이 교재는 부트로더를 만들지 않습니다. 이지부트의 소스코드를 가져와서 사용합니다. 이지부트의 다운로드 주소입니다. http://forum.falinux.com/_zdownload/data/ezboot.x5.v18.tar.gz 책에서 소개되는 링크중에 처음으로 살아있는 주소입니다...ㅋㅋㅋ 시작할게요. 1. 전에 게시글을 보면 알듯이 윈도우로도 받아도 되지만 wget으로 바로 받아도 됩니다. wget http://forum.falinux.com/_zdownload/data/ezboot.x5.v18.tar.gz 2. 압축을 풀어봅시다. tar -xvf ezboot.x5.v18.tar.gz 3. 압축을 풀고 안의 내용물을 확인해 봅시다. cd v18.org ls image - 이지부트의 최종 이미지 파일이 들어감. include - 이지부트 소스가 사용하는 헤더 파일이 있음. main - C언어로 작성된 코드가 있음. start - 어셈블리어로 작성된 보드 초기화 관련 코드들이 있음. 이

Naver Blog

도전! 임베디드 OS만들기 - 3장(LED 출력)

이번 챕터의 내용은 LED를 켜는 것입니다. 그러나 우리는 에뮬레이터로 하기 때문에 책에 있는 실습코드를 사용해서는 확인을 하지 못합니다. 그래서 LED를 동작시키는 함수를 조정해서 확인을 해볼려고 합니다. 먼저 LED를 조정하는 함수가 어디있는지 찾아야합니다. ezboot의 소스코드를 참조해봅시다. ezboot의 main.c의 main()함수를 살펴봅시다. 처음에 보면 start_option이라고 있는데 이부분은 어떤 값을 넣고 있군요. 일단 말 그대로 디폴트_램_커널_0_Page 기본 램 주소의 맨 처음이라고 생각하고 넘어갑시다. 그리고 버퍼도 선언해주고(char ReadBuffer[1024]) 뭔가 변수를 몇 개 더 선언해 주는군요. 좀더 더 보면 LoadConfig(), TimerInit(), GPIOInit(), SerialInit() 함수들이 나오는데 일단 이름으로 뭔가를 초기화, 설정하는구나~ 하고 넘어갑시다. 지금은 간단하게 LED 관련 기능만 확인하는 거니깐요. 그리

Naver Blog

도전! 임베디드 OS만들기 - 4.1장(exception vector table 구성하기)

이번 장에서는 exception vector table을 공부합니다. exception vector table은 여러가지 인터럽트와 예외를 처리할수 있는 주소를 모아놓은 테이블입니다. 먼저 예외와 동작모드에 관해서 보겠습니다. arm에서의 예외는 총 7가지가 있습니다. Data Abort : 메모리의 데이터를 읽거나 데이터를 쓰려다가 실패하는 경우 발생. FIQ, IRQ : 외부 인터럽트가 코어에 전달될 때 발생. Prefetch Abort : 명령어를 해석하다가 실패하는 경우 발생. 메모리에 존재하는 명령어를 읽어오다가 오류가 생기면 발생. SWI(Software Interrupt) : 프로그램 내부에서 발생시키는 인터럽트. 소프트웨어 인터럽트라고 함. 시스템 콜의 핵심. Reset : ARM 코어가 리셋되었을 경우 발생 Undefined Instruction : 읽어온 명령어가 ARM 코어와 코프로세서에 정의디지 않은 명령어일 때 발생. OS나 임베디드 OS를 만들 경우엔 저 예

Naver Blog

[SVN] - Eclipse에 설치하기

[SVN] - Eclipse에 설치하기 Eclipse를 켠 후에 [Help] - [Eclipse Marketplace]를 들어가세요. 창이 나타나면 'SVN'으로 검색해줍시다. (인터넷이 연결되어 있어야 합니다.) 'Subversive - SVN Team Provider 2.0.1'을 설치합시다. 해당 항목의 오른쪽 아래에 보면 'Install' 버튼이 있습니다. 기본적으로 전체가 다 선택되어 있을겁니다. 다음으로 넘어갑시다. 계속 설치할꺼냐고 나옵니다. 설치합시다. 라이센스에 동의하는지 묻습니다. 동의하고 넘어갑시다. 그러면 설치가 진행됩니다. 설치가 완료되면 재부팅을 해달라고 나옵니다. 재부팅을 해줍시다. 재부팅까지 했으면 이제 Connector까지 설치를 해줘야 합니다. [Window] - [Preferences]로 들어갑니다. [Team] - [SVN] - [SVN Connector]를 선택합시다. 그리고 'Get Connectors..'버튼을 눌러줍시다. 커넥터 인스톨 화면

Naver Blog

[SVN] - Check Out (SVN서버에 있는 프로젝트를 Eclipse로 불러오기)

Check out이란 형상관리서버에 있는 소스코드를 자신의 PC로 가져오는 것을 말합니다. 형상관리는 Git이나 CVS, SVN등 여러가지가 있지만 용어는 모두 같습니다. Eclipse에서 SVN으로 check out을 해보겠습니다. 우선 프로젝트 추가 창에 우클릭을 한 다음 'Import'로 프로젝트를 넣어줍니다. 'Import'창이 나오면 [SVN]항목에서 'Project from SVN'을 선택한 후 'Next'를 누릅니다. 그러면 창 이름이 'Checkout from SVN'으로 바뀝니다. 첫번째 라디오 버튼은 '새로운 위치에서 프로젝트를 Check out 하겠다'이고, 두번째 라디오 버튼은 '기존에 연결한 적이 있는 SVN서버의 프로젝트를 가져오겠다'입니다. 만든 적이 없으니 당연히 첫번째 라디오 버튼을 선택하고 'Next'를 눌러줍시다. 기존에 연결한 이력이 없을 경우 해당 창이 생략될 수도 있습니다. 'URL'에 자신이 연결하려는 SVN서버 URL을 입력하면 됩니다. 저

Naver Blog

[SVN] - Commit (Eclipse에서 SVN서버로 파일 올리기)

Commit란 서버로 자신의 파일을 올리는 것입니다. Commit후 Revision은 증가합니다. Eclipse에서 SVN서버로 Commit 해 보겠습니다. 우선 Commit하기 위해선 해당 프로젝트나 파일을 우클릭합니다. 그리고 [Team] - [Commit]항목을 선택합니다. 선택을 완료하면 Commit창이 나옵니다. 'Comment'에 자신의 주석을 남길수 있으며, 하단의 리스트에서는 Commit 하기 이전의 파일과 비교하여 다른 부분만 추려서 나옵니다. 리스트에서 커밋하려는 파일만 선택해서 OK를 누르면 Commit됩니다.

Naver Blog

[SVN] - Update (Eclipse에서 update)

Update란 서버에 연결된 파일중 가장 최신 파일을 현재 작업에 가져오는 것입니다. SVN에 연결된 프로젝트를 우클릭 한 후, [Team] - [Update]를 눌러주면 됩니다. 끝입니다.

Naver Blog

[Error] case expressions must be constant expressions

case expressions must be constant expressions 이런 오류가 뜰 경우엔 SDK버젼을 낮추어서 그렇다. 아래의 그림처럼 오류가 뜬다. case를 쓰지 못한다고 나온다. case문을 전부 if문으로 바꾸자니 노가다 작업일 것 같지만, 스위치문에서 Ctrl+1(원래 에러수정하는 단축키)을 누르면 switch를 if-else로 바꿔준다고 나온다. 작업을 하고 난 후 바뀐 부분. if문으로 id값을 비교하는걸로 바뀐다. case로 id값 비교하는 것이 4.4 킷캣 이후로 가능한 것으로 알고 있다.

Naver Blog

Context

context란? 안드로이드 api에서 보면 이렇게 나옵니다. Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc. 가장 중요한 문구는 맨 앞에 한줄입니다. 어플리케이션 환경 전역정보를 사용하기위한 인터페이스이다. 이 환경정보는 안드로이드OS에서 어플리케이션을 구분할 수 있는 정보라고 생각하면 될 것 같습니다. context에 관해 궁금하신 것들

Naver Blog

[C#] Nullable 형식

Nullable은 변수에 null값이 필요할 때 사용할 수 있다. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace nullable_test { class Program { static void Main(string[] args) { //int a = null ; //error int? b = null; Console.WriteLine(b.HasValue); b = 5; if (b.HasValue) Console.WriteLine(b); } } } 위의 예시를 보면 int a = null일 경우 error가 되지만 int? b = null;은 사용이 된다

Naver Blog

[C#] Formatting Types in the .NET Framework

포맷형식에 대한 설명입니다. Formatting Types in the .NET Framework 참고 : https://msdn.microsoft.com/en-us/library/26etazsy(v=vs.110).aspx

Naver Blog

[C#] foreach

foreach입니다. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace foreach_test { class Program { static void Main(string[] args) { int[] arr = new int[] { 1, 2, 3, 4, 5 }; foreach (int a in arr) { Console.WriteLine(a); } } } } 배열이나 컬렉션을 순차적으로 조회하면서 실행합니다. 변수 a에 arr의 첫값부터 순서대로 끝까지 들어갑니다. for문으로 고치면 아래와 같습니다. Colored By Color Scripter 1 2 3 4 5 6 7

Naver Blog

[C] goto문이 유용할 경우

프로그래밍 교재를 찾아보면 goto문은 코드 가독성을 떨어뜨린다고 사용하지 마라고 합니다. 그러나 goto문이 유용할 경우도 있습니다. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include <stdio.h> int main(void){ for (int i = 0 ;; i++){ for (int j = 0 ; j < i ; j++){ for (int k = 0 ; k < j ; k++){ for (int x = 0 ; x < k ; x++){ for (int y = 0 ; y < x; y++){ for (int z = 0 ; z < y ; z++){ if ((i + j + k + x + y + z) == 10000){ printf("%d,%d,%d,%d,%d,%d\n", i, j, k, x, y, z); goto BREAK_FOR; } } } } } } } B

Naver Blog

[C#] ref (참조 매개변수 전달)

ref 사용방법입니다. 기존의 C는 주소참조를 하려면 &를 붙여야 했습니다. *와 &에 대한 포인터 개념이 포인터에 포인터를 물고 포인터가 더해지면 아주 끝장나죠.... 그래서 C#에서는 ref 라는 키워드를 써서 직관적으로 만든것 같습니다. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ref_test { class Program { static void Main(string[] args) { int x = 1; int y = 2; Console.WriteLine("x:{0} y:{0}", x, y); Swap(

Naver Blog

[C#] out (출력매개변수)

out 키워드입니다. C#을 쓰면서 이 키워드는 정말 중요합니다. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace out_test { class Program { static void Main(string[] args) { int a=1, b=2, c=0; out_test(a,b,ref c); Console.WriteLine("out_test result : " + c); out_test2(a, b, out c); Console.WriteLine("out_test2 result : " +

Naver Blog

[C#] params (가변길이 매개변수)

함수의 매개변수로 가변길이의 매개변수를 넣습니다. 자주 쓰이지는 않지만, 특정상황에 대해서 유연성을 보여줍니다. 함수 선언부에서 매개변수에 params 키워드를 사용하면 됩니다. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace arrayparameter_test { class Program { static void Main(string[] args) { Console.WriteLine(cal(1,2,3,4,5,6,7,8,9,10)); } static int cal(pa

Naver Blog

[C#] named parameter(명명 매개변수)

함수 호출시 매개변수에 이 값이 들어갈 것이다라는 것을 지정해 줄수 있습니다. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace named_parameter_test { class Program { static void Main(string[] args) { int a = 1, b = 10; Console.WriteLine(a + " " + b); swap(number1: ref a, number2: ref b); Console.WriteLine(a + " " + b); //swap(number2: ref b,

Naver Blog

[C#] this constructor

this 생성자에 대해서 이야기 하겠습니다. 일단 예시를 보여드릴게요. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace this_construct_test { class Program { static void Main(string[] args) { Test t = new Test(1, 2, 3); } } class Test { public Test() { Console.WriteLine("Test()"); } public Test(int a)

Naver Blog

[C#] base 키워드

상속받은 자식클래스에서 상속된 클래스를 호출하는 방법이 있습니다. base키워드를 사용하는 것입니다. this가 객체 자기 자신을 가르킨다면 base는 상속한 객체를 가르킨다고 생각하면 됩니다. (원래 상속받은 클래스의 생성자에서는 상속한 클래스의 생성자를 호출합니다.) 예시를 보세요. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace base_test { class Base { protected string Name; public Bas

Naver Blog

[C#] sealed 키워드

클래스를 상속하지 못하게 막는 키워드가 있습니다. sealed 키워드입니다. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace sealed_test { sealed class test { } class test2 : test { } class Program { static void Main(string[] args) { test2 t2 = new test2(); } } } 클래스의 앞에 sealed 키워드를 사용합니다. sealed를 사용한 클래스를 상속할 경우엔 오류가 나옵니다. (코드상으로는 오류가 나타나지 않습니다. 컴파일시 오

Naver Blog

[C#] is 키워드

is 키워드입니다. a클래스가 b클래스로부터 상속을 받았는지 확인하는 키워드 입니다. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace is_test { abstract class Mammal { abstract public void who(); } abstract class human : Mammal { abstract override pub

Naver Blog

[C#] as 키워드

as는 참조형식에서만 사용이 됩니다. 예제 소스는 is키워드를 설명할 때 사용했던 것과 비슷합니다. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace is_test { abstract class Mammal { abstract public void who(); } abstract class human : Mammal { abstract override publ

Naver Blog

[C#] new 키워드(method숨기기)

메모리 할당할때 사용하는 new가 아닙니다. 다형성 부분에서 method를 숨길때 사용하는 new 입니다. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace method_new_test { class Base { public void method() { Console.WriteLine("Base"); } } class Derived : Base { public new void method() { Console.WriteLine("Derived"); } } class Progr

Naver Blog

[C#] Extension Method (확장 메서드)

확장메서드는 기존의 클래스 기능을 확장합니다. 처음에 볼때는 이게 무슨의미인지 잘 모릅니다. 일단 규칙은 1. static 한정자로 수식하고, 2. 첫번째 매개변수는 this키워드를 사용합니다. 일단 예시를 봅시다. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using MyExtension; namespace MyExtension { public static class IntegerExtension { public static int Square(this int myInt)

Naver Blog

[C#] Property

property입니다. property 덕분에 get/set 메서드를 만들기 편해졌습니다. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace auto_property_test { class BirthdayInfo { private string firstName; private string name; private string phone;

Naver Blog

[C#] Anonymous Type

무명형식입니다. 어떤 객체가 다시 재사용될 일은 없는데, 클래스나 구조체를 만들지않고 쓰려고 할때 anonymous type을 사용합니다. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace anonymous_type_test { class Program { static void Main(string[] args) { var a = new {name = "abc", age = 20}; Console.WriteLine(a.name + " " + a.age); //a.name = "test"; //error, 무명형식은 할당 후 변경불가. } } } 무명형식은 할당 후에 값을 변경

Naver Blog

[C#] indexer

인덱스를 이용하여 객체내의 데이터에 접근하게 해주는 프로퍼티. 예제는 뇌를 자극하는 C# 4.0 프로그래밍(박상현)에서 가져왔다. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Collections; namespace indexer_test { class MyList { private int[] array; public MyList() {

Naver Blog

[C#] lambda expression (람다식) - 1

람다식의 기본 형식 : (매개변수) => 식 Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 using System; namespace SimpleLambda { class MainApp { delegate int Calculate(int a, int b); static void Main(string[] args) { Calculate calc = (a, b) => a + b; Console.WriteLine("{0} + {1} : {2}", 3, 4, calc(3, 4)); } } } 익명 메서드를 간단하게 한줄로 요약하여 사용할 수 있다. 매개변수에 왜 자료형을 같이 쓰지않는 이유는 var 자료형을 이용하는 것이 아니라 7번째 라인에 Calculate 델리게이트의 매개변수가 int, int인 것을 볼수 있다. 람다식의 매개변수 자료형은 델리게이트를 보고 자료형을 유추해 낸다. 실행결과 창이다.

Naver Blog

[C#] lambda expression (람다식) - 2

이번엔 문 형식의 람다식입니다. 문형식의 람다식을 사용하면 반환값을 줄 수 있습니다. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 using System; namespace StatementLambda { class MainApp { delegate string Concatenate(string[] args); static void Main(string[] args) { Concatenate concat = (arr) => { string result = ""; foreach(string s in arr) result += s; return result; }; Console.WriteLine(concat(args)); } } } 이번에도 역시 매개변수의 타입과 리턴타입은 7번째 라인에 선언된 델리게이트의 리턴형과 매개변수 타입으로 가져옵니다.

Naver Blog

[C#] Func/Action delegate

람다식을 사용하려면 델리게이트를 선언해줘야합니다. 이부분을 좀더 편하게 하기 위해서 미리 몇가지를 정의를 해놨습니다. Func과 Action 델리게이트입니다. 리턴이 있을 경우엔 Func을, 리턴이 없을 경우엔 Action을 써주면 됩니다. 매개변수로는 16개까지 가능하다고 하네요. 그 이상은 새로 델리게이트를 정의해줘서 람다식을 사용하여야 합니다. 예제소스는 뇌를 자극하는 C# 4.0 프로그래밍(박상현)에서 가져온 것입니다. Func델리게이트 입니다. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 using System; namespace FuncTest { class MainApp { static void Main(string[] args) { Func<int> func1 = () => 10; Console.WriteLine("func1() : {0}", func1()); Func<int, in

Naver Blog

[C#] 주요 문자열 함수 훑어보기

예제가 C#이라 카테고리를 C#으로 해놨습니다. 오해 없으시길 바랍니다. 단순히 글로 설명하는 것보다 코드를 보는게 이해가 빠른분을 위해 간단히 남깁니다. 1. IndexOf(), LastIndexOf() 2. Substring() 3. Replace() 4. Split() 5. Trim() 1. IndexOf(), LastIndexOf() 문자열의 위치를 찾는 함수. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 using System; namespace StringTest { class Program { static void Main(string[] args) { string s = "string test. Hello World!!"; string d = "0 1 2 "; string n = "01234567890123456789012345"

Naver Blog

[VS2013] 자주 쓰이는 단축키

Visual Studio 2013을 좀더 효율적으로 사용할 수 있는 몇가지 단축키에 대해서 이야기 해드릴게요. 일단 예제소스입니다. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 using System; namespace shortcut_test { class Program { static void Main(string[] args) { Console.WriteLine("TEST"); TestSum(10); } static int TestSum(int num) { int sum = 0; sum += TestSum2(num); sum *= 7; return sum; } static int TestSum2(int num) { int sum = 0; sum += num - 4; return sum; } } } 순서입니다. 1. 검색 - Ct

Naver Blog

[C#] 외부 SMTP 서버를 통하여 메일발송.

C# 코드에서 메일발송을 해보도록 하겠습니다. 메일에 대한 프로토콜로는 대표적으로 'POP3'와 'IMAP', 'SMTP'가 있습니다. 'POP3'와 'IMAP'은 메일을 수신할때 사용되며, (IMAP이 기능이 더 좋다고 생각하면 됩니다. 차이점은 간단합니다. 메일 수신시 서버에 메일을 남길것인지 삭제할것인지 차이입니다.) 'SMTP'는 메일을 발송할 때 사용됩니다. 외부 SMTP서버를 사용한다는 것은 네이버나 다음, 구글등의 메일 발송하는 것을 끌어다 쓴다고 생각하면 됩니다. 자신의 OS에 SMTP가 지원된다면 외부 SMTP서버를 사용할 필요가 없습니다. 그러나 윈도우 계열은 윈도우 7부터 ASP .Net에서만 SMTP를 지원해 주는걸로 알고 있습니다. (이전의 XP등은 SMTP를 지원해줍니다.) 제 PC는 윈7 Ultimate버전이지만 지원하지 않습니다. (아래 그림을 보면 ASP.NET에만 SMTP를 지원합니다.) 이제 본 내용으로 돌아오겠습니다. 제가 사용할 예시는 구글 SM

Naver Blog

[C#] C# CodingStandards

C# 표준코딩법입니다. 함수명은 파스칼표기법으로, 변수명은 카멜표기법으로 쓰라는 등, 여러가지를 설명해놨습니다. http://www.donetspider.com

Naver Blog

[SQLite Expert Professional] SQLite 파일 수정, 확인, 생성하기.

SQLite는 Android에 DB를 사용할때 사용됩니다. SQL이라는 단어와 비슷해서 관계가 있으려나 싶지만 SQL은 언어이고, SQLite는 데이터베이스입니다. 서버전용으로 사용되는 데이터베이스는 아니고, 응용 프로그램 전용으로 사용되는 데이터베이스 정도로 생각하면 될 것 같습니다. 그리고 안드로이드 운영체제에 탑재된 것이 SQLite입니다. SQLite에 대해 궁금하면 아래 링크타고 구경다녀오세요. http://www.sqlite.org/index.html SQLite Home Page www.sqlite.org 약간 사적인 이야기입니다. 전에 안드로이드 앱 안에 DB 파일을 넣을수 있을까 생각했었습니다. 제가 주로 사용하는 DB는 MySql인데 MySql 데이터 파일을 앱에 같이 포함시켜서 만들어야하나 고민을 했는데 SQLite를 쓰면 그냥 해결됩니다. 기존의 MySql 데이터를 SQLite 데이터로 변환한 다음 파일을 포함시키고 DML쓰니깐 그냥 쑥쑥 되더군요. 안드로이드

Naver Blog

[SoapUI] SOAP, REST 테스트 도구

SOAP와 REST를 테스트하는 도구인 SoapUI에 대해 간략하게 살펴보겠습니다. 먼저 단어를 몇개 보고 갈게요. SOAP(Simple Object Access Protocol)은 일반적으로 널리 알려진 HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜이다. SOAP은 웹 서비스에서 기본적인 메시지를 전달하는 기반이 된다. https://ko.wikipedia.org/wiki/SOAP SOAP - 위키백과, 우리 모두의 백과사전 ko.wikipedia.org REST는 네트워크 아키텍처 원리의 모음이다. 여기서 '네트워크 아키텍처 원리'란 자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반을 일컫는다. 간단한 의미로는, 웹 상의 자료를 HTTP위에서 SOAP이나 쿠키를 통한 세션 트랙킹 같은 별도의 전송 계층 없이 전송하기 위한 아주 간단한 인터페이스를 말한다. https://ko.wikipedia.org/wiki/RES

Naver Blog

[Android] Android Soap, AsyncTask , Handler이용하기 - 1

오늘은 제목에 나와있는 내용에 대해서 왜 저것들을 이용하는지 부터 설명하겠습니다. 1. Android SOAP 데이터 통신시 XML서식이 있습니다. XML의 REST와 SOAP가 있는데요. http://blog.naver.com/goodkus/220407415899 여기에 REST와 SOAP를 비교해놨습니다. 근데 왜 Android Soap라고 했냐하면... Android에서는 SOAP형식을 지원하지 않습니다. (비효율적이라는 이유로 REST만 지원하는 것으로 알고 있습니다.) 그래서 SOAP와 관련된 형식을 사용하려면 라이브러리를 하나 이용해야합니다. ksoap2라는 라이브러리인데 안드로이드에서 SOAP를 사용할수 있도록 제작되어 있습니다. 2. AsyncTask, Handle 이 두가지는 제가 예시를 들면서 설명할게요. 제가 어떤 공공데이터 API에서 값을 받아 올려고 했습니다. 메인 액티비티에서 스트림을 열고 값을 받아오려고 하니 java.lang.RuntimeException

Naver Blog

[Android] Android Soap, AsyncTask , Handler이용하기 - 2

먼저 Android Soap를 이용하는것부터 해볼게요. 소스코드 첨부해놨으니 참조해주시길 바랍니다. 소스코드의 예시는 공공데이터에서 관리하고 식약청에서 제공하는 '의약품허가정보조회'입니다. 만약 테스트를 해보실려면 공공데이터측에서 키값을 미리 받아야합니다. (소스코드에는 키값을 빼고 올려놨습니다.) 먼저 안드로이드에서 Soap가 되도록 코드를 만들어 보겠습니다. ksoap2라이브러리가 필요합니다. https://code.google.com/p/ksoap2-android/ ksoap2-android - A lightweight and efficient SOAP library for the Android platform. - Google Project Hosting code.google.com 위의 링크를 따라 라이브러리를 다운로드 받은후 프로젝트에 포함시켜주시길 바랍니다. 먼저 Service.java파일입니다. Colored By Color Scripter 1 2 3 4 5 6 7 8

Naver Blog

[Android] Android Soap, AsyncTask , Handler이용하기 - 3

이번엔 AsyncTask를 사용해보겠습니다. 예제 소스파일은 이전 게시글의 첨부파일을 확인해주세요. 먼저 AsyncTask에 대해 간단히 이야기하고 가겠습니다. http://developer.android.com/reference/android/os/AsyncTask.html AsyncTask | Android Developers developer.android.com 간단하게 설명하자면 AsyncTask는 백그라운드 작업을 하면서, UI쓰레드에 핸들러를 이용하여 작업을 할 수 있도록 해줍니다. AsyncTask 구조를 잠시 살펴보고 갈게요. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 public abstract class AsyncTask<Params, Progress, Result> { private static final String LOG_TAG = "AsyncTask"; private static final in

Naver Blog

[Android] Android Soap, AsyncTask , Handler이용하기 - 4

이번엔 안드로이드 핸들러에 대해서 이야기 해보겠습니다. 안드로이드 핸들러는 각각의 쓰레드가 통신을 하기 위한 하나의 방법이라 생각하면 됩니다. 이렇게 설명하면 와닿지 않을껍니다. 예시를 들어가며 설명해볼게요. 두 개의 섬이 있습니다. 섬1은 보수적입니다. 섬2가 교류를 하려고 해도 항상 교류를 거절했습니다. 그런데 이제 섬1이 보수적인걸 넘어서 섬2와 교류를 하려고 합니다.(내가 예시를 들어도 이건 좀 아닌걸 알고 있어요) 섬2가 섬1과 교류를 하려고 하니 섬1에는 항구가 필요합니다. 그리고 항구 주변에는 교류를 할 수 있는 공간이 필요하게 됩니다. 아래 그림처럼 되겠죠. 이제 섬2에서 선박이 오면 이제 교류를 할 수 있도록 되었습니다. 이걸 쓰레드와 핸들러로 바꿔보도록 하겠습니다. "쓰레드2가 쓰레드1에 접근하기 위해서는 쓰레드1의 핸들러를 통해 접근할 수 있으며, 해당된 영역에서 작업을 할수있다" 이렇게 표현을 할 수가 있죠. 그리고 쓰레드1은 항상 핸들러를 볼 필요가 없습니다.

Naver Blog

[Android] 폰트 설정하기

앱을 만들다보면 기본 글씨체로는 부족한걸 느낄수 있습니다. 배경에 글씨를 넣어서 이미지로 만들수도 있지만, 예를들어 같은 버튼모양에 '취소', '확인' 배경만 같고 다른 내용을 만들땐 이미지가 2개가 필요하게 되죠. 그래서 같은 배경에 글씨만 따로 입력하여 이미지 갯수를 줄일 필요가 있습니다. 폰트 변경을 하는것을 해보겠습니다. 우선 가장 기본적으로 텍스트뷰 하나만 바꿔보도록 할게요. 일단 글씨체를 바꿔야겠죠? 글씨체 파일은 프로젝트안의 assets폴더에 넣어주세요. assets폴더가 뭐냐면, 네이버 어학사전에 보면 자산이라는 뜻이나옵니다. 안드로이드에서는 해당 어플리케이션에 필요한 외부자료를 넣어두고 사용할수 있게 한다고 생각하면 됩니다. 예를들어 폰트나 SQL DB를 생성해서 넣어둔걸 assets를 통해서 사용할수 있습니다. 저같은 경우는 assets폴더 안에 font라고 구분지었습니다. 폰트는 네이버에서 무료로 제공하는 글씨체입니다. 이제 소스코드를 보도록 할게요. Colore

Naver Blog

[Android] 커스텀 다이얼로그 만들기

이번엔 커스텀 다이얼로그(Custom Dialog)를 만들어보겠습니다. 사용자 다이얼로그라고 해도 뭐..... 그냥 자기가 뷰를 하나 만든다고 생각하면 됩니다. 이번에 예시로 들것은 경고창입니다. 먼저 오늘 만들걸 보여드릴게요. 전체적인 소스코드는 첨부해놓을게요. 전에 제가 만든 '만수무강'이라는 앱에서 소스코드를 들고왔습니다. 그 앱이랑 디자인이 비슷합니다. 암튼, 뒤쪽에 버튼을 누르면 저렇게 커스텀된 다이얼로그를 볼수 있습니다. 일단 기본적으로 다이얼로그를 상속받아서 제작을 합니다. 먼저 다이얼로그부터 디자인을 해보겠습니다. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 <TextView android:id="@+id/dialog_alert_helper" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="marquee" andro

Naver Blog

[Android] Fragment 간단하게 사용하기

오늘은 Fragment에 대해 사용해 보도록 하겠습니다. 우선 Fragment가 왜 나오게 됐는지 살펴볼게요. http://developer.android.com/guide/components/fragments.html Fragments | Android Developers developer.android.com Fragment는 테블릿의 등장으로 동적인 UI지원과 기존 레이아웃의 재활용을 위해 생겼습니다. 3.0(허니콤)에부터 등장했고요. 간단하게 정리를 하자면, Fragment는 하나의 Activity를 좀더 세부적으로 나누는 용도로 생각하면 될겁니다. 하나의 Activity에 2개 이상의 레이아웃이나 Activity는 호출이 불가능 하잖아요? 이걸 지원한다고 생각하면 됩니다. 오른쪽 그림은 Fragment의 life cycle입니다. 개발자페이지에 있는 그림입니다. 해당 페이지에서는 3가지에 대해 이야기를 해놨습니다. 간단하게 번역하자면, onCreate() 프래그먼트의 각종

Naver Blog

[Android] Fragment 활용하기 (FragmentManager / FragmentTransaction)

이번에는 Fragment를 활용하기 위해서 FragmentManager와 FragmentTransaction에 대해 살펴보겠습니다. http://developer.android.com/guide/components/fragments.html Fragments | Android Developers developer.android.com 일단 먼저 필요한 것은, 프래그먼트에 대한 식별자가 필요합니다. 프래그먼트에 식별자를 주는 방법은 세 가지가 있습니다. 1. android:id를 통해서 2. android:tag를 통해서 3. 뷰에서 ID를 주는 것. 세 가지 방법이 있는데 tag를 사용하는 방법이 가장 많이 사용됩니다.(개발자 문서에서) 이렇게 정의한 식별자로 프래그먼트를 교체하는 연산을 하게 됩니다. 이 연산에 필요한 것들이 FragmentManager와 FragmentTransaction입니다. 간단하게 정리를 해보면 FragmentManager는 액티비티에서 Fragment를

Naver Blog

스마트 포인터(smart pointer)

스마트 포인터(smart pointer) : 메모리에 동적으로 할당한 객체를 해당 구문이 끝날 쯤에 자동으로 회수하는 방법. 실수를 줄여준다. (신경쓸게 줄어든다) Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 #include <iostream> using namespace std; class Point { int x; int y; public: Point(int _x = 0, int _y = 0) :x(_x), y(_y) {} void Print() const { cout << x << ',' << y << endl; } }; class PointPtr { Point *ptr; public: PointPtr(Point* p) :ptr(p) {} ~PointPtr() { del

Naver Blog

스마트 포인터(smart pointer)2

이전의 게시글에선 팩토리 함수에서 객체를 생성한 다음에 스마트포인터로 넘겨주었다. delete를 깜박하고 사용하지 않는 것을 방지하기 위해서 스마트포인터를 쓰는데 팩토리 함수로 객체를 생성해서 스마트포인터로 넘겨줘야 하는것을 깜박할 수 있다. 그래서 팩토리 함수에서 스마트포인터에 객체를 담은 상태로 리턴하도록 코드를 만들었다. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 #include <iostream> #include <memory> using namespace std; struct deleter { template<typename T> void operator()(T* p) { cout << "delete" << endl; } }; class Point { int x; int y; Point

Naver Blog

타입 변환 연산자 오버로딩

반환 타입을 지정할 필요 없음. Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 #include <iostream> using namespace std; class A {}; class B { public: operator A() { cout << "operator A() 호출" << endl; return A(); } operator int() { cout << "operator int() 호출" << endl; return 10; } operator double() { cout << "oerator double() 호출" << endl; return 5.5; } }; int main() { A a; int n; double d; B b; a = b;//암시적 호출 n = b; d = b.operator doubl

Naver Blog

함수 포인터

함수 포인터에 대해 간략한 정리 소스코드 예시 : 뇌를 자극하는 C++ STL / 저자 공동환 Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 #include <iostream> using namespace std; void print(int n) { cout << "정수 : " << n << endl; } namespace A { void print(int n) { cout << n*n << endl; } } class B { public: static void print(int n) { cout << n / 2 << endl; } void print2(int n,

Naver Blog

서버 코드, 클라이언트 코드

서버 코드 : 어떤 기능이나 서비스를 제공하는 코드 클라이언트 코드 : 기능을 제공받는 코드 일반적으로 서버 코드는 하나지만 서버 코드를 사용하는 클라이언트 코드는 여러개. 클라이언트 코드가 서버 코드를 호출하면 콜(call)이라 하고, 서버 코드가 클라이언트 코드를 호출하면 콜백(callback)이라 한다. 콜백 메커니즘을 구현하려면 클라이언트가 서버를 호출할 때 서버에 클라이언트의 정보를 제공해야 한다. 서버에 클라이언트 정보를 제공하는 방법 중 대표적인 방법이 함수 포인터 매개변수를 이용해 콜백 함수의 주소를 전달하는 방법이다. (그 외에 함수 객체, 대리자, 전략 패턴등을 사용) 함수 포인터를 이용한 콜백 메커니즘 구현 Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #include <iostream> using

Naver Blog

함수 객체

‘함수 객체’는 함수처럼 동작하는 객체이므로 다른 멤버 변수와 멤버 함수를 가질 수 있고 일반 함수에서 하지 못하는 지원을 받을 수 있다. 또한, 함수 객체의 서명이 같더라도 객체타입이 다르면 서로 전혀 다른 타입으로 인식한다. 속도도 일반 함수보다 함수 객체가 빠릅니다. 함수의 주소를 전달하여 콜백하는 경우 이 함수 포인터는 인라인될 수 없지만(함수 포인터는 함수가 있어야 하므로 인라인 함수의 복사본 함수를 만듬) 함수 객체는 인라인될 수 있고, 컴파일러가 쉽게 최적화 할 수 있다. 함수객체 예시 Colored By Color Scripter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include <iostream> using namespace std; class Adder { int total; public: explicit Adder(int n = 0) :total(n) {} int operator()(int n)

Naver Blog

[Design Pattern] 스트리티지 패턴(Strategy Pattern)

* HeadFirst - Design Patterns의 Java로 작성된 예제를 C++로 수정한 것입니다. 이론을 이해할때는 별 상관 없었는데 C++로 코드를 만들어볼려고하니 생각이 안나더군요.(java의 interface가 없잖아요.) 예제는 아무튼 C++로 열심히 만들어봤어요. 간단간단히 핵심되는 내용도 정리해볼게요. 잘못된 부분 있으면 댓글 또는 쪽지 남겨주세요. */ 스트래티지 패턴(Strategy Pattern) 알고리즘군을 정의하고 각각을 캡슐화하여 바꿔 쓸 수 있게 만듭니다. 스트래티지 패턴을 이용하면 알고리즘을 활용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있습니다. 예제의 내용은 오리 객체에 대해서 행동(알고리즘군)들을 정의한 것입니다. 일반 오리의 경우는 꽉꽉 울면서 날 수도 있습니다. 고무 오리의 경우는 삑삑 울면서 날 수가 없습니다. 기계 오리의 경우는 아무 소리없이 날 수 있습니다. 나무로 깎아서 만든 오리는 아무 소리없이 날 수 없습니다. 이러한 경우

Naver Blog

[Design Pattern] 옵저버 패턴(Observer Pattern)

/* HeadFirst - Design Patterns의 Java로 작성된 예제를 C++로 수정한 것입니다. 이론을 이해할때는 별 상관 없었는데 C++로 코드를 만들어볼려고하니 생각이 안나더군요.(java의 interface가 없잖아요.) 예제는 아무튼 C++로 열심히 만들어봤어요. 간단간단히 핵심되는 내용도 정리해볼게요. 잘못된 부분 있으면 댓글 또는 쪽지 남겨주세요. */ 옵저버 패턴(Observer Pattern) 한 객체(subject)의 상태가 바뀌면 그 객체(subject)에 의존하는 다른 객체들(observer)한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의합니다. subject와 observer는 약하게 결합되어 있습니다. Subject가 observer에 대해서 아는 것은 observer가 특정 인터페이스를 구현한다는 것뿐입니다. 느슨하게(약하게) 결합하는 디자인을 사용하면 변경 사항이 생겨도 무난히 처리할 수 있는 유

Naver Blog

[Design Pattern] 데코레이터 패턴(Decorator Pattern)

/* HeadFirst - Design Patterns의 Java로 작성된 예제를 C++로 수정한 것입니다. 이론을 이해할때는 별 상관 없었는데 C++로 코드를 만들어볼려고하니 생각이 안나더군요.(java의 interface가 없잖아요.) 예제는 아무튼 C++로 열심히 만들어봤어요. 간단간단히 핵심되는 내용도 정리해볼게요. 잘못된 부분 있으면 댓글 또는 쪽지 남겨주세요. */ 데코레이터 패턴 데코레이터 패턴에서는 객체에 추가적인 요건을 동적으로 첨가합니다. 데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공합니다. 데코레이터에서는 자기가 감싸고 있는 구성요소의 메소드를 호출한 결과에 새로운 기능을 더함으로써 행동을 확장합니다. 데코레이터 패턴 원리 서브클래스를 만드는 방식으로 행동을 상속 받으면 그 행동은 컴파일시에 완전히 결정됩니다. 게다가 모든 서브클래스에서 똑같은 행동을 상속 받아야 합니다. 하지만 구성을 통해서 객체의 행동을 확장하면 실행

Naver Blog

[Design Pattern] 팩토리 메소드 패턴(Factory Method Pattern)

/* HeadFirst - Design Patterns의 Java로 작성된 예제를 C++로 수정한 것입니다. 이론을 이해할때는 별 상관 없었는데 C++로 코드를 만들어볼려고하니 생각이 안나더군요.(java의 interface가 없잖아요.) 예제는 아무튼 C++로 열심히 만들어봤어요. 간단간단히 핵심되는 내용도 정리해볼게요. 잘못된 부분 있으면 댓글 또는 쪽지 남겨주세요. */ 팩토리 메소드 패턴 - 팩토리 메소드는 객체 생성을 처리하며, 팩토리 메소드를 이용하면 객체를 생성하는 작업을 서브클래스에 캡슐화시킬수 있습니다. 이렇게 하면 수퍼클래스에 있는 클라이언트 코드와 서브클래스에 있는 객체 생성 코드를 분리시킬 수 있습니다. - 객체를 생성하기 위한 인터페이스를 만듭니다. 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정하도록 합니다. 팩토리 메소드를 이용하면 인스턴스를 만드는 일을 서브클래스로 미룰수 있습니다. 의존성 뒤집기 원칙 (Dependency Inversion Prin

Naver Blog

[Design Pattern] 추상 팩토리 패턴(Abstract Factory Pattern)

/* HeadFirst - Design Patterns의 Java로 작성된 예제를 C++로 수정한 것입니다. 이론을 이해할때는 별 상관 없었는데 C++로 코드를 만들어볼려고하니 생각이 안나더군요.(java의 interface가 없잖아요.) 예제는 아무튼 C++로 열심히 만들어봤어요. 간단간단히 핵심되는 내용도 정리해볼게요. 잘못된 부분 있으면 댓글 또는 쪽지 남겨주세요. */ 추상 팩토리 패턴 서로 연관된, 또는 의존적인 객체들로 이루어진 제품군을 생성하기 위한 인터페이스를 제공합니다. 구상 클래스는 서브 클래스에 의해 만들어지죠. 인터페이스를 이용하여 서로 연관된, 또는 의존하는 객체를 구상 클래스를 지정하지 않고도 생성할 수 있습니다. 추상 팩토리를 통해서 제품군을 생성하기 위한 인터페이스를 제공할 수 있습니다. 이 인터페이스를 이용하는 코드를 만들면 코드를 제품에 생산하는 실제 팩토리와 분리시킬 수 있습니다. 이렇게 함으로써 서로 다른 상황별로 적당한 제품을 생산할 수 있는 다

Naver Blog

열혈강의 MFC Chapter 5. 혼자 해보는 실습예제

열혈강의 MFC Chapter 5. 혼자 해보는 실습예제. 1. KeyMove 예제에서 자식 윈도우가 위아래로 이동할 수 있도록 코드를 추가해봅시다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 void CKeyMoveView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다. CPoint ptChild; CRect Rect; m_wndChild.GetWindowRect(&Rect); ptChild.x = Rect.left; ptChild.y = Rect.top; ScreenToClient(&ptChild); switch (nChar) { case VK_LEFT: ptChild.x -= 10; break; case VK_RIGHT: ptChild.x

Naver Blog

개발 문서

Prog 개발 문서 은수의 다락방 2016. 12. 15. 0:15 이웃추가 본문 기타 기능 Node.js https://nodejs.org/docs/latest/api/index.html Index | Node.js v7.2.1 Documentation nodejs.org

Naver Blog

[MariaDB] ERROR 1524 (HY000) : Plugin 'unix_socket' is not loaded

환경 OS : Ubuntu 16.04 에러 로그인 하려니 에러뜸. ERROR 1524 (HY000) : Plugin 'unix_socket' is not loaded 관련 URL 검색해보니 해당 조치법이 나옴. https://www.linuxbabe.com/mariadb/plugin-unix_socket-is-not-loaded-2 How to Fix MariaDB Plugin 'unix_socket' is not loaded Error The Error "Plugin 'unix_socket' is not loaded" is commonly seen on Ubuntu 15.04/15.10/16.04. This tutorial shows how to fix it. What is Unix_Socket plugin? www.linuxbabe.com 작업 $ sudo systemctl stop mariadb 서비스 중지. $ mysqld_safe --skip-grant-tables & --

Naver Blog

[MariaDB] version upgrade

MariaDB 버전 업그레이드 입니다. 환경 OS : ubuntu 16.04(xenial) MariaDB : 10.0 작업 DB 접근 후, MariaDB> set global innodb_fast_shutdown=0; 설정. $ sudo service mysql stop $ sudo apt-get remove mariadb-server DB 서비스 종료. mariadb server 삭제. $ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8 해당 서버에 접근할 키 등록. 16.04 이전 버전이면 아래의 키 등록. $ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db $ sudo add-apt-repository 'deb [arch=amd64,arm64,i386,pp

Naver Blog

파일 내용 검색

내용검색 windows findstr /S /N /L /C:"search" *.* linux grep -r -n -H -i "search" ./* 회사에서 작업도중, 정체불명의 에러메시지가 나타났다. 어디서 발생한 에러인지 확인하지 못하였기 때문에, Qt의 원본소스코드에서 해당 값을 추려보았다. 정체불명의 에러메시지는 Qt쪽과 상관없었지만, 다음에도 유용할 것 같아 추려보았다. Windows 파일 내용 검색 회사에서 나왔던 에러가 정말로 정체불명의 에러(unknown error)였다... findstr /S /N /L /C:"\"unknown error\"" *.* 옵션은 /S : 현재 디렉토리 및 하위 디렉토리 검색. /N : 일치하는 각 줄 앞에 줄번호 출력. /L : 찾는 문자열을 글자 그대로 사용. /C : 지정된 텍스트를 글자 그대로 찾는 문자열로 사용. ------ /R : 정규식 사용. /I : 대소문자 구분. 이정도 옵션을 다른 경우에도 많이 쓸 듯 싶다. Linux

Naver Blog

Qt Creator 한글 문제.

1. Qt Creator 파일 인코딩 확인. Qt Creator - Tools - Option - Text Editor - Behavior - File Encodings 2. 코드 QTextCodec* codec = QTextCodec::codecForName("EUC-KR"); QString result = codec->toUnicode("가b다"); Qt 작업하다 이상한곳에서 멘탈 터질뻔했다. 결론부터 말하자면 IDE의 인코딩 문제였다. (왜 이걸 제일먼저 생각하지 못했을까.. 아직도 멍청한듯 싶다.) 1. 한글을 출력해보았다. 첫번째로 qDebug로 출력하고 두번째로 입력받아서 출력했다. 그러나 결과는 첫번째는 깨지고, 두번째는 출력되었다. .....?? 디버그로 돌려봤다. .....?? 소스코드에 한글을 넣어놓은 부분이 터졌다. 0xfffd로 되어있는 것을 볼수 있다. (여기서 알아차렸어야했다.) Qt가 맛이간건가 싶어서 영어로도 출력을 해봤지. 근데 잘 나오지. 그래서 한글

Naver Blog

EQwear EV3 _ 아이리버 버티컬마우스

구매 원인 1. 반환갑이 지나니 마우스를 오래잡고 있으면 손목이 아프다. 늙음 2. 멀티페어링이 되는 마우스가 필요하다! 상품 선택 이유 1. 그냥 저렴함. 딱히 다른 이유가 없음. 21.07.14에 검색한 화면이다. 버티컬 마우스에 멀티페어링이 되는 검색페이지이다. 선택지는 2개다. 로지텍이냐 아이리버냐. 돈만 있었다면 로지텍 제품 샀다. 일단 속는셈 치고 질렀다. 아마 나처럼 생각하는 사람들 많을 것이다. 그래도 아이리버의 키보드가 생각보다 괜찮기 때문에 그정도 값어치는 하겠지라고 생각중이다. 2. AS 보증기간 요새는 로지텍도 대부분 1년이더라. 1년 지나서 고장나더라도... 새로 사기엔 부담되지 않는 금액이다. 상품 사진 음..... 상품을 받고 나서 깨달았다. 이거 약 3만원정도의 제품이다. 로지텍과 비교하지 마라. 마우스라 특별한 내용은 없다. 그러나 이 설명서를 제품 개봉후에 다시 찾아보게 되었다. 그것도 무려 두번씩이나. 그 이유는 이후에 설명한다. 첫 인상은....

Naver Blog

WSL(Windows Subsystem for Linux) 설치

작성일 : 2021.07.18 개요 Windows 에서 Linux를 가상으로 돌려보자. 필요환경 VT-x 지원 CPU 정보에서 VT-x가 지원되는지 확인 필요. (저가 보급형이 아닌 이상 왠만하면 다 지원함.) 필자가 테스트하는 테스트 PC의 CPU 정보. 요약 1. powershell 관리자 권한, 아래 내용 실행. dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart 2. 재부팅 3. 윈도우 업데이트 4. powershell 관리자 권한, 아래 내용 실행. dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart 5. Linux 커널 업데이트 패키지 다운로드 및 설치. https://docs.microsoft.com/ko-kr/windows/wsl/install-manu

Naver Blog

Docker Desktop 설치

작성일 : 2021.07.18 개요 윈도우에서 간편하게 도커를 돌려보자. 필요환경 WSL 설치 (아래 링크 참고) https://blog.naver.com/goodkus/222436368758 WSL(Windows Subsystem for Linux) 설치 작성일 : 2021.07.18 개요 Windows 에서 Linux를 가상으로 돌려보자. 필요환경 VT-x 지원 CPU 정보... blog.naver.com 요약 1. Docker Desktop WSL2를 다운 (https://docs.docker.com/docker-for-windows/wsl/#download) 2. 설치 진행 후, 재부팅. 3. 실행 후, [Resources] - [WSL INTERGRATION]로 들어가 토글 설정. 4. Docker가 동작하는 것 확인. 작업과정 공식문서 보면 다 나와있다. 그냥 한번 따라해본다. 1. 'Docker Desktop WSL2'를 다운받는다. https://docs.docker.

Naver Blog

[니고라멘] - 수내역 3번출구

친구와 간만에 밥이나 먹기로 했다. 중간지점을 한번 검색해보니, 괜찮은 라멘집이 보였다. 라멘집이 두개가 나왔는데, 고심끝에 '니고라멘'집으로 가기로 했다. 일단... 날도 더우니깐 역 근처에 있는 식당을 원했고, 가격도 나름 한끼 먹기에는 합당한 가격으로 보였다. 그러나 여기로 정한 결정적인 이유가 있다. 그 이유는 조금 있다가 나온다. 3번 출구로 나와서 조금만 걸으면 바로 보인다. 가게는... 음... 일본 라멘집 같구나.... 생각이 든다. 대기석에 있는 주전자는 뭘까? 배가 고파서 멍청해졌는지.... 가게 바깥에 있는 메뉴판을 못찍었다. 네이버에서 제공하는 메뉴판을 가져왔다. 메뉴는 구성이 간단하다. 라멘 두 종류에, 면선택(가는/굵은)과 고명추가. 같이 먹을만한 사이드도 2개였다 . 교자와 가라아게. 그러나 특이한 것이 있었다면, 바로 점심생맥주로 한잔에 1,000원에 파는 것이다. 솔직히 이것때문에 여기를 골랐다. 가격대가 라멘 하나에 생맥 한잔이 만원이 안되니, 직장인

Naver Blog

Visual Studio의 Alt + F12가 작동 안함.

서두 전산 카테고리에 있는 게시글은 필자가 전산업무를 맡으면서 발생했던 별별 일들을 공유하려고 작성한다. 문제상황 회사에서 작업을 하고 있는데, 난데없이 키보드가 고장났다고 함. 새걸로 교체를 해줬는데도 키보드가 이상하다고 함. 하아... 회사에서 전산쪽도 업무를 진행하면, 별별 일들이 다 들어온다. 세부적으로 내용을 확인해보니, Visual Studio에서 Alt + F12를 눌러 함수 정의 피킹으로 코딩을 하는데, 어느순간부터 단축키가 사용이 안된단다. 일단 이전의 키보드도 멀쩡했다. 이게 안되서 키보드를 하나 교체했다. 새걸로. 이미지 출처 : https://docs.microsoft.com/ko-kr/visualstudio/ide/media/peekwindow.png?view=vs-2019 원인 GeForce Experience 설정에 FPS 카운터를 켜고 끄는 Alt + F12와 충돌되더라. 나는 평소에 개발환경을 설정할때, 그래픽드라이버만 선택해서 설치하다보니 저런 현상을

Naver Blog

자동차보험 보험료 조회혜택

작성일 2021.09.21 서론 자동차 보험을 갱신했다. 이전에는 각 자동차보험 조회 혜택을 얻을거라고 막 돌아다녔지만, 요새는 시간이 시간인지라 간단하게 확인하고 넘어갔다. 쿠팡에 문제생기고 물건 구매를 네이버로 옮기면서 네이버페이로 보험료 조회 혜택을 받기로 하였다. (사실 이게 제일 간단해보이더라) 진행 네이버 페이에서 [혜택/쿠폰] 항목으로 들어가면, '너가 이렇게 하면 포인트를 줄게'라고 해놓은 부분이 있다. 필터에서 '보험/금융'을 선택해서 보면 편하다. 옛날에는 좀 여러군데 있었던 것으로 기억하는데, 항상 내가 할때만 이벤트가 많이 사라지더라. 여기서 보험료 조회 항목만 확인하면 된다. 우선 하나의 항목을 클릭하면, 아래처럼 창이 나온다. 해당 방법을 통해 접속을 해야 포인트를 받을수 있다. (KB라서 그런지 빵순이님이 나오네) 자동차 보험료를 조회하면 아래의 창이 나온다. 짜잔! 이벤트에 참가했으니, 포인트 쿠폰을 부내준다고 한다. 휴대폰 번호를 입력하면 쿠폰번호가 날

Naver Blog

자동차보험 캐롯(Carrot) 변경 보험료 비교

작성일 2021.09.21 서론 원래 출퇴근용으로 차를 구입했다가... 회사가 자차로 출근을 할 수 없는 곳으로 이전을 해버렸다. 잠실로.... 매일 출퇴근으로 타고다니다가, 대중교통으로 다니니 이건 뭐.... 일주일에 많이 타도 한번이더라. (장보는것도 퇴근하는 길에 걸어서) 그러다가 별 생각없이 조금 안탔다가 약속생겨서 시동걸어보니 배터리 방전되고... 차가 없으면 불편한 몸이 되어버렸다. 주행거리 특약이 있다 하더라도 기본 보험료는 무시하지 못하니 이번기회에 타는만큼 낸다는 보험으로 바꿔보았다. (구미호 누님이 춤추고 있어서 그런건 아니다) 출처 : 유투브 캐롯 광고 보험 비교 내가 타고다니는 차는 12년식 올뉴모닝이다. 이번년도에.... 보험료 비교 계산해놓은걸.... 캡쳐떠놓고 삭제해버렸다. 아래 가격을 보면 일백만원에 가까운 금액이 보인다. (이 금액은 작년에 가입할 때의 금액이다.) 해당 동일 조건으로 이번에 견적을 보니, 약 750,000원 정도 나오더라. 금액이 크게

Naver Blog

엑셀 셀병합 단축키

작성일 : 2021.09.28 개요 엑셀에서 가장 많이 사용하는 기능은 '셀 병합'이지 않을까 싶다. 그러나 셀 병합 기능에 대한 단축키는 설정된 것이 없다. 그래도 다른 방법을 이용하여 단축키처럼 사용이 가능하다. 이거에 대해 다뤄볼까 한다. 요약 [옵션] - [빠른 실행 도구 모음] - {모든 문서 (기본값)} 항목에 '병합하고 가운데 맞춤' 추가 어떻게? 두가지의 기능을 섞어서 사용할 것이다. 첫번째는 MS Office의 빠른실행도구 편집이다. 프로그램 상단 좌측에 있는 메뉴가 '빠른 실행 도구' 이다. 빠른실행도구 이 부분을 사용자가 별도로 커스텀이 가능하다. 지금 예시 이미지의 첫번째 아이콘을 보면 셀 병합 아이콘이 들어있다. 두번째는 리본메뉴에서 제공하는 단축키이다. 리본메뉴 상단에 모여져 있는 메뉴구성 형태를 리본(ribbon) 메뉴라고 한다. 엑셀이나 워드를 열어놓고 [Alt]키를 누르면, 위의 이미지처럼 문자들이 나온다. 저 상태에서 해당하는 문자나 숫자를 누르면,

Naver Blog

Ubuntu에 Docker 설치.

작성일 : 2021.10.01 개요 Ubuntu 환경에서 Docker 설치. 작업환경 Ubuntu : 20.04 요약 $ sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg $ echo \ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null $ sudo

Naver Blog

노트북 화면 덮고 사용하기

작성일 : 2022.01.03 문제상황 노트북 화면을 사용하지 않고, 연결된 큰 모니터를 이용해서 작업을 하는데, 노트북의 모니터만 덮으면 시스템이 종료되거나 절전모드로 빠지는 상태로 변경됨. 연결된 모니터로 작업을 하면서, 모니터는 덮어두고 싶음. 원인 시스템 설정만 변경해주면 됨. 해결방법 제어판의 [하드웨어 및 소리] - [전원 옵션]으로 들어간다. 좌측 메뉴에 '덮개를 닫으면 수행되는 작업 선택' 메뉴가 있다. 해당 메뉴를 클릭한다. 일반 데스크탑과는 다르게 '덮개를 닫을 때'라는 항목이 있다. '배터리 사용'은 전원이 연결되지 않고 사용할 경우 어떻게 할 건지 설정하는 것이며, '전원 사용'은 전원이 연결된 상태에서 어떻게 할 것인지 설정하는 것이다. '덮개를 닫을 때'의 설정을 '아무 것도 안 함'으로 설정해 주면 된다. 나는 집에서만 사용하기 때문에 '전원 사용'만 세팅하였다. 불편한 점 노트북 화면을 안쓰다보니 덮어놓은 채로 구석이 나둬도 되서 좋은데, 단점이 있더라.

Naver Blog

Windows 11 Upgrade

작성일 : 2022.01.03 개요 Windows 11 업그레이드 작업환경 intel processor의 경우 대부분 8세대 이후부터 지원. 요약 1. 요구사항 확인. 2. [Windows 참가자 프로그램] 등록 및 설정 3. [Windows 업데이트]에서 이후 11 다운로드 진행 4. Windows 11 설치 작업과정 우선 Windows 11로 업그레이드가 가능한지 확인해야한다. [Windows 업데이트 설정]으로 들어가서 아래의 메시지가 나온다면 Windows 11이 동작 가능하다. 하드웨어 사양은 CPU만 보면 될듯하다. 나머지 옵션은 별로 특별한 것이 없다. TPM이라는 것이 보여서 검색해보니, 메인보드에 별도로 붙어 있는 칩이라고 한다. https://support.microsoft.com/ko-kr/topic/tpm%EC%9D%B4%EB%9E%80-705f241d-025d-4470-80c5-4feeb24fa1ee TPM이란? TPM이란? TPM(신뢰할 수 있는 플랫폼 모듈

Naver Blog

디스크 무료 복구툴 Recuva

작성일 : 2022.01.23 개요 노트북 전원이 발열 문제로 꺼져버리면서, 외장으로 연결해두었던 HDD가 맛이 가버렸다. 액세스 할 수 없습니다. 더이상 쓰지 못합니다! 이전에 사용하던 툴을 찾다보니, 온갖 상용툴들이 같이 검색되더라. 나중에 문제가 생겼을 때, 좀 빠르게 작업하기 위해서 글을 남겨둔다. 작업환경 Windwos 7 이상이면 동작할 것이다. 윈도우 전용 프로그램이다. 요약 1. https://www.ccleaner.com/recuva 접속하여 다운 2. 프로그램 실행. 3. 옵션에서 Deep scan, restore folder structure 선택. 4. 디스크 스캔 후, 복구 작업과정 디스크 복구를 하는 소프트웨어들은 되게 많다. 상용으로 쓰는 프로그램들이 복구율이 조금 더 좋을지도 모르지만, 그렇게 큰 차이가 없다고 개인적으로 생각한다. 이전에 여러 소프트웨어를 사용해보았지만, 나에게는 recuva가 가장 쓰기쉽고 편리하더라. 1. https://www.ccl

Naver Blog

USB 부팅 디스크 만들기, Rufus

작성일 : 2022.01.24 개요 매번 USB로 부팅 디스크 만들때마다 이름이 기억안나다보니 글을 쓰게 됨. 작업환경 Windows7 이상이면 동작함. 부팅 디스크로 만들 iso 파일과 USB 준비. 요약 1. https://rufus.ie/ko/ 접속, 다운로드. 2. 이미지 선택 후, 부팅 디스크 제작. 작업과정 Rufus가 되게 좋은 부팅 디스크 툴이다. 일단 다른 프로그램에 비해 작업속도가 빠르며, 속도 비교 (https://rufus.ie/ko/) 여러 ISO 이미지를 지원한다. 이거 하나만 알고있어도 왠만한 부팅 디스크를 다 만들수 있다. 지원하는 부팅 이미지 (https://rufus.ie/ko/) 그리고 오픈소스로 제공되는 프로그램이다. 1. 일단 Rufus 사이트로 접속한다. https://rufus.ie/ko/ 그리고 다운로드 받으면 된다. 다운로드 페이지 (https://rufus.ie/ko/) 2. 별도의 설치 없이 동작된다. [장치] 항목에서 부팅 디스크를

Naver Blog

Vue.js 개발환경 설정 (vs code)

작성일 : 2022.01.30 개요 매번 설정할때마다 찾기 귀찮아서 작성함. 작업환경 Windows OS VisualStudio Code Chrome 요약 1. Node.js 설치 (https://nodejs.org/ko/) 2. VisualStudio Code 설치 (https://code.visualstudio.com/) 3. VS Code Extension 설치 3-1. Vue VS Code Extension Pack (https://marketplace.visualstudio.com/items?itemName=sdras.vue-vscode-extensionpack) 3-2. Live Server (https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer) 4. Chrome 확장 플러그인 설치 4-1. Vue.js devtools (https://chrome.google.com/webstore/detai

Naver Blog

자동차보험 캐롯(Carrot) 플러그 연결 및 후기

작성일 : 2022.02.09 캐롯 플러그 도착하다 사실 도착한지는 한참 되었고, 사용한지는 다섯달정도 된거 같다. 포장 뜯을때부터 보겠다. 실제 캐롯 사용 후기가 궁금한 사람은 스크롤을 밑으로 내리면 된다. 어느날 집에 도착하니 작은 박스가 하나 왔더라. 캐롯 플러그 언박싱 뜯어보니 당근 색깔을 연상시키는 플러그 박스가 눈에 확 들어온다. 캐롯 플러그 언박싱 개봉하면 위에는 설명서가 들어있다. 설명서의 내용은 아래에 다시 나올 것이다. 캐롯 플러그 언박싱 캐롯 플러그가 들어있는 모습이다. 캐롯 플러그 언박싱 꺼내보면 등록한 자동차 번호가 스티커로 붙어있고, 가운데 SOS버튼이 있다. 나중에 사고날때 누르면 되는 버튼이다. (사고 났을때도 정상동작한다는 가정하에) 캐롯 플러그 언박싱 설명서의 주요내용이다. 일단 시거잭에 꽂으면 된다. 단, 꽂고나서 초록색 불이 들어오는지 확인까지 해야한다. 캐롯 플러그 주요 설명 SOS버튼에 대한 안내사항이 있는데, 바로 연락을 준다는 것이 참 좋은

Naver Blog

[대림국수 을지로점] - 을지로 대림상가 3층

작성일 : 2022.02.14 오늘 휴가 쓴 김에 전시회도 보고 식도락 기행도 갔다. 을지로에서 누군가 추천한 글을 보고 갔는데 생각보다 괜찮았다. 일단 먼저 총평을 말하자면 - 가격도 나쁘지않고 - 맛있으며 - 혼자서 혼술하기도, 친구랑 간단히 먹기도 나쁘지 않은 곳이다. - 다음에 재방문 의사가 있다. 위치 위치는 2호선의 '을지로 3가'역과 '을지로 4가'역 사이에 있는 대림상가에 있다. 처음에 들어갈때 위치를 못찾았는데 정확한 위치는 '대림상가 라열'이다. 라열은 건물안에 있는게 아니라 건물 외곽? 발코니? 에 있으니, 참고 바란다. (라열을 못찾아서 건물안을 두바퀴 돌았다) 대림국수 을지로점 서울특별시 중구 을지로 157 대림상가 3층 라366호 메뉴 대림국수 메뉴판 여기는 점심 메뉴와 저녁 메뉴가 다르더라. 점심에는 직장인들 식사용으로 운영하는 것 같았고, (3시까지) 저녁에는 퇴근한 사람들이 모여서 한잔하는 장소로 운영하는 것 같았다. (3시이후) 참고로 길 못찾아서 가

Naver Blog

[번안/파파고번역] I wanna see you - Abe Mao

작성일 : 2022.02.16 요새 하루종일 반복해서 듣는 노래인데, 가사내용을 몰라도 들었다. 가사 내용을 보니 마음에 쏙 들었다. 그래서 내친김에 한글로 따라 부르게 음에 맞도록 번안까지 도전해보았다. 번안 파파고 번역 I wanna see you Hold me bady Smile me baby Say love me (간주) ただ会いたくなった 타다 아이타쿠낫-타 그냥 보고싶어졌-어 それだけで乗り込んだバス 소레다케데 노리콘-다 바스 그이유로만 올라타-는 버스 この気持ちに理由なんてないのさ 코노 키모치니 리유우난테 나이노사 지금 이기분엔 이유따위는 없는걸- 「急にどうしたの」って君は笑う 큐우니 도오시타노 테키미와 와라우 '갑자기 무슨일이야?' 무심하게 넌웃지 あぁそのたまらなく愛しい笑顔を 아아 소노 타마라나쿠이-토-시이 에가오오 아아 정말 못참아사랑이 가-득한 그-미소를 見たくなったんだ 미타쿠-낫타다 느끼고-싶어서 I wanna see you Hold me bady Smile me bab

Naver Blog

[능라도] - 운중동 본점

작성일 : 2022.02.17 위치 본점의 위치가 운중동이다. 운중동 자체가 차없으면 가기 불편하기 때문에 차 타고 가는것을 추천한다. 주차는 많이 걱정할 필요 없다. 가게전용 주차장이 있으며, 발렛파킹 비용 2,000원이면 도착하자마자 차 나두고 가게안으로 들어갈 수 있다. 능라도본점 경기도 성남시 분당구 산운로32번길 12 메뉴 대체적으로 가격대가 조금 있다. 평양냉면 한그릇이 14,000원이다. 사이드 메뉴도 대체적으로 가격이 있는편. 음식사진은 아래에 나온다. Previous image Next image 능라도 운중동 본점 메뉴판 사진 위 메뉴판 내용을 정리하자면 다음과 같다 메뉴 가격 평양냉면 14,000원 10,000원 (후식) 비빔면 14,000원 10,000원 (후식) 평양온면 14,000원 평양온반 12,000원 접시만두 13,000원 7,000원 (반접시) 만두국 13,000원 수육 45,000원 (300g) 가자미식해 30,000원 (300g) 제육 28,000

Naver Blog

[살바도르 달리전] - 동대문디지털프라자(~22.03.20)

살바도르 달리전 - <기억의 지속> 마그넷 이 그림을 아는가? 많은 이들이 미술 교과서에서 보았던 그림일 것이다. 그렇다. 이번에 이 사람의 특별 전시가 열려서 다녀왔다. (하아... 멍청하게 전시회 포스터가 나오는 입구를 못찍었다) 평일에 다녀와서 그런지 웨이팅도 없이 바로 입장하였다. 별도의 작품에 대한 오디오를 지원하니 꼭 같이 듣는게 좋다. 가격은 3,000원이다. Previous image Next image 살바도르 달리전 입장 전에 한쪽 벽면을 달리의 상징 중 하나인 개미로 영상을 만들어 두었다. 처음에 바퀴벌레가 돌아다니는 줄 알고 깜짝 놀란.... 전시회 관련 저작권 참고 ※ 참고로 저작권 무서워서 그림을 못 퍼오겠더라. 작품에 대한 저작권은 작가 사후 70년인데, 달리 이 아저씨가 89년에 사망하셨다. 박물관 쪽에 그림을 퍼오려다가 섬뜩해서 관련 규정을 찾아보니, 작품 이미지에 대한 권리도 모두 박물관이 있다고 명시되어 있더라. (스페인 피레게스 달리 미술관 - h

1 2