'ITWeb/개발일반'에 해당되는 글 490건

  1. 2016.11.23 [Nginx] osx 에 nginx 설치 하기 - brew install
  2. 2016.11.09 [Java] String[] to List, List dedup. List to String comma
  3. 2016.10.07 [Maven] maven-replacer-plugin 사용하기.
  4. 2016.09.30 [Git] 리모트 브랜치 목록 새로고침.
  5. 2016.09.29 [HttpAsyncClient] example : AsyncClientHttpExchangeFutureCallback
  6. 2016.09.28 [HttpClient] Async Http Request Docs.
  7. 2016.09.19 [Tomcat] Spring framework 사용 시 중복 실행 이슈
  8. 2016.08.22 [App] android 앱 디컴파일 해보기
  9. 2016.08.16 [GIT] master 브랜치를 무식하게 변경해 보자.
  10. 2016.08.03 [Bash Script] ssh 접속 시 hostname 기준으로 편하게 사용하기.

[Nginx] osx 에 nginx 설치 하기 - brew install

ITWeb/개발일반 2016. 11. 23. 10:02

mac osx 에 설치 할 일이 있어서 작성해 봅니다.


$ sudo chown -R '사용자계정' /usr/local/lib/pkgconfig

$ brew install pcre

$ brew link --overwrite pcre

$ brew update

$ sudo chown -R '사용자계정' /usr/local

$ brew install nginx

$ sudo chown root:wheel /usr/local


'사용자계정' 에는 user account 넣어 주시면 됩니다.

예를 들어 henry 라는 계정을 사용하시면)

$ sudo chown -R henry /usr/local/lib/pkgconfig


저는 설치 하다 몇 가지 에러가 발생을 해서 위 순서대로 구성을 하였습니다.

아래는 발생한 에러 입니다.


Error case 1)

Error: The `brew link` step did not complete successfully

The formula built, but is not symlinked into /usr/local

Could not symlink lib/pkgconfig/libpcre.pc

/usr/local/lib/pkgconfig is not writable.


Error case 2)

mkdir: /usr/local/var/run: Permission denied

make[1]: *** [install] Error 1

make: *** [install] Error 2


READ THIS: https://git.io/brew-troubleshooting


/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/open-uri.rb:353:in `open_http': 422 Unprocessable Entity (GitHub::Error)

Validation Failed


Error case 3)

Error: The /usr/local directory is not writable.

Even if this directory was writable when you installed Homebrew, other

software may change permissions on this directory. For example, upgrading

to OS X El Capitan has been known to do this. Some versions of the

"InstantOn" component of Airfoil or running Cocktail cleanup/optimizations

are known to do this as well.


You should probably change the ownership and permissions of /usr/local

back to your user account.

  sudo chown -R $(whoami):admin /usr/local


:

[Java] String[] to List, List dedup. List to String comma

ITWeb/개발일반 2016. 11. 9. 12:42

이젠 뭘 해도 기억력이 따라오질 못합니다. ㅠ.ㅠ

복습을 위해서.


Stirng[] to List)

String[] keywords = {"기어", "s3", "기어"};

List<String> lists = Arrays.asList(keywords);


List DeDup)

HashSet<String> set = new HashSet<>(lists);

List<String> result = new ArrayList<>(set);


List to String comma)

StringUtils.join(result, ',');


:

[Maven] maven-replacer-plugin 사용하기.

ITWeb/개발일반 2016. 10. 7. 14:54

간혹 필요할때가 있어서 포스팅 합니다.

maven project 를 사용하면서 소스코드에서 특정 변수에 대한 치환을 하고 싶을 때 사용하시면 됩니다.

최근에 javascript 파일에 대한 v=@_FINGERPRINT 정보를 추가 하기 위해 사용했습니다.


[참고문서]

https://github.com/beiliubei/maven-replacer-plugin/wiki/Usage-Guide

https://gist.github.com/ekcode/a338ec66c81bcaca1d9d


[pom.xml]

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warName>front-web-service-${version}</warName>
</configuration>
<executions>
<execution>
<id>prepare-war</id>
<phase>prepare-package</phase>
<goals>
<goal>exploded</goal>
</goals>
</execution>
</executions>
</plugin>

<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<version>1.5.2</version>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>replace</goal>
</goals>
</execution>
</executions>
<configuration>
<filesToInclude>
**/layout.jsp
</filesToInclude>
<replacements>
<replacement>
<token>@_FINGERPRINT</token>
<value>${version}</value>
</replacement>
</replacements>
</configuration>
</plugin>


역시 구글링 하면 많은 예제 코드들이 나옵니다.

:

[Git] 리모트 브랜치 목록 새로고침.

ITWeb/개발일반 2016. 9. 30. 18:06

ide를 사용하다 보면 git remote branch 목록 sync 가 안될 때가 있습니다.

그래서 수동으로 명령어 날려 주는데요.

혹시 몰라 그냥 기록해 봅니다.



$ git remote prune origin --dry-run


dry run 해보시고 최종 실행 시에는 빼고 돌리시면 됩니다.

:

[HttpAsyncClient] example : AsyncClientHttpExchangeFutureCallback

ITWeb/개발일반 2016. 9. 29. 16:35

Concurrent Request 를 보낼 일이 있어서 샘플 코드 투척해 봅니다.

제가 작성한건 아니고 그냥 httpcomponents-asyncclient 에 있는 example 입니다.


Main Method)

public static void main(final String[] args) throws Exception {
RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(3000)
.setConnectTimeout(3000).build();
CloseableHttpAsyncClient httpclient = HttpAsyncClients.custom()
.setDefaultRequestConfig(requestConfig)
.build();
try {
httpclient.start();
final HttpGet[] requests = new HttpGet[] {
new HttpGet("http://www.apache.org/"),
new HttpGet("https://www.verisign.com/"),
new HttpGet("http://www.google.com/")
};
final CountDownLatch latch = new CountDownLatch(requests.length);
for (final HttpGet request: requests) {
httpclient.execute(request, new FutureCallback<HttpResponse>() {

@Override
public void completed(final HttpResponse response) {
latch.countDown();
System.out.println(request.getRequestLine() + "->"
+ response.getStatusLine());
}

@Override
public void failed(final Exception ex) {
latch.countDown();
System.out.println(request.getRequestLine() + "->" + ex);
}

@Override
public void cancelled() {
latch.countDown();
System.out.println(request.getRequestLine() + " cancelled");
}

});
}
latch.await();
System.out.println("Shutting down");
} finally {
httpclient.close();
}
System.out.println("Done");
}


:

[HttpClient] Async Http Request Docs.

ITWeb/개발일반 2016. 9. 28. 10:23


async http client 기능 구현을 위해 문서 keep 합니다.


https://hc.apache.org/httpcomponents-asyncclient-dev/quickstart.html


https://github.com/AsyncHttpClient/async-http-client

:

[Tomcat] Spring framework 사용 시 중복 실행 이슈

ITWeb/개발일반 2016. 9. 19. 11:08

tomcat + spring 을 사용하면서 startup.sh 를 이용해서 실행 후 로그를 확인해 보면 두 번 실행(로딩) 되는 모습을 확인 할 때가 있습니다.


이렇게 두 번 실행이 될 경우 예상하지 못했던 문제를 가끔 경험 하게 되는데요.

아래와 같이 tomcat 의 server.xml 수정을 통해서 한 번만 실행 되도록 처리 할 수 있습니다.


기존 두 번 실행 되던 server.xml)

    <Engine name="Catalina" defaultHost="localhost">

      <Host name="localhost"  appBase="webapps"

            unpackWARs="false" autoDeploy="false">

        <Context docBase="web-service" path="/" reloadable="false" />

      </Host>

    </Engine>



수정된 server.xml)

    <Engine name="Catalina" defaultHost="localhost">

      <Host name="localhost"  appBase="webapps/web-service"

            unpackWARs="false" autoDeploy="false">

        <Context docBase="" path="/" reloadable="false" />

      </Host>

    </Engine>


그냥 별건 아니지만 scheduler 같은 컴포넌트를 사용하시는 경우 중복 실행이 될 수 있기 때문에 공유해 봅니다.

:

[App] android 앱 디컴파일 해보기

ITWeb/개발일반 2016. 8. 22. 17:29

아래 링크를 통해서 필요한 도구를 얻을 수 있습니다.


https://apkpure.com
https://github.com/pxb1988/dex2jar
http://jd.benow.ca/



디컴파일 하기)


1. apk 파일 확장자를 zip 으로 변경 합니다.

2. unzip 을 이용해서 압축을 풉니다.

3. 아래와 같이 디컴파일 합니다.

$ ./d2j-dex2jar.sh /android/memebox/classes.dex

4. jd를 이용해 생성된 classes-dex2jar.jar 를 열어 봅니다.



:

[GIT] master 브랜치를 무식하게 변경해 보자.

ITWeb/개발일반 2016. 8. 16. 16:22

구글링 하면 많이 나옵니다.

이도 저도 귀찮을 때 사용하세요.


$ git checkout master 

$ git reset --hard better_branch  

$ git push -f origin master 


또는 


$ git branch -M branch_name master


:

[Bash Script] ssh 접속 시 hostname 기준으로 편하게 사용하기.

ITWeb/개발일반 2016. 8. 3. 14:37

그냥 노가다 입니다.

ssh 접속 할때 dev/stage/prod 환경으로 각각 접속 할때 hostname 기준으로 하다 보면 매번 입력하기 귀찮은데요.

기억도 나지 않고, 그래서 노가다 스크립트 하나 만들었습니다.


변형해서 사용하거나 그냥 하드코딩 하거나 맘대로 사용하세요.


#!/bin/bash


SUFFIX='web'


echo '1) stage-web'

echo '2) prod-web'

... 중략


read choice


case $choice in

  1)

    SUFFIX='web'

    ;;

  2)

    SUFFIX='irc'

    ;;

... 중략

    ;;

  *)

    echo 'Choice number.'

    exit;

esac


echo "Connecting to ssh {PREFIX-NAME}-$SUFFIX"

sleep 1

ssh {PREFIX-NAME}-$SUFFIX


: