OpenWRT 커스텀펌웨어 라우터 – Linksys WRT3200ACM

목적

홈네트워크 구축
이라고 하지만… 그냥 iptime에서 해도 된다.
openwrt설치된 장비가 갖고 싶어서

구매

OpenWRT에 추천디바이스로 나와있어서 직구
https://www.linksys.com/us/support-product?pid=01t340000046sOsAAI
세금은 따로 없다. 전파인증을 따로 받아야 하는거라 국내판매는 당분간 힘들지 않을까
IPTIME에서 쓸만한게 있으면 사려고 했는데 없는 것 같다

설치

펌웨어 다운받아서 설치하면 끝
여기서 https://openwrt.org/toh/linksys/linksys_wrt3200acm
이걸 받아서 http://downloads.openwrt.org/releases/19.07.7/targets/mvebu/cortexa9/openwrt-19.07.7-mvebu-cortexa9-linksys_wrt3200acm-squashfs-factory.img
192.168.1.1로 접속
펌웨어 선택하고 설치… 경고는 무시
이렇게 쉬워도 되나?

설치된 후 바로는 뭔가 돌아가고 있어서 그런지 bad request오류가 지속적으로 발생한다
브라우저 캐시 제거하고 10분쯤 있다가 접속하니 잘 된다
무엇 때문에 해결된걸까
– 브라우저 캐시제거
– 10분쯤 있다가 접속

설정

라우터 스펙이 좀 좋다보니 할 수 있는게 많아서 할 게 많다

  • 라우터 비밀번호 설정
  • LAN 설정
  • USB 연결
  • Http Proxy
  • 내부 DNS
  • DDNS 연결
  • DHCP
  • VPN
  • Radius
  • Kerberos
  • 무선랜

라우터 비밀번호 설정

root / password

웹 인터페이스에서 비밀번호를 적당히 설정 해 준다.
비밀번호 설정을 안 해 주면 위에 경고가 계속 뜬다.

LAN 설정

Network – Interfaces – LAN – Edit

IPv4 address : 192.168.1.1이 기본인데 필요한 경우 192.168.0.1이라던가 바꾸고 싶은대로 변경.
Use custom DNS servers : kt는 168.126.63.1~2, 구글은 8.8.8.8, 4.4.4.4
로컬DNS가 있다면 주소를 잡아준다
OpenWRT에서 설정가능

USB 연결

내부 저장용량이 적어서 http캐시나 다른 일들을 시키려면 마운트를 해 줘야한다
https://openwrt.org/docs/guide-user/storage/usb-drives

Http Proxy

Software squid
usb에서 잡아준 mount 디렉토리로

내부 DNS

d

DDNS 연결

상용제품은 자기네가 지원 해 주는게 있는데 오픈소스다 보니 별도로 설정 해 줘야한다
돈안내고 쓰는 서비스 중에서 해킹위협이 없는 쪽으로

DHCP

d

VPN

OpenVPN, L2TP
https://openwrt.org/docs/guide-user/services/vpn/libreswan/openswanxl2tpvpn
d

Radius

dd

Kerberos

dd

무선랜

따로 잡아줘야 함

NAS,홈오피스 – OS,솔루션

NAS 솔루션

  • NextCloud
  • https://www.openmediavault.org
  • http://rockstor.com
  • https://www.amahi.org
  • https://lime-technology.com

NAS 인프라, NAS 서비스 섞여있음

OS

  • www.nas4free.org
  • FreeNAS https://www.freenas.org
  • http://rockstor.com/

홈오피스

  • www.zentyal.org
  • NethServer https://www.nethserver.org

Media

  • https://www.amahi.org/

인프라

  • https://www.pfsense.org/

데이터 아키텍처 전문가가 되는 방법 – 최수진

DA(데이터 아키텍처) 컨설턴트에 관한 얇은 책

2021년 이후에는 조금 맞지 않을
그리고 DA편향적인 생각이 많이 적혀있다.
개발자 다음단계를 준비한다던가…

DBA,DevOps,DA,Frontend,Backend…는 직군이 되서는 안되고 직책이 되야한다.
SoftwareEngineer는 보통 이 교집합을 수행한다.
DA만 하는 IT컨설턴트가 존재 하지 않는게 최선이다.

컨설턴트의 강점은 실력이 아니다.
권한이다.
검찰이 경찰보다 뛰어난건 지능이나 개개인의 능력이 아니라
지역의 이해관계에 얽히지 않은 벽을 뛰어넘는 권한이다.
컨설턴트도 마찬가지
대기업의 특정 부서나 직급에 상관없이
궁금한 것을 물어보고 잘못된 것을 지적할 수 있는 권한이다
제 3자이고 곧 떠날 사람이기 때문에 가능한 부분이다.

LG에서 휴대폰 사업이 잘못나가고 있는것을 누가 지적할 수 있었을까
구성원 하나하나다 다 개붕신이라 문제점을 인식하지 못하고 있었을리는 없다
좆지 직원들도 갤럭시,아이폰을 좋아하니까

  • DA
  • DBA
  • BA
  • AA
  • TA
  • ISP : Information Strategy Planning

고객의 업무에 맞는 데이터 모델
vs
개발하기 쉬운 데이터 모델

보통은 개발하기 어려운 데이터 모델은 잘못된 설계의 결과물이다
기존에 잘못된 업무를 그대로 따라서 모델링을 하면 이런 결과가 나온다
1 보통은 업무 자체가 변경되어야 하는 경우
2 상태값 설계가 제대로 안 된 경우

프로젝트 시작전에 처리되서 문서화되어야 할 것들

  • 일정
  • 설계
  • 용어정의

보통 이런것들은 무시되고 바로 프로젝트가 시작된다
프로젝트 진행과정에서 지속적으로 오버헤드를 발생시키는 문제들

개발자: SI-SM
DA: 모델링-튜닝

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
    }

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

실용주의 프그래머The Pragmatic Programmer,

자기계발서 읽는 느낌이다
다 맞는 말인데
머리에 남는건 별로 없는

  • 이미 하고 있는 것들
  • 하면 좋은 것들
  • 해야만 하는 것들
  • 할 수 없는 것들

이렇게 분류 해 볼 수 있을까

그냥 한번 읽어보고 넘어가면 될 것 같다
잠재의식 속에 남아있겠지

커맨드라인

find . -name '*.c' -newer Makefile -print
zip archive.zip *.h *.c
tar cvf archive.tar *.h *.c
find . -name '*.java' -mtime +7 -print
find . -name '*.java' -mtime +7 -print | xargs grep 'java.awt'
grep '^import '*.java |
  sed -e's/.*import *//' -e's/;.*$//' |
  sort -u > list

여기서 할 줄 아는게……압축하는거

IAM/SSO 관련기술

완제품

  • Keycloak
    https://github.com/keycloak/keycloak
  • Gluu
    https://gluu.org/docs/gluu-server/4.1/installation-guide/install-docker/
  • OpenAM, OpenDJ
    https://github.com/OpenIdentityPlatform/OpenAM
  • JOSSO
    http://www.josso.org/
    https://github.com/atricore/josso2
  • LemonLDAP
    https://lemonldap-ng.org/welcome/
    https://github.com/LemonLDAPNG/lemonldap-ng-docker
  • Shibbolet ldp
    https://wiki.shibboleth.net/confluence/display/DEV/Source+Code+Access
    https://github.com/Unicon/shibboleth-idp-dockerized
  • 389 Directory Server
  • GLAuth
  • RazDC
  • FreeIPA
    https://www.freeipa.org/page/Main_Page

라이브러리

  • CAS
  • https://github.com/spring-projects/spring-security-saml
  • https://github.com/spring-projects/spring-security-oauth
  • https://github.com/spring-projects/spring-security-kerberos
  • https://github.com/samitpal/simple-sso
  • https://github.com/go-oauth2/oauth2
  • Apache Shiro
  • https://github.com/jcasbin/shiro-casbin
  • pac4j
  • Apache CFX https://cxf.apache.org/
  • Apache Fortress
  • geronimo.apache.org
  • https://casbin.org/
  • https://github.com/casbin/jcasbin
  • https://github.com/casbin/casbin
  • https://github.com/OpenConext/Mujina
  • https://github.com/pac4j/spring-webmvc-pac4j
  • https://github.com/Neloop/jaclp

프로토콜

  • OAuth
  • JWT
  • SAML
  • Kerberos
  • Radius
  • CAS
  • Session
  • BasicAuth
  • LDAP
  • OpenID

REF

  • https://www.getkisi.com/blog/authentication-protocols-overview
  • https://en.wikipedia.org/wiki/Authentication_protocol
  • https://www.geeksforgeeks.org/types-of-authentication-protocols
  • https://developer.okta.com/docs/concepts/saml

맨먼스 미신The Mythical Man-Month, 프레더릭 브룩스

내용

  • Prototype – 두 번째 시스템
    : 첫번째 시스템은 프로토타입이다
  • 1:10 업무효율
    : 같은 조직내에서 비슷한 급여를 받는 살마들 사이에도 업무능력 차이는 10배
  • 일정 늘어짐
    : 일정은 항상 늘어진다. 일정을 너무 루즈하게 잡은게 아니라면. 돌발상황에 대비해 조금 타이트하게 업무처리
  • 문서화
    : 워크북. 요즘은 위키를 주로 사용
  • 급하다고 많은 인원 투입
    : 의사소통 비용 증가
  • 소수정예
    : 큰 프로젝트 불가
  • 핵심개발인력과 보조인력 구조
    : 아키텍트와 모듈분할
  • 구체적인 마일스톤의 정의
  • 프로젝트 관리자는 의사 결정이 아닌 의사 소통

대상

오히려 개발자보다
한국에서의 특이직군인 기획자, PM
그리고 스타트업 대표, PO, 원청업체담당자가 봐야 할 책

읽고나서

소프트웨어 공학을 모를 때도
개발 업무를 하면서 맞딱뜨리게 되는 불편한 점들과 개선점을 생각했었는데
내가 찾아낸 최선의 방법의 핵심은 빠른 프로토타이핑과 작은 개선의 반복이었다.

이 책에서는 이것을 포함해서 그리고 더 다양한 상황에서의 대응법이 잘 정리가 되어 있다. 현업을 겪어보지 못했다면 그렇구나.. 하면서 감흥없이 넘어갔을 것 같다. 어차피 한번 겪어보고 다시 읽어야 됐었겠지
소프트웨어 개발 싸이클틀 겪어 본 사람이라면 이 책을 읽으면서 자기가 겪었던 문제점이 그대로 다 써 있다는데 놀라지 않을까

1975년 초판이라는데
아직도 그대로라니

개발에 필요한 Data SEED 종류

개발을 할 때 상황에 따라 다른 초기 데이터가 필요하다

init seed

데이터베이스 초기화

  • db schema

시스템 구동에 필수적인 데이터

거래소 개발인 경우라고 가정하고

  • 코인 메타데이터
    • BTC
    • ETH

faker seed

UI를 확인하기 위한 데이터

SNS에서 친구 프로필 목록 화면인 경우

  • 이름
  • 전화번호
  • 이메일
  • 주소
  • 회사

replica seed

실제 환경에서 테스트를 하는 경우

production -> 데이터 복제 후 민감정보 제거

VSCODE ssiba

터미널과 진짜 터미널의 환경변수가 다르다

아래 명령으로 확인

echo $PATH

command+shift+p – Preferences: Open Settings (JSON)

"terminal.integrated.env.osx": {
  "PATH": "$PATH"
}

REF

  • https://stackoverflow.com/questions/43983718/set-global-path-environment-variable-in-vs-code