VSC에서 sftp오류 No such file

간단한 작업의 경우 sftp를 통해 원격에서 작업이 필요할 경우가 있는데
sftp에서 자꾸 오류를 발생시킬 경우 아래처럼 해결

Error: No such file (sftp liximomo extension)일 경우,

1. VS Code 종료

2. 아래 경로 파일 찾기
Mac OS X:
~/.vscode/extensions/liximomo.sftp-1.12.9/node_modules/ssh2-streams/lib/sftp.js

Windows:
C:\Users\{account_name}\.vscode\extensions\liximomo.sftp-1.12.9\node_modules\ssh2-streams\lib\sftp.js

3. 388번째 라인 아래 내용 수정
//if ( code === STATUS_CODE . OK ) { 
if (code === STATUS_CODE.OK || code === STATUS_CODE.NO_SUCH_FILE) {

4. VS Code 재시작

RDS 읽기 복제본 생성 후 삭제시 __DB

RDS replica를 생성하면 기존 인스턴스 명은 Primary
replica는 복제본으로 타입이 나오는데 삭제하고 Primary설정을 변경안해도 알아서
인스턴스로 변경됨

하나의 삽질을 줄여주는구나


Docker 명령어 정리 _DevOps

- 컴포넌트모음: https://github.com/docker/awesome-compose

- 세부정보: docker inspect centos

- 컨테이너 이미지생성: docker commit -a 'wow' nginx2 han905/nginx:1.0
- 컨테이너 이미지저장: docker save -o nginx2.tar nginx
(레이어로저장 load로품)
- 컨테이너 tar저장: docker export nginx2 > nginx2.tar
(파일로저장 import로 품)
- Dockerfile빌드: docker build -tag:test:1.0 .

[hub검색] 
- docker search nginx
- docker search --strar=30 nginx 

[컨테이너 실행]
- docker run -di --name php0 -p 50:80 lnp
- docker run -d -p 8080:80 httpd (local:container)
- docker run --name wordpress -p 8080:80 --link mysql:db -d wordpress
- docker run --name nginx_name -d -p 70:80 -v d:\www:/usr/share/nginx/html:ro nginx
(ro: readOnly)
- 디렉토리공유: docker run --name nginx_D -d -p 70:80 -v D:\www\_CM\202012_fss-event.com\web_fss_dev\_test\tcpdf
- 작업디렉토리설정: docker run -it -w=/tmp/work centos /bin/bash
- docker run  -it --name cent0 centos /bin/cal

[컨테이너 시작/종료/삭제]
- 시작: docker start xxxx
- 중지: docker stop -t 2 xxxx(2초후 중지)
- 재시작: docker restart  -t 2 xxx
- 전체삭제: docker rm -f  'docker ps -a -q'
- 이름변경: docker rename nginx1 nginx2

[컨테이너 확인]
- 현재상태: docker stats apache nginx
- docker ps -a
- docker ps
- docker log -t xxx
- 포트확인: docker port xxx

- docker exec -it  e65 /bin/bash

기본설치: apt-get install net-tools vim openssh-server
PHP설치: apt-get install php7.3 php-mysql php-fpm php-cli php-mbstring php-curl php-gd

- docker run --name nginx_fss -d -p 80:80 -p 1022:22 -v D:\www\_CM\202012_fss-event.com\web_fss_dev\_test:/_www nginx

인생에 맞는 투자 _부자오빠_part 3

연금으로 노후를 준비하는데 한계가 있습니다.
새로운 인컴을 하기 위해 몇가지 조언들을 적어봅니다.

현재 40대라고 가정하고, 70세 은퇴준비
한달 원하는 생활비에 따라 달라지며,
인플레이션 고려하여 70세 필요금액을 산정

1. 매월 30만원씩, 30년간 투자, 연수익 10%
= 70세 6억 정도의 주식보유
->원금유지하며 월 250정도 현금흐름

2. 매월 15만원씩, 30년간 투자, 연수익 10%
= 70세 3억 정도의 주식보유
->원금유지하며 월 125정도 현금흐름

3. 매월 60만원씩, 30년간 투자, 연수익 10%
= 70세 12억 정도의 주식보유
->원금유지하며 월 500정도 현금흐름

한달사용금액을 생각해서 적립식으로 투자

부자의 조건 '운'을 내 편으로 만드는 7가지 방법 - 중앙일보

AWS RDS세팅 __DB

RDS도 그냥 만들어 쓰기에는 퍼포먼스가 안나고
많은 파라미터들은 손봐줘야 그래도 물리서버대비 어느정도 성능을
보안해 줄 수 있다.

tmp_table_size 16MB(16777216) 512MB(536870912) {DBInstanceClassMemory/16}
key_buffer_size 16777216 536870912 {DBInstanceClassMemory/16}
read_buffer_size 262144 8388608
read_rnd_buffer_size 524288 16388608 {DBInstanceClassMemory/64}
sort_buffer_size N/A 16388608 {DBInstanceClassMemory/64}
max_heap_table_size {DBInstanceClassMemory/16}
join_buffer_size {DBInstanceClassMemory/64}
aria_sort_buffer_size {DBInstanceClassMemory/64}
table_open_cache 3000

RDS파라미터 항목 수정
skip_name_resolve = 1

log_queries_not_using_indexes 1   0
slow_query_log 1
쿼리로그삭제: CALL mysql.rds_rotate_slow_log;
                          CALL mysql.rds_rotate_general_log;  
long_query_time 1
log_output TABLE; FILE로 할 경우 cloud watch에서 로그

- Aws Rds rds-modify-db-parameter-group
http://stackoverflow.com/questions/31473946/aws-rds-rds-modify-db-parameter-group

- RDS파라미터 그룹세팅
https://gist.github.com/douglasjarquin/2208690

- We recently had a similar problem. Initially our key_buffer_size was set to 1GB. Increasing that to 10GB reduced the problem

- 쿼리튜닝
http://gywn.net/2012/09/mysql-tuning/

- DB튜닝
http://egloos.zum.com/mcchae/v/11063919

- STRICT 모드
https://www.lesstif.com/dbms/mysql-strict-mode-24445406.html

intelliJ 단축키

1. 줄 단위 : ctrl + /
2. 블럭 단위 : ctrl + shift + /
3. 파라미터 정보 커맨드 사용 : ctrl + p
4. 자동완성 : ctrl + shift + enter
5. getter/setter 생성 : ctrl + enter
6. method refectoring(create new method) : ctrl + alt + m
7. junit class 자동 생성 : ctrl + shift + t
8. undo : ctrl + z

PHP 표준 권고(PSR) __PHP

PSR-0 Autoloading Standard
- autoloader 를 통해 클래스를 손쉽게 로딩할 수 있도록 하는 표준
- PSR-4 가 제정되면서 무효화
- PSR-4 는 PHP-5.4 이상에서 사용 가능하므로 5.3 을 사용할 경우 PSR-0 을 따라야 함


PSR-1 Basic Coding Standard
- 표준 코딩 스타일을 제시하는 표준
PHP 파일은 BOM(Byte Order Mark) 없는 UTF-8 인코딩을 사용
- 네임스페이스와 클래스는 오토로딩 표준(PSR-0, PSR-4)을 따름
<?phpnamespace Vendor\Model;class Foo{}
- 클래스 이름은 반드시 StudlyCaps 와 같이 첫 글자를 대문자로 할 것 
클래스내 상수는 반드시 모두 대문자로 작성하고 구분자로 _ 를 사용할 것

<?phpnamespace Vendor\Model; class Foo{    const VERSION = '1.0';    const DATE_APPROVED = '2012-06-01';}

클래스내 메소드의 이름은 반드시 camelCase() 처럼 카멜케이스(camelCase) 를 사용할 것. 


PSR-2 Coding Style Guide
- PSR-1 표준의 연장선인 코딩 스타일에 대한 표준으로서 공통된 스타일을 사용
- 들여 쓰기는 tab 대신 4칸의 공백 사용
- 닫는 태그(?>) 는 사용하지 않음
- namespace  선언뒤에는 한 줄의 공백을 사용하고 여러 개의 use는 줄 공백없이 사용후에 마지막 블록뒤에 한 줄의 공백을 사용할 것 
- 클래스 구문의 여는 괄호는 다음 줄에 사용하고 닫는 괄호는 본문 다음 줄에 사용할 것
- 메소드 구문의 여는 괄호는 다음 줄에 사용하고 닫는 괄호는 본문 다음 줄에 사용할 것
- 가시성과 관련된 키워드인 abstract 과 final 은 모든 메소드와 프로퍼티에 명시적으로 사용하고 제일 먼저 와야 하며 static 구문은 그 후에 위치시킬 것
- if 나 elseif 같은 제어 관련 구문은 제어문 뒤에 한 개의 공백을 두고 그 후에 괄호를 사용하고 조건문을 기술할 것. 함수 호출이나 메소드 호출은 메소드명 뒤에 공백이 있으면 안 됨,
- if 나 elseif 같은 제어 관련 구문의 여는 괄호는 제어문과 같은 줄에 위치해야 함. 닫는 괄호는 본문의 다음 줄에 위치

<?phpnamespace Vendor\Package; use FooInterface;use BarClass as Bar; class Foo extends Bar implements FooInterface{    public function sampleFunction($a, $b = null)    {		if ($a === $b) {            bar();        } elseif ($a > $b) {            $foo->bar($arg1);        }	}}

PSR-3 Logger Interface

- 로깅 장치(파일, 소켓, 데이타베이스등)에 상관없이 애플리케이션 로그를 남기기 위한 표준
- 다른 로깅 프레임워크를 사용해도 애플리케이션 수정이 없도록 Psr\Log\LoggerInterface 인터페이스를 정의하고 이를 구현
- debug, info, notice, warning, error, critical, alert, emergency, log 총 아홉 개의 메소드를 지정하고 있으며 9번째 메소드인 log 를 제외하고 레벨에 따라 해당 메소드를 호출
- log 메소드는 파라미터로 레벨을 지정할 수 있도록 정의
- PSR-3 를 구현한 가장 유명한 PHP 라이브러리는 MonoLog(https://github.com/Seldaek/monolog) 로 다음과 같이 로그 객체를 만들고 로그를 기록

<?phpuse Monolog\Logger;use Monolog\Handler\StreamHandler;// create a log channel$log = new Logger('name');$log->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING));// add records to the log$log->addWarning('Foo');$log->addError('Bar');
Log::warning('Foo');Log::error('Bar');

PSR-4 Autoloader
- PHP 5 에 오토로딩 기능이 추가되었지만 라이브러리를 오토로딩하려면 직접 spl_autoload_register 메소드를 호출하여 일일이 등록.....앜...
- PSR-4 는 PSR-0 을 대체하는 새로운 오토로딩 표준으로 다음과 같이 정규화된 클래스 이름(FQCN; Fully Qualified Class Name) 을 규정하고 있으며 이를 준수하여 패키지를 개발할 경우 패캐지 관리자인 컴포저를 통해 손쉽게 의존성 있는 모든 패키지를 로딩

\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>

- 컴포저는 vendor/autoload.php 파일을 생성하므로 개발자는 다음과 같이 한 줄만 추가하면 include나 require를 사용하지 않고도 편리하게 개발
<?phprequire 'vendor/autoload.php';

- 여기에서 NamespaceName 은 최상위 네임스페이스(일반적으로 회사명이나 개인의 id 를 사용합니다)를 설정
- SubNamespaceNames 은 하위 네임스페이스를 ClassName 은 클래스 이름을 입력

로깅 프레임워크인 MonoLog 의 경우 다음과 같이 네임스페이스를 사용

<?phpnamespace Monolog\Handler; class FilterHandler extends AbstractHandler{

- 네임스페이스는 실제 디렉터리에 일치하며 최종 php 소스 파일은 클래스명.php 로 존재
예로 FilterHandler를 구현한 파일은 src/Monolog/Handler/FilterHandler.php 에 위


PSR-7 HTTP Message Interface
- 가장 최근에 통과되었으며 PHP에서 HTTP 에서 데이타를 주고 받기 위한 클래스와 메소드, 인터페이스등을 정의한 규약
- 사용하는 HTTP 라이브러리가 PSR-7 을 준수한다면 소스 변경없이 다른 PSR-7 구현물로 교체
- PSR-7 을 구현한 라이브러리중 유명한 제품으로는 아마존이 후원하는 guzzle(https://github.com/guzzle/guzzle) 이 있으며 AWS(Amazon Web Service) 의 PHP SDK 는 guzzle 을 사용하여 HTTP 를 처리




AWS ELB Pre-warm 로드밸런스 프리워밍 신청

Elastic Load Balancer(ELB)는 nginx기반의 2대의 VM으로 구성된 서버인데
그냥 디폴트 사용시 200~300 Req./Sec 처리 가능 

- 자연스럽게 트래픽이 늘어난다면 ELB는 알아서 Scale up/out하지만 갑작스러운 트래픽의 경우 프리워밍이 필요함
ELB Pre-warming은 AWS Support에 가입되어 있어야 신청가능

- 신청방법
Case Open -> ELB
참고로 이벤트 기간이 지나도 부하가 지속적으로 발생되면 유지됨

https://aws.amazon.com/support/createCase/?type=technical_support에 접속한 뒤 
기술지원(Technical Support) 문의에서 ELB 정보 및 트래픽 정보를 입력

ELB Name: exampleelb-2012921842.ap-northeast-1.elb.amazonaws.com
Start date for elevated traffic patterns: 2018. 11. 10
End date for elevated traffic patterns: 2018. 11. 20
Traffic delta OR request rate expected at surge(in Requests Per Second): 1,000 to 10,000 in 5 minutes
Average amount of data passing through the ELB per request/response pair(In Bytes): 10Kbytes
Rate of traffic increase: 50,000/sec
Are keep-alives used on the back-end?: keep-alives 사용 유무 입력
Percent of traffic using SSL termination on the ELB: 트래픽에서 SSL termination이 차지하는 비율 입력
Number of AZ’s that will be used for this event/load balancer: ELB 로드 밸런서가 트래픽을 분산하고 있는 가용 영역 개수 입력
Is the back-end scaled to event/spike levels? If no, how many and what type of instances and when will they be scaled?: Auto Scaling으로 확장하는 기준, EC2 인스턴스 유형 및 개수 입력
Use-case description: 사용 계획 입력
Traffic pattern description: 트래픽 패턴 설명 입력

AWS RDS Aurora Serverless 오로라 서버리스

드디어 기다리던 RDS서버리스 DB부담을 덜어주길 기대하며 몇가지 체크 사랑

1. 제한사항
Aurora Serverless is only compatible with MySQL 5.6
MySQL 5.6만 지원

The port number for connections must be 3306
3306포트만 사용해서 접속해야 함

Aurora Serverless DB clusters can only be accessed from within a VPC
VPC안에서만 접속가능. RDS처럼 외부접속안됨
Toad나 DBeaver같은 client툴로 접속하고자 한다면 ec2하나 만들고 SSH터너링으로 접속

2. Max Connections
select @@max_connections;
ACUsMemory (in GB)Max Connections
2490
48135
8161,000
16322,000
32643,000
641224,000
1282445,000
2564886,000
3. 위밍업 타임
지정된 시간동안 액션이 없다면 ACU는 0이되고 다시 켜지는 시간이 보통 20~30sec정도 소요됨
예상되는 이벤트 전에 미리 ACU수동조정이 필요함

원격지 DB이관 __DB

일본에 있는 DB를 한국으로 이관해야 하는데
mysqldump로 sql을 받으려니 용량이 너무 커 A서버에서 B서버로 한번에 보내는 방법

A서버 DB를 B서버로 한번에 이관.

mysqldump -h[host name] -u[user id] -p[password] A(DB name) | mysql-h[host name] -u[user id] -p[password] B(DB name)

또는

mysqldump -h[host name] -u[user id] -p[password] A(DB name) | ssh -p [port] [host] mysql-h[host name] -u[user id] -p[password] B(DB name)




1 2 3 4 5 6 7 8 9 10 다음