사용자:Hyeny
GIT[편집]
settigns[편집]
git config --global user.name "hyegyeong"
git config --global user.email "gprud787@gmail.com"
errors[편집]
git@gitlab.com: Permission denied (publickey).[편집]
- $ssh-keygen -t rsa -C "git이메일을 여기에 써주세요."
- Your public key has been saved in /home/hyeny/.ssh/id_rsa.pub.
- cat /home/hyeny/.ssh/id_rsa.pub
- git > settings > SSH and GPG keys > new SSH key
- COPY ssh-rsa~~~
- 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
- ↑ “엑셀 VBA 매크로 셀의 색상 변경하기.”. 2019년 11월 13일에 확인함.
IF문[편집]
같다는 =, 틀리다는 ><
문자열길이[편집]
Len(str_txt)
삭제[편집]
행 삭제
sht.Range("B1").Offset(i, 0).EntireRow.Delete
열 삭제
Worksheets("TEMP").Activate
Columns("A").Delete