전체 글

· CS/DB
maxscale 은 DB 프록시로 로드밸런서의 역할을 한다. 이거는 mysql 과는 상이한 프로그램으로 플러그인이라늗가에 포함되지 않고 DB 와 완전히 별개의 프로그램으로 동작한다. 전 글을 참고해도 좋을 것 같다. maxscale 상속 과정maxscale 은 master 로 write 쿼리가 들어가고 동기화 설정으로 인해 slave 까지 해당 변화가 넘어간다. (이때 주의해야 할 점은 maxscale 은 mysql 에 소속되어 있지 않기 때문에, 동기화 작업은 DB 단에서 이루어진다!) read 쿼리는 slave 로 넘겨주거나 분산해서 받거나 하는 식으로 너무 많을 경우 분산해서 받을 수 있다. maxscale 은 master 가 있고 master candidate 를 설정할 수 있는데 이 후보들은 m..
· 개발
flask 기반의 프로젝트를 빌드하고 환경별로 패키징을 하는 과정을 이야기해 보도록 하겠습니다~ c 가 포함된 경우에는 어떻게 진행을 해야할지 별도로 안내를 드리려고 합니다. 소스코드 컴파일우선 node 별로 필요한 파일을 모으는 것이 기본이 되겠지요. 인증서가 필요한 노드, 아닌 노드 등 많이 있겠지요? 이미 디렉토리가 노드별로 쪼개져있는 경우에는 이 과정을 크게 상관을 안써도 될거 같습니다. 그 다음은 frontend 필요한 파일을 컴파일을 하는 과정이 필요하겠네요. 제 경우에는 flask-jinja 를 사용하고 있어서 jinja 템플릿과 local 파일을 미리 compile 을 해두는 과정이 필요합니다. 이 과정에서는 py_compile dictionary 를 사용합니다.  window 빌드 및 패..
server 노드와 client 노드로 제공되는 제품이 일을 안한다고 한다. client 가 보내는 api 를 server 에서 특정 조건이 충족되면 받지를 못한다고 한다. 참 여러가지 상황이 있었는데 이것들을 대응하면서 생긴 생각을 적어보도록 하겠다.   버전 확인auto-update 가 제공이 되는 제품이라면 문제가 되지 않겠지만, 수동 업데이트를 해야하는 상황이라면 두가지 node 가 모두 최신 버전으로 깔려 있는지부터 확인을 해야한다. 여기서 포인트는 '두가지 모두' 이다. server 에 문제가 있어서 표기가 안되는거 같지만 그거는 너의 생각일 뿐이고 실상 문제는 client 에 있을 확률도 아주 높다. 따라서 양쪽 노드 모두가 최신 버전임을 확인하는 것을 맨 첫번째로 가져가야 한다. 패킷 캡쳐..
· CS/DB
Maxscale 은 mariadb 에서 사용하는 이중화 툴로, 분산된 DB 서버를 관리하는 일종의 확장팩같은 느낌이다. 주된 기능은 DB 쿼리 IO 를 로드밸런싱하는 기능으로, 한 DB 에 과한 부하가 가해지는 것을 막는 것을 목적으로 한다.     master, slave 동기화우선 maxscale 을 진행하기 전에 DB 끼리 master-slave 로 동기화를 시켜야 한다. master-slave 구조를 간단히 설명하자면 master 는 DB 의 주체이며, 모든 변경이 여기서부터 이루어진다고 가정하고 본인의 DB 를 slave 에 복제하는 것을 autocommit 해준다. 그리고 master 가 다운될 경우 slave 가 master 역할을 하도록 수행하는 기능이 있다. 작동이 종료된 master 는..
· 개발
이번시간에는 플라스크 백엔드의 기본적인 프론트엔드 템플릿인 진자에 대해서 이야기해보려고 합니다. 이건 가장 기본인 프론트엔드이고 필요에 따라서 react, nextjs 등을 붙여서 사용할 수 있습니다 template, app.html.j2우선 다른 python 모듈이 들어있는 디렉토리에 template 디렉토리를 추가합니다. 거기에 추가하는 app.html.j2 는 모든 템플릿의 기본 header, body 구조를 가지며 formfor 나 필요한 함수들을 정의해주는 역할을 합니다. app.html.j2의 최상단에서는 거기서 main 에서 생성한 formfor 를 가져와서 macro 설정을 해 주는 과정을 거칩니다. 기본적인 header 와 body 를 설정을 해주는데, header 에서는 여러 기본 세팅..
· 개발
flask-jinja-sqlalchemy 가 플라스크의 기본 구조이고 필요에 따라서 DB 나 front 를 바꿀 수 있다. 이번 글에서는 백엔드를 어떤식으로 모듈들을 구성해 두는지 확인해보도록 하겠다.    app, mainapp 모듈은 app.run 으로 해당 서버를 실행하는 역할을 수행한다. 또 --set-config  같은 argument 를 세팅해두는 역할, 필요한 thread 를 돌리는 역할 등을 수행한다. main 모듈은 모든 요청의 사전 처리인 @main.before_request 를 사용해서 규정에 맞는 요청이 들어왔는지를 확인한다. 또한 이 before_request 에서는 csrf_token이 유효한지, 수많은 요청들의 proxy 기능, session 만기 설정, locale 및 ORM..
· 개발
우리가 흔히 아는 윈도우 인스톨러 즉 MSI(MicroSoft Installer) 를 만드는 프로그램은 바로 wix 이다. wix 의 candle, light 명령으로 wxs 파일을 말아서 msi 를 만든다. upgrade 란?그런데 어떻게 window installer 는 같은 어떠한 두 msi 파일을 같은 "종류" 의 프로그램으로 인식을 하고, 재설치시에 해당 프로그램을 지우고 업그레이드를 하는 등의 행위를 할 수 있을까? 그건 바로 윈도우에서 규정한 여러 업그레이드 방식을 따라 wxs 파일을 만들면 된다. 윈도우 공식 문서를 살펴보면은 small, minor, major 등의 다양한 업그레이드 방식이 있음을 알 수 있다. 지금부터 그 방식들 중의 주요한 방법 2개인 major upgrade, min..
· 일상
아직 1년차 개발자라서 대선배님들이 보기에는 너무 귀여워 보일 수 있어요~ 그런데 제가 지금까지 일하며 생각한 개발의 핵심은 이렇습니다. 잘 버리기!! 에요. 급변하는 개발시장 개발 생태계는 정말 빨리 바뀐다는 특징이 있어요~~ 특히 툴이 많이 나오기로 유명한 프론트엔드의 경우에는 그야말로 1년마다 시장을 선도하는 기술이 바뀌고 있어요~ 10년 전에 아무리 잘하던 스택을 가지고 있더라도 지금 사장되어버린다면 내 가치가 굉장히 반감될 거에요~~ 이러한 업계 특성이 반영되어서 개발자들이 불안감, 부정적인 마음을 유독 많이 가지는거 같기도 하네요. 그렇다면 이런 상황에서 개발자는 어떤 대처를 해내야 할까요?? 내가 이러이러한 언어를 썼다는 생각 그 자체 내가 이젠 가치 없어졌다는 그 나의 부정적인 마음 자체를..
· 일상
오픈소스 개발 사회는 다른 분야와 약간 다른 특징을 가진다 Open Source 그건 자신의 결과물을 공유하는 문화가 있다는것 당장 우리 회사만 해도 프랑스의 멋쟁이 개발자 Fabrice 형님이 한 20년 전에 만든 QEMU 라는 에뮬레이터 오픈소스로 지금까지 밥먹고 살고있다 예전에 학부생때는 막연히 그런가보다.. 했는데 이 일 해보니까 거기에 기여한다는거 자체가 얼마나 대단한건지 알겠다. 그 C 코드는 읽고 분석하는 것만 해도 머리가 아프다. 구조체 구조체 포인터 포인터 함수는 또 그냥 쓰는것도 아니다 #define 써서 매크로 매크로... OOP 를 어떻게든 구현해내려고 함수 이름과 레벨을 기를 쓰면서 나눠둔 것들을 보면은 참 감사하다는 생각이 많이 든다. 그 몇만줄의 코드를 쓰는 노고를 전부 세상이..
· 프로젝트
여의도에서 근무하는 친구가 찾아보기 귀찮다고 해서 만들어줬다. 코딩한 기간은 땡땡하게 해서 이주정도 걸린거 같다. 크롤링 라이브러리는 beautifulsoup 를 사용했다. 상한가 종목은 naver finance 에서 긁어오고, 그 종목 상한가 원인은 구글 클라우드 플랫폼으로 검색해서 이유를 찾았다. 챗GPT 는 초기사용자 무료 크레딧으로 연결해서 만들었다. 알림은 API가 잘나오는 텔레그램으로 진행했다. 자세한 사항은 링크 들어가보면 어떻게 사용해야 하는지 잘 써있다. 그렇게 모듈은 총 4개정도 쓴거 같다. 다음은 각 모듈별로 까다로웠던 부분 개선점을 얘기해 보겠다. naver finance API tables = soup.find_all('table', {'class': 'type_5'}) # Che..
activity 와 service안드로이드 4대 구성요소중 둘. activity 는 UI 즉 메인쓰레드 상의 모든 action 을 의미하고service 는 백그라운드에서 주로 돌아간다.activity 는 oncreate - onstart - onresume - onpause - onstop - ondestroy 순서로 진행되며 끝 2개씩을 쌍으로 생각할 수 있다. 또, 자식 activity 를 실행하기 위해선 StartActivityForResult 를 쓰고, 자식 activitiy 에서 무언가를 받아야 한다며 OnActivityResult 를 사용한다.생명주기에 대한 자세한 내용, activity 의 선언, activity 의 이동에 대해선 다음 포스팅을 참고하면 좋다https://yeon-lee.ti..
· CS
https전자서명과 HTTPS 의 역할이 굉장히 헷갈렸다. 둘 다 공개키 암호화를 사용하기 때문이다. 하지만 둘은 사용되는 역할이 다르다.전자서명은 어떠한 권위 주체가 문서의 진위여부를 ‘서명’ 해주는 것이다. 이 과정에서 ‘공개키 암호화’ 가 쓰인다. 편의상 서명을 희망하는 객체를 C, 서명을 해주는 객체를 S 라고 부르겠다.C 가 ‘서명을 희망한다’ 는 것은 문서 내용을 MD 혹은 SHA 로 해쉬해서 문서 뒤에 붙여주는 과정을 의미한다.S 가 ‘서명을 해준다’ 는 것은 S 가 가진 비밀키로 해쉬값을 암호화해서 그 문서 뒤에 붙여주는 과정을 의미한다.C1 가 ‘서명을 확인한다’ 는 것은 S 가 뿌린 공개키(보통 OS 안에 내장됨)로 암호문을 복호화하고, 문서 내용을 해쉬해서 두 값을 비교하는 것을 의미..
yeonlee
이연