2018. 11. 5. 13:10

1. 조사배경

  Send build artifacts over SSH의 사용중 일부 소스만 복사할려고 하는데. 매번 실패하여 어떤 환경 변수를 쓸수 있나 조사함




2. URL

  http://127.0.0.1:8080/env-vars.html   (127.0.0.1을 설치한 서버 IP로 바꾸면 된다.)



3. 참고 

https://www.theserverside.com/tutorial/Jenkins-environment-variables-list-for-shell-script-build-jobs




Posted by citrine
2018. 11. 2. 16:24

1. 조사이슈

  기존 프로젝트를 maven Convert및 빌드를 하려고하는데 bom이 있어서 에러가 발생한다.



2. 관련 도구

  dos2unix



3. 실행 예

  1) 현재 디렉토리의 모든 파일의 bom을 없앤다.

     dos2unix *


  2) 현재 디렉토리 하위의 모든 java 파일에 대해 bob을 없앰

    dir /A -D /S /B *.java|dos2unix

Posted by citrine
2018. 5. 4. 09:41

[TIP] (사이트 소개) - 리펙토링 및 디자인 패턴을 쉽게 설명한 사이트입니다.


URL : https://refactoring.guru


감사합니다.


Ps) Study용 문서 작성을 위해 참고할 만한 사이트를 찾다가 발견했는데… 그냥 이 사이트 보고 진행을 해도 될 정도로.. 잘 되어 있는 것 같습니다.

(역시 세상은 넓고 찾아면 다 있는 것 같아요 ㅠ.ㅠ)



Posted by citrine
2017. 12. 20. 16:33

Web Developer Roadmap

Roadmap to becoming a web developer in 2017

Below you find a set of charts demonstrating the paths that you can take and the technologies that you would want to adopt in order to become a frontend, backend or a devops. I made these charts for an old professor of mine who wanted something to share with his college students to give them a perspective.

If you think that these can be improved in anyway, please do suggest.


Did you like this guide and want more of the similar content? 
Subscribe for the launch of Hugobots or follow me on twitter!


🚀 Introduction

🎨 Front-end Roadmap

👽 Back-end Roadmap

For the backend, personally I would prefer Node.js and PHP 7 for the full time. Plus, I have been experimenting lately with Go and I quite like it. Apart from these, if I have to choose another one, I would go for Ruby. However this is just my personal preference, you can choose any of the shown languages and you will be good.

👷 DevOps Roadmap



Posted by citrine
2017. 11. 16. 09:47

공폰을 이용한  무선 랜카드(USB) 대체 사용하기


1.사용방법

  1)  wifi 연결을 사용하여 외부 무선 AP에 접속한다.

  2) 무선 연결하고 싶은 PC에 USB로 핸드폰을 연결한다.

  3) USB 테더링 기능을 활성화 시킨다. (끝)



2. 참고

  1) 기존에 내부망 전용 PC에서 무선 AP 연결했으나 인터넷 안될때

     가) 기존 내부망 네트워크를 비활성화 > 활성화 시킴

     나) 가)를 해도 되지 않으면 네트워크 연결 우선 순위 변경
     ([네트워크] Windows 7에서 네트워크 연결 우선 순위를 변경) 문서 참고

     http://effortmakesme.tistory.com/117?category=616799


    다) 내부망 연결이 안될때는 

     "[네트워크] WINDOW-랜카드2개-연결-내부-외부망-사용-route-문제점-해결하기" 문서 참고

      http://effortmakesme.tistory.com/116?category=616799










Posted by citrine
2017. 11. 16. 09:20

Windows 7에서 네트워크 연결 우선 순위를 변경 하려면 단계

 
  1. , 시작 검색 필드에 네트워크 연결 보기를입력 합니다.

    Click Start, and in the search field, type View network connections.
  2. ALT 키를 눌러 고급 옵션 을 누른 다음 고급 설정...

    Press the ALT key, click Advanced Options and then click Advanced Settings...
  3. 로컬 영역 연결 을 선택 하 고 녹색 화살표를 우선적으로 원하는 연결을 클릭 합니다.
    Select Local Area Connection and click the green arrows to give priority to the desired connection.

     
  4. 환경 설정에 따라 사용할 수 있는 네트워크 연결을 구성 하는 후 확인을 클릭 합니다.
  5. 사용 가능한 연결을 감지 하는 경우 컴퓨터 우선 순위 순서에 따라 됩니다.

 

Windows 7에서 무선 네트워크 연결의 우선 순위를 변경 하는 단계

컴퓨터는 한 번에 여러 개의 무선 네트워크를 검색할 수 있습니다. 이 문서에서는 먼저 연결 하려는 무선 네트워크 우선 순위를 지정 하는 방법.
 
  1. 시작 을 클릭 하 고 검색 필드에 네트워크 및 공유 센터를입력 합니다.
    Click Start, and in the search field, type Network and Sharing Center.

     
  2. 네트워크 및 공유 센터에서 무선 네트워크 관리를클릭 합니다.
    In Network and Sharing Center, click Manage wireless networks.

     
  3. (예: 연결 2 연결 1보다 작은 우선 순위 에) 우선 순위를 지정 하려면 연결을 클릭 하 고 위로 이동을 클릭 한 다음.
    Click the connection to be given priority


    Click the connection to be given priority

     
  4. 다음에 네트워크를 검색 하는 것 컴퓨터 연결 1 연결 2 보다 더 우선 순위를 제공 합니다.


Posted by citrine
2017. 11. 15. 09:40

안녕하세요 메르세데스입니다.


며칠 전 하나의 PC에 랜카드를 2개 연결 하게 되었습니다.  


다름이 아니라.. 저희 사이트에서 사용하는 인터넷속도가 100M인데.. 이걸 이용하여 외부사이트에 대량의 데이터를 전송하고 받는것을 구성 하다보니.. 전반적으로 사이트의 Internet속도가 떨어지게 되어 그렇습니다.


제가 난리쳐서 결국엔 제가 원하는 대로 네트워크를 구성하게 되었습니다. 한편으로는 다행이지만..   이론으로만 알고있었던 내용을 실무에 적용시켜보니 몇가지 문제가 발생하였습니다.


일단 100% 마음에 들진 않지만.. 급한대로 이렇게 생각을 했습니다.



랜카드2개 연결 구성계획


하나의 pc에 랜카드를 2개 꽂아서 하나는 내부망.. 그리고 하나는 외부망으로 연결 한 것입니다.   외부망의 보안이 취약해 지니.. 나중에 방화벽안에 넣을 생각이지만.. 시간이 없는관계로..............


[인터넷회선2]는 1G로.. [인터넷회선1]은 100M로 되어있습니다.  



이더넷 2개 연결


제가 고정ip회선을 무조건 임대해야 한다고 목소리를 키워서.. 다행이도  기가 고정ip 1회선을 연결할 수 있었습니다.


아래처럼 정보를 넣고 네트워크의 구성을 완료하였습니다.   2개의 연결시 한곳의 gateway는 안 넣어도 사용가능 합니다.


자동ip로 외부망을 연결하신다면 당연히 auto로 하시면 됩니다. 하지만 2개의 이더넷을 모두 자동으로 설정할 순 없습니다.


내부망IP세팅GateWay는 생략가능


외부망IP세팅혹dhcp라면.. 자동으로 연결하면됨


100M라인은 저희 사이트의 내부망에 연결이 되고.. .나머지는 외부망으로 연결되어 데이터를 전송하고 받아오게 되는거죠..  

아주 잘 되네요..   인터넷도 잘 열리고 tracert로 위치를 추적해도 외부로 잘 빠져나가고요...  같은 C-CLASS 대역의 서버에 접근도 잘 되고요..


그런데 갑자기 뜻하지 않은 문제가 발생하였습니다.


이 컴퓨터에서 다른대역의 내부망으로 접근이 되질 않는 것입니다.  아래보시면..    192.168.xx.xx 로 시작하는 네트워크는 백본(B/B) 아래에 구성되어 있기때문에 접근이 되야 하는데..    경로추적을 해보면.. 외부로 나가버립니다.



tracert경로추적


각종 문서와 사례들을 찾아 확인해보니.. WINDOW에 문제가 있음을 알아냈습니다.


윈도우에서는 여러개의  이더넷이 연결되어 있다 하더라도 하나의 GATEWAY만 사용한다.


네.. 그렇습니다!   위에 IP주소를 세팅하는 화면에서 내부망의 게이트웨이를 생략하였는데요.. 사실 집어넣어도 제 기능을 하지 않습니다. 의미가 없는 세팅인 것이죠..  실제 그렇게 세팅을하고 테스트를 해봐도 결과가 마찬가지 입니다.


예를들어..  내 컴퓨터의 내부주소가  192.168.1.100 인데..    192.168.112.20 의 컴퓨터에 접근해서 무슨파일을 받아오고싶다면..  주소창에 SMB의 형태로 \\192.168.112.20 이렇게 접근을 해야 하는데  없는 곳이라고 안됩니다. 물론 접근할 수 있는 기본적인 설정이 되어있는 PC임에도 말이죠..   패킷의 경로를 추적해보면..Gateway를 타고 외부로 나가버립니다.


 

그렇다면 방법이 없는 것일까요? 아닙니다!!!      네트워크장비처럼 WINDOW에 라우팅을 넣어주면 해결 할 수 있습니다.       


스위치도 아니고.. 윈도우컴에 라우팅을??    저도 확인하면서 이런 기능이 되는지 처음 알았습니다. 


명령어는 간단합니다.  CMD(도스) 창을 여신 후    접근하려 하는 곳의 라우팅정보를 넣어주시면 됩니다.


저 같은 경우..  라우팅IP를 백본으로 지정했습니다.


route add [접근할 곳의ip] mask [마스크주소] [라우팅ip] [옵션]



아래처럼 정보를 집어넣고..적용하였습니다. 엔터키를 치자마자 바로 적용됩니다. 


그리고 경로추적을 해보니.. 바로 됩니다.  이때 주소에 맞게 서브넷마스크를 잘 넣어주셔야 합니다.  


그리고 옵션중 -p의 경우..   컴퓨터가 껏다 켜져도 설정을 그대로 유지시킬 경우 필요합니다. 정말 중요한 옵션이죠.. 

포멧하면 다시 세팅해주셔야 합니다.ㅎㅎ 


route add 로 라우팅추가


route print를 하면 현재 라우팅테이블을 조회할 수 있습니다. 네트워크쪽에서 일하시는 분들에겐 익숙하시겠죠..


route print로 라우팅테이블확인


각종 옵션에 관한 설명을 보시고 싶다면..  명령어를 치시고 엔터를 치면됩니다. 친절하게 한글로 잘 나와있습니다.  


실수로 -f 옵션과 같은 것을 치는것은  매우 위험하오니 설정하기 전.. 막 굴러다니는 컴퓨터에서 테스트를 거친 후 적용하시는것을 적극 추천합니다.


route 명령어 살펴보기


이렇게 한건 해결했습니다. 저와 비슷한 고민을 하시는 분들께 혹시 도움이 되셨으면 좋겠네요 ^^

Posted by citrine
2017. 10. 10. 18:08

1. 배경 : 프로그램을 하다가 내가 만든 프로그램이 파일 핸들을 Close를 정상적으로 하는지 확인이 필요했음



2. 환경 구성

  openfiles /local on [ENTER]

  재부팅


3. 명령

  OPENFILES /query 명령을 이용하여 본다. 



C:\Users\RIKKY>openfiles /query /?


OPENFILES /Query  [/S 시스템 [/U 사용자 이름 [/P [암호]]]]

                  [/FO 형식] [/NH] [/V]


설명:

    관리자는 시스템에서 원격으로 열린 파일과 폴더의 목록을

    표시할 수 있습니다.


매개 변수 목록:

    /S      시스템          연결할 원격 시스템을 지정합니다.


    /U      [domain\]user   명령줄을 실행할 사용자 컨텍스트를

                            지정합니다.


    /P      [암호]          주어진 사용자에 대한 암호를 지정합니다.

                            지정합니다.


    /FO     포맷            출력 표시 형식을 지정합니다.


                            사용할 수 있는 값: "TABLE","LIST","CSV"


    /NH                     "열 머리글"을 표시하지 않도록

                            지정합니다.

                            사용할 수 있는 값: "TABLE", "CSV"


    /V                      자세한 정보를 표시하도록


    /?                      이 도움말 메시지를 표시합니다.


예:

   OPENFILES /Query /?

   OPENFILES /Query

   OPENFILES /Query /FO csv /NH

   OPENFILES /Query /FO LIST /V

   OPENFILES /Query /S 시스템 /U 사용자 이름 /P 암호 /NH

 


ex) java라는 프로그램이 사용하는 파일을 모두 볼때

openfiles /query /fo table /v |findstr java

Posted by citrine
2017. 7. 18. 15:43

UML 클래스 다이어그램 기본상식 ( C# )

 | 
본격적인 GOF의 디자인 패턴을 분석하기 전에, GOF의 디자인 패턴에서 사용하는 클래스 다이어그램도를
보려면 UML을 알아야 합니다. 클래스 구조와 클래스간에 관계에 대해서만 알아도 GOF의 디자인 패턴을
이해하는데에는 무리가 없다고 봅니다. 

아래내용을 필수적인 것이니 꼭 이해하셔셔 자신의 것으로 만드세요~


1.Class(클래스 정의)

  -클래스에 대한 데이터(멤버변수)와 행동양식(멤버 메서드)을 정의한다.
  -3부분으로 나뉘어지며 각각 클래스명,데이터,행동양식을 정의한다.




 ①상단: 클래스명

 ②중단:데이터(멤버변수)
    
     ☞데이터 타입
      -(Private): 외부에 노출이 되지 않는 한정자
      +(Public): 외부에 노출이 되는 한정자
      #(Protected): 클래스나 상속된 클래스에서 접근가능한 한정자

 ③하단:행동양식(메서드)


2.Class Relationship(클래스간 관계)


 -클래스간의 관계는 총 4가지로 분류할 수가 있다.
  
 ①Generalization(일반화 관계) : 일반적인 것(동물)에서 특화된 것(사자)과의 관계를 나타낸다. 보통 상속을 표현한다.
 ②Realization(실체화 관계) : 인터페이스와 그것을 구현한 것과의 관계를 나타낸다.
 ③Association(연관 관계) : 한 객체가 다른객체를 소유하거나 파라미터로 객체를 받아서 처리하는 관계를 나타낸다.
 ④Dependency(의존관계) : 한 객체가 다른객체를 소유하지는 않지만, 다른객체의 변경에 따라서 같이 변경을 해주어야 한다.


 ①Generalization(일반화 관계)

   
    -상속을 표현한다. ( A는 B다. is a)
    -특수한 것에서 일반화를 표현한다. ( 특수화된 것에서 일반적인 내용들을 이끌어 내서 상위 클래스<일반화>가 된다. )
    
     




  : 위의 예에서 보면, 

   Unit이라는 상위 클래스에서 공통적으로 마린이나 메딕에서 사용하는 Name이나 Health 멤버변수를 추상적으로 
   선언하고 Move라는 메소드를 선언을 합니다. Unit클래스를 상속받는 마린이나 메딕에서는 각자의 특수한 스킬이나
   액션에 따라서 다른 멤버변수나 메서드를 추가하여 구현을 하거나, 상속받은 추상 메서드를 오버라이드해서 
   구현하면 됩니다.



②Realization(실체화 관계)

   인터페이스를 구현하는 관계를 표현한다. ( A는 B처럼 행동한다. behaves like )
   - 상속의 개념과 비슷하지만 상속과 다른점은, 
    ->상속 : 직접 상위 클래스를 상속받아서 Unit 클래스의 기능을 포함한다.(멤버변수 및 메소드 모두 상속됨)
    ->인터페이스 : 서로 다른 클래스라도 인터페이스만 준수하면(인터페이스의 함수들을 모두 구현하면) 동일한 기능들이 구                      현 될 수가 있다.(메소드 같은 기능들만 구현이 됨)

      즉, 완전히 다른 클래스에 공통적인 기능(메서드..)을 부여하는 것이다.

    



  :위에서 보시면 Building이라는 것에서 Barraks,Factory,Bunker가 상속되어서  멤버 변수인 Health와 Ammor의 데이터와
  Contruct(건물짓기), UnderAttack(공격받기) 기능이 부여가 됩니다. 여기에서 테란건물의 특수기능인 건물을 상공으로 띄워서 
  이동하고 다시 땅으로  착지하는 기능을추가하려고 했을때, Building의 상위 클래스에 메서드를 추가하게 되면 Bunker라는      건물은 이동이 원래 불가능한데 그 기능을 갖게 되서 문제가 발생합니다. ( 단순히 Overide해서 아무 기능이 없게 해도 되지만  상속받는 모든것에 그렇게 처리를 하는것도 효율적이지 못한거 같습니다. ) 이때 인터페이스를 구현해서 이동이 가능한 건물  에만 인터페이스를 구현하게 되면 됩니다. 인터페이스를 구현하는 곳에서는 Move,Land,Fly 메서드를 반드시 구현해야 합니다.  


③Association(연관 관계)
  
 - 한 객체가 다른객체를 소유(사용)하거나, 참조하여 사용할때

 - 단방향과 양방향이 존재한다.

     단방향: 클래스간의 관계가 "->" 이렇게 구현이 되며, 화살표의 대상은 자신을 가리키는 클래스의 존재여부를 알지 못한다. 
     양방향: 클래스간의 관계가 "-" 로 구현되며 서로 연관이 되어있다.

 - 연관관계는 대상이 되는 객체의 Life Cycle에 다라서 두가지로 분류가 된다.

     ⑴Aggregation (집합) : 메인 클래스가 삭제될시 대상 클래스는 같이 삭제가 안됨 (라이프 사이클이 다름) 
                               분리가 되도 독립적으로 동작됨
                               약한 결합

     ⑵Composition(합성) : 메인 클래스가 삭제될시 대상 클래스도 같이 삭제가 됨( 라이프 사이클이 동일)
                               분리가 되면 의미가 없어짐
                               강한결합

   
 [예-Association] 
  



 : 마린은 총이라는 클래스를 멤버 변수로 가지고 있습니다. 5.56mm Gun이라는 클래스는 marine이 있다는 사실도 모릅니다.




 [예-Aggregation]


 
 : 팩토리는 애드온이라는 것을 건설해서, 기존의 팩토리에서는 생산하지 못하는 시즈탱크를 생산할 수가 있습니다.                 애드온은 팩토리가 위치를 이동하여도 파괴되지 않고, 다른 팩토리가 연결이 되면 또 동작을 정상적으로 하게 됩니다.                                                 

    다른예로, 컴퓨터에는 모니터와 마우스와 키보드가 있는데 이것들도 같은 의미로 해석이 됩니다.

   

[예-Composition]


 : 콤포지션은 스타크래프트에서 적용되는 유닛이 없어서 난감햇는데요(--;) 가장 유사한게 캐리어 입니다. 

  실제 스타크래프트에서는 캐리어가 생성이 되어서 인터셉터라는 유닛을 다시 생성하지만, 여기서는 전제조건을 캐리어가

  생성이 되는 동시에 인터셉터가 생성이 된다고 생각하겠습니다.

  캐리어가 죽으면 안에 있던 인터셉터도 같이 죽게되니 라이프 사이클을 공유하게 되죠. 이것이 바로 콤포지션 모델입니다. 


Dependency(의존관계) 


  : 의존관계는 한 객체가 다른객체를 소유하지는 않지만, 다른객체의 변경에 따라서 같이 변경을 해주어야 할때 사용합니다.
    일반적으로 아래의 상황일때 사용하게 됩니다.

     ⑴
다른 객체를 파라미터로 받아서 그 메서드를 사용한다.
     ⑵객체의 메서드 안에서 다른 객체를 생성해서 리턴한다.
  
   
   



 : 배럭스에서는 마린이나 메딕등을 생산을 할 수가 있습니다. 배럭스는 마린이나 메딕을 사용하지 않고 단순히

  MakeMarine이라는 메서드를 통해서 마린을 new로 생성해서 리턴할 뿐입니다.

  위에서 마린의 클래스에서 생성자에 변경이 생기면 배럭스에서도 생성하는 구문을 수정이 되어야 합니다. 



출처: http://hongjinhyeon.tistory.com/25 [생각대로 살지 않으면 사는대로 생각한다.]

Posted by citrine
2017. 7. 14. 10:35

CentOS기준으로 작성되어 있다.


Following process is for CentOS
1. Open up the this script (using VIM or other editor):

vim /etc/sysconfig/jenkins

2. Find this $JENKINS_USER and change to “root”:

$JENKINS_USER="root"

3. Then change the ownership of Jenkins home, webroot and logs:

chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins

4) Restart Jenkins and check the user has been changed:

service jenkins restart
ps -ef | grep jenkins

Now you should be able to run the Jenkins jobs as the root user and all the shell command will be executed as root.



참고)

https://stackoverflow.com/questions/29926773/run-shell-command-in-jenkins-as-root-user


Posted by citrine