목록전체 글 (6)
poma33
수학적 귀납법 기초수학적 귀납법: 어떤 명제 $P(n)$이,(i) (basis step) $n = 1$일 때 참이고,(ii) (inductive step) $n = k$일 때 참이면 $n = k + 1$일 때도 참이면 주어진 $n$에 관한 명제는 모든 $n ≥ 1$에 대해 참이다. 강한 수학적 귀납법: 어떤 명제 $P(n)$이,(i) (basis step) $n = 1$일때 참이고,(ii) (inductive step) $n ≤ k$일 때 참이면 $n = k + 1$일 때도 참이면 주어진 $n$에 관한 명제는 모든 $n ≥ 1$에 대해 참이다. 수학적 귀납법이 그냥 바로 참은 아니고, 아래와 같은 공리를 가정해야 참입니다. Well-ordering 성질: 임의의 자연수 집합의 공집합 아닌 부분 집합은 항..
코드를 짜다 보면, 단순히 "잘 돌아가는지"를 확인하는 것만으로는 부족합니다.코드가 얼마나 효율적인지, 입력 크기가 커지면 성능이 어떻게 변하는지를 아는 것이 중요한데,이때 등장하는 것이 바로 빅오(Big $ O $) 표기법입니다. 빅오 표기법은 알고리즘의 성능을 수학적으로 분석하는 방법입니다.특정 알고리즘이 입력 크기 $ n $ 에 대해 얼마나 빠르게 실행되는지를 나타냅니다.즉, 실행시간이 증가하는 패턴을 예측하는 지표라고 할 수 있습니다. 함수인만큼 아래와 같이 수식을 넣어서 표기합니다.$ O(1) $$ O(33) $$ O(n) $$ O(n+m) $$ O(nm) $$ O(n^2) $$ O(nlogn) $$ O(k!) $등등.. 해당 표기법으로 성능은 어떻게 알 수 있을까요 빅오 표기법의 정의부터 알..
앵귤러로 프로젝트를 진행하던 중Chart.js 를 활용하여 그래프를 기리는 기능을 개발해야 했습니다.그러나 자꾸 에러가 나서 원인을 살펴보던 중Dom이 다 로드 되지 않고 createChart 함수를 실행하고 있었다는 것을 발견할 수 있었습니다. 예시 코드export class exampleComponent implemnets OnInit { @ViewChild('chart') chart: ElementRef; public chartView: any; ngOninit(): void { this.createChart(); } public createChart(): void { this.chartView = new Chart(this.chart..
테스트는 왜 해야하는가?"Too little testing is a crime, but too much testing is a sin"(너무 적은 테스트는 범죄지만, 너무 많은 테스트는 죄이다.)업무를 하면서 내가 개발자로 일을 하는 건지 테스터나 QA를 하고 있는건지 의문이 들 정도로 테스트를 하는 시간이 많다고 느껴져서 뭔가 잘못되었다는 걸 느낀 후테스트 코드와 테스트 방법론(?)에 대해서 공부해보았습니다. 우선 테스팅이 필요한 이유는 결함이 해결되지 않은 상태에서시스템이 운영 단계 또는 사용자 사용 단계로 넘어간다면장애가 발생하여 사용자들이 손실을 입고,나아가 회사 전체 비즈니스에 영향을 줄 수 있기 때문입니다.따라서 이를 방지하기 위해 테스팅을 꼭 해야만 합니다.테스트 코드를 작성 해야 하는 이유..
Angular 가 아니고 AngularJS 1.x 버전을 다룬 것입니다. AngularJS 2.x 버전 이후의 Angular 프레임워크를 찾아오신거라면 잘못찾아오신겁니다.. AngularJS 란? Angular는 자바스크립트로 만든 SPA(Single Page Application) 프레임워크라고 합니다. (SPA란, 하나의 웹 페이지가 실행할 때 View 단에 해당되는 부분이 페이지의 주소가 바뀌지 않으면서 또 다른 새로운 view를 동적으로 로드하여 사용하는 것입니다.) 이러한 SPA를 편하게 사용하도록 도움을 주는 것이 AngularJS와 같은 자바스크립트 프레임워크입니다. 또한 AngularJS는 자바스크립트 기반의 MV* 오픈 소스 프레임워크라고도 합니다. 그렇다면, MV* 패턴은 무엇일까요? ..
MSA는 소프트웨어 개발 기법 중 하나입니다. MSA MicroService Architecture의 줄임말입니다. MSA란 작고, 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스로 구성된 프레임워크라고 할 수 있습니다. MSA의 등장배경 Monolithic Architecture Monolithic Architecture란 소프트웨어의 모든 구성요소가 한 프로젝트에 통합 되어 있는 형태입니다. 많은 소프트웨어가 Monolithic 형태로 구현되어 있고, 소규모 프로젝트에는 Monolithic Architecture가 훨씬 합리적입니다. 하지만 일정 규모 이상의 서비스, 혹은 수백명의 개발자가 투입되는 프로젝트에서 Monolithic Architecture은 뚜렷한 한계를 보입니다. 1. 서비스/프..