안드로이드 스튜디오(Android Studio)에서 Android SDK 소스 보기

요즘 Android Studio로 Android 개발을 진행하고 있는데, Android SDK 소스를 제대로 볼 수가 없습니다.

아래처럼 구현 코드는 보여주지 않고 stub만 보여줍니다.

이럴 때는 우선 [PROJECT FOLDER]/app/build.gradle 파일을 열고 android/compileSdkVersion을 확인합니다.

제가 작업 중인 프로젝트는 19 버전입니다.

이제 SDK Manager를 실행합니다.

저는 android/compileSdkVersion19라서 Android 4.4.2 (API 19)를 펼치고 Sources for Android SDK를 클릭하여 선택합니다. 각자 프로젝트에 맞는 버전을 선택하면 됩니다.

우측 하단에 있는 Install 1 package 버튼을 클릭하여 설치를 진행합니다.

설치가 완료되면 Android Studio를 완전히 종료한 후 재시작하면 됩니다.

신고

Trello - 리스트 최상단에 카드 추가하기

Trello 보드에 카드를 추가하려면 보통 리스트 하단의 Add a card를 클릭한 다음 내용을 입력하고 엔터를 치거나 Add를 클릭합니다.

위의 방식으로 한동안 잘 사용해 왔는데 리스트에 카드가 늘어나니까, 최근에 작성한 카드가 맨 아래에 추가되서 눈에 안띄게 됩니다.
카드가 눈에 띄도록 리스트 최상단에 추가해 보겠습니다.

Trello는 보드를 열면 모든 리스트의 스크롤이 최상단에 있기 때문에, 목록에 카드가 많으면 스크롤을 끝까지 내려야 최근에 추가한 카드를 볼 수 있습니다.

리스트 제목 오른쪽에 있는 메뉴를 클릭합니다. 리스트 메뉴는 작고 둥근 회색 버튼이라서 눈에 잘 띄지 않습니다.

Add Card 메뉴를 클릭합니다.

리스트 최상단에 카드 제목을 입력란이 생성됩니다. 내용을 입력하고 Add 버튼을 클릭하면 새 카드가 추가됩니다.

신고

Sublime Text 설정과 패키지 동기화 하기(with Dropbox)

Sublime Text에 설치한 패키지와 설정을 여러 컴퓨터에서 동일하게 유지하려면 Packages/User/ 폴더를 공유 저장소에 두고 이를 동기화 해야 합니다. Dropbox를 공유 저장소로 사용하는 동기화 방식을 적용해 봅니다.

기준이 되는 컴퓨터

패키지 설치 및 설정이 완료된 기준 컴퓨터의 설정을 Dropbox로 옮깁니다.

먼저 Sublime Text를 완전히 종료한 후 Windows PowerShell관리자 권한으로 실행합니다.

PowerShell

아래와 같이 PowerShell을 통해 Sublime Text의 Packages/User/ 폴더를 D:\Dropbox\Sublime\User\ 폴더로 대체합니다. Sublime Text 폴더와 Dropbox 폴더는 각자의 설정에 따라 변경해서 적용해야 합니다. 저는 Sublime Text는 기본 위치에 설치했지만, Dropbox는 공유 폴더를 D:\Dropbox로 변경하여 사용 중입니다.

Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.

PS C:\Windows\system32> # Sublime Text의 Packages 폴더로 이동합니다
PS C:\Windows\system32> cd "$env:appdata\Sublime Text 3\Packages\"
PS C:\Users\homedir\AppData\Roaming\Sublime Text 3\Packages> # Dropbox 공유 폴더에 Sublime 폴더를 생성합니다
PS C:\Users\homedir\AppData\Roaming\Sublime Text 3\Packages> mkdir D:\Dropbox\Sublime
PS C:\Users\homedir\AppData\Roaming\Sublime Text 3\Packages> # User 폴더를 D:\Dropbox\Sublime 디렉토리로 이동합니다
PS C:\Users\homedir\AppData\Roaming\Sublime Text 3\Packages> mv User D:\Dropbox\Sublime
PS C:\Users\homedir\AppData\Roaming\Sublime Text 3\Packages> # D:\Dropbox\Sublime\User 폴더에 대한 링크(User)를 생성합니다
PS C:\Users\homedir\AppData\Roaming\Sublime Text 3\Packages> cmd /c mklink /D User D:\Dropbox\Sublime\User
User <<===>> D:\Dropbox\Sublime\User에 대한 기호화된 링크를 만들었습니다.
PS C:\Users\homedir\AppData\Roaming\Sublime Text 3\Packages>

설정을 공유할 다른 컴퓨터

위에서 Dropbox로 옮긴 패키지/설정을 다른 컴퓨터에서도 똑같이 사용하려면 역시 PowerShell을 통해 작업을 해줘야 합니다. Sublime Text를 종료한 후 Windows PowerShell관리자 권한으로 실행합니다.

Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.

PS C:\Windows\system32> # Sublime Text의 Packages 폴더로 이동합니다
PS C:\Windows\system32> cd "$env:appdata\Sublime Text 3\Packages\"
PS C:\Users\homedir\AppData\Roaming\Sublime Text 3\Packages> # User 폴더와 포함된 모든 폴더/파일을 삭제합니다
PS C:\Users\homedir\AppData\Roaming\Sublime Text 3\Packages> rmdir -recurse User
PS C:\Users\homedir\AppData\Roaming\Sublime Text 3\Packages> # D:\Dropbox\Sublime\User 폴더에 대한 링크(User)를 생성합니다
PS C:\Users\homedir\AppData\Roaming\Sublime Text 3\Packages> cmd /c mklink /D User D:\Dropbox\Sublime\User
User <<===>> D:\Dropbox\Sublime\User에 대한 기호화된 링크를 만들었습니다.
PS C:\Users\homedir\AppData\Roaming\Sublime Text 3\Packages>

이제 D:\Dropbox\Sublime\User 폴더에 공유된 설정을 통해서 Sublime Text가 실행되기 때문에 양쪽 컴퓨터에서 동일한 개발환경을 사용할 수 있습니다.

신고

CentOS 7에 Hadoop 설치

CentOS 7에 Hadoop 설치

이전 글에서 CentOS 7을 AWS에 설치 했었습니다.

AWS에 CentOS 7 설치

사실 Hadoop + HBase를 설치하기 위한 사전 작업이어서 오늘은 먼저 Hadoop을 설치해 봅니다.

먼저 JDK를 설치하는 등 기본 환경을 설정합니다.

[centos@ip-172-31-3-215 ~]$ sudo -i

# Oracle JDK 8을 다운로드합니다. 혹 아래 명령으로 다운로드가 안되면 직접 사이트에서 다운로드 해서 가져옵니다
[  root@ip-172-31-3-215 ~]# wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u25-b17/jdk-8u25-linux-x64.tar.gz"

# /opt 디렉토리에 압축을 해제합니다
[  root@ip-172-31-3-215 ~]# tar -zxvf jdk-8u25-linux-x64.tar.gz -C /opt

# 방금 설치한 Oracle JDK를 기본 JDK로 설정합니다
[  root@ip-172-31-3-215 ~]#  /usr/sbin/alternatives --install /usr/bin/java java /opt/jdk1.8.0_25/bin/java 100

# java 버전을 확인합니다
[  root@ip-172-31-3-215 ~]# java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

# /etc/profile 파일에 JAVA_HOME 환경 변수를 추가합니다
[  root@ip-172-31-3-215 ~]# vi /etc/profile
export JAVA_HOME=/opt/jdk1.8.0_25

JDK 설치가 완료됐으면 이제 hadoop 계정을 추가하고 SSH 키를 생성합니다.

# root 계정으로 전환한 후 hadoop 계정을 추가합니다
[centos@ip-172-31-3-215 ~]$ sudo -i
[  root@ip-172-31-3-215 ~]# useradd hadoop
[  root@ip-172-31-3-215 ~]# su - hadoop

# 생성한 hadoop 계정으로 전환한 후 ssh-keygen 명령으로 SSH 키를 생성합니다
[hadoop@ip-172-31-3-215 ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Created directory '/home/hadoop/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
92:14:bd:ff:f6:26:bd:4d:ad:39:99:c6:ce:2e:a4:73 hadoop@ip-172-31-3-215
The key's randomart image is:
+--[ RSA 2048]----+
|      ..         |
|       ..        |
|      .  .       |
|     . ..        |
|      o S.       |
|       .  . .   .|
|           + o oo|
|          o E.O= |
|           + OOo.|
+-----------------+

# 암호 없이 ssh 접속이 가능하도록 공개키를 authorized_keys 파일에 추가합니다
[hadoop@ip-172-31-3-215 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[hadoop@ip-172-31-3-215 ~]$ chmod 0600 ~/.ssh/authorized_keys
[hadoop@ip-172-31-3-215 ~]$ ssh localhost
Last login: Sun Mar  8 07:01:41 2015

이제 hadoop을 내려받고 설치합니다.

[hadoop@ip-172-31-3-215 ~]$ wget http://apache.mirror.cdnetworks.com/hadoop/common/hadoop-2.5.2/hadoop-2.5.2.tar.gz
[hadoop@ip-172-31-3-215 ~]$ tar xvfz hadoop-2.5.2.tar.gz

.bashrc 파일에 관련 환경 변수를 추가합니다

[hadoop@ip-172-31-3-215 ~]$ cd hadoop-2.5.2
[hadoop@ip-172-31-3-215 hadoop-2.5.2]$ vi ~/.bashrc
export HADOOP_HOME=/home/hadoop/hadoop-2.5.2
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH

source 명령을 이용해서 환경 변수를 현재 환경에 읽어 들입니다.

[hadoop@ip-172-31-3-215 hadoop-2.5.2]$ source ~/.bashrc

$HADOOP_HOME/etc/hadoop/core-site.xml 파일을 열고

[hadoop@ip-172-31-3-215 hadoop-2.5.2]$ vi etc/hadoop/core-site.xml

아래와 같이 내용을 추가합니다.

<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:9000</value>
  </property>
</configuration>

$HADOOP_HOME/etc/hadoop/hdfs-site.xml 파일을 열고

[hadoop@ip-172-31-3-215 hadoop-2.5.2]$ vi etc/hadoop/hdfs-site.xml

아래와 같이 내용을 추가합니다.

<configuration>

  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>

  <property>
    <name>dfs.name.dir</name>
    <value>file:///home/hadoop/hadoopdata/hdfs/namenode</value>
  </property>

  <property>
    <name>dfs.data.dir</name>
    <value>file:///home/hadoop/hadoopdata/hdfs/datanode</value>
  </property>

</configuration>

$HADOOP_HOME/etc/hadoop/mapred-site.xml 파일을 열고

아래와 같이 내용을 추가합니다.

<configuration>

  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>

</configuration>

namenode를 포맷합니다.

[hadoop@ip-172-31-3-215 hadoop-2.5.2]$ hdfs namenode -format

Hadoop을 시작합니다.

# dfs daemon을 시작합니다
[hadoop@ip-172-31-3-215 hadoop-2.5.2]$ start-dfs.sh
Starting namenodes on [localhost]
localhost: starting namenode, logging to /home/hadoop/hadoop-2.5.2/logs/hadoop-hadoop-namenode-ip-172-31-3-215.ap-northeast-1.compute.internal.out
localhost: starting datanode, logging to /home/hadoop/hadoop-2.5.2/logs/hadoop-hadoop-datanode-ip-172-31-3-215.ap-northeast-1.compute.internal.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /home/hadoop/hadoop-2.5.2/logs/hadoop-hadoop-secondarynamenode-ip-172-31-3-215.ap-northeast-1.compute.internal.out

# yarn daemon을 시작합니다
[hadoop@ip-172-31-3-215 hadoop-2.5.2]$ start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop-2.5.2/logs/yarn-hadoop-resourcemanager-ip-172-31-3-215.ap-northeast-1.compute.internal.out
localhost: starting nodemanager, logging to /home/hadoop/hadoop-2.5.2/logs/yarn-hadoop-nodemanager-ip-172-31-3-215.ap-northeast-1.compute.internal.out

jps(Java Virtual Machine Process Status Tool)로 java 프로세스를 확인합니다.

[hadoop@ip-172-31-3-215 hadoop-2.5.2]$ $JAVA_HOME/bin/jps
4981 NodeManager
5400 Jps
4889 ResourceManager
4747 SecondaryNameNode
4494 NameNode


신고

GitHub 저장소 Fork 하기

다른 사람의 저장소에 있는 코드를 수정하려면 그 저장소를 Fork한 후에 수정을 하고 pull request를 저장소 소유자에게 보내야합니다.

APM 툴인 Pinpoint 프로젝트를 마음껏 수정해 보려고 Fork를 해 봤습니다.

Fork

브라우저에서 Pinpoint 저장소 페이지로 이동한 후, Fork를 클릭하여 저장소를 나의 Repositories로 복사합니다.

Fork

Fork가 완료되면 복사된 저장소로 화면이 이동합니다.

Clone

저장소 페이지 우측에 있는 저장소 주소를 복사합니다.

Copy to clipboard

명령 프롬프트를 실행하고 적당한 디렉토리로 이동한 후 git clone 명령으로 저장소를 clone합니다.

$ git clone git clone git@github.com:GITHUB-ID/pinpoint.git
Cloning into 'pinpoint'...
remote: Counting objects: 91067, done.
remote: Total 91067 (delta 0), reused 0 (delta 0), pack-reused 91067
Receiving objects: 100% (91067/91067), 151.06 MiB | 229.00 KiB/s, done.
Resolving deltas: 100% (47414/47414), done.
Checking connectivity... done.
Checking out files: 100% (4180/4180), done.

clone이 완료되면 생성된 pinpoint 디렉토리로 이동한 후 git remote add 명령을 사용하여 원본 저장소를 upstream이라는 이름으로 추가합니다.

추가한 후에는 git remote -v 명령으로 원격 저장소 목록을 확인할 수 있습니다.

$ git remote add upstream git@github.com:naver/pinpoint.git

$ git remote -v
origin  git@github.com:GITHUB-ID/pinpoint.git (fetch)
origin  git@github.com:GITHUB-ID/pinpoint.git (push)
upstream        git@github.com:naver/pinpoint.git (fetch)
upstream        git@github.com:naver/pinpoint.git (push)
신고