사용자:Hyeny

위키백과, 우리 모두의 백과사전.

GIT[편집]

settigns[편집]

git config --global user.name "hyegyeong"
git config --global user.email "gprud787@gmail.com"

errors[편집]

git@gitlab.com: Permission denied (publickey).[편집]

  1. $ssh-keygen -t rsa -C "git이메일을 여기에 써주세요."
  2. Your public key has been saved in /home/hyeny/.ssh/id_rsa.pub.
  3. cat /home/hyeny/.ssh/id_rsa.pub
  4. git > settings > SSH and GPG keys > new SSH key
  5. COPY ssh-rsa~~~
  6. ADD SSH key

! [rejected]        master -> master (fetch first)[편집]


LINUX[편집]

vim[편집]

방향키 입력오류[편집]

    vim설치

grep[편집]

grep -r [찾을 문자열] [대상파일들]

chown[편집]

현재 디렉토리 권한 바꾸기 : sudo chown [username] .


SSH[편집]

실행유지[편집]

CTRL + Z
$ bg 또는 $bg 1
$ disown
$ exit

scp[편집]

업로드: spc -i [pem파일경로] [업로드할파일이름] [계정명]@[publicDNS]:~/[경로]

scp -i [path/to/key file/to/copy] [user]@[ec2-xx-xx-xxx-xxx.compute-1.amazonaws.com:path/to/file]

다운: scp -i path/to/key -r directory/to/copy user@ec2-xx-xx-xxx-xxx.compute-1.amazonaws.com:path/to/directory

용량확인[편집]

du -sh


CMD[편집]

날짜[편집]

오늘 날짜
    %date%

어제 날짜
    for /f "tokens=1-3 delims=- " %%A in ('echo %DATE%') do (set YY=%%A&set MM=%%B&set DD=%%C)
    SET /a DD=%DD%-1

입력[편집]

@echo off
setlocal
set /p fdate=INPUT:

반복[편집]

:_loop
    (코드)
goto _loop

텍스트 라인 수 카운트[편집]

    FIND /v /c %fname% ""

파일읽기[편집]

리눅스  cat *.txt  
윈도우  type *.txt

기타[편집]

dir == ls

SHELL[편집]

#!/bin/bash

파라미터[편집]

파라미터 갯수   $#
첫번째 파라미터 $1

조건문[편집]

if [ $x1 -lt 1 ]; then
    echo 'USAGE: '
    exit 0
fi

[ -z ] : 문자열의 길이가 0이면 참

[ -n ] : 문자열의 길이가 0이 아니면 참

[ -eq ] : 값이 같으면 참

[ -ne ] : 값이 다르면 참

[ -gt ] :  값1 > 값2

[ -ge ] : 값1  >= 값2

[ -lt ] : 값1 < 값2

[ -le ] : 값1 <= 값2

[ -a ] : &&연산과 동일 and 연산

[ -o ] : ||연산과 동일 xor 연산

[ -d ] : 파일이 디렉토리면 참

[ -e ] : 파일이 있으면 참

[ -L ] : 파일이 심볼릭 링크면 참

[ -r ] : 파일이 읽기 가능하면 참

[ -s ] : 파일의 크기가 0 보다 크면 참

[ -w ] : 파일이 쓰기 가능하면 참

[ -x ] : 파일이 실행 가능하면 참

[ 파일1 -nt 파일2 ]  : 파일1이 파일2보다 최신파일이면 참

[ 파일1 -ot 파일2 ]  : 파일1이 파일2보다 이전파일이면 참

[ 파일1 -ef 파일2 ] : 파일1이 파일2랑 같은 파일이면 참

출처: https://jink1982.tistory.com/48


반복문[편집]

for i in $(ls);do
    echo $i
    SCRIPT_PATH=`pwd`/$idx
    mkdir $idx
    tar xvf $i -C $idx
    (( idx++ ))
done


for ((i=0;i<10;i++));do
    echo $i
done

디렉터리 목록만 확인 for i in $(ls -d */); do


PYTHON[편집]

UBUNTU 설치[편집]

sudo apt update
sudo apt install software-properties-common
sudo apt install python3
sudo apt install python3-pip
alias python=python3.7
alias pip=pip3

SELENIUM-PHANTOMJS[편집]

설치[편집]

pip install selenium 
apt install wget libfontconfig
mkdir src
cd src
wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
cd phantomjs-2.1.1-linux-x86_64/bin/
cp phantomjs /usr/local/bin/

https://hoony-gunputer.tistory.com/48

Convert Date to Datetime[편집]

2020-04-27 형태의 Date를 2020-04-27 19:57:24 형태인 Datetime으로 바꿀려면 ,

Date뒤에 Time을 붙여주면 된다.

my_date = date.today() #이렇게만 있으면 date타입
my_time = datetime.min.time() #min.time은 00:00:00을 뜻한다.
my_datetime = datetime.combine(my_date, my_time)

List[편집]

리스트 Element들을 문자열로 변환[편집]

print(''.join(List))    #List의 Element들을 공백없이 붙임
print(' '.join(List))    #List의 Element들을 공백을 이용해서 붙임
print('-'.join(List))    #List의 Element들을 -을 이용해서 붙임
print('\n'.join(List))    #List의 Element들을 한줄에 하나씩 출력함

Encoding[편집]

처음 파이썬을 싲가할 때 가장 골치아픈 에러

Unicodeencodeerror: 'utf-8' codec can't encode character ... 블라블라 ...

해결법1.

파일 맨 위에 주석 삽입 (아래에 나오는 모든 문자열이 UTF-8 형식이라는것을 명시

#-*- coding:utf-8 -*-

해결법2.

파이썬의 문자열 인식방법은 기본적으로 Unicode이다.

즉 인코딩된 특정 문자열(cp949, utf-8 등등) >>> Unicode가 되도도록 디코딩 >> 다시 특정방식으로 인코딩
str = str.decode('***').encode('utf-8')

이런식으로 ***방식으로 인코딩된 문자열을 Unicode로 디코딩한후에, 다시 UTF-8로 인코딩하면 해결된다.

한글이 안될시 대부분 cp949로 디코딩하면 해결된다.

+++

cp949 등등 어떤 디코딩으로도 안되는 현상 발생.

print(type(str))

해보니 type이 이미 Unicode 였다..!

그래서 .encode('utf-8')만 해주니 해결되었다.

NODE JS[편집]

개념[편집]

구글의 크롬 V8 자바스크립트 엔진을 기반으로한 비동기 IO 를 지원하는 고성능네트워크 서버이다.

프로그래밍 언어로 Javascript를 사용한다.

2009년 유럽 JSConf의 라이언 달이 V8을 이용하여 자바스크립트의 강력함과 단순함을 활용한 이벤트 기반의 논블로킹 I/O를 주 컨셉으로 만든 백엔드(Back-end) 자바스크립트기반 서버이다.

장점[편집]

비동기 처리로 인해 퍼포먼스가 증가한다.

한가지 언어(Javascript)를 사용하여 서버-클라이언트 모두를 개발할 수 있다.

단점[편집]

싱글스레드이기 때문에 하나의 작업 자체가 시간이 많이 걸리면 전체 시스템의 성능이 낮아진다.

프로그래밍 컨셉이 기존의 서버사이드 컨셉과는 달라서 적응 시간이 필요하다.

- 코드를 순차적으로 실행하는 것이 아니라, 비동기 방식으로 이벤트를 보내 놓고, 그 응답에 대한 이벤트가 오면 핸들러를 통해서 처리하는 형식이기 때문에, 기존 서버 프로그래밍 모델과는 많은 차이가 있다.


nodeJS(EXPRESS) & ReactJS in UBUNTU[편집]

환경설정[편집]

sudo apt-get update
sudo apt-get install nodejs
sudo ln -s /usr/bin/nodejs /usr/local/bin/node
sudo apt-get install npm
sudo npm install -g create-react-app
sudo npm install -g yarn
//update nodejs
sudo npm cache clean -f
sudo npm install -g n
sudo n stable
sudo n latest
//REACT
create-react-app my-app
cd my-app
npm start
//EXPRESS
sudo npm install express-generator -g
sudo express --view=pug priv-api
cd priv-api
sudo npm install
npm start

EXPRESS와 ReactJS 두 개의 앱을 동시에 구동시킬 것이기 때문에 한쪽의 포트를 바꾸어서 충돌을 막아야한다.

cd priv-api/bin

vi www

수정전: var port = normalizePort(process.env.PORT || '3000');

수정후: var port = normalizePort(process.env.PORT || '9000');

npm[편집]

npm은 Node Packaged Manager의 약자

Node.js로 만들어진 모듈을 웹에서 받아서 설치하고 관리해주는 프로그램

Express[편집]

Express.js는 Node.js를 위한 빠르고 간편한 웹 프레임워크(Node.js 개발시 개발을 빠르고 손쉽게 할 수 있도록 도와주는 역할)

Node.js의 핵심 모듈인 http와 Connect 컴포넌트를 기반으로 하는 웹 프레임워크*

  • 프레임 워크: 설계의 기반이 되는 부분을 기술한 기반 코드와, 사용자가 제공된 코드를 입맛대로 확장하는 데 필요한 라이브러리 모두 제공됨
  • 라이브러리: 자주 쓰일 만한 기능들을 모아 놓은 유틸(클래스)들의 모음집 (설계X)
  • 라이브러리와 프레임워크 비교: https://jokergt.tistory.com/89

Configuring a new route in the Express API

Connecting the React Client to the Express API


React JS[편집]

EXCEL(VBA)[편집]

Alt+F11로 개발자 도구 접근

디버그[편집]

1. 메시지 상자 잘 보기
2. Debug.Print 변수 
3. Debug.Print "#"
    'Debug.Print는 Range 변수 같은것 안됨(For안에 넣어서 확인)'


속도관리[편집]

화면 업데이트 중지[편집]

Application.ScreenUpdating = False
Application.EnableEvents = False

[코드]

Application.ScreenUpdating = True
Application.EnableEvents = True


변수[편집]

Dim wSF As WorksheetFunction
Set wSF = WorksheetFunction
Dim sht As Worksheet
Set sht = ActiveWorkbook.Worksheets("sheet1")
sht.Range("B1").Offset(i, 0)

FOR문[편집]

컬럼 데이터 COPY[편집]

'WorksheetFunction.CountA(Range("A:A")) - 1로 전체 행 수 구함'
For i = 1 To WorksheetFunction.CountA(Range("A:A")) - 1
    'Offset(행offset, 열offset)'
    'detailAnal B1의 offset 1부터(B2부터) 복사하고, 뒤에 0을 1로 해버리면 컬럼B가아니라 C)'
    detailAnal.Range("B1").Offset(i, 0).Copy Worksheets("Sheet2").Range("A1").Offset(i, 0)
Next i

컬럼 데이터 COUNTIF[편집]

'E열 전체를 rngServ 범위로 지정'
Set rngServ = Range("E2", Cells(Rows.Count, "E").End(3))
For Each rng In rngServ
    'CountIf(범위,조건): 범위(시트1의A열전체)에서 조건에 맞는게 몇개인지 카운트하라'
    '0이라는건 중복 없다는것'
    If WorksheetFunction.CountIf(Sheets("Sheet1").Range("A:A"), rng) = 0 Then
        'Sheet1의 A열에서 데이터가 있는 종단행 바로 아래셀에 값을 넣어라'
        Worksheets("Sheet1").Cells(Rows.Count, "A").End(3)(2) = rng
    End If
Next rng



파일[편집]

파일 열기[편집]

Public Function Multiple_FileDialog(Optional Title As String = "파일을 선택하세요", _
Optional FilterName As String = "엑셀파일", _
Optional FilterExt As String = "*.xls; *.xlsx; *.xlsm",_
Optional InitialFolder As String = "", _
Optional InitialView As MsoFileDialogView = msoFileDialogViewList,_
Optional MultiSelection As Boolean = True) As String

Dim FDG As FileDialog                       '파일선택창 을 위한 변수'
Dim Selected As Integer: Dim i As Integer   '파일선택창에서 파일이 선택 되어있는지 여부'
                                            '파일선택창에서 선택된 파일(들)의 순번을 나타냅니다.'
Dim ReturnStr As String                     '선택된 파일(들)의 파일경로를 나타내는 텍스트입니다.'

Set FDG = Application.FileDialog(msoFileDialogFilePicker)

'파일선택창 (File Dialogue) 환경설정'
With FDG
    .Title = Title
    .Filters.Add FilterName, FilterExt      '선택할 수 있는 파일 확장자를 제한'
    .InitialView = InitialView                  '파일선택창의 보기종류'
    .InitialFileName = InitialFolder            '초기 폴더경로'
    .AllowMultiSelect = MultiSelection          '다중선택을 허용 여부'
    Selected = .Show
    If Selected = -1 Then
        '파일이 선택되었을 경우 -1을 반환'
        For i = 1 To FDG.SelectedItems.Count '-1했을때 제대로 안되서 삭제.. 혹시 안되면 -1 추가'
                '선택된 파일의 파일경로 받아오기'
                ',로 파일들 구분'
            ReturnStr = ReturnStr & FDG.SelectedItems(i) & ", "
        Next i
        ReturnStr = ReturnStr & FDG.SelectedItems(.SelectedItems.Count)
       
        Multiple_FileDialog = ReturnStr
    ElseIf Selected = 0 Then
        '파일이 선택되지 않았다는 알림창을 띄우는 오류처리 방법'
        MsgBox "선택된 파일이 없으므로 프로그램을 종료합니다."
        End
    End If
End With
End Function
'+다른 오류처리 방법-재 선택 유도'
SelectAgain:
    If Selected = 0 Then
        MsgBox "선택된 파일이 없습니다. 파일을 다시 선택해주세요."
       GoTo SelectAgain:
End If

파일 읽기[편집]

Vars = Split(ReturnStr, ", ")
For Each Var In Vars
    '마지막의 빈 값을 제외하기 위해 If 사용'
    If Len(Var) > 0 Then    
        fpath = 파일경로
        fname = 파일이름
        sname = 시트이름
        
        '현재 Active된 Range(A:A) 열의 각 셀'
        For Each rng In Range("A:A")
            '각 셀의 값에 아래의 수식을 넣음'
            rng.Formula = "='" & fpath & "[" & fname & "]" & sname & "'!" & rng.Address(0, 0)
            '수식의 결과값이 0이다 -> 참조한 셀이 빈값이다.'
            If rng.Value = 0 Then
                'FOR문을 종료한다'
                Exit For
            End If
        Next rng
    End If
Next Var



기타[편집]

배열의 아이템[편집]

    Debug.Print Vars(3)

특정시트활성화[편집]

    Worksheets(시트이름).Activate

컬럼 중복 제거[편집]

컬럼 1개
Worksheets("Sheet1").Columns(1).SpecialCells(2).RemoveDuplicates 1, 1

컬림 여러개
'A1:B의 데이터가 있는 마지막열 구간 범위내에서 1열기준으로(Columns:=) 중복된것을 제거하라.'
Worksheets("Sheet2").Range("A1:B" & Cells(Rows.Count, "A").End(2).Row).RemoveDuplicates Columns:=1

셀 색 변경[편집]

[1]Sheet1.Cells(row, 4).Interior.Color = vbYellow

  1. “엑셀 VBA 매크로 셀의 색상 변경하기.”. 2019년 11월 13일에 확인함. 

IF문[편집]

    같다는 =, 틀리다는 ><

문자열길이[편집]

    Len(str_txt)

삭제[편집]

    행 삭제

    sht.Range("B1").Offset(i, 0).EntireRow.Delete

    열 삭제

    Worksheets("TEMP").Activate

    Columns("A").Delete