내가 자주 쓰는 vim 설정은 다음과 같다

vi ~/.vimrc

set nu 줄 넘버
syntax on 문법 표시
set ts=4 탭 스페이스
set sw=4 자동 인덴트할 때 너비
set smartindent 
set autoindent 
set hlsearch 검색어 하이라이팅
colorscheme jellybeans

아래 주소에서 다운받아 ~/.vi 폴더에 colors 폴더 만들어 집어 넣으면 됨


'Tech > Linux' 카테고리의 다른 글

MAC에서 zsh, agnoster theme 설치하기  (0) 2016.05.07
MYSQL auto backup shell (CentOS 6.6 기준)  (0) 2015.08.17
iptables log 남기기(CentOS 6.6)  (0) 2015.08.14

1. iTerms 설치

https://www.iterm2.com/


2. zsh를 설치

$ which zsh

/usr/bin/zsh

$ chsh -s /usr/bin/zsh - chsh는 change shell의 약자


3. oh my zsh 설치

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"


4. theme agnoster로 변경

vi ~/.zshrc

ZSH_THEME="agnoster"


5. https://github.com/powerline/fonts 접속해 폰트 설치 - Roboto Mono for Powerline


6. http://ethanschoonover.com/solarized 접속해 테마 받아 압축 풀면 iterm2-colors-solarized 안의 파일 실행


7. Preferences 들어가 해당 화면에서 Text Font와 Colors Presets을 바꿈



'Tech > Linux' 카테고리의 다른 글

내가 자주 쓰는 vim 설정  (0) 2016.05.10
MYSQL auto backup shell (CentOS 6.6 기준)  (0) 2015.08.17
iptables log 남기기(CentOS 6.6)  (0) 2015.08.14

어떤 value에 hashValue를 제공해서 value가 표현하는 값 자체의 동일성을 검증하는데 사용

hash기 때문에 어떤 값을 찾는데 빠르다

Collection의 key로 사용되기 위해서는 hashable해야 한다

'Tech > iOS' 카테고리의 다른 글

스위프트 타입 호환성  (0) 2017.01.11
[Swift] Class와 Struct 중에 뭘 쓸까?  (0) 2016.10.28
@noscape, @autoclosure  (0) 2016.10.24
optional을 쉽게 설명해보자  (0) 2016.05.17
ERD를 편하게 그리려고 MySQL Workbench를 켰는데 관계를 설정하는 도구 중 점선으로 되어 있는 것도 있었고 실선으로 되어 있는 것도 있었다. 설명을 보니 실선은 Identifying Relation, 점선은 Non-Identifying Relation이었다. 이는 다음과 같은 예로 쉽게 설명된다.

책은 소유자에게 속해있다. 소유자는 여러 권의 책을 소유할 수 있다. 그러나 책은 소유자 없이도 존재할 수 있으며 소유자를 바꿀 수도 있다. 책과 소유자의 이러한 관계를 Non-Identifying Relation라고 한다.

책은 저자에 의해 쓰여졌고 저자는 복수 권의 책을 썼을 수 있다. 그러나 책은 저자에 의해 쓰여져야 하며 저자 없이 존재할 수 없다. 그러므로 이 관계는 Identifying Relation이다.

좀 더 구체적인 정의로 가볼까?

부모 테이블의 유니크 키나 기본키로 지정된 칼럼이 자식 테이블의 기본키 컬럼과 연결된 경우 실선으로 표기되고 Identifying Relation라고 한다.

부모 테이블의 유니크 키나 기본키로 지정된 컬럼이 자식 테이블의 일반 컬럼과 연결된 경우 점선으로 표기되고 Non-Identifying Relation라고 한다.

이 책은 인도인이 썼는데 짜임새도 좋고 괜찮다

근데 소스 코드에 오타가 있어 제대로 동작을 안 한다.

github도 있지만 책이랑 좀 다른 소스 모아놓은 느낌 ;

'Tech' 카테고리의 다른 글

4년 차에 다시 읽는 기본서  (0) 2019.03.27
신입 초보 개발자 1년 회고  (1) 2017.02.03
TDD 적용기  (0) 2016.10.06
엄밀히 말하면 이 오류는 gradle 오류다.
A, B라는 저장소에서 소스를 가져다 쓴다고 하자.
만약 A와 B 모두가 C를 라이브러리로 사용하고 있다면 C는 중복될 것이고 위 exception이 발생하게 된다. 

해결책은 A, B 둘 중 하나에서 C를 사용하지 않도록 exclude하는 것이다.
compile ('com.zopim.android:sdk:1.0.0') {
    exclude (module: 'jackson-annotations')
    exclude (module: 'jackson-core')
    exclude (module: 'jackson-databind')
}
이렇게 하면 해결된다.


1. mysqldump 권한 주기
mysqldump를 위해서는 LOCK TABLE 권한이 필요합니다.
GRANT SELECT, LOCK TABLE ON *.* TO ‘user’@‘%’ IDENTIFIED BY ‘password’;

2. shell 파일 만들기
vi /bin/yourBackupShellFileName.sh

내용은 다음과 같습니다
#!/bin/sh
# yourBackupShellFileName.sh
Mdate="$(date +"%Y-%m-%d”)"
mysql -uroot -ppassword database > /home/backup/${Mdate}.sql

shell 파일에 실행 권한을 추가합니다.
chmod +x /bin/yourBackupShellFileName.sh

3. crontab 추가
vi /etc/crontab

매일 23시 59분에 실행되도록 합니다
59 23 * * * root /bin/auto_backup.sh

참조


'Tech > Linux' 카테고리의 다른 글

내가 자주 쓰는 vim 설정  (0) 2016.05.10
MAC에서 zsh, agnoster theme 설치하기  (0) 2016.05.07
iptables log 남기기(CentOS 6.6)  (0) 2015.08.14

앱이 빠르기 위해서는 DB 처리와 네트워크 처리를 main thread가 아닌 다른 thread에서 처리해야 합니다. 더불어 사용자에게 필요한 정보를 앱이 켜져 있지 않을 때 가져오면 더 좋습니다. 사용자가 앱을 킬 때 이미 로컬에 저장되어 있는 데이터를 가져오면 되니까요. 전자는 AsyncTastLoader로 후자는 SyncAdapter로 해결할 수 있습니다. 


AsyncTaskLoader는 무엇이죠?

비동기 처리를 위한 클래스로 API Level 11에 도입되었습니다. SupportPackage에 포함되어 있기 때문에 어떤 Version에서든 이용이 가능합니다. 다음과 같은 특징을 가졌습니다. (안드로이드 디벨로퍼 문서 참조)

1. 모든 Activity와 Fragment에서 사용할 수 있습니다. 장점입니다.
2. 비동기적으로 데이터를 로딩할 수 있습니다.
3. 데이터를 모니터하고 내용이 변경되면 새로운 결과를 전달합니다.
4. 설정 변경 후, 다시 만들어질 때 마지막 로더의 커서에 접속합니다. 그 데이터를 re-query할 필요가 없습니다


AsyncTask랑은 무엇이 다르죠?

쓰기 쉽습니다. 더 구조적으로 깔끔합니다. 


AsyncTaskLoader를 쓰면 구체적으로 뭐가 좋지요?

main thread가 아닌 thread로 데이터를 비동기적으로 로딩할 수 있습니다. DB 긁어오는 모듈이 Activity에서 분리되어 더 깔끔한 구조를 가진 앱을 만들 수 있습니다.


어떤 방식으로 실행되나요?

Activity 혹은 Fragment에서 Loader를 implement합니다. 그리고 Loader Class를 따로 만들어주면 됩니다. 메소드들은 다음과 같은 순서로 실행됩니다.

Fragment﹕ +++ Calling initLoader()! +++
Fragment﹕ +++ Initializing the new Loader... +++
Fragment﹕ +++ onCreateLoader() called! +++
Loader﹕ +++ onStartLoading() called! +++
Loader﹕ +++ The current data is data is null... so force load! +++
Loader﹕ +++ forceLoad() called! +++
Loader﹕ +++ loadInBackground() called! +++
Loader﹕ +++ Delivering results to the LoaderManager for the ListFragment to display! +++
Fragment﹕ +++ onLoadFinished() called! +++
ListLoader﹕ +++ onStopLoading() called! +++


참조 

http://dev.classmethod.jp/smartphone/asynctaskloader/

배경 
tomcat shutdown이 되지 않아서 보니 iptables에서 8005를 닫았기 때문이었다. 이뿐만이 아니라 생각지도 못했던 기능들이 새로운 서버에서 동작하지 않았다. iptables를 통해 어떤 패킷들이 drop되는지 확인하면 이 문제를 더 빨리 해결할 수 있으리라고 생각했다. 

방법 
rsyslog.conf를 엽니다 
 # vi /etc/rsyslog.conf 
다음과 같이 입력합니다 
kern.* /var/log/iptables.log 
rsyslog를 재시작합니다 
# sudo service rsyslog restart 
다음과 같이 규칙을 추가합니다. ACCEPT 정책이라면 드롭 직전 줄에 추가해주시면 됩니다. 
IPTABLES -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " 
--log-level 7 --limit 5/min이란 같은 패킷이 들어왔을 때 향후 5분 간 로깅을 하지 않는다는 것입니다. 

참조 


'Tech > Linux' 카테고리의 다른 글

내가 자주 쓰는 vim 설정  (0) 2016.05.10
MAC에서 zsh, agnoster theme 설치하기  (0) 2016.05.07
MYSQL auto backup shell (CentOS 6.6 기준)  (0) 2015.08.17

+ Recent posts