Garbage Collection Python의 GC는 기본적으로 암묵적으로 진행된다. 어떻게 암묵적으로 진행되는지는, PEP 556에 따르면 기회주의적으로 따른다고 한다. 새로운 allocation이 진행될 때, allocation을 통계적으로 연산하여 휴리스틱하게 진행된다고 한다. 이를 보고 implicitly opportunistic 이라고 한다. GC를 명시적으로 collect 하기 위해선 다음 코드를 수행해야한다. gc.collect() 자, 그럼 어떻게 암묵적으로 또는 명시적으로, 어떤 GC를 진행하고 있는 것일까? Reference Counting Python GC는 기본적으로 reference count로 수행된다. reference count 란 C++ 의 shared ptr과 동작방식이..
이번에는 grafana cloud 에서 alert를 설정하는 것을 알아보겠습니다. prometheus 에서 alert rule을 설정하는데 두 가지 방법이 있는데 하나는 alertmanager 이고, 하나는 grafana에서 설정하는 방법입니다. grafana 4.0 이전 버전에서는 alert rule을 사용할 수 없어, prometheus/alertmanager https://github.com/prometheus/alertmanager 을 추가적으로 설정해줘야합니다. 다행히도 현재 grafana 또는 grafana cloud 에서는 사용할 수 있습니다. Alert Rule에 새로운 rule을 추가해봅시다. node-exporter 에서 지원하며 추적할 metric을 추가하고(A), 그리고 B, C에 ..
이번 포스팅에서는 프로메테우스와 그라파나 클라우드를 설정하는 방법이 가능하다는 것을 포스팅 해보려고 합니다. 현재는 무급으로 작은 사이드 프로젝트(스트리머 우왁굳)에 참여하고 있습니다. 팬이라서.. 프로메테우스 를 설치하는 것은 k8s 또는 머신에 설치하는 방법 두 가지가 있으나, 저희 팀은 k8s를 사용하지 않기 때문에 머신에 설치할 예정이었습니다. 설치하는 방법은 prometheus의 GETTING STARTED 를 참고하면됩니다 만 .. https://prometheus.io/docs/prometheus/latest/getting_started/ Getting started | Prometheus An open-source monitoring system with a dimensional data ..
나는 mac-os, windows, linux에서 동작하는 clr 을 위해 mono와 .net7.0 중 고민하였다. 사실 낮은 프로그램 작성 수준에서 mono와 .net7.0 중 종속성 문제가 없었기에, 도큐먼트 활동이 더 활발한 mono보다 .net 7.0이 더 메리트 있어보였다. 만약 .net framework 4.7 등의 호환성을 위해서라면 mono를 선택했으리라. 설치 방법 먼저 cat /etc/os-release 를 하여 적절한 리눅스 버전을 확인한다 그리고 공식문서를 확인한다. https://learn.microsoft.com/ko-kr/dotnet/core/install/linux-ubuntu .NET 및 Ubuntu 개요 - .NET Ubuntu에 .NET SDK 및 .NET 런타임을 설치..
이 글은, 동료와 이야기중, 나는 다른 커밋이지만 동일한 변경에 대해서도 컨플릭트가 나기에, 체리 픽을 하는게 낫다고 말했다. 그런데 실제로 그렇지 않았고, 동일한 변경에 대해 안전하게 머지가 되었다. 나는 나의 고집과 미신을 타파를 위해 좀 더 살펴보기로 했다. 실제로 내가 git을 마주한 것은 꽤 옜날 부터였고, 현재는 git version 2.39.0. 여기서는 기본적으로 ort전략이 사용된다. https://git-scm.com/docs/merge-strategies/2.34.0 다음으로는 2.25.0 버전을 설치하여 비교하고 싶었으나, 부득이 mac에선 설치방법이 나에겐 까다로와 하지 못했다.다만, '-s' 옵션으로 스트래티지(전략)을 선택할 수 있어 수행했고, conflict가 나지 않았다. ..
git merge 시 diff가 없게끔만 설정해주면된다. 2021년 11월 15일에 적용된 기본 MERGE 전략인 ORT 전략을 기준으로 말씀드립니다. 이전에는 RECURSIVE 전략이었슴. (이 글은 동료와 대화중에 캐치하여 작성하게 됨 나는 변경사항이 같아도 다른 커밋이면 컨플릭트 난다고 알고 있었음. 추가 글에서는 RECURSIVE 전략이 진짜로 컨플릭트 나는지 확인해보겠음) 단일 커밋에 대한 머지 feature/a 브랜치와 feature/b 브랜치 가 동일한 변경점을 가질 경우 conflict 없이 merge할 수 있다. 즉 COMMMIT A와 COMMIT B가 동일한 변경일 경우 충돌없이 merge가능. 여기서 더 나아가, 여러 줄에 대해 수정해보자, FEATURE/A에 대해, REBASE 하지..
파이썬 책들을 보면, 코루틴은 파이썬에서 문서가 가장 빈약하고, 모호하고, 분명히 쓸모없는 기능이다. - david beazley 사실 작성하면서, 제대로 외울 수 없다고 생각한다! 기록용으로 정리해둔다. 주 참고문서 1: PEP255 Simple Generators PEP325 Resource-Release Support for Generators PEP342 Coroutines via Enhanced Generators 참고문서 2: http://www.dabeaz.com/coroutines/ 언어 : python3.9.14 코루틴을 이해하기 위해서 가장 먼저 이터레이터에 대해 이야기 해볼 필요가 있다. 이터레이터란? PEP234 Iterators (30-Jan-2001) 일반적으로, 이터레이터란 반..
1 서론 2 프로젝트 설정 3 브랜치 설정 4 파이어베이스 프로젝트 별칭을 로컬 .firebaserc에서 등록 5 github action을 리모트서 직접 테스트하지말고 act 툴을 활용해보기 6 ci 배포를 위해 firebase 인증 토큰 이용하기 7 action 예제 # 서론 오랜만에 외부 프로젝트를 진행하다, 여러 스테이징을 나눠개발할 필요성이 있다고 생각하였다. 여러 명이서 작업하고, 여러 명이 각자의 기능이 제대로 되는지 확인이 필요하기 때문이다. - 이거 내 로컬 PC에서는 되고, 푸시하고 파베에 배포했을 때도 됐거든? 근데 너꺼 머지하고 배포한뒤 파이어베이스 들어가보니 왜 안되지? 이런 상황을 피하고 싶기 때문이다. 이전 사람이 푸시했을 때 되었다는 걸 (빌드를 뛰어넘어 기능적인 의미도 있겠..
FastAPI 시작하기 시작하기에 앞서, 가장 좋은 시작방법은 도큐먼트를 읽는 것 이다. https://fastapi.tiangolo.com/ko/. 1 uvicorn run .. 명령어로 uvicorn을 시작할 수 있지만, 명령어를 main.py에 작성해두는 것이 좋다. 2 개발모드에서는 reload True를 주면 코드 변경에 따라, 다시 빌드해주는 watch모드를 킬 수 있다. watch 모드를 키려면 해당 app attribute가 있는 파일을 문자열로 제공해줘야한다. (python 3.10, uvicorn 0.18.2 기준) 3 '/' 경로에서 index.html을 별도 명시적 경로 없이 제공해주기 위해선, html 옵션을 켜줘야한다. 4 cors 등의 헤더 전처리는 middleware 패턴을 ..
- Total
- Today
- Yesterday
- Trie
- Discrete Mathematics
- 데이터 중심 애플리케이션 설계
- 명제논리
- 그라파나
- flutter
- arena simulation
- 이산수학
- 자바스크립트 예제
- rosen
- 로젠
- 시뮬레이션
- 백준
- 조합 코딩
- Arena
- 아레나
- 아레나 시뮬레이션
- 엄청난 인내심과 시뮬레이션을 위한 아레나 툴
- grafana cloud
- 대규모 시스템 설계 기초
- 자바스크립트
- Propositional and Predicate Logic
- 이산 수학
- 최단경로 알고리즘
- paul wilton
- beginning javascript
- Simulation
- javascript
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- 아레나시뮬레이션
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |