$ find . -type f|xargs grep -r --color=auto -i jenkins

형식이 파일인 것중 내용에 jenkins라는 문자열을 포함하고 있는걸 토해내라... 

'서버 > 리눅스' 카테고리의 다른 글

Ubuntu 14, 16 tomcat service 등록  (0) 2019.09.20
Ubuntu 계정 생성 및 sudo 권한 부여  (0) 2019.04.05

docker compose

 

version: '3.7'

services:
    mariadb:
        image: mariadb
        ports:
            - "3306:3306"
        volumes:
            - ./db/conf.d:/etc/mysql/conf.d
            - ./db/data:/var/lib/mysql
            - ./db/initdb.d:/docker-entrypoint-initdb.d
        environment:
            MYSQL_HOST: localhost
            MYSQL_ROOT_PASSWORD: rootpw
            MYSQL_ROOT_HOST: '%'
            TZ: Asia/Seoul
        networks:
            - default
        restart: always
        stdin_open: true
        tty: true
    redis:
        image: redis
        command: redis-server --requirepass redispw --port 6379
        container_name: redis6379
        hostname: redis6379
        labels:
            - "name=redis"
            - "mode=standalone"
        ports:
            - "6379:6379"
        networks:
            - default
        volumes:
            - ./redis:/data
        restart: always
        stdin_open: true
        tty: true
    rabbitmq:
        image: 'rabbitmq'
        container_name: rabbitmq-stream
        ports:
            - "5672:5672"
            - "15672:15672"
        networks:
            - default
        volumes:
            - ./rabbitmq/data:/var/lib/rabbitmq
            - ./rabbitmq/log:/var/log/rabbitmq
        environment:
            RABBITMQ_ERLANG_COOKIE: "RabbitMQ-My-Cookies"
            RABBITMQ_DEFAULT_USER: "admin"
            RABBITMQ_DEFAULT_PASS: "adminpw"
        restart: always
        stdin_open: true
        tty: true
    elasticsearch:
        container_name: elasticsearch
        image: elasticsearch:8.0.0
        ports:
            - "9200:9200"
            - "9300:9300"
        networks:
            - default
        volumes:
            - ./elasticsearch:/usr/share/elasticsearch/data
        environment:
            - ELASTIC_USERNAME=elastic
            - ELASTIC_PASSWORD=elasticpw
            - xpack.security.enabled=false
            - xpack.security.transport.ssl.enabled=false
            - http.cors.enabled=true
            - http.cors.allow-origin=*
            - discovery.type=single-node
            - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
            - TZ=Asia/Seoul
        restart: always
        privileged: true
        stdin_open: true
        tty: true
    kibana:
        container_name: kibana
        image: kibana:8.0.0
        ports:
            - "5601:5601"
        networks:
            - default
        environment:
            ELASTICSERCH_UTL: http://elasticsearch:9200
            ELASTICSEARCH_HOSTS: http://elasticsearch:9200
            TZ: Asia/Seoul
        restart: always
        privileged: true
        stdin_open: true
        tty: true

networks:
    default:
        external:
            name: local-env-network
# docker network create local-env-network
# 컨테이너ID 확인
$ docker ps

# 해당 컨테이너 bash 실행
docker exec -it -u root ${CONTAINER ID} /bin/bash

 

-- 계정 생성

> create user ${User}@${Host} identified by ${Password}

-- User = login id
-- Host = remote ip | '%' (all)
-- Password = 486 (윤하...)
(하루에 네번 사랑을 말하고...여덟번 웃고...여섯번의...)


-- 모든 권한 부여
> grant all privileges on ${DB}.${Table} TO ${User}@${Host} 
  -- option identified by ${Password};
  
-- option 적용시 비밀번호 바뀜
-- DB = 적용할 Database ( possible * )
-- Table = 적용할 Table ( possible * )

-- 권한 적용
> flush privileges

-- 권한 확인
> show grants for ${User}@${Host}

spring 에서 log file 경로를  root인 절대 경로에서 시작하기 마련인데...

/logs/app-name/...

 

뭐 위와 같은 형태의 경로에 저장한다고 하자,

 

그럼 윈도우에서는 위 경로는 알아서 C:\logs...

이 처럼 만들어 줄 것이다.

 

mac은 해당 경로에 대한 접근 권한이 없어서 오류가 나서...

 

ln -s 소프트 심볼릭 링크를 이용하려 했지만,

이것도 루트는 리드온리라고;;

 

구글링해보니, 루트에 쓰기권한을 주는 방법도 있던데, 위험해 보이고,

 

다르게 심볼릭링크를 만드는 방법을 찾아보았다.

 

일단 루트에 /logs 라는 경로를 만들고 싶다고 가정하자,

 

$ sudo vi /etc/synthetic.conf

# /etc/synthetic.conf
logs    /Users/${userid}/logs
# /Users의 logs는 mkdir로 생성

위 처럼 해주고 재부팅을 해보면...

 

root 에서 ls를 입력해보면, logs라는 심볼릭 링크가 생성된걸 확인 할 수 있다.

 

주의할 점은 synthetic.conf 파일 내의 공백은 tab이라는 점...

> ssh-add -l
> sudo ssh-add -K [key file path]

 

재부팅하면 사라지는...마법을 방지.

https://docs.google.com/spreadsheets/d/1BYsqJlHgP2DQnUZMnTLkU3jrnmUsiLd2BifTcdpECDU/copy

 

Google Sheets - 스프레드시트를 작성하고 수정할 수 있으며 무료입니다.

하나의 계정으로 모든 Google 서비스를 스프레드시트로 이동하려면 로그인하세요.

accounts.google.com

 

위 시트를 복사하고, 확장 프로그램 > App Script 로 가서 필요한 스크립트를 수정(수정안해도 상관없음)

스크립에서는 구글의 메일앱을 사용한다.

https://developers.google.com/apps-script/reference/mail/mail-app

 

Class MailApp  |  Apps Script  |  Google Developers

Send feedback Class MailApp MailApp Sends email. This service allows users to send emails with complete control over the content of the email. Unlike GmailApp, MailApp's sole purpose is sending email. MailApp cannot access a user's Gmail inbox. Changes to

developers.google.com

 

해당 스크립트는 꼭 저장 후 파일 > 버전관리 에서 새로운 버전을 발행 후 게시 > 웹앱게시를 통해 게시를 해줘야 한다.

그럼 해당 링크를 html의 form에서 action으로 지정해주면 된다.

 

 

위 화면에서 버전에 대한걸 저장하고,

위 화면에서 최신 버전을 가져와서 배포 준비를 한다.

최초에는 메일앱을 사용하기 위한 권한 부여를 진행한다.

 

위 주소를 복사해서 form의 action에 입력한다.

form의 각 필드의 name property는 시트에서 지정된 컬럼명을 사용한다.

 

이렇게 해서 submit을 하면 해당 내용은 스프레드 시트에 쌓임과 동시에 메일로 전송이 된다.

script 에서 TO_ADDRESS 변수를 지정한 경우 지정된 메일로 메일이 가며, 주석처리로 냅둔 경우 data-email에 적힌 메일로 전송하게 된다.

 

추가적으로 

https://github.com/dwyl/learn-to-send-email-via-google-script-html-no-server/blob/master/google-apps-script.js

 

위 스크립트 처럼 xhr을 통해 폼데이터 전송으로 사용할 경우 깔끔하게 적용 가능하다.

 

위 깃 주소에 샘플페이지 또한 포함되어 있다.

 

본 글은 아래 글을 참고해 작성하였으며, 아래 글은 더욱 자세히 써있다.

 

 

https://kutar37.tistory.com/entry/%EC%A0%95%EC%A0%81-HTML-form%ED%83%9C%EA%B7%B8%EC%97%90%EC%84%9C-%EB%A9%94%EC%9D%BC%EB%B3%B4%EB%82%B4%EA%B8%B0-Google-Apps-Mail

 

정적 HTML form태그에서 메일보내기 : Google Apps Mail

html에서 mailto를 사용하면, 구현은 물론 간단합니다만 outlook과 같은 쓸데없는 프로그램을 실행해 사용자에게 불편을 초래합니다. 아래와 같이 서버 없는 순수 HTML과 자바스크립트로 메일보내기

kutar37.tistory.com

 

본래 Bitbucket의 Id/Pw를 사용해서 연동하려 했으나,

지속적으로 returned status code 128: 를 뱉음.

 

원인을 알 수 없는 와중에 구글링 해보니,

repository 생성시 private으로 생성한 경우 id/pw를 사용한 연결이 불가능 하다고...ㅠ

 

그래서 sshkeygen을 사용해서 쌍키 생성 후 

공개키는 bitbucket에 비밀키는 젠킨스 계정관리에 등록해줌

 

그리고 Git 접속 경로는 https가 아닌 ssh 접속

컴포넌트끼리 통신을 하기 위해 props와 $emit 같은 아이들을 사용하고

좀 더 복잡한 관계를 위해 provide/inject 를 사용한다고 했었더랬지...

 

그리고 대규모라면? 더더더 복잡하다면...

 

중앙집중식 저장소 역할을 하는 Vuex가 있다.

(예전에 투비소프트 제품에서 글로벌데이터셋과 비슷한 느낌)

처음에 프로젝트 생성할때 지정해도 되고~(추천)

npm install vuex 해도 되고~

 

자주 사용되는 코드 데이터나, 사용자 정보등을 담아주면 편하겠지 싶은...

 

처음 생성시 지정하면 알아서 store라는 폴더와 그 안에 기초적인 내용물이 생성되고,

main.js 에선 

import store from './store'

위와 같은 코드를 포함 하고 있게 된다.

 

1. state

사용할 변수들을 지정하는 곳!

사용 방법은 아주 간단하다.

2. mutations

이거 잘 모르겠다...

state에 저장된 값을 바꾸려면 직접 바꾸지 말고 이걸 쓰라는데...

직접 바꿔짐...

(strict를 true로 하면 오류남. 근데 운영모드에선 이거 하면 값 변경 감지에 따른 성능에 이슈가 있다고 하니...)

값 변경에 따른 추적을 위해서 라고 하는데~~

여튼 직접 바꾸지말고 이걸 사용하는걸로, 

페이로드 전달이 가능하고 동기방식이라고함.

포인트는 state의 값을 변경 한다는 점!

 

 

3. getters

이건 computed를 생각하면 된다.

기존 데이터(state)를 활용한 추가연산의 로직이 있는 경우 해당 로직을 반복사용하기보단...

computed를 쓰듯이, getters를 활용하면 되는!

 

4. actions

mutations와 비슷하지만 다른!

비동기 처리를 위주로 하고 state를 직접 변경하는 것이 아닌, 내부에서 mutations을 호출하는 형태로 사용한다.

 

 

 

 

state와 mutations가 뭔가 private한 느낌이라면

getters와 actions는 public한 느낌이랄까?

 

간단한 게시판 위주의 커뮤니티 같은 사이트를 제작하려 했으나, 

당분간 일이 바빠질 예정으로 미뤄야 할듯...ㅠ 

지난 글에서 부모에서 자식 컴포넌트로 데이터를 내려주는 props에 대해 작성하였는데!...

props의 단점은 계층구조가 복잡해지면 복잡해 질 수록~~

전달의 전달의 전달 자체가 복잡해 진다는것...ㅠ

 

이럴때 쓰는것이 Provide(상위)/Inject(하위)

 

상위 컴포넌트에서

...
  provide: function () {
    return {
      testProvide: 'testValue'
    }
  },
...

작성하고

 

하위 컴포넌트에서

...
  inject: ['testProvide'],
  mounted () {
    console.log(this.testProvide)
...

위 처럼 작성하면 됨!

계층 구조에 관계없이 순서만 맞으면 inject로 사용 가능하긴한데...

단점은 어떤 상위 컴포넌트에서 오는 데이터인지 알 수 없다는 점!

 

모르면 파일내 찾기라는 방법이 있징!!

혹은 컴포넌트를 알 수 있는 어떤 id라던가? 그런걸 옵션에 지정해 주면 어떨런지?

+ Recent posts