Admin Visualization Tool

어드민 도구 종류

  • 챠트, 테이블 라이브러리 처럼 API를 사용하거나
  • 엘라스틱서치처럼 로그를 전달받아서 처리
  • 디비 접근권한을 열어주고 쿼리까지 날려서 볼 수 있게 해 주는 도구

생각해보면… 금융권에서 쓰는 마이플랫폼같은것도 비슷한 도구이긴 한데
뭐 깔아서 써야되는데 좆같다고 욕하는거였나
화면 뽑아내는데는 효율적이다

링크

  • http://retool.com
  • https://www.stackerhq.com
  • https://www.jetadmin.io
  • https://www.appgyver.com
  • https://uibakery.io
  • https://www.appsmith.com
  • https://budibase.com
  • https://tooljet.com

오픈소스도 몇 개 있고
완전 유료도 있고

Ktor web framework – kotlin

kotlin web framework인데…
간단하게 rest api 만들기 좋다.
간단한 rest api가 필요한가??
프로토타이핑 정도 하는거라면 모를까
그냥 스프링 쓰는게 나을 것 같다

뭔가 많이 부족하다

추가기능 – 만들거. 있음좋을거

  1. API route에서
    route 이름, 주소URI 가져오기
  2. 공통파라미터 상위에서 선언한거 하위에서 같이 쓰기
    route (/game)
      val user_id = Header
      get {
      user_id
    }
    post {
    user_id
    }

언어 구조 때문에 만들기 힘들 것 같다

CAS – 로컬실행/개발환경 만들기

뭔가 괜찮은 것 같으면서도 애매한 오픈소스 프로젝트…
복잡함 때문에 몇 번 사용하려다가 포기 했는데 이번에 인증서비스를 만들면서 다시 사용하려고 한다.

jasig CAS일 때 보고 apereo로 바뀐거 보고… 세번째 정도인 것 같다.
이전에는 기능을 축소해서 직접 개발했었는데

복합인증을 구현하려면 쓰는게 나을 것 같다

경쟁제품

유료 무료 다 포함해서 대강

무료

  • Keycloak
  • CAS
  • JOSSO
  • LemonLDAP
  • Shibbolet ldP
  • OpenAM
  • Gluu
  • https://freeradius.org/

유료

  • Auth0
  • AWS Cognito

기타

  • https://gist.github.com/bmaupin/6878fae9abcb63ef43f8ac9b9de8fafd
  • https://www.gluu.org/blog/gluu-versus-keycloak/

조금씩 특성이 다르긴 하다.

CAS 특징

  • 프로젝트가 굉장히 잘게 나눠져 있다.
    모듈형으로 가져다가 사용하라는 것 같은데…
    의존성이 복잡해서 그렇게 쓸 수가 없다
    도큐먼트는 사용법에 관한 것만 있고
  • 설치형으로 사용하려고 보면…
    cas-overlay-template 라는게 있기는 한데
    기본으로 지원되는 부분을 제외하면 설치형으로 쓸 수 있는건 아니고 거의 소스레벨에서 수정해서 써야만 한다.
  • 스프링을 매우 잘 쓴다. 나도 스프링 꽤 써봤다고 생각했는데 처음보는게 조금씩 보인다
  • Springboot autoconfigure 사이의 엄청난 충돌이 발생
    실행형으로 만들게 아니라면 그냥 없애야 하지 않을까

어쨌든 소스레벨에서 분석해서 사용해야 하고
필요한 부분만 뽑아쓰긴 힘들어 보인다

설치방법

소스

docker 컨테이너를 제공 해 주면 좋겠는데…. 커스텀을 해서 쓰라는 철학을 가지고 있는 애들이라 그런지 통짜로 제공 해 주지는 않는다.
그래도 쓰기 편하게 템플릿이 제공된다.

https://github.com/apereo/cas-overlay-template

이런것도 제공 해 주고 많이 발전했다.

아래 순서대로 치다보면 뭐가 뭔지 알 수 있을거다. README.md와 비슷하지만 약간 다르다.

git clone https://github.com/apereo/cas-overlay-template cas-server
cd cas-server
./gradlew clean build
./gradlew downloadShell runShell
./gradlew allDependencies

설정파일 수정

docker-compose 실행테스트를 해야되서 설정파일을 수정 해 준다

# /etc/cas/config/cas.properties

logging.config=file:/etc/cas/config/log4j2.xml

server.port=8080
server.ssl.enabled=false

실행

docker-compose up

화면수정

수정가능 항목의 목록을 얻는 명령어

./gradlew listTemplateViews

템플릿을 소스코드로 가져오는 명령어

./gradlew getResource -PresourceName=[여기뭐가들어갈까]

기능수정

이쪽 철학이 그런가보다. 디비를 직접 관리하거나 하지 않는다.
그럴거면 jpa 연동하기 쉽게 인터페이스를 달아주던가 하면 좋을텐데 그런건 또 안해놨다.

트리거 설정

각 기능이 실행될 때 마다 앞뒤로 트리거를 달 수 있다.
인터셉터
groovy

아직 안해봐서잘 모르겠지만 할 수 있다.

배포

리버스 프록시 사용

요즘 리버스 프록시 안쓰는 경우가 더 드물지 않을까

cas.server.name=https://domain.tld
cas.server.prefix=/

server.port=8080
server.ssl.enabled=false
cas.server.http.enabled=false
cas.server.httpProxy.enabled=true
cas.server.httpProxy.secure=true
cas.server.httpProxy.scheme=https
cas.server.httpProxy.protocol=HTTP/1.1

결론

overlay template 설치하려면 keycloak, gluu 등 다른 쉬운걸 쓰는게 나을것으로 보인다
인증방식은 어차피 다 표준프로토콜이 있어서 한두개 빼고는 다 비슷하게 제공된다

소스레벨에서 사용하려면 cas를 쓰는게 나을까… 그냥 만드는게 나을까
아직 시작단계라 정확하지는 않지만
이걸 쓰기보다는 필요한 부분 소스만 참고해서 따로 만들게 될 것 같다

REF

  • https://apereo.github.io/2019/01/07/cas61-gettingstarted-overlay/
  • https://apereo.github.io/cas/6.3.x/configuration/Configuration-Server-Management.html
  • https://apereo.github.io/2018/01/05/cas-deployment-with-proxy/

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

Ruby On Rails App – 시작하기

철지난 루비온 레일즈

별 생각이 없다.. 그냥 해봄

어플리케이션 생성

스타터킷이 있기는 한데 다 너무 오래됐다. 마지막 업데이트가 5년~7년…
그 때 부터 안쓰기 시작했나보다
그래도 아직 현역인데… 이렇게까지 인기가 없을까

  • https://github.com/prismicio/ruby-rails-starter
  • https://github.com/mattbrictson/rails-starter
  • https://github.com/RailsApps/rails-devise-pundit
rails new app

필수 환경 설치

rbenv 2.6.5 bundle rails

필수 라이브러리

  • https://github.com/heartcombo/devise
  • https://github.com/rspec/rspec-rails
  • https://github.com/varvet/pundit
  • https://github.com/thoughtbot/factory_bot_rails

명령어 실행

bundle
rails db:create
rails g devise:install
rails g devise user
rails db:migrate
rails g pundit:install

그리고 코드생성

rails g model post
rails g controller post 
rails g service post

쉽게 프로젝트를 생성할 수 있는게 장점인데
노드가 더 쉬워서 자리를 뺏긴 느낌이다.

전문가용 터미널 셋팅

개발자는 터미널이 간진데
텍스트 편집할 때 emacs까지는아니라도 vim정도는 써 줘야된다.
근데 이게 기본형으로 쓰면 또 각이 안나와서 추가기능을 깔아주고
다른사람 자리에서 vi쓸 때 이게 왜 안돼? 같은 대사도 해 주고 해야된다

그러기 위한 몇가지 추가기능

Terminal

  • zsh
  • oh-my-zsh

리눅스나 맥이면 이정도는 이미 깔려 있어야되고
윈도우라고 빼먹으면 안된다.

  • oh-my-pysh

오히려 여기에다가 리눅스 터미널까지 설치 해 줘야된다

  • cygwin
  • ubuntu18.04 WSL

그리고 추가로 터미널 유틸

  • https://github.com/junegunn/fzf

VIM

에디터

  • nvim
  • vim

플러그인 관리

  • https://github.com/junegunn/vim-plug
  • https://github.com/VundleVim/Vundle.vim

에디트 툴

  • https://github.com/neilagabriel/vim-geeknote
  • https://github.com/jeffkowalski/geeknote

이정도 깔아두면 이제 어디가서 전문가 행세하기 충분하다.
내 노트북을 가지고 강연/강의/세미나를 할 때 부끄럽지 않을 최소한의 환경