Category Archives: Uncategorized

전문가용 터미널 셋팅

개발자는 터미널이 간진데
텍스트 편집할 때 emacs까지는아니라도 vim정도는 써 줘야된다.
근데 이게 기본형으로 쓰면 또 각이 안나와서 추가기능을 깔아주고
다른사람 자리에서 vi쓸 때 이게 왜 안돼? 같은 대사도 해 주고 해야된다

그러기 위한 몇가지 추가기능

Terminal

  • zsh
  • oh-my-zsh

리눅스나 맥이면 이정도는 이미 깔려 있어야되고
윈도우라고 빼먹으면 안된다.

  • oh-my-pysh

오히려 여기에다가 리눅스 터미널까지 설치 해 줘야된다

  • cygwin
  • ubuntu18.04 WSL

그리고 추가로 터미널 유틸

  • https://github.com/junegunn/fzf

VIM

에디터

  • nvim
  • vim

플러그인 관리

  • https://github.com/junegunn/vim-plug
  • https://github.com/VundleVim/Vundle.vim

에디트 툴

  • https://github.com/neilagabriel/vim-geeknote
  • https://github.com/jeffkowalski/geeknote

이정도 깔아두면 이제 어디가서 전문가 행세하기 충분하다.
내 노트북을 가지고 강연/강의/세미나를 할 때 부끄럽지 않을 최소한의 환경

MongoDB 4.0 to AWS DocumentDB 3.6 migration 기록

mysql, aurora정도로 호환되는 제품인 줄 알았는데

스펙을 보니 다른점이 상당히 많다.
https://docs.aws.amazon.com/ko_kr/documentdb/latest/developerguide/mongo-apis.html
아니요가 너무 많은거 아니요?

처음 접속할 때 부터 애를 먹었다. public access가 안된다고???

AWS의 불친절함이란.. .어디 잘 써 있지도 않고

루비온레일즈 개발자가 AWS를 설계했으면 이렇지 않았을텐데
(친절한 루비의 에러메시지)

공식 문서에서 시키는대로 한 것 같은데 접속이 안되서 인증서 사용을 중지시키고 접속했다
https://docs.aws.amazon.com/ko_kr/documentdb/latest/developerguide/connect-from-outside-a-vpc.html

쓰는 사람이 없는건지 검색도 잘 안되는군

AWS 직원새끼도 이거 안쓰는거 아닐까

파라미터 그룹에서 TLS를 끄고 겨우 접속은 했는데

admin으로 접속이 안되네?

test로 접속해봤더니 된다

그 다음에 test2로 접속했더니 된다

근데 test2로 접속하면 test1이 아show dbs부터 안먹힌다??

아니군 데이터가 있는 디비만 목록에 뜬다

이래저래 하다가 너무 이상한 것 같아서 포기..

결국은 몽고디비를 설치해서 사용

그래도 직접 구성은 안 하고 aws에서 지원 해 주는 cloud formation을 활용했다
https://docs.aws.amazon.com/ko_kr/quickstart/latest/mongodb/step2.html

그냥 실행했더니 실패???왜??

바로 클릭해서 접속했떠니 북부 버지니아로 접속되는군.. 어째 이상하더라고
aws 콘솔에서 안 쓰는 리전 꺼놓는 기능은 언제 나올건가

그러고보면 aws에서 대부분의 관리 기능들이 cloud formation을 확장한 정도 기능 아닐까 싶을 정도로.. 비슷한 프로세스로 돌아가는 것 같다.

ui를 따로 만들어주면 관리형 서비스가 돼 버리는거겠지

docuemntDB를 갖다버리고 mongoDB를 관리형으로 넣어주는건 어떨까

하려다가 다시 DocumentDB를 사용하기로

설치가 어려운건 아니지만 나중에 관리비용도 상당히 있으니까

그리고 기존 어플리케이션(node-mongoose)을 돌려보니까 별 문제없이 돌아간다. 4.0에 특화된 기능을 쓰는게 없어서 그런가?

백업 덤프에서 버전을 안 맞췄더니 아예 안된다. 에러메시지가 버전이 안맞다가 아니라 이상한게 안된다고 해서 한참을 검색을 했는데… 버전문제였다.
mongodump(4.x) – mongorestore(3.6)

docker 덕분에 간단히 해결됐다.
docker run –rm -it -v $(pwd):/mongobak mongo:3 mongodump –out /mongobak –host x.x.x.x -uUser -pPass –db dbname

버전이 안맞아서 인덱스나 뭐가 날라갈 수 도 있다고 하는데 나중에 생성 해 주면 되지 않을까

몽고디비 툴 사용

몽고해커 http://tylerbrock.github.io/mongo-hacker/
http://mongodb-tools.com/

코딩 취업학원? 추천을 한다면

이름은 언급을 못하겠고 좆만한 학원들 패스
인터넷이나 지식인에 영업사원이 답변다는 학원은 자동패쓰

  • 비트컴퓨터
  • 쌍용정보 어쩌고
  • 삼성멀티캠퍼스

요 세개가 오래된 쓸만한 학원이고

요즘 소규모 부트캠프?라고 운영하는데가 있는 듯 한데.. .신뢰도는 잘 모르겠다.

  • 코드노바?
  • 코드스테이츠?

정부에서 지원되는 6개월짜리 돈주고 교육해주는 곳
월30만원 용돈도 줌
최악은 아닌듯 한데 강사수준이나 커리큘럼은 정보부족
구디쪽에 관련 기관이 좀 있다…

그리고 새로생긴 쓸만한 기관은

거래소 개발중 – 기술 검토 결과

어쩌다가 거래소 개발을 하게 됐는데
컴포넌트별 기술을 검토 해 봤다.

컴포넌트

  • API – REST
  • API – WS
  • MessageLogging
  • Orderbook
  • Matching
  • PNL
  • ….

기술검토 항목

  • Elixir
    데이빗 거래소에서 썼다고 해서… 얼랭계열로 안정성이 뛰어나지만 타 언어와 연계해서 사용할 경우 액터모델을 제대로 활용하지 못할 것 같아서 제외
  • Akka – Scala
    그냥제외
  • Spring – Kotlin
    ReactiveAPI
  • node.ts
    이게 정말 애매하다…
    데이터를 전달하는 용도로는 정말 뛰어난데
    직접 핸들링할 때는 자료구조 지원도 약하고
    싱글스레드가 오히려 발목을 잡는다
    atomic, synchronized가 필요한 경우도 있으니…
    api나 데이터 전달하는 용도로만 활용해야할까

마이크로 서비스와 메시지 브로커(kafka)를 사용하고 있어서 특정 언어나 플랫폼에 종속되지 않는 구조를 생각하고 개발중

역시 노드는 간단한거 만들기는 좋다.
복잡한 시스템을 만드는 것은 좀 곤란한걸로…
노드는 데이터 스트림을 처리하는데는 효율적이나
데이터를 조합해서 처리하는 상황이라면 안쓰는게 좋을 것 같다.
기본적으로 지원되는 자료구조가 약한것도 문제
커뮤니티 라이브러리가 많은 부분을 채워주지만 이거 믿어도 되나 싶은것들이 상당수

Java Application Ecexution on CommandLine

매번 jar파일을 보내는건 번거롭다. 이런경우에는 Maven을 이용해서 처리하는게 좋다.

스텐드얼론으로 실행시키는 경우에는 웹 어플리케이션도 tomcat이나 jboss에 얹는것보다는 was라이브러리를 써서 개별적으로 실행시키는게 유리한 경우도 있다.

<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-assembly-plugin</artifactId>
				<version>2.4</version>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>attached</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<descriptorRefs>
						<descriptorRef>jar-with-dependencies</descriptorRef>
					</descriptorRefs>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
				<version>2.8</version>
				<executions>
					<execution>
						<phase>install</phase>
						<goals>
							<goal>copy-dependencies</goal>
						</goals>
						<configuration>
							<outputDirectory>${project.build.directory}/lib</outputDirectory>
						</configuration>
					</execution>
				</executions>
			</plugin>

이 두 플러그인이 필수다.

이클립스로 export하면 편하게 설정이 되는건데 maven에서는 귀찮은 설정이 많이 필요하다. 같은 기능을 하는 다른 플러그인이 여러가지가 있으니 같은 해결책을 찾아도 많은 방법이 있을 수 있다.

윗쪽 플러그인은 jar파일에 의존성파일들을 포함시키라는 명령.

두번째건 lib디렉토리에 의존성 jar를 포함시키라는 명령

 

윗쪽걸로만 하고 실행시키면…class not found가 뜬다. 이클립스로 export해서 해보니 제대로 잘 되는거 보면…. 저 플러그인 셋팅이 제대로 동작을 안하는것같다. 설정을 잘못해줬거나… 다음에 다시 봐야겠다.

svn또는 git을 이용하여 소스코드를 최신버전을 업뎃한후

mvn install

java -classpath .:target/lib/*:target/{application.jar} full.qulified.class.name

완료.

Android keytool 키값 생성

2013.05 현재시점에서 동작하는 방법

예전사이트는 접속도 안되고.. 구글에서 이 주소를 찾는것도 정말 힘들다.

구글은 역시… 기술은 좋은데 기획은 엉망이다.

keytool -list -keystore "C:/Documents and Settings/<"your user name here">/.android/debug.keystore"

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

https://code.google.com/apis/console

http://developer.android.com/tools/publishing/app-signing.html#setup
디버그용 키 생성할 때…
Signing in Debug Mode
The Android build tools provide a debug signing mode that makes it easier for you to develop and debug your application, while still meeting the Android system requirement for signing your APK. When using debug mode to build your app, the SDK tools invoke Keytool to automatically create a debug keystore and key. This debug key is then used to automatically sign the APK, so you do not need to sign the package with your own key.

The SDK tools create the debug keystore/key with predetermined names/passwords:

Keystore name: “debug.keystore”
Keystore password: “android”
Key alias: “androiddebugkey”
Key password: “android”
CN: “CN=Android Debug,O=Android,C=US”

스프링Spring – 하이버네이트Hibernate 연동 개발시에 설정 주의점

1. 테스트용으로 sql파일을 import하는 경우

hibernate.hbm2ddl.import_file = “META-INF/sql/user.sql,META-INF/sql/auth.sql”
이렇게 파일명을 정확히 적어줘야 한다.

“classpath:/META-INF/sql/user.sql”처럼 classpath라고 적으면 오류가 발생한다.
*.sql처럼 regex도 인식하지 못한다.

 

2. Annotation을 이용한 Sequence 생성시

@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "user_id_seq")
@SequenceGenerator(name="user_id_seq", sequenceName = "user_id_seq")
@Column(name = "UserId")
private Long id;

GenerationType.AUTO로 해야 mysql에서  auto_increament가 적용된다. Generation.SEQUENCE라고 하면 SEQUENCE기능이 없는 mysql에서는 오류가 발생한다.

DB에 시퀀스가 생성이 되도 postgresql에서 insert쿼리를 사용시 자동으로 시퀀스가 default로 insert되지 않는다.

insert시에 nextval(‘user_id_seq’)를 명시해줘야하는 불편함이 있다. 오라클은 테스트를 안해봤지만 마찬가지일거라 생각되니 고민하지말고 바로 노가다를 시작…