Giter Club home page Giter Club logo

jayfreemandev.github.io's Introduction

Vimwiki + Jekyll + Github.io

시작하기

블로그 스켈레톤을 fork 하세요.

https://github.com/johngrib/johngrib-jekyll-skeleton

제 블로그를 fork하는 것보다 블로그 스켈레톤을 fork하는 것을 권합니다. 블로그를 그냥 fork 하면 제 자기소개와 일기, 에세이까지 당신의 블로그의 컨텐츠가 됩니다.

  • 만약 그냥 fork 하신다면 제 자기소개와 일기를 포함한 _wiki의 모든 md 파일을 삭제하고 사용하세요.
  • skeleton에 있는 문서들은 튜토리얼로 생각하고 읽어주시면 됩니다.

다음 글을 읽으며 블로그의 구조를 파악하시면 운영에 도움이 될 것입니다.

https://johngrib.github.io/wiki/my-wiki/

설치하기

루비가 설치되어 있지 않을 경우 루비를 설치해 주세요. 여기에서는 rvm으로 설치하는 방법을 소개해 드립니다. 다른 방법으로도 루비를 설치할 수 있으니, 다른 방법으로 하셔도 됩니다.

루비 버전은 GitHub Pages Dependency versions을 보면 GitHub Pages에서는 2.7.4버전을 사용하고 있으니 해당 버전을 설치해 줍니다.

# See also https://rvm.io/rvm/install
$ gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
$ curl -sSL https://get.rvm.io | bash
$ rvm install 2.7.4
$ rvm use 2.7.4

그다음 bundle install을 실행하여 의존성들을 설치합니다.

$ bundle install

Git hooks 추가하기

새로운 글을 등록하면 메타 데이터를 업데이트해 주어야 합니다. 커밋하기 전에 이를 자동으로 될 수 있도록 Git Hooks를 추가해야 합니다.

$ cp tool/pre-commit ./.git/hooks

노드 모듈 설치하기

메타 데이터 생성을 위해서 generateData.js를 실행해야 합니다. 이를 실행하기 위해서 yamljs 의존성을 설치해야 합니다.

$ npm install

실행하기

$ jekyll serve

글 작성하기

새로운 카테고리 만들기

카테고리가 있는 글을 작성하고 싶을 때는 카테고리를 먼저 만들어야 합니다. /_wiki/category-name.md같이 파일을 만들고 내용에는 다음을 추가해야 합니다.

이때 layout속성은 category가 되어야 합니다.

---
layout  : category
title   : 제목을 입력합니다.
summary : 
date    : 2022-10-06 00:00:00 +0900
updated : 2022-10-06 00:00:00 +0900
tag     : 
toc     : true
public  : true
parent  : index
latex   : false
---

* TOC
{:toc}

위키에 글 등록하기

위키를 작성할 때는 /_wiki 폴더 아래에 마크다운으로 파일을 작성합니다. 만약 카테고리 아래에 글을 작성하고 싶을 경우에는 카테고리 이름으로 폴더를 만들고 파일을 추가합니다. 예를 들어 /_wiki/category-name/document.md로 만들 수 있습니다. layoutwiki가 되어야 합니다. parent는 상위 카테고리 이름을 작성해야 합니다.

만약 상위 카테고리가 없을 경우에는 parentindex를 입력합니다.

---
layout  : wiki
title   : 제목을 적습니다
date    : 2022-10-08 11:23:00 +0900
updated : 2022-10-08 11:23:00 +0900
tag     : 
toc     : true
public  : true
parent  : category-name
latex   : false
---

* TOC
{:toc}

내용을 적습니다.

jayfreemandev.github.io's People

Contributors

jayfreemandev avatar

Stargazers

Shahrad Elahi avatar

Watchers

 avatar

jayfreemandev.github.io's Issues

mysql write lock 문제

문제
커넥션수 조절과 사용 자원 모니터링에도 잔잔한 상태지만 간혈적으로 write시 타임아웃 발생

해결
데드락 상태 조회

SHOW ENGINE INNODB STATUS;

테이블락 조회
select * from information_schema.innodb_lock_waits 락이 걸린 테이블은 존재하지 않았다.

트랜잭션 조회
SELECT * FROM information_schema.INNODB_TRX 트랜잭션 확인 결과 특정 스레드들의 트랜잭션 레벨이 4단계로 설정되어있고 row locked 회수가 수십번 이상 기록되어 있었다.

TRX 테이블에서 확인해야할
|TRX_MYSQL_THREAD_ID|MySQL 스레드 ID입니다. ID 에서 PROCESSLIST 와 결합하는 경우에 사용할 수 있습니다. 섹션 14.14.2.3.1 "PROCESSLIST 데이터 불일치의 가능성" 을 참조하십시오.|
|TRX_ROWS_LOCKED|이 트랜잭션에 의해 잠긴 행의 개수. 이 값은 물리적으로 존재하지만 트랜잭션에서 인식 할 수없는 삭제 마크를 붙일 수 있었던 행이 포함될 수 있습니다.|
|TRX_ISOLATION_LEVEL|현재 트랜잭션 격리 수준.|
|TRX_STATE|트랜잭션 실행 상태. RUNNING , LOCK WAIT , ROLLING BACK 또는 COMMITTING 중 하나입니다.|

위 스레드 아이디를 이용하여 KILL THREAD ID 사용이 가능하다. 특정 로직의 문제가 아니라 디비버 editor 자체에서 설정된 트랜잭션이었고 다른 write 들이 동작 불가. 관련된 스레드를 모두 죽이고 디비버 에디터창을 모두 닫고 정상화가 되었다.

디비버 커밋, 트랜잭션 모드 설정

DBeaver 기본 Commit설정은 아래와 같다.

  • 개발,테스트 : Auto-commit by default
  • 운영 : Manual commit

그러나 데이터베이스 연결을 하고 Connection Type(연결유형)을 별도로 지정하지 않으면개발로 인식하기 때문에 자동으로 Auto-commit이 적용된다. 수동Commit으로 설정할경우 Web서비스에서 접속이 많은 Table의 경우 Update를 실행하고  빨리 Commit을 실행하지 않을경우 Lock이 걸릴수가 있어서 운영서버에서 Data Update는 신중히 고려해야한다.

![[Pasted image 20240426101935.png]]

![[Pasted image 20240426102137.png]]

Serializable인 경우 한 사용자가 테이블을 열면 다른 사용자가 해당 테이블에 액세스하지 못하도록 차단하는 트랜잭션이 자동으로 생성된다. 테이블은 열린 상태로 유지될 수 있으며 트랜잭션이 완료될 때까지 충분한 시간 동안 액세스가 차단되기 때문에 설정에 유의가 필요하다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.