State Machine libray

상태관리

프로그램을 만들다 보면 상태가 중요한 요소일 경우가 많은데
회원의 상태, 프롯스의 상태
상태를 변경하기 위한 동작들
기존 상태 메모리에 로드, 디스크 저장 등등

별도로 관리하지 않고 디비에서 가져와서 한개씩 처리하면서 트랜잭션 거는거도 가능하지만
실수가 잦다

그래서 하나 만들어볼까 하다가 찾아보니 잔뜩 나와서 일단 정리

REF

  • https://statecharts.github.io/
  • https://kentcdodds.com/blog/implementing-a-simple-state-machine-library-in-javascript
  • https://github.com/davidkpiano/xstate
  • https://github.com/Ankzz/easyfsm/
  • https://github.com/hekailiang/squirrel

Custom Router

라우터 OS

  • OPENWRT
  • DD-WRT
  • pfsense
  • VyOS
  • suricata

OpenWRT

https://openwrt.org/
공유기

임베디드에 설치. 오래된 공유기 안쓰는거에 설치해서 사용
x86은 공식지원이 없다. uefi 지원은 별도 빌드 필요

DD-WRT

https://dd-wrt.com/
공유기

pfsense

https://www.pfsense.org
공유기

BIRD

https://bird.network.cz/
데탑

REF

2020 VSCode plugin

내 추천

언어별로 뜨는건 그냥 위에 있는걸 설치하는데
코딩 하이라이트 관련 기능은 잘 찾아서 설치 해 줘야한다

다음과 관련된 것들

  • Bracket Pair Colorizer 2
  • Settings Sync
  • VIM

참고

https://dev.to/amir/10-vscode-extensions-that-make-your-life-easier-2020-114h
https://dev.to/vikrantnegi/become-a-vs-code-ninja-with-these-extensions-and-tools-2020-1119

서비스 구축시 도메인 구매

그냥 월 비용이 존나게 비싸거나
다른데로 이동하려면 눈탱이 치는 사이트가 있어서 잘 고르는게 좋다.

닷네임과 그 리셀러 서비스는 이전하려면 무슨 좆같은걸 우편으로 보내야된다. 절대로 사용하면 안됨 – 웹티즌 및 기타 등등 이쪽이 리셀러 서스가 많다.

가비아gabia.com, 후이즈whois.co.kr는 너무 비쌈

그 이외는 고려사항도 아니다.

추천

hosting.kr 메가존

국내서비스, 큰 회사고 도메인이 메인 비지니스가 아니라서 그런지 도메인가지고 좆같이 굴지 않는다.
org만 이상하게 다른데보다 조금 더 비싸다

godaddy

한개씩 하면 별로 싸진 않은데 세일하는것만 싸다

gandi.net

해외 사이트라 신문을 감추고 구매할 수 있는 장점

AWS

가격 괜찮은 편이고 AWS에서 같이 관리해서 편함

Xpressengine3는 아직 미완성인가

SSIBAL 이거 돌아가는거 맞나?

composer install 하면 뭔가 경고가 엄청 뜬다. 의존성 오류가…?
보니까 composer.lock이 ignore가 되어있다.
php, composer 모두 정해진 버전을 써야할 것 같은데 알 길이 없다.
.lock, .phar 등등은 gitignore에 포함시키지 말아야 하는거 아닌가?

developement 환경은 왜 셋팅도 안 되어 있는건가
sqlite에 달아주던가 해야 데모 테스트도 해 보고 쓸지 말지 결정할텐데

Docker 공식 이미지를 제공을 안 하길래 만들어서 써볼까 했는데
제대 돌아가질 않는다.
docker에서 terminal install을 하는경우 디비가 이미 생성 돼 있으면 넘어가주거나 하면 좋을텐데 에러를 토해낸다.
그럼 웹 설치만 해야되겠군…
latest.zip를 받아서 다시 만들었는데 localhost/만 접속이 되고 localhost/auth .. 등등 다른페이지가 안뜬다. 뭔가 손이 많이 간다.

config쪽이랑 installer env 네이밍이 너무 제각각사용된다. 그리고.xe_install_config.yml은 환경변수를 받지 않아서 꼭 파일을 넣어줘야 하는 것 같다.

redis를 넣어줬더니 predis가 필요하다고 한다.
다이내믹하게 설치가 되는건 아닌가본데… 그럼 서버 실행전에 composer install을 해 줘야한다는건데…

기능개발보다 안정화를 먼저 해야 사용자층을 넓힐 수 있지 않을까
며칠 보다보니 고쳐서 쓸 수는 있을 것 같은데 계속 이런상태일 것 같아서 고민이다.

그냥 안쓰는게 나을 것 같다.
wordpress, joomla 등등의 대안이 있으니까
이정도로 불안정한 플랫폼으로 서비스를 만드느니 새로 만드는게 나을 것 같다.

Rails6 프로젝트에서 JS 설정방법 변화(Typescript)

변화 Gem -> Webpacker

예전에는 Gemfile에서 관리했다면

# gem 'coffee-rails'
# gem 'cljs-rails'
# gem 'typescript-rails', git: 'https://github.com/ScriptonBasestar-io/typescript-rails.git'

요즘에는 webpakcer를 통해 npm으로 관리한다.

    "typescript": "^3.8.3",

구조가 좀 바뀌었다.

rails new 하면 예전에는 coffeesciprt를 넣어줬는데
요즘엔 기본구성이 아래처럼 변경됐다.

# Use SCSS for stylesheets
gem 'sass-rails', '>= 6'
# Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker
gem 'webpacker', '~> 4.0'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'

예전에는 화면쪽 리소스가
/app/assets/stylesheets
/app/assets/javascript s???
에 있었고
stylesheet_link_tag
javascript_include_tag
를 사용했는데

webpacker를 사용하면서
/app/javascript/packs/**/*.(js|ts)
/app/javascript/stylesheets/**/*.(css|scss|sass)
에 파일을 놔두고
stylesheet_pack_tag
javascript_pack_tag
를 사용한다.

본좌는 stylesheet는 구 방식을 사용중이다
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%#= stylesheet_pack_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
하지만 스크립트는 웹팩으로
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>

그리고 아랫쪽에 스크립트를 넣어줬다.
모듈별
<%= javascript_pack_tag controller_name if pack_exists?(controller_name) %>
화면, 액션별
<%= javascript_pack_tag "#{controller_name}-#{action_name}" if pack_exists?("#{controller_name}-#{action_name}") %>

이런건 쓰지말자 웹팩이 캡술화를 시켜버려서 화면에다가 스크립트 박아넣으면 제대로 동작하지 않는다.
<%= yield :javascript %>

관리 포인트가 분리되서 더 좋은 것 같다.
예전엔 npm이 업데이트되고 gem이 업데이트되야 사용할 수 있었을텐데
이젠 npm 최신버전 적용이 더 수워졌을테니

turbolink 때문에 화면전환시 로딩이 줄어들지만
document.ready가 제대로 동작하지 않는 경우가 있으니 주의해야한다

$(document).on('turbolinks:load',function () {
});

Tmux – 환경저장 도우미툴 – teamocil, tmuxinator

tmux

요즘엔 터미널이 좋아져서 tmux를 쓸 일이 잘 없는데

아래 툴을 사용하면
대여섯개 로그를 같이 보거나 자주쓰는 환경을 반복적으로 입력하는 경우에
자주쓰는 환경을 저장 해 놨다가 사용할 수 있다.
ex)

  1. Docker – db, web, gw, …등등 실행 후 로그보기
  2. ssh 접속 – 서버1,2,3,4,5 로그보기

tmux 보조툴

  • teamocil : https://github.com/remi/teamocil (개발중단)
  • tmuxinator : https://github.com/tmuxinator/tmuxinator

사용법 (은 자세히 보려면 깃헙으로 이동)

app.ym을 미리 만들어서 ~/.teamocil/app.yml에 넣고
teamocil app
이라고 치면 미리 정의한 환경이 실행된다

오류 발생

여태까지 teamocil을 잘 쓰고 있었는데 tmux가 버전업되면서 오류가 난다고 한다.

no server running on /private/tmp/tmux-501/default

이런 에러메시지가 나오는데
따지고 보면 tmux 문제다. tmux 서버를 미리 실행시켜놓고 하면 되긴된다.

tmux list-setssion을 쳤을 때 서버가 실행중이 아니라면 서버가 실행중이 아니라는 메시지가 떠야지 그지같은 소리 나오는건 tmux문제지
tmux start-server - tmux list-sesstion 해도 마찬가지로 위의 메시지가 뜬다.

tmux가 이상하지만
tmux가 갑이다.
보조툴이 알아서 기어야한다.

teamocil은 개발자가 혼자 관리하는 것 같은데
개발중단되고 pull request나 issue도 확인이 안된지 몇년이 됐다.
업데이트가 되는 tmuxinator를 쓰자.

아직까지는 tmuxinato도 같은 오류가 발생하고 있지만
고쳐지지 않을까

tmuxinator도 설정파일은 유사해서 기존 환경 변경하는게 어렵진 않겠다.

웹사이트 사용기술 알아내는 방법

직접 확인방법

공개된 정보 활용

  • 커뮤니티 질문 또는 글 검색
  • 해당 서비스 채용글 확인
  • StackShare 등의 사이트에 공개된 정보 확인
  • 해당 서비스의 기술블로그

기술적으로 확인

  • HttpHeader, Response 확인
  • 관용적으로 사용되는 주소 패턴 확인
  • Html 메타데이터 확인
  • CSS/JS 형태확인(컴파일?/소스형태)
  • Static파일의 서비스 형태

서비스 사용

이런걸 궁금해 하는 사람들을 위해 주소만 입력하면 확인할 수 있도록 도와주는 서비스가 많이 있다.

W3Techs (https://w3techs.com)

  • 웹에서 주소입력(https://w3techs.com/sites)
  • 브라우저 확장(FireFox, Chrome)

WebApplyzer (https://www.wappalyzer.com)

  • 웹에서 주소입력(https://www.wappalyzer.com/lookup)
  • 브라우저 확장(FireFox, Chrome, Edge)
  • Node 모듈

BuiltWith (https://builtwith.com)

  • 웹에서 직접사용 (https://builtwith.com)

isitwp (https://www.isitwp.com)

  • 웹에서 주소입력 (https://www.isitwp.com)

PageXray (https://pagexray.com)

  • 브라우저 확장 (Chrome)

Whatruns (https://www.whatruns.com)

  • 브라우저 확장 (Firefox,Chrome)

SimilarTech (https://www.similartech.com)

  • 웹에서 주소입력 (https://www.similartech.com)

RubyOnRails 회원/권한 관리 Framework 목록

회원관리 솔루션

Devise

제일 많이 사용되는 솔루션. 특별한 이유가 없다면 이걸 쓰면 된다.
https://github.com/heartcombo/devise

Clearance

https://github.com/thoughtbot/clearance

CanCan

더 이상 업데이트가 되지 않고 있다.
https://github.com/ryanb/cancan

CanCanCan

Devise에 비하면 Star도 적고 특별히 차별화 되어있지 않다. Devise가 질렸다면 써볼수도 있겠지만…

권한관리 솔루션

PunchIt

Authlogic

https://github.com/binarylogic/authlogic
가장 최근 생긴 프로젝트로 업데이트 잘 되고 있는 것 같다