❯ echo filepath.ext{,.bak}
filepath.ext filepath.ext.bak

❯ echo filepath{.ext,.bak.ext}
filepath.ext filepath.bak.ext

❯ FILENAME=myfile.ext
❯ FILE=${FILENAME%.*}
❯ EXTN=${FILENAME##*.}
❯ echo $FILE $EXTN
myfile ext
❯ echo $FILE.{$EXTN,bak.$EXTN}
myfile.ext myfile.bak.ext

 

'OS > Linux' 카테고리의 다른 글

IPMI 설정 및 활용 방안  (0) 2019.09.02
CENTOS 7 , firewall-cmd Port forwarding  (0) 2019.04.05
nodejs 설치 in CentOS  (0) 2019.03.21
CentOS 7 Full NAT 설정, Secondary IP 추가  (0) 2018.11.05
pdnsd로 DNS Proxy 설정하기  (0) 2018.11.05

Ubuntu에서 OpenJDK 9 이상 버전을 설치하고, TLS 관련 애플리케이션을 실행하면 인증서 오류로 실행이 안되는 경우가 있다.
원인은 cacerts keystore OpenJDK 이상에서 비어 있기 때문이다.

javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
        at java.base/sun.security.ssl.Alerts.getSSLException(Alerts.java:214)
        at java.base/sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1969)
        at java.base/sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1904)
        at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1436)
...

해당 서버에서 아래 명령을 실행해서 인증서 관련 초기화를 한번 수행 해주면 된다.

sudo sh -c "/usr/bin/printf '\xfe\xed\xfe\xed\x00\x00\x00\x02\x00\x00\x00\x00\xe2\x68\x6e\x45\xfb\x43\xdf\xa4\xd9\x92\xdd\x41\xce\xb6\xb2\x1c\x63\x30\xd7\x92' > /etc/ssl/certs/java/cacerts"

sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure

'DevOps , SRE' 카테고리의 다른 글

AWX 한방에 설치하기  (0) 2019.05.18
SRE Recruit  (0) 2019.04.29
nGrinder 빨리 설치하기  (0) 2019.04.29
Prometheus vs InfluxDB  (0) 2019.04.21
Git 상황별로 작업 원복 하기  (0) 2019.03.25

MacBook 터치바 오류 해결 법 (Control Strip Error)

오류는 크게 두가지 이다.

1. 아예 검은 화면으로 사라지거나, 터치바의 터치가 안먹는 경우

이 경우는 hang 걸린 상태로 해당 프로세스를 죽여주면 다시 살나면서 정상화 된다.

  • 터미널을 열고 (Spotlight에서 terminal을 입력 후 terminal.app 선택 )
  • 아래 명령을 입력 해준다.
killall ControlStrip

2. 이상 동작하는 경우 - 다양한 증상이 있다.

이 경우는 설정이 꼬여있는 경우로, 아래 증상 들이 나타난다.

  • 특정 버튼이 안 눌린다.
  • 터치바 축소된 상태에서만 동작하지만 터치바 확장시 검은 화면으로 터치바가 사라진다.
  • 확장 프로그램 환경설정 버튼만 나오고 누르면 설정의 확장 프로그램 나오지만 실제 제대로 설정 안되는 경우
  • 확장 프로그램 환경설정 설정이 터치바에 뜬다면 거의 이 경우 이다.

내용은 TouchBar 설정 파일을 지우고, 현재 MacBook에 있는 임시 파일을 모두 삭제한다. (따라서 시간이 좀 걸린다.)
터미널에 익숙한 사람은 아래 커맨드를 치고, 아닌 사람은 finder에서 찾아서 휴지통으로 넣고 리부팅 한다.

  • 터미널 사용
rm -f ~/Library/Preferences/com.apple.touchbar.agent.plist
rm -rf ~/Library/Caches/*
  • finder 앱으로 문제 설정 파일을 지울 경우
  1. Finder 실행 후 Shift + Command + G 를 눌러서 폴더로 이동 입력 창 띄운다.
  2. ~/Library/Preferences/ 를 입력하고 이동 버튼 누르고 com.apple.touchbar.agent.plist 파일을 찾아서 휴지통으로 이동
    처음 경로 입력때 첫번째 ~를 빠뜨지지 않도록 주의 하자
  3. 다시 Shift + Command + G 눌러서 ~/Library/Caches 를 입력해서 이동
  4. Command + A 를 눌러서 전체 선택한다음 휴지동으로 이동
  5. 껏다 켠다.
  6. 잘되면 휴지통 비운다.

'ETC.' 카테고리의 다른 글

PM, RFI, RFP, WBS, SOW, POC, BMT  (0) 2019.09.18
DDoS 장비 구성 방식  (0) 2019.01.23
애자일 소프트웨어 개발 선언,  (0) 2018.08.12
TCP 튜닝  (0) 2018.03.30
Let's Encrypt Wildcard 인증서 발급하기  (0) 2018.03.29

MAC에서 외부 python3 등을 brew등로 설치하고 나서 외부 https 싸이트를 python으로 접근할려고하면 아래 구문이 포함된 에러를 만나게 된다.


ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)

 

로컬 인증서가 등록이 안되어 있어서 그럴것으로 아래 내용으로 all_certifi.py 만들고 한번 실행 해주면 된다.

# install_certifi.py
#
# sample script to install or update a set of default Root Certificates
# for the ssl module.  Uses the certificates provided by the certifi package:
#       https://pypi.python.org/pypi/certifi

import os
import os.path
import ssl
import stat
import subprocess
import sys

STAT_0o775 = ( stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR
             | stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP
             | stat.S_IROTH |                stat.S_IXOTH )


def main():
    openssl_dir, openssl_cafile = os.path.split(
        ssl.get_default_verify_paths().openssl_cafile)

    print(" -- pip install --upgrade certifi")
    subprocess.check_call([sys.executable,
        "-E", "-s", "-m", "pip", "install", "--upgrade", "certifi"])

    import certifi

    # change working directory to the default SSL directory
    os.chdir(openssl_dir)
    relpath_to_certifi_cafile = os.path.relpath(certifi.where())
    print(" -- removing any existing file or link")
    try:
        os.remove(openssl_cafile)
    except FileNotFoundError:
        pass
    print(" -- creating symlink to certifi certificate bundle")
    os.symlink(relpath_to_certifi_cafile, openssl_cafile)
    print(" -- setting permissions")
    os.chmod(openssl_cafile, STAT_0o775)
    print(" -- update complete")

if __name__ == '__main__':
    main()

'OS' 카테고리의 다른 글

Mac OSX에서 python3를 기본으로 쓰기  (0) 2020.02.01

Mac OSX에서 python3를 기본으로 쓰기

  • 맥 재설치하면서 python3 를 기본으로 설정하기 위해서 정리함
  • 실제 python 프로젝트가 있다면 프로젝트 레벨로 관리하는것이 좋다. pyenv 사용
  • 지금은 OS 기본 사용을 목적으로 설정 한다.

전제

  • Mac을 쓴다면 일단 패키지 관리자인 brew는 설치한다. 설치되어 있으면 skip (참고: https://brew.sh )
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

방법 1 - 권장하지 않음 (참고만)

  • brew로 python2, python3를 설치하고 shell의 rc파일에 alias를 잡는 방식.
brew update
brew install python3
echo "alias pip=/usr/local/bin/python3" >> ~/.zshrc 
echo "alias pip=/usr/local/bin/pip3" >> ~/.zshrc 
# or for Bash
echo "alias pip=/usr/local/bin/python3" >> ~/.bashrc  
echo "alias pip=/usr/local/bin/pip3" >> ~/.bashrc
# If you need Python 2.7
brew install python@2

방법 2 - 권장

  • brew로 pyenv 를 설치하고 pyenv로 원하는 버전을 설치하고 switching 해서 쓴다.
  • brew 대비 다운도 느리고 build를 해서 설치하는 타입이라 처음 설정시 시간이 좀 더 걸리긴 한다.
  • (혹시나 위의 방법 1을 수행 했다면 .zshrc (또는 .bashrc)를 열어서 python과 pip alias 잡힌 두줄을 삭제 한다)
brew install pyenv
pyenv install 3.8.1
pyenv install 2.7.17 # python2도 pyenv로 관리를 하고 싶다면 실행
pyenv global 3.8.1
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
# or for Bash
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

버전 전환 방법

설치된 python 목록을 pyenv versions으로 보고 pyenv global x.x.x로 전환하면 된다.

pyenv versions
pyenv global 2.7.17

'OS' 카테고리의 다른 글

ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed  (0) 2020.02.01

특정 DIR 파일 리스트

_, _, filenames = next(walk(TARGET_DIR), (None, None, []))
DIR='.'
print ([name for name in os.listdir(DIR) if os.path.isfile(os.path.join(TARGET_DIR, name))])
f = []
for (dirpath, dirnames, filenames) in walk(TARGET_DIR):
    f.extend(filenames)
    break

OSX Package는 개인적으로는 Brew로 설치 하는 걸 권장합니다.

1 단계 – 전제 조건

  • 터미널 :Mac 터미널에 액세스 할 수 있어야 합니다.

  • Homebrew :Homebrew는 대부분의 오픈 소스 소프트웨어를 설치하는 데 사용되는 널리 사용되는 패키지 관리 도구입니다.
    설치가 안되어 있다면, 아래 커맨드로 설치할 수 있습니다.

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2 단계 – macOS에 Visual Studio Code 설치

brew update
brew cask install visual-studio-code

3 단계 실행

그냥 터미널에서 code 를 실행하면 된다.

XCode CLI (gcc) 설치

xcode-select --install

Android SDK 설치

brew cask install java
brew cask install android-sdk

RFI(Request For Information): RFP 작성을 위한 정보 요청서  

RFP(Request For Proposal): 요구사항 기반의 제안 요청서 

WBS(Work Breakdown Structure): 업무 분해 구조, TBS(Task Breakdown Structure): 작업 분해 구조
: 제품을 개발 생산하는 과정에서 기술적인 사항과 관련하여 하드웨어, 소프트웨어, 서비스 및 기타 작업 과제들을 상세하게 구성하여 조직화하는 것

SOW(Statement Of Work): 작업 지시서, 작업기술서, 업무기술서, 시방서. 공급할 제품 또는 서비스의 상세한 설명

POC(Proof Of Concept): 레퍼런스가 없거나 아직 시장에 나오지 않은 (신기술이 적용된) 신제품에 대한 기능과 성능을 검증하는 단계 

BMT(Bench Marking Test): 동일한 시험환경에서 경쟁사간의 제품 기능 및 성능에 대한 비교시험

'ETC.' 카테고리의 다른 글

MacBook 터치바 오류 해결  (0) 2020.03.22
DDoS 장비 구성 방식  (0) 2019.01.23
애자일 소프트웨어 개발 선언,  (0) 2018.08.12
TCP 튜닝  (0) 2018.03.30
Let's Encrypt Wildcard 인증서 발급하기  (0) 2018.03.29

+ Recent posts