2017년 9월 1일 금요일

Android에서 타이틀바(TitleBar) 없애기

 안드로이드 액티비티의 기본 타이틀바가 사실 그대로 사용해도 문제가 없을 만큼 다양한 표현이 가능하거나 미세한 조정이 되지 않기 때문에 대부분 분위기에 맞지 않는 기본 타이틀바를 완전히 없애거나 다른 이미지로 교체하려는 경우가 대부분이다.  인터넷을 검색해보면 많은 방법을 제시하지만 대부분 안드로이드가 제공하는 테마 기능의 사용을 어렵게 만드는 방법 뿐이다. 즉 AndroidManifest.xml에서...

2017년 8월 19일 토요일

MySQL 기본 명령어 - 사용자 및 권한 관리

MySQL을 설치하고 나서 뭘 하려고 하면 항상 인터넷에서 검색부터하는 게 지겨워서 이것도 정리해 놓는다. MySQL 콘솔에서 실행하는 몇 가지 자주 사용하는 명령어들이다. root 권한으로 mysql 콘솔 실행 $ mysql -u root -p database 조회 mysql> show databases; database 선택 mysql> use database; 현재 등록된 사용자 조회 mysql> use mysql; mysql> select user, host from user; 사용자...

2017년 8월 16일 수요일

Raspberry Pi 간단 명령어 정리

Raspberry Pi를 사용하면서 자주 찾게되는 명령어들을 간단히 정리하려고 한다. 자주 사용하는 명령어라고 생각되는 명령어가 생길 때마다 종종 업데이트할 계획이다. 설치 패키지 관리 # 패키지 목록 업데이트 $ sudo apt-get update # 설치된 패키지 업그레이드 수행 $ sudo apt-get upgrade # 사용되지 않는 패키지 삭제 $ sudo apt-get autoremove # 다운로드된 아카이브 파일 삭제 $ sudo apt-get clean # 다운로드된 구버전 아카이브 파일 삭제 $ sudo...

2017년 8월 14일 월요일

Raspberry Pi WiFi 설정하기

 Raspberry Pi 3에는 무선랜이 기본 탑재라서 WiFi 설정을 해 보았다. 설정 중에 겪은 몇 가지 문제점과 설정 방법을 여기서 다뤄보려고 한다. 무선랜 장치 조회  아래와 같이 iwconfig 명령을 실행해보면 기본 탑재된 무선랜 장치는 wlan0임을 알 수 있다. pi@raspberrypi:/home $ iwconfig lo no wireless extensions. wlan0 IEEE 802.11 ESSID:"shanpark" Mode:Managed ...

2017년 8월 13일 일요일

Raspberry Pi에 Raspbian 설치하고 초기 설정하기

 시간이 지날수록 Raspbery Pi에 Raspbian을 설치하고 초기 설정을 위해서 각종 설정파일을 편집하는 등의 작업이 갈수록 간단해지고 있어서 사실 이 포스팅은 대단히 복잡한 과정을 설명하는 건 아니다. 그저 갈수록 기억력에 의존하기가 어려워지면서 검색의 귀찮음을 줄여보고자 글을 쓸 뿐...  그래서 간단하게 작업 순서, 각종 URL, 명령어 위주로 간단하게 기록을 남겨보려고 한다. 0. 준비 당연히 Raspberry Pi(이하 R Pi) 한 대가 있어야 겠고, Raspbian을 설치할 SD 카드가...

2017년 8월 12일 토요일

Raspberry Pi에서 USB 외장하드를 Root 파일 시스템으로 사용하기

 가지고 있던 아이맥을 SSD로 업그레이드하면서 원래 있던 3.5인치 하드디스크를 외장으로 Raspberry Pi(이하 R Pi)에 연결해서 써보려고 좀 알아보니 USB로 연결된 외장 하드가 Micro SD 카드보다 더 성능이 좋다고 한다. 게다가 Root 파일 시스템으로 외장 하드를 사용하는 게 더 나은 성능을 보인다는 얘기도 있고 해서 내가 가진 R Pi 장비에 적용해 보기로 했다....

2017년 7월 18일 화요일

Spring Boot + MyBatis 프로젝트 설정하기

 Spring Boot를 이용하면 MyBatis도 매우 간단하게 연동해서 사용할 수 있다. 어떤 라이브러리(프레임워크)든지 프로젝트에 추가하려고 할 때 내가 가장 먼저 관심을 갖는 것은 가능한 최소한의 설정이 무엇인가 이다. 일단은 가장 최소한의 설정으로 기본적인 기능을 그대로 이용해보고 필요한 추가 설정이 생기면 그때그때 조금씩 수정해가는 것이 가장 깔끔한 상태를 유지하는 길이라고...

2017년 7월 17일 월요일

Raspberry Pi에 MariaDB 설치/삭제하기

 Raspberry Pi에도 MySQL과 MariaDB가 모두 설치가능하다. 최신 버전은 아니고 현재 기준으로 MySQL은 5.5, MariaDB는 10.0 버전이 유효하다. (MariaDB가 더 버전이 높지만 base는 MySQL 5.5이다.) 인터넷을 찾아보면 apt-get을 이용하지 않고 직접 소스를 빌드해서 설치한다면 최신 버전도 가능한 것 같기는 한데 같이 설치해야하는 라이브러리가...

2017년 7월 16일 일요일

Spring Boot에서 Logback 설정 파일 지정하기

 전에 IntelliJ IDEA CE 버전으로 Spring Boot 프로젝트를 생성하는 방법을 설명했었다. 그 방법으로 Spring Boot 프로젝트를 최소한의 dependency만 설정한 채로 생성을 하면 'spring-boot-starter'에 대한 dependency만 가진 채로 생성이 된다.  이 상태로 Project 뷰에 가서 External Libraries를...

2017년 7월 14일 금요일

Spring Boot의 application.properties에 대해..

 요즘 Spring Boot를 이용해서 Non-web application을 만드는 작업에 빠져서 Spring에 대해 많은 걸 배우고 공부하는 중이다. 그래서 이번에는 Spring Boot application을 위한 설정파일로 가장 간단하게 이용할 수 있는 방법인 application.properties를 이용하는 방법을 간단히 설명해 보려고 한다.  Spring Boot를 이용할 때 대부분의 경우 설정 파일로 application.properties를 이용한다. application.properties는...

2017년 7월 4일 화요일

IntelliJ IDEA CE + Spring Boot + Gradle 프로젝트 생성하기

 IntelliJ IDEA CE(Community Edition)버전을 이용해서 Spring Boot 프로젝트를 수행하는 데 이용할 수는  없을까해서 이런 저런 시도를 해보았다. Gradle을 이용해서 프로젝트를 수행한다면 어차피 IntelliJ IDEA CE 버전도 문제가 없을 것 같았기 때문이다. 그래서 여러가지 시도를 해보고 가장 최신 버전의 Spring Boot를 이용하면서...

2017년 7월 1일 토요일

IntelliJ로 Gradle Java Project 생성부터 Runnable Jar 생성 까지

 안드로이드 개발 환경으로 Android Studio가 대세가 되다보니 이제 IntelliJ IDEA가 Java 개발에서도 많이 사용을 하게되고 더불어 Gradle도 빌드툴 분야에서 점점 더 입지를 넓혀가는 중이라 나도 Java 개발 환경으로 IntelliJ와 Gradle을 사용해 보려고 여러가지 테스트를 진행 중이다.  그 중에서도 배포를 위한 Runnable Jar...

2017년 4월 9일 일요일

Windows에 OpenSSL 설치하기

 지난 번에 macOS에 OpenSSL을 설치해 보았으니 이번에는 Windows에 설치를 해 보려고 한다. macOS는 unix계열 운영체제이기 때문에 사실 별로 어려움 없이 설치가 되었다. 하지만 윈도우는 좀 더 복잡하고 설치에 필요한 프로그램이 몇 가지 더 있다. 그래서 macOS보다 Windows가 더 정리를 해놓는 의미가 있을 것 같아서 여기서 정리를 해 놓으려고 한다. 설치 버전은 64비트 버전으로 설치할 예정이다. 1. Source Download  물론 먼저 해야할 일은 소스를 다운로드하는 것이다....

2017년 4월 4일 화요일

macOS에 OpenSSL 설치하기

 예전에는 macOS에 기본적으로 OpenSSL Framework가 탑재되어 있었는데 언제부턴가 Xcode를 설치하고 OpenSSL Framework를 찾아보면 이게 없다고 나온다. 정확히 기억은 나지 않지만 애플에서 공식적으로 삭제했다는 얘기도 들은 것 같고 최신 버전으로 유지가 되는 것도 아니었기 때문에 필요할 때마다 새로 설치를 해서 사용을 해왔다.  문제는 매번 설치를 하려고 할 때마다 인터넷을 찾아보면 여러 가지 설치방법이 난무하여 이게 제대로 설치한 건지 확신이 서지 않았다는 것이다.  그래서...

2017년 3월 31일 금요일

C++ Special Member Functions

 Special Member Function이라함은 컴파일러가 필요할 때 직접 생성해주는 멤버 함수를 말한다. 즉 아래 함수들이 Special Member Function들이다. default constructor destructor copy constructor copy assignment operator move constructor move assignment operator  이 함수들은 사용자가 정의하지 않은 경우 컴파일러가 기본 구현을 제공하는 함수들이다. 하지만 항상 기본 구현이 제공되는 것은 아니고...

2017년 3월 9일 목요일

C++ deleted functions (함수의 삭제 선언)

 C++11에 새롭게 추가된 함수의 삭제(delete)에 대해서 정리해보려고 한다. 어떤 함수를 삭제(delete)시키면 그 함수에 대한 어떤 호출도 불가능하게 된다. 물론 함수를 사용하지 못하게 할 거라면 그냥 함수를 작성하지 않으면 된다. 하지만 문제가 발생하는 함수들은 컴파일러가 자동으로 생성해주는 함수들이다. C++ 컴파일러는 클래스의 생성자, 소멸자, 대입연산자 등을 필요에 의하여 자동으로 생성해주는 기능이 있다. 하지만 개발자는 일부러 그런 함수들을 사용하지 못하게 하려고 만들지 않았는데 컴파일러가 알아서 생성해...

2017년 3월 6일 월요일

C++ Unscoped enumerations VS. Scoped enumerations

 C++11에 새로 추가된 것들 중에 enum class라는 것이 있다. 원래부터 있었던 enum과 유사하지만 좀 더 발전된 것이라고 할 수 있겠다. Effective Modern C++에서는 원래 있던 enum을 unscoped enum으로 새로 추가된 enum class를 scoped enum으로 구별해서 부른다. 선언 방식은 아래 예와 같다. enum Color { black, white, red }; // unscoped enum int white; // 에러 enum class Color { black, white,...

2017년 3월 2일 목요일

C++ type alias : 'using'

 C++11 이전의 C++ 개발자들이 자주 사용하던 using 키워드의 용도는 namespace를 계속 입력하는 게 귀찮아서 STL 사용 시 아래와 같은 선언을 코드의 앞 부분에 추가해주고 "std::"를 생략하기 위함일 것이다. (내 경우에는 그랬다) using namespace std; ...  C++11에서 using의 기능을 새롭게 추가하였는데 그것이 타입 별칭(Type alias)을 선언하는 것이다. 기존에 typedef라는 키워드를 이용해서 STL 등에서 제공하는 긴 iterator 타입을 간단하게 선언해서...

2017년 2월 27일 월요일

decltype에 대하여

 Effective Modern C++에는 decltype에 대한 설명이 잘 나와있다. 책을 읽기 전까지는 언제 이런 키워드가 사용되는지 궁금할 정도로 거의 쓰이지 않을 것 같았는데 이 책을 읽고나니 나름 쓰임새가 있다는 것을 알 수 있었고 그 동작에 대해서도 깊게 이해할 수 있었던 것 같다.  decltype은 declared type의 줄임말이다. 즉 선언된 타입을 알려주는 키워드이다. 이것도 템플릿이나 auto 키워드 처럼 컴파일타임에 유효한 것이지 런타임에 동적으로 타입을 식별해서 알려주는 것은 아니니 decltype을...

2017년 2월 23일 목요일

auto Type Deduction (auto 타입 추론)

 이번 글은 C++11에 새롭게 추가된 auto 키워드에 관해 이야기해 보려고 한다. auto라는 단어가 뜻하는 것 처럼 누군가 자동으로 무엇인가를 해줄 것이라는 걸 예상할 것이다. 그렇다. auto 키워드는 타입이 들어갈 자리에 대신 들어가서 (템플릿에서 그랬던 것처럼) 컴파일러가 주변 코드를 이용해서 타입을 대신 결정하도록 하는 키워드이다. Effective Modern C++에서도 역시 심도있게 다루고 있으며 그 내용을 기반으로 내가 이해하는 바를 여기서 기록하고자 한다.  auto가 수행하는 작업이 곧 템플릿...

2017년 2월 21일 화요일

Template Type Deduction (템플릿 타입 추론)

 수많은 C++관련 도서가 있고 그 수 만큼 많은 저자들이 있지만 그 중에 내가 인상깊게 본 도서들을 꼽자면 Effective 시리즈를 꼽을 수 있겠다. 전부 다 본건 아니지만 그래도 Effective 시리즈 작가인 Scott Meyers의 책을 볼 기회가 생긴다면 기꺼이 시간을 내서 볼 용의가 있다.  최근에 보게된 Effective Modern C++도 상당히 인상적이다. C++11부터 크게 발전해가는 C++을 제대로 사용해 보려고 여기 저기 인터넷을 뒤져가며 새로운 문법을 익히다보니 머리속이 복잡해지는 걸...