Category Archives: Uncategorized

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

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

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

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

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

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

정부에서 지원되는 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’)를 명시해줘야하는 불편함이 있다. 오라클은 테스트를 안해봤지만 마찬가지일거라 생각되니 고민하지말고 바로 노가다를 시작…

 

Java 1.6 과 Java 1.7 하위호환

두 가지 버전을 섞어서 사용하면 Language Level 오류가 발생한다.

6.0 Override in interfaces
7.0 Diamonds, ARM, multi-catch etc.

의 옵션….

다른 버전으로 컴파일된 라이브러리를 사용하면 ClassFormatException이 발생할 수 있다.
아마도….

java는 아직도 6이 대세지만… 벌써 8.0의 스펙도 잡혀있는 것 같다.
8.0 Lambdas, type annotaions, etc.

오라클 early access
http://www.oracle.com/technetwork/java/javase/downloads/ea-jsp-142245.html

https://jdk8.java.net/
http://openjdk.java.net/projects/jdk8/

Maven Deploy to Nexus

1. pom.xml편집

여기저기 할게 많은데… 이 부분이 중요
xml에서 deploy할 nexus주소를 적어준다

    <distributionManagement>
        <repository>
            <id>beansugar-release</id>
            <url>http://{your nexus address}/{releaseRepoId}</url>
        </repository>
        <snapshotRepository>
            <id>beansugar-snapshot</id>
            <url>http://{your nexus address}/{snapshotRepoId}</url>
        </snapshotRepository>
    </distributionManagement>

2. nexus셋팅

Repo를 하나 생성

deploy계정 생성

3. settings.xml 셋팅

기본위치 ~/.m2/settings.xml
사용자는 pom.xml에 기록한 nexus 아이디 패스워드 deploy 권한을 가지고 있는 계정
id는 사용자 아이디가 아닌 repository id

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <servers>
        <server>
            <id>{release repo id}</id>
            <username>{userId}</username>
            <password>{userPassword}</password>
        </server>
        <server>
            <id>{snapshot repo id}</id>
            <username>{userId}</username>
            <password>{userPassword}</password>
        </server>
    </servers>
</settings>

4. maven testcase 오류나는 경우

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
      <testFailureIgnore>true</testFailureIgnore>
    </configuration>
</plugin>

5. 기타 배포오류

404 주소를 잘못친듯

502 주소를 잘못친듯

503 권한 안줘서 user_role, privileges 설정에서 권한을 줘야한다. 배포는 edit 권한

Java Testing Framework Junit 이것만 알면 끝

일단 이거 참고
이클립스에 이 부분 기본 설정 후
http://memo.polypia.net/archives/557

public static workTest{
  @Before
  public void before1(){
  }

  @After
  public void after1(){
  }

  @Test
  public void test1(){
    Web web = new Web();
    //이런게 있다고 치고....
    x = web.getX();
    //3이 나오면 성공
    assertThat(x, is(3));
  }

  @Test(expected=JDBCException.class)
  public void test2() throws Exception{
    //JDBC익셉션이 발생하는 그코드
  }
}

assertThat(x, is(3));
assertThat(x, is(not(3)));
assertThat(responseString, either(containString)););
assertThat(list, hasItem("3"));

대강 이정도면 다됨
@Rule이라는건 필요할 때가되면

 

스프링 설정

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(
		locations = {
				"classpath:spring-context.xml"
		}
)