총 1127개의 태그를 찾았습니다.
1건의 항목
코드를 짜다보면, 어느새 얽히고 섥혀있는 내 프로젝트를 마주한다. 부지런함이 개발자의 덕목이 아닌가라고 생각될 정도로 항상 깔끔함을 유지하는 것이 참 중요하다는 생각이 들곤한다. 혹은 미래의 나와 과거의 나가 항상 현재에서 싸우는 듯하기도 한다.
1건의 항목
이 계층에서도 TCP 헤더를 붙여 세그먼트(Segment)를 만드는 캡슐화를 진행한다. 연결형 통신에 사용 연결이라는 통신로를 확보해야 한다. 가상의 통신로 연결을 확립하기 위해서는 TCP 헤더의 코드 비트를 확인해야 한다.
6건의 항목
3D 모델이 만들어지는 기반 플랫폼. 프린터의 작업 표면. 빌드 플레이트(Build Plate)는 3D 프린터에서 3D 모델을 만들 때 사용되는 기반 플랫폼이며, 일반적으로 이 플레이트 위에 소재가 적층되어 모델이 만들어집니다.
인쇄물 생성 중인 3D 프린터 내부의 공간을 의미한다. 온도를 유지, 인쇄물의 건조도를 제어, 인쇄물의 안정성과 질을 향상 일부 인쇄 재료(예: ABS)의 경우 챔버 내부의 온도와 습도를 조절하여 인쇄물의 수축을 방지하고, 더 많은 세부 사항을 유지할 수 있다.
3D 프린터에서 소재를 층층이 녹여 모델을 만드는 부분. 익스트루더(Extruder)는 3D 프린터에서 소재를 층층이 적층하여 모델을 만드는 핵심 부품 중 하나입니다.
Fused Deposition Modeling, Fused Filament Fabrication(FFF) 재료를 녹는점 이상의 온도로 녹인 후 일정한 두께로 층을 만들어 쌓아올리는 방식이다. 장점 저렴하다. 유지보수 난이도가 적다. 소재의 범위를 확장할 수도 있다.
Infill은 3D 프린팅된 객체 내부를 채우는 소재의 구조를 나타냅니다. 3D 프린터는 대부분 객체의 외부와 내부를 채우기 위해 격자 또는 패턴으로 된 구조를 생성합니다. 이 구조는 모델의 강도를 유지하면서도 소재 사용과 프린팅 시간을 최적화하는 데 도움이 됩니다.
레이어 높이(Layer Height)는 3D 프린팅 과정에서 한 번에 쌓이는 각 층의 두께를 나타냅니다. 3D 프린터는 3D 모델을 여러 작은 수평 층으로 나누어서 생성하는데, 이 각 층의 두께가 레이어 높이입니다.
1건의 항목
이 계층에서도 TCP 헤더를 붙여 세그먼트(Segment)를 만드는 캡슐화를 진행한다. 연결형 통신에 사용 연결이라는 통신로를 확보해야 한다. 가상의 통신로 연결을 확립하기 위해서는 TCP 헤더의 코드 비트를 확인해야 한다.
1건의 항목
기억 장치의 동작방법에 대해 이해해보자. 최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자.
1건의 항목
앞으로 그림에서 나오는 Swift version은 가상이다. 이해를 위해서 가상으로 적었다.
1건의 항목
PLA ABS.
1건의 항목
추상클래스는 왜 필요할까? 다형성은 멋지고 강력한 개념 OO 4대 특성인 이유 (상속, 캡슐화, 다형성, 추상화) 다형성은 상속에 기반 상속과 다형성은 추상화에 기반 공통된 것을 뽑아내어 일반화된, 범용적인 것으로 적용 여러 클래스에서 공통 분모를 뽑아 부모 클래스로 제작 자식마다 달리 작동하는 구현을 부모의 method signature로 일반화 추상화는 조금더 복잡한 문제를 해결하기 위한 것 새로운 개념은 새로운 문제도 가져온다 추상화는 막강하지만 그로 인해 생각지 못한 문제가 발생 역시 사람은 직접 해보고 당해봐야 답을 찾음 ...
2건의 항목
소수설에서 태어난 다양한 주장들에 대해 알아보자. ADT와 PDA, Alan Kay에 대해 알아보자. 지금까지. 주류 OO에 대해 배웠다. 이제는 소수설들이 어떤 것들이 있었는지 알아보자. 취할 것은 취하고, 아닌 것은 아닌 것임을 알기 위해 배운다.
이전 장들에서는 Code, Code Block, 함수 구현 방법, 함수들의 연관 방식을 알아보았지만, 이번에는 조금더 고차원의 얘기를 할까 한다. 클래스 체계 Java Convention에 따르면 가장 먼저 변수 목록이 나온다.
2건의 항목
GoF의 디자인 패턴, 첫번째 추상 팩토리 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 두번째 빌더 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
1건의 항목
추상클래스는 왜 필요할까? 다형성은 멋지고 강력한 개념 OO 4대 특성인 이유 (상속, 캡슐화, 다형성, 추상화) 다형성은 상속에 기반 상속과 다형성은 추상화에 기반 공통된 것을 뽑아내어 일반화된, 범용적인 것으로 적용 여러 클래스에서 공통 분모를 뽑아 부모 클래스로 제작 자식마다 달리 작동하는 구현을 부모의 method signature로 일반화 추상화는 조금더 복잡한 문제를 해결하기 위한 것 새로운 개념은 새로운 문제도 가져온다 추상화는 막강하지만 그로 인해 생각지 못한 문제가 발생 역시 사람은 직접 해보고 당해봐야 답을 찾음 ...
1건의 항목
개체 지향 프로그래밍을 배우는데 있어 알아두면 좋은 내용들을 정리해본다.
1건의 항목
인수 테스트는 무엇일까? 시기 상조의 정밀도 불확실성의 원칙 서류와 실제 시스템의 동작은 다르다. 사업부는 요구했던 내용이 실제 시스템에서 돌아가는 모습과 다르다는 것을 깨닫는다. 요구사항이 정밀해질수록 최종 구현된 시스템과 초기 요구사항의 차이는 벌어진다.
1건의 항목
코드의 관리는 중요하다. 위계 질서를 가지고 구분하지 않으면 혼란을 초래한다. 접근 제어는 특히 SDK 작업을 하는 경우 인터페이스 역할을 하기 때문에 잘 알아두는 것이 좋다.
2건의 항목
Accessibility 자체만 해도 상당히 방대한 개념이다. 이번에는 iOS 개발자가 실제로 많이 사용하는 Accessibility인 Voice Over를 UIKit에 적용하는 방법에 대해 알아보자.
접근성 개발에 있어 쉽게 도와주는 녀석이 있다! Accessibility Inspector!! Introduction 접근성 관련해서 반영해주려니까 테스트 기기가 없더라.
4건의 항목
개체 지향 프로그래밍을 배우는데 있어 알아두면 좋은 내용들을 정리해본다.
What is Class? 우리는 클래스라는 개념을 왜 도입했을까? C++에서 함수가 태어나게 된 이유도 분리해서 관리하기 위함이었다.
Inherence 전체적인 구조 상속이 필요한 이유 상속은 매우 유용하다. 13. Class & Object & Constructor 글을 다시 기억해보자.
코드의 관리는 중요하다. 위계 질서를 가지고 구분하지 않으면 혼란을 초래한다. 접근 제어는 특히 SDK 작업을 하는 경우 인터페이스 역할을 하기 때문에 잘 알아두는 것이 좋다.
6건의 항목
Actor Model 개요 객체지향의 패턴에서 메소드 호출 방식이 비동기로 변경된 패턴 Actor들은 모두 Thread 기반으로 동작하는 객체어야 한다. 또한 Actor는 메시지의 전송/수신에 대한 동기화 관리까지 포함한다.
여러 일을 여러 사람이 각자 동시에 하는 것 행위도 여러개, 주체도 여러개 가짜 병렬 (논리적 개념) 코어는 하나임에도 두개의 서로 다른 동작을 번갈아가며 처리하여 동시에 수행하는 것 “처럼” 보이는 것 소프트웨어 수준으로 처리 Thread, Actor 등 Reference Parallelism .
개념 특정 작업이 전역적으로 단일 스레드에서 실행되도록 보장하는 장치 우리는 @MainActor라는 키워드만 추가하게 되면 main thread에서 동작한다는 것을 보장할 수 있다.
Task는 코드 블럭을 독립적으로 사용할 수 있다. 이러한 점을 사용하면 병렬적으로 특정 코드를 처리하게 할 수도 있다.
Actor isolation Actor의 isolation은 actor type의 근본적인 동작이다. Swift language model에서 어떻게 Actor가 actor 바깥쪽에서 들어오는 비동기 interaction에 대해 고립을 보장하는지 에대해 알아보자.
앞에서는 Swift concurrency가 어떻게 동작하는지 확인했다. 이번에는 Swift concurrency를 채택할 때 주의해야 하는점, 그리고 Actor를 통한 Synchronization에 대해 알아보자.
1건의 항목
앞에서는 Swift concurrency가 어떻게 동작하는지 확인했다. 이번에는 Swift concurrency를 채택할 때 주의해야 하는점, 그리고 Actor를 통한 Synchronization에 대해 알아보자.
1건의 항목
Actor isolation Actor의 isolation은 actor type의 근본적인 동작이다. Swift language model에서 어떻게 Actor가 actor 바깥쪽에서 들어오는 비동기 interaction에 대해 고립을 보장하는지 에대해 알아보자.
3건의 항목
Task는 코드 블럭을 독립적으로 사용할 수 있다. 이러한 점을 사용하면 병렬적으로 특정 코드를 처리하게 할 수도 있다.
Actor isolation Actor의 isolation은 actor type의 근본적인 동작이다. Swift language model에서 어떻게 Actor가 actor 바깥쪽에서 들어오는 비동기 interaction에 대해 고립을 보장하는지 에대해 알아보자.
앞에서는 Swift concurrency가 어떻게 동작하는지 확인했다. 이번에는 Swift concurrency를 채택할 때 주의해야 하는점, 그리고 Actor를 통한 Synchronization에 대해 알아보자.
1건의 항목
앞에서는 Swift concurrency가 어떻게 동작하는지 확인했다. 이번에는 Swift concurrency를 채택할 때 주의해야 하는점, 그리고 Actor를 통한 Synchronization에 대해 알아보자.
1건의 항목
CPU의 동작방법을 알아보자. 최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. 디지털 회로 기본적으로 연산을 수행하도록 가능하게 하는 것은 이 디지털 회로가 있기 때문이다. 이 디지털 회로는 반도체의 특징을 이용하면 가능하다.
4건의 항목
네트워크 주소와 브로드캐스트 주소 브로드캐스트는 앞에서 Switch(또는 지금은 Router)에 연결된 모든 호스트에 요청을 보내는 것을 의미했다. 이런 용도로 사용되는 특별한 주소를 말한다. 브로드 캐스트 주소 호스트 ID가 255인 주소이다.
운영체제에서 중요한 부분인 메모리 관리 기능에 대해 알아보자. 메모리는 CPU 자원만큼 컴퓨터를 사용하는데 매우 중요한 자원 중 하나이다.
외부 단편화를 해결하는 방법인 페이징(Paging)에 대해 알아본다. 1. 페이징(Paging) 외부 단편화로 인한 메모리 낭비는 매우 심하다는 것을 살펴보았다.
문자배열 char 형 문자를 여러 개 모아놓은 문자 집합 문자 : 작은 따옴표 ’ ’ 문자열 : 큰 따옴표 ” ” ‘\0’ (NULL) : 문자열 끝에 항상 문자코드 ‘\0’을 덧붙여야 함 char str[5] = {'A', 'B', 'C', 'D', '\0'}; // 옳은 선언 char str[4] = {'A', 'B', 'C', 'D'} // 잘못된 선언 char str...
1건의 항목
소수설에서 태어난 다양한 주장들에 대해 알아보자. ADT와 PDA, Alan Kay에 대해 알아보자. 지금까지. 주류 OO에 대해 배웠다. 이제는 소수설들이 어떤 것들이 있었는지 알아보자. 취할 것은 취하고, 아닌 것은 아닌 것임을 알기 위해 배운다.
11건의 항목 처음 10개의 태그
Agile Manifesto는 소프트웨어 개발 방법론 중 하나인 “애자일 개발”의 핵심 원칙을 담은 문서이다. 애자일 개발은 소프트웨어를 효과적으로 개발하기 위한 방법론으로, 고객의 요구사항을 빠르게 수용하고 변경에 대응하기 위한 접근법을 제공한다.
계획이란 무엇인가? 계획이 없다면 프로젝트는 수많은 문제들과 마주하게 된다. 시간 / 비용 값을 기반으로 진행 여부를 판단한다 제때 원하는 기능을 내놓을 수 있을지 없을지 알 수 있다. 하지만 계획한다는 것은 어렵고, 수시로 어긋나기까지 한다.
계획과 추정에 대한 연구결과 2/3 가량의 프로젝트는 추정된 비용 이상으로 많은 돈이 든다. 최종 제품에 포함된 기능들 중 64 퍼센트 가량은 거의 혹은 결코 쓰이지 않는다. 평균적인 프로젝트는 계획된 일정을 두 배 정도 초과한다.
지금 열정적으로 수행하는 ‘좋은’ 계획이 다음 주에 실행할 ‘완벽한’ 계획보다 낫다.
스토리 점수는 상대적이다 스토리 점수: 사용자 스토리나, 기능, 작업의 규모를 표현하기 위해 사용하는 단위 값의 상대성에 의미가 있다.
이상적 시간과 실제 경과 시간 축구 한게임하는데 시간이 얼마나 걸릴까? 누구는 90분, 누구는 3시간이라 말할 것이다. 90분은 이상적 시간에 대응되고, 3시간은 실제 경과 시간에 대응된다고 볼 수 있다.
수확 체감의 법칙 수확 체감의 법칙은 노동을 더 투입한 만큼에 비례하여 결과가 늘어나지 않음을 말한다. 계획 추정에 있어서도 비슷하다. 적은 시간 투자를 통해 얻는 결과와 많은 시간 투자를 통해 얻은 결과가 크게 다르지 않다.
재 추정을 하면 안 되는 경우 첫번째 이터레이션을 한 후, 1, 2번 스토리를 마무리했다고 생각해보자. 원래는 4개의 스토리 모두를 한 이터레이션에 할 수 있을 것이라 생각했다.
규모 추정에는 스토리 점수와 이상적 작업일이라는 두 수단이 있다. 각각 나름의 장단점이 있는데, 어떻게 활용하는 것이 좋은지에 대해 얘기해본다. 스토리 점수의 장점 스토리 점수는 팀원들로 하여금 기능간 경계를 뛰어 넘게 한다.
핵심 요약 시간이 없기 때문에 우선순위 선정을 해야 한다. 스토리 말고 테마를 통해 우선순위 산정한다.
2건의 항목
Agile Manifesto는 소프트웨어 개발 방법론 중 하나인 “애자일 개발”의 핵심 원칙을 담은 문서이다. 애자일 개발은 소프트웨어를 효과적으로 개발하기 위한 방법론으로, 고객의 요구사항을 빠르게 수용하고 변경에 대응하기 위한 접근법을 제공한다.
지금 열정적으로 수행하는 ‘좋은’ 계획이 다음 주에 실행할 ‘완벽한’ 계획보다 낫다.
1건의 항목
전체 과정 개발자가 소스코드를 작성한다. (Ts, Html, css, sass, scss etc) Babel을 통해 모든 브라우저에서 호환 가능한 문법의 코드로 변환한다. 소스코드를 하나로 묶는 Bundling을 진행한다. 원격 저장소에 Deploy한다.
14건의 항목 처음 10개의 태그
2026년 6월 Anthropic이 낸 발표 네 건을 읽고, "성능 자랑"보다 "어떻게 기업 안으로 파고드는가"라는 한 줄기 흐름으로 정리합니다.
AI가 웹을 공짜로 긁어가던 시대를 끝내려는 Cloudflare의 실험을 짚습니다. 크롤러를 분류하고, 신원을 확인하고, 요청 하나에 돈을 매기는 흐름이 어떻게 작동하는지 살펴봅니다.
미국 정부가 국가안보를 이유로 최신 AI 모델의 접근을 갑자기 막았다가 18일 만에 풀었습니다. 그 사이 무슨 일이 오갔는지, 발표문이 주장하는 것과 실제로 확인되는 것을 갈라 짚습니다.
2026년 6월 말 NVIDIA가 SEC에 낸 실적·공시를 읽고, 분기 매출 816억 달러라는 숫자와 회사가 붙인 "AI 인프라 리더십" 프레이밍을 갈라서 짚습니다.
NVIDIA의 분기 매출 816억 달러가 데이터센터에 얼마나 쏠려 있는지, SEC에 제출된 부문별·시장별 숫자로 직접 확인합니다.
기업이 설비에 돈을 쏟았다 줄였다 하는 자본지출 사이클이 무엇이고, 왜 AI 인프라 수요와 반도체 실적을 읽는 축이 되는지 짚습니다. 대형 클라우드 사업자들의 최근 투자 숫자로 지금 사이클이 어디쯤인지도 함께 살펴봅니다.
물리 세계를 인식하고 개입하는 AI를 가리키는 'Physical AI'가 무슨 뜻인지, 왜 지금 로봇용 파운데이션 모델과 함께 떠올랐는지, 그리고 병목이 어디인지를 1차 자료로 짚습니다.
로봇을 가상에서 훈련시켜 실물로 옮길 때 생기는 성능 저하, sim-to-real gap이 무엇이고 왜 Physical AI의 핵심 병목인지 짚습니다. 아직 자라는 중인 문서입니다.
전자상거래 회사로 아는 Amazon이 왜 AI 인프라 이야기의 큰손으로 계속 등장하는지 짚습니다. NVIDIA의 최대 고객군이면서 동시에 자체 칩으로 경쟁하는 이중 역할, 그리고 번 현금 대부분을 데이터센터에 쏟는 지출 구조를 어떤 축으로 읽어야 하는지 살펴봅니다.
Claude를 만드는 AI 회사 Anthropic이 왜 계속 뉴스에 등장하는지 짚습니다. 기업 시장으로 확장하려는 힘과 배포를 통제하려는 정부의 힘이 이 회사에서 어떻게 부딪히는지, 무엇을 보면 다음 국면을 읽을 수 있는지 살펴봅니다.
1건의 항목
오늘은 두 개의 숫자를 다시 읽습니다. NVIDIA의 분기 매출 816억 달러가 실은 소수 대형 클라우드의 지갑에 매여 있다는 이야기와, 높아 보이는 원·달러 환율의 주어가 '한국'이 아니라 '달러'라는 이야기. 무엇을 보면 이 판정이 뒤집히는지까지 짚습니다.
2건의 항목
미국 정부가 국가안보를 이유로 최신 AI 모델의 접근을 갑자기 막았다가 18일 만에 풀었습니다. 그 사이 무슨 일이 오갔는지, 발표문이 주장하는 것과 실제로 확인되는 것을 갈라 짚습니다.
오늘 정원에 심긴 두 갈래를 짚습니다. 언어 모델처럼 하나의 큰 모델로 여러 로봇을 움직이려는 흐름과, 미국 정부가 최신 AI 모델을 껐다가 18일 만에 되살린 사건. 무엇을 먼저 읽고 무엇을 지켜보면 되는지 안내합니다.
2건의 항목
미국 정부가 국가안보를 이유로 최신 AI 모델의 접근을 갑자기 막았다가 18일 만에 풀었습니다. 그 사이 무슨 일이 오갔는지, 발표문이 주장하는 것과 실제로 확인되는 것을 갈라 짚습니다.
Claude를 만드는 AI 회사 Anthropic이 왜 계속 뉴스에 등장하는지 짚습니다. 기업 시장으로 확장하려는 힘과 배포를 통제하려는 정부의 힘이 이 회사에서 어떻게 부딪히는지, 무엇을 보면 다음 국면을 읽을 수 있는지 살펴봅니다.
2건의 항목
답답한 걸 싫어하는 내게 속도가 나지 않는다는 것은 정말 곤욕이다. 내가 자주 사용하는 Alfred Workflow를 공유해본다. Markdown Table 블로그글을 쓰거나, 기록을 해야 할 때, table만큼 좋은 게 없다.
잘 사용하고 있던 Alfred workflow가 동작하지 않는다. Mac OS 12.3으로 업데이트하고나서 바로 이런 이슈가 터지다니. 속도가 안나 답답하다. Issue 원인 Apple에서 12.3부터 공식적으로 python 2을 지원하지 않는다고 한다.
158건의 항목 처음 10개의 태그
그래프 용어 V : vertex E : Edge path 연결 그래프 : 어떤 두 정점 사이에도 경로가 존재하는 그래프 부분 그래프 가중치 포함 그래프 : Edge에 가중치가 달려있음 순환 경로 순환 그래프, 비순환 그래프 트리 - 비순환, 비방향그래프 신장 트리 : 연결된, 비방향성 그래프에서 순환경로를 제거하면서 연결된 부분 그래프가 되도록 하는 트리 신장 트리의 개수는 Cayley’s formula에 따른 개수를 가짐 최소비용신장트리 신장 트리가 되는 부분 그래프 중에서 가중치가 최소가되는 부분 그래프 무조건 트리로 나온다.
가지를 끊어버리는 백 트래킹에 대해 알아보자.
분기 한정법에 대해 알아보자. 분기 한정법 Branch : 이전 상태 공간 트리에서 다음 가지로 넘어가는 경우를 말함 Bound : 한계 이전의 백 트레킹과 크게 다르지 않다. 그 부분 집합의 합을 구하는 문제와 크게 다르지는 않다.
정렬에 대해 깊게 공부해보자.
탐색하는 방법에 대해 알아보자. 검색 문제 n개의 키를 가진 배열 S와 키 x가 주어졌을 때, x=S[i]가 되는 첨자 i를 찾는 것 없다면 오류로 처리한다. 결론 : 이분 검색 알고리즘보다 효율적인 알고리즘은 없다. 이진 검색 상태 공간 트리 순차 검색은 답이없다.
실버1 : 동적 계획법 문제이다. 생각 전형적인 dp 문제이다. 다만 이 문제는, 경로를 추적해야 한다는 점에서 조금 다르다. 경로를 추적하는 방법으로는 dp를 미리 구해놓고, 이것을 역으로 추적하여 구하는 방법이 가장 간단하다.
실버5 : 동적 계획법 문제이다. 생각 생각 보다 힘들게 푼 문제이다. n이 50000이고, 시간 제한이 0.5초이기 때문에 완전탐색으로 풀면 힘들 것이라 생각했다. 그래서 동적 계획법 방법으로 풀이를 채택했다. 이 문제는 동전 문제와 비슷하게 생각해야 한다.
골드4 : 이분 탐색 문제이다. 생각 어려웠다. 여러가지 배열이 섞이고, 계산하는 방법을 생각하지 못했다. 이 문제를 풀면서 배운 것은, 정말 컴퓨터처럼(센다..) 생각해야 된다는 것.
골드5 : 동적계획법 문제이다.
실버1 : 동적계획법 문제이다. 생각 동적 계획법하면 유명한 문제이다. 나는 동적 계획법을 풀 때 보통 두가지 방법을 많이 사용한다. 상태에 대한 정의와 점화식을 직관으로 때린다. (감..) 순차적으로 완전 탐색 방법으로 그려본다.
1건의 항목
Aliasing (Reference Variable) 기본적으로, 우리가 선언된 변수를 다른 변수에 할당하게 되면 이 값을 복사해서 사용하는 셈이 된다.
1건의 항목
stack view는 autolayout을 적용하지 않고도 layout을 잡을 수 있는 신기한 친구다. 한번 알아보자. 이 글을 읽기 위해서는 이전글을 읽고 오는 것이 이해가 쉽다.
3건의 항목
운영체제에서 중요한 부분인 메모리 관리 기능에 대해 알아보자. 메모리는 CPU 자원만큼 컴퓨터를 사용하는데 매우 중요한 자원 중 하나이다.
보조 기억 장치에 저장되는 파일의 할당에 대해 알아본다. 컴퓨터 시스템 자원 중 가장 중요한 것은 CPU이다. CPU 자원 관리에 대해서는 맨 처음 부분에서 다루었으며 CPU 스케줄링, 프로세스 동기화 등에 대해서 배웠다.
Pass by Reference 내가 클래스를 만들고, 그 클래스를 바탕으로 객체를 만들었다. 이때, 이 클래스에 연결되어 있는, 함수를 메서드라 했다.
1건의 항목
왜 필요할까? V-Diagram 왜 단계적인 테스트가 필요할까? 문제가 발생했을 때, 시간, 의사소통 등의 비용을 줄이기 위함 요구사항 만족함을 증명하는 것 어떤 종류가 있을까? 단위 테스트 테스트가 가능한 최소 단위로 나누어진 모듈, 프로그램, 객체, 클래스 내에서 결함을 찾고 기능을 검증 독립적으로 수행됨 프로그래머가 주도함 코드를 중심으로 수행 이러한 구분은, 어떤 Task냐에 따라 구분이 달라진다.
1건의 항목
기억 장치의 동작방법에 대해 이해해보자. 최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자.
1건의 항목
네트워크 공부를 하다보니, 인코딩이라는 것에 대해 제대로 이해할 필요가 있다고 생각했다. 왜 필요한지, 어떻게 사용하는지에 대해서 이해해보는 포스팅이다.
1건의 항목
앞으로 그림에서 나오는 Swift version은 가상이다. 이해를 위해서 가상으로 적었다.
1건의 항목
앱 배포에 있어 꼭 알아야 하는 App Thining중 App Slicing에 대해 알아본다. 해당글은 WWDC 2015를 기준으로 한다. App Distribution Today 이전의 App 배포 방법은 다음과 같은 방식으로 수행되었다.
2건의 항목
앱 배포에 있어 꼭 알아야 하는 App Thining중 App Slicing에 대해 알아본다. 해당글은 WWDC 2015를 기준으로 한다. App Distribution Today 이전의 App 배포 방법은 다음과 같은 방식으로 수행되었다.
앱 배포를 하다보면 bitcode enabled라는 flag가 있다. 이녀석을 체크하냐 마냐에 따라서 빌드 속도가 상당히 차이나는 것을 보았는데 도대체 왜 그런 건지 이해해보려 한다. bitcode 다음은 Distrubution Options에서 찾은 설명이다.
1건의 항목
예전에 네트워크 처리를 하면서 맞닥들였던 문제를 다시한번 적어본다. 그리고 그 개념까지 간단하게 정리해본다.
1건의 항목
이전에 앱의 실행 과정에 대해서 공부했을 때 제대로 이해하지 못했었다. 이번 기회에 제대로 이해하는 자리를 가져보려 한다. 조금 성장했는지 약간 더 이해가 되었다! 그럼 시작하자.
3건의 항목
운영체제에 대한 정의, 역할에 대해 알아본다. 운영체제는 사용자가 컴퓨터를 사용하기 위해 필요한 소프트웨어이다. 일반적으로 사용하는 모든 프로그램은 운영체제에서 그 자원을 관리한다. 목적 운영체제를 사용하는 가장 큰 목적은 하드웨어의 관리이다.
이전에 앱의 실행 과정에 대해서 공부했을 때 제대로 이해하지 못했었다. 이번 기회에 제대로 이해하는 자리를 가져보려 한다. 조금 성장했는지 약간 더 이해가 되었다! 그럼 시작하자.
iOS 개발자로서 제플린이나 피그마 창을 하나만 띄워서 보는건 너무 귀찮다. 여러개 띄울수는 없을까? 해결 방법 open -na /Applications/Zeplin.app open -na /Applications/Figma.app 모든 프로그램이 되는 것은 아니다.
1건의 항목
물리 계층 (Physical Layer L1) 기계적, 전기적인 통신망 접면의 정의 데이터를 전기적인 신호로 변환해서 주고받는 기능만 할 뿐 대표 장비 : 통신 케이블, 리피터, 허브 등 데이터링크 계층 (Data Link Layer 2, L2) 데이타 링크의 제어 (프레임화, 데이터 투명성, 오류 제어 등) 맥 주소를 가지고 통신한다.
1건의 항목
이전에 앱의 실행 과정에 대해서 공부했을 때 제대로 이해하지 못했었다. 이번 기회에 제대로 이해하는 자리를 가져보려 한다. 조금 성장했는지 약간 더 이해가 되었다! 그럼 시작하자.
2건의 항목
Monad와 Functor 사이에는 Monoidal Functor라는 중간 단계가 있다. Monoidal Functor를 정의할 수 있는 언어 아무 언어에서나 정의될 수 있는 개념은 아니다. 다음의 조건이 선행되어야 한다.
함수형 언어가 다인수함수를 다루는 법.
1건의 항목
멘토링, 수습기간, 장인 정신에 대해 고찰해본다. 수습기간 소프트웨어 역시 실무 훈련기간이 있어야 한다. 왜 프로그래머는 학교만 졸업하면 가능할 것이라 생각하는가? 소프트웨어는 일상생활에 너무나도 많은 곳에 들어가 있다. 합리적 훈련과 감독을 받는 실습기간은 필요하다.
1건의 항목
언제 “예”라고 말해야 하는가? 약속을 뜻하는 말 말하고 진심으로 실행하라. Commitment(약속)은 세단계로 구분된다. 하겠다고 말한다. 진심을 담는다. 실제로 실행한다. 하지만 이를 실제로 지키기는 어렵다.
1건의 항목
사용자에게 나의 상품을 내놓을 때, 얼마나 메타 데이터가 중요한지 생각해보는 계기였습니다. 초기 배포 당시, 메타데이터를 제대로 작성하지 않아 유저가 해당 앱에 대한 정보를 알지 못한다는 의견을 받았습니다.
1건의 항목
오래 기다렸다. ARC가 무엇일까? 자바의 Garbage Collector와는 무엇이 다를까? 장단점은 무엇일까? 어떤 원리로 동작하는 것일까? 발생하는 문제점은 무엇일까? 어떻게 해결할 수 있을까? 이러한 내 궁금증들을 담았다.
11건의 항목 처음 10개의 태그
이제 리팩터링 전반에 적용되는 원칙 몇 가지를 살펴보자. 리팩터링 정의 리팩터링이라는 개발 용어는 굉장히 두루뭉실한 의미로 통용된다. (많은 개발 용어가 그렇다) 하지만 이를 엄격하게 정의해야 유용하다.
코드가 어느 환경에 돌아가는지 아는 것은 중요하다. 어떤 cpu아키텍쳐가 있고, 차이점이 무엇인지에 대해서 알아보자. 해당 글은 계속해서 추가해 나갈 예정이다.
이러한 문제에 대해 가장 쉬운 해결 방법은 서버쪽에서 Ready 상태일 때, client로 정보를 밀어넣어주는 것이다. 이렇게 처리할 경우, 이제 정보 제공 Event는 Server로부터 시작된다고 할 수 있다.
특정 데이터를 서버로부터 받고 싶다고 하자. 일반적인 REST API를 사용한다면 서버에 GET 요청을 하고, 그 결과로 json 데이터를 받을 것이다. 이렇게 일반적으로 가장 많이 사용하는 Server 통신 방식이 Request-Driven 방식이라 생각하면 된다.
많은 수의 엔지니어와 nested states를 관리하기 위한 mobile app Cross-platform Architecture RIBs의 이름은 Router, Interactor, Builder의 약자이다.
간단한 구조 일단 RIB의 구조는 위와 같다.
그럼 이번에는 Router에서 하위 RIB의 build()를 호출할 때 어떠한 순서로 진행되는지 알아보자. 먼저, 동적 의존성이 있을 경우 component를 생성해준다.
일단 해당 내용을 다 따라가면서 쳐보는 것을 추천한다. 아무래도 framework라고 공식 문서에 적혀있는 것으로 보아 진입장벽이 있을 것으로 보인다. 오히려 핵심 아이디어만 가져와서 사용하고, 유연하게 적용하는 것이 좋지 않을까하는 생각이다.
iOS 내부 디바이스에 다양한 CPU 제품이 들어감에 따라 이를 대응할 수 있도록 Project setting을 해야한다. 내부 디바이스들이 어떤 특징을 가지고 있는지 알아보자. 이번 글은 CPU Architecture 글을 읽고 오면 좀 더 편하다.
실제 컴파일, 링킹이 끝난 뒤의 결과물에 대해서는 잘 모르는 것 같다. 실행 파일은 어떻게 구성되어 있는 걸까? 우리가 사용하는 프로그램들은, 바이너리화되어 있는 파일의 형태로 존재한다. 그런데, 이 실행파일의 형태는 OS에 따라 다른 형태로 존재한다.
1건의 항목
이전 블로그와 노트 자료를 보관하는 공간입니다. 현재 사이트의 중심은 Concepts, Entities, Comparisons로 이어지는 공개 지식 그래프입니다.
1건의 항목
STereoLithography 혹은 Standard Triangulated Language 3차원 데이터를 표현하는 국제 표준 형식중 하나. 복잡한 3차원 폴리곤을 삼각형의 조합으로 만들어 곡면을 표현한다.
5건의 항목
값 someFunction(a: 3, b: 5) 외부에서 해당 함수를 호출했다고 하자. 여기서 3, 5가 argument이다. 즉 넘겨진 값 자체를 말한다. 다른말로는 전달인자라 부른다.
함수의 일반적인 개념 사용자가 필요한 함수를 만들어 쓰자. 프로그램 실행 흐름 프로그램 실행 중에 함수명과 동일한 부분을 만나면, 해당함수로 이동 함수실행 main() 함수로 다시 돌아옴 함수의 장점 동일한 기능을 여러번 작성할 필요가 없다.
함수의 기본 모양 수학에서의 함수와 같이, input , output 이 있고, input 이 들어갔을 때, 어떤 작업을 한 뒤, output 을 내보내는 방식으로 작동한다.
일급 함수 parameter로 사용가능 return 값으로 사용가능 익명함수 argument label 호출하는 쪽에서 사용하는 이름 parameter name function 안에서 사용하는 이름 Variadic parameters 0개 이상의 특별한 타입을 나열해서 파라미터로 넘길 수 있음 ...을 넣어서 사용 이렇게 선언된 경우 함수안에서 해당 type의 Array로 사용할 수 있음 func sum(values: Int…) -> Int { var result = 0 for value in values { result +=...
Parameters 문서에 제공할만한 매개변수 이름을 선택하자. 파라미터 이름을 숨겨 보이지 않는 경우에도 설명에 있어서는 중요하다.
1건의 항목
일급 함수 parameter로 사용가능 return 값으로 사용가능 익명함수 argument label 호출하는 쪽에서 사용하는 이름 parameter name function 안에서 사용하는 이름 Variadic parameters 0개 이상의 특별한 타입을 나열해서 파라미터로 넘길 수 있음 ...을 넣어서 사용 이렇게 선언된 경우 함수안에서 해당 type의 Array로 사용할 수 있음 func sum(values: Int…) -> Int { var result = 0 for value in values { result +=...
1건의 항목
데이터의 중심을 나타내는 척도에 대해서 배워본다. 평균 (mean) 평균은 대표적으로 집단의 중심위치를 나타내는 척도로 사용된다. 이 평균에는 보통 3종류가 사용된다.
6건의 항목
1D Array & Slicing # www.tensorflow.org/api_guides/python/array_ops import tensorflow as tf import numpy as np import pprint tf.set_random_seed(777) # for reproducibility pp = pprint.PrettyPrinter(indent=4) sess = tf.InteractiveSession() t = np.array([0., 1., 2., 3., 4., 5., 6.]) pp.pprint(t) pr...
동일한 종류, 동일한 자료형의 데이터를 메모리에 일련의 구조화된 집단으로 구성한 것 배열을 사용하지 않는다면 각각의 값에 따라 모두 변수선언을 해야할 것 선언 자료형 배열명[배열 크기]; int score[10] int 형 변수 1개의 메모리 크기가 4byte score[10]같은 경우 40바이트 index는 0번 부터 시작 초기화 int a[3]; //선언 a[0] = 10; a[1] = 15; a[2] = 20; int a[3]= {10, 15, 20}; int a[3] = {10, 15, 20, 30}; // 오류 // 원소...
문자배열 char 형 문자를 여러 개 모아놓은 문자 집합 문자 : 작은 따옴표 ’ ’ 문자열 : 큰 따옴표 ” ” ‘\0’ (NULL) : 문자열 끝에 항상 문자코드 ‘\0’을 덧붙여야 함 char str[5] = {'A', 'B', 'C', 'D', '\0'}; // 옳은 선언 char str[4] = {'A', 'B', 'C', 'D'} // 잘못된 선언 char str...
What is Array? 직접적으로 값을 순차적으로 매핑한다. C언어에서 오래된 기술이고, 객체가 아니다.
Value Type 다른 변수에 대입하면 복사됨 argument로 넘겨도 복사됨 argument로 collection을 넘겨서 변화주면 원하는 결과를 얻을 수 없음 Objective-C의 경우 가능 Array 동일한 Type의 값을 저장할 수 있는 Ordered List 동일한 값이 다른 위치에서 반복적으로 낭로 수 있음 Foundation의 NSArray와 bridge 표현 let array: Array<SomeType>() let array: [SomeType] let array = [Int]() let array ...
인덱스로 Array 아이템을 탐색하다보면 항상 마주하는 것이 있다. Fatal error: Index out of range. 잘못하면 런타임에 애플리케이션이 바로 죽어버리기 마련이다. 아무리 염두에 둔다하더라도 우리는 사람인 이상 실수를 하기 마련이다.
3건의 항목
컴퓨터가 모든 것을 숫자로 다루는 방식을 알아보자. 최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. 컴퓨터로 글자를 나타내는 방법 ASCII Code 숫자와 글자에 대한 함수관계를 정의한다.
네트워크 공부를 하다보니, 인코딩이라는 것에 대해 제대로 이해할 필요가 있다고 생각했다. 왜 필요한지, 어떻게 사용하는지에 대해서 이해해보는 포스팅이다.
자료형 프로그램에서 선언된 변수들이 기억 공간에서 어떻게 저장되고 처리되어야 할지, 컴파일러에게 알려줌 종류 정수형 실수형 문자형 사용자 정의 자료형 정수형 소수점이 없는 숫자 음의 정수, 0 , 양의 정수 오버플로우(overflow) 데이터 허용 범위를 넘는 값을 변수에 저장할 때, 의도한 값이 아닌 다른 값이 저장되는 것 #include <stdio.h> int main(void) { short a = 32767, b=2, c; unsigned short d; c = a+b; d = a+b; printf("c...
1건의 항목
프로그램 실행 과정 graph LR A[원시함수 작성] --> |Compiler|B(오브젝트 파일 생성) B-->|Linker|C[실행파일 생성] Compiler : 고급 언어로 작성된 파일을 기계어로 번역해줌.
3건의 항목
Generic의 경우 코드 중복을 줄일 수 있는 좋은 기능이다. 잘 다뤄둔다면 중급(?) 이상의 개발자가 되는데 큰 도움을 줄 것이다.
type alias를 공부하면서 마주쳤던 associated type에 대해 알아본다.
generic을 보면서 몇몇 곳에서 where 키워드를 사용하는 것을 보았다. 한번 정리해야 할 것 같아 공식 문서을 읽어본다. Generic Where Clauses generic에도 where 조항을 넣어 받는 타입에 세부 제약을 추가할 수 있다.
6건의 항목
무심코 사용하는 많은 비동기 함수들은 사실 변화의 과정을 겪은 결과들이다. 네트워크 I/O API가 어떻게 변화되어 왔는지 알아보자. 한눈에 보기 network API를 사용하다보면 자연스레 머리에 이런 그림이 떠오른다.
Swift 5.5에서 소개된 Async/Await에 대해 공부해본다. 비동기 처리가 필요한 이유 thumbnail을 fetch하는 method가 있다고 하자.
What is AsyncSequence 용량이 좀 큰 csv 데이터를 받는다고 하자. 만약 해당 파일을 모두 받은 뒤에 데이터를 처리한다고 한다면, 오랜 시간 뒤에나 가능할 것이다. 여기서 asyncSequence를 사용하면 굉장히 반응성있는 결과를 낼 수 있다.
AsyncSequence를 공부하다 후반에 나온 AsyncStream을 이해하지 못해 문서를 읽어본다. AsyncStream 이전 글에서 AsyncSequence를 Custom하게 만드는 방법까지 알아보았다.
앞에서는 Swift concurrency가 어떻게 동작하는지 확인했다. 이번에는 Swift concurrency를 채택할 때 주의해야 하는점, 그리고 Actor를 통한 Synchronization에 대해 알아보자.
Test라는 과정은 사실 공학 어디에서든 등장하는 개념이다. 작업에 의존도가 있고, 복잡한 과정으로 넘어갈 수록 이전 단계의 오류는 치명적이기 때문이다. 이를 관리하는 방법이 Test라 할 수 있다. 소프트웨어에서 역시 이러한 개념이 적용된다.
1건의 항목
Task를 알아보면서 많은 삽질을 했으니, 이제 다시한번 WWDC 영상을 봐본다. Intro 예전의 프로그래밍 언어는 control flow가 상하로 왔다갔다했었다. 이런 코드는 흐름을 읽는 것을 방해했다.
2건의 항목
최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. PC 조립 과정 보며 구조 이해하기 컴퓨터 하드웨어 구성 요약 다나와 다나와 이곳에 가면 컴퓨터 용어에 대한 간단한 설명들을 쉽게 알 수 있다. 컴퓨터란? CPU가 가장 중요하다.
쪼개어 나눌 수 없는 연속된 일 어떤 일을 최대한 쪼갰을 때의 가장 작은 단위의 행위 원자성은 병렬성을 가지는 상태에서 동기화 라는 작업이 중요하다.
1건의 항목
HTTP에서 상태가 필요한 이유 로그인이 되게 하고 싶다. 쇼핑몰 로그인이 아니어도 카트 목록을 기억하게 하고 싶다. 해결 방법 Fat URL - URL에 상태 정보를 모두 집어 넣기 - URL을 파싱해서, 사용자의 상태를 확인한다.
1건의 항목
iOS 앱개발에서 화면을 담당한다면 피할 수 없는 autolayout! 공식 문서를 읽어보며 정리해보자.
2건의 항목
오래 기다렸다. ARC가 무엇일까? 자바의 Garbage Collector와는 무엇이 다를까? 장단점은 무엇일까? 어떤 원리로 동작하는 것일까? 발생하는 문제점은 무엇일까? 어떻게 해결할 수 있을까? 이러한 내 궁금증들을 담았다.
이미지와 글자가 있는 Button을 만들다가, String안에 image를 넣을 수 있다는 것을 알았다! NSAttributedString 텍스트 일부에 대해 특성(시각적 스타일, 하이퍼 링크 등)이 있는 문자열 텍스트 일부에 대해 특성들을 적용할 수 있는 String이다.
1건의 항목
왜 필요한가? 주기적인 포맷이 필요하다는 것을 느꼈다. 7년동안 정리를 안하다보니 나도 스트레스를 받더라. 그럴 때마다 기존에 사용하는 환경을 다시 구축하는게 너무나 시간낭비고 하기 싫었다.
1건의 항목
autoreleasepool. 어딘가에서 들어봤지만 언제쓰는지는 전혀 몰랐다.
1건의 항목
설명 실제 동작하는 스타벅스 앱을 클론 코딩하였습니다. 처음으로 팀플을 진행했으며, commit convention, 브랜치 전략등을 사용해보았습니다.
1건의 항목
탐색하는 방법에 대해 알아보자. 검색 문제 n개의 키를 가진 배열 S와 키 x가 주어졌을 때, x=S[i]가 되는 첨자 i를 찾는 것 없다면 오류로 처리한다. 결론 : 이분 검색 알고리즘보다 효율적인 알고리즘은 없다. 이진 검색 상태 공간 트리 순차 검색은 답이없다.
2건의 항목
Swift 5.5에서 소개된 Async/Await에 대해 공부해본다. 비동기 처리가 필요한 이유 thumbnail을 fetch하는 method가 있다고 하자.
앞에서는 Swift concurrency가 어떻게 동작하는지 확인했다. 이번에는 Swift concurrency를 채택할 때 주의해야 하는점, 그리고 Actor를 통한 Synchronization에 대해 알아보자.
1건의 항목
1D Array & Slicing # www.tensorflow.org/api_guides/python/array_ops import tensorflow as tf import numpy as np import pprint tf.set_random_seed(777) # for reproducibility pp = pprint.PrettyPrinter(indent=4) sess = tf.InteractiveSession() t = np.array([0., 1., 2., 3., 4., 5., 6.]) pp.pprint(t) pr...
1건의 항목
탐색하는 방법에 대해 알아보자. 검색 문제 n개의 키를 가진 배열 S와 키 x가 주어졌을 때, x=S[i]가 되는 첨자 i를 찾는 것 없다면 오류로 처리한다. 결론 : 이분 검색 알고리즘보다 효율적인 알고리즘은 없다. 이진 검색 상태 공간 트리 순차 검색은 답이없다.
2건의 항목
핵심 아이디어 Feature Extraction, classification, bounding box regression까지 한번에 학습할 수 있는 모델을 만들자! Fast R-CNN은 이전 SSP Net이 가지는 한계점을 극복하는 시도에서 출발한다.
역전파 이 부분을 이해하기 전에, Deep Learning에 대한 전반적인 과정을 이해하는 것이 좋다. 앞부분에서는 cost 함수를 정의하고 이를 학습하는데 있어 gradient descent 방법을 활용했다.
2건의 항목
가지를 끊어버리는 백 트래킹에 대해 알아보자.
실버2 : 조합 문제이다. 풀이1 기본적인 조합 문제이다.
1건의 항목
프록시란? 대리 응답 프록시(proxy)는 “대리”라는 뜻이다. 그렇다면 어떠한 경우에서 이러한 대리의 개념이 필요할까? 보통은 보안상의 이유로 직접 통신하는 것이 문제가 발생할 경우 이런 방식을 사용한다.
2건의 항목
수도관의 크기 결국 데이터는 흐름이다. 그렇기 때문에 어떤 관을 따라간다고 생각할 수 있다. 이 때 관의 지름이 대역폭이다. 한번에 보낼 수 있는 데이터의 양이라 생각하면 된다. 이 크기가 클수록 많은 데이터를 초 당 전송할 수 있는 양이 늘어난다.
한번에 전송할 데이터의 크기 편지를 내가 썼다. 그 편지를 누군가한테 보내는데, 글자하나하나를 보내지 않는다. 이 때 편지는 우체부 아저씨가 누군가한테 배달하는 단위가 된다. 이와 같은 개념이 패킷이다. 패킷은 데이터를 보내는 데 있어 발생하는 단위이다.
3건의 항목
2. Bank Account Problem(은행 계좌 문제) 동기화의 필요성을 가장 잘 느낄 수 있는 은행 계좌 문제에 대해 알아본다. 2.1 문제 설명 동기화 문제 중에서 대표적인 은행 계좌 문제를 살펴보자. 은행에는 하나의 계좌에 입금, 출금을 할 수 있다.
프로세스 동기화 도구에 대해 알아본다. Semaphore(세마포) Semaphoresms 깃발이라는 네덜란드 단어이다. 옛날에는 기찻길에서 공유하는 길이 있을 때, 깃발 표식으로 오고감의 신호를 주고 받았다.
현재 사용하는 동기화 도구인 모니터(Monitor)에 대해서 알아본다. 세마포는 실제로 매우 오래된 동기화 도구이다. 현재에는 모니터(monitor)라는 동기화 도구를 주로 사용하며, 이는 좀 더 고수준의 동기화 기능을 제공한다. 1.
1건의 항목
공개키 비트코인 주소 형식에 대해 알아본다. 이는 곧 “주소”이다. 비트코인 주소 WIF(Wallet Import Format) 앞에서 공개키와 비밀키, 그리고 서명, 검증 방식에 대해 알아보았다. 그리고 이를 직렬화하는 방법도 배웠다.
3건의 항목
Base64에서 URL에서 사용하는 문자열을 제외한 Encoding 방식 +, /, = 가 URL에서 사용하는 문자임 : 띄어쓰기, / : 경로구분자, = : name과 value사이에 쓰는 기호 (Query) 이에 아래와 같이 문자를 변경함 Reference RFC4648 .
이진 데이터를 문자코드에 영향을 받지 않는 공통 ASCII 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식 Base64 == 64개 값을 하나의 데이터로 인코딩한다. == 6개의 비트 2^6 = 64 를 인코딩한다. Reference RFC4648 .
네트워크 공부를 하다보니, 인코딩이라는 것에 대해 제대로 이해할 필요가 있다고 생각했다. 왜 필요한지, 어떻게 사용하는지에 대해서 이해해보는 포스팅이다.
11건의 항목 처음 10개의 태그
Extract Function, 함수 추출하기에 대해 알아보자.
Inline Function, 함수 인라인하기를 알아보자.
Extract Variable, 변수 추출하기를 알아보자.
Inline Variable, 변수 인라인하기를 알아보자.
Change Function Declaration, 함수 선언 바꾸기에 대해 알아보자. 요약 코드 function circum(radius) { .. } function circumference(radius) { ..
Encapsulate Variable, 변수 캡슐화하기를 알아보자.
Rename Variable, 변수 이름 바꾸기를 알아보자. 요약 코드 let a = height * width; let area = height * width; 배경 명확한 프로그래밍의 핵심은 이름 짓기다.
Introduce Parameter Object, 매개변수 객체 만들기에 대해 알아보자.
Combine Functions into Class, 여러 함수를 클래스로 묶기를 알아보자.
Combine Functions into Transform, 여러 함수를 변환 함수로 묶기를 알아보자.
1건의 항목
일괄처리부터 시분할시스템, 최근의 고급운영체제, 인터럽트에 기반한 현대 운영체제까지 변천 역사를 알아본다. 1. 초기 컴퓨터 노가다, 사람 손도 많이가, 장치도 엄청커, 비싸기도 비싸 운영체제는 컴퓨터가 발전하면서 같이 발전하게 되었다.
1건의 항목
확률이 p라는 것 반복이 가능한 경우(Frequentist Probability) 특정 실험을 “무한히 반복”했을 때, 해당 결과가 나오는 비율이 p 반복이 가능한 사건에 대한 확률은 이해하기 쉽다.
11건의 항목 처음 10개의 태그
GoF의 디자인 패턴, 책임연쇄 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 명령 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다. 핵심 요약 하나의 명령을 객체화한 패턴 객체는 전달할 수 있고, 보관할 수 있다. 즉, 명령(기능)을 전달하고 보관할 수 있게 된다.
GoF의 디자인 패턴, 해석자 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 반복자 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 중재자 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다. 핵심 요약 객체들 간의 복잡한 관계를 중재자라는 것을 두어 매우 효과적으로 단순화시킨다. 예시 에어컨, 문, 창문, 보일러가 있다고 하자.
GoF의 디자인 패턴, 메멘토 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다. 핵심 요약 객체의 상태를 기억해두었다가 필요할 때 기억해둔 상태로 객체를 되돌린다.
GoF의 디자인 패턴, 감시자 패턴에 대해 알아본다. 핵심 요약 객체 사이에 일 대 다 의존 관계를 정의해두어, 어떤 객체의 상태가 변할 때, 그 객체에 의존성을 가진 다른 객체들이 변화를 통지받고 자동으로 갱신될 수 있게 만든다.
GoF의 디자인 패턴, 상태 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 전략 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 템플릿 메서드 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
1건의 항목
왜 필요할까? V-Diagram 왜 단계적인 테스트가 필요할까? 문제가 발생했을 때, 시간, 의사소통 등의 비용을 줄이기 위함 요구사항 만족함을 증명하는 것 어떤 종류가 있을까? 단위 테스트 테스트가 가능한 최소 단위로 나누어진 모듈, 프로그램, 객체, 클래스 내에서 결함을 찾고 기능을 검증 독립적으로 수행됨 프로그래머가 주도함 코드를 중심으로 수행 이러한 구분은, 어떤 Task냐에 따라 구분이 달라진다.
17건의 항목 처음 10개의 태그
가지를 끊어버리는 백 트래킹에 대해 알아보자.
분기 한정법에 대해 알아보자. 분기 한정법 Branch : 이전 상태 공간 트리에서 다음 가지로 넘어가는 경우를 말함 Bound : 한계 이전의 백 트레킹과 크게 다르지 않다. 그 부분 집합의 합을 구하는 문제와 크게 다르지는 않다.
실버2 : BFS 문제이다.
골드4 : bfs 문제이다. 풀이 bfs는 가중치가 없는 그래프의 최단 거리 문제를 풀 때 사용하는 방법이다. 이 문제는 최단 거리 문제이므로 이 풀이를 선택하는 것은 맞다.
골드4 : bfs 문제이다. 생각 단순한 구현 문제이다. 이 때, 순서를 잘 파악하는 것이 중요하다. 먼저, 불을 번지게 한 상태에서, 사람의 현재 위치로 부터 어디로 가는 것이 좋은지를 판단해야 한다.
골드5 : bfs 문제이다. 생각 최소 경로를 묻는 문제로써, 완전 탐색으로 풀이할 수 있다. 이 때, 중요한 점은, 한번의 스텝을 넘어감에 있어서 소수여야 한다는 것, 그리고 불가능하다는 것을 알려주기 위한 visited를 만드는 것이다.
풀이1 실버1 : BFS 문제이다.
골드5 : BFS 문제이다.
골드5 : BFS 문제이다. 풀이 cost에 따라 탐색하지 않을 노드를 분명히 정해야 한다.
골드4 : BFS 문제이다. 풀이 아니 풀이방법을 아는데 왜 코드가 안돌아가는지 모르겠다. 계속해서 메모리 초과가 뜨는데 어떤 부분이 문제인지 아직도 못찾았다.
1건의 항목
인코딩을 공부하면서, 바이트 오더링이라는 단어를 들어보았다. 처음 들어본 단어라, 간단하게 정리해보려 한다.
2건의 항목
컴퓨터가 모든 것을 숫자로 다루는 방식을 알아보자. 최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. 컴퓨터로 글자를 나타내는 방법 ASCII Code 숫자와 글자에 대한 함수관계를 정의한다.
실제 컴파일, 링킹이 끝난 뒤의 결과물에 대해서는 잘 모르는 것 같다. 실행 파일은 어떻게 구성되어 있는 걸까? 우리가 사용하는 프로그램들은, 바이너리화되어 있는 파일의 형태로 존재한다. 그런데, 이 실행파일의 형태는 OS에 따라 다른 형태로 존재한다.
1건의 항목
타원 곡선을 알아보았다면, 이걸 토대로 암호를 만들어보자. 유한체에서 정의된 타원 곡선 2장에서 보았던 타원 곡선은 “실수체”에서 정의되었다. 무한집합 그렇기 때문에 꽉 찬 곡선으로 보였던 것 이제 이 정의되는 공간을 유한체로 바꿀 것이다.
8건의 항목
탐색하는 방법에 대해 알아보자. 검색 문제 n개의 키를 가진 배열 S와 키 x가 주어졌을 때, x=S[i]가 되는 첨자 i를 찾는 것 없다면 오류로 처리한다. 결론 : 이분 검색 알고리즘보다 효율적인 알고리즘은 없다. 이진 검색 상태 공간 트리 순차 검색은 답이없다.
골드4 : 이분 탐색 문제이다. 생각 어려웠다. 여러가지 배열이 섞이고, 계산하는 방법을 생각하지 못했다. 이 문제를 풀면서 배운 것은, 정말 컴퓨터처럼(센다..) 생각해야 된다는 것.
골드2 : 이분 탐색 문제이다. 생각 기존에 dp로 풀었던 문제가 데이터의 개수만 달라져 새로운 문제가 되었다. 이번 문제는 풀이를 좀 참고하였으며 새로운 공부를 할 수 있었다. 이 문제는 먼저, 일반적인 dp문제로 풀수가 없다.
실버2 : 파라메트릭 서치 문제이다. 생각 파라메트릭 서치 문제이다. 일단 완전 탐색이 불가하고, 답을 제시했을 때 분기를 만들 수 있다는 점에서 바로 접근했다. 인접한 집간의 최대 거리를 제시한다.
실버1 : 이분 탐색, Parametric Search 문제이다. 생각 처음에 이 문제를 풀 때, 세그먼트 트리로 풀려고 했다. 그런데, 문제가 생겼다.
실버3 : 이분 탐색 문제이다. 생각 이분 탐색 문제이다. 이전의 문제들과 마찬가지로, 값을 제시하고 그에 대한 분기를 만드는 것이 중요하다. 이 때, 어느 영역에서 답이 나오는지를 잘 체크하고, 답의 후보를 기록해두는 행위가 중요하다.
풀이1 실버4 : 이분 탐색 문제이다. 생각 특정 숫자가 등장하는 lowerBound와 UpperBound를 잡아내면 끝나는 문제이다.
실버3 : 이진 탐색 문제이다. 풀이 예산 금액은 최대예산과 아예 안주는(0원) 방법이 있다. 따라서 0과 max금액을 양 끝으로 잡는다.
1건의 항목
탐색하는 방법에 대해 알아보자. 검색 문제 n개의 키를 가진 배열 S와 키 x가 주어졌을 때, x=S[i]가 되는 첨자 i를 찾는 것 없다면 오류로 처리한다. 결론 : 이분 검색 알고리즘보다 효율적인 알고리즘은 없다. 이진 검색 상태 공간 트리 순차 검색은 답이없다.
3건의 항목
다형성은 무엇인가? 왜 중요한가? Polymorphism poly + morph + ism: 다양한 + 변하다 + 상태 = 다양한 형태로 변할 수 있는 능력 많은 사람들이 OOP의 핵심이라 여기는 특징 같은 지시를 내렸는데 다른 종류의 개체가 동작을 달리 하는 것 어떤 함수 구현이 실행될지 실행중에 결정된다.
Early Binding과 Late Binding은 성능에서 어떤 차이가 나는가? 실제로는 어떻게 사용하는가? 알게 모르게 당연하게 사용하고 있는 다형적 메서드는 무엇이 있을까? 이른 바인딩 vs.
Static Binding (정적 바인딩) #include <iostream> #include <string> #include <vector> using namespace std; class Base{ public: void f(){cout << "Base::f()" << endl;} virtual void vf() {cout << "Base::vf()" << endl;} }; class Derived:public Base...
3건의 항목
Bit와 진법 변환에 대해 알아본다. 최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. 4Bit 4Bit로는 16진수 한자리를 표현할 수 있다. 16진수는 0F(015) 까지 한 자리에 쓴다.
비트 0, 1 비트가 모여 데이터 구성 비트를 주고 받는 것이 통신의 본질 바이트 = 8비트 워드 = 1바이트가 2개 (16비트) 데이터가 어떻게 전기 신호로 전달? 데이터가 전달되지 않을 때 전기적 신호가 존재 Clock 신호 CPU는 해당 신호에 맞춰 일을 처리한다.
코드가 어느 환경에 돌아가는지 아는 것은 중요하다. 어떤 cpu아키텍쳐가 있고, 차이점이 무엇인지에 대해서 알아보자. 해당 글은 계속해서 추가해 나갈 예정이다.
2건의 항목
앱 배포를 하다보면 bitcode enabled라는 flag가 있다. 이녀석을 체크하냐 마냐에 따라서 빌드 속도가 상당히 차이나는 것을 보았는데 도대체 왜 그런 건지 이해해보려 한다. bitcode 다음은 Distrubution Options에서 찾은 설명이다.
앱스토어에서 크래시가 나서 Reject을 당하면 Crash Report를 함께 준다. 해당 파일을 열어보면 이상한 숫자들만 가득하다. dSYM debug symbol file App을 Release한 뒤에 Crash를 진단할 수 있게 도와주는 파일이다.
15건의 항목 처음 10개의 태그
송재준 저자의 Programming Bitcoin을 정리합니다.
Bitcoin Programming 책을 읽으며 이해한 내용에 대해 정리한다. 첫번째는 유한체이다.
암호학에서 중요하게 사용되는 타원곡선에 대해 알아보자. 왜 해당 곡선을 사용할까? 타원곡선 y^2 = x^3 + Ax + B 위의 방정식의 형태로 나타나는 곡선 타원의 둘레를 구하기 위한 적분, 이의 역함수를 구하는 과정에서 유래했다.
타원 곡선을 알아보았다면, 이걸 토대로 암호를 만들어보자. 유한체에서 정의된 타원 곡선 2장에서 보았던 타원 곡선은 “실수체”에서 정의되었다. 무한집합 그렇기 때문에 꽉 찬 곡선으로 보였던 것 이제 이 정의되는 공간을 유한체로 바꿀 것이다.
비트코인에서 사용하는 타원곡선은 무엇일까? 비트코인에서 사용하는 타원 곡선 지금까지는 타원곡선에 들어가는 유한체의 위수를 작은 소수를 사용했다. 하지만 실전에서는 매우 큰 소수를 사용하여 컴퓨터로 탐색이 불가능하게 만든다.
서명, 검증 알고리즘을 알았으니 필요한 클래스들을 작성해보자.
비밀키, 공개키, 서명, 그리고 검증 방법까지 알아보았다. 하지만 이러한 값을 가지고 있기만 해서는 결제라는 행위가 이루어질 수 없다. 어딘가로 보내야 한다. 그때 필요한 기술인 직렬화를 알아보자.
서명 역시 검증을 위해 전파될 필요가 있다. 즉, 직렬화가 필요하다. DER(Distinguished Encoding Rules) 서명에 대해 앞에서 공부했을 때 핵심은 r, s의 값이었다.
공개키 비트코인 주소 형식에 대해 알아본다. 이는 곧 “주소”이다. 비트코인 주소 WIF(Wallet Import Format) 앞에서 공개키와 비밀키, 그리고 서명, 검증 방식에 대해 알아보았다. 그리고 이를 직렬화하는 방법도 배웠다.
Reference Programming Bitcoin by Jimmy Song(O’Reilly). Copyright 2019 Jimmy Song, 978-1-492-03149-9 programmingbitcoin .
2건의 항목
골드1 : 동적 계획법 문제이다. 생각 dp의 정의는 간단하게 생각할 수 있다. 특정한 상태의 발전소로 오는 방법은 몇가지로 정해지기 때문이다. 그래서 정의를 잡으면 다음과 같다.
연산자 & 피연산자 연산자 : 산술연산자인 +, - , * , / 와 같이 이미 정의된 연산을 수행하는 기호 피연산자 : 연산에 참여하는 변수나 값 연산자의 종류 대입 연산자 일반적 수학에서 사용하는 기호 LHS와 RHS가 다른의미를 가지고 있다.
2건의 항목
무심코 사용하는 많은 비동기 함수들은 사실 변화의 과정을 겪은 결과들이다. 네트워크 I/O API가 어떻게 변화되어 왔는지 알아보자. 한눈에 보기 network API를 사용하다보면 자연스레 머리에 이런 그림이 떠오른다.
Data(contentof)는 로컬 파일을 불러오기 위한 메서드이다. 애초에 동기 메서드이다. 가끔 이걸 DispatchQueue에 Item으로 싼뒤에 넣어 비동기 처럼 사용하는 경우가 있는데, 이러면 안된다. API의 존재 이유에 맞지 않기 때문이다.
1건의 항목
동기 다른 블로그 호스팅 서비스(Tistory, Velog)를 사용하면, 내가 온전히 관리하지 못한다는 측면에서 아쉬움이 있었다. Github Page를 Jekyll을 사용해 포스팅해보았지만, 1000개가 넘어가는 시점부터 너무 느려 사용하기가 꺼려졌다.
113건의 항목 처음 10개의 태그
실버1 : 동적 계획법 문제이다. 생각 전형적인 dp 문제이다. 다만 이 문제는, 경로를 추적해야 한다는 점에서 조금 다르다. 경로를 추적하는 방법으로는 dp를 미리 구해놓고, 이것을 역으로 추적하여 구하는 방법이 가장 간단하다.
실버5 : 동적 계획법 문제이다. 생각 생각 보다 힘들게 푼 문제이다. n이 50000이고, 시간 제한이 0.5초이기 때문에 완전탐색으로 풀면 힘들 것이라 생각했다. 그래서 동적 계획법 방법으로 풀이를 채택했다. 이 문제는 동전 문제와 비슷하게 생각해야 한다.
골드4 : 이분 탐색 문제이다. 생각 어려웠다. 여러가지 배열이 섞이고, 계산하는 방법을 생각하지 못했다. 이 문제를 풀면서 배운 것은, 정말 컴퓨터처럼(센다..) 생각해야 된다는 것.
골드5 : 동적계획법 문제이다.
실버1 : 동적계획법 문제이다. 생각 동적 계획법하면 유명한 문제이다. 나는 동적 계획법을 풀 때 보통 두가지 방법을 많이 사용한다. 상태에 대한 정의와 점화식을 직관으로 때린다. (감..) 순차적으로 완전 탐색 방법으로 그려본다.
브론즈1 : 구현 문제이다. 풀이 단순한 문제이다. 앞뒤에 어떠한 문자를 넣을 수 있으니, 현재 가지고 있는 ROT13만 가지고서 부분적으로 보았을 때, 가장 작은 차이를 가지고 있는 지점만 알면된다. 이후는 맞춰서 끼워넣으면 되니까.
골드5 : 구현 문제이다.
실버2 : 동적 계획법 문제이다. 생각 dp의 정의는 간단하게 생각할 수 있다.
골드3 : 동적 계획법 문제이다. 생각 dp의 정의는 간단하게 생각할 수 있다. 이 문제는 가장 긴 감소하는 부분 수열, 가장 긴 증가하는 부분 수열을 합한 문제이다.
골드2 : 이분 탐색 문제이다. 생각 기존에 dp로 풀었던 문제가 데이터의 개수만 달라져 새로운 문제가 되었다. 이번 문제는 풀이를 좀 참고하였으며 새로운 공부를 할 수 있었다. 이 문제는 먼저, 일반적인 dp문제로 풀수가 없다.
13건의 항목 처음 10개의 태그
사용자 입력에 대한 Test, 단방향 흐름, 역할과 책임을 고려한 MVVM 구조를 채택하였습니다. 기획 분석 화면 이동이 복잡하지 않다. 사용자 입력에 대해 처리할 부분이 있어, 입력 테스트가 필요하다. 목표 단방향 흐름의 구조를 갖는 아키텍쳐를 사용한다.
다양한 의존성 주입 방법을 고려하고, 최종적으로 ViewController에 생성자 주입 방식을 통해 컴파일 타임에 주입 여부를 판단할 수 있도록 변경하였습니다. 초기에 작성한 의존성 주입이라고 착각한 코드입니다.
프로젝트의 외부 라이브러리 의존은 줄일 수록 빠른 대응이 가능한 서비스를 만들 수 있다 판단했습니다. 프로젝트를 진행하기에 앞서, 라이브러리를 어느수준까지 사용하는 것을 허용할 것인지에 대해 고민했습니다.
서로 다른 화면을 유기적으로 작업하고자, 충돌 문제가 다수 발생하는 스토리보드 사용을 하지 않았습니다. 프로젝트를 진행하기 전, 스토리보드 사용 여부에 대해 의사결정을 했습니다. 결과적으로 스토리보드 사용을 하지 않았는데, 그 이유는 다음과 같습니다.
Fruit Card Game OnBan StarBoost DogFeed Escaper .
사용자에게 나의 상품을 내놓을 때, 얼마나 메타 데이터가 중요한지 생각해보는 계기였습니다. 초기 배포 당시, 메타데이터를 제대로 작성하지 않아 유저가 해당 앱에 대한 정보를 알지 못한다는 의견을 받았습니다.
개밥줬어? Stack: Firebase, MVC, UIKit, iOS Team: 팀 프로젝트 Role: 개발 진행 기간: 2021/09/23 → 2021/09/24 About: 우리집 강아지 생존권을 확립하는 식사 여부 확인 애플리케이션 개요 GitHub - wansook0316/bookathon_G: 개밥줬어? 기획의도 개밥줬어? 모두가 바쁜 요즘 우리집 강아지 밥은 누가 챙겨?! 이제 편하게 앱으로 확인하세요 ✏ 한줄소개 우리집 강아지 생존권을 확립하는 식사 여부 확인 애플리케이션 💻 서비스 가족 구성원이 강아지 밥을 주었는지...
앱 설명 방탈출, 이제는 기록하고 경쟁하세요! 방탈출 카페 위치 조회, 방탈출 정보 기록 및 랭크 확인 기능 제공 AppStore: Escaper 방탈출 Escaper Keynote 소개자료 WIKI 사용 스킬 MVVM Firebase CoreLocation MapKit 경험 한 것 사용자의 데이터 과금을 우려하여 ImageCache를 직접 구현하여 사용하였습니다.
과일 카드 게임 Stack: MVC, UIKit, XCTest, iOS Team: 1인 진행 기간: 2021/08/30 → 2021/09/10 About: MVC 패턴에서 Model을 설계하는 것을 연습하고, 이를 View에 보여주는 간단한 카드게임을 만들었습니다.
비동기 네트워크 처리에 있어 순서대로 이미지 순서가 보장되어야 하는 문제를 해결했습니다. 방탈출 테마 세부페이지에서는 해당 방을 방문한 유저들의 Top 5 랭킹이 보여지도록 하였습니다.
1건의 항목
운영체제에 대한 정의, 역할에 대해 알아본다. 운영체제는 사용자가 컴퓨터를 사용하기 위해 필요한 소프트웨어이다. 일반적으로 사용하는 모든 프로그램은 운영체제에서 그 자원을 관리한다. 목적 운영체제를 사용하는 가장 큰 목적은 하드웨어의 관리이다.
1건의 항목
Border는 바깥으로 그려질까 안쪽으로 그려질까? 오해와 삽질에 대해 정리해본다. Answer innerborder를 그리기 위해서는 현재 표현되는 frame을 border width만큼 줄여버리면 된다.
1건의 항목
UITableView의 바닥을 어느정도 띄워야할 필요가 있었다. 어떻게 했는지 기록해둔다. Solution UIScrollView의 contentInset 동작을 이해했다면 쉽게 알아먹을 수 있다.
3건의 항목
그래서 예외는 어떻게 처리하는 것이 좋은걸까? 오류 상황 예외 상황과 오류 상황을 다른 의미로 사용할 것 오류 상황은 error condition을 말함 이 오류 상황을 처리하는 방법 중에 예외가 있음 오류 상황은 예측 가능한 상황을 의미함 프로그램 실행 중에 기본적으로는 일어나지 않음 하지만 일어날 수 있는 일 따라서 이러한 상황을 처리하는 코드는 프로그램 기능의 일부임 프로그래머가 이를 예측하지 못했다면? 버그 오류 상황을 처리하는 4가지 방법 무시 곧바로 크래시 일단은 작동하는데 언젠가는 크래시 안정적이지 못한 상태로 계속 동...
리팩토링에 있어 테스트 코드는 왜 중요할까? 자가 테스트 코드의 가치 프로그래머들의 대부분의 시간은 코드치는 시간이 아니다. 현상황 파악 / 설계 고민 / 디버깅에 많은 시간을 쓴다. 디버깅의 경우 수정자체는 금방 끝난다. 다만 찾는데 고통스럽다.
우리는 시스템에 들어가는 모든 코드를 보통 직접 개발하지 않는다. 외부 패키지 구입, 오픈소스, 사내 팀의 제공 컴포넌트 사용 등 다양한 방식으로 외부 코드를 사용한다. 이 외부 코드를 우리 코드에 깔끔하게 통합하는 것은 꽤나 중요하다.
1건의 항목
생산자-소비자 문제는 생산자가 데이터를 생산하면 소비자는 그 데이터를 소비하는 형태의 문제이다. 컴퓨터 환경에서 예를 보면, 컴파일러 -> 어셈블러, 웹 서버 -> 웹 클라이언트 등이 있다.
1건의 항목
Computer Vision의 Task 이중 Object Detection에 해당하는 문제이다. R-CNN region proposal을 진행한다. CNN에 각각 넣는다.
2건의 항목
맨날 헷갈리는 이것. 오늘은 뽑아버리겠다. Frame Super view의 좌표계를 기준으로 했을 때 본인의 좌표계를 말한다. 우리가 위치를 표시하기 위해서는 기준 좌표계가 있어야 한다.
View 화면을 구성하는데 기본이 되는 class NSObject를 상속한 UIResponder를 상속해서 구성됨 CustomView는 UIView를 상속함 UIImageView, UILable, UIScrollView… 가능한 것들 Drawing Animation Layout subview 관리 Event Handling UIResponder 상속하기 때문에, touch와 같은 event에 반응 가능 gesture 추가 초기화 형태 // code init(frame:) init() // default parameter = CGRe...
1건의 항목
데이터를 설명하는 상대위치와 이를 나타내는 box plot에 대해 알아본다. 상대위치 중앙값이 50%에 위치하는 분위수라면, 이에 대응하는 다양한 분위수가 존재한다. 백분위수 분포를 100개로 쪼개어 생각하는 것이다.
2건의 항목
이제 리팩터링 전반에 적용되는 원칙 몇 가지를 살펴보자. 리팩터링 정의 리팩터링이라는 개발 용어는 굉장히 두루뭉실한 의미로 통용된다. (많은 개발 용어가 그렇다) 하지만 이를 엄격하게 정의해야 유용하다.
설명 실제 동작하는 스타벅스 앱을 클론 코딩하였습니다. 처음으로 팀플을 진행했으며, commit convention, 브랜치 전략등을 사용해보았습니다.
2건의 항목
기존에 작업한 글이 있어 링크로 대체한다. 05. Control Flow 06. Loop Part. 01 07. Loop Part. 02 iomanip library 기본적으로 iostream 라이브러리로 출력을 하게되면, 왼쪽 정렬이다.
컴퓨터를 통하여 문제를 해결하는 가장 중요한 이유 중에는 계속적으로 반복하는 작업을 컴퓨터가 대신 처리하여 주는 것이다. 이런 기능을 반복문이라고 하며, 대부분의 프로그래밍 언어는 다양한 반복문을 제공한다.
1건의 항목
GoF의 디자인 패턴, 가교 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다. 핵심 요약 기능과 구현의 분리를 통해 시스템의 확장성과 유지보수성을 높이는 패턴 기존 시스템에 새로운 기능을 추가해도 어떠한 변경도 없이 추가가 가능하다.
8건의 항목
실버5 : 브루트포스 문제이다.
브론즈2 : 브루트포스 문제이다.
브론즈2 : 브루트포스 문제이다.
실버1 : 완전 탐색 문제이다. 풀이 그냥 가능성을 다 구한다. 그런데 시간 초과가 날수도 있다. 왜냐하면 +-*/가 중복될 수 있으니까 그래서 set으로 이런 중복을 제거한후 주르륵 계산해서 답.
실버2 : 완전 탐색 문제이다. 풀이 기존 것에 비해 연산자 개수가 늘어난 문제. 단순한 순열로 풀면 44P10의 연산 결과라 못푼다. 그냥 완전탐색으로 풀면되긴한데, 백준에서 pypy로 제출했더니 틀렸다고 해서 당황했다.
실버5 : 브루트포스 문제이다. 풀이 String으로 변환해서 판단하려고 했는데, 생성시간이 꽤나 오래걸리나보다.
풀이1 실버5 : 브루트포스 문제이다. Code // // main.swift // CodingTest // // Created by 최완식 on 2021/08/15.
실버1 : 완전 탐색 문제이다. 풀이 매우 막 푼 풀이. 좋지 않다.
1건의 항목
정렬에 대해 깊게 공부해보자.
1건의 항목
생산자-소비자 문제는 생산자가 데이터를 생산하면 소비자는 그 데이터를 소비하는 형태의 문제이다. 컴퓨터 환경에서 예를 보면, 컴파일러 -> 어셈블러, 웹 서버 -> 웹 클라이언트 등이 있다.
2건의 항목
이전 글에서 Scheme에 대해서 알아보았다. 하지만 실제로 어떻게 사용하는 건지 잘 모른다. 이번 글에서 알아보도록 하자. Scheme 알아보기 프로젝트를 하나 만들어주고, Product -> Scheme -> Edit Scheme 들어가자.
Target Xcode의 빌드를 통해 생성된 최종 Product Framework Application 등등 일반적으로 하나의 모듈 또는 앱을 의미한다. 보통 프로젝트 생성시 하나만 생성되나, 목적에 따라 하나의 프로젝트에 여러개의 Target을 생성할 수 있다.
5건의 항목
GoF의 디자인 패턴, 두번째 빌더 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 두번째 빌더 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
빌더 패턴은 무엇일까? 무엇을 조심해야 할까? 어떤식으로 활용하는 것이 좋을까? Builder 개체의 생성과정을 그 개체의 클래스로부터 분리하는 방법 개체의 부분부분을 만들어 나가다 준비가되면 그제서야 개체를 생성 StringBuilder 단순한 것은 이걸 사용해서 원하는 문자열을 만들 수 있다.
운영체제에서 중요한 부분인 메모리 관리 기능에 대해 알아보자. 메모리는 CPU 자원만큼 컴퓨터를 사용하는데 매우 중요한 자원 중 하나이다.
그럼 이번에는 Router에서 하위 RIB의 build()를 호출할 때 어떠한 순서로 진행되는지 알아보자. 먼저, 동적 의존성이 있을 경우 component를 생성해준다.
3건의 항목
이전 글에서 Scheme에 대해서 알아보았다. 하지만 실제로 어떻게 사용하는 건지 잘 모른다. 이번 글에서 알아보도록 하자. Scheme 알아보기 프로젝트를 하나 만들어주고, Product -> Scheme -> Edit Scheme 들어가자.
Bundle 실행 가능한 코드(executble code) + 리소스 (Resources)를 가진 계층 어떻게 보면 이 개념은 개발자를 위한 개념이다. 결국 Package내부는 Bundle과 같이 구성되어 있다.
Library에 대해서는 알아보았다.
1건의 항목
이전 글에서 Scheme에 대해서 알아보았다. 하지만 실제로 어떻게 사용하는 건지 잘 모른다. 이번 글에서 알아보도록 하자. Scheme 알아보기 프로젝트를 하나 만들어주고, Product -> Scheme -> Edit Scheme 들어가자.
1건의 항목
운영체제에서 중요한 부분인 메모리 관리 기능에 대해 알아보자. 메모리는 CPU 자원만큼 컴퓨터를 사용하는데 매우 중요한 자원 중 하나이다.
1건의 항목
생산자-소비자 문제는 생산자가 데이터를 생산하면 소비자는 그 데이터를 소비하는 형태의 문제이다. 컴퓨터 환경에서 예를 보면, 컴파일러 -> 어셈블러, 웹 서버 -> 웹 클라이언트 등이 있다.
1건의 항목
Bit와 진법 변환에 대해 알아본다. 최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. 4Bit 4Bit로는 16진수 한자리를 표현할 수 있다. 16진수는 0F(015) 까지 한 자리에 쓴다.
1건의 항목
인코딩을 공부하면서, 바이트 오더링이라는 단어를 들어보았다. 처음 들어본 단어라, 간단하게 정리해보려 한다.
14건의 항목 처음 10개의 태그
왜 C를 배워야 하는가? C 표준 C89/ANSI-C 최초의 C 표준 (89년) 여전히 많은 코드가 이 표준을 사용 임베디드 시스템 이걸 가장 많이 살펴볼 것임 C99 많은 내용 추가 인라인 함수 새로운 헤더파일들 새로운 자료형 한 줄짜리 주석 유연한 배열 멤버 가변 길이 배열 보다 안전한 I/O 함수 C11 C99 대체 유니코드 지원 이름 없는 구조체 및 공용체 제네릭 표현식 표준화된 멀티스레딩 지원 C18 신규 기능 없음 C11의 결함만 수정 include? 현대에서 많이 사용하는 import와 같은 구문 다른 파일에 구현된 함...
절차적 언어 순수한 절차적 언어 즉, 데이터보다 프로세스에 중점이 맞춰져 있다. 반대로 말하면 개체지향 언어의 경우 “데이터”에 중점을 맞춘다는 뜻. 반드시 나쁜 것은 아님 그냥 매뉴얼에 적힌 내용을 순서대로 따라하는 느낌.
Primitive Types char short int long float double long double unsigned, signed 부호 여부에 따라 자료형 앞에 적어준다.
프로그램 실행 과정 graph LR A[원시함수 작성] --> |Compiler|B(오브젝트 파일 생성) B-->|Linker|C[실행파일 생성] Compiler : 고급 언어로 작성된 파일을 기계어로 번역해줌.
자료형 프로그램에서 선언된 변수들이 기억 공간에서 어떻게 저장되고 처리되어야 할지, 컴파일러에게 알려줌 종류 정수형 실수형 문자형 사용자 정의 자료형 정수형 소수점이 없는 숫자 음의 정수, 0 , 양의 정수 오버플로우(overflow) 데이터 허용 범위를 넘는 값을 변수에 저장할 때, 의도한 값이 아닌 다른 값이 저장되는 것 #include <stdio.h> int main(void) { short a = 32767, b=2, c; unsigned short d; c = a+b; d = a+b; printf("c...
프로그래밍 사용자가 어떤 값을 컴퓨터에 넣고(입력) 처리한 결과를 사용자에게 다시 제공(출력)하는 것 graph LR; A[Input] --> B{Function} B --> C(Output) 입출력 함수 표준 입출력 함수: 키보드와 모니터를 통해 자료를 입출력 파일 입출력 함수: 특정한 파일을 통해 자료를 입출력 저급 입출력 함수: 운영체제 내, 시스템 호출을 통해 자료를 입출력 표준 입출력 함수 형식화된 입출력 printf() 함수 표준 출력 장치인 모니터로 자료를 출력 도스창에 실행결과를 표시할 때 사용 제어 문자열...
연산자 & 피연산자 연산자 : 산술연산자인 +, - , * , / 와 같이 이미 정의된 연산을 수행하는 기호 피연산자 : 연산에 참여하는 변수나 값 연산자의 종류 대입 연산자 일반적 수학에서 사용하는 기호 LHS와 RHS가 다른의미를 가지고 있다.
제어문 프로그램의 실행을 인위적으로 조절할 수 있는 문장 제어문의 종류 If 조건 연산자 유일하게 피연산자가 3개인 삼항 연산자 선택문(if)문과 같이 행동함 #include <stdio.h> int main() { int min, max; int x = 10, y = 20; max = (x>y) ? x : y; min = (x>y) ? y : x; printf("두 수 %d과 %d 중에 큰 수는 %d이다.\n", x, y, max); printf("두 수 %d과 %d 중에 작은 수는...
반복문의 필요성 특정 명령을 반복적으로 사용해야 함 규칙적으로 반복하는 일 동일한 내용을 반복할 때 For 특정 문장을 일정한 횟수만큼 반복 시킬 때 사용 #include <stdio.h> int main() { int i, Sum = 0; for (i=1; i<=10; i++) Sum += i; printf("1부터 10까지의 합은 %d다.\n",Sum); return 0; } // 프로세스가 시작되었습니다.
Do ~ While 일단 Do 안에 있는 명령문을 실행하고 나중에 while문의 조건식 비교 적어도 한번은 명령문을 처리함 마지막에 세미콜론(;)을 반드시 추가해야 함 조건식을 검사하는 while(조건식)은 C 문장으로 여기기 때문 #include <stdio.h> int main() { int sum = 0; int number = 0; printf("1에서 10까지 합을 구합니다.\n"); do { number++; sum += number; } while(number<10); printf(&q...
1건의 항목
왜 C를 배워야 하는가? C 표준 C89/ANSI-C 최초의 C 표준 (89년) 여전히 많은 코드가 이 표준을 사용 임베디드 시스템 이걸 가장 많이 살펴볼 것임 C99 많은 내용 추가 인라인 함수 새로운 헤더파일들 새로운 자료형 한 줄짜리 주석 유연한 배열 멤버 가변 길이 배열 보다 안전한 I/O 함수 C11 C99 대체 유니코드 지원 이름 없는 구조체 및 공용체 제네릭 표현식 표준화된 멀티스레딩 지원 C18 신규 기능 없음 C11의 결함만 수정 include? 현대에서 많이 사용하는 import와 같은 구문 다른 파일에 구현된 함...
1건의 항목
C4D Download octane .
5건의 항목
언제 사용할까? Conditional GET을 이용하여 트래픽은 줄일 수 있으나, Round Trip은 줄일 수 없다.
앱 설명 방탈출, 이제는 기록하고 경쟁하세요! 방탈출 카페 위치 조회, 방탈출 정보 기록 및 랭크 확인 기능 제공 AppStore: Escaper 방탈출 Escaper Keynote 소개자료 WIKI 사용 스킬 MVVM Firebase CoreLocation MapKit 경험 한 것 사용자의 데이터 과금을 우려하여 ImageCache를 직접 구현하여 사용하였습니다.
비동기 네트워크 처리에 있어 순서대로 이미지 순서가 보장되어야 하는 문제를 해결했습니다. 방탈출 테마 세부페이지에서는 해당 방을 방문한 유저들의 Top 5 랭킹이 보여지도록 하였습니다.
현재 프로젝트에 적합한 간단한 이미지 캐시를 구현하여 사용하였습니다. 기본에 임시로 작업한 이미지 캐시의 경우, 네트워크 요청후 디스크에 저장이 되는 구조로 제작하였습니다.
onBan Stack: Caching, MVP, Network, UIKit, UserDefault, iOS Team: 1인 Role: 개발 진행 기간: 2021/09/27 → 2021/10/08 About: 반찬을 주문할 수 있는 간단한 애플리케이션입니다.
1건의 항목
참조변수와 일반변수의 사용의 차이점을 알았다면, main 함수가 동작하는 도중 다른 함수를 호출할때, 그 함수의 인자 역시 두 종류가 있음을 알 수 있다. 마찬가지로 일반변수와, 참조변수를 사용할 수 있다.
1건의 항목
참조변수와 일반변수의 사용의 차이점을 알았다면, main 함수가 동작하는 도중 다른 함수를 호출할때, 그 함수의 인자 역시 두 종류가 있음을 알 수 있다. 마찬가지로 일반변수와, 참조변수를 사용할 수 있다.
1건의 항목
Completion은 main에서 호출해주는 것이 좋다. 이유 api를 호출하고, 결과가 도착한 경우 completion을 호출하는 함수가 있다고 하자.
1건의 항목
Apple에서 공개한 API인 Combine. 이제 Rx에서 Combine으로 많이 넘어간다고 한다. 무엇을 하는 것인지, 왜 좋은지, 바로 써먹기 위한 팁은 무엇이 있는지 알아본다.
1건의 항목
Task를 알아보면서 많은 삽질을 했으니, 이제 다시한번 WWDC 영상을 봐본다. Intro 예전의 프로그래밍 언어는 control flow가 상하로 왔다갔다했었다. 이런 코드는 흐름을 읽는 것을 방해했다.
2건의 항목
기업이 설비에 돈을 쏟았다 줄였다 하는 자본지출 사이클이 무엇이고, 왜 AI 인프라 수요와 반도체 실적을 읽는 축이 되는지 짚습니다. 대형 클라우드 사업자들의 최근 투자 숫자로 지금 사이클이 어디쯤인지도 함께 살펴봅니다.
NVIDIA 매출의 절반 가까이가 소수 대형 클라우드의 지갑에서 나온다는 쏠림을 근거로, 이 회사의 단기 실적을 흔드는 진짜 변수는 칩 경쟁력이 아니라 고객의 투자 계획이라는 주장을 짚습니다.
8건의 항목
네트워크 통신 규칙 규칙은 필요하다.
개체 지향 프로그래밍을 배우는데 있어 알아두면 좋은 내용들을 정리해본다.
Proxy 패턴은 뭘까? 서버에서 들었던 것 같은데, 패턴으로는 어떤 의미가 있는지 알아보자.
Encapsulate Variable, 변수 캡슐화하기를 알아보자.
Introduce Parameter Object, 매개변수 객체 만들기에 대해 알아보자.
Encapsulate Record, 레코드 캡슐화 하기를 알아보자.
Encapsulate Collection, 컬렉션 캡슐화 하기를 알아보자.
이전 장들에서는 Code, Code Block, 함수 구현 방법, 함수들의 연관 방식을 알아보았지만, 이번에는 조금더 고차원의 얘기를 할까 한다. 클래스 체계 Java Convention에 따르면 가장 먼저 변수 목록이 나온다.
1건의 항목
네이버의 대한민국 지도 서비스 중 iOS Application 제작 팀에서 근무 장소 및 교통 수단에 대응되는 다양한 타입의 데이터를 유지보수가 편하도록 다루는 작업 진행 레거시화 된 코드에 대해 모듈화 .
1건의 항목
Request-Line OR Status-Line [Header CRLF] CRLF [ Body ] Start Line Request Response Header 헤더 중 X가 붙은 경우, 커스텀 헤더임 Pragma: 옛날 캐시 정책 Deprecated Cache-Control: 캐시 정책인데, 기능이 추가된 것들 Connection: close, keep-alive 두 개의 옵션이 있음 Stateless Protocol HTTP는 상태가 없는 프로토콜이다.
2건의 항목
개요 한점에 대해 유일한 좌표를 부여하기 위한 체계 직교좌표계 (x, y, z) 구면좌표계 (r \theta, \phi) 지리좌표계 (\lambda, \phi) 지표면에만 있다고 가정하고 위, 경도로만 표현하는 것 지심좌표계 (x, y, z) 지표면 안으로 들어간다고 가정했을 때 필요 좌표계 EPSG 무지하게 많은 좌표계들을 한번에 알아볼 수 있는 코드 좌표계 변환 방식 측지계가 같으면 쉽게 변환이 가능 즉 준거타원체와 기준점이 같으면 하지만 측지계가 다르면 복잡한 로직이 필요 즉, 준거타원체도 다르고, 기준점도 다르면 3-Para...
1건의 항목
level2 : case when을 사용하는 문제이다. 생각 쿼리로 가져온 table에 대해서 추출을 진행할 때, 사용할 수 있는 테크닉이다. 이건 예제로 보는 것이 정확하다.
5건의 항목
Monad에 대한 것에 대해 탐구합니다.
수학에서의 범주론에 대해 알아보자. 왜 Monad는 이런 형태가 된 것인가? Monad, Category Theory Monad라는 단어는 프로그래밍에서 태동된 단어가 아니다. 수학에서의 범주론에서 유래된 단어이다.
범주론에서의 카테고리에 대해 알아보자. Category Theory 카테고리에 대한 이론 Category 요소와 요소의 관계까지를 포함한 집합같은 개념 Object와 Morphisms로 구성된다.
범주론에서의 카테고리에 대해 알아보자. 프로그래밍과 무슨 관계가 있는가? 왜 이런 메타수학에서 사용되는 개념이 프로그래밍에서 사용될까? 프로그래밍에서 공통적으로 나타내는 개념들 사이의 관계가 카테고리의 조건에 딱 들어맞는다. 모든 프로그래밍 언어에는 타입이 있다.
모나드(Monad)의 항등성(identity law)은 함수형 프로그래밍에서 모나드가 가져야 하는 중요한 특성 중 하나입니다. 모나드는 데이터 형식을 다루는 추상적인 개념으로, 값을 감싸거나 조작하는 데 사용됩니다.
7건의 항목
Monad에 대한 것에 대해 탐구합니다.
수학에서의 범주론에 대해 알아보자. 왜 Monad는 이런 형태가 된 것인가? Monad, Category Theory Monad라는 단어는 프로그래밍에서 태동된 단어가 아니다. 수학에서의 범주론에서 유래된 단어이다.
범주론에서의 카테고리에 대해 알아보자. Category Theory 카테고리에 대한 이론 Category 요소와 요소의 관계까지를 포함한 집합같은 개념 Object와 Morphisms로 구성된다.
범주론에서의 카테고리에 대해 알아보자. 프로그래밍과 무슨 관계가 있는가? 왜 이런 메타수학에서 사용되는 개념이 프로그래밍에서 사용될까? 프로그래밍에서 공통적으로 나타내는 개념들 사이의 관계가 카테고리의 조건에 딱 들어맞는다. 모든 프로그래밍 언어에는 타입이 있다.
실제 Functor는 무엇을 의미하는가? Functor 카테고리 사이에서의 사상(morphisms) 동질의 대상들을 규정하면, 그 사이를 비교하거나 대응하기 위한 수단도 필요하다. 집합의 경우 집합 사이의 함수가 그것이다.
모나드(Monad)의 항등성(identity law)은 함수형 프로그래밍에서 모나드가 가져야 하는 중요한 특성 중 하나입니다. 모나드는 데이터 형식을 다루는 추상적인 개념으로, 값을 감싸거나 조작하는 데 사용됩니다.
간단한? 설명 “자연성(naturality)“은 수학에서 함수나 변환자(transformer) 사이의 관계가 다른 수학적인 구조를 변형해도 변환의 특성을 유지하는 것을 의미합니다. 이러한 관계는 수학적인 구조 간에 일관성을 유지하며 변환을 적용할 수 있도록 해줍니다.
1건의 항목
코시-리만(Cauchy-Riemann) 방정식은 복소 함수(Complex Function)에 대한 미분가능성(해석성)을 조사하는 데 사용되는 중요한 수학적 도구입니다.
1건의 항목
조건부 확률 P(A \mid B) = \frac{P(A \cap B)}{P(B)} 조건부 확률 P(A \mid B) 는 사건 B 가 발생했을 때 사건 A 가 발생할 확률 여기서 P(A \mid B) 는 “B가 주어졌을 때 A의 확률” P(A \mid B) : 사건 B 가 발생했을 때 사건 A 가 발생할 확률 P(A \cap B) : 사건 A 와 사건 B 가 동시에 발생할 확률 (즉, A 와 B 의 교집합의 확률) P(B) : 사건 B 가 발생할 확률 여기서, P(B) 는 B 가 발생할 확률이 0이 아닌 경우에만 정의.
1건의 항목
DevOps란? 서비스 개발과 운영을 통합 왜 필요할까? 개발과 운영이 분리된 전통적 방식 개발팀, 운영팀 분리 되어 있음 개발팀에서 배포 파일을 운영팀에 전달 운영팀에서 배포 운영팀은 모니터링을 통해 개발팀에게 피드백 전달 이렇게 되는 경우 배포사이 개발팀과 운영팀의 커뮤니케이션 비용 증가 문제가 발생했을 때 현상/원인 파악이 어려움 서비스 개발자는 서비스 코드를 잘 알지만 운영 환경에 익숙하지 않음 시스템 운영자는 운영 환경에 익숙하지만 서비스 코드를 잘 모름 긴 주기 배포 하지만 각 분야 전문가가 배치되어 있어 보다 안전하다고...
1건의 항목
어떠한 모집단이더라도, 모집단의 평균이 \mu 이고, 분산이 \sigma^2 일 때, 임의추출된 표본의 표본 평균 \bar X 는 표본의 크기가 클 경우 정규분포를 따른다.
4건의 항목
GoF의 디자인 패턴, 책임연쇄 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
책임 연쇄 패턴은 무엇일까? 위키에 실린 예시 Chain-of-responsibility pattern @FunctionalInterface public interface Logger { public enum LogLevel { INFO, DEBUG, WARNING, ERROR, FUNCTIONAL_MESSAGE, FUNCTIONAL_ERROR; public static LogLevel[] all() { return values(); } } abstract void message(String msg, LogLevel severity...
앞 글에서 간단하게 소개했지만 Responder Chain은 간단하게 알고 넘어갈 만한 것이 아니다.
ViewController는 계층을 이루면서 구성된다. 그 중 대표적으로 알려진 것이 NavigationController, TabBarController 이다.
1건의 항목
역전파 이 부분을 이해하기 전에, Deep Learning에 대한 전반적인 과정을 이해하는 것이 좋다. 앞부분에서는 cost 함수를 정의하고 이를 학습하는데 있어 gradient descent 방법을 활용했다.
1건의 항목
인쇄물 생성 중인 3D 프린터 내부의 공간을 의미한다. 온도를 유지, 인쇄물의 건조도를 제어, 인쇄물의 안정성과 질을 향상 일부 인쇄 재료(예: ABS)의 경우 챔버 내부의 온도와 습도를 조절하여 인쇄물의 수축을 방지하고, 더 많은 세부 사항을 유지할 수 있다.
3건의 항목
Primitive Types char short int long float double long double unsigned, signed 부호 여부에 따라 자료형 앞에 적어준다.
자료형 프로그램에서 선언된 변수들이 기억 공간에서 어떻게 저장되고 처리되어야 할지, 컴파일러에게 알려줌 종류 정수형 실수형 문자형 사용자 정의 자료형 정수형 소수점이 없는 숫자 음의 정수, 0 , 양의 정수 오버플로우(overflow) 데이터 허용 범위를 넘는 값을 변수에 저장할 때, 의도한 값이 아닌 다른 값이 저장되는 것 #include <stdio.h> int main(void) { short a = 32767, b=2, c; unsigned short d; c = a+b; d = a+b; printf("c...
문자배열 char 형 문자를 여러 개 모아놓은 문자 집합 문자 : 작은 따옴표 ’ ’ 문자열 : 큰 따옴표 ” ” ‘\0’ (NULL) : 문자열 끝에 항상 문자코드 ‘\0’을 덧붙여야 함 char str[5] = {'A', 'B', 'C', 'D', '\0'}; // 옳은 선언 char str[4] = {'A', 'B', 'C', 'D'} // 잘못된 선언 char str...
2건의 항목
설치 brew install docker mac 용 도커 설치하기 Docker image download docker pull hugojuhel/notebook Docker Hub 에서 원하는 docker 이미지를 다운로드 혹은 아래 예제와 같이 명령어로 다운받을 수도 있음 사용한 이미지 Docker image 확인 docker images 설치한 이미지들을 볼 수 있다.
Apple에서 공개한 API인 Combine. 이제 Rx에서 Combine으로 많이 넘어간다고 한다. 무엇을 하는 것인지, 왜 좋은지, 바로 써먹기 위한 팁은 무엇이 있는지 알아본다.
1건의 항목
예외 처리를 제대로 하지 못하는 이유는 무엇일까? 예외 처리를 제대로 하지 못하는 이유 과거에 주류이던 예외 처리 방식은 지속적으로 작동이 보장되어야 하는 프로그램에 대해 “하드웨어가 멈추는 크래시”가 무서워서 그랬을 수 있다.
1건의 항목
실수가 2번이상 반복되면 실력이다. UI 개발시 한방에 끝나기 위한 Edge case를 정리하자. 수시로 업데이트 한다.
1건의 항목
git checkout refs/tags/5.23.0\(2\) 이렇게 써줘야 함 (를 알아먹지 못하기 때문 .
3건의 항목
소수설 주창중 하나인 eXtreme Programming에 대해 알아보자.
인수 테스트는 무엇일까? 시기 상조의 정밀도 불확실성의 원칙 서류와 실제 시스템의 동작은 다르다. 사업부는 요구했던 내용이 실제 시스템에서 돌아가는 모습과 다르다는 것을 깨닫는다. 요구사항이 정밀해질수록 최종 구현된 시스템과 초기 요구사항의 차이는 벌어진다.
DevOps란? 서비스 개발과 운영을 통합 왜 필요할까? 개발과 운영이 분리된 전통적 방식 개발팀, 운영팀 분리 되어 있음 개발팀에서 배포 파일을 운영팀에 전달 운영팀에서 배포 운영팀은 모니터링을 통해 개발팀에게 피드백 전달 이렇게 되는 경우 배포사이 개발팀과 운영팀의 커뮤니케이션 비용 증가 문제가 발생했을 때 현상/원인 파악이 어려움 서비스 개발자는 서비스 코드를 잘 알지만 운영 환경에 익숙하지 않음 시스템 운영자는 운영 환경에 익숙하지만 서비스 코드를 잘 모름 긴 주기 배포 하지만 각 분야 전문가가 배치되어 있어 보다 안전하다고...
1건의 항목
왜 C를 배워야 하는가? C 표준 C89/ANSI-C 최초의 C 표준 (89년) 여전히 많은 코드가 이 표준을 사용 임베디드 시스템 이걸 가장 많이 살펴볼 것임 C99 많은 내용 추가 인라인 함수 새로운 헤더파일들 새로운 자료형 한 줄짜리 주석 유연한 배열 멤버 가변 길이 배열 보다 안전한 I/O 함수 C11 C99 대체 유니코드 지원 이름 없는 구조체 및 공용체 제네릭 표현식 표준화된 멀티스레딩 지원 C18 신규 기능 없음 C11의 결함만 수정 include? 현대에서 많이 사용하는 import와 같은 구문 다른 파일에 구현된 함...
13건의 항목 처음 10개의 태그
Combine Functions into Class, 여러 함수를 클래스로 묶기를 알아보자.
이전 장들에서는 Code, Code Block, 함수 구현 방법, 함수들의 연관 방식을 알아보았지만, 이번에는 조금더 고차원의 얘기를 할까 한다. 클래스 체계 Java Convention에 따르면 가장 먼저 변수 목록이 나온다.
창발성 단순한 결합이 복잡한 결과를 나타내는 것을 뉴런 하나만으로 의미가 있을까? 뉴런이 모여 어떠한 인식을 하기 위해서는 수십억개의 뉴련이 상호작용해야 한다. 즉, 미시적인 부분의 각각의 특성만으로는 설명할 수 없는 전체로서 나타나는 복잡한 현상을 말한다.
What is Class? 우리는 클래스라는 개념을 왜 도입했을까? C++에서 함수가 태어나게 된 이유도 분리해서 관리하기 위함이었다.
Pass by Reference 내가 클래스를 만들고, 그 클래스를 바탕으로 객체를 만들었다. 이때, 이 클래스에 연결되어 있는, 함수를 메서드라 했다.
static Members 때때로는, 클래스의 객체들이 모두 공유하는 변수를 가지는 것이 용이하다. 전역변수와는 조금 다른 점이 있다 공통점 : 특정 함수나 클래스가 끝나고 나서 변수가 사라지지 않는다. 차이점 : 특정 클래스에 구속되어 있다.
Inherence 전체적인 구조 상속이 필요한 이유 상속은 매우 유용하다. 13. Class & Object & Constructor 글을 다시 기억해보자.
클래스는 c++에서 자세히 다뤘으므로, 해당 내용에 대해 파이썬 문법만 알아보도록 하자.
Swift는 객체의 느낌으로 사용하는 3개의 개체가 있다. struct, class, enumeration이 그것이다. struct는 apple에서 권장하고, 실제로도 대체하는 것이 좋다고 생각되는 자료구조이고, enum의 경우 다른 언어보다 기능이 많이 추가되었다.
static 변수 및 함수는 인스턴스를 생성하지 않고 접근하기 위해 사용한다. swift에서는 어디서 관리하는 것이 좋을까? swift에서 사용하는 Method가 궁금하다면 해당글을 읽고 오자.
1건의 항목
UML에서 아직 그래도 많이 쓰이는 Class Diagram에 대해 정리해보자.
3건의 항목
# Lab 5 Logistic Regression Classifier import tensorflow as tf tf.set_random_seed(777) # for reproducibility x_data = [[1, 2], [2, 3], [3, 1], [4, 3], [5, 3], [6, 2]] y_data = [[0], [0], [0], [1], [1], [1]] # placeholders for a tensor that will be always fed.
Logistic Regression 의 그래프 함수를 통과하기 전의 값을 Score(Logit) 이라 부른다. 통과한 난 뒤의 값은 확률이다.
MNIST Dataset # Lab 7 Learning rate and Evaluation import tensorflow as tf import matplotlib.pyplot as plt import random tf.set_random_seed(777) # for reproducibility # 텐서플로우에서 데이터 받아오기 from tensorflow.examples.tutorials.mnist import input_data # Check out www.tensorflow.org/get_started/mnist/beginn...
4건의 항목
다시 핵심만 간결하게 복기하기 위한 목적으로 정리하기 때문에, 요약하는 방식으로 글을 작성한다. 역/식자의 말 절대적이라 믿으면 안된다 개선의 여지가 있을 것이라 생각해야 한다. 이 요소들을 소개하는 이유는 팀/공동체에서 서로 동의하는 합리적인 원칙을 세우기 위함이다.
형식을 맞추는 목적 코드 형식은 의사소통의 일환이다. 오랜 시간이 지나 원래 코드의 흔적을 찾아보기 어려울 정도로 변경되어도 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다.
복잡성은 죽음이다. 개발자에게 생기를 앗아가며, 제품을 계획하고 제작하고 테스트하기 어렵게 만든다. - 레이 오지, 마이크로소프트 최고 기술 책임자(CTO) 도시를 세운다면? 도시가 돌아가는 이유는, 각 분야를 담당하는 팀이 있기 때문이다.
해당 부분은 너무 코드가 많아, 이전 상태와 이후 상태를 놓고 그 사이에서 저자가 어떠한 흐름으로 이를 처리했는지 간략하게 정리하는 것을 목적으로 한다. Intro 해당 부분에서는 출발은 좋았으나, 확장서잉 부족했던 모듈을 소개한다.
1건의 항목
프로란 무엇일까? 내가 생각한 프로와 저자의 프로는 무엇이 다를까? Clean Coder 소프트웨어 개발자로서 전설로 알려진 로버트 C. 마틴의 저서이다. 프로란 무엇인지, 그리고 프로로서 어떻게 생각하고 행동해야 하는지에 대해 적혀있다.
1건의 항목
운영체제에 대한 정의, 역할에 대해 알아본다. 운영체제는 사용자가 컴퓨터를 사용하기 위해 필요한 소프트웨어이다. 일반적으로 사용하는 모든 프로그램은 운영체제에서 그 자원을 관리한다. 목적 운영체제를 사용하는 가장 큰 목적은 하드웨어의 관리이다.
1건의 항목
비트 0, 1 비트가 모여 데이터 구성 비트를 주고 받는 것이 통신의 본질 바이트 = 8비트 워드 = 1바이트가 2개 (16비트) 데이터가 어떻게 전기 신호로 전달? 데이터가 전달되지 않을 때 전기적 신호가 존재 Clock 신호 CPU는 해당 신호에 맞춰 일을 처리한다.
1건의 항목
Lambda function 함수 안에서 부를 수 있는 Local function! 사실 정체는 객체이지만, 우리는 함수의 개념으로 갖다 쓴다! Usage [closure](입력 매개변수)->출력 type{내용} Local function 이기 때문에 만들어졌다가 리턴 후 사라진다.
3건의 항목
클라우드 사업자조차 고객 VM의 메모리를 들여다볼 수 없게 만드는 기밀 컴퓨팅이 무엇인지, AWS의 새 발표와 사용자 가이드로 그 증명(attestation) 구조를 짚습니다.
전자상거래 회사로 아는 Amazon이 왜 AI 인프라 이야기의 큰손으로 계속 등장하는지 짚습니다. NVIDIA의 최대 고객군이면서 동시에 자체 칩으로 경쟁하는 이중 역할, 그리고 번 현금 대부분을 데이터센터에 쏟는 지출 구조를 어떤 축으로 읽어야 하는지 살펴봅니다.
On premise 서버를 운영하기 위해 서버를 사내 랙에 설치하거나 데이터 센터에 두는 방식 Cloud 월 정액 기반으로 사용한 만큼 요금을 지불하는 방식 선택 방법 시스템 자원 사용량을 근간으로 가격을 책정하기 때문에, 잘생각 하지만 시스템 설비를 책정할 때, 최대 용량을 기준으로 하기 때문에 비효율적 구 분클라우드온프라미스 (기존 서버 구축방식)초기도입비용월정액기반으로 사용한만큼 요금을 지불일회성 비용으로 구매시 많은 비용예산이 소요됨인력운영비시스템 엔지니어의 업무 감소시스템 엔지니어의 업무 증대 ( 서버 운영 및 관리/ 전산...
1건의 항목
형식을 맞추는 목적 코드 형식은 의사소통의 일환이다. 오랜 시간이 지나 원래 코드의 흔적을 찾아보기 어려울 정도로 변경되어도 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다.
1건의 항목
이제 리팩터링 전반에 적용되는 원칙 몇 가지를 살펴보자. 리팩터링 정의 리팩터링이라는 개발 용어는 굉장히 두루뭉실한 의미로 통용된다. (많은 개발 용어가 그렇다) 하지만 이를 엄격하게 정의해야 유용하다.
1건의 항목
앱스토어에 실제 앱을 배포해본 사람은 알겠지만, 인증서, provisioning과 같은 개념은 생소하다. 정확하게 알아보자. 원칙 Apple 만이 자신들의 하드웨어(iOS, iPadOS, MacOS etc)에 특정 소프트웨어가 동작하도록 할 수 있다.
1건의 항목
데이터의 두 변수간 선형관계를 나타내는 척도에 대해서 알아본다. 선형관계 두 변수의 관계를 알아보는 것은 매우 중요하다. 어떠한 연관성을 통하여 유의미한 정보를 이끌어 낼 수 있기 때문이다. 이러한 선형관계를 알아내는 척도는 3가지 정도가 알려져 있다.
3건의 항목
모듈 내부의 요소들이 서로 함께 속해있는 정도 결합도와 반대되는 개념 종류 (강한 순서로) 기능적응집도 모듈 내부의 모든 기능이 단일 목적 수행 모든 경우가 이렇다면 가장 이상적 순차적응집도 모듈내에서의 결과를 다른 활동에서 사용하는 경우 교환적응집도 입력과 출력이 동일하나 다른 기능을 수행하는 활동들을 모음 좋지 않나라고 생각할 수 있으나, 단순히 입출력만 같기 때문에 애매함 절차적응집도 다수의 관련 기능을 가질 때, 모듈 구성 요소들이 그 기능을 순차적으로 수행 시간적응집도 특정 시간에 처리되어야 할 활동들을 한 모듈에서 처리...
의존성과 결합도에 대한 정확한 의미를 이해해본다. 의존성(Dependency) A 모듈이 동작하려면 B 모듈이 필요한 경우 OO에서 모듈 == 클래스 클래스 A가 클래스 B에 의존 의존성이 있으면 잘못된 OO 설계다? (code smell) 잘못된 말이다.
이전 장들에서는 Code, Code Block, 함수 구현 방법, 함수들의 연관 방식을 알아보았지만, 이번에는 조금더 고차원의 얘기를 할까 한다. 클래스 체계 Java Convention에 따르면 가장 먼저 변수 목록이 나온다.
1건의 항목
사람이 싫더라도 우리는 그들과 일하는 방법을 배워야 한다. 프로그래머 vs 보통 사람들 프로그래머는 사람들과 같이 일하는게 좋아서 된게 아니다. 일반적으로 사람들 사이의 관계는 뒤죽박죽이고 예측하기 히믇ㄹ다. 우리는 예측한 대로 움직일 때가 즐겁다.
3건의 항목
문자열 처리는 파이썬으로 find() isalpha() isalnum() for ~ in list, string으로 하나씩 꺼낼 수 있다. ~ in list, string으로만 하면 t/f 반환한다.
Encapsulate Collection, 컬렉션 캡슐화 하기를 알아보자.
Value Type 다른 변수에 대입하면 복사됨 argument로 넘겨도 복사됨 argument로 collection을 넘겨서 변화주면 원하는 결과를 얻을 수 없음 Objective-C의 경우 가능 Array 동일한 Type의 값을 저장할 수 있는 Ordered List 동일한 값이 다른 위치에서 반복적으로 낭로 수 있음 Foundation의 NSArray와 bridge 표현 let array: Array<SomeType>() let array: [SomeType] let array = [Int]() let array ...
5건의 항목
실버2 : 조합 문제이다. 풀이1 기본적인 조합 문제이다.
풀이 처음에는 각각의 order의 메뉴와 다음 메뉴와의 교집합을 사용해서 풀려고 했으나 문제는, 결국 몇번 시켰는지 알아내야 한다는 점에서 막혔다.
풀이 그냥 막 풀었다. 컨디션이 좋지 않다. 이전에 풀었던게 더 깔끔하더라. 그리고 같은 부분에서 틀렸다. 멍청해.
문자열 처리는 파이썬으로 find() isalpha() isalnum() for ~ in list, string으로 하나씩 꺼낼 수 있다. ~ in list, string으로만 하면 t/f 반환한다.
스위프트에서 제공하지 않는 Combination, Permutation 구현이다.
7건의 항목
Combine이 무엇일까? Apple이 설명하는 것을 들어보자. What is Combine 이벤트 처리 연산자를 결헙하여 비동기 이벤트를 처리하는 방법 일단 비동기 이벤트가 무엇이 있는지부터 알아보자.
Apple에서 공개한 API인 Combine. 이제 Rx에서 Combine으로 많이 넘어간다고 한다. 무엇을 하는 것인지, 왜 좋은지, 바로 써먹기 위한 팁은 무엇이 있는지 알아본다.
Lagacy를 Combine 전환하면서 배웠던 Tip들을 적어본다. Notification Cetner에 걸었던 Observer를 Publisher로 전환하는 것에 대한 글이다.
Combine에 대해서 실제 사용하다 보니, 이게 도대체 어떤 방식으로 이루어지는 지 궁금했다. 실제 코드를 보지 않으면 명확해지지 않을 것 같아 정리한다.
Promise, Rx 등 비동기 처리를 하기 위한 방법은 많다. 이를 배워보기 이전에, 왜 그러한 개념이 나왔는지, 어떠한 방식으로 개선해왔는지를 코드를 고쳐보면서 이해해보는 것이 이 포스팅의 목표이다. 최대한 개조식으로 적으려 노력했다.
두번째 글에서는 이해한 RxSwift의 기본 개념을 바탕으로 자주 사용하는 메서드를 알아본다. 무리하게 기억할 필요는 없고, 이렇게 사전 제작된 함수들이 많고, 잘 사용할 경우 유용하다는 사실까지만 이해해도 맛보기로는 충분할 듯 하다.
맛보기의 마지막으로, 간단하게 프로젝트에 적용해보자. MVVM과 찰떡인 RxSwift를 적용해보면서 아키텍쳐와 사용방법에 대해 익숙해져보자. 프로젝트 개요 버튼을 누르면 값이 변경되고 아래에 총 금액이 나타난다.
1건의 항목
GoF의 디자인 패턴, 명령 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다. 핵심 요약 하나의 명령을 객체화한 패턴 객체는 전달할 수 있고, 보관할 수 있다. 즉, 명령(기능)을 전달하고 보관할 수 있게 된다.
4건의 항목
냄새나면 당장 갈아라. 어떻게 하는지에 대해서 지금까지 배웠다. 하지만, “언제” 시작하고 그만할지를 판단하는 것은 또 다른 얘기다. 어떤 “냄새”를 맡았을 때 손을 대야할까? 기이한 이름 이름으로 이게 뭐하는 것인지 딱 볼 수 있게 작성해야 한다.
Intro 나쁜 코드에 주석을 달지마라. 새로 짜라. : 브라이언 W. 커니헨, P.J. 플라우거 주석은 필요악이다. 프로그래밍 언어 자체가 표현력이 풍부하다면, 혹은 우리가 치밀하게 의도를 잘 표현했다면 주석은 전혀 필요하지 않다.
프로그램 실행 과정 graph LR A[원시함수 작성] --> |Compiler|B(오브젝트 파일 생성) B-->|Linker|C[실행파일 생성] Compiler : 고급 언어로 작성된 파일을 기계어로 번역해줌.
Function Design Recipe (FDR) 우리는 파이썬에서 제공하는 다양한 내장 함수들에 대한 설명을 보고싶을때, help() 함수를 통해 정보를 확인할 수 있었다.
2건의 항목
언제 “예”라고 말해야 하는가? 약속을 뜻하는 말 말하고 진심으로 실행하라. Commitment(약속)은 세단계로 구분된다. 하겠다고 말한다. 진심을 담는다. 실제로 실행한다. 하지만 이를 실제로 지키기는 어렵다.
우리가 가장 못하는 행위인 추정에 대해 알아보자. 추정 가장 단순하면서도 가장 두려운 행위다. 큰 사업가치가 추정에 따라 좌지우지된다. 사업부와 개발자를 벌어지게 만드는 제 1요소이다. 불신감의 원인은 대부분 추정이다.
1건의 항목
네트워크 통신 규칙 규칙은 필요하다.
2건의 항목
자주 사용하는 고차함수들에 대해서 이해해보자.map, flatMap과 같은 경우는 여러가지가 존재하는데, 각각의 활용 방법에 대해서 알아보자.
dictionary에 value를 넣는데 nil인 경우는 빼고 싶다.
2건의 항목
자주 사용하는 고차함수들에 대해서 이해해보자.map, flatMap과 같은 경우는 여러가지가 존재하는데, 각각의 활용 방법에 대해서 알아보자.
dictionary에 value를 넣는데 nil인 경우는 빼고 싶다.
2건의 항목
앞으로 그림에서 나오는 Swift version은 가상이다. 이해를 위해서 가상으로 적었다.
Module Stability는 무엇일까? 공식문서를 통해 알아보자. Module Swift에서 Module은 무엇을 말할까? Swift는 접근 제어의 기준으로 Module을 사용한다. 코드 배포의 단위로써 import 키워드를 통해 사용하는 것들이 모두 모듈이다.
4건의 항목
컴파일러 소스코드를 타겟 언어와 의미론적으로 동등하게 번역해주는 프로그램 어떠한 언어에서 기계어로만 변환하는 것을 부르지 않음 예시 C 언어 컴파일러 (기계어로 변환) Silicon Compiler 논리 게이트 연산을 수행할 때 쉽게하기 위해 해주는 녀석 OS Command language 명령어 커맨드를 어휘분석, 구분 분석을 통해서 OS가 이해하는 언어로 변환함 Query language 쿼리문 자체를 데이터 베이스가 이해하는 언어로 변경해줌 컴파일러 언어 한번 컴파일이 오래걸림 하지만 컴파일 하고나면 실행파일이 생성되기 때문에...
운영체제에서 중요한 부분인 메모리 관리 기능에 대해 알아보자. 메모리는 CPU 자원만큼 컴퓨터를 사용하는데 매우 중요한 자원 중 하나이다.
실제 컴파일, 링킹이 끝난 뒤의 결과물에 대해서는 잘 모르는 것 같다. 실행 파일은 어떻게 구성되어 있는 걸까? 우리가 사용하는 프로그램들은, 바이너리화되어 있는 파일의 형태로 존재한다. 그런데, 이 실행파일의 형태는 OS에 따라 다른 형태로 존재한다.
Xcode에서 디버깅하는 방법을 알아보자.
1건의 항목
소스코드가 컴파일 과정을 통해 기계어로 변환되어 실행가능한 프로그램이 되는 과정을 의미 컴파일 에러는 소스코드가 컴파일 되는 과정 중에 발생하는 Syntax error, 파일 참조 오류 등과 같은 문제들로 인해 컴파일이 방해되어 발생하는 오류를 말한다.
5건의 항목
전체 과정 개발자가 소스코드를 작성한다. (Ts, Html, css, sass, scss etc) Babel을 통해 모든 브라우저에서 호환 가능한 문법의 코드로 변환한다. 소스코드를 하나로 묶는 Bundling을 진행한다. 원격 저장소에 Deploy한다.
컴파일러 소스코드를 타겟 언어와 의미론적으로 동등하게 번역해주는 프로그램 어떠한 언어에서 기계어로만 변환하는 것을 부르지 않음 예시 C 언어 컴파일러 (기계어로 변환) Silicon Compiler 논리 게이트 연산을 수행할 때 쉽게하기 위해 해주는 녀석 OS Command language 명령어 커맨드를 어휘분석, 구분 분석을 통해서 OS가 이해하는 언어로 변환함 Query language 쿼리문 자체를 데이터 베이스가 이해하는 언어로 변경해줌 컴파일러 언어 한번 컴파일이 오래걸림 하지만 컴파일 하고나면 실행파일이 생성되기 때문에...
전체 과정 개발자가 소스코드를 작성한다. (Ts, Html, css, sass, scss etc) Babel을 통해 모든 브라우저에서 호환 가능한 문법의 코드로 변환한다. 소스코드를 하나로 묶는 Bundling을 진행한다. 원격 저장소에 Deploy한다.
운영체제에서 중요한 부분인 메모리 관리 기능에 대해 알아보자. 메모리는 CPU 자원만큼 컴퓨터를 사용하는데 매우 중요한 자원 중 하나이다.
Xcode에서 디버깅하는 방법을 알아보자.
1건의 항목
Completion은 main에서 호출해주는 것이 좋다. 이유 api를 호출하고, 결과가 도착한 경우 completion을 호출하는 함수가 있다고 하자.
1건의 항목
GoF의 디자인 패턴, 복합체 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다. 핵심 요약 단일체와 집합체를 하나의 동일한 개념으로 처리하기 위한 패턴 폴더 구조, View 구조 등이 예가 될 수 있겠다.
4건의 항목
GOF의 디자인 패턴 1장, 서론의 두번째를 정리해봅니다.
함수형 프로그래밍에 대해서 공부해보면 꼭 나오는 용어들이 있다. 일급 시민, 함수 합성, 커링 등. 오늘은 이러한 단어들에 대해서 이해해보자. First Class Function function은.
더 큰 기능을 가진 객체나 클래스를 작은 객체나 클래스로 조합하여 새로운 기능을 만드는 프로그래밍 기법 Composition에는 다음과 같은 주요 개념이 포함됩니다: Has-A 관계: 특정 객체가 다른 객체를 “사용”한다는 의미를 가진다.
상속과 컴포지션. 무엇을 선택할지 어떻게 판단해야 하는가? OO에서 재사용성을 중요시하는 이유 Don’t reinvent the wheel! 바퀴는 이미 동작과 상태가 명확한 물체 설계, 구현, 테스팅까지 모두 마친 물체 이걸 가지고 다른 유용한 물체를 만들자.
2건의 항목
JPG(Joint Photographic Experts Group) 정의: 정지 화상을 위해서 만들어진 손실 압축 방법 표준 핵심: 전체적 구조 손실보다 디테일 손실에 둔감하다는 점을 통해 압축 원리: 이미지의 고주파 성분의 일부를 제거함.
PNG(Portable Network Graphics) 핵심: 비손실 압축 방법 원리 Huffman coding를 통한 압축 그렇기 때문에 반복되는 이미지가 등장할 경우 PNG가 보다 효과적 장점: 투명도 사용가능, 비손실 압축, 32비트 트루컬러, 크게 색상 변화가 크지 않은 이미지의 경우 사용하는 것이 좋다.
1건의 항목
iOS 앱개발에서 화면을 담당한다면 피할 수 없는 autolayout! 공식 문서를 읽어보며 정리해보자.
1건의 항목
최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. PC 조립 과정 보며 구조 이해하기 컴퓨터 하드웨어 구성 요약 다나와 다나와 이곳에 가면 컴퓨터 용어에 대한 간단한 설명들을 쉽게 알 수 있다. 컴퓨터란? CPU가 가장 중요하다.
4건의 항목
컴퓨터가 모든 것을 숫자로 다루는 방식을 알아보자. 최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. 컴퓨터로 글자를 나타내는 방법 ASCII Code 숫자와 글자에 대한 함수관계를 정의한다.
최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. PC 조립 과정 보며 구조 이해하기 컴퓨터 하드웨어 구성 요약 다나와 다나와 이곳에 가면 컴퓨터 용어에 대한 간단한 설명들을 쉽게 알 수 있다. 컴퓨터란? CPU가 가장 중요하다.
기억 장치의 동작방법에 대해 이해해보자. 최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자.
운영 체제가 하는 일을 간단하게 알아보자. 최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. 운영체제가 하는 일 접근 제어 + 동기화 + 관리 전산 자원을 관리한다. 대표적인 전산 자원은 CPU, RAM 등이 있다.
19건의 항목 처음 10개의 태그
Descripter 이미지를 비교하기 위해 동일한 방법을 통해 하나의 비교 대상으로 만드는 것 두 가지 이미지가 있다. 이 두가지 이미지가 비슷한지 아닌지를 구분하기 위해 만든 것이 descripter이다.
Computer Vision의 Task 이중 Object Detection에 해당하는 문제이다. R-CNN region proposal을 진행한다. CNN에 각각 넣는다.
핵심 아이디어 입력 이미지의 크기나 비율에 관계없이 CNN 학습은 불가한가? Fast R-CNN으로 넘어가기전 상당히 많은 아이디어를 가져온 논문이다.
핵심 아이디어 Feature Extraction, classification, bounding box regression까지 한번에 학습할 수 있는 모델을 만들자! Fast R-CNN은 이전 SSP Net이 가지는 한계점을 극복하는 시도에서 출발한다.
핵심 아이디어 Region Proposal도 Network안에 포함시키자! Faster R-CNN의 핵심 아이디어는 Resion Proposal Network(이하 RPN)이다.
Task Segmentation semantic segmentation은 이미지 내에 있는 물체들을 의미 있는 단위로 분할해내는 것이다. 좀 더 구체적으로 이야기하면, 이미지의 각 픽셀이 어느 클래스에 속하는지 예측하는 것이다.
개요 Noh, H., Hong, S., and Han, B. Learning Deconvolution Network for Semantic Segmentation. ICCV, 2015.
개요 앞서 알아본, FCN에서 발생하는 문제를 Dilated Convolution으로 해결하겠다는 논지이다.
개요 Pretrained model을 사용하거나 Transfer Learning 을 사용하는 모델들에 대해서 읽을 때 Backbone이 되는 CNN 모델들이 몇 개 있다.
개요 앞서 배운 Dilated Convolution(atrous convolution) 을 적극적으로 활용할 것을 제안하여 segmentation 을 해결하자는 논문이다.
16건의 항목 처음 10개의 태그
최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. PC 조립 과정 보며 구조 이해하기 컴퓨터 하드웨어 구성 요약 다나와 다나와 이곳에 가면 컴퓨터 용어에 대한 간단한 설명들을 쉽게 알 수 있다. 컴퓨터란? CPU가 가장 중요하다.
동시성과 깔끔한 코드는 양립하기 아주 어렵다. 그럼에도 불구하고, 동시성은 왜 필요할까? 객체는 처리의 추상화다. 스레드는 일정의 추상화다. - 제임스 O. 코플리엔 동시성이 필요한 이유? 동시성은 “무엇”과 “언제”의 Coupling을 없애는 전략이다.
여러 일을 여러 사람이 각자 동시에 하는 것 행위도 여러개, 주체도 여러개 가짜 병렬 (논리적 개념) 코어는 하나임에도 두개의 서로 다른 동작을 번갈아가며 처리하여 동시에 수행하는 것 “처럼” 보이는 것 소프트웨어 수준으로 처리 Thread, Actor 등 Reference Parallelism .
개념 특정 작업이 전역적으로 단일 스레드에서 실행되도록 보장하는 장치 우리는 @MainActor라는 키워드만 추가하게 되면 main thread에서 동작한다는 것을 보장할 수 있다.
WWDC 24의 Swift 6 migration guide를 정리해본다.
Data-race의 문제를 swift concurrency (compiler constraint)를 통해 해결하지 않고, 타 매커니즘을 통해 해결한 경우, 이에 대해 에러를 내뿜지 않도록 하는 키워드 swift concurrency는 compiler가 data-race에 대한 취약점을 파악할 수 있다는 점에서 유용하다.
동시성은 이제 프로그래밍에서 빼놓을 수 없는 요소가 되었다.
이제 우리는 동시성 프로그래밍을 할 수 있다! 필요한 내용들을 어느정도 배웠다고 할 수 있다. 하지만, 동시성 프로그래밍이 어려운 이유는 별도의 작업흐름으로 공유 데이터에 접근하면서 발생하기 때문이다.
Swift 5.5에서 소개된 Async/Await에 대해 공부해본다. 비동기 처리가 필요한 이유 thumbnail을 fetch하는 method가 있다고 하자.
What is AsyncSequence 용량이 좀 큰 csv 데이터를 받는다고 하자. 만약 해당 파일을 모두 받은 뒤에 데이터를 처리한다고 한다면, 오랜 시간 뒤에나 가능할 것이다. 여기서 asyncSequence를 사용하면 굉장히 반응성있는 결과를 낼 수 있다.
4건의 항목
Decompose Conditional, 조건문 분해하기를 알아보자.
Consolidate Conditional Expression, 조건식 통합하기를 알아보자.
Replace Nested Conditional With Guard Clauses, 중첩 조건문을 보호 구문으로 바꾸기를 알아보자.
Replace Conditional With Polymorphism, 조건부 로직을 다형성으로 바꾸기를 알아보자.
2건의 항목
확률에 대해 이해한다. 사건에 확률을 부여하는 방법 동전의 앞면이 나오는 것을 사건 A라 정의했을 때, P(A)를 구하는 방법에 대해 알아보자. 고전적 방법 단순히 1/2라 생각한다. 이 생각의 배경에는 앞면과 뒷면이 나오는 가능성이 동일하다 생각하고 부여한다.
조건부 확률 P(A \mid B) = \frac{P(A \cap B)}{P(B)} 조건부 확률 P(A \mid B) 는 사건 B 가 발생했을 때 사건 A 가 발생할 확률 여기서 P(A \mid B) 는 “B가 주어졌을 때 A의 확률” P(A \mid B) : 사건 B 가 발생했을 때 사건 A 가 발생할 확률 P(A \cap B) : 사건 A 와 사건 B 가 동시에 발생할 확률 (즉, A 와 B 의 교집합의 확률) P(B) : 사건 B 가 발생할 확률 여기서, P(B) 는 B 가 발생할 확률이 0이 아닌 경우에만 정의.
1건의 항목
통계적 추론에 대해 이해한다. 통계적 추론 표본이 갖고 있는 정보를 분석하여 모수에 관한 결론을 유도하고, 모수에 대한 가설의 옳고 그름을 판단하는 것 추정의 방법 모수를 추정하는 방법에 대해서 알아본다. 점 추정 모수를 추정하기 위해 하나의 값을 제안한다.
1건의 항목
클라우드 사업자조차 고객 VM의 메모리를 들여다볼 수 없게 만드는 기밀 컴퓨팅이 무엇인지, AWS의 새 발표와 사용자 가이드로 그 증명(attestation) 구조를 짚습니다.
1건의 항목
Target Xcode의 빌드를 통해 생성된 최종 Product Framework Application 등등 일반적으로 하나의 모듈 또는 앱을 의미한다. 보통 프로젝트 생성시 하나만 생성되나, 목적에 따라 하나의 프로젝트에 여러개의 Target을 생성할 수 있다.
1건의 항목
HTTP 메소드 종류 GET 요청이 캐시된다. 브라우저, 로봇이 임의로 요청이 가능하다.
1건의 항목
맥에서 아이폰 콘솔 로그 확인하기. 맨날 까먹어서 기억용으로 적어둔다. 방법 맥 앱 중에서 console.app을 실행한다. 아래 이미지에서 콘솔 로그를 보고 싶은 기기를 선택한다. 로그 메시지 필터를 걸어 확인한다.
2건의 항목
프로그램 실행 과정 graph LR A[원시함수 작성] --> |Compiler|B(오브젝트 파일 생성) B-->|Linker|C[실행파일 생성] Compiler : 고급 언어로 작성된 파일을 기계어로 번역해줌.
static 변수 및 함수는 인스턴스를 생성하지 않고 접근하기 위해 사용한다. swift에서는 어디서 관리하는 것이 좋을까? swift에서 사용하는 Method가 궁금하다면 해당글을 읽고 오자.
2건의 항목
iOS 앱개발에서 화면을 담당한다면 피할 수 없는 autolayout! 공식 문서를 읽어보며 정리해보자.
iOS 화면 업데이트는 어떻게 되는 걸까? draw, layoutIfNeeded, setNeedsLayout 등. 이해가 안가는 것들이 너무 많았다.
2건의 항목
What is Class? 우리는 클래스라는 개념을 왜 도입했을까? C++에서 함수가 태어나게 된 이유도 분리해서 관리하기 위함이었다.
클래스는 c++에서 자세히 다뤘으므로, 해당 내용에 대해 파이썬 문법만 알아보도록 하자.
2건의 항목
설치 brew install docker mac 용 도커 설치하기 Docker image download docker pull hugojuhel/notebook Docker Hub 에서 원하는 docker 이미지를 다운로드 혹은 아래 예제와 같이 명령어로 다운받을 수도 있음 사용한 이미지 Docker image 확인 docker images 설치한 이미지들을 볼 수 있다.
개념 개발자와 시스템 관리자가 컨테이너 기술을 사용하여 어플리케이션을 개발, 배포, 실행하기 위한 플랫폼 컨테이너 기술을 리눅스에서 사용되던 기술이다. 이 때, 이 기술을 사용하여 응용프로그램을 배포하는 것을 컨테이화 시킨 것이다.
1건의 항목
CDN? Content Delivery Network 곳곳에 분산되어 있는 서버 그룹을 말한다. 이를 사용하게 되면 인터넷 콘텐츠를 빠르게 전달할 수 있다.
1건의 항목
UIScrollView의 ContentInset, ContentOffset, ContentSize에 대해서 알아본다.
1건의 항목
UIScrollView의 ContentInset, ContentOffset, ContentSize에 대해서 알아본다.
3건의 항목
Do ~ While 일단 Do 안에 있는 명령문을 실행하고 나중에 while문의 조건식 비교 적어도 한번은 명령문을 처리함 마지막에 세미콜론(;)을 반드시 추가해야 함 조건식을 검사하는 while(조건식)은 C 문장으로 여기기 때문 #include <stdio.h> int main() { int sum = 0; int number = 0; printf("1에서 10까지 합을 구합니다.\n"); do { number++; sum += number; } while(number<10); printf(&q...
기존에 작업한 글이 있어 링크로 대체한다. 05. Control Flow 06. Loop Part. 01 07. Loop Part. 02 iomanip library 기본적으로 iostream 라이브러리로 출력을 하게되면, 왼쪽 정렬이다.
컴퓨터를 통하여 문제를 해결하는 가장 중요한 이유 중에는 계속적으로 반복하는 작업을 컴퓨터가 대신 처리하여 주는 것이다. 이런 기능을 반복문이라고 하며, 대부분의 프로그래밍 언어는 다양한 반복문을 제공한다.
1건의 항목
DevOps란? 서비스 개발과 운영을 통합 왜 필요할까? 개발과 운영이 분리된 전통적 방식 개발팀, 운영팀 분리 되어 있음 개발팀에서 배포 파일을 운영팀에 전달 운영팀에서 배포 운영팀은 모니터링을 통해 개발팀에게 피드백 전달 이렇게 되는 경우 배포사이 개발팀과 운영팀의 커뮤니케이션 비용 증가 문제가 발생했을 때 현상/원인 파악이 어려움 서비스 개발자는 서비스 코드를 잘 알지만 운영 환경에 익숙하지 않음 시스템 운영자는 운영 환경에 익숙하지만 서비스 코드를 잘 모름 긴 주기 배포 하지만 각 분야 전문가가 배치되어 있어 보다 안전하다고...
3건의 항목
소수설 주창중 하나인 eXtreme Programming에 대해 알아보자.
인수 테스트는 무엇일까? 시기 상조의 정밀도 불확실성의 원칙 서류와 실제 시스템의 동작은 다르다. 사업부는 요구했던 내용이 실제 시스템에서 돌아가는 모습과 다르다는 것을 깨닫는다. 요구사항이 정밀해질수록 최종 구현된 시스템과 초기 요구사항의 차이는 벌어진다.
DevOps란? 서비스 개발과 운영을 통합 왜 필요할까? 개발과 운영이 분리된 전통적 방식 개발팀, 운영팀 분리 되어 있음 개발팀에서 배포 파일을 운영팀에 전달 운영팀에서 배포 운영팀은 모니터링을 통해 개발팀에게 피드백 전달 이렇게 되는 경우 배포사이 개발팀과 운영팀의 커뮤니케이션 비용 증가 문제가 발생했을 때 현상/원인 파악이 어려움 서비스 개발자는 서비스 코드를 잘 알지만 운영 환경에 익숙하지 않음 시스템 운영자는 운영 환경에 익숙하지만 서비스 코드를 잘 모름 긴 주기 배포 하지만 각 분야 전문가가 배치되어 있어 보다 안전하다고...
5건의 항목
냄새나면 당장 갈아라. 어떻게 하는지에 대해서 지금까지 배웠다. 하지만, “언제” 시작하고 그만할지를 판단하는 것은 또 다른 얘기다. 어떤 “냄새”를 맡았을 때 손을 대야할까? 기이한 이름 이름으로 이게 뭐하는 것인지 딱 볼 수 있게 작성해야 한다.
제어문 프로그램의 실행을 인위적으로 조절할 수 있는 문장 제어문의 종류 If 조건 연산자 유일하게 피연산자가 3개인 삼항 연산자 선택문(if)문과 같이 행동함 #include <stdio.h> int main() { int min, max; int x = 10, y = 20; max = (x>y) ? x : y; min = (x>y) ? y : x; printf("두 수 %d과 %d 중에 큰 수는 %d이다.\n", x, y, max); printf("두 수 %d과 %d 중에 작은 수는...
기존에 작업한 글이 있어 링크로 대체한다. 05. Control Flow 06. Loop Part. 01 07. Loop Part. 02 iomanip library 기본적으로 iostream 라이브러리로 출력을 하게되면, 왼쪽 정렬이다.
C++과 약간의 차이를 기억해야 하는데, 가장 핵심적인 것은 OR, AND 를 그대로 갖다 쓴다는 것이다. C++에서는 각각 && , || 로 사용했는데, 이것을 AND, OR 로 사용하면 된다.
프로그래밍 언어에서 자주 사용하는 것들인 제어문, 문자열, 함수에 대해서 적어보려한다. 다른 언어와 많은 점이 다르지는 않기 때문에 한 포스팅에서 모두 알아보려 한다.
1건의 항목
Fundamentals 사용처에 대한 “명료함”이 최우선이다. “간결함”보다 “명료함”이 보다 중요하다. 모든 선언에 대해 문서를 작성해라. ??? 클린코드와 대치된다.
2건의 항목
플레티넘1 : 동적 계획법, Convex Hull 문제이다. 생각 일단 완전 탐색을 생각해 본다. 음. 말도 안된다. 몇개를 겹쳐서 만드는지 완전탐색을 한다면 시간 복잡도가 O(n!) 이다. 이 문제는 그냥 직관적으로 동적 계획법 냄새가 난다.
골드1 : 기하 문제이다. 생각 볼록 껍질, Convex Hull이라 한다. 이 알고리즘에서 유명한 것을 그라함 스캔 알고리즘인데, 해당 동영상을 봐보자. 이것과 같은 알고리즘을 구현하기 위해서는 다음과 같은 절차를 거쳐야 한다. 가장 y가 작은 점을 구한다.
9건의 항목
개요 앞서 알아본, FCN에서 발생하는 문제를 Dilated Convolution으로 해결하겠다는 논지이다.
개요 Pretrained model을 사용하거나 Transfer Learning 을 사용하는 모델들에 대해서 읽을 때 Backbone이 되는 CNN 모델들이 몇 개 있다.
개요 앞서 배운 Dilated Convolution(atrous convolution) 을 적극적으로 활용할 것을 제안하여 segmentation 을 해결하자는 논문이다.
개요 detection paper saga 이제는 오랜 시간이 지난 논문인 SSD를 간단하게 리뷰 해보려 한다. 매우 직관적인 구조를 가지고 있어 많은 구조가 이 SSD를 기반으로 만들어지고 있다.
What is convolution 하트시그널을 봤다. 그 무엇보다도 치열한(..) 구애 행위와 두뇌게임을 봤다. 내가 누군가한테 구애 행위를 하는 것은 구애 받는 사람의 상태에 따라 YES, 혹은 NO가 나올 거다.
What is Padding Convolution 전 게시물에서 3x3 짜리 필터를 걸었을 때, 4x4짜리가 나왔다. 어떻게 보면 당연할 결과이다.
Example of a Layer 이제 원래 배웠던 신경망의 노드에서 하는 활동으로 돌아오자. 결국 이 필터는 가중치들의 모임이고, 원래 데이터에서 이 가중치를 곱한다음에 더하는 행위는 한 노드에 이 데이터들이 들어가는 것이다.
Types of Layer in a CNN Convolution 여태껏 배운 합성곱을 사용하여 다음 레이어를 만드는 방식이다. Pooling Fully connected What is Pooling 결과값을 압축한다! 로 생각하면 이해가 빠르다.
Split & Merge (Convolution NN) No Padding, No Stride Padding, Stride 입력 단 자체를 나누어서 노드를 단들고 마지막에 합쳐버린다! 이 발상은, 고양이 실험으로 부터 왔는데, 요약하면, 우리는 그림 전체를 파악하는 것이 아니고, 부분 부분의 입력을 나누어서 받는다는 것이 핵심 아이디어이다.
1건의 항목
HTTP에서 상태가 필요한 이유 로그인이 되게 하고 싶다. 쇼핑몰 로그인이 아니어도 카트 목록을 기억하게 하고 싶다. 해결 방법 Fat URL - URL에 상태 정보를 모두 집어 넣기 - URL을 파싱해서, 사용자의 상태를 확인한다.
2건의 항목
3D를 어떻게 2D로 만들까? 지구 중심에 광원이 있다고 가정, 그림자를 투영 투영면의 종류에 따라 원통 원추(뿔) 방위(천장 원만 사용) 광원의 위치에 따라 심사(정중앙) 평사(표면) 정사(무한이 먼 광원, 평행) 메르카토르 도법 원통, 심사 정형법: 각도를 유지 모든 면이 같은 면적과 같이 보이기 때문에, 지도에서의 각과, 실제 배를 돌리때의 기수각이 같다는 점에서 이러한 단어가 붙음 지도의 위쪽으로 갈수록 실제 면적이 길게 표현됨 특성상 북극, 남극의 경우 투사가 되지 않아 표현자체가 어렵다는 단점이 존재 골피터스 도법 면적이...
개요 한점에 대해 유일한 좌표를 부여하기 위한 체계 직교좌표계 (x, y, z) 구면좌표계 (r \theta, \phi) 지리좌표계 (\lambda, \phi) 지표면에만 있다고 가정하고 위, 경도로만 표현하는 것 지심좌표계 (x, y, z) 지표면 안으로 들어간다고 가정했을 때 필요 좌표계 EPSG 무지하게 많은 좌표계들을 한번에 알아볼 수 있는 코드 좌표계 변환 방식 측지계가 같으면 쉽게 변환이 가능 즉 준거타원체와 기준점이 같으면 하지만 측지계가 다르면 복잡한 로직이 필요 즉, 준거타원체도 다르고, 기준점도 다르면 3-Para...
1건의 항목
GoF의 디자인 패턴, 프록시 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
1건의 항목
다시 핵심만 간결하게 복기하기 위한 목적으로 정리하기 때문에, 요약하는 방식으로 글을 작성한다. 역/식자의 말 절대적이라 믿으면 안된다 개선의 여지가 있을 것이라 생각해야 한다. 이 요소들을 소개하는 이유는 팀/공동체에서 서로 동의하는 합리적인 원칙을 세우기 위함이다.
1건의 항목
설명 실제 동작하는 스타벅스 앱을 클론 코딩하였습니다. 처음으로 팀플을 진행했으며, commit convention, 브랜치 전략등을 사용해보았습니다.
1건의 항목
설명 실제 동작하는 스타벅스 앱을 클론 코딩하였습니다. 처음으로 팀플을 진행했으며, commit convention, 브랜치 전략등을 사용해보았습니다.
1건의 항목
부분적으로 rounding 처리하는 방법을 알아보자.
1건의 항목
비용 최소화 코드 저번글에서 X, Y에 최적화된 W, b를 찾았다면, 이번에는 고정된 X, Y 에 대해 다른 W값을 넣어주면서 Cost의 변화를 살펴보자.
2건의 항목
Code import tensorflow as tf tf.set_random_seed(777) # 같은 값이 나오도록 하기 위해서 # 데이터 준비 x_train = [1, 2, 3] y_train = [1, 2, 3] # 초기에 랜덤하게 값을 할당한다.
Logistic Regression 의 그래프 함수를 통과하기 전의 값을 Score(Logit) 이라 부른다. 통과한 난 뒤의 값은 확률이다.
2건의 항목
특정 모듈이 다른 모듈에 의존하는 정도 커플링이 심해진 코드를 스파게티 코드라 함 살펴봐야 할 것들 왜 결합도가 높아졌는가? 어떻게하면 그 결합도를 낮출 수 있는가? 종류 (강한순서로) 내용결합도 하나의 모듈이 다른 모듈의 내부 동작을 수정하거나 의존하는 상태 다른 모듈의 로컬 데이터의 접근하는 경우 A 모듈의 데이터 생성 방법을 변경하면 B 모듈의 변경이 필요 공통결합도 두 개의 모듈이 같은 전역 변수를 공유하는 상태 외부결합도 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 디바이스 인터페이스를 공유하는 상태 외...
의존성과 결합도에 대한 정확한 의미를 이해해본다. 의존성(Dependency) A 모듈이 동작하려면 B 모듈이 필요한 경우 OO에서 모듈 == 클래스 클래스 A가 클래스 B에 의존 의존성이 있으면 잘못된 OO 설계다? (code smell) 잘못된 말이다.
1건의 항목
데이터의 두 변수간 선형관계를 나타내는 척도에 대해서 알아본다. 선형관계 두 변수의 관계를 알아보는 것은 매우 중요하다. 어떠한 연관성을 통하여 유의미한 정보를 이끌어 낼 수 있기 때문이다. 이러한 선형관계를 알아내는 척도는 3가지 정도가 알려져 있다.
1건의 항목
네트워크 공부를 하다보니, 인코딩이라는 것에 대해 제대로 이해할 필요가 있다고 생각했다. 왜 필요한지, 어떻게 사용하는지에 대해서 이해해보는 포스팅이다.
1건의 항목
대표적으로 사용하는 연속 확률 변수에 대한 분포를 알아본다. 의미적으로 이해하는 것을 우선으로 한다. 감마 분포 a번째 사건이 발생할 때까지 걸리는 시간에 대한 분포 음이항 분포와 매우 비슷하다.
98건의 항목 처음 10개의 태그
실버1 : 동적 계획법 문제이다. 생각 전형적인 dp 문제이다. 다만 이 문제는, 경로를 추적해야 한다는 점에서 조금 다르다. 경로를 추적하는 방법으로는 dp를 미리 구해놓고, 이것을 역으로 추적하여 구하는 방법이 가장 간단하다.
실버5 : 동적 계획법 문제이다. 생각 생각 보다 힘들게 푼 문제이다. n이 50000이고, 시간 제한이 0.5초이기 때문에 완전탐색으로 풀면 힘들 것이라 생각했다. 그래서 동적 계획법 방법으로 풀이를 채택했다. 이 문제는 동전 문제와 비슷하게 생각해야 한다.
골드4 : 이분 탐색 문제이다. 생각 어려웠다. 여러가지 배열이 섞이고, 계산하는 방법을 생각하지 못했다. 이 문제를 풀면서 배운 것은, 정말 컴퓨터처럼(센다..) 생각해야 된다는 것.
골드5 : 동적계획법 문제이다.
실버1 : 동적계획법 문제이다. 생각 동적 계획법하면 유명한 문제이다. 나는 동적 계획법을 풀 때 보통 두가지 방법을 많이 사용한다. 상태에 대한 정의와 점화식을 직관으로 때린다. (감..) 순차적으로 완전 탐색 방법으로 그려본다.
브론즈1 : 구현 문제이다. 풀이 단순한 문제이다. 앞뒤에 어떠한 문자를 넣을 수 있으니, 현재 가지고 있는 ROT13만 가지고서 부분적으로 보았을 때, 가장 작은 차이를 가지고 있는 지점만 알면된다. 이후는 맞춰서 끼워넣으면 되니까.
실버2 : 동적 계획법 문제이다. 생각 dp의 정의는 간단하게 생각할 수 있다.
골드3 : 동적 계획법 문제이다. 생각 dp의 정의는 간단하게 생각할 수 있다. 이 문제는 가장 긴 감소하는 부분 수열, 가장 긴 증가하는 부분 수열을 합한 문제이다.
골드2 : 이분 탐색 문제이다. 생각 기존에 dp로 풀었던 문제가 데이터의 개수만 달라져 새로운 문제가 되었다. 이번 문제는 풀이를 좀 참고하였으며 새로운 공부를 할 수 있었다. 이 문제는 먼저, 일반적인 dp문제로 풀수가 없다.
골드4 : 동적 계획법 문제이다. 생각 전형적인 dp 문제이다. 다만 이 문제는, 경로를 추적해야 한다는 점에서 조금 다르다. 경로를 추적하는 방법으로는 dp를 미리 구해놓고, 이것을 역으로 추적하여 구하는 방법이 가장 간단하다.
7건의 항목
CPU의 동작방법을 알아보자. 최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. 디지털 회로 기본적으로 연산을 수행하도록 가능하게 하는 것은 이 디지털 회로가 있기 때문이다. 이 디지털 회로는 반도체의 특징을 이용하면 가능하다.
비트 0, 1 비트가 모여 데이터 구성 비트를 주고 받는 것이 통신의 본질 바이트 = 8비트 워드 = 1바이트가 2개 (16비트) 데이터가 어떻게 전기 신호로 전달? 데이터가 전달되지 않을 때 전기적 신호가 존재 Clock 신호 CPU는 해당 신호에 맞춰 일을 처리한다.
CPU 스케쥴링에 대해 알아본다. CPU가 하나의 프로세스 작업이 끝나면 다음 프로세스 작업을 수행해야 한다. 이때 다음 프로세스가 어느 프로세스인지를 선택하는 알고리즘을 CPU Scheduling 알고리즘이라고 한다.
운영체제에서 중요한 부분인 메모리 관리 기능에 대해 알아보자. 메모리는 CPU 자원만큼 컴퓨터를 사용하는데 매우 중요한 자원 중 하나이다.
코드가 어느 환경에 돌아가는지 아는 것은 중요하다. 어떤 cpu아키텍쳐가 있고, 차이점이 무엇인지에 대해서 알아보자. 해당 글은 계속해서 추가해 나갈 예정이다.
iOS 내부 디바이스에 다양한 CPU 제품이 들어감에 따라 이를 대응할 수 있도록 Project setting을 해야한다. 내부 디바이스들이 어떤 특징을 가지고 있는지 알아보자. 이번 글은 CPU Architecture 글을 읽고 오면 좀 더 편하다.
실제 컴파일, 링킹이 끝난 뒤의 결과물에 대해서는 잘 모르는 것 같다. 실행 파일은 어떻게 구성되어 있는 걸까? 우리가 사용하는 프로그램들은, 바이너리화되어 있는 파일의 형태로 존재한다. 그런데, 이 실행파일의 형태는 OS에 따라 다른 형태로 존재한다.
1건의 항목
Request-Line OR Status-Line [Header CRLF] CRLF [ Body ] Start Line Request Response Header 헤더 중 X가 붙은 경우, 커스텀 헤더임 Pragma: 옛날 캐시 정책 Deprecated Cache-Control: 캐시 정책인데, 기능이 추가된 것들 Connection: close, keep-alive 두 개의 옵션이 있음 Stateless Protocol HTTP는 상태가 없는 프로토콜이다.
1건의 항목
멘토링, 수습기간, 장인 정신에 대해 고찰해본다. 수습기간 소프트웨어 역시 실무 훈련기간이 있어야 한다. 왜 프로그래머는 학교만 졸업하면 가능할 것이라 생각하는가? 소프트웨어는 일상생활에 너무나도 많은 곳에 들어가 있다. 합리적 훈련과 감독을 받는 실습기간은 필요하다.
5건의 항목
그래서 예외는 어떻게 처리하는 것이 좋은걸까? 오류 상황 예외 상황과 오류 상황을 다른 의미로 사용할 것 오류 상황은 error condition을 말함 이 오류 상황을 처리하는 방법 중에 예외가 있음 오류 상황은 예측 가능한 상황을 의미함 프로그램 실행 중에 기본적으로는 일어나지 않음 하지만 일어날 수 있는 일 따라서 이러한 상황을 처리하는 코드는 프로그램 기능의 일부임 프로그래머가 이를 예측하지 못했다면? 버그 오류 상황을 처리하는 4가지 방법 무시 곧바로 크래시 일단은 작동하는데 언젠가는 크래시 안정적이지 못한 상태로 계속 동...
인덱스로 Array 아이템을 탐색하다보면 항상 마주하는 것이 있다. Fatal error: Index out of range. 잘못하면 런타임에 애플리케이션이 바로 죽어버리기 마련이다. 아무리 염두에 둔다하더라도 우리는 사람인 이상 실수를 하기 마련이다.
! 사용하지 않기 Swift 코드에서 !가 보이는 경우는 두가지다. 연산자(!=, not, !==)에서 사용하는 경우는 제외한다.
TableView dataSource에서 아이템을 가져오다 outOfIndex가 나서 crash가 났다. 이로부터 배운 점에 대해 적어본다. 어떤 상황인가? crash 로그를 확인해보니, tableView에서 indexPath를 벗어나 발생했음을 확인했다.
앱스토어에서 크래시가 나서 Reject을 당하면 Crash Report를 함께 준다. 해당 파일을 열어보면 이상한 숫자들만 가득하다. dSYM debug symbol file App을 Release한 뒤에 Crash를 진단할 수 있게 도와주는 파일이다.
6건의 항목
GoF의 디자인 패턴, 첫번째 추상 팩토리 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 두번째 빌더 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 두번째 빌더 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 팩토리 메서드 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 원형 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 싱글톤 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
1건의 항목
발생하는 경우 계정 패스워드를 바꿨는데 로컬 반영이 안된 경우 환경 등의 알지못하는 변경이 영향을 준 경우 해결 방법 git config --unset credential.helper // git config credential.helper store // 해당 Git directory에서 적용 git config credential.helper store --global // 전체 Git에서 적용 Reference push 시 Password 물어보지 않도록 설정하기 .
1건의 항목
미분은 입력의 작은 변화에 비례해 출력이 얼마나 변하는지를 말해준다. 이런 성질은 미분 함수의 최소화에 유용하다. 도함수는 출력 y를 개선하려면 입력 x를 얼마나 변화해야 하는지에 대한 정보를 주기 때문이다.
1건의 항목
3. 임계구역(Critical section) 문제 위의 예에서 보았던 문제를 임계구역 문제라 한다. 임계구역은 여러 개의 쓰레드가 수행되는 시스템에서 각 쓰레드들이 공유하는 데이터(변수, 테이블, 파일 등)를 변경하는 코드 영역을 말한다.
1건의 항목
Logistic Regression 의 그래프 함수를 통과하기 전의 값을 Score(Logit) 이라 부른다. 통과한 난 뒤의 값은 확률이다.
1건의 항목
Progressive Web App PWA(Progressive Web App)는 웹 애플리케이션을 개발하고 배포하기 위한 접근 방식과 기술 집합을 가리키는 용어입니다.
2건의 항목
범주론에서의 카테고리에 대해 알아보자. 프로그래밍과 무슨 관계가 있는가? 왜 이런 메타수학에서 사용되는 개념이 프로그래밍에서 사용될까? 프로그래밍에서 공통적으로 나타내는 개념들 사이의 관계가 카테고리의 조건에 딱 들어맞는다. 모든 프로그래밍 언어에는 타입이 있다.
함수형 프로그래밍에 대해서 공부해보면 꼭 나오는 용어들이 있다. 일급 시민, 함수 합성, 커링 등. 오늘은 이러한 단어들에 대해서 이해해보자. First Class Function function은.
1건의 항목
Curve Fitting with Polynomials Least Square Method을 보고 오면 좋다. 데이터가 주어졌을 때 다항식 곡선으로 어떻게 맞출 수 있는지 알아보자. Intuition Concept 아래와 같은 그림을 보고 직관적으로 이해해보자.
7건의 항목
자동차, 의류, 레저, 소매(비필수) 등 임의 소비재 섹터입니다. 경제 성장에 따라 성과가 크게 변동하는 경기 순환 섹터로, Amazon, Tesla, Nike 등이 대표적인 기업입니다.
석유·가스 탐사/생산, 정제, 재생 에너지 등을 포함하는 에너지 섹터입니다. 유가 변동과 경제 사이클에 민감한 순환적 특성을 보이며, ExxonMobil, Chevron, SK Innovation 등이 대표 기업입니다.
은행, 보험, 자산 관리, 증권 등을 포함하는 금융 섹터입니다. 금리 변동과 경제 성장에 민감한 경기 순환 섹터로, JPMorgan Chase, Berkshire Hathaway 등이 대표적입니다.
항공, 기계, 건설, 운송 등을 포함하는 산업재 섹터입니다. 경제 활동과 자본 지출에 따라 성과가 변동하는 순환적 특성을 보이며, Boeing, Caterpillar, Hyundai Heavy Industries 등이 대표 기업입니다.
반도체, 소프트웨어, 하드웨어, IT 서비스 등을 포함하는 기술 섹터입니다. 혁신과 경제 성장에 민감한 순환적 특성을 가지며, Apple, Microsoft, Samsung Electronics 등이 대표적인 기업입니다.
화학, 금속, 광업, 임업 등을 포함하는 소재 섹터입니다. 산업 수요와 경제 사이클에 따라 성과가 변동하는 순환적 특성을 보이며, Dow Chemical, BHP Group 등이 대표 기업입니다.
REITs, 부동산 개발/관리 등을 포함하는 부동산 섹터입니다. 금리와 경제 성장에 민감한 순환적 특성을 가지며, Prologis, Simon Property Group 등이 대표적인 기업입니다.
1건의 항목
WWDC 2019 키노트를 확인해보며 알짜 정보를 쏙쏙 뽑아보자. Dark Mode iOS 13부터 지원되는 기능이다. 말 그대로 dark mode이다. 해당 기능을 만들면서 고민했던 것은 역시 Mode에 따라 변화하는 색상이었다.
7건의 항목
한번에 전송할 데이터의 크기 편지를 내가 썼다. 그 편지를 누군가한테 보내는데, 글자하나하나를 보내지 않는다. 이 때 편지는 우체부 아저씨가 누군가한테 배달하는 단위가 된다. 이와 같은 개념이 패킷이다. 패킷은 데이터를 보내는 데 있어 발생하는 단위이다.
운영체제에서 중요한 부분인 메모리 관리 기능에 대해 알아보자. 메모리는 CPU 자원만큼 컴퓨터를 사용하는데 매우 중요한 자원 중 하나이다.
protoc protobuf는 데이터를 구조화하고, 이를 전송하고자 하는데 있어서 유연하고 효율적으로 작성하고 파싱하도록 지원하는 자동화 솔루션이다. json이나 xml을 생각하면 이해가 쉬운데, 사실 조금 다른 부분이 있다.
Basic Point 하나의 좌표를 갖는 geometry LineString(Polyline) 두 개 이상의 좌표를 갖는 geometry Line 두개의 좌표인 경우 LinearRing 첫 점과 끝점이 같은 경우 분류 Simple Non-Simple - 선이 교차하는 경우 Simple, closed - 교차하지 않는 다각형모양을 가진 선 LinearRing Non-Simple, closed - Not a LinaerRing Polygon 면 hole을 가질 수 있다.
점, 선, 면 Box로 만든 뒤에 저장 저장은 어떻게? Grid 전체 공간을 Tessellation하여 셀로 나누고, 데이터를 셀에 넣는 방식 Tessellation 일정한 형태의 도형들로 평면을 빈틈없이 채우는 것을 말함 a.k.a 쪽매맞춤 쪽매붙임 공간을 다 특정도형으로 쪼개고, 또 그 안에서 쪼개는 방식으로 저장하는 것 무조건적으로 다 분할해야 함 QuadTree 전체 공간을 재귀적으로 가로/세로 2등분하여 4개의 자식 노드를 가진 트리 구조를 사용하는 공간 인덱스 4개의 노드를 가지도록 분할하여 저장 특정 geometry가 ...
Data(contentof)는 로컬 파일을 불러오기 위한 메서드이다. 애초에 동기 메서드이다. 가끔 이걸 DispatchQueue에 Item으로 싼뒤에 넣어 비동기 처럼 사용하는 경우가 있는데, 이러면 안된다. API의 존재 이유에 맞지 않기 때문이다.
3건의 항목
항공기의 운행을 따라가는 Schedule이라는 변수를 사용하여 높은 정확도로 지연편을 검출할 수 있었다.
서울시 관내 식당의 식수인원을 예측하여 사회적 이익을 가져오는 프로젝트를 진행했다.
2 Stage model을 사용하여 효과적으로 결로를 예측하고과 서비스를 구축하였다.
3건의 항목
랜에서 데이터를 정상적으로 주고 받기 위해 필요한 계층 앞은 전달하기 위해 변환하는 과정이 주라 생각 MAC Address Ethernet = Switch 트레일러 FCS(Frame Check Sequence) 전송중 오류 발생 확인 용도 프레임 Ethernet 헤더와 트레일러가 추가된 데이터 MAC Address를 통한 프레임 전송 과정 A에서 B로 데이터를 전송한다고 생각해보자.
물리 계층 (Physical Layer L1) 기계적, 전기적인 통신망 접면의 정의 데이터를 전기적인 신호로 변환해서 주고받는 기능만 할 뿐 대표 장비 : 통신 케이블, 리피터, 허브 등 데이터링크 계층 (Data Link Layer 2, L2) 데이타 링크의 제어 (프레임화, 데이터 투명성, 오류 제어 등) 맥 주소를 가지고 통신한다.
Switch Data Link Layer에서 동작 Layer 2 스위치, 스위치 허브라 불림 허브와 비슷하지만, 데이터 충돌을 방지할 수 있다.
1건의 항목
같은 일을 여러 사람이 동시에 하는 것 군대 삽질 분대가 다같이 행위는 하나, 주체는 여러개 병렬성은 Concurrency에 포함된다.
2건의 항목
Data-race의 문제를 swift concurrency (compiler constraint)를 통해 해결하지 않고, 타 매커니즘을 통해 해결한 경우, 이에 대해 에러를 내뿜지 않도록 하는 키워드 swift concurrency는 compiler가 data-race에 대한 취약점을 파악할 수 있다는 점에서 유용하다.
Task는 코드 블럭을 독립적으로 사용할 수 있다. 이러한 점을 사용하면 병렬적으로 특정 코드를 처리하게 할 수도 있다.
2건의 항목
우리는 private을 통해 변수를 자주 정의한다. 이렇게 하는 이유는 남들이 변수에 의존하지 않도록 만들고 싶기 때문이다. 그럼에도 불구하고 많은 프로그래머들은 get, set 함수를 당연하게 외부에 노출하는 오류를 범한다.
점, 선, 면 Box로 만든 뒤에 저장 저장은 어떻게? Grid 전체 공간을 Tessellation하여 셀로 나누고, 데이터를 셀에 넣는 방식 Tessellation 일정한 형태의 도형들로 평면을 빈틈없이 채우는 것을 말함 a.k.a 쪽매맞춤 쪽매붙임 공간을 다 특정도형으로 쪼개고, 또 그 안에서 쪼개는 방식으로 저장하는 것 무조건적으로 다 분할해야 함 QuadTree 전체 공간을 재귀적으로 가로/세로 2등분하여 4개의 자식 노드를 가진 트리 구조를 사용하는 공간 인덱스 4개의 노드를 가지도록 분할하여 저장 특정 geometry가 ...
1건의 항목
Adapter 패턴으로 알려져있는 Wrapper 패턴에 대해 알아보자. 이름의 문제 GoF: 09.
1건의 항목
1건의 항목
Train/Test Dataset 정확도를 측정하는데 있어서 앞에서는, 모델을 훈련하는 데 사용했던 데이터를 가지고서 평가했다. 그런데 사실은 그렇게 수행하면 안되는 것이 당연하다.
1건의 항목
지구 타원체 지구의 단면은 타원 장반경 a, 단반경 b라 했을 떄, {{a-b}\over a} = f f를 편평률이라 한다. a, b가 많이 차이나면 값이 크다 == 많이 찌그러져 있다. 그리고 이렇게 타원체로 만든 것을 지구 타원체라 한다.
4건의 항목
최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. PC 조립 과정 보며 구조 이해하기 컴퓨터 하드웨어 구성 요약 다나와 다나와 이곳에 가면 컴퓨터 용어에 대한 간단한 설명들을 쉽게 알 수 있다. 컴퓨터란? CPU가 가장 중요하다.
식사하는 철학자 문제는 원형 테이블에 5명의 철학자와 5개의 젓가락이 있는 상황이 있다고 하자. 각 철학자는 생각하고 식사하고 생각하고 식사하고를 반복한다. 단, 식사를 하기 위해서는 2개의 젓가락이 필요하다. 이 상황을 프로그래밍을 해보자.
교착 상태는 어떠한 자원을 갖고 있는 상황에서 문제가 발생한다. 자동차 교차로를 생각해보자. A자동차도 신호를 받았고, B 자동차도 신호를 받았다. 그래서 두 자동차가 움직이는 것에 논리적 오류가 없지만, 두 자동차가 갈 수 없는 상황이 발생한다.
이제 우리는 동시성 프로그래밍을 할 수 있다! 필요한 내용들을 어느정도 배웠다고 할 수 있다. 하지만, 동시성 프로그래밍이 어려운 이유는 별도의 작업흐름으로 공유 데이터에 접근하면서 발생하기 때문이다.
3건의 항목
특정 값을 찍을 때 print를 찍기 일수다. 쉬우니까. 하지만 이 습관은 좋지 않다. 왜 인지 알아보자.
Xcode에서 디버깅하는 방법을 알아보자.
앱스토어에서 크래시가 나서 Reject을 당하면 Crash Report를 함께 준다. 해당 파일을 열어보면 이상한 숫자들만 가득하다. dSYM debug symbol file App을 Release한 뒤에 Crash를 진단할 수 있게 도와주는 파일이다.
2건의 항목
Base64에서 URL에서 사용하는 문자열을 제외한 Encoding 방식 +, /, = 가 URL에서 사용하는 문자임 : 띄어쓰기, / : 경로구분자, = : name과 value사이에 쓰는 기호 (Query) 이에 아래와 같이 문자를 변경함 Reference RFC4648 .
이진 데이터를 문자코드에 영향을 받지 않는 공통 ASCII 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식 Base64 == 64개 값을 하나의 데이터로 인코딩한다. == 6개의 비트 2^6 = 64 를 인코딩한다. Reference RFC4648 .
3건의 항목
Decompose Conditional, 조건문 분해하기를 알아보자.
LU Decomposition LU 분해는 근본적으로 가우스 소거법의 방법을 차용한다. 가우스 소거법은 행의 조작을 통해, Upper Triangle Matrix 를 만드는 것이 핵심이다.
QR Decomposition QR 분해의 근본적인 이유는 무엇일까? 기존의 선형대수에 대한 글에서, 행렬은 하나의 공간을 매핑한다고 했다. 그리고 행렬 size가 정사각행렬이고, full rank일 때 n차원 공간을 매핑한다.
2건의 항목
문자열 처리는 파이썬으로 find() isalpha() isalnum() for ~ in list, string으로 하나씩 꺼낼 수 있다. ~ in list, string으로만 하면 t/f 반환한다.
인터페이스는 왜 필요할까? 그리고 무엇일까? Interface의 사전적 의미 inter-(상호간의) + -face(면) = interface 접해있는 두 물체나 공간 사이의 경계 사용자는 스위치를 키는 버튼에 집중 이걸 누르면 어떤 일이 일어날지를 앎 (what) 어떻게 그런일이 일어나는지는 모름 (how) 실제 동작은 구현 공간에서 일어남 배선의 연결 사용자는 잘 알지 못하는 공간 구현자만 알고 있음 이미 알고 있는 개념 = 함수 함수는 블랙박스임: 호출자는 내부가 어떻게 도는지 이해하려 하지 않는다.
1건의 항목
개요 앞서 배운 Dilated Convolution(atrous convolution) 을 적극적으로 활용할 것을 제안하여 segmentation 을 해결하자는 논문이다.
41건의 항목 처음 10개의 태그
Descripter 이미지를 비교하기 위해 동일한 방법을 통해 하나의 비교 대상으로 만드는 것 두 가지 이미지가 있다. 이 두가지 이미지가 비슷한지 아닌지를 구분하기 위해 만든 것이 descripter이다.
Computer Vision의 Task 이중 Object Detection에 해당하는 문제이다. R-CNN region proposal을 진행한다. CNN에 각각 넣는다.
핵심 아이디어 입력 이미지의 크기나 비율에 관계없이 CNN 학습은 불가한가? Fast R-CNN으로 넘어가기전 상당히 많은 아이디어를 가져온 논문이다.
핵심 아이디어 Feature Extraction, classification, bounding box regression까지 한번에 학습할 수 있는 모델을 만들자! Fast R-CNN은 이전 SSP Net이 가지는 한계점을 극복하는 시도에서 출발한다.
핵심 아이디어 Region Proposal도 Network안에 포함시키자! Faster R-CNN의 핵심 아이디어는 Resion Proposal Network(이하 RPN)이다.
Task Segmentation semantic segmentation은 이미지 내에 있는 물체들을 의미 있는 단위로 분할해내는 것이다. 좀 더 구체적으로 이야기하면, 이미지의 각 픽셀이 어느 클래스에 속하는지 예측하는 것이다.
개요 Noh, H., Hong, S., and Han, B. Learning Deconvolution Network for Semantic Segmentation. ICCV, 2015.
개요 앞서 알아본, FCN에서 발생하는 문제를 Dilated Convolution으로 해결하겠다는 논지이다.
개요 Pretrained model을 사용하거나 Transfer Learning 을 사용하는 모델들에 대해서 읽을 때 Backbone이 되는 CNN 모델들이 몇 개 있다.
개요 앞서 배운 Dilated Convolution(atrous convolution) 을 적극적으로 활용할 것을 제안하여 segmentation 을 해결하자는 논문이다.
2건의 항목
Deep Link 기존의, 즉 옛날옛적의 웹은 home page를 통해 각 문서에 접근하여 정보를 얻는 방식을 취했었다.
Deep link를 적용하기 위해서는 AppDelegate에서 응답을 받아 처리해야 한다. 해당 내용은 그림으로 그리기가 너무 벅차 말로 간단하게 대체하려 한다.
3건의 항목
식품, 음료, 가정용품, 소매(필수) 등 필수 소비재 섹터입니다. 경제 불황에도 안정적인 수요를 보이는 방어적 섹터로, Procter & Gamble, Coca-Cola, Nestlé 등이 대표적인 기업입니다.
제약, 의료 기기, 바이오테크, 의료 서비스 등을 포함하는 헬스케어 섹터입니다. 경기 변동에 상대적으로 안정적인 방어적 특성을 가지며, Pfizer, Johnson & Johnson 등이 대표 기업입니다.
전기, 가스, 물 공급 등 필수 공공 서비스를 제공하는 유틸리티 섹터입니다. 안정적인 수익 구조와 배당으로 경제 불황 시에도 방어적 특성을 보이며, NextEra Energy, Duke Energy 등이 대표적입니다.
1건의 항목
에러 처리는 프로그래밍에서 빼놓을 수 없다. 에러 관리를 제대로 해두어야 추후 디버깅에 있어 이득을 볼 수 있다. 미래의 나를 위한 투자?의 개념이다. 에러를 관리하는 것도 중요하지만 에러를 내는 방법, 에러를 감지하여 처리하는 방법을 아는 것 역시 중요하다.
1건의 항목
프로그램 실행 과정 graph LR A[원시함수 작성] --> |Compiler|B(오브젝트 파일 생성) B-->|Linker|C[실행파일 생성] Compiler : 고급 언어로 작성된 파일을 기계어로 번역해줌.
1건의 항목
Packet Delay 패킷스위칭을 시 라우터는 패킷단위의 데이터를 전달받고 목적지로 전달하는 역할을 수행한다. 이 과정에서 라우터가 보낼 수 있는 대역폭보다 더 많은 유저가 더 빠른 속도로 데이터를 보낸다면 딜레이가 생길 수 밖에 없다.
4건의 항목
최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. PC 조립 과정 보며 구조 이해하기 컴퓨터 하드웨어 구성 요약 다나와 다나와 이곳에 가면 컴퓨터 용어에 대한 간단한 설명들을 쉽게 알 수 있다. 컴퓨터란? CPU가 가장 중요하다.
의존성과 결합도에 대한 정확한 의미를 이해해본다. 의존성(Dependency) A 모듈이 동작하려면 B 모듈이 필요한 경우 OO에서 모듈 == 클래스 클래스 A가 클래스 B에 의존 의존성이 있으면 잘못된 OO 설계다? (code smell) 잘못된 말이다.
전제조건 행위에 대한 의존, 존립에 대한 의존 자동차 부품(존립) 자동차를 구성하는 다양한 부품은 자동차라는 객체가 사라지면 그 부품들의 존재도 사라진다. 그렇다면 부품이라는 존립은 자동차에 대해 의존성을 가진다.
의존성 관리도구 주요 기능 Module 의존성을 알려주는 메타데이터로 라이브러리들이 관리됨 Manifest 명세서 역할 Lock 설치된 라이브러리의 버전과 의존 구조를 보여줌 라이브러리가 설치된 다음 적힘 Repository 모듈이 저장된 공간, 보통 github Dependency Constraint 모듈의 허용되는 버전, 보통 Manifest 파일에 적혀짐 Resolution Rule 모듈의 적합한 버전을 설치해 줌 도구세팅빌드속도-------------------------------CocoaPods간편함느림Carthage복잡...
4건의 항목
의존성과 결합도에 대한 정확한 의미를 이해해본다. 의존성(Dependency) A 모듈이 동작하려면 B 모듈이 필요한 경우 OO에서 모듈 == 클래스 클래스 A가 클래스 B에 의존 의존성이 있으면 잘못된 OO 설계다? (code smell) 잘못된 말이다.
간단한 구조 일단 RIB의 구조는 위와 같다.
아무 생각없이 코딩하다가(…) 의존성 주입을 그냥 property 주입으로 하고 있었다. 당연히 Storyboard면 안되지 않았었나? 하는 무지성 코드질을 하다 지적받고 떠올랐다.
다양한 의존성 주입 방법을 고려하고, 최종적으로 ViewController에 생성자 주입 방식을 통해 컴파일 타임에 주입 여부를 판단할 수 있도록 변경하였습니다. 초기에 작성한 의존성 주입이라고 착각한 코드입니다.
5건의 항목
앱 배포에 있어 꼭 알아야 하는 App Thining중 App Slicing에 대해 알아본다. 해당글은 WWDC 2015를 기준으로 한다. App Distribution Today 이전의 App 배포 방법은 다음과 같은 방식으로 수행되었다.
앱 배포를 하다보면 bitcode enabled라는 flag가 있다. 이녀석을 체크하냐 마냐에 따라서 빌드 속도가 상당히 차이나는 것을 보았는데 도대체 왜 그런 건지 이해해보려 한다. bitcode 다음은 Distrubution Options에서 찾은 설명이다.
앱스토어에 실제 앱을 배포해본 사람은 알겠지만, 인증서, provisioning과 같은 개념은 생소하다. 정확하게 알아보자. 원칙 Apple 만이 자신들의 하드웨어(iOS, iPadOS, MacOS etc)에 특정 소프트웨어가 동작하도록 할 수 있다.
앱 배포에 있어 꼭 알아야 하는 App Thining중 On-Demand Resource에 대해 알아본다. 해당글은 WWDC 2015를 기준으로 한다. Do Better 이전 글에서 App Slicing을 하면서 앱 크기를 많이 줄일 수 있다는 것을 확인했다.
사용자에게 나의 상품을 내놓을 때, 얼마나 메타 데이터가 중요한지 생각해보는 계기였습니다. 초기 배포 당시, 메타데이터를 제대로 작성하지 않아 유저가 해당 앱에 대한 정보를 알지 못한다는 의견을 받았습니다.
1건의 항목
서명 역시 검증을 위해 전파될 필요가 있다. 즉, 직렬화가 필요하다. DER(Distinguished Encoding Rules) 서명에 대해 앞에서 공부했을 때 핵심은 r, s의 값이었다.
2건의 항목
앞으로 그림에서 나오는 Swift version은 가상이다. 이해를 위해서 가상으로 적었다.
DerivedData를 맨날 지우라는데 이녀석이 뭔지 간단하게 알아보자. DerivedData 빌드가 안되어 오류를 Google에 쳐보면 StackOverflow에서 “Clean DerivedData” 하라는 말이 많다. 이녀석은 도대체 무엇일까.
1건의 항목
Descripter 이미지를 비교하기 위해 동일한 방법을 통해 하나의 비교 대상으로 만드는 것 두 가지 이미지가 있다. 이 두가지 이미지가 비슷한지 아닌지를 구분하기 위해 만든 것이 descripter이다.
2건의 항목
protoc protobuf는 데이터를 구조화하고, 이를 전송하고자 하는데 있어서 유연하고 효율적으로 작성하고 파싱하도록 지원하는 자동화 솔루션이다. json이나 xml을 생각하면 이해가 쉬운데, 사실 조금 다른 부분이 있다.
Serialization & Deserialization 데이터 구조나 오브젝트 상태를 동일하거나 다른 컴퓨터 환경에 저장(이를테면 파일이나 메모리 버퍼: persistence)하고 나중에 재구성할 수 있는 포맷으로 변환하는 과정 쉽게 생각하면, 내가 가지고 있는 이 객체 구조를 어딘가에 저장할 수 있도록 변환하는 과정을 말한다.
34건의 항목 처음 10개의 태그
GOF의 디자인 패턴 1장, 서론을 정리해봅니다. 머리말 디자인 패턴은 이름만 언급해도 복잡한 설계에 대한 의도를 표현하는 효과를 가진다.
GOF의 디자인 패턴 1장, 서론의 두번째를 정리해봅니다.
GoF의 디자인 패턴, 첫번째 추상 팩토리 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 두번째 빌더 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 두번째 빌더 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 팩토리 메서드 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 원형 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 싱글톤 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 적응자 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 가교 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다. 핵심 요약 기능과 구현의 분리를 통해 시스템의 확장성과 유지보수성을 높이는 패턴 기존 시스템에 새로운 기능을 추가해도 어떠한 변경도 없이 추가가 가능하다.
1건의 항목
Destructor 소멸자는 특별한 멤버함수이다. 객체가 생성되고, 소멸될 때 호출된다. 소멸자의 목적은, 컴퓨팅 자원의 절약에 있다. 객체가 생성되고 계속 남아있다면 메모리 자원을 많이 소모하게 된다.
3건의 항목
Determinant det(I)\;=\;1\\ \;\\ det(A^T)\;=\;det(A)\\ \;\\ det(AB)\;=\;det(A)det(B)\\ \;\\ det(cA)\;=\;c^ndet(A).
Inverse Matrix Definition 정사각행렬에서 정의된다. AA^{-1}\;=\;A^{-1}A\;=\;I Determinant 에 따른 구분, 그리고 의미 Determinant 가 존재한다. 역행렬이 존재한다.
Linear Independence 하나의 행렬은 공간을 나타낸다고 볼 수 있다.
1건의 항목
Software 개발과 관련된 지식들을 정리합니다.
1건의 항목
DevOps란? 서비스 개발과 운영을 통합 왜 필요할까? 개발과 운영이 분리된 전통적 방식 개발팀, 운영팀 분리 되어 있음 개발팀에서 배포 파일을 운영팀에 전달 운영팀에서 배포 운영팀은 모니터링을 통해 개발팀에게 피드백 전달 이렇게 되는 경우 배포사이 개발팀과 운영팀의 커뮤니케이션 비용 증가 문제가 발생했을 때 현상/원인 파악이 어려움 서비스 개발자는 서비스 코드를 잘 알지만 운영 환경에 익숙하지 않음 시스템 운영자는 운영 환경에 익숙하지만 서비스 코드를 잘 모름 긴 주기 배포 하지만 각 분야 전문가가 배치되어 있어 보다 안전하다고...
18건의 항목 처음 10개의 태그
가지를 끊어버리는 백 트래킹에 대해 알아보자.
분기 한정법에 대해 알아보자. 분기 한정법 Branch : 이전 상태 공간 트리에서 다음 가지로 넘어가는 경우를 말함 Bound : 한계 이전의 백 트레킹과 크게 다르지 않다. 그 부분 집합의 합을 구하는 문제와 크게 다르지는 않다.
실버1 : DFS 문제이다. 풀이 DFS와 동적계획법이 섞인 문제이다. 일단, 특정 위치까지 갈 수 있는 모든 경우의 수를 구해야 하는데, 그냥 방문할 때마다 count를 늘려준다면, 중복해서 방문하는 곳이 너무 많아 비효율 적이다.
골드4 : dp & DFS 문제이다. 풀이 이게. 접근 방식을 약간 반대로해서 오래걸렸다. 바텀 업 방식으로 사고를 하여, 마지막 지점까지 가는데 있어 4방향의 경로를 더해주어야 한다고 생각했다. 그런데 그렇게 생각을 하니 쉽게 점화식이 떠오르지 않았다.
실버1 : DFS 문제이다.
골드3 : 완전탐색 문제이다. 삼성 A형 기출이다. 생각 시간이 1초라, 제한 시간에 들어올 수 있는지 시간 복잡도 계산부터 진행했다. 최악의 경우 100개의 공간에 모두 1이 차있는 경우 한 개의 공간에서 색종이를 5번 검사해야 한다.
실버2 : DFS 문제이다. 풀이 그냥 구현하라는 대로 탐색해서 answer를 늘려주면 된다.
실버3 : dfs 문제이다. 생각 기본적인 dfs 문제이다. 반으로 나눈 팀에 대한 점수를 더하는 것이므로, true false를 통해 구현할 수 있다.
골드4 : 완전 탐색 문제이다. 풀이 이게 전날에 급하게 짜다가 조건을 놓친 문제인데, 오늘의 첫문제로 도전해보았다. 난 BFS로 문제 풀이방향을 정했는데, 문제가 방문이 중복으로 일어난다는 것이다.
실버1 : 완전 탐색 문제이다. 풀이 그냥 가능성을 다 구한다. 그런데 시간 초과가 날수도 있다. 왜냐하면 +-*/가 중복될 수 있으니까 그래서 set으로 이런 중복을 제거한후 주르륵 계산해서 답.
6건의 항목
의존성과 결합도에 대한 정확한 의미를 이해해본다. 의존성(Dependency) A 모듈이 동작하려면 B 모듈이 필요한 경우 OO에서 모듈 == 클래스 클래스 A가 클래스 B에 의존 의존성이 있으면 잘못된 OO 설계다? (code smell) 잘못된 말이다.
이전글들은 사실 이 원칙을 위해 달려온 것이 아닌가하는 생각이 든다. OOP의 정수로 불리우는 SOLID원칙에 대해서 깊게 알아보고, 실제 iOS Framework의 설계 방향에 대입하면서 보다 찐한 이해를 경험해보자.
SOLID 설계 정신에 대해 알아보자. SOLID 정신으로 이룰 수 있는 것 소프트웨어 설계를 “유연하게” 할 수 있다. 유연한 소프트웨어 설계, 즉 추상적인 설계로 커플링을 제거할 수 있다.
간단한 구조 일단 RIB의 구조는 위와 같다.
아무 생각없이 코딩하다가(…) 의존성 주입을 그냥 property 주입으로 하고 있었다. 당연히 Storyboard면 안되지 않았었나? 하는 무지성 코드질을 하다 지적받고 떠올랐다.
다양한 의존성 주입 방법을 고려하고, 최종적으로 ViewController에 생성자 주입 방식을 통해 컴파일 타임에 주입 여부를 판단할 수 있도록 변경하였습니다. 초기에 작성한 의존성 주입이라고 착각한 코드입니다.
3건의 항목
UML에서 아직 그래도 많이 쓰이는 Class Diagram에 대해 정리해보자.
다음으로 또 많이 쓰이는 Sequence Diagram에 대해 알아보자. 해당 글의 사진 자료는 외부 블로그를 많이 참고했다.
UML은 무엇일까? 그리고 왜 쓰였을까? UML(Unified Modeling Language) 시스템의 디자인을 시각화하기 위해 만든 표준 시스템 설계에 대한 그림을 그릴 때, 해당 표준이 없다면 중구난방으로 그려 의사소통의 효율성이 저해되었을 것 구조에 관한 다이어그램 7개, 동작에 관한 다이어그램 7개가 있음 현재 UML은? 이전에 유행하던 시절이 있었음 그 당시에는 외주받아 시스템의 개략도를 보여주고, 계약이 체결되는 방식이었기 때문이었음 현재는 회사안에 개발팀이 있기 때문에 필요없는 문서화라 생각되어 지양되는 분위기 지금은...
3건의 항목
Dictionary 사람은 누구든지 “이름” = “홍길동”, “생일” = “몇 월 몇 일” 등으로 구분 할 수 있다. 파이썬은 영리하게도 이러한 대응 관계를 나타낼 수 있는 자료형을 가지고 있다.
Value Type 다른 변수에 대입하면 복사됨 argument로 넘겨도 복사됨 argument로 collection을 넘겨서 변화주면 원하는 결과를 얻을 수 없음 Objective-C의 경우 가능 Array 동일한 Type의 값을 저장할 수 있는 Ordered List 동일한 값이 다른 위치에서 반복적으로 낭로 수 있음 Foundation의 NSArray와 bridge 표현 let array: Array<SomeType>() let array: [SomeType] let array = [Int]() let array ...
dictionary에 value를 넣는데 nil인 경우는 빼고 싶다.
1건의 항목
간단하게 property는 member 변수이다. 그런데 Swift에는 다양한 종류의 property가 존재한다. 사실 어떻게 보면 활용방법? 테크닉에 가깝겠다. 어떻게 property를 관리하는 지 안다면, 실제 코드를 간결하고 읽기 좋게 유지할 수 있다.
2건의 항목
TableView 리팩토링 하다가 레거시를 다르게 바꿀 수 있을까하면서 알아보았다. 이걸 배우면 이런게 가능하다. 자동으로 이렇게 애니메이션을 처리해준다! iOS 13에서부터 적용가능하다.
설명 실제 동작하는 스타벅스 앱을 클론 코딩하였습니다. 처음으로 팀플을 진행했으며, commit convention, 브랜치 전략등을 사용해보았습니다.
15건의 항목 처음 10개의 태그
푸리에 급수(Fourier series)는 주기적인 함수를 다양한 주파수의 사인(sin)과 코사인(cos) 함수의 합으로 표현하는 수학적인 표현 방법이다. 주로 주기성을 가진 신호나 함수를 주파수 영역으로 분해하여 분석할 때 사용된다.
: 그래프의 노드 간선(Edge): 그래프의 노드를 연결하는 선 방향 (화살표) 무방향 그래프(Undirected Graph): 간선에 방향이 없는 그래프 방향 그래프(Directed Graph): 간선에 방향이 있는 그래프 값 가중치(Weight): 간선에 부여된 값 정의 그래프(Graph) 그래프(graph) G는 정점(vertex)의 집합 V와 간선(edge)의 집합 E로 구성된다.
1건의 항목
하드 디스크의 구조를 바탕으로 스케쥴링을 하는 방법에 대해 알아본다. 1. 디스크 스케줄링 보조기억장치는 현재 여러 가지 존재하지만 아직까지는 하드 디스크가 주로 사용된다. 하드 디스크의 구조는 앞서 살펴봤듯이 위 그림과 같다.
1건의 항목
이제 우리는 동시성 프로그래밍을 할 수 있다! 필요한 내용들을 어느정도 배웠다고 할 수 있다. 하지만, 동시성 프로그래밍이 어려운 이유는 별도의 작업흐름으로 공유 데이터에 접근하면서 발생하기 때문이다.
10건의 항목
stack view는 autolayout을 적용하지 않고도 layout을 잡을 수 있는 신기한 친구다. 한번 알아보자. 이 글을 읽기 위해서는 이전글을 읽고 오는 것이 이해가 쉽다.
확률분포에 대해 이해한다. 왜 배우는가? 실생활에서 결국 엔지니어가 수행하는 역할은, 다양한 문제에 대해 이를 다룰 수 있는 문제로 바꾸는 것에 있다. 확률과 같이 애매하게 보이는 개념을 어떻게 수치화하여, 다룰 수 있는 문제로 바꾸는지에 대한 내용이 대부분이다.
대표적으로 사용하는 이산 확률 변수에 대한 분포를 알아본다. 의미적으로 이해하는 것을 우선으로 한다. 초기하 분포 n번의 시행에서 k번 성공할 확률, 그런데 독립시행이 아닐 경우의 분포 주머니에 10개의 공이 있다. 이 때 파란공이 3개, 빨간공이 7개 이다.
대표적으로 사용하는 연속 확률 변수에 대한 분포를 알아본다. 의미적으로 이해하는 것을 우선으로 한다. 감마 분포 a번째 사건이 발생할 때까지 걸리는 시간에 대한 분포 음이항 분포와 매우 비슷하다.
확률 변수의 값이 성공 혹은 실패로 나타나는 경우에 따른 분포 동전을 던졌을 때, 앞면이 나오는 사건에 대한 값을 확률 변수로 잡는 경우가 해당된다. 해당 사건이 나오는 확률을 정의해야 분포가 정의된다.
p(x) = \delta(x - \mu) Dirac Delta Function은 0을 제외한 모든 곳에서는 값이 0이나, 적분하면 1이 되는 함수이다. 이를 확률 밀도함수 p(x)로 사용하면, x=\mu일 때 확률이 1이 되는 함수가 된다.
한번의 사건이 발생하는데 까지 걸리는 시간에 대한 분포 Poisson Distribution 에서는 단위 시간에 발생하는 횟수에 대해 궁금했다면, 이번에는 하나의 사건이 발생하는데 까지 걸리는 시간을 확률 변수로 잡는다. 이 때 발생하는 분포가 지수 분포이다.
확률질량의 최고점을 특정점에 두는 분포 Laplace(x| \mu, \gamma) = \frac{1}{2\gamma} \exp \left( -\frac{|x-\mu|}{\gamma} \right) 그려보면 x=\mu에서 최고점을 가지는 분포임을 알 수 있다.
혼합 분포 특정 분포를 만드는데 있어, 여러개의 확률 분포를 사용하는 것. 상황을 하나 생각해보자. 1에서 6까지의 숫자가 나열되어 있는 분포를 생각해보자. 해당 숫자들은 각기 다른 빈도를 갖고 있을 것이다. 그리고 주사위 하나를 생각해보자.
단위 시간 안에 사건이 몇 번 발생할 것인지에 대한 분포 버스정류장에 버스가 도착한다고 하자. 이 때, 단위 시간을 10분으로 설정했을 때, 10분안에 도착하는 버스의 수를 랜덤 변수로 정의했을 때 정의되는 분포이다.
3건의 항목
실버3 : 분할정복 문제이다. Code // // main.cpp // algorithm_prac // // Created by 최완식 on 2021/04/05.
실버1 : 분할정복 문제이다. 처음에 너무 삽질했다. 그냥 구조적으로 부족한 것 같다. Code // // main.cpp // algorithm_prac // // Created by 최완식 on 2021/04/05.
실버1 : 분할 정복 문제이다. 생각 특정 행렬을 10번 곱하라는 의미는, 곧 이렇게 해석 된다.
1건의 항목
내, 외부 네트워크 구간 사이에 위치한 중간 지점 접근 제한을 수행 외부 네트워크에서 직접 접근이 가능 설명 회사에서는 서비스를 제공하는 서버와 내부에서만 동작해야하는 서버가 있다.
2건의 항목
Domain Name Server 도메인이름을 치면 IP주소로 바꿔주는 서비스 naver.com -> 192.168.03.2 OR 192.168.03.2:80 그러면 어떻게 DNS서버를 들렀다 오는걸까? 그러면 매번 입력할 때마다 DNS를 들렀다 오는걸까? 브라우저 캐시에 저장되어 있다.
디바이스가 가지고 있는 고유의 물리적, 하드웨어 주소 패킷에 들어오는 mac 주소를 보고 적어둔 테이블을 기반으로 사설 IP주소를 알아낸다음 해당 디바이스로 데이터를 넘겨준다.
1건의 항목
에러 처리는 프로그래밍에서 빼놓을 수 없다. 에러 관리를 제대로 해두어야 추후 디버깅에 있어 이득을 볼 수 있다. 미래의 나를 위한 투자?의 개념이다. 에러를 관리하는 것도 중요하지만 에러를 내는 방법, 에러를 감지하여 처리하는 방법을 아는 것 역시 중요하다.
2건의 항목
Do ~ While 일단 Do 안에 있는 명령문을 실행하고 나중에 while문의 조건식 비교 적어도 한번은 명령문을 처리함 마지막에 세미콜론(;)을 반드시 추가해야 함 조건식을 검사하는 while(조건식)은 C 문장으로 여기기 때문 #include <stdio.h> int main() { int sum = 0; int number = 0; printf("1에서 10까지 합을 구합니다.\n"); do { number++; sum += number; } while(number<10); printf(&q...
기존에 작업한 글이 있어 링크로 대체한다. 05. Control Flow 06. Loop Part. 01 07. Loop Part. 02 iomanip library 기본적으로 iostream 라이브러리로 출력을 하게되면, 왼쪽 정렬이다.
4건의 항목
설치 brew install docker mac 용 도커 설치하기 Docker image download docker pull hugojuhel/notebook Docker Hub 에서 원하는 docker 이미지를 다운로드 혹은 아래 예제와 같이 명령어로 다운받을 수도 있음 사용한 이미지 Docker image 확인 docker images 설치한 이미지들을 볼 수 있다.
image 화 하기 코드가 다른 것으로 파악, 아래 코드는 동작한다.
Volume과 Mount Docker Conatiner에 쓰여진 데이터는 컨테이너가 삭제될 때 함께 사라진다. 하지만 이에 관계없이 우리는 데이터를 영속적으로 저장할 필요가 있다.
개념 개발자와 시스템 관리자가 컨테이너 기술을 사용하여 어플리케이션을 개발, 배포, 실행하기 위한 플랫폼 컨테이너 기술을 리눅스에서 사용되던 기술이다. 이 때, 이 기술을 사용하여 응용프로그램을 배포하는 것을 컨테이화 시킨 것이다.
1건의 항목
image 화 하기 코드가 다른 것으로 파악, 아래 코드는 동작한다.
1건의 항목
애플의 공식문서를 읽고, 개발에 참고해야 할만한 내용을 정리합니다.
1건의 항목
달러가 다른 주요 통화 전반에 강한지 약한지를 한 숫자로 재는 달러인덱스가 무엇이고, 원·달러 환율을 읽을 때 왜 이 지표를 같이 봐야 하는지 짚습니다. 2026년 중반 실제 데이터로 달러 강세와 원화 약세가 어떻게 겹쳤는지 살펴봅니다.
1건의 항목
Domain Name Server 도메인이름을 치면 IP주소로 바꿔주는 서비스 naver.com -> 192.168.03.2 OR 192.168.03.2:80 그러면 어떻게 DNS서버를 들렀다 오는걸까? 그러면 매번 입력할 때마다 DNS를 들렀다 오는걸까? 브라우저 캐시에 저장되어 있다.
1건의 항목
WWDC 24의 Swift 6 migration guide를 정리해본다.
1건의 항목
Overfitting? Train data set에서는 accuracy가 높게 나오지만, Test data set에서 accuracy가 낮게 나오는 현상 Layer수가 늘어날 수록 training err는 떨어진다.
1건의 항목
앱스토어에서 크래시가 나서 Reject을 당하면 Crash Report를 함께 준다. 해당 파일을 열어보면 이상한 숫자들만 가득하다. dSYM debug symbol file App을 Release한 뒤에 Crash를 진단할 수 있게 도와주는 파일이다.
1건의 항목
앞으로 그림에서 나오는 Swift version은 가상이다. 이해를 위해서 가상으로 적었다.
2건의 항목
냄새나면 당장 갈아라. 어떻게 하는지에 대해서 지금까지 배웠다. 하지만, “언제” 시작하고 그만할지를 판단하는 것은 또 다른 얘기다. 어떤 “냄새”를 맡았을 때 손을 대야할까? 기이한 이름 이름으로 이게 뭐하는 것인지 딱 볼 수 있게 작성해야 한다.
창발성 단순한 결합이 복잡한 결과를 나타내는 것을 뉴런 하나만으로 의미가 있을까? 뉴런이 모여 어떠한 인식을 하기 위해서는 수십억개의 뉴련이 상호작용해야 한다. 즉, 미시적인 부분의 각각의 특성만으로는 설명할 수 없는 전체로서 나타나는 복잡한 현상을 말한다.
1건의 항목
What is Array? 직접적으로 값을 순차적으로 매핑한다. C언어에서 오래된 기술이고, 객체가 아니다.
3건의 항목
다형성은 무엇인가? 왜 중요한가? Polymorphism poly + morph + ism: 다양한 + 변하다 + 상태 = 다양한 형태로 변할 수 있는 능력 많은 사람들이 OOP의 핵심이라 여기는 특징 같은 지시를 내렸는데 다른 종류의 개체가 동작을 달리 하는 것 어떤 함수 구현이 실행될지 실행중에 결정된다.
Static Binding (정적 바인딩) #include <iostream> #include <string> #include <vector> using namespace std; class Base{ public: void f(){cout << "Base::f()" << endl;} virtual void vf() {cout << "Base::vf()" << endl;} }; class Derived:public Base...
Dynamic Binding (동적 바인딩) 그런데, 우리가 두 클래스가 상속관계에 있다는 것을 안다면, 이 멤버함수를 자동으로 묶어줄 수는 없을까? 이제 override , virtual 의 강력한 기능을 알 수 있다.
1건의 항목
인터넷 공간 상에서 해당 단말기의 고유 주소 Socket을 통해 통신한다는 것은 알았다. 근데 우리가 전화를 걸더라도, 어디에 전화를 걸것인지 알아야 한다. 그걸 대표하는 것이 전화번호이다. 마찬가지로 통신을 하려면, 어디에 통신할 것인지 알려주는 과정이 필요하다.
1건의 항목
앞으로 진행할 긇에서는, Library와 Framework에 대해서 알아볼 것이다. 첫번째 순서로는 Library이다. Library & Framework 일단 간단하게 Library와 Framework에 대한 차이를 알아보고 가자.
1건의 항목
Deep Link 기존의, 즉 옛날옛적의 웹은 home page를 통해 각 문서에 접근하여 정보를 얻는 방식을 취했었다.
1건의 항목
운영체제에서 중요한 부분인 메모리 관리 기능에 대해 알아보자. 메모리는 CPU 자원만큼 컴퓨터를 사용하는데 매우 중요한 자원 중 하나이다.
33건의 항목 처음 10개의 태그
실버1 : 동적 계획법 문제이다. 생각 전형적인 dp 문제이다. 다만 이 문제는, 경로를 추적해야 한다는 점에서 조금 다르다. 경로를 추적하는 방법으로는 dp를 미리 구해놓고, 이것을 역으로 추적하여 구하는 방법이 가장 간단하다.
실버5 : 동적 계획법 문제이다. 생각 생각 보다 힘들게 푼 문제이다. n이 50000이고, 시간 제한이 0.5초이기 때문에 완전탐색으로 풀면 힘들 것이라 생각했다. 그래서 동적 계획법 방법으로 풀이를 채택했다. 이 문제는 동전 문제와 비슷하게 생각해야 한다.
골드5 : 동적계획법 문제이다.
실버1 : 동적계획법 문제이다. 생각 동적 계획법하면 유명한 문제이다. 나는 동적 계획법을 풀 때 보통 두가지 방법을 많이 사용한다. 상태에 대한 정의와 점화식을 직관으로 때린다. (감..) 순차적으로 완전 탐색 방법으로 그려본다.
실버2 : 동적 계획법 문제이다. 생각 dp의 정의는 간단하게 생각할 수 있다.
골드3 : 동적 계획법 문제이다. 생각 dp의 정의는 간단하게 생각할 수 있다. 이 문제는 가장 긴 감소하는 부분 수열, 가장 긴 증가하는 부분 수열을 합한 문제이다.
골드4 : 동적 계획법 문제이다. 생각 전형적인 dp 문제이다. 다만 이 문제는, 경로를 추적해야 한다는 점에서 조금 다르다. 경로를 추적하는 방법으로는 dp를 미리 구해놓고, 이것을 역으로 추적하여 구하는 방법이 가장 간단하다.
실버2 : 동적계획법 문제이다.
실버2 : 동적계획법 문제이다. 풀이 그냥 합을 구하는 문제이다.
실버1 : DFS 문제이다. 풀이 DFS와 동적계획법이 섞인 문제이다. 일단, 특정 위치까지 갈 수 있는 모든 경우의 수를 구해야 하는데, 그냥 방문할 때마다 count를 늘려준다면, 중복해서 방문하는 곳이 너무 많아 비효율 적이다.
1건의 항목
GoF의 디자인 패턴, 프록시 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
2건의 항목
다형성은 무엇인가? 왜 중요한가? Polymorphism poly + morph + ism: 다양한 + 변하다 + 상태 = 다양한 형태로 변할 수 있는 능력 많은 사람들이 OOP의 핵심이라 여기는 특징 같은 지시를 내렸는데 다른 종류의 개체가 동작을 달리 하는 것 어떤 함수 구현이 실행될지 실행중에 결정된다.
Early Binding과 Late Binding은 성능에서 어떤 차이가 나는가? 실제로는 어떻게 사용하는가? 알게 모르게 당연하게 사용하고 있는 다형적 메서드는 무엇이 있을까? 이른 바인딩 vs.
1건의 항목
지구 타원체 지구의 단면은 타원 장반경 a, 단반경 b라 했을 떄, {{a-b}\over a} = f f를 편평률이라 한다. a, b가 많이 차이나면 값이 크다 == 많이 찌그러져 있다. 그리고 이렇게 타원체로 만든 것을 지구 타원체라 한다.
1건의 항목
비트코인에서 사용하는 타원곡선은 무엇일까? 비트코인에서 사용하는 타원 곡선 지금까지는 타원곡선에 들어가는 유한체의 위수를 작은 소수를 사용했다. 하지만 실전에서는 매우 큰 소수를 사용하여 컴퓨터로 탐색이 불가능하게 만든다.
1건의 항목
네트워크 구조 네트워크 엣지(Network Edge) 말단 device, 우리가 사용하는 대부분의 기기에 해당한다. 네트워크 코어(Network Core) 엔드 시스템을 연결하기 위한 중간의 매개들을 말한다.
1건의 항목
What is convolution 하트시그널을 봤다. 그 무엇보다도 치열한(..) 구애 행위와 두뇌게임을 봤다. 내가 누군가한테 구애 행위를 하는 것은 구애 받는 사람의 상태에 따라 YES, 혹은 NO가 나올 거다.
1건의 항목
순수 함수형 프로그래밍언어 Haskell에는 Either라는 자료구조가 있다. 둘 중 하나의 타입을 가질 수 있는 경우 사용하는 자료구조라 한다. 이 Either 자료구조에 영감을 얻어 태어난 것이 Swift의 Result라 한다.
1건의 항목
실제 컴파일, 링킹이 끝난 뒤의 결과물에 대해서는 잘 모르는 것 같다. 실행 파일은 어떻게 구성되어 있는 걸까? 우리가 사용하는 프로그램들은, 바이너리화되어 있는 파일의 형태로 존재한다. 그런데, 이 실행파일의 형태는 OS에 따라 다른 형태로 존재한다.
4건의 항목
Inter Process Communication 프로세스는 완전히 독립된 실행객체이다. 서로 독립되어 있다는 것은 다른 프로세스의 영향을 받지 않는다는 장점이 있다.
암호학에서 중요하게 사용되는 타원곡선에 대해 알아보자. 왜 해당 곡선을 사용할까? 타원곡선 y^2 = x^3 + Ax + B 위의 방정식의 형태로 나타나는 곡선 타원의 둘레를 구하기 위한 적분, 이의 역함수를 구하는 과정에서 유래했다.
타원 곡선을 알아보았다면, 이걸 토대로 암호를 만들어보자. 유한체에서 정의된 타원 곡선 2장에서 보았던 타원 곡선은 “실수체”에서 정의되었다. 무한집합 그렇기 때문에 꽉 찬 곡선으로 보였던 것 이제 이 정의되는 공간을 유한체로 바꿀 것이다.
비트코인에서 사용하는 타원곡선은 무엇일까? 비트코인에서 사용하는 타원 곡선 지금까지는 타원곡선에 들어가는 유한체의 위수를 작은 소수를 사용했다. 하지만 실전에서는 매우 큰 소수를 사용하여 컴퓨터로 탐색이 불가능하게 만든다.
2건의 항목
주어진 모델의 파라미터가 주어졌을 때, 관찰된 데이터가 실제로 나타날 확률.
혼합 분포 특정 분포를 만드는데 있어, 여러개의 확률 분포를 사용하는 것. 상황을 하나 생각해보자. 1에서 6까지의 숫자가 나열되어 있는 분포를 생각해보자. 해당 숫자들은 각기 다른 빈도를 갖고 있을 것이다. 그리고 주사위 하나를 생각해보자.
1건의 항목
창발성 단순한 결합이 복잡한 결과를 나타내는 것을 뉴런 하나만으로 의미가 있을까? 뉴런이 모여 어떠한 인식을 하기 위해서는 수십억개의 뉴련이 상호작용해야 한다. 즉, 미시적인 부분의 각각의 특성만으로는 설명할 수 없는 전체로서 나타나는 복잡한 현상을 말한다.
3건의 항목
Encapsulate Record, 레코드 캡슐화 하기를 알아보자.
Encapsulate Collection, 컬렉션 캡슐화 하기를 알아보자.
Replace Primitive With Object, 기본형을 객체로 바꾸기를 알아보자.
10건의 항목
JPG(Joint Photographic Experts Group) 정의: 정지 화상을 위해서 만들어진 손실 압축 방법 표준 핵심: 전체적 구조 손실보다 디테일 손실에 둔감하다는 점을 통해 압축 원리: 이미지의 고주파 성분의 일부를 제거함.
PNG(Portable Network Graphics) 핵심: 비손실 압축 방법 원리 Huffman coding를 통한 압축 그렇기 때문에 반복되는 이미지가 등장할 경우 PNG가 보다 효과적 장점: 투명도 사용가능, 비손실 압축, 32비트 트루컬러, 크게 색상 변화가 크지 않은 이미지의 경우 사용하는 것이 좋다.
서명 역시 검증을 위해 전파될 필요가 있다. 즉, 직렬화가 필요하다. DER(Distinguished Encoding Rules) 서명에 대해 앞에서 공부했을 때 핵심은 r, s의 값이었다.
공개키 비트코인 주소 형식에 대해 알아본다. 이는 곧 “주소”이다. 비트코인 주소 WIF(Wallet Import Format) 앞에서 공개키와 비밀키, 그리고 서명, 검증 방식에 대해 알아보았다. 그리고 이를 직렬화하는 방법도 배웠다.
가변적인 수를 Encoding하는 방법 중 하나인 Varints 형식을 알아보자. Varint 이전에 Input, output등의 개수를 나타낼 때 있어 varint 형식을 사용한다고 했었다. 여기서 간단하게 알아보자.
Base64에서 URL에서 사용하는 문자열을 제외한 Encoding 방식 +, /, = 가 URL에서 사용하는 문자임 : 띄어쓰기, / : 경로구분자, = : name과 value사이에 쓰는 기호 (Query) 이에 아래와 같이 문자를 변경함 Reference RFC4648 .
이진 데이터를 문자코드에 영향을 받지 않는 공통 ASCII 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식 Base64 == 64개 값을 하나의 데이터로 인코딩한다. == 6개의 비트 2^6 = 64 를 인코딩한다. Reference RFC4648 .
인코딩을 공부하면서, 바이트 오더링이라는 단어를 들어보았다. 처음 들어본 단어라, 간단하게 정리해보려 한다.
네트워크 공부를 하다보니, 인코딩이라는 것에 대해 제대로 이해할 필요가 있다고 생각했다. 왜 필요한지, 어떻게 사용하는지에 대해서 이해해보는 포스팅이다.
빈도수가 높으면 낮은 비트, 높으면 높은 비트, 이진 트리를 사용하여 나타내기 때문에 보다 효율적 압축 가능 Reference Huffman coding .
1건의 항목
공개키 비트코인 주소 형식에 대해 알아본다. 이는 곧 “주소”이다. 비트코인 주소 WIF(Wallet Import Format) 앞에서 공개키와 비밀키, 그리고 서명, 검증 방식에 대해 알아보았다. 그리고 이를 직렬화하는 방법도 배웠다.
1건의 항목
인코딩을 공부하면서, 바이트 오더링이라는 단어를 들어보았다. 처음 들어본 단어라, 간단하게 정리해보려 한다.
1건의 항목
인코딩을 공부하면서, 바이트 오더링이라는 단어를 들어보았다. 처음 들어본 단어라, 간단하게 정리해보려 한다.
1건의 항목
실제 Functor는 무엇을 의미하는가? Functor 카테고리 사이에서의 사상(morphisms) 동질의 대상들을 규정하면, 그 사이를 비교하거나 대응하기 위한 수단도 필요하다. 집합의 경우 집합 사이의 함수가 그것이다.
2건의 항목
2026년 6월 Anthropic이 낸 발표 네 건을 읽고, "성능 자랑"보다 "어떻게 기업 안으로 파고드는가"라는 한 줄기 흐름으로 정리합니다.
Claude를 만드는 AI 회사 Anthropic이 왜 계속 뉴스에 등장하는지 짚습니다. 기업 시장으로 확장하려는 힘과 배포를 통제하려는 정부의 힘이 이 회사에서 어떻게 부딪히는지, 무엇을 보면 다음 국면을 읽을 수 있는지 살펴봅니다.
1건의 항목
정보이론에서 확률 변수(Random Variable) 의 불확실성을 정량화하는 척도 Shannon Entropy 이산 확률 변수 X의 섀넌 엔트로피 H(X)는 다음과 같이 정의된다.
3건의 항목
Swift는 객체의 느낌으로 사용하는 3개의 개체가 있다. struct, class, enumeration이 그것이다. struct는 apple에서 권장하고, 실제로도 대체하는 것이 좋다고 생각되는 자료구조이고, enum의 경우 다른 언어보다 기능이 많이 추가되었다.
static 변수 및 함수는 인스턴스를 생성하지 않고 접근하기 위해 사용한다. swift에서는 어디서 관리하는 것이 좋을까? swift에서 사용하는 Method가 궁금하다면 해당글을 읽고 오자.
Enumeration 연관된 Value들의 공통 Type을 정의할 경우 사용 Type-Safe한 방법으로 사용 가능 특정 값으로 Raw Value 지정 필수 아님 Raw Value 사용 가능 자료 구조 String Chracter Integer Floating-point 사용 가능 기능 Computed Property Instance method Initializer Extension Protocol Raw Value의 묵시적 할당 enum Planet: Int { case mercury = 1, venus, earth, mars,...
1건의 항목
왜 필요한가? 주기적인 포맷이 필요하다는 것을 느꼈다. 7년동안 정리를 안하다보니 나도 스트레스를 받더라. 그럴 때마다 기존에 사용하는 환경을 다시 구축하는게 너무나 시간낭비고 하기 싫었다.
1건의 항목
범주론에서의 카테고리에 대해 알아보자. 프로그래밍과 무슨 관계가 있는가? 왜 이런 메타수학에서 사용되는 개념이 프로그래밍에서 사용될까? 프로그래밍에서 공통적으로 나타내는 개념들 사이의 관계가 카테고리의 조건에 딱 들어맞는다. 모든 프로그래밍 언어에는 타입이 있다.
1건의 항목
실수 표현 부동 소수점으로 표현한다. 지표 + 가수로 표현된다. 왜 쓰는가? 고정 소수점으로 쓸 경우, 큰 수 (10^23) 과 같은 수를 표현하기 위해 많은 양의 비트가 필요하게 된다.
10건의 항목
개체 지향을 얘기하면 꼭 나오는 단어인 예외에 대해서 알아본다. Exception 사실 예외는 개체지향의 일부가 아니다.
예외 처리를 제대로 하지 못하는 이유는 무엇일까? 예외 처리를 제대로 하지 못하는 이유 과거에 주류이던 예외 처리 방식은 지속적으로 작동이 보장되어야 하는 프로그램에 대해 “하드웨어가 멈추는 크래시”가 무서워서 그랬을 수 있다.
그래서 예외는 어떻게 처리하는 것이 좋은걸까? 오류 상황 예외 상황과 오류 상황을 다른 의미로 사용할 것 오류 상황은 error condition을 말함 이 오류 상황을 처리하는 방법 중에 예외가 있음 오류 상황은 예측 가능한 상황을 의미함 프로그램 실행 중에 기본적으로는 일어나지 않음 하지만 일어날 수 있는 일 따라서 이러한 상황을 처리하는 코드는 프로그램 기능의 일부임 프로그래머가 이를 예측하지 못했다면? 버그 오류 상황을 처리하는 4가지 방법 무시 곧바로 크래시 일단은 작동하는데 언젠가는 크래시 안정적이지 못한 상태로 계속 동...
깨끗한 코드와 오류 처리는 화실히 연관성이 있다. 하지만 오류 처리로 인해 프로그램 논리를 이해하기 어려줘진다면 깨끗한 코드가 아니다. 오류보다 예외를 사용하라 에전 프로그래밍 언어는 예외를 지원하지 않았다.
예외 처리 예외 처리를 사용하므로써 알고리즘이 마주할 수 있는 예외 상황에 대해 코드를 분리할 수 있다. 이 결과 알고리즘에 보다 집중할 수 있다. 에러를 만들어 보자.
에러 처리는 프로그래밍에서 빼놓을 수 없다. 에러 관리를 제대로 해두어야 추후 디버깅에 있어 이득을 볼 수 있다. 미래의 나를 위한 투자?의 개념이다. 에러를 관리하는 것도 중요하지만 에러를 내는 방법, 에러를 감지하여 처리하는 방법을 아는 것 역시 중요하다.
TableView의 index를 조정하면서 NSNotFound라는 값을 넣어주는 것을 보게되었다. 왜 이런 것이 필요한지 알아본다. 핵심 정리 ObjectiveC에는 Optional이 없다.
디지털 컴퓨터에서 연속적인 대상을 다루는 수학을 처리할 경우 근본적인 문제가 있다. 무한에 가까운 정보를 정해진 비트 패턴으로 표현해야 한다는 것이다. 이는 거의 모든 실수의 경우 근사 오차가 발생한다는 것을 암시한다.
Motivation of Pivoting 가우스 소거법과, 가우스-조르당 방법에서 대각행렬을 기준으로 수행한다는 것은 명백하다. 우리는 그래서 이 대각 행렬의 요소를 Pivot 이라 부른다.
모집단을 추정하기 위한 표본을 추출하는 방법에 대해 알아본다. 표본 추출 단순 랜덤 추출 단순히 랜덤하게 모집단에서 추출하는 방법이다. 집단의 분포가 불균형할 경우 모집단의 특성을 대변하지 못한다는 단점이 있다.
7건의 항목
학창시절 어릴 적 똑똑한 아이로 알려졌던 나는, 오히려 중학교, 고등학교를 가면서 좌절을 맛봤다. 머리가 좋은 줄 알았는데 그게 아니었다.
말은 정말 어렵다. 그 사람에게 느끼는 특정 감정들 자체와 별개로 다르게 표현되어 그 사람에게 닿는다. 특히 나는 그게 더 심한 듯하다. 자신의 감정 자체를 솔직하게 일상에서 전달하는 것이 부끄럽다. 속으로는 전혀 그렇게 생각하지 않지만 그와 반대된 표현으로 말한다.
바람이 많이 불었다. 가만히 있기만 해도 몸이 밀릴 정도의 강한 비바람이었다. 더워서 열었던 창문까지 닫아야 할 정도였다. 바깥에 풀들도 그 강한 힘을 이기지 못하고 이리저리 흔들렸다. 그럼에도 곧게 뻗은 나무는 본인의 단단함을 자랑하듯 꼿꼿이 서있었다.
무기력증이 도졌다. 새벽같이 일어나 운동을 하고, 샤워하고, 팟캐스트를 들으며 힘차게 출근하는 게 전과 같이 즐겁지 않았다. 일이라는 것은 내 삶에 있어서 큰 부분을 차지한다. 그럼에도 즐겁지 않게 된 것은 무슨 연유였을까.
자유란 무엇인가? 질문이 너무 추상적이다. 인류가 지성이 생긴 이래 자신도 모르게, 혹은 의도적으로 생각해 온 문제임이 분명하다. 짧은 식견이지만 나름대로의 생각을 적어본다. 자유는 모든 의존이 끊어진 상태이다. 여기서 의존은 사회적, 물질적 관계를 포괄하는 단어이다.
긴 연휴가 시작되었다. 어린이날, 주말, 그리고 대체휴일로 지정된 근로자의 날까지 총 4일의 달콤한 휴일이 나를 반겼다. 첫 직장인으로서의 기나긴 연휴는 신입사원의 긴장을 잠시나마 늦춰줄 수 있는 쉼터와 같았다.
감정은 우연히 찾아온다 우연히 Github Repo에 들어가 봤습니다. 학창 시절, 멋모르고 마구잡이로 만들었던 저장소들이 마음에 들지 않았기 때문이에요.
5건의 항목
우리가 가장 못하는 행위인 추정에 대해 알아보자. 추정 가장 단순하면서도 가장 두려운 행위다. 큰 사업가치가 추정에 따라 좌지우지된다. 사업부와 개발자를 벌어지게 만드는 제 1요소이다. 불신감의 원인은 대부분 추정이다.
이상적 시간과 실제 경과 시간 축구 한게임하는데 시간이 얼마나 걸릴까? 누구는 90분, 누구는 3시간이라 말할 것이다. 90분은 이상적 시간에 대응되고, 3시간은 실제 경과 시간에 대응된다고 볼 수 있다.
수확 체감의 법칙 수확 체감의 법칙은 노동을 더 투입한 만큼에 비례하여 결과가 늘어나지 않음을 말한다. 계획 추정에 있어서도 비슷하다. 적은 시간 투자를 통해 얻는 결과와 많은 시간 투자를 통해 얻은 결과가 크게 다르지 않다.
재 추정을 하면 안 되는 경우 첫번째 이터레이션을 한 후, 1, 2번 스토리를 마무리했다고 생각해보자. 원래는 4개의 스토리 모두를 한 이터레이션에 할 수 있을 것이라 생각했다.
규모 추정에는 스토리 점수와 이상적 작업일이라는 두 수단이 있다. 각각 나름의 장단점이 있는데, 어떻게 활용하는 것이 좋은지에 대해 얘기해본다. 스토리 점수의 장점 스토리 점수는 팀원들로 하여금 기능간 경계를 뛰어 넘게 한다.
3건의 항목
랜에서 데이터를 정상적으로 주고 받기 위해 필요한 계층 앞은 전달하기 위해 변환하는 과정이 주라 생각 MAC Address Ethernet = Switch 트레일러 FCS(Frame Check Sequence) 전송중 오류 발생 확인 용도 프레임 Ethernet 헤더와 트레일러가 추가된 데이터 MAC Address를 통한 프레임 전송 과정 A에서 B로 데이터를 전송한다고 생각해보자.
일반적으로 데이터 링크 계층에서 가장 많이 사용되는 규칙 랜에서 사용되는 규칙 허브와 같은 장비에 연결된 컴퓨터와 데이터를 주고받을 때 사용 허브는 근본적으로 전기 신호를 받을 포트 뿐만 아니라 다른 포트에도 전달함 이 부분이 상당히 문제임.
비트 0, 1 비트가 모여 데이터 구성 비트를 주고 받는 것이 통신의 본질 바이트 = 8비트 워드 = 1바이트가 2개 (16비트) 데이터가 어떻게 전기 신호로 전달? 데이터가 전달되지 않을 때 전기적 신호가 존재 Clock 신호 CPU는 해당 신호에 맞춰 일을 처리한다.
1건의 항목
네트워크 공부를 하다보니, 인코딩이라는 것에 대해 제대로 이해할 필요가 있다고 생각했다. 왜 필요한지, 어떻게 사용하는지에 대해서 이해해보는 포스팅이다.
1건의 항목
확률에 대해 이해한다. 사건에 확률을 부여하는 방법 동전의 앞면이 나오는 것을 사건 A라 정의했을 때, P(A)를 구하는 방법에 대해 알아보자. 고전적 방법 단순히 1/2라 생각한다. 이 생각의 배경에는 앞면과 뒷면이 나오는 가능성이 동일하다 생각하고 부여한다.
2건의 항목
무심코 사용하는 많은 비동기 함수들은 사실 변화의 과정을 겪은 결과들이다. 네트워크 I/O API가 어떻게 변화되어 왔는지 알아보자. 한눈에 보기 network API를 사용하다보면 자연스레 머리에 이런 그림이 떠오른다.
이러한 문제에 대해 가장 쉬운 해결 방법은 서버쪽에서 Ready 상태일 때, client로 정보를 밀어넣어주는 것이다. 이렇게 처리할 경우, 이제 정보 제공 Event는 Server로부터 시작된다고 할 수 있다.
6건의 항목
개체 지향을 얘기하면 꼭 나오는 단어인 예외에 대해서 알아본다. Exception 사실 예외는 개체지향의 일부가 아니다.
예외 처리를 제대로 하지 못하는 이유는 무엇일까? 예외 처리를 제대로 하지 못하는 이유 과거에 주류이던 예외 처리 방식은 지속적으로 작동이 보장되어야 하는 프로그램에 대해 “하드웨어가 멈추는 크래시”가 무서워서 그랬을 수 있다.
그래서 예외는 어떻게 처리하는 것이 좋은걸까? 오류 상황 예외 상황과 오류 상황을 다른 의미로 사용할 것 오류 상황은 error condition을 말함 이 오류 상황을 처리하는 방법 중에 예외가 있음 오류 상황은 예측 가능한 상황을 의미함 프로그램 실행 중에 기본적으로는 일어나지 않음 하지만 일어날 수 있는 일 따라서 이러한 상황을 처리하는 코드는 프로그램 기능의 일부임 프로그래머가 이를 예측하지 못했다면? 버그 오류 상황을 처리하는 4가지 방법 무시 곧바로 크래시 일단은 작동하는데 언젠가는 크래시 안정적이지 못한 상태로 계속 동...
깨끗한 코드와 오류 처리는 화실히 연관성이 있다. 하지만 오류 처리로 인해 프로그램 논리를 이해하기 어려줘진다면 깨끗한 코드가 아니다. 오류보다 예외를 사용하라 에전 프로그래밍 언어는 예외를 지원하지 않았다.
예외 처리 예외 처리를 사용하므로써 알고리즘이 마주할 수 있는 예외 상황에 대해 코드를 분리할 수 있다. 이 결과 알고리즘에 보다 집중할 수 있다. 에러를 만들어 보자.
에러 처리는 프로그래밍에서 빼놓을 수 없다. 에러 관리를 제대로 해두어야 추후 디버깅에 있어 이득을 볼 수 있다. 미래의 나를 위한 투자?의 개념이다. 에러를 관리하는 것도 중요하지만 에러를 내는 방법, 에러를 감지하여 처리하는 방법을 아는 것 역시 중요하다.
1건의 항목
정렬에 대해 깊게 공부해보자.
1건의 항목
실제 컴파일, 링킹이 끝난 뒤의 결과물에 대해서는 잘 모르는 것 같다. 실행 파일은 어떻게 구성되어 있는 걸까? 우리가 사용하는 프로그램들은, 바이너리화되어 있는 파일의 형태로 존재한다. 그런데, 이 실행파일의 형태는 OS에 따라 다른 형태로 존재한다.
7건의 항목
골드3 : 완전탐색 문제이다. 삼성 A형 기출이다. 생각 시간이 1초라, 제한 시간에 들어올 수 있는지 시간 복잡도 계산부터 진행했다. 최악의 경우 100개의 공간에 모두 1이 차있는 경우 한 개의 공간에서 색종이를 5번 검사해야 한다.
골드5 : bfs 문제이다. 생각 최소 경로를 묻는 문제로써, 완전 탐색으로 풀이할 수 있다. 이 때, 중요한 점은, 한번의 스텝을 넘어감에 있어서 소수여야 한다는 것, 그리고 불가능하다는 것을 알려주기 위한 visited를 만드는 것이다.
골드4 : 완전 탐색 문제이다. 풀이 이게 전날에 급하게 짜다가 조건을 놓친 문제인데, 오늘의 첫문제로 도전해보았다. 난 BFS로 문제 풀이방향을 정했는데, 문제가 방문이 중복으로 일어난다는 것이다.
실버1 : 완전 탐색 문제이다. 풀이 그냥 가능성을 다 구한다. 그런데 시간 초과가 날수도 있다. 왜냐하면 +-*/가 중복될 수 있으니까 그래서 set으로 이런 중복을 제거한후 주르륵 계산해서 답.
실버2 : 완전 탐색 문제이다. 풀이 기존 것에 비해 연산자 개수가 늘어난 문제. 단순한 순열로 풀면 44P10의 연산 결과라 못푼다. 그냥 완전탐색으로 풀면되긴한데, 백준에서 pypy로 제출했더니 틀렸다고 해서 당황했다.
풀이1 실버5 : 브루트포스 문제이다. Code // // main.swift // CodingTest // // Created by 최완식 on 2021/08/15.
실버1 : 완전 탐색 문제이다. 풀이 매우 막 푼 풀이. 좋지 않다.
2건의 항목
Test라는 과정은 사실 공학 어디에서든 등장하는 개념이다. 작업에 의존도가 있고, 복잡한 과정으로 넘어갈 수록 이전 단계의 오류는 치명적이기 때문이다. 이를 관리하는 방법이 Test라 할 수 있다. 소프트웨어에서 역시 이러한 개념이 적용된다.
확률변수 X가 따르는 분포 P(X)에서 추출된 x 로 구성된 함수 f(x)에 대한 평균 \mathbb{E} \mathbb{E}_{X \sim P} [f(x)] = \sum_x P(x) f(x) \mathbb{E}_{X \sim P} [f(x)] = \int p(x) f(x) \, dx 만약 \mathbb{E}_{X \sim P} 에서 확률분포 P(X)를 확실히 알 수 있다면 생략한다.
1건의 항목
미국 정부가 국가안보를 이유로 최신 AI 모델의 접근을 갑자기 막았다가 18일 만에 풀었습니다. 그 사이 무슨 일이 오갔는지, 발표문이 주장하는 것과 실제로 확인되는 것을 갈라 짚습니다.
1건의 항목
Extension과 Protocol은 Swift에서 자주 사용되는 기능이다. 값에 접근이 불가함에도 Extension으로 추가 기능을 구현할 수 있다.
2건의 항목
Extract Function, 함수 추출하기에 대해 알아보자.
Extract Variable, 변수 추출하기를 알아보자.
1건의 항목
소수설 주창중 하나인 eXtreme Programming에 대해 알아보자.
1건의 항목
3D 프린터에서 소재를 층층이 녹여 모델을 만드는 부분. 익스트루더(Extruder)는 3D 프린터에서 소재를 층층이 적층하여 모델을 만드는 핵심 부품 중 하나입니다.
2건의 항목
GoF의 디자인 패턴, 팩토리 메서드 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
팩토리 메서드는 무엇일까? 무엇이 좋을까? Factory Method 사용할 클래스를 정확히 몰라도 개체 생성을 가능하게 해주는 패턴 public final class Cup { private int sizeMl; private Cup(int sizeMl) { this.sizeMl = sizeMl; } public static Cup createOrNull(CupSize size) { switch (size) { case SMALL: return new Cup(355); case MEDIUM: return new Cup(473); ...
2건의 항목
핵심 아이디어 Feature Extraction, classification, bounding box regression까지 한번에 학습할 수 있는 모델을 만들자! Fast R-CNN은 이전 SSP Net이 가지는 한계점을 극복하는 시도에서 출발한다.
핵심 아이디어 Region Proposal도 Network안에 포함시키자! Faster R-CNN의 핵심 아이디어는 Resion Proposal Network(이하 RPN)이다.
2건의 항목
핵심 아이디어 Region Proposal도 Network안에 포함시키자! Faster R-CNN의 핵심 아이디어는 Resion Proposal Network(이하 RPN)이다.
개요 structure of mask RCNN Facebok AI Research (FAIR), Kaiming He, 24 Jan 2018 Marr Prize at ICCV 2017 object instance segmentation을 위한 프레임 워크이다.
1건의 항목
보조 기억 장치에 저장되는 파일의 할당에 대해 알아본다. 컴퓨터 시스템 자원 중 가장 중요한 것은 CPU이다. CPU 자원 관리에 대해서는 맨 처음 부분에서 다루었으며 CPU 스케줄링, 프로세스 동기화 등에 대해서 배웠다.
1건의 항목
CPU 스케쥴링에 대해 알아본다. CPU가 하나의 프로세스 작업이 끝나면 다음 프로세스 작업을 수행해야 한다. 이때 다음 프로세스가 어느 프로세스인지를 선택하는 알고리즘을 CPU Scheduling 알고리즘이라고 한다.
1건의 항목
Task Segmentation semantic segmentation은 이미지 내에 있는 물체들을 의미 있는 단위로 분할해내는 것이다. 좀 더 구체적으로 이야기하면, 이미지의 각 픽셀이 어느 클래스에 속하는지 예측하는 것이다.
2건의 항목
PLA ABS.
Fused Deposition Modeling, Fused Filament Fabrication(FFF) 재료를 녹는점 이상의 온도로 녹인 후 일정한 두께로 층을 만들어 쌓아올리는 방식이다. 장점 저렴하다. 유지보수 난이도가 적다. 소재의 범위를 확장할 수도 있다.
2건의 항목
코드를 짜다보면, 어느새 얽히고 섥혀있는 내 프로젝트를 마주한다. 부지런함이 개발자의 덕목이 아닌가라고 생각될 정도로 항상 깔끔함을 유지하는 것이 참 중요하다는 생각이 들곤한다. 혹은 미래의 나와 과거의 나가 항상 현재에서 싸우는 듯하기도 한다.
냄새나면 당장 갈아라. 어떻게 하는지에 대해서 지금까지 배웠다. 하지만, “언제” 시작하고 그만할지를 판단하는 것은 또 다른 얘기다. 어떤 “냄새”를 맡았을 때 손을 대야할까? 기이한 이름 이름으로 이게 뭐하는 것인지 딱 볼 수 있게 작성해야 한다.
1건의 항목
Bitcoin Programming 책을 읽으며 이해한 내용에 대해 정리한다. 첫번째는 유한체이다.
1건의 항목
Fused Deposition Modeling, Fused Filament Fabrication(FFF) 재료를 녹는점 이상의 온도로 녹인 후 일정한 두께로 층을 만들어 쌓아올리는 방식이다. 장점 저렴하다. 유지보수 난이도가 적다. 소재의 범위를 확장할 수도 있다.
1건의 항목
실버3 : 동적계획법 문제이다. 생각 이 문제의 핵심은, 최고자리 숫자가 0 또는 1일 때의 상황을 분리해서 생각해보는 것이다. 이유는 나열하면 금방 알아차릴 수 있다.
1건의 항목
Bitcoin Programming 책을 읽으며 이해한 내용에 대해 정리한다. 첫번째는 유한체이다.
5건의 항목
Numpy.loadtxt() 단, csv 파일의 모든 값이 같은 자료형이어야 한다.
운영체제의 주요 서비스: 프로세스, 메모리, 파일관리, 시스템 호출에 대해 알아본다. 운영체제의 주요 서비스는 하드웨어 자원을 각 사용자 애플리케이션에 적절히 분배해주는 것이다.
보조 기억 장치에 저장되는 파일의 할당에 대해 알아본다. 컴퓨터 시스템 자원 중 가장 중요한 것은 CPU이다. CPU 자원 관리에 대해서는 맨 처음 부분에서 다루었으며 CPU 스케줄링, 프로세스 동기화 등에 대해서 배웠다.
fstream Reading from file #include <iostream> #include <fstream> #include <string> using namespace std; int main(){ string line1; string line2 ifstream myfile("input.txt"); if (myfile.is_open()){ if(!myfile.eof()){ // end of file 이 아니면 계속 진행.
컴퓨터를 통한 문제 해결을 위해서 우리는 정수, 실수, 문자열 등을 프로그램 실행중에 만들어서 사용하였다.
1건의 항목
Early Binding과 Late Binding은 성능에서 어떤 차이가 나는가? 실제로는 어떻게 사용하는가? 알게 모르게 당연하게 사용하고 있는 다형적 메서드는 무엇이 있을까? 이른 바인딩 vs.
1건의 항목
개체 지향을 얘기하면 꼭 나오는 단어인 예외에 대해서 알아본다. Exception 사실 예외는 개체지향의 일부가 아니다.
1건의 항목
정의 자산의 가격 움직임이 특정 지수(예: KOSPI, S&P 500) 대비 얼마나 강하거나 약한지를 측정하는 기술적 분석 지표 주로 투자자가 특정 주식의 성과를 시장 전체와 비교하거나, 강세/약세 종목을 식별할 때 사용 정의 상대 강도는 주식의 가격 상승률(또는 하락률)을 특정 지수의 상승률(또는 하락률)과 비교하여 계산 주식의 상대적 강도를 평가해 시장 대비 초과 성과(Outperformance) 또는 저조한 성과(Underperformance)를 판단 계산 방법 \text{상대 강도(RS)} = \frac{\text{주...
1건의 항목
핵심 요약 각각의 테마가 생산할 또는 절약할 돈의 양을 추정할 수 있다면, 우선순위에 반영할 수 있다. 재정적 가치는 제품 책임자의 역할이나, 이 책임에서 모두가 자유로운 것은 아니다. 재정적 가치 결정 회의의 목적은 각 테마에 대한 아래의 명세서를 완성하는 것이다.
2건의 항목
Bitcoin Programming 책을 읽으며 이해한 내용에 대해 정리한다. 첫번째는 유한체이다.
타원 곡선을 알아보았다면, 이걸 토대로 암호를 만들어보자. 유한체에서 정의된 타원 곡선 2장에서 보았던 타원 곡선은 “실수체”에서 정의되었다. 무한집합 그렇기 때문에 꽉 찬 곡선으로 보였던 것 이제 이 정의되는 공간을 유한체로 바꿀 것이다.
2건의 항목
개밥줬어? Stack: Firebase, MVC, UIKit, iOS Team: 팀 프로젝트 Role: 개발 진행 기간: 2021/09/23 → 2021/09/24 About: 우리집 강아지 생존권을 확립하는 식사 여부 확인 애플리케이션 개요 GitHub - wansook0316/bookathon_G: 개밥줬어? 기획의도 개밥줬어? 모두가 바쁜 요즘 우리집 강아지 밥은 누가 챙겨?! 이제 편하게 앱으로 확인하세요 ✏ 한줄소개 우리집 강아지 생존권을 확립하는 식사 여부 확인 애플리케이션 💻 서비스 가족 구성원이 강아지 밥을 주었는지...
앱 설명 방탈출, 이제는 기록하고 경쟁하세요! 방탈출 카페 위치 조회, 방탈출 정보 기록 및 랭크 확인 기능 제공 AppStore: Escaper 방탈출 Escaper Keynote 소개자료 WIKI 사용 스킬 MVVM Firebase CoreLocation MapKit 경험 한 것 사용자의 데이터 과금을 우려하여 ImageCache를 직접 구현하여 사용하였습니다.
2건의 항목
지난 10년 동안 우리 분야는 눈부신 성장을 이뤘다. 97년도만 해도 TDD라는 개념을 아무도 몰랐다. 그 당시 단위 테스트는 프로그램이 돌아가는지 확인하는 일회성 코드에 불과했다.
왜 필요할까? V-Diagram 왜 단계적인 테스트가 필요할까? 문제가 발생했을 때, 시간, 의사소통 등의 비용을 줄이기 위함 요구사항 만족함을 증명하는 것 어떤 종류가 있을까? 단위 테스트 테스트가 가능한 최소 단위로 나누어진 모듈, 프로그램, 객체, 클래스 내에서 결함을 찾고 기능을 검증 독립적으로 수행됨 프로그래머가 주도함 코드를 중심으로 수행 이러한 구분은, 어떤 Task냐에 따라 구분이 달라진다.
1건의 항목
함수형 프로그래밍에 대해서 공부해보면 꼭 나오는 용어들이 있다. 일급 시민, 함수 합성, 커링 등. 오늘은 이러한 단어들에 대해서 이해해보자. First Class Function function은.
1건의 항목
Bitcoin Programming 책을 읽으며 이해한 내용에 대해 정리한다. 첫번째는 유한체이다.
1건의 항목
개체 지향 프로그래밍을 배우는데 있어 알아두면 좋은 내용들을 정리해본다.
1건의 항목
실수 표현 부동 소수점으로 표현한다. 지표 + 가수로 표현된다. 왜 쓰는가? 고정 소수점으로 쓸 경우, 큰 수 (10^23) 과 같은 수를 표현하기 위해 많은 양의 비트가 필요하게 된다.
2건의 항목
골드3 : 최단 경로 문제이다. 풀이 이전에 풀었던 문제와 매우 비슷한데 음,.., 아 분명히 풀었다. 아마 프로그래머스 문제였던 것 같다. 연결되어 있는지 모두 파악하는 문제였다.
풀이 다익스트라로 한번에 성공했다. 그래도 발전이 있나보네. 스위프트로 플루이드 워셜로 다시 풀었다. Code # AB가 함께 모든 노드까지 가는데 걸리는 최단 거리를 구한다. # 그리고 그 거리 각각에서 출발하여 # 1.
2건의 항목
빌더 패턴은 무엇일까? 무엇을 조심해야 할까? 어떤식으로 활용하는 것이 좋을까? Builder 개체의 생성과정을 그 개체의 클래스로부터 분리하는 방법 개체의 부분부분을 만들어 나가다 준비가되면 그제서야 개체를 생성 StringBuilder 단순한 것은 이걸 사용해서 원하는 문자열을 만들 수 있다.
책임 연쇄 패턴은 무엇일까? 위키에 실린 예시 Chain-of-responsibility pattern @FunctionalInterface public interface Logger { public enum LogLevel { INFO, DEBUG, WARNING, ERROR, FUNCTIONAL_MESSAGE, FUNCTIONAL_ERROR; public static LogLevel[] all() { return values(); } } abstract void message(String msg, LogLevel severity...
1건의 항목
Xcode에 파일을 추가하다보면, Create groups, Create folder reference와 같은 선택지를 마주하게 된다. 이녀석의 의미는 무엇일까?? 바로 이녀석이다. Create groups Finder에 폴더가 생긴다. 회색 아이콘이다.
3건의 항목
반복문의 필요성 특정 명령을 반복적으로 사용해야 함 규칙적으로 반복하는 일 동일한 내용을 반복할 때 For 특정 문장을 일정한 횟수만큼 반복 시킬 때 사용 #include <stdio.h> int main() { int i, Sum = 0; for (i=1; i<=10; i++) Sum += i; printf("1부터 10까지의 합은 %d다.\n",Sum); return 0; } // 프로세스가 시작되었습니다.
기존에 작업한 글이 있어 링크로 대체한다. 05. Control Flow 06. Loop Part. 01 07. Loop Part. 02 iomanip library 기본적으로 iostream 라이브러리로 출력을 하게되면, 왼쪽 정렬이다.
컴퓨터를 통하여 문제를 해결하는 가장 중요한 이유 중에는 계속적으로 반복하는 작업을 컴퓨터가 대신 처리하여 주는 것이다. 이런 기능을 반복문이라고 하며, 대부분의 프로그래밍 언어는 다양한 반복문을 제공한다.
1건의 항목
! 사용하지 않기 Swift 코드에서 !가 보이는 경우는 두가지다. 연산자(!=, not, !==)에서 사용하는 경우는 제외한다.
2건의 항목
형식을 맞추는 목적 코드 형식은 의사소통의 일환이다. 오랜 시간이 지나 원래 코드의 흔적을 찾아보기 어려울 정도로 변경되어도 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다.
format() print('{0} ate {1} apples {2}'.format('I', '3', 'yesterday')) print('{0} ate {1} apples {2}'.format('You', '5', 'at 2 pm')) print('{1} ate {0} apples {2}'.format('5', 'You', 'a...
1건의 항목
프록시란? 대리 응답 프록시(proxy)는 “대리”라는 뜻이다. 그렇다면 어떠한 경우에서 이러한 대리의 개념이 필요할까? 보통은 보안상의 이유로 직접 통신하는 것이 문제가 발생할 경우 이런 방식을 사용한다.
1건의 항목
언어 모델처럼 '하나의 큰 모델'로 여러 로봇을 움직이겠다는 흐름을, NVIDIA의 오픈 모델·서베이 논문·연구 발표를 근거로 짚습니다. 무엇이 확인됐고 어디가 아직 병목인지.
4건의 항목
푸리에 급수(Fourier series)는 주기적인 함수를 다양한 주파수의 사인(sin)과 코사인(cos) 함수의 합으로 표현하는 수학적인 표현 방법이다. 주로 주기성을 가진 신호나 함수를 주파수 영역으로 분해하여 분석할 때 사용된다.
 init() // default parameter = CGRe...
5건의 항목
Library에 대해서는 알아보았다.
앞으로 진행할 긇에서는, Library와 Framework에 대해서 알아볼 것이다. 첫번째 순서로는 Library이다. Library & Framework 일단 간단하게 Library와 Framework에 대한 차이를 알아보고 가자.
나뉘어진 프로젝트, 따로 관리되는 프레임워크. 이런 상황에서 새로운 프레임 워크를 만들어 넣는 방법을 알아본다. 프로젝트 상황 일단 내가 처한 상황부터 간략하게 소개하겠다. 거대해지는 앱의 경우에는, 하나의 단일 프로젝트로만 관리하는 것이 어렵다.
Framework와 library에 대해서는 모두 알았다. 그럼 XCFramework는 무엇일까? XCFramework framework의 다양한 변형들을 Bundle하는 새로운 방법, Framework를 한번더 Bundling 한다.
앱스토어에서 크래시가 나서 Reject을 당하면 Crash Report를 함께 준다. 해당 파일을 열어보면 이상한 숫자들만 가득하다. dSYM debug symbol file App을 Release한 뒤에 Crash를 진단할 수 있게 도와주는 파일이다.
1건의 항목
확률이 p라는 것 반복이 가능한 경우(Frequentist Probability) 특정 실험을 “무한히 반복”했을 때, 해당 결과가 나오는 비율이 p 반복이 가능한 사건에 대한 확률은 이해하기 쉽다.
1건의 항목
언제 사용할까? Conditional GET을 이용하여 트래픽은 줄일 수 있으나, Round Trip은 줄일 수 없다.
1건의 항목
friend 두개의 클래스가 있을 때, 서로 만들어진 모든 멤버변수, 멤버함수를 공유하기 위해서 우리는 friend 라는 키워드를 사용할 수 있다. a 객체가 b 객체를 친구로 선언한다면 b객체는 a객체의 모든 변수와 함수값을 갖다가 사용할 수 있다.
1건의 항목
Task Segmentation semantic segmentation은 이미지 내에 있는 물체들을 의미 있는 단위로 분할해내는 것이다. 좀 더 구체적으로 이야기하면, 이미지의 각 픽셀이 어느 클래스에 속하는지 예측하는 것이다.
1건의 항목
What is pointer 포인터는 먼저 자료형으로 선언할 수 있다. 각각의 자료형에 대해 * 를 달게 되면 선언할 수 있으며.
24건의 항목 처음 10개의 태그
Monad에 대한 것에 대해 탐구합니다.
Functor란 무엇인가? Functor Functor: 임의의 타입 T, U가 주어졌을 때, 연산 lift이 정의되는 01.
고차원 Lift에 대해 알아보자. (map) High Dimensional lift 앞에서 배운 lift은 기본적으로 1변수를 변환할 수 있는 함수이다.
Monad는 어떻게 정의할 수 있을까? Monad Monad: 다음의 연산들이 정의된 Functor unit: T -> M<T> (return in Haskell) flat: M<M<T>> -> M<T> (join in Haskell) Functor에 unit하고 flat추가한게 모나드다.
그래서 Monad를 왜 사용하는가? 왜 모나드가 유용한가? Improve High-Demensional lift Monad는 Functor의 불만족스러운 부분을 해소해준다. 앞에서 lift2d에 대해 배웠다.
그래서 Monad를 왜 사용하는가? 왜 차원확장 flatLift는 중요할까? 다변수를 받아 모나드를 반환하는 함수도 합성할 수 있다.
어떻게 Monad를 사용해야 하는가? 사용방법 Monad 함수를 직접적으로 사용한다. flatLift, flatLift2d 언어에서 제공하는 Monad 특화된 언어를 사용한다.
Monad에는 어떤 종류가 있는가? Monad란 개념에 대한 의미론적 확장에 대응되는 제네릭 타입.
Monad와 Functor 사이에는 Monoidal Functor라는 중간 단계가 있다. Monoidal Functor를 정의할 수 있는 언어 아무 언어에서나 정의될 수 있는 개념은 아니다. 다음의 조건이 선행되어야 한다.
함수형 언어가 다인수함수를 다루는 법.
16건의 항목 처음 10개의 태그
Extract Function, 함수 추출하기에 대해 알아보자.
Inline Function, 함수 인라인하기를 알아보자.
Change Function Declaration, 함수 선언 바꾸기에 대해 알아보자. 요약 코드 function circum(radius) { .. } function circumference(radius) { ..
Combine Functions into Class, 여러 함수를 클래스로 묶기를 알아보자.
Combine Functions into Transform, 여러 함수를 변환 함수로 묶기를 알아보자.
Intro 프로그래밍 초창기에는 System = Routine + Subroutine 이었다. Fortran, PL/1시절에는 System = Program + SubProgram + Function 이었다.지금은 Function만 남았다.
프로그램 실행 과정 graph LR A[원시함수 작성] --> |Compiler|B(오브젝트 파일 생성) B-->|Linker|C[실행파일 생성] Compiler : 고급 언어로 작성된 파일을 기계어로 번역해줌.
함수의 일반적인 개념 사용자가 필요한 함수를 만들어 쓰자. 프로그램 실행 흐름 프로그램 실행 중에 함수명과 동일한 부분을 만나면, 해당함수로 이동 함수실행 main() 함수로 다시 돌아옴 함수의 장점 동일한 기능을 여러번 작성할 필요가 없다.
재귀 호출 함수에서 그 함수를 다시 호출하는 것 재귀함수 재귀호출을 구현한 함수 #include <stdio.h> int sum(int a); int main() { int input, s = 0; printf("양의 정수를 입력하세요 : "); scanf("%d", &input); s = sum(input); printf("재귀함수를 이용한 1부터 %d까지 합 : %d\n", input, s); return 0; } int sum(int a) { if (a &...
함수의 기본 모양 수학에서의 함수와 같이, input , output 이 있고, input 이 들어갔을 때, 어떤 작업을 한 뒤, output 을 내보내는 방식으로 작동한다.
7건의 항목
Monad에 대한 것에 대해 탐구합니다.
Functor란 무엇인가? Functor Functor: 임의의 타입 T, U가 주어졌을 때, 연산 lift이 정의되는 01.
고차원 Lift에 대해 알아보자. (map) High Dimensional lift 앞에서 배운 lift은 기본적으로 1변수를 변환할 수 있는 함수이다.
Monad와 Functor 사이에는 Monoidal Functor라는 중간 단계가 있다. Monoidal Functor를 정의할 수 있는 언어 아무 언어에서나 정의될 수 있는 개념은 아니다. 다음의 조건이 선행되어야 한다.
실제 Functor는 무엇을 의미하는가? Functor 카테고리 사이에서의 사상(morphisms) 동질의 대상들을 규정하면, 그 사이를 비교하거나 대응하기 위한 수단도 필요하다. 집합의 경우 집합 사이의 함수가 그것이다.
함수형 프로그래밍을 공부하다보면 벽을 한번 마주한다. Functor와 Monad가 그것이다. 이걸 이해하기 위해서 위키피디아에서 집합론?, 범주론? 이런 걸 읽었던 적이 있는 것 같은데 여전히 잘 모르겠다. 이번에는 와닿는 방식으로 이해하는 것을 목표로 한다.
Apple에서 공개한 API인 Combine. 이제 Rx에서 Combine으로 많이 넘어간다고 한다. 무엇을 하는 것인지, 왜 좋은지, 바로 써먹기 위한 팁은 무엇이 있는지 알아본다.
4건의 항목
달러가 다른 주요 통화 전반에 강한지 약한지를 한 숫자로 재는 달러인덱스가 무엇이고, 원·달러 환율을 읽을 때 왜 이 지표를 같이 봐야 하는지 짚습니다. 2026년 중반 실제 데이터로 달러 강세와 원화 약세가 어떻게 겹쳤는지 살펴봅니다.
두 나라 정책금리의 차이가 자본의 흐름과 환율을 어떻게 밀어내는지, 특히 한·미 금리차가 원·달러 환율을 읽는 핵심 축인 이유를 짚습니다. 2026년 중반 국면의 실제 금리 수준과 향후 경로 시그널을 함께 봅니다.
원·달러 환율이 높다는 걱정을 두고, 지금의 원화 약세가 한국만의 문제인지 아니면 전 세계가 겪는 달러 강세의 한 조각인지를 실제 데이터로 갈라 봅니다. 무엇을 확인하면 이 판정이 뒤집히는지까지 짚습니다.
오늘은 두 개의 숫자를 다시 읽습니다. NVIDIA의 분기 매출 816억 달러가 실은 소수 대형 클라우드의 지갑에 매여 있다는 이야기와, 높아 보이는 원·달러 환율의 주어가 '한국'이 아니라 '달러'라는 이야기. 무엇을 보면 이 판정이 뒤집히는지까지 짚습니다.
2건의 항목
개체 지향을 얘기하면 꼭 나오는 단어인 예외에 대해서 알아본다. Exception 사실 예외는 개체지향의 일부가 아니다.
오래 기다렸다. ARC가 무엇일까? 자바의 Garbage Collector와는 무엇이 다를까? 장단점은 무엇일까? 어떤 원리로 동작하는 것일까? 발생하는 문제점은 무엇일까? 어떻게 해결할 수 있을까? 이러한 내 궁금증들을 담았다.
1건의 항목
다른 네트워크로 들어가는 입구 역할을 하는 네트워크 포인트 종류가 다른 네트워크 간의 통로 역할을 하는 장치 Protocol을 적절히 변환해주기도 함 다른 언어를 사용하는 사람 사이의 통역가, 번역기라 생각 톨게이트와 유사 한국에서 일본으로 넘어가는 톨게이트가 있다 해보자.
2건의 항목
왜 기계학습 및 여러 시스템에서 노이즈를 모델링할 때 정규분포를 선택하는가? 그게 제일 합리적이라서. 첫째로 모형화하고자 하는 분포중에는 Normal Distribution에 가까운 것들이 많다.
정규 분포 실제로 가장 많이 적용되는 분포는 이항 분포이다. 하지만 이는 이산 확률 변수에 대해 정의되는 변수이다. 이번에는 연속 확률 분포들 중에서 대부분의 통계학 이론의 기본이 되는 정규분포에 대해서 공부한다.
3건의 항목
Completion은 main에서 호출해주는 것이 좋다. 이유 api를 호출하고, 결과가 도착한 경우 completion을 호출하는 함수가 있다고 하자.
이전 글에서 동시성에 대해서 알아보았다. 하지만 iOS에서는 Thread를 직접 생성해서 작업하지 않는다. 그러면 어떻게 동시성 프로그래밍을 가능하게 할까? 그 답인 GCD에 대해서 알아보자. 시작해보자. 해당 글은 사내 발표와 추가 정보를 기반으로 작성하였습니다.
앞에서는 새롭게 나온 개념들을 어떻게 사용하는지에 대해서 알아보았다. 그렇다면 왜 이렇게 설계했는지, 실제로는 어떻게 동작하는지 알아보자. Threading Model New feed reader 앱을 만든다고 생각해보자. 고수준에서 어떠한 것들이 필요할지 생각해보자.
1건의 항목
\int_{-\infty}^{\infty} \delta(x - \mu) dx = 1 \delta(x - \mu) = {1 \over 2\pi} \int_{-\infty}^{\infty} e^{i\omega(x - \mu)} d\omega 0을 제외한 모든 곳에서는 값이 0이나, 적분하면 1이 되는 함수.
7건의 항목
Type Constructor 새로운 데이터 타입을 만드는 틀. A라는 진짜 데이터가 있을 때, 이 값을 유지하면서 감쌀 수 있는 논리적 구조. 감싼다는 측면에서 바라보았을 때 이 정의에 부합하는 녀석들은 이런 것들이 있을 수 있겠다.
Functor란 무엇인가? Functor Functor: 임의의 타입 T, U가 주어졌을 때, 연산 lift이 정의되는 01.
변수, 클래스, 구조체 등을 선언할 때, 해당 객체 내부에서 사용하는 타입을 고정하지 않고 임의의 타입을 사용할 수 있도록 하는 것 실제 사용하는 시점에 사용하는 타입을 결정한다.
Iterator 반복자는 33. Generic 함수이다. 즉, 일반적인 프로그래밍을 가능하게 하기위해 만들어진 전역함수이다. 우리는 배열을 다루기 위해 vector, array, list와 같은 것들을 사용했다.
Generic의 경우 코드 중복을 줄일 수 있는 좋은 기능이다. 잘 다뤄둔다면 중급(?) 이상의 개발자가 되는데 큰 도움을 줄 것이다.
Semantics Type typealias Kilograms = Double struct Package { var weight: Kilograms } Combine Protocols protocol ReadAccess {} protocol WriteAccess {} typealias AdminAccess = ReadAccess & WriteAccess struct Teacher: AdminAccess {} Int, Double은 어디서든 사용되는 타입이다.
generic을 보면서 몇몇 곳에서 where 키워드를 사용하는 것을 보았다. 한번 정리해야 할 것 같아 공식 문서을 읽어본다. Generic Where Clauses generic에도 where 조항을 넣어 받는 타입에 세부 제약을 추가할 수 있다.
1건의 항목
지구 타원체 지구의 단면은 타원 장반경 a, 단반경 b라 했을 떄, {{a-b}\over a} = f f를 편평률이라 한다. a, b가 많이 차이나면 값이 크다 == 많이 찌그러져 있다. 그리고 이렇게 타원체로 만든 것을 지구 타원체라 한다.
1건의 항목
지구 타원체 지구의 단면은 타원 장반경 a, 단반경 b라 했을 떄, {{a-b}\over a} = f f를 편평률이라 한다. a, b가 많이 차이나면 값이 크다 == 많이 찌그러져 있다. 그리고 이렇게 타원체로 만든 것을 지구 타원체라 한다.
1건의 항목
데이터의 중심을 나타내는 척도에 대해서 배워본다. 평균 (mean) 평균은 대표적으로 집단의 중심위치를 나타내는 척도로 사용된다. 이 평균에는 보통 3종류가 사용된다.
2건의 항목
골드1 : 기하 문제이다. 생각 볼록 껍질, Convex Hull이라 한다. 이 알고리즘에서 유명한 것을 그라함 스캔 알고리즘인데, 해당 동영상을 봐보자. 이것과 같은 알고리즘을 구현하기 위해서는 다음과 같은 절차를 거쳐야 한다. 가장 y가 작은 점을 구한다.
일정한 형태의 도형들로 평면을 빈틈 없이 채우는 것을 말함 타일링(Tiling), 평면작성, 쪽매맞춤, 쪽매붙임이라고도 불림 목욕탕 타일, 보도블록 까는 것에서 흔히 볼 수 있음 타일의 개수, 조건들에 따라 다양한 테셀레이션들이 있다.
1건의 항목
HTTP 메소드 종류 GET 요청이 캐시된다. 브라우저, 로봇이 임의로 요청이 가능하다.
6건의 항목
지리적 정보를 시각적으로 나타내는 도구 또는 매체 물리적 실체를 데이터의 형태로 옮겨야 한다. 이러한 의미에서 지도는 나라의 재산이다. GIS(Geographic Infomation System) 공간 데이터 + 속성 데이터 통합 관리 시스템 .
3D를 어떻게 2D로 만들까? 지구 중심에 광원이 있다고 가정, 그림자를 투영 투영면의 종류에 따라 원통 원추(뿔) 방위(천장 원만 사용) 광원의 위치에 따라 심사(정중앙) 평사(표면) 정사(무한이 먼 광원, 평행) 메르카토르 도법 원통, 심사 정형법: 각도를 유지 모든 면이 같은 면적과 같이 보이기 때문에, 지도에서의 각과, 실제 배를 돌리때의 기수각이 같다는 점에서 이러한 단어가 붙음 지도의 위쪽으로 갈수록 실제 면적이 길게 표현됨 특성상 북극, 남극의 경우 투사가 되지 않아 표현자체가 어렵다는 단점이 존재 골피터스 도법 면적이...
개요 한점에 대해 유일한 좌표를 부여하기 위한 체계 직교좌표계 (x, y, z) 구면좌표계 (r \theta, \phi) 지리좌표계 (\lambda, \phi) 지표면에만 있다고 가정하고 위, 경도로만 표현하는 것 지심좌표계 (x, y, z) 지표면 안으로 들어간다고 가정했을 때 필요 좌표계 EPSG 무지하게 많은 좌표계들을 한번에 알아볼 수 있는 코드 좌표계 변환 방식 측지계가 같으면 쉽게 변환이 가능 즉 준거타원체와 기준점이 같으면 하지만 측지계가 다르면 복잡한 로직이 필요 즉, 준거타원체도 다르고, 기준점도 다르면 3-Para...
Basic Point 하나의 좌표를 갖는 geometry LineString(Polyline) 두 개 이상의 좌표를 갖는 geometry Line 두개의 좌표인 경우 LinearRing 첫 점과 끝점이 같은 경우 분류 Simple Non-Simple - 선이 교차하는 경우 Simple, closed - 교차하지 않는 다각형모양을 가진 선 LinearRing Non-Simple, closed - Not a LinaerRing Polygon 면 hole을 가질 수 있다.
관계 연산 (True or False) Equals 두 개가 완전히 동치인 경우 Disjoint 두 개가 하나도 겹치지 않는, 즉 서로소인 경우 Intersects 교집합 뚫고 지나가는 경우, 겹치는 경우 Touches 테두리에 걸리는 경우 Crosses 교차할 때 그런데, 비교하고자 하는 두개의 gemoetry가 서로 차원이 다르거나 (점, 선, 면) 혹은 선이어야만 연산이 성립 점 & 선, 선 & 면, 선 & 선만 정의가 가능 Within / Contains 완전히 포함될 떄 성립 Overlaps 같은 차원...
점, 선, 면 Box로 만든 뒤에 저장 저장은 어떻게? Grid 전체 공간을 Tessellation하여 셀로 나누고, 데이터를 셀에 넣는 방식 Tessellation 일정한 형태의 도형들로 평면을 빈틈없이 채우는 것을 말함 a.k.a 쪽매맞춤 쪽매붙임 공간을 다 특정도형으로 쪼개고, 또 그 안에서 쪼개는 방식으로 저장하는 것 무조건적으로 다 분할해야 함 QuadTree 전체 공간을 재귀적으로 가로/세로 2등분하여 4개의 자식 노드를 가진 트리 구조를 사용하는 공간 인덱스 4개의 노드를 가지도록 분할하여 저장 특정 geometry가 ...
4건의 항목
작업 하는 와중에 develop branch를 origin에서 pull하려다가 Fast Forward if possible이라는 것을 보게되었다. 이건 무엇인가? 알아볼 녀석 git kraken에는 pull 버튼 아래에 옵션을 선택할 수 있다.
발생하는 경우 계정 패스워드를 바꿨는데 로컬 반영이 안된 경우 환경 등의 알지못하는 변경이 영향을 준 경우 해결 방법 git config --unset credential.helper // git config credential.helper store // 해당 Git directory에서 적용 git config credential.helper store --global // 전체 Git에서 적용 Reference push 시 Password 물어보지 않도록 설정하기 .
git checkout refs/tags/5.23.0\(2\) 이렇게 써줘야 함 (를 알아먹지 못하기 때문 .
설명 실제 동작하는 스타벅스 앱을 클론 코딩하였습니다. 처음으로 팀플을 진행했으며, commit convention, 브랜치 전략등을 사용해보았습니다.
2건의 항목
냄새나면 당장 갈아라. 어떻게 하는지에 대해서 지금까지 배웠다. 하지만, “언제” 시작하고 그만할지를 판단하는 것은 또 다른 얘기다. 어떤 “냄새”를 맡았을 때 손을 대야할까? 기이한 이름 이름으로 이게 뭐하는 것인지 딱 볼 수 있게 작성해야 한다.
Local, Global Variables Local Variables 함수 안에서만 동작하고 함수가 끝나면 메모리에서 삭제된다.
2건의 항목
보통 golang이라 부른다. 컴파일 언어이다. 장점 컴파일 속도가 매우 빨라 인터프리터 언어처럼 쓸 수 있다. 단순함과 실용성을 강조한다. 정적 타입 언어이다. GoRoutine 비동기 매커니즘을 제공한다. 단점 Byte code 생성 언어가 아니다.
Go Lang Features를 기반으로 한 Static site generator 빠르다. 유연함을 강조하여 다양한 플랫폼에서 쉽게 사용가능하다. Reference Hugo .
1건의 항목
Do ~ While 일단 Do 안에 있는 명령문을 실행하고 나중에 while문의 조건식 비교 적어도 한번은 명령문을 처리함 마지막에 세미콜론(;)을 반드시 추가해야 함 조건식을 검사하는 while(조건식)은 C 문장으로 여기기 때문 #include <stdio.h> int main() { int sum = 0; int number = 0; printf("1에서 10까지 합을 구합니다.\n"); do { number++; sum += number; } while(number<10); printf(&q...
1건의 항목
비용 최소화 코드 저번글에서 X, Y에 최적화된 W, b를 찾았다면, 이번에는 고정된 X, Y 에 대해 다른 W값을 넣어주면서 Cost의 변화를 살펴보자.
1건의 항목
비용 최소화 코드 저번글에서 X, Y에 최적화된 W, b를 찾았다면, 이번에는 고정된 X, Y 에 대해 다른 W값을 넣어주면서 Cost의 변화를 살펴보자.
1건의 항목
골드1 : 기하 문제이다. 생각 볼록 껍질, Convex Hull이라 한다. 이 알고리즘에서 유명한 것을 그라함 스캔 알고리즘인데, 해당 동영상을 봐보자. 이것과 같은 알고리즘을 구현하기 위해서는 다음과 같은 절차를 거쳐야 한다. 가장 y가 작은 점을 구한다.
1건의 항목
절차적 언어 순수한 절차적 언어 즉, 데이터보다 프로세스에 중점이 맞춰져 있다. 반대로 말하면 개체지향 언어의 경우 “데이터”에 중점을 맞춘다는 뜻. 반드시 나쁜 것은 아님 그냥 매뉴얼에 적힌 내용을 순서대로 따라하는 느낌.
3건의 항목
Completion은 main에서 호출해주는 것이 좋다. 이유 api를 호출하고, 결과가 도착한 경우 completion을 호출하는 함수가 있다고 하자.
이전 글에서 동시성에 대해서 알아보았다. 하지만 iOS에서는 Thread를 직접 생성해서 작업하지 않는다. 그러면 어떻게 동시성 프로그래밍을 가능하게 할까? 그 답인 GCD에 대해서 알아보자. 시작해보자. 해당 글은 사내 발표와 추가 정보를 기반으로 작성하였습니다.
앞에서는 새롭게 나온 개념들을 어떻게 사용하는지에 대해서 알아보았다. 그렇다면 왜 이렇게 설계했는지, 실제로는 어떻게 동작하는지 알아보자. Threading Model New feed reader 앱을 만든다고 생각해보자. 고수준에서 어떠한 것들이 필요할지 생각해보자.
9건의 항목
그래프 용어 V : vertex E : Edge path 연결 그래프 : 어떤 두 정점 사이에도 경로가 존재하는 그래프 부분 그래프 가중치 포함 그래프 : Edge에 가중치가 달려있음 순환 경로 순환 그래프, 비순환 그래프 트리 - 비순환, 비방향그래프 신장 트리 : 연결된, 비방향성 그래프에서 순환경로를 제거하면서 연결된 부분 그래프가 되도록 하는 트리 신장 트리의 개수는 Cayley’s formula에 따른 개수를 가짐 최소비용신장트리 신장 트리가 되는 부분 그래프 중에서 가중치가 최소가되는 부분 그래프 무조건 트리로 나온다.
골드3 : 그래프 문제이다. 생각 현재 시작 위치에서 다음 쓰레기를 치우고, 그 위치에서 다시 다음 경로를 탐색하는 과정으로 문제를 풀려 했다. 하지만 코드를 짜면서도 탐색과정이 계속하여 중복되서 어떻게 풀어야 할지 고민을 많이했다.
실버1 : dfs를 사용하는 기초적인 문제이다. 이런 문제를 풀 때, 생각보다 실수를 많이하는 부분은, testcase가 있을 때, 초기화를 하지 않는 것이다. 항상 testcase가 있는 문제는, 이 부분을 유념해야 한다.
DFS graph 골드4 : 그래프 문제이다. 생각 이분 그래프란 무엇인가? 문제를 읽고는 파악하는 게 힘들었다. 차라리 그림으로 보는 것이 좋다. {:.center-text} 왼쪽과 같은 그래프가 있을 이걸 오른쪽 그림처럼 바꿀 수 있느냐의 문제이다.
골드3 : dfs 문제이다. 풀이 트리 = 사이클이 없는 무방향 그래프. 어떠한 두 노드를 선택해도 경로는 하나이다. 즉 무조건 연결되어 있다. 쉽게 생각하기 위해서 이미 두 지름인 점을 알고 있다고 가정하자.
실버2 : 그래프 문제이다. 생각 아. 정말 쉽겠지 했는데, 되지도 않는 시간 복잡도 줄여보겠다고 확인 되지 않는 것 썼다가 하루 다 날린 문제이다. 문제는 상당히 간단하게 DFS로 풀 수 있다.
Code import tensorflow as tf tf.set_random_seed(777) # 같은 값이 나오도록 하기 위해서 # 데이터 준비 x_train = [1, 2, 3] y_train = [1, 2, 3] # 초기에 랜덤하게 값을 할당한다.
무향 Graph에서 완전히 연결된 부분 그래프 Reference Clique .
용어 정점(Vertex, Node): 그래프의 노드 간선(Edge): 그래프의 노드를 연결하는 선 방향 (화살표) 무방향 그래프(Undirected Graph): 간선에 방향이 없는 그래프 방향 그래프(Directed Graph): 간선에 방향이 있는 그래프 값 가중치(Weight): 간선에 부여된 값 정의 그래프(Graph) 그래프(graph) G는 정점(vertex)의 집합 V와 간선(edge)의 집합 E로 구성된다.
4건의 항목
JPG(Joint Photographic Experts Group) 정의: 정지 화상을 위해서 만들어진 손실 압축 방법 표준 핵심: 전체적 구조 손실보다 디테일 손실에 둔감하다는 점을 통해 압축 원리: 이미지의 고주파 성분의 일부를 제거함.
PNG(Portable Network Graphics) 핵심: 비손실 압축 방법 원리 Huffman coding를 통한 압축 그렇기 때문에 반복되는 이미지가 등장할 경우 PNG가 보다 효과적 장점: 투명도 사용가능, 비손실 압축, 32비트 트루컬러, 크게 색상 변화가 크지 않은 이미지의 경우 사용하는 것이 좋다.
색상정보가 담긴 픽셀로 표현 JPEG, GIF, PNG 등 .
수학식으로 이루어진 점, 직선, 곡선 등으로 표현 확대 및 축소에 자유로움 계산량이 많아 하지만 색상의 자연스러운 변화나 세밀한 표현이 어려움 AI, SVG 등 .
7건의 항목
그래프 용어 V : vertex E : Edge path 연결 그래프 : 어떤 두 정점 사이에도 경로가 존재하는 그래프 부분 그래프 가중치 포함 그래프 : Edge에 가중치가 달려있음 순환 경로 순환 그래프, 비순환 그래프 트리 - 비순환, 비방향그래프 신장 트리 : 연결된, 비방향성 그래프에서 순환경로를 제거하면서 연결된 부분 그래프가 되도록 하는 트리 신장 트리의 개수는 Cayley’s formula에 따른 개수를 가짐 최소비용신장트리 신장 트리가 되는 부분 그래프 중에서 가중치가 최소가되는 부분 그래프 무조건 트리로 나온다.
실버4 : 그리디 문제이다. 풀이 단순한 문제이다. 앞뒤에 어떠한 문자를 넣을 수 있으니, 현재 가지고 있는 문자열만 가지고서 부분적으로 보았을 때, 가장 작은 차이를 가지고 있는 지점만 알면된다. 이후는 맞춰서 끼워넣으면 되니까.
골드2 : 그리디, 정렬 문제이다. 생각 실제로 운송물을 움직인다고 생각해보자. 그렇다면 가장 무거운 하중을 움직일 수 있는 크레인이 가장 많이 움직여야 최단 시간에 짐을 움직일 수 있다. 이부분이 핵심이다.
실버1 : 그리디 문제이다. 풀이 처음에 부르트 포스로 접근했다가, 시간초과가 났다. 그래서 그리디로 방향을 전향했다. >가 나왔을 때, 가장 큰 숫자를 설정해두고, 이하 부터 순서대로 이숫자를 채우는 것으로 해당 조건을 만족시킬 수 있다.
골드5 : 스택 문제이다. 풀이 비슷한 문제를 한 3번 봤다. 근데 그 때는 heap을 사용해서 뒤에서 가장 큰 문자를 계속해서 뽑는 것으로 문제를 해결했다. 풍선 터트리기 그런 방식으로 해당 문제를 다시 풀려했으나, 밑에 알고리즘 분류를 봤는데 stack…이더라.
풀이 어떻게 해야 이런 문제를 풀 수 있을까. 일단 조합과 같은 생각은 n이 작을 때 한다. 완전 탐색 방법을 먼저 생각한다.
Greedy는 알고리즘 문제를 풀 때 보았던 용어이다. 이 용어는 어떤 의미로 사용이 될까? 무언가 탐욕적으로 한다는 의미일 것이다. 다음과 같은 문자열에서 처음 나오는 tag를 검색하고 싶다 해보자.
2건의 항목
타원 곡선을 알아보았다면, 이걸 토대로 암호를 만들어보자. 유한체에서 정의된 타원 곡선 2장에서 보았던 타원 곡선은 “실수체”에서 정의되었다. 무한집합 그렇기 때문에 꽉 찬 곡선으로 보였던 것 이제 이 정의되는 공간을 유한체로 바꿀 것이다.
Xcode에 파일을 추가하다보면, Create groups, Create folder reference와 같은 선택지를 마주하게 된다. 이녀석의 의미는 무엇일까?? 바로 이녀석이다. Create groups Finder에 폴더가 생긴다. 회색 아이콘이다.
1건의 항목
level4 : 변수를 사용하는 문제이다. 생각 이 문제는 group by를 사용할 수 없다는 것이 핵심이다. group by 는 있는 값을 DISTINCT하게 판단하여 집합을 구성해주는 쿼리이다.
4건의 항목
범주론에서의 카테고리에 대해 알아보자. Category Theory 카테고리에 대한 이론 Category 요소와 요소의 관계까지를 포함한 집합같은 개념 Object와 Morphisms로 구성된다.
범주론에서의 카테고리에 대해 알아보자. 프로그래밍과 무슨 관계가 있는가? 왜 이런 메타수학에서 사용되는 개념이 프로그래밍에서 사용될까? 프로그래밍에서 공통적으로 나타내는 개념들 사이의 관계가 카테고리의 조건에 딱 들어맞는다. 모든 프로그래밍 언어에는 타입이 있다.
기본 요소 송신기 전달 매개체(매질) 수신기 신호 아날로그 연속적인 값이기 때문에, 노이즈에 의해 영향을 받을 수 있다. 즉, 값의 변화가 반영될 여지가 크다. 애초에 연속적인 값이기 때문.
타원 곡선을 알아보았다면, 이걸 토대로 암호를 만들어보자. 유한체에서 정의된 타원 곡선 2장에서 보았던 타원 곡선은 “실수체”에서 정의되었다. 무한집합 그렇기 때문에 꽉 찬 곡선으로 보였던 것 이제 이 정의되는 공간을 유한체로 바꿀 것이다.
1건의 항목
Replace Nested Conditional With Guard Clauses, 중첩 조건문을 보호 구문으로 바꾸기를 알아보자.
1건의 항목
운영체제에 대한 정의, 역할에 대해 알아본다. 운영체제는 사용자가 컴퓨터를 사용하기 위해 필요한 소프트웨어이다. 일반적으로 사용하는 모든 프로그램은 운영체제에서 그 자원을 관리한다. 목적 운영체제를 사용하는 가장 큰 목적은 하드웨어의 관리이다.
1건의 항목
그래서 예외는 어떻게 처리하는 것이 좋은걸까? 오류 상황 예외 상황과 오류 상황을 다른 의미로 사용할 것 오류 상황은 error condition을 말함 이 오류 상황을 처리하는 방법 중에 예외가 있음 오류 상황은 예측 가능한 상황을 의미함 프로그램 실행 중에 기본적으로는 일어나지 않음 하지만 일어날 수 있는 일 따라서 이러한 상황을 처리하는 코드는 프로그램 기능의 일부임 프로그래머가 이를 예측하지 못했다면? 버그 오류 상황을 처리하는 4가지 방법 무시 곧바로 크래시 일단은 작동하는데 언젠가는 크래시 안정적이지 못한 상태로 계속 동...
1건의 항목
데이터의 중심을 나타내는 척도에 대해서 배워본다. 평균 (mean) 평균은 대표적으로 집단의 중심위치를 나타내는 척도로 사용된다. 이 평균에는 보통 3종류가 사용된다.
3건의 항목
탐색하는 방법에 대해 알아보자. 검색 문제 n개의 키를 가진 배열 S와 키 x가 주어졌을 때, x=S[i]가 되는 첨자 i를 찾는 것 없다면 오류로 처리한다. 결론 : 이분 검색 알고리즘보다 효율적인 알고리즘은 없다. 이진 검색 상태 공간 트리 순차 검색은 답이없다.
실버5 : 해쉬 문제이다.
풀이 쉬워서 패스. 해시사용 문제이다.
1건의 항목
공개키 비트코인 주소 형식에 대해 알아본다. 이는 곧 “주소”이다. 비트코인 주소 WIF(Wallet Import Format) 앞에서 공개키와 비밀키, 그리고 서명, 검증 방식에 대해 알아보았다. 그리고 이를 직렬화하는 방법도 배웠다.
2건의 항목
기억 장치의 동작방법에 대해 이해해보자. 최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자.
위 그림은 하드디스크의 구조이다. platter 실제 데이터를 기록하는 자성을 가진 원판이다. platter는 그림과 같이 여러 개가 존재하고 앞뒤로 사용할 수 있다. 한 platter는 여러 개의 track으로 이루어져 있다.
1건의 항목
HTTP 메소드 종류 GET 요청이 캐시된다. 브라우저, 로봇이 임의로 요청이 가능하다.
2건의 항목
Header File 왜 사용하는가? C++ 코드를 작성하다가 보면, Class 내의 멤버변수, 멤버함수, 또 내가 만들어서 사용하는 사용자 정의 함수, main 함수 등 결국 어떤 프로그램을 동작하고 싶은 건지 전체적 구조를 알기 어렵다는 점이 있다.
headerView가 있는 TableView에서 높이는 제대로 맞는데, 이상하게 셀수가 많아질 상황에서 끝까지 스크롤되지 않는 문제가 발생했다. headerView의 layout을 먼저 잡아주어야 한다.
3건의 항목
정렬에 대해 깊게 공부해보자.
풀이 가장 최소인 녀석을 계속해서 뽑아야 하기 때문에 heap 구조를 사용했다. 이 때 python으로 코딩을 하려한다면 무조건적으로 heapq를 사용할 것. priorityQueue는 속도가 너무 느려서 효율성 통과를 하지 못한다.
풀이 deque, heap을 통해서 구할 생각을 했다. 그런데 구현을 하는 점에 있어서 어떠한 요소가 필요하겠다고 생각하는 능력이 좀 떨어진다. 몇개의 변수를 사용하면 쉽게 구할 수 있다와 같은 판단을 하는 것이 모자라다.
2건의 항목
우리는 private을 통해 변수를 자주 정의한다. 이렇게 하는 이유는 남들이 변수에 의존하지 않도록 만들고 싶기 때문이다. 그럼에도 불구하고 많은 프로그래머들은 get, set 함수를 당연하게 외부에 노출하는 오류를 범한다.
15장(JUnit)과 16장(SerialDate Refactoring)은 코드가 많고, 지배적인 내용이 아니라 판단하여 생략하였다. 17장, 냄새와 휴리스틱을 정리해본다. 개인적으로 가장 실용적이며 중요한 절이라는 생각이 든다.
1건의 항목
고차원 Lift에 대해 알아보자. (map) High Dimensional lift 앞에서 배운 lift은 기본적으로 1변수를 변환할 수 있는 함수이다.
1건의 항목
자주 사용하는 고차함수들에 대해서 이해해보자.map, flatMap과 같은 경우는 여러가지가 존재하는데, 각각의 활용 방법에 대해서 알아보자.
1건의 항목
통계 개념 정리에 앞서 통계학이라는 학문에 대해 알아본다. 통계는 왜 공부하는가 미래를 알기 위해서, 집단의 특징을 알기 위해서 우리는 군중의 특징에 대해 알 필요가 있다. 예를 들어 물건을 판다고 생각해보자.
1건의 항목
Hit Testing 그럼 터치가 어디서 발생했는지는 어떻게 알 수 있을까? 즉, 터치가 발생한 시점에, 어떻게 내가 누른 가장 상위 객체(상단은 view 계층에서 top을 말함)를 판단할 수 있을까? 여기서 이벤트에 반응한 가장 상위 객체를 first Responder라 한다.
2건의 항목
디바이스가 가지고 있는 고유의 물리적, 하드웨어 주소 패킷에 들어오는 mac 주소를 보고 적어둔 테이블을 기반으로 사설 IP주소를 알아낸다음 해당 디바이스로 데이터를 넘겨준다.
가상 단말기 프로그램 ssh, telnet, tcp 접속을 위한 클라이언트 window환경의 호스트 운영체제에서 다른 운영체제의 CLI환경에 SSH 접속 가능 받아서 사용하면 끝 호스트네임 (사용자이름@IP주소) 포트번호 넣어주고 뿅 .
1건의 항목
<details> <summary>제거된 파일 개수: 435</summary> 세부사항 </detail> .
6건의 항목
HTTP 관련 내용은 사실 읽어도 읽어도 잘 머리에 안남는 것 같다. 사실 전반적인 흐름은 아는데, 뭔가 단어들이 기억에 잘 남는다는 느낌은 안들었었다. 다시한번 정리하면서 반복학습을 할 목적으로 포스팅을 남겨본다.
HTTP 메소드 종류 GET 요청이 캐시된다. 브라우저, 로봇이 임의로 요청이 가능하다.
CodeInfomationRangeDescription1xxInformational100, 101100: Continue 101: Switching Protocols 2xxSuccessful200~206 201: Created 202: Accepted (대기열 긴 경우, 요청은 받았어! ^^ 이 용도..) 3xxRedirection300~307 301: Moved Permanently 302: Found (이전 Moved Temporarily) 307: Temporary Redirect (Recommaned) 308: Perman...
www.example.org/index.html 을 GET 요청 한 상황을 가정해보자. 서버는 80번 포트를 열고 요청을 대기한다. 클라이언트는 웹 브라우저 주소창에 URL을 입력한다. 웹 브라우저는 DNS에 물어보고 해당 URL Host의 아이피를 알아낸다.
언제 사용할까? Conditional GET을 이용하여 트래픽은 줄일 수 있으나, Round Trip은 줄일 수 없다.
HTTP에서 상태가 필요한 이유 로그인이 되게 하고 싶다. 쇼핑몰 로그인이 아니어도 카트 목록을 기억하게 하고 싶다. 해결 방법 Fat URL - URL에 상태 정보를 모두 집어 넣기 - URL을 파싱해서, 사용자의 상태를 확인한다.
2건의 항목
HTTP 관련 내용은 사실 읽어도 읽어도 잘 머리에 안남는 것 같다. 사실 전반적인 흐름은 아는데, 뭔가 단어들이 기억에 잘 남는다는 느낌은 안들었었다. 다시한번 정리하면서 반복학습을 할 목적으로 포스팅을 남겨본다.
TLS 위에서 동작하는 HTTP 종단간 암호화 (E2E 암호화) HTTP 메시지를 암호화하여 주고 받음 보안이란? 서버 인증 클라이언트는 자신이 진짜 서버임을 알 수 있어야 함 클라이언트 인증 서버는 자신이 진짜 사용자임을 알 수 있어야 함 무결성 클라이언트와 서버는 그들의 데이터가 위조되는 것으로 부터 안전해야 함 암호화 클라이언트와 서버는 도청 걱정 없이 대화가 가능해야 함 동작 방식 서버가 클라이언트에게 인증서를 보내어 자신을 증명한다.
2건의 항목
기본 요소 송신기 전달 매개체(매질) 수신기 신호 아날로그 연속적인 값이기 때문에, 노이즈에 의해 영향을 받을 수 있다. 즉, 값의 변화가 반영될 여지가 크다. 애초에 연속적인 값이기 때문.
비트 0, 1 비트가 모여 데이터 구성 비트를 주고 받는 것이 통신의 본질 바이트 = 8비트 워드 = 1바이트가 2개 (16비트) 데이터가 어떻게 전기 신호로 전달? 데이터가 전달되지 않을 때 전기적 신호가 존재 Clock 신호 CPU는 해당 신호에 맞춰 일을 처리한다.
1건의 항목
iOS 앱개발에서 화면을 담당한다면 피할 수 없는 autolayout! 공식 문서를 읽어보며 정리해보자.
1건의 항목
개요 SORT(Simple Online and Realtime Tracking)은 매우 알고리즘이 간단함에도 불구하고 효과적이고 실용적인 다중 대상 추적 알고리즘이다. IOU를 기반으로 추적된 물체에 대해 association(할당)을 진행하기 때문에 매우 빠르다.
1건의 항목
Example of a Layer 이제 원래 배웠던 신경망의 노드에서 하는 활동으로 돌아오자. 결국 이 필터는 가중치들의 모임이고, 원래 데이터에서 이 가중치를 곱한다음에 더하는 행위는 한 노드에 이 데이터들이 들어가는 것이다.
1건의 항목
전자상거래 회사로 아는 Amazon이 왜 AI 인프라 이야기의 큰손으로 계속 등장하는지 짚습니다. NVIDIA의 최대 고객군이면서 동시에 자체 칩으로 경쟁하는 이중 역할, 그리고 번 현금 대부분을 데이터센터에 쏟는 지출 구조를 어떤 축으로 읽어야 하는지 살펴봅니다.
2건의 항목
프로그램 실행 과정 graph LR A[원시함수 작성] --> |Compiler|B(오브젝트 파일 생성) B-->|Linker|C[실행파일 생성] Compiler : 고급 언어로 작성된 파일을 기계어로 번역해줌.
Identifier Reserved Words 사용가능 문자 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789 예약어는 안된다.
1건의 항목
Types of Matrix A\;=\;[a_{ij}] i = m , row size j = n, column size Square Matrix m = n \begin{bmatrix} 0 & 1 & 0\\ 0 & 2 & 0\\ 0 & 0 & 3 \end{bmatrix} Rectangular Matrix m\; \ne\;n \begin{bmatrix} 0 & 1 & 2\\ -1 & 0 & 3\\ -2 & -3 & 0\\ 9 & 3 & ...
10건의 항목
컴퓨터가 모든 것을 숫자로 다루는 방식을 알아보자. 최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. 컴퓨터로 글자를 나타내는 방법 ASCII Code 숫자와 글자에 대한 함수관계를 정의한다.
JPG(Joint Photographic Experts Group) 정의: 정지 화상을 위해서 만들어진 손실 압축 방법 표준 핵심: 전체적 구조 손실보다 디테일 손실에 둔감하다는 점을 통해 압축 원리: 이미지의 고주파 성분의 일부를 제거함.
PNG(Portable Network Graphics) 핵심: 비손실 압축 방법 원리 Huffman coding를 통한 압축 그렇기 때문에 반복되는 이미지가 등장할 경우 PNG가 보다 효과적 장점: 투명도 사용가능, 비손실 압축, 32비트 트루컬러, 크게 색상 변화가 크지 않은 이미지의 경우 사용하는 것이 좋다.
색상정보가 담긴 픽셀로 표현 JPEG, GIF, PNG 등 .
수학식으로 이루어진 점, 직선, 곡선 등으로 표현 확대 및 축소에 자유로움 계산량이 많아 하지만 색상의 자연스러운 변화나 세밀한 표현이 어려움 AI, SVG 등 .
image 화 하기 코드가 다른 것으로 파악, 아래 코드는 동작한다.
개념 개발자와 시스템 관리자가 컨테이너 기술을 사용하여 어플리케이션을 개발, 배포, 실행하기 위한 플랫폼 컨테이너 기술을 리눅스에서 사용되던 기술이다. 이 때, 이 기술을 사용하여 응용프로그램을 배포하는 것을 컨테이화 시킨 것이다.
Data(contentof)는 로컬 파일을 불러오기 위한 메서드이다. 애초에 동기 메서드이다. 가끔 이걸 DispatchQueue에 Item으로 싼뒤에 넣어 비동기 처럼 사용하는 경우가 있는데, 이러면 안된다. API의 존재 이유에 맞지 않기 때문이다.
비동기 네트워크 처리에 있어 순서대로 이미지 순서가 보장되어야 하는 문제를 해결했습니다. 방탈출 테마 세부페이지에서는 해당 방을 방문한 유저들의 Top 5 랭킹이 보여지도록 하였습니다.
현재 프로젝트에 적합한 간단한 이미지 캐시를 구현하여 사용하였습니다. 기본에 임시로 작업한 이미지 캐시의 경우, 네트워크 요청후 디스크에 저장이 되는 구조로 제작하였습니다.
1건의 항목
분기에 따라 값이 결정되는 코드를 짤 때, 변수를 무엇으로 선언하는 것이 좋을까? 작은 부분이나 좋은 지적이라 생각하여 정리해본다. 핵심 요약 분기에 따라 값이 결정될 때 변수를 선언해야 한다면, var보다는 let을 우선적으로 검토해보자.
26건의 항목 처음 10개의 태그
브론즈1 : 구현 문제이다. 풀이 단순한 문제이다. 앞뒤에 어떠한 문자를 넣을 수 있으니, 현재 가지고 있는 ROT13만 가지고서 부분적으로 보았을 때, 가장 작은 차이를 가지고 있는 지점만 알면된다. 이후는 맞춰서 끼워넣으면 되니까.
실버1 : 구현 문제이다. 너무 짜증난다. 문제 제대로 읽어. 제발제발젭라. 뱀이 지나가는 경로를 잡아줄 자료구조 map에 표시해서 갈 수 있는지 없는지 알아야 한다. tail의 위치를 tracking할 수 있어야 한다.
골드3 : 완전탐색 문제이다. 삼성 A형 기출이다. 생각 시간이 1초라, 제한 시간에 들어올 수 있는지 시간 복잡도 계산부터 진행했다. 최악의 경우 100개의 공간에 모두 1이 차있는 경우 한 개의 공간에서 색종이를 5번 검사해야 한다.
골드4 : 구현 문제이다. 상당히 갑갑했다. 일단 무한개의 소용돌이가 생길 수 있다는 점에서 기존의 달팽이 문제처럼 생각하면 안된다라는 판단이 들었다. 발생하는 모든 숫자를 저장한다면 메모리 초과가 날 것이 분명했기 때문이다.
골드5 : 구현 문제이다. 풀이 문제 똑바로 읽자. 조건하나 안봐서 틀렸네.
풀이1 실버5 : 브루트포스 문제이다. Code // // main.swift // CodingTest // // Created by 최완식 on 2021/08/15.
골드5 : 구현 문제이다. 풀이 컨디션이 안좋아서 그냥 풀었다.
골드1 : 구현, 시뮬레이션 문제이다.
실버1 : 구현 문제이다. 생각 단순 구현 문제이다. 비트마스크 연습을 위해 비트마스크로 풀었다. 해당 과정을 하는 동안에 인접행렬 같은 matrix를 만들어 무언가를 해보려 했지만 좋지 못했다. 구현 문제는 노가다로 적어주는게 정신 건강에 이롭다.
level2 : 구현, 또는 동적 계획법을 사용하는 문제이다. 처음 풀이로는 빠르게 풀기 위해서 그냥 단순히 구현을 했다. 입력이 1000 x 1000 이라, 완전 탐색을 수행하더라도 로직을 최대한 덜 쓰도록 짜야된다는 생각을 하면서 짰다.
1건의 항목
개요 Pretrained model을 사용하거나 Transfer Learning 을 사용하는 모델들에 대해서 읽을 때 Backbone이 되는 CNN 모델들이 몇 개 있다.
2건의 항목
왜 C를 배워야 하는가? C 표준 C89/ANSI-C 최초의 C 표준 (89년) 여전히 많은 코드가 이 표준을 사용 임베디드 시스템 이걸 가장 많이 살펴볼 것임 C99 많은 내용 추가 인라인 함수 새로운 헤더파일들 새로운 자료형 한 줄짜리 주석 유연한 배열 멤버 가변 길이 배열 보다 안전한 I/O 함수 C11 C99 대체 유니코드 지원 이름 없는 구조체 및 공용체 제네릭 표현식 표준화된 멀티스레딩 지원 C18 신규 기능 없음 C11의 결함만 수정 include? 현대에서 많이 사용하는 import와 같은 구문 다른 파일에 구현된 함...
Header File 왜 사용하는가? C++ 코드를 작성하다가 보면, Class 내의 멤버변수, 멤버함수, 또 내가 만들어서 사용하는 사용자 정의 함수, main 함수 등 결국 어떤 프로그램을 동작하고 싶은 건지 전체적 구조를 알기 어렵다는 점이 있다.
1건의 항목
확률에 대해 이해한다. 사건에 확률을 부여하는 방법 동전의 앞면이 나오는 것을 사건 A라 정의했을 때, P(A)를 구하는 방법에 대해 알아보자. 고전적 방법 단순히 1/2라 생각한다. 이 생각의 배경에는 앞면과 뒷면이 나오는 가능성이 동일하다 생각하고 부여한다.
2건의 항목
인덱스로 Array 아이템을 탐색하다보면 항상 마주하는 것이 있다. Fatal error: Index out of range. 잘못하면 런타임에 애플리케이션이 바로 죽어버리기 마련이다. 아무리 염두에 둔다하더라도 우리는 사람인 이상 실수를 하기 마련이다.
! 사용하지 않기 Swift 코드에서 !가 보이는 경우는 두가지다. 연산자(!=, not, !==)에서 사용하는 경우는 제외한다.
2건의 항목
표본 분포와 통계량에 대해 이해한다. 추론 (inference) 표본을 가지고 모집단의 특성(모수)를 예측하는 것 통계학의 핵심은 내가 원하는 집단의 특징을 알아내는 것이다.
통계적 추론에 대해 이해한다. 통계적 추론 표본이 갖고 있는 정보를 분석하여 모수에 관한 결론을 유도하고, 모수에 대한 가설의 옳고 그름을 판단하는 것 추정의 방법 모수를 추정하는 방법에 대해서 알아본다. 점 추정 모수를 추정하기 위해 하나의 값을 제안한다.
1건의 항목
Infill은 3D 프린팅된 객체 내부를 채우는 소재의 구조를 나타냅니다. 3D 프린터는 대부분 객체의 외부와 내부를 채우기 위해 격자 또는 패턴으로 된 구조를 생성합니다. 이 구조는 모델의 강도를 유지하면서도 소재 사용과 프린팅 시간을 최적화하는 데 도움이 됩니다.
4건의 항목
두 확률 분포 P와 Q의 차이를 측정하는 방법 H(P, Q) = H(P) + D_{KL}(P||Q) = E[\log {Q(x)}] = \sum_{x \in \mathcal X} P(x) \log {Q(x)} Information Entropy와 유사하지만, P의 정보량을 측정하는 것이 아닌, Q의 정보량을 측정한다.
정보이론에서 확률 변수(Random Variable) 의 불확실성을 정량화하는 척도 Shannon Entropy 이산 확률 변수 X의 섀넌 엔트로피 H(X)는 다음과 같이 정의된다.
동일 확률 변수 X에 관한 개별적인 두 확률분포 P와 Q의 차이를 측정하는 방법 Kullback-Leibler Divergence D_{KL}(P||Q) = E(\log \frac{P(x)}{Q(x)}) = \sum P(x) \log \frac{P(x)}{Q(x)} 성질 비대칭성에서 오는 특징 KL Divergence는 두 분포의 차이를 측정하는 방법이라고 했다.
직관 발생 가능성이 낮은 사건이 발생 가능성이 높은 사건보다 더 많은 “정보”를 얻을 수 있다. 즉, 항상 발생하는 사건은 정보가 없다. 반대로 간헐적으로 발생한다면 정보가 많다. 위 생각에 동의한다면, 이를 수치화 할 수 있어야 한다.
1건의 항목
AI가 웹을 공짜로 긁어가던 시대를 끝내려는 Cloudflare의 실험을 짚습니다. 크롤러를 분류하고, 신원을 확인하고, 요청 하나에 돈을 매기는 흐름이 어떻게 작동하는지 살펴봅니다.
7건의 항목
GOF의 디자인 패턴 1장, 서론의 두번째를 정리해봅니다.
코드를 짜다보면, 어느새 얽히고 섥혀있는 내 프로젝트를 마주한다. 부지런함이 개발자의 덕목이 아닌가라고 생각될 정도로 항상 깔끔함을 유지하는 것이 참 중요하다는 생각이 들곤한다. 혹은 미래의 나와 과거의 나가 항상 현재에서 싸우는 듯하기도 한다.
상속과 컴포지션. 무엇을 선택할지 어떻게 판단해야 하는가? OO에서 재사용성을 중요시하는 이유 Don’t reinvent the wheel! 바퀴는 이미 동작과 상태가 명확한 물체 설계, 구현, 테스팅까지 모두 마친 물체 이걸 가지고 다른 유용한 물체를 만들자.
냄새나면 당장 갈아라. 어떻게 하는지에 대해서 지금까지 배웠다. 하지만, “언제” 시작하고 그만할지를 판단하는 것은 또 다른 얘기다. 어떤 “냄새”를 맡았을 때 손을 대야할까? 기이한 이름 이름으로 이게 뭐하는 것인지 딱 볼 수 있게 작성해야 한다.
Inherence 전체적인 구조 상속이 필요한 이유 상속은 매우 유용하다. 13. Class & Object & Constructor 글을 다시 기억해보자.
클래스는 c++에서 자세히 다뤘으므로, 해당 내용에 대해 파이썬 문법만 알아보도록 하자.
Swift에서의 상속은 다른 언어와 비슷하다.
1건의 항목
범주론에서의 카테고리에 대해 알아보자. 프로그래밍과 무슨 관계가 있는가? 왜 이런 메타수학에서 사용되는 개념이 프로그래밍에서 사용될까? 프로그래밍에서 공통적으로 나타내는 개념들 사이의 관계가 카테고리의 조건에 딱 들어맞는다. 모든 프로그래밍 언어에는 타입이 있다.
2건의 항목
초기값 주기 x, w = 0 일 경우 gradient가 0이 되서 학습이 안된다! 모두 0이면 학습이 안된다! Restricted Boatman Machine(RBM) 어떻게 Weight를 초기화 할 수 있을까? 그 해결방안 중 하나가 RBM이었는데, 아이디어는 간단하다.
Global, Static 변수에 대해 사용시에 초기화 되는 방법 eager 앱 시작시 생성됨 장점 단순하다. data race 문제 없다. 단점 초기 로딩시 느리다. lazy 사용시에 초기화됨 장점 초기 로딩시 필요없는 것들을 로딩하지 않아 빠르다.
1건의 항목
클래스는 c++에서 자세히 다뤘으므로, 해당 내용에 대해 파이썬 문법만 알아보도록 하자.
2건의 항목
Inline Function, 함수 인라인하기를 알아보자.
Inline Variable, 변수 인라인하기를 알아보자.
1건의 항목
Java에서의 Nested Class를 알아보며, 어떻게 변화해 왔을지 한번 생각해보자. Nested Class 클래스 안에 다른 클래스 Java에서는 둘로 나뉜다.
2건의 항목
일급 함수 parameter로 사용가능 return 값으로 사용가능 익명함수 argument label 호출하는 쪽에서 사용하는 이름 parameter name function 안에서 사용하는 이름 Variadic parameters 0개 이상의 특별한 타입을 나열해서 파라미터로 넘길 수 있음 ...을 넣어서 사용 이렇게 선언된 경우 함수안에서 해당 type의 Array로 사용할 수 있음 func sum(values: Int…) -> Int { var result = 0 for value in values { result +=...
오늘은 작업 중 내가 모르는 코드를 발견해서 글을 써본다. reduce! reduce(::) 형태만 봐왔었는데 reduce(into::) 형태도 있더라! 알아보자.
3건의 항목
Numpy.loadtxt() 단, csv 파일의 모든 값이 같은 자료형이어야 한다.
fstream Reading from file #include <iostream> #include <fstream> #include <string> using namespace std; int main(){ string line1; string line2 ifstream myfile("input.txt"); if (myfile.is_open()){ if(!myfile.eof()){ // end of file 이 아니면 계속 진행.
컴퓨터를 통한 문제 해결을 위해서 우리는 정수, 실수, 문자열 등을 프로그램 실행중에 만들어서 사용하였다.
1건의 항목
정렬에 대해 깊게 공부해보자.
2건의 항목
What is Class? 우리는 클래스라는 개념을 왜 도입했을까? C++에서 함수가 태어나게 된 이유도 분리해서 관리하기 위함이었다.
Inherence 전체적인 구조 상속이 필요한 이유 상속은 매우 유용하다. 13. Class & Object & Constructor 글을 다시 기억해보자.
1건의 항목
자료형 프로그램에서 선언된 변수들이 기억 공간에서 어떻게 저장되고 처리되어야 할지, 컴파일러에게 알려줌 종류 정수형 실수형 문자형 사용자 정의 자료형 정수형 소수점이 없는 숫자 음의 정수, 0 , 양의 정수 오버플로우(overflow) 데이터 허용 범위를 넘는 값을 변수에 저장할 때, 의도한 값이 아닌 다른 값이 저장되는 것 #include <stdio.h> int main(void) { short a = 32767, b=2, c; unsigned short d; c = a+b; d = a+b; printf("c...
1건의 항목
Intuition Concept 이게 정적분이죠! 하지만 컴퓨터는 연속적인 값을 인식할 수 없기 때문에 (사실 점들의 집합이 선이긴 하죠) 이산적인 값에 대해서 이 값에 근사해야 합니다.
1건의 항목
두 나라 정책금리의 차이가 자본의 흐름과 환율을 어떻게 밀어내는지, 특히 한·미 금리차가 원·달러 환율을 읽는 핵심 축인 이유를 짚습니다. 2026년 중반 국면의 실제 금리 수준과 향후 경로 시그널을 함께 봅니다.
5건의 항목
최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. PC 조립 과정 보며 구조 이해하기 컴퓨터 하드웨어 구성 요약 다나와 다나와 이곳에 가면 컴퓨터 용어에 대한 간단한 설명들을 쉽게 알 수 있다. 컴퓨터란? CPU가 가장 중요하다.
프로세스간 통신 interface IPC를 가능케하는 interface이다. 서로 다른 process에서 접속을 하려 할 때, 이 socket을 사용하여 접근하게 되고, 해당 socket은 접속하는 process가 제대로 왔는 지와 같은 검사를 수행하게 된다.
인터페이스는 왜 필요할까? 그리고 무엇일까? Interface의 사전적 의미 inter-(상호간의) + -face(면) = interface 접해있는 두 물체나 공간 사이의 경계 사용자는 스위치를 키는 버튼에 집중 이걸 누르면 어떤 일이 일어날지를 앎 (what) 어떻게 그런일이 일어나는지는 모름 (how) 실제 동작은 구현 공간에서 일어남 배선의 연결 사용자는 잘 알지 못하는 공간 구현자만 알고 있음 이미 알고 있는 개념 = 함수 함수는 블랙박스임: 호출자는 내부가 어떻게 도는지 이해하려 하지 않는다.
인터페이스를 사용해야 하는가? 그냥 실질적인 내용이 담긴 구현체를 사용해야 하는가? 모든 것이 인터페이스여야 한다는 주장 다른 클래스의 메서드를 절대로 직접 호출하면 안된다. 모든 것을 인터페이스로 만들어라.
우리는 시스템에 들어가는 모든 코드를 보통 직접 개발하지 않는다. 외부 패키지 구입, 오픈소스, 사내 팀의 제공 컴포넌트 사용 등 다양한 방식으로 외부 코드를 사용한다. 이 외부 코드를 우리 코드에 깔끔하게 통합하는 것은 꽤나 중요하다.
2건의 항목
리팩토링 작업중, 고민했던 것들을 정리해본다. 누군가에게는 도움이 되겠지. 문제 상황 일단 문제상황은 위와 같다. 같은 VC로 작성되어있음에도 불구하고, 실제 유저가 진입했을 때 보는 화면은 두가지이다.
UITableView의 Separator와 관련해 해결했던 것들을 적어둔다. 높이 늘리기 찾아본 결과 방법이 없다. 셀 안에 UIView를 만들어서 처리하는 것이 방법. Separator 길이 조정 self.tableView.
1건의 항목
Intuition Concept 컴퓨터가 생각하는 방식은 절레절레와 노가다 밖에 없어요. 무슨말이냐면 Yes, No의 선택방식과, 계산을 계속하는 방법이 전부라는 의미죠. 멍청하다고 생각할 수 있겠지만 이것을 잘 활용하면 강점이 됩니다.
2건의 항목
네트워크 두 대 이상의 컴퓨터를 연결한 것 인터넷 수억개의 컴퓨팅 장치를 연결하는 TCP/IP 프로토콜로 구현된 네트워크 결론 인터넷은 네트워크의 일종 TCP/IP 프로톨을 준수하는 네트워크 이용하기 위해 웹브라우저 사용 .
LAN 근거리 통신망 같은 건물 안을 범위로 하는 네트워크 집, 사무실과 같은 공간에서 사용 컴퓨터, 프린터와 같은 장치를 연결 MAN 도시권 통신망 서울시, 대학 캠퍼스 정도의 범위 WAN 광역 통신망 넓은 범위에 구축된 네트워크 랜과 랜을 연결 범위가 넓어 속도가 느리고 오류가 많다.
2건의 항목
탐색하는 방법에 대해 알아보자. 검색 문제 n개의 키를 가진 배열 S와 키 x가 주어졌을 때, x=S[i]가 되는 첨자 i를 찾는 것 없다면 오류로 처리한다. 결론 : 이분 검색 알고리즘보다 효율적인 알고리즘은 없다. 이진 검색 상태 공간 트리 순차 검색은 답이없다.
오늘은 보간법에 대해 공부해본다. Intution Concept 보간법은 사실 위와 같이 4개의 점을 서로서로 이어서(다양한 방법이 있겠죠?) 그 사이값을 추정하는 방법에 대한 것이다. 그런데 비슷한 걸 앞에서 하지 않았냐! 하고 궁금할 지도 모르겠다.
2건의 항목
컴파일러 소스코드를 타겟 언어와 의미론적으로 동등하게 번역해주는 프로그램 어떠한 언어에서 기계어로만 변환하는 것을 부르지 않음 예시 C 언어 컴파일러 (기계어로 변환) Silicon Compiler 논리 게이트 연산을 수행할 때 쉽게하기 위해 해주는 녀석 OS Command language 명령어 커맨드를 어휘분석, 구분 분석을 통해서 OS가 이해하는 언어로 변환함 Query language 쿼리문 자체를 데이터 베이스가 이해하는 언어로 변경해줌 컴파일러 언어 한번 컴파일이 오래걸림 하지만 컴파일 하고나면 실행파일이 생성되기 때문에...
GoF의 디자인 패턴, 해석자 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
1건의 항목
일괄처리부터 시분할시스템, 최근의 고급운영체제, 인터럽트에 기반한 현대 운영체제까지 변천 역사를 알아본다. 1. 초기 컴퓨터 노가다, 사람 손도 많이가, 장치도 엄청커, 비싸기도 비싸 운영체제는 컴퓨터가 발전하면서 같이 발전하게 되었다.
1건의 항목
iOS 앱개발에서 화면을 담당한다면 피할 수 없는 autolayout! 공식 문서를 읽어보며 정리해보자.
3건의 항목
Inverse Matrix Definition 정사각행렬에서 정의된다. AA^{-1}\;=\;A^{-1}A\;=\;I Determinant 에 따른 구분, 그리고 의미 Determinant 가 존재한다. 역행렬이 존재한다.
Rank 행렬은 하나의 공간을 매핑한다고 했다. 방금은 3 x 3 의 행렬에 대해 봤기 때문에, 열벡터 공간과 행벡터 공간이 동일하게 3차원 공간을 매핑하고 있었다. 하지만 행렬이 꼭 정사각행렬이라는 법은 없다.
Gauss Elimination 가우스 소거법은, 연립방정식의 해를 행렬을 이용해 쉽게 구하는 방법이다. 기본적으로 행벡터의 계수를 조작하여 구하는 방법으로, Upper Triangle Matrix, Lower Triangle Matrix 를 만들어 구하는 방법이다.
1건의 항목
운영체제의 주요 서비스: 프로세스, 메모리, 파일관리, 시스템 호출에 대해 알아본다. 운영체제의 주요 서비스는 하드웨어 자원을 각 사용자 애플리케이션에 적절히 분배해주는 것이다.
74건의 항목 처음 10개의 태그
Fundamentals 사용처에 대한 “명료함”이 최우선이다. “간결함”보다 “명료함”이 보다 중요하다. 모든 선언에 대해 문서를 작성해라. ??? 클린코드와 대치된다.
Parameters 문서에 제공할만한 매개변수 이름을 선택하자. 파라미터 이름을 숨겨 보이지 않는 경우에도 설명에 있어서는 중요하다.
예전에 네트워크 처리를 하면서 맞닥들였던 문제를 다시한번 적어본다. 그리고 그 개념까지 간단하게 정리해본다.
Border는 바깥으로 그려질까 안쪽으로 그려질까? 오해와 삽질에 대해 정리해본다. Answer innerborder를 그리기 위해서는 현재 표현되는 frame을 border width만큼 줄여버리면 된다.
TableView dataSource에서 아이템을 가져오다 outOfIndex가 나서 crash가 났다. 이로부터 배운 점에 대해 적어본다. 어떤 상황인가? crash 로그를 확인해보니, tableView에서 indexPath를 벗어나 발생했음을 확인했다.
headerView가 있는 TableView에서 높이는 제대로 맞는데, 이상하게 셀수가 많아질 상황에서 끝까지 스크롤되지 않는 문제가 발생했다. headerView의 layout을 먼저 잡아주어야 한다.
이전에 앱의 실행 과정에 대해서 공부했을 때 제대로 이해하지 못했었다. 이번 기회에 제대로 이해하는 자리를 가져보려 한다. 조금 성장했는지 약간 더 이해가 되었다! 그럼 시작하자.
iOS 앱개발에서 화면을 담당한다면 피할 수 없는 autolayout! 공식 문서를 읽어보며 정리해보자.
이전 글에서 PresentationController가 무엇인지 배웠다. 그런데, Transition Animator를 제공하는 부분에서 UIViewControllerAnimatedTransitioning이라는 친구를 보았다. 오늘의 주제는 이녀석이다.
WWDC 2019 키노트를 확인해보며 알짜 정보를 쏙쏙 뽑아보자. Dark Mode iOS 13부터 지원되는 기능이다. 말 그대로 dark mode이다. 해당 기능을 만들면서 고민했던 것은 역시 Mode에 따라 변화하는 색상이었다.
1건의 항목
Descripter 이미지를 비교하기 위해 동일한 방법을 통해 하나의 비교 대상으로 만드는 것 두 가지 이미지가 있다. 이 두가지 이미지가 비슷한지 아닌지를 구분하기 위해 만든 것이 descripter이다.
4건의 항목
HTTP에서 상태가 필요한 이유 로그인이 되게 하고 싶다. 쇼핑몰 로그인이 아니어도 카트 목록을 기억하게 하고 싶다. 해결 방법 Fat URL - URL에 상태 정보를 모두 집어 넣기 - URL을 파싱해서, 사용자의 상태를 확인한다.
인터넷 공간 상에서 해당 단말기의 고유 주소 Socket을 통해 통신한다는 것은 알았다. 근데 우리가 전화를 걸더라도, 어디에 전화를 걸것인지 알아야 한다. 그걸 대표하는 것이 전화번호이다. 마찬가지로 통신을 하려면, 어디에 통신할 것인지 알려주는 과정이 필요하다.
네트워크 두 대 이상의 컴퓨터를 연결한 것 인터넷 수억개의 컴퓨팅 장치를 연결하는 TCP/IP 프로토콜로 구현된 네트워크 결론 인터넷은 네트워크의 일종 TCP/IP 프로톨을 준수하는 네트워크 이용하기 위해 웹브라우저 사용 .
IP 주소를 갖고 있는 컴퓨터에서 Process에 접근하기 위한 번호 해당 컴퓨터에 들어가더라도, 어떤 process에 접근하는지를 알아야 한다. 그걸 대표하는 것이 포트 번호이다.
1건의 항목
인터넷 공간 상에서 해당 단말기의 고유 주소 Socket을 통해 통신한다는 것은 알았다. 근데 우리가 전화를 걸더라도, 어디에 전화를 걸것인지 알아야 한다. 그걸 대표하는 것이 전화번호이다. 마찬가지로 통신을 하려면, 어디에 통신할 것인지 알려주는 과정이 필요하다.
1건의 항목
범주론에서의 카테고리에 대해 알아보자. 프로그래밍과 무슨 관계가 있는가? 왜 이런 메타수학에서 사용되는 개념이 프로그래밍에서 사용될까? 프로그래밍에서 공통적으로 나타내는 개념들 사이의 관계가 카테고리의 조건에 딱 들어맞는다. 모든 프로그래밍 언어에는 타입이 있다.
3건의 항목
Internet Service Provider 서비스를 제공하는 모든 제공자를 뜻한다.
이전글들은 사실 이 원칙을 위해 달려온 것이 아닌가하는 생각이 든다. OOP의 정수로 불리우는 SOLID원칙에 대해서 깊게 알아보고, 실제 iOS Framework의 설계 방향에 대입하면서 보다 찐한 이해를 경험해보자.
SOLID 설계 정신에 대해 알아보자. SOLID 정신으로 이룰 수 있는 것 소프트웨어 설계를 “유연하게” 할 수 있다. 유연한 소프트웨어 설계, 즉 추상적인 설계로 커플링을 제거할 수 있다.
11건의 항목 처음 10개의 태그
소프트웨어의 혁신과 함수형 프로그래밍 소프트웨어를 통한 혁신은 왜 발생했는가? 인간의 추상적인 사고를 통해 발생한 아이디어를 컴퓨터의 극대화된 연산력을 통해 사용할 수 있게 되었기 때문. 이러한 시각은 크게 봐도 그렇고 개발자가 언어를 바라보든 작은 시각에서도 맞다.
Java에서의 Nested Class를 알아보며, 어떻게 변화해 왔을지 한번 생각해보자. Nested Class 클래스 안에 다른 클래스 Java에서는 둘로 나뉜다.
추상클래스는 왜 필요할까? 다형성은 멋지고 강력한 개념 OO 4대 특성인 이유 (상속, 캡슐화, 다형성, 추상화) 다형성은 상속에 기반 상속과 다형성은 추상화에 기반 공통된 것을 뽑아내어 일반화된, 범용적인 것으로 적용 여러 클래스에서 공통 분모를 뽑아 부모 클래스로 제작 자식마다 달리 작동하는 구현을 부모의 method signature로 일반화 추상화는 조금더 복잡한 문제를 해결하기 위한 것 새로운 개념은 새로운 문제도 가져온다 추상화는 막강하지만 그로 인해 생각지 못한 문제가 발생 역시 사람은 직접 해보고 당해봐야 답을 찾음 ...
인터페이스는 왜 필요할까? 그리고 무엇일까? Interface의 사전적 의미 inter-(상호간의) + -face(면) = interface 접해있는 두 물체나 공간 사이의 경계 사용자는 스위치를 키는 버튼에 집중 이걸 누르면 어떤 일이 일어날지를 앎 (what) 어떻게 그런일이 일어나는지는 모름 (how) 실제 동작은 구현 공간에서 일어남 배선의 연결 사용자는 잘 알지 못하는 공간 구현자만 알고 있음 이미 알고 있는 개념 = 함수 함수는 블랙박스임: 호출자는 내부가 어떻게 도는지 이해하려 하지 않는다.
빌더 패턴은 무엇일까? 무엇을 조심해야 할까? 어떤식으로 활용하는 것이 좋을까? Builder 개체의 생성과정을 그 개체의 클래스로부터 분리하는 방법 개체의 부분부분을 만들어 나가다 준비가되면 그제서야 개체를 생성 StringBuilder 단순한 것은 이걸 사용해서 원하는 문자열을 만들 수 있다.
Adapter 패턴으로 알려져있는 Wrapper 패턴에 대해 알아보자. 이름의 문제 GoF: 09.
개체 지향을 얘기하면 꼭 나오는 단어인 예외에 대해서 알아본다. Exception 사실 예외는 개체지향의 일부가 아니다.
예외 처리를 제대로 하지 못하는 이유는 무엇일까? 예외 처리를 제대로 하지 못하는 이유 과거에 주류이던 예외 처리 방식은 지속적으로 작동이 보장되어야 하는 프로그램에 대해 “하드웨어가 멈추는 크래시”가 무서워서 그랬을 수 있다.
그래서 예외는 어떻게 처리하는 것이 좋은걸까? 오류 상황 예외 상황과 오류 상황을 다른 의미로 사용할 것 오류 상황은 error condition을 말함 이 오류 상황을 처리하는 방법 중에 예외가 있음 오류 상황은 예측 가능한 상황을 의미함 프로그램 실행 중에 기본적으로는 일어나지 않음 하지만 일어날 수 있는 일 따라서 이러한 상황을 처리하는 코드는 프로그램 기능의 일부임 프로그래머가 이를 예측하지 못했다면? 버그 오류 상황을 처리하는 4가지 방법 무시 곧바로 크래시 일단은 작동하는데 언젠가는 크래시 안정적이지 못한 상태로 계속 동...
해당 부분은 너무 코드가 많아, 이전 상태와 이후 상태를 놓고 그 사이에서 저자가 어떠한 흐름으로 이를 처리했는지 간략하게 정리하는 것을 목적으로 한다. Intro 해당 부분에서는 출발은 좋았으나, 확장서잉 부족했던 모듈을 소개한다.
18건의 항목 처음 10개의 태그
Extract Function, 함수 추출하기에 대해 알아보자.
Inline Function, 함수 인라인하기를 알아보자.
Extract Variable, 변수 추출하기를 알아보자.
Inline Variable, 변수 인라인하기를 알아보자.
Change Function Declaration, 함수 선언 바꾸기에 대해 알아보자. 요약 코드 function circum(radius) { .. } function circumference(radius) { ..
Encapsulate Variable, 변수 캡슐화하기를 알아보자.
Rename Variable, 변수 이름 바꾸기를 알아보자. 요약 코드 let a = height * width; let area = height * width; 배경 명확한 프로그래밍의 핵심은 이름 짓기다.
Introduce Parameter Object, 매개변수 객체 만들기에 대해 알아보자.
Combine Functions into Class, 여러 함수를 클래스로 묶기를 알아보자.
Combine Functions into Transform, 여러 함수를 변환 함수로 묶기를 알아보자.
1건의 항목
전체 과정 개발자가 소스코드를 작성한다. (Ts, Html, css, sass, scss etc) Babel을 통해 모든 브라우저에서 호환 가능한 문법의 코드로 변환한다. 소스코드를 하나로 묶는 Bundling을 진행한다. 원격 저장소에 Deploy한다.
3건의 항목
level3 : join을 사용하는 문제이다. 생각 이 문제를 풀기 위해서는, join이라는 쿼리가 어떻게 돌아가는 지 알아야 한다. right join, left join등 다양한 join의 방법이 있지만, 일단 기본적으로 join을 하면 그냥 합쳐진다.
level3 : join을 사용하는 문제이다. 생각 이 문제를 풀기 위해서는, join이라는 쿼리가 어떻게 돌아가는 지 알아야 한다. right join, left join등 다양한 join의 방법이 있지만, 일단 기본적으로 join을 하면 그냥 합쳐진다.
level3 : join을 사용하는 문제이다. 생각 이 문제를 풀기 위해서는, join이라는 쿼리가 어떻게 돌아가는 지 알아야 한다. right join, left join등 다양한 join의 방법이 있지만, 일단 기본적으로 join을 하면 그냥 합쳐진다.
1건의 항목
JPG(Joint Photographic Experts Group) 정의: 정지 화상을 위해서 만들어진 손실 압축 방법 표준 핵심: 전체적 구조 손실보다 디테일 손실에 둔감하다는 점을 통해 압축 원리: 이미지의 고주파 성분의 일부를 제거함.
1건의 항목
전체 과정 개발자가 소스코드를 작성한다. (Ts, Html, css, sass, scss etc) Babel을 통해 모든 브라우저에서 호환 가능한 문법의 코드로 변환한다. 소스코드를 하나로 묶는 Bundling을 진행한다. 원격 저장소에 Deploy한다.
1건의 항목
고급언어 > 가상 머신 > 실제 머신 이 이해하는 방식으로 추상화된 코드가 구체화 된다. 이 단계에서 가상 머신이 이해할 수 있을 정도의 형태로 변환한 코드를 바이트 코드라 한다. 이렇게 중간단계를 둚으로서 다양한 머신에 대응할 수 있다.
1건의 항목
개요 SORT(Simple Online and Realtime Tracking)은 매우 알고리즘이 간단함에도 불구하고 효과적이고 실용적인 다중 대상 추적 알고리즘이다. IOU를 기반으로 추적된 물체에 대해 association(할당)을 진행하기 때문에 매우 빠르다.
2건의 항목
운영체제에 대한 정의, 역할에 대해 알아본다. 운영체제는 사용자가 컴퓨터를 사용하기 위해 필요한 소프트웨어이다. 일반적으로 사용하는 모든 프로그램은 운영체제에서 그 자원을 관리한다. 목적 운영체제를 사용하는 가장 큰 목적은 하드웨어의 관리이다.
운영체제의 근간을 이루는 핵심 코드 어떠한 방식으로 자원을 나눠주고, 프로세스를 관리하는지, 프로그램이 요구하는 시스템 콜 같은 중요한 작업을 수행하는 코드를 말한다. 그렇기에 어떤 커널을 사용하느냐에 따라 OS의 정체성이 규정된다.
4건의 항목
KVC/KVO 는 Apple Framework에서 중요한 부분을 담당한다. 한번 공부해보자. Background 03. Operation Queue에서 간단하게 알아보았던 적이 있다.
지난 글에서는 Objective-C에서 KVC/KVO가 어떻게 쓰였는지 알아보았다. 이번에는 Swift다. Key Value Coding 여기까지는 Objective C에서 사용하는 것들이었다. 이제는 실제 많이 사용하는 Swift에서 어떤지 보자.
이전 글들에서 Objective C의 KeyPath와 Swift에서의 KeyPath를 한번씩 보았다. 모양이 좀 달랐었는데 왜 다른지에 대해서 알아보자. 이번 글은 WWDC 17을 기준으로 한다.
동시성 프로그래밍을 위해 apple에서는 GCD라는 것을 제공한다는 사실을 이제 우리는 알고 있다. 그런데, 이외에 다른 방법이 하나 더있다. 바로 Operation Queue이다.
3건의 항목
KVC/KVO 는 Apple Framework에서 중요한 부분을 담당한다. 한번 공부해보자. Background 03. Operation Queue에서 간단하게 알아보았던 적이 있다.
지난 글에서는 Objective-C에서 KVC/KVO가 어떻게 쓰였는지 알아보았다. 이번에는 Swift다. Key Value Coding 여기까지는 Objective C에서 사용하는 것들이었다. 이제는 실제 많이 사용하는 Swift에서 어떤지 보자.
동시성 프로그래밍을 위해 apple에서는 GCD라는 것을 제공한다는 사실을 이제 우리는 알고 있다. 그런데, 이외에 다른 방법이 하나 더있다. 바로 Operation Queue이다.
1건의 항목
이전 글들에서 Objective C의 KeyPath와 Swift에서의 KeyPath를 한번씩 보았다. 모양이 좀 달랐었는데 왜 다른지에 대해서 알아보자. 이번 글은 WWDC 17을 기준으로 한다.
3건의 항목
프로그램 실행 과정 graph LR A[원시함수 작성] --> |Compiler|B(오브젝트 파일 생성) B-->|Linker|C[실행파일 생성] Compiler : 고급 언어로 작성된 파일을 기계어로 번역해줌.
Identifier Reserved Words 사용가능 문자 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789 예약어는 안된다.
friend 두개의 클래스가 있을 때, 서로 만들어진 모든 멤버변수, 멤버함수를 공유하기 위해서 우리는 friend 라는 키워드를 사용할 수 있다. a 객체가 b 객체를 친구로 선언한다면 b객체는 a객체의 모든 변수와 함수값을 갖다가 사용할 수 있다.
1건의 항목
원·달러 환율이 높다는 걱정을 두고, 지금의 원화 약세가 한국만의 문제인지 아니면 전 세계가 겪는 달러 강세의 한 조각인지를 실제 데이터로 갈라 봅니다. 무엇을 확인하면 이 판정이 뒤집히는지까지 짚습니다.
1건의 항목
원·달러 환율이 높다는 걱정을 두고, 지금의 원화 약세가 한국만의 문제인지 아니면 전 세계가 겪는 달러 강세의 한 조각인지를 실제 데이터로 갈라 봅니다. 무엇을 확인하면 이 판정이 뒤집히는지까지 짚습니다.
4건의 항목
KVC/KVO 는 Apple Framework에서 중요한 부분을 담당한다. 한번 공부해보자. Background 03. Operation Queue에서 간단하게 알아보았던 적이 있다.
지난 글에서는 Objective-C에서 KVC/KVO가 어떻게 쓰였는지 알아보았다. 이번에는 Swift다. Key Value Coding 여기까지는 Objective C에서 사용하는 것들이었다. 이제는 실제 많이 사용하는 Swift에서 어떤지 보자.
이전 글들에서 Objective C의 KeyPath와 Swift에서의 KeyPath를 한번씩 보았다. 모양이 좀 달랐었는데 왜 다른지에 대해서 알아보자. 이번 글은 WWDC 17을 기준으로 한다.
동시성 프로그래밍을 위해 apple에서는 GCD라는 것을 제공한다는 사실을 이제 우리는 알고 있다. 그런데, 이외에 다른 방법이 하나 더있다. 바로 Operation Queue이다.
3건의 항목
KVC/KVO 는 Apple Framework에서 중요한 부분을 담당한다. 한번 공부해보자. Background 03. Operation Queue에서 간단하게 알아보았던 적이 있다.
지난 글에서는 Objective-C에서 KVC/KVO가 어떻게 쓰였는지 알아보았다. 이번에는 Swift다. Key Value Coding 여기까지는 Objective C에서 사용하는 것들이었다. 이제는 실제 많이 사용하는 Swift에서 어떤지 보자.
동시성 프로그래밍을 위해 apple에서는 GCD라는 것을 제공한다는 사실을 이제 우리는 알고 있다. 그런데, 이외에 다른 방법이 하나 더있다. 바로 Operation Queue이다.
1건의 항목
Lambda function 함수 안에서 부를 수 있는 Local function! 사실 정체는 객체이지만, 우리는 함수의 개념으로 갖다 쓴다! Usage [closure](입력 매개변수)->출력 type{내용} Local function 이기 때문에 만들어졌다가 리턴 후 사라진다.
1건의 항목
Lambda function 함수 안에서 부를 수 있는 Local function! 사실 정체는 객체이지만, 우리는 함수의 개념으로 갖다 쓴다! Usage [closure](입력 매개변수)->출력 type{내용} Local function 이기 때문에 만들어졌다가 리턴 후 사라진다.
1건의 항목
LAN 근거리 통신망 같은 건물 안을 범위로 하는 네트워크 집, 사무실과 같은 공간에서 사용 컴퓨터, 프린터와 같은 장치를 연결 MAN 도시권 통신망 서울시, 대학 캠퍼스 정도의 범위 WAN 광역 통신망 넓은 범위에 구축된 네트워크 랜과 랜을 연결 범위가 넓어 속도가 느리고 오류가 많다.
1건의 항목
비트 0, 1 비트가 모여 데이터 구성 비트를 주고 받는 것이 통신의 본질 바이트 = 8비트 워드 = 1바이트가 2개 (16비트) 데이터가 어떻게 전기 신호로 전달? 데이터가 전달되지 않을 때 전기적 신호가 존재 Clock 신호 CPU는 해당 신호에 맞춰 일을 처리한다.
1건의 항목
1건의 항목
Early Binding과 Late Binding은 성능에서 어떤 차이가 나는가? 실제로는 어떻게 사용하는가? 알게 모르게 당연하게 사용하고 있는 다형적 메서드는 무엇이 있을까? 이른 바인딩 vs.
1건의 항목
혼합 분포 특정 분포를 만드는데 있어, 여러개의 확률 분포를 사용하는 것. 상황을 하나 생각해보자. 1에서 6까지의 숫자가 나열되어 있는 분포를 생각해보자. 해당 숫자들은 각기 다른 빈도를 갖고 있을 것이다. 그리고 주사위 하나를 생각해보자.
1건의 항목
우리는 private을 통해 변수를 자주 정의한다. 이렇게 하는 이유는 남들이 변수에 의존하지 않도록 만들고 싶기 때문이다. 그럼에도 불구하고 많은 프로그래머들은 get, set 함수를 당연하게 외부에 노출하는 오류를 범한다.
1건의 항목
레이어 높이(Layer Height)는 3D 프린팅 과정에서 한 번에 쌓이는 각 층의 두께를 나타냅니다. 3D 프린터는 3D 모델을 여러 작은 수평 층으로 나누어서 생성하는데, 이 각 층의 두께가 레이어 높이입니다.
3건의 항목
전체 과정 개발자가 소스코드를 작성한다. (Ts, Html, css, sass, scss etc) Babel을 통해 모든 브라우저에서 호환 가능한 문법의 코드로 변환한다. 소스코드를 하나로 묶는 Bundling을 진행한다. 원격 저장소에 Deploy한다.
headerView가 있는 TableView에서 높이는 제대로 맞는데, 이상하게 셀수가 많아질 상황에서 끝까지 스크롤되지 않는 문제가 발생했다. headerView의 layout을 먼저 잡아주어야 한다.
iOS Layout을 적용하는 것에는 여러가지 방법이 있다. autolayout만이 정답이라 생각했는데, 오산이었다. 이 부분은 주기적인 업데이트를 하도록 하겠다. Storyboard 장점으로는 UI 구성을 눈으로 확인할 수 있다는 점이다.
1건의 항목
iOS 화면 업데이트는 어떻게 되는 걸까? draw, layoutIfNeeded, setNeedsLayout 등. 이해가 안가는 것들이 너무 많았다.
2건의 항목
iOS 화면 업데이트는 어떻게 되는 걸까? draw, layoutIfNeeded, setNeedsLayout 등. 이해가 안가는 것들이 너무 많았다.
View 화면을 구성하는데 기본이 되는 class NSObject를 상속한 UIResponder를 상속해서 구성됨 CustomView는 UIView를 상속함 UIImageView, UILable, UIScrollView… 가능한 것들 Drawing Animation Layout subview 관리 Event Handling UIResponder 상속하기 때문에, touch와 같은 event에 반응 가능 gesture 추가 초기화 형태 // code init(frame:) init() // default parameter = CGRe...
2건의 항목
lazy property를 사용해본 경험이 있다. 해당 아이디어는 함수형 프로그래밍 언어에서 주로 사용한다. 이번에는 지연 계산법이 무엇인지, 그리고 Lazy와 unfold sequence에 대해 알아본다.
Global, Static 변수에 대해 사용시에 초기화 되는 방법 eager 앱 시작시 생성됨 장점 단순하다. data race 문제 없다. 단점 초기 로딩시 느리다. lazy 사용시에 초기화됨 장점 초기 로딩시 필요없는 것들을 로딩하지 않아 빠르다.
1건의 항목
lazy property를 사용해본 경험이 있다. 해당 아이디어는 함수형 프로그래밍 언어에서 주로 사용한다. 이번에는 지연 계산법이 무엇인지, 그리고 Lazy와 unfold sequence에 대해 알아본다.
3건의 항목
GoF의 디자인 패턴, 프록시 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
lazy property를 사용해본 경험이 있다. 해당 아이디어는 함수형 프로그래밍 언어에서 주로 사용한다. 이번에는 지연 계산법이 무엇인지, 그리고 Lazy와 unfold sequence에 대해 알아본다.
Proxy 패턴은 뭘까? 서버에서 들었던 것 같은데, 패턴으로는 어떤 의미가 있는지 알아보자.
1건의 항목
프로는 어떤 마음가짐을 가져야 하는가? 함부로 바라지 마라 Professionalism 명예와 긍지 책임과 의무 책임감을 가져라 제대로 테스트하지 않고 물건을 보냈을 때 발생한 사건에 대해 말한다. 제품이 완성됨을 확신하지 않고서 납품하여 큰 문제가 발생했다.
1건의 항목
Train/Test Dataset 정확도를 측정하는데 있어서 앞에서는, 모델을 훈련하는 데 사용했던 데이터를 가지고서 평가했다. 그런데 사실은 그렇게 수행하면 안되는 것이 당연하다.
2건의 항목
Curve Fitting with Polynomials Least Square Method을 보고 오면 좋다. 데이터가 주어졌을 때 다항식 곡선으로 어떻게 맞출 수 있는지 알아보자. Intuition Concept 아래와 같은 그림을 보고 직관적으로 이해해보자.
1건의 항목
이제 리팩터링 전반에 적용되는 원칙 몇 가지를 살펴보자. 리팩터링 정의 리팩터링이라는 개발 용어는 굉장히 두루뭉실한 의미로 통용된다. (많은 개발 용어가 그렇다) 하지만 이를 엄격하게 정의해야 유용하다.
1건의 항목
분기에 따라 값이 결정되는 코드를 짤 때, 변수를 무엇으로 선언하는 것이 좋을까? 작은 부분이나 좋은 지적이라 생각하여 정리해본다. 핵심 요약 분기에 따라 값이 결정될 때 변수를 선언해야 한다면, var보다는 let을 우선적으로 검토해보자.
1건의 항목
3D 모델이 만들어지는 기반 플랫폼. 프린터의 작업 표면. 빌드 플레이트(Build Plate)는 3D 프린터에서 3D 모델을 만들 때 사용되는 기반 플랫폼이며, 일반적으로 이 플레이트 위에 소재가 적층되어 모델이 만들어집니다.
1건의 항목
Request-Line OR Status-Line [Header CRLF] CRLF [ Body ] Start Line Request Response Header 헤더 중 X가 붙은 경우, 커스텀 헤더임 Pragma: 옛날 캐시 정책 Deprecated Cache-Control: 캐시 정책인데, 기능이 추가된 것들 Connection: close, keep-alive 두 개의 옵션이 있음 Stateless Protocol HTTP는 상태가 없는 프로토콜이다.
4건의 항목
String library method #include <string> #include <iostream> using namespace std; int main(){ string word = "good"; word.length(); // 길이 리턴 word.empty(); // 빈 문자열인지 1, 0값 리턴 word.clear(); // 문자열 삭제 word += "-bye"; // 더하기 가능 word[0]; // h word[word.length() - 1]; // 마지막...
for_each() algorithm 라이브러리에는 다양한 함수가 있지만, 그중에서 for_each() 함수에 대해서 알아보자.
앞으로 진행할 긇에서는, Library와 Framework에 대해서 알아볼 것이다. 첫번째 순서로는 Library이다. Library & Framework 일단 간단하게 Library와 Framework에 대한 차이를 알아보고 가자.
프로젝트의 외부 라이브러리 의존은 줄일 수록 빠른 대응이 가능한 서비스를 만들 수 있다 판단했습니다. 프로젝트를 진행하기에 앞서, 라이브러리를 어느수준까지 사용하는 것을 허용할 것인지에 대해 고민했습니다.
2건의 항목
고차원 Lift에 대해 알아보자. (map) High Dimensional lift 앞에서 배운 lift은 기본적으로 1변수를 변환할 수 있는 함수이다.
Monad는 어떻게 정의할 수 있을까? Monad Monad: 다음의 연산들이 정의된 Functor unit: T -> M<T> (return in Haskell) flat: M<M<T>> -> M<T> (join in Haskell) Functor에 unit하고 flat추가한게 모나드다.
1건의 항목
주어진 모델의 파라미터가 주어졌을 때, 관찰된 데이터가 실제로 나타날 확률.
1건의 항목
Request-Line OR Status-Line [Header CRLF] CRLF [ Body ] Start Line Request Response Header 헤더 중 X가 붙은 경우, 커스텀 헤더임 Pragma: 옛날 캐시 정책 Deprecated Cache-Control: 캐시 정책인데, 기능이 추가된 것들 Connection: close, keep-alive 두 개의 옵션이 있음 Stateless Protocol HTTP는 상태가 없는 프로토콜이다.
12건의 항목 처음 10개의 태그
암호학에서 중요하게 사용되는 타원곡선에 대해 알아보자. 왜 해당 곡선을 사용할까? 타원곡선 y^2 = x^3 + Ax + B 위의 방정식의 형태로 나타나는 곡선 타원의 둘레를 구하기 위한 적분, 이의 역함수를 구하는 과정에서 유래했다.
Types of Matrix A\;=\;[a_{ij}] i = m , row size j = n, column size Square Matrix m = n \begin{bmatrix} 0 & 1 & 0\\ 0 & 2 & 0\\ 0 & 0 & 3 \end{bmatrix} Rectangular Matrix m\; \ne\;n \begin{bmatrix} 0 & 1 & 2\\ -1 & 0 & 3\\ -2 & -3 & 0\\ 9 & 3 & ...
Determinant det(I)\;=\;1\\ \;\\ det(A^T)\;=\;det(A)\\ \;\\ det(AB)\;=\;det(A)det(B)\\ \;\\ det(cA)\;=\;c^ndet(A).
Inverse Matrix Definition 정사각행렬에서 정의된다. AA^{-1}\;=\;A^{-1}A\;=\;I Determinant 에 따른 구분, 그리고 의미 Determinant 가 존재한다. 역행렬이 존재한다.
Orthogonal Matrix A^TA\;=\;AA^T\;=\;I\\ \;\\ A\;=\;A^{-1}\\.
Linear Independence 하나의 행렬은 공간을 나타낸다고 볼 수 있다.
Rank 행렬은 하나의 공간을 매핑한다고 했다. 방금은 3 x 3 의 행렬에 대해 봤기 때문에, 열벡터 공간과 행벡터 공간이 동일하게 3차원 공간을 매핑하고 있었다. 하지만 행렬이 꼭 정사각행렬이라는 법은 없다.
Gauss Elimination 가우스 소거법은, 연립방정식의 해를 행렬을 이용해 쉽게 구하는 방법이다. 기본적으로 행벡터의 계수를 조작하여 구하는 방법으로, Upper Triangle Matrix, Lower Triangle Matrix 를 만들어 구하는 방법이다.
Motivation of Pivoting 가우스 소거법과, 가우스-조르당 방법에서 대각행렬을 기준으로 수행한다는 것은 명백하다. 우리는 그래서 이 대각 행렬의 요소를 Pivot 이라 부른다.
LU Decomposition LU 분해는 근본적으로 가우스 소거법의 방법을 차용한다. 가우스 소거법은 행의 조작을 통해, Upper Triangle Matrix 를 만드는 것이 핵심이다.
12건의 항목 처음 10개의 태그
Av=λv를 만족하는, v를 A의 고유벡터(eigenvector)라 부른다. 의미 고유벡터는 선형 변환을 적용해도 방향이 변하지 않는 벡터이다. 고유벡터는 고유값에 대응하는 벡터이다. Reference Eigenvalue 고유치 문제 .
Types of Matrix A\;=\;[a_{ij}] i = m , row size j = n, column size Square Matrix m = n \begin{bmatrix} 0 & 1 & 0\\ 0 & 2 & 0\\ 0 & 0 & 3 \end{bmatrix} Rectangular Matrix m\; \ne\;n \begin{bmatrix} 0 & 1 & 2\\ -1 & 0 & 3\\ -2 & -3 & 0\\ 9 & 3 & ...
Determinant det(I)\;=\;1\\ \;\\ det(A^T)\;=\;det(A)\\ \;\\ det(AB)\;=\;det(A)det(B)\\ \;\\ det(cA)\;=\;c^ndet(A).
Inverse Matrix Definition 정사각행렬에서 정의된다. AA^{-1}\;=\;A^{-1}A\;=\;I Determinant 에 따른 구분, 그리고 의미 Determinant 가 존재한다. 역행렬이 존재한다.
Orthogonal Matrix A^TA\;=\;AA^T\;=\;I\\ \;\\ A\;=\;A^{-1}\\.
Linear Independence 하나의 행렬은 공간을 나타낸다고 볼 수 있다.
Rank 행렬은 하나의 공간을 매핑한다고 했다. 방금은 3 x 3 의 행렬에 대해 봤기 때문에, 열벡터 공간과 행벡터 공간이 동일하게 3차원 공간을 매핑하고 있었다. 하지만 행렬이 꼭 정사각행렬이라는 법은 없다.
Gauss Elimination 가우스 소거법은, 연립방정식의 해를 행렬을 이용해 쉽게 구하는 방법이다. 기본적으로 행벡터의 계수를 조작하여 구하는 방법으로, Upper Triangle Matrix, Lower Triangle Matrix 를 만들어 구하는 방법이다.
Motivation of Pivoting 가우스 소거법과, 가우스-조르당 방법에서 대각행렬을 기준으로 수행한다는 것은 명백하다. 우리는 그래서 이 대각 행렬의 요소를 Pivot 이라 부른다.
LU Decomposition LU 분해는 근본적으로 가우스 소거법의 방법을 차용한다. 가우스 소거법은 행의 조작을 통해, Upper Triangle Matrix 를 만드는 것이 핵심이다.
1건의 항목
Linear Independence 하나의 행렬은 공간을 나타낸다고 볼 수 있다.
1건의 항목
데이터의 두 변수간 선형관계를 나타내는 척도에 대해서 알아본다. 선형관계 두 변수의 관계를 알아보는 것은 매우 중요하다. 어떠한 연관성을 통하여 유의미한 정보를 이끌어 낼 수 있기 때문이다. 이러한 선형관계를 알아내는 척도는 3가지 정도가 알려져 있다.
2건의 항목
네트워크 구조 네트워크 엣지(Network Edge) 말단 device, 우리가 사용하는 대부분의 기기에 해당한다. 네트워크 코어(Network Core) 엔드 시스템을 연결하기 위한 중간의 매개들을 말한다.
운영체제에서 중요한 부분인 메모리 관리 기능에 대해 알아보자. 메모리는 CPU 자원만큼 컴퓨터를 사용하는데 매우 중요한 자원 중 하나이다.
1건의 항목
운영체제에서 중요한 부분인 메모리 관리 기능에 대해 알아보자. 메모리는 CPU 자원만큼 컴퓨터를 사용하는데 매우 중요한 자원 중 하나이다.
1건의 항목
개념 개발자와 시스템 관리자가 컨테이너 기술을 사용하여 어플리케이션을 개발, 배포, 실행하기 위한 플랫폼 컨테이너 기술을 리눅스에서 사용되던 기술이다. 이 때, 이 기술을 사용하여 응용프로그램을 배포하는 것을 컨테이화 시킨 것이다.
1건의 항목
실제 컴파일, 링킹이 끝난 뒤의 결과물에 대해서는 잘 모르는 것 같다. 실행 파일은 어떻게 구성되어 있는 걸까? 우리가 사용하는 프로그램들은, 바이너리화되어 있는 파일의 형태로 존재한다. 그런데, 이 실행파일의 형태는 OS에 따라 다른 형태로 존재한다.
2건의 항목
List 이제껏 vector container 에 대해서 집중적으로 사용했는데, list container 역시 vector와 마찬가지로 많이 사용된다. Vector 장점 : search가 빠르다. 단점 : pop/ push 가 느리다.
지금까지, 정수, 실수 문자열을 다루는 법을 배웠다. 그런데 하나의 값 말고, 여러개를 다룰 필요가 있다면 어떡해야할까? 이런 용도를 위해 python은 리스트를 제공하고 있다.
1건의 항목
RIB과 통신하기 생성시에 어떠한 흐름으로 동작하는지 알았다면, 이번에는 RIB간의 소통을 알아볼 차례다.
1건의 항목
인코딩을 공부하면서, 바이트 오더링이라는 단어를 들어보았다. 처음 들어본 단어라, 간단하게 정리해보려 한다.
1건의 항목
Xcode에서 디버깅하는 방법을 알아보자.
1건의 항목
Chat GPT Plus 구독 현재로서 가장 가성비가 좋은 건 이것임 (240403) Video, Audio, Summary, Code Generation 등 가장 많은 기능을 처리할 수 있음 GPTs를 통해 특화된 기능도 사용가능 Copilot 구독 가장 유명한 것 일단 써봄.
2건의 항목
앱 배포를 하다보면 bitcode enabled라는 flag가 있다. 이녀석을 체크하냐 마냐에 따라서 빌드 속도가 상당히 차이나는 것을 보았는데 도대체 왜 그런 건지 이해해보려 한다. bitcode 다음은 Distrubution Options에서 찾은 설명이다.
Xcode에서 디버깅하는 방법을 알아보자.
1건의 항목
ViewController는 iOS 앱 개발에서 빼놓을 수 없는 요소이다. 구조적으로 어떻게 구성되었는지 알아보고, 어떤 life cycle을 가지는지 이해해보자. 그럼 시작하자.
3건의 항목
비트코인의 트랜잭션에 대해 알아보자. Transaction 앞에서 네트워크 혹은 디바이스에 이동하기 위한 공개키와 비밀키의 직렬화 방법에 대해 알아보았다. 물론 그에 대한 파싱까지 같이 배웠다.
트랙잭션 출력에 대해 알아보자.
동시성과 깔끔한 코드는 양립하기 아주 어렵다. 그럼에도 불구하고, 동시성은 왜 필요할까? 객체는 처리의 추상화다. 스레드는 일정의 추상화다. - 제임스 O. 코플리엔 동시성이 필요한 이유? 동시성은 “무엇”과 “언제”의 Coupling을 없애는 전략이다.
29건의 항목 처음 10개의 태그
특정 값을 찍을 때 print를 찍기 일수다. 쉬우니까. 하지만 이 습관은 좋지 않다. 왜 인지 알아보자.
맥에서 아이폰 콘솔 로그 확인하기. 맨날 까먹어서 기억용으로 적어둔다. 방법 맥 앱 중에서 console.app을 실행한다. 아래 이미지에서 콘솔 로그를 보고 싶은 기기를 선택한다. 로그 메시지 필터를 걸어 확인한다.
Good 1월 부터 목표로 한 근력운동 루틴을 잘 지키고 있다. 이제 33개월 남았다. 아침에 일어나는 습관(6-7시 기상)을 잘 들이고 있다. 일찍 자는 습관(22-23시)을 잘 들이고 있다. 식단을 잘 챙겨먹고 있다. 약을 잘 챙겨먹고 있다.
Good 운동을 꾸준히 했다. 몸이 점점 커진다. 무섭다. 블로그 글을 그래도 한 20개 정도는 쓴 것 같다. 트위터 계정을 만들었다. 결국 셋업을 구매했다. 저렴하게 구매해서 좋다. 하락장에 용기내어 주식 매수했다. 좋은 생활 패턴을 가지고 있다.
Good 아침 7시에 출근하고 7시 이후에 퇴근했다. 투자글 역시 꾸준히 올렸다. 클린 코드 먼저 읽고 정리를 꾸준히 했다. 저녁 샐러드 먹기 시도했다. 회사 모니터 설정, 키보드, 마우스, 트랙패드 구매했다. 맥 스튜디오 구입했다.
Good 음, 생각보다 없다. 돈아끼는 방법을 하나 추가적으로 알았다. 브런치 글을 꾸준히 쓰고있다. Bad 운동을 못했다. 허리가 아프다. 약간 무기력증이 도지는 느낌이다. 코드를 많이 안짜서 그런 듯 하다. 최근에 잠을 잘 못잤던게 월말에 밀려왔다.
Good 크게 없다. Bad 에너지 레벨이 떨어졌다. 체력이 문제인가? 더 간절한 것이 없어졌을 지도 모른다.
Goals 무엇을 목표했나요? Good 뭔가 어떻게든 끝내려 했다..? 무언가 나만의 새로운 것을 하려는 시도를 하는 중이다.
Goals 무엇을 목표했나요? Good 운동을 시작했다. 작은 생활 계획을 세우고 이행중이다. Bad 코드를 생각을 덜 하고 짜는 것인지 지적을 좀 받았다. 퍼포먼스가 약간 떨어졌던 것 같다. 수면을 좀 더 해야겠다.
Good 하루 목표한 양은 다했다. 서둘러서 처리하려 했고, 이뤘다. Bad 일이 바빠, 세워두었던 라이프 스타일을 지키지 못했다.
1건의 항목
CPU의 동작방법을 알아보자. 최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. 디지털 회로 기본적으로 연산을 수행하도록 가능하게 하는 것은 이 디지털 회로가 있기 때문이다. 이 디지털 회로는 반도체의 특징을 이용하면 가능하다.
1건의 항목
# Lab 5 Logistic Regression Classifier import tensorflow as tf tf.set_random_seed(777) # for reproducibility x_data = [[1, 2], [2, 3], [3, 1], [4, 3], [5, 3], [6, 2]] y_data = [[0], [0], [0], [1], [1], [1]] # placeholders for a tensor that will be always fed.
1건의 항목
개요 Lookahead Assertions는 이해하기가 어렵다. 하지만 예시와 함께라면 어떤 경우에 이를 사용해야 하는지 알 수 있을 것이다.
2건의 항목
반복문의 필요성 특정 명령을 반복적으로 사용해야 함 규칙적으로 반복하는 일 동일한 내용을 반복할 때 For 특정 문장을 일정한 횟수만큼 반복 시킬 때 사용 #include <stdio.h> int main() { int i, Sum = 0; for (i=1; i<=10; i++) Sum += i; printf("1부터 10까지의 합은 %d다.\n",Sum); return 0; } // 프로세스가 시작되었습니다.
컴퓨터를 통하여 문제를 해결하는 가장 중요한 이유 중에는 계속적으로 반복하는 작업을 컴퓨터가 대신 처리하여 주는 것이다. 이런 기능을 반복문이라고 하며, 대부분의 프로그래밍 언어는 다양한 반복문을 제공한다.
4건의 항목
Descripter 이미지를 비교하기 위해 동일한 방법을 통해 하나의 비교 대상으로 만드는 것 두 가지 이미지가 있다. 이 두가지 이미지가 비슷한지 아닌지를 구분하기 위해 만든 것이 descripter이다.
핵심 아이디어 Feature Extraction, classification, bounding box regression까지 한번에 학습할 수 있는 모델을 만들자! Fast R-CNN은 이전 SSP Net이 가지는 한계점을 극복하는 시도에서 출발한다.
개요 structure of mask RCNN Facebok AI Research (FAIR), Kaiming He, 24 Jan 2018 Marr Prize at ICCV 2017 object instance segmentation을 위한 프레임 워크이다.
Code import tensorflow as tf tf.set_random_seed(777) # 같은 값이 나오도록 하기 위해서 # 데이터 준비 x_train = [1, 2, 3] y_train = [1, 2, 3] # 초기에 랜덤하게 값을 할당한다.
3건의 항목
골드2 : 이분 탐색 문제이다. 생각 기존에 dp로 풀었던 문제가 데이터의 개수만 달라져 새로운 문제가 되었다. 이번 문제는 풀이를 좀 참고하였으며 새로운 공부를 할 수 있었다. 이 문제는 먼저, 일반적인 dp문제로 풀수가 없다.
풀이1 실버4 : 이분 탐색 문제이다. 생각 특정 숫자가 등장하는 lowerBound와 UpperBound를 잡아내면 끝나는 문제이다.
문자열 처리는 파이썬으로 find() isalpha() isalnum() for ~ in list, string으로 하나씩 꺼낼 수 있다. ~ in list, string으로만 하면 t/f 반환한다.
2건의 항목
이전글들은 사실 이 원칙을 위해 달려온 것이 아닌가하는 생각이 든다. OOP의 정수로 불리우는 SOLID원칙에 대해서 깊게 알아보고, 실제 iOS Framework의 설계 방향에 대입하면서 보다 찐한 이해를 경험해보자.
SOLID 설계 정신에 대해 알아보자. SOLID 정신으로 이룰 수 있는 것 소프트웨어 설계를 “유연하게” 할 수 있다. 유연한 소프트웨어 설계, 즉 추상적인 설계로 커플링을 제거할 수 있다.
1건의 항목
LU Decomposition LU 분해는 근본적으로 가우스 소거법의 방법을 차용한다. 가우스 소거법은 행의 조작을 통해, Upper Triangle Matrix 를 만드는 것이 핵심이다.
5건의 항목
디바이스가 가지고 있는 고유의 물리적, 하드웨어 주소 패킷에 들어오는 mac 주소를 보고 적어둔 테이블을 기반으로 사설 IP주소를 알아낸다음 해당 디바이스로 데이터를 넘겨준다.
답답한 걸 싫어하는 내게 속도가 나지 않는다는 것은 정말 곤욕이다. 내가 자주 사용하는 Alfred Workflow를 공유해본다. Markdown Table 블로그글을 쓰거나, 기록을 해야 할 때, table만큼 좋은 게 없다.
C4D Download octane .
왜 필요한가? 주기적인 포맷이 필요하다는 것을 느꼈다. 7년동안 정리를 안하다보니 나도 스트레스를 받더라. 그럴 때마다 기존에 사용하는 환경을 다시 구축하는게 너무나 시간낭비고 하기 싫었다.
iOS 개발자로서 제플린이나 피그마 창을 하나만 띄워서 보는건 너무 귀찮다. 여러개 띄울수는 없을까? 해결 방법 open -na /Applications/Zeplin.app open -na /Applications/Figma.app 모든 프로그램이 되는 것은 아니다.
3건의 항목
디바이스가 가지고 있는 고유의 물리적, 하드웨어 주소 패킷에 들어오는 mac 주소를 보고 적어둔 테이블을 기반으로 사설 IP주소를 알아낸다음 해당 디바이스로 데이터를 넘겨준다.
비트 0, 1 비트가 모여 데이터 구성 비트를 주고 받는 것이 통신의 본질 바이트 = 8비트 워드 = 1바이트가 2개 (16비트) 데이터가 어떻게 전기 신호로 전달? 데이터가 전달되지 않을 때 전기적 신호가 존재 Clock 신호 CPU는 해당 신호에 맞춰 일을 처리한다.
Switch Data Link Layer에서 동작 Layer 2 스위치, 스위치 허브라 불림 허브와 비슷하지만, 데이터 충돌을 방지할 수 있다.
1건의 항목
실제 컴파일, 링킹이 끝난 뒤의 결과물에 대해서는 잘 모르는 것 같다. 실행 파일은 어떻게 구성되어 있는 걸까? 우리가 사용하는 프로그램들은, 바이너리화되어 있는 파일의 형태로 존재한다. 그런데, 이 실행파일의 형태는 OS에 따라 다른 형태로 존재한다.
1건의 항목
실수 표현 부동 소수점으로 표현한다. 지표 + 가수로 표현된다. 왜 쓰는가? 고정 소수점으로 쓸 경우, 큰 수 (10^23) 과 같은 수를 표현하기 위해 많은 양의 비트가 필요하게 된다.
4건의 항목
왜 기계학습 및 여러 시스템에서 노이즈를 모델링할 때 정규분포를 선택하는가? 그게 제일 합리적이라서. 첫째로 모형화하고자 하는 분포중에는 Normal Distribution에 가까운 것들이 많다.
정규 분포 실제로 가장 많이 적용되는 분포는 이항 분포이다. 하지만 이는 이산 확률 변수에 대해 정의되는 변수이다. 이번에는 연속 확률 분포들 중에서 대부분의 통계학 이론의 기본이 되는 정규분포에 대해서 공부한다.
다변수 확률 분포의 복잡성 기계 학습 알고리즘을 확률 분포로 생각해보자. 굉장히 많은 확률 변수가 관여함에도, 비교적 적은 수의 변수들만 서로간의 직접적인 상호작용을 갖는다. 즉, 대부분은 독립적인 확률변수이고, 몇몇만 종속적이다.
1건의 항목
오늘은 두 개의 숫자를 다시 읽습니다. NVIDIA의 분기 매출 816억 달러가 실은 소수 대형 클라우드의 지갑에 매여 있다는 이야기와, 높아 보이는 원·달러 환율의 주어가 '한국'이 아니라 '달러'라는 이야기. 무엇을 보면 이 판정이 뒤집히는지까지 짚습니다.
4건의 항목
Completion은 main에서 호출해주는 것이 좋다. 이유 api를 호출하고, 결과가 도착한 경우 completion을 호출하는 함수가 있다고 하자.
Actor isolation Actor의 isolation은 actor type의 근본적인 동작이다. Swift language model에서 어떻게 Actor가 actor 바깥쪽에서 들어오는 비동기 interaction에 대해 고립을 보장하는지 에대해 알아보자.
TableView dataSource에서 아이템을 가져오다 outOfIndex가 나서 crash가 났다. 이로부터 배운 점에 대해 적어본다. 어떤 상황인가? crash 로그를 확인해보니, tableView에서 indexPath를 벗어나 발생했음을 확인했다.
iOS 화면 업데이트는 어떻게 되는 걸까? draw, layoutIfNeeded, setNeedsLayout 등. 이해가 안가는 것들이 너무 많았다.
1건의 항목
LAN 근거리 통신망 같은 건물 안을 범위로 하는 네트워크 집, 사무실과 같은 공간에서 사용 컴퓨터, 프린터와 같은 장치를 연결 MAN 도시권 통신망 서울시, 대학 캠퍼스 정도의 범위 WAN 광역 통신망 넓은 범위에 구축된 네트워크 랜과 랜을 연결 범위가 넓어 속도가 느리고 오류가 많다.
5건의 항목
HTTP에서 상태가 필요한 이유 로그인이 되게 하고 싶다. 쇼핑몰 로그인이 아니어도 카트 목록을 기억하게 하고 싶다. 해결 방법 Fat URL - URL에 상태 정보를 모두 집어 넣기 - URL을 파싱해서, 사용자의 상태를 확인한다.
이제 리팩터링 전반에 적용되는 원칙 몇 가지를 살펴보자. 리팩터링 정의 리팩터링이라는 개발 용어는 굉장히 두루뭉실한 의미로 통용된다. (많은 개발 용어가 그렇다) 하지만 이를 엄격하게 정의해야 유용하다.
시간은 참 짧다. 어떻게 관리해야 할까 시간 관리 저자는 아침에 조용한 시간동안 할일을 정리했다고 한다. 회의 회의는 참석자마다 시간당 약 20만원 정도의 비용이 든다. 급여, 복지비 등등 모두 합치면 회의는 필요하다. 그럼에도 회의는 엄청난 시간 낭비다.
코드의 관리는 중요하다. 위계 질서를 가지고 구분하지 않으면 혼란을 초래한다. 접근 제어는 특히 SDK 작업을 하는 경우 인터페이스 역할을 하기 때문에 잘 알아두는 것이 좋다.
static 변수 및 함수는 인스턴스를 생성하지 않고 접근하기 위해 사용한다. swift에서는 어디서 관리하는 것이 좋을까? swift에서 사용하는 Method가 궁금하다면 해당글을 읽고 오자.
2건의 항목
지리적 정보를 시각적으로 나타내는 도구 또는 매체 물리적 실체를 데이터의 형태로 옮겨야 한다. 이러한 의미에서 지도는 나라의 재산이다. GIS(Geographic Infomation System) 공간 데이터 + 속성 데이터 통합 관리 시스템 .
관계 연산 (True or False) Equals 두 개가 완전히 동치인 경우 Disjoint 두 개가 하나도 겹치지 않는, 즉 서로소인 경우 Intersects 교집합 뚫고 지나가는 경우, 겹치는 경우 Touches 테두리에 걸리는 경우 Crosses 교차할 때 그런데, 비교하고자 하는 두개의 gemoetry가 서로 차원이 다르거나 (점, 선, 면) 혹은 선이어야만 연산이 성립 점 & 선, 선 & 면, 선 & 선만 정의가 가능 Within / Contains 완전히 포함될 떄 성립 Overlaps 같은 차원...
2건의 항목
<details> <summary>제거된 파일 개수: 435</summary> 세부사항 </detail> .
Expander control github의 issue나 pull request 올릴 때, 정보를 숨기고 싶은 경우가 있다. 그런 경우 toggle을 사용하면 유용하다. expander control이라고도 하는데, 접기/펼치기 를 가능케해서 그런 이름이 붙었다.
41건의 항목 처음 10개의 태그
Monad에 대한 것에 대해 탐구합니다.
실버1 : 수학 문제이다. 생각 소수 구하는 알고리즘인 에라토스테네스의 체를 사용하면 간단히 풀 수 있다. 이 때, 시간제한 때문에 구한 소수를 담아두는 것이 좋다.
실버2 : 조합 문제이다. 풀이1 기본적인 조합 문제이다.
실버2 : 수학 문제이다. 생각 소수 구하는 알고리즘인 에라토스테네스의 체를 사용하면 간단히 풀 수 있다.
실버2 : 수학 문제이다. 생각 소수 구하는 알고리즘인 에라토스테네스의 체를 사용하면 간단히 풀 수 있다.
실버4 : 수학 문제이다. 생각 소수 구하는 알고리즘인 에라토스테네스의 체를 사용하면 간단히 풀 수 있다.
실버1 : 수학 문제이다. 풀이 에라토스 테네스를 적용한 수를 가져오고, 이를 기반으로 상근수 로직을 적용하여 답을 계산한다. Code // // main.swift // CodingTest // // Created by 최완식 on 2021/08/15.
골드4 : 수학 문제이다. 생각 문제 이름 부터 뭔가 마음에 들지 않았다. 풀이 방법은 바로 떠올랐는데 왜 요즘 이런게 구현이 안되는지… score가 최대공약수를 구하는 것이기 때문에 소인수 분해를 떠올릴 수 있고, 그러기 위해서는 소수를 구해야 한다.
실버3 : 동적계획법 문제이다. 생각 이 문제의 핵심은, 최고자리 숫자가 0 또는 1일 때의 상황을 분리해서 생각해보는 것이다. 이유는 나열하면 금방 알아차릴 수 있다.
실버2 : 순열 문제이다.
4건의 항목
오늘은 보간법에 대해 공부해본다. Intution Concept 보간법은 사실 위와 같이 4개의 점을 서로서로 이어서(다양한 방법이 있겠죠?) 그 사이값을 추정하는 방법에 대한 것이다. 그런데 비슷한 걸 앞에서 하지 않았냐! 하고 궁금할 지도 모르겠다.
Intuition Concept 컴퓨터가 생각하는 방식은 절레절레와 노가다 밖에 없어요. 무슨말이냐면 Yes, No의 선택방식과, 계산을 계속하는 방법이 전부라는 의미죠. 멍청하다고 생각할 수 있겠지만 이것을 잘 활용하면 강점이 됩니다.
Intuition Concept 아까와 마찬가지로 컴퓨터의 반복계산과 Y,N를 사용해서 만든 알고리즘이에요. 하지만 비교의 개념이 들어가다보니 아까는 하나의 값을 넣어주었지만 이번에는 값을 범위화해서 넣어주어야 겠죠. 그리고 이번에는 최솟값을 구하는 함수 밖에 없어요.
Plot3 x, y, z값이 있을 때 이를 그려준다.
11건의 항목 처음 10개의 태그
What is Array? 직접적으로 값을 순차적으로 매핑한다. C언어에서 오래된 기술이고, 객체가 아니다.
Types of Matrix A\;=\;[a_{ij}] i = m , row size j = n, column size Square Matrix m = n \begin{bmatrix} 0 & 1 & 0\\ 0 & 2 & 0\\ 0 & 0 & 3 \end{bmatrix} Rectangular Matrix m\; \ne\;n \begin{bmatrix} 0 & 1 & 2\\ -1 & 0 & 3\\ -2 & -3 & 0\\ 9 & 3 & ...
Determinant det(I)\;=\;1\\ \;\\ det(A^T)\;=\;det(A)\\ \;\\ det(AB)\;=\;det(A)det(B)\\ \;\\ det(cA)\;=\;c^ndet(A).
Inverse Matrix Definition 정사각행렬에서 정의된다. AA^{-1}\;=\;A^{-1}A\;=\;I Determinant 에 따른 구분, 그리고 의미 Determinant 가 존재한다. 역행렬이 존재한다.
Orthogonal Matrix A^TA\;=\;AA^T\;=\;I\\ \;\\ A\;=\;A^{-1}\\.
Linear Independence 하나의 행렬은 공간을 나타낸다고 볼 수 있다.
Rank 행렬은 하나의 공간을 매핑한다고 했다. 방금은 3 x 3 의 행렬에 대해 봤기 때문에, 열벡터 공간과 행벡터 공간이 동일하게 3차원 공간을 매핑하고 있었다. 하지만 행렬이 꼭 정사각행렬이라는 법은 없다.
Gauss Elimination 가우스 소거법은, 연립방정식의 해를 행렬을 이용해 쉽게 구하는 방법이다. 기본적으로 행벡터의 계수를 조작하여 구하는 방법으로, Upper Triangle Matrix, Lower Triangle Matrix 를 만들어 구하는 방법이다.
Motivation of Pivoting 가우스 소거법과, 가우스-조르당 방법에서 대각행렬을 기준으로 수행한다는 것은 명백하다. 우리는 그래서 이 대각 행렬의 요소를 Pivot 이라 부른다.
LU Decomposition LU 분해는 근본적으로 가우스 소거법의 방법을 차용한다. 가우스 소거법은 행의 조작을 통해, Upper Triangle Matrix 를 만드는 것이 핵심이다.
1건의 항목
Intuition Concept 아까와 마찬가지로 컴퓨터의 반복계산과 Y,N를 사용해서 만든 알고리즘이에요. 하지만 비교의 개념이 들어가다보니 아까는 하나의 값을 넣어주었지만 이번에는 값을 범위화해서 넣어주어야 겠죠. 그리고 이번에는 최솟값을 구하는 함수 밖에 없어요.
1건의 항목
데이터의 중심을 나타내는 척도에 대해서 배워본다. 평균 (mean) 평균은 대표적으로 집단의 중심위치를 나타내는 척도로 사용된다. 이 평균에는 보통 3종류가 사용된다.
1건의 항목
Code import tensorflow as tf tf.set_random_seed(777) # 같은 값이 나오도록 하기 위해서 # 데이터 준비 x_train = [1, 2, 3] y_train = [1, 2, 3] # 초기에 랜덤하게 값을 할당한다.
2건의 항목
데이터의 중심을 나타내는 척도에 대해서 배워본다. 평균 (mean) 평균은 대표적으로 집단의 중심위치를 나타내는 척도로 사용된다. 이 평균에는 보통 3종류가 사용된다.
데이터를 설명하는 상대위치와 이를 나타내는 box plot에 대해 알아본다. 상대위치 중앙값이 50%에 위치하는 분위수라면, 이에 대응하는 다양한 분위수가 존재한다. 백분위수 분포를 100개로 쪼개어 생각하는 것이다.
1건의 항목
GoF의 디자인 패턴, 중재자 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다. 핵심 요약 객체들 간의 복잡한 관계를 중재자라는 것을 두어 매우 효과적으로 단순화시킨다. 예시 에어컨, 문, 창문, 보일러가 있다고 하자.
1건의 항목
GoF의 디자인 패턴, 메멘토 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다. 핵심 요약 객체의 상태를 기억해두었다가 필요할 때 기억해둔 상태로 객체를 되돌린다.
1건의 항목
실버4 : 메모이제이션 문제이다. 생각 고등학교 때 많이 풀어본 함수의 개수 구하는 문제와 같다. 결국은 공역단에서 N개의 site를 고르게 되면 자동으로 순서가 결정되기 때문이다.
2건의 항목
운영체제에서 중요한 부분인 메모리 관리 기능에 대해 알아보자. 메모리는 CPU 자원만큼 컴퓨터를 사용하는데 매우 중요한 자원 중 하나이다.
외부 단편화를 해결하는 방법인 페이징(Paging)에 대해 알아본다. 1. 페이징(Paging) 외부 단편화로 인한 메모리 낭비는 매우 심하다는 것을 살펴보았다.
1건의 항목
그래서 예외는 어떻게 처리하는 것이 좋은걸까? 오류 상황 예외 상황과 오류 상황을 다른 의미로 사용할 것 오류 상황은 error condition을 말함 이 오류 상황을 처리하는 방법 중에 예외가 있음 오류 상황은 예측 가능한 상황을 의미함 프로그램 실행 중에 기본적으로는 일어나지 않음 하지만 일어날 수 있는 일 따라서 이러한 상황을 처리하는 코드는 프로그램 기능의 일부임 프로그래머가 이를 예측하지 못했다면? 버그 오류 상황을 처리하는 4가지 방법 무시 곧바로 크래시 일단은 작동하는데 언젠가는 크래시 안정적이지 못한 상태로 계속 동...
1건의 항목
프로는 어떤 마음가짐을 가져야 하는가? 함부로 바라지 마라 Professionalism 명예와 긍지 책임과 의무 책임감을 가져라 제대로 테스트하지 않고 물건을 보냈을 때 발생한 사건에 대해 말한다. 제품이 완성됨을 확신하지 않고서 납품하여 큰 문제가 발생했다.
2건의 항목
정렬에 대해 깊게 공부해보자.
실버5 : 정렬 문제이다. 생각 정렬 문제이다. merge sort(합병 정렬)을 구현해보고자 시도했다. 알고리즘 기본적인 병합 정렬의 알고리즘은 다음과 같다. 위키 백과 - 합병 정렬 좀 더 자세한 설명 partition 나누는 방법은 간단하다.
1건의 항목
원래 그 문자가 가진 뜻이 아닌 특별한 용도로 사용하는 문자 문자 클래스 [] [ ] 사이에 있는 각각의 문자들에 대해 적어도 하나가 매치가 되는가? 즉, 정규 표현식이 [abc]라면 이 표현식의 의미는 “a, b, c 중 한 개의 문자와 매치”를 뜻한다.
1건의 항목
이전에 metatype에 대해 흘려들었었는데, 이번에 간단하게 정리해보려한다. metatype이란? Swift에서 우리는 특정 instance의 Type에 접근할 수 있다.
2건의 항목
HTTP 메소드 종류 GET 요청이 캐시된다. 브라우저, 로봇이 임의로 요청이 가능하다.
창발성 단순한 결합이 복잡한 결과를 나타내는 것을 뉴런 하나만으로 의미가 있을까? 뉴런이 모여 어떠한 인식을 하기 위해서는 수십억개의 뉴련이 상호작용해야 한다. 즉, 미시적인 부분의 각각의 특성만으로는 설명할 수 없는 전체로서 나타나는 복잡한 현상을 말한다.
1건의 항목
멘토링, 수습기간, 장인 정신에 대해 고찰해본다. 수습기간 소프트웨어 역시 실무 훈련기간이 있어야 한다. 왜 프로그래머는 학교만 졸업하면 가능할 것이라 생각하는가? 소프트웨어는 일상생활에 너무나도 많은 곳에 들어가 있다. 합리적 훈련과 감독을 받는 실습기간은 필요하다.
1건의 항목
WWDC 24의 Swift 6 migration guide를 정리해본다.
1건의 항목
코딩은 어렵다. 코딩 오류를 느끼는 감각은 중요하다. 이는 곧 빠른 피드백 루프를 통해 배움이 빨라짐을 의미한다. 잘못된 것을 알아야 고칠 것 아닌가? 이 장에서는 코드를 짤 때 행동과 기분, 태도에 대한 규칙과 원칙을 소개한다.
1건의 항목
Intuition Concept 아까와 마찬가지로 컴퓨터의 반복계산과 Y,N를 사용해서 만든 알고리즘이에요. 하지만 비교의 개념이 들어가다보니 아까는 하나의 값을 넣어주었지만 이번에는 값을 범위화해서 넣어주어야 겠죠. 그리고 이번에는 최솟값을 구하는 함수 밖에 없어요.
1건의 항목
실수가 2번이상 반복되면 실력이다. UI 개발시 한방에 끝나기 위한 Edge case를 정리하자. 수시로 업데이트 한다.
1건의 항목
텔레콤, 미디어, 엔터테인먼트, 인터넷 서비스 등을 포함하는 통신 서비스 섹터입니다. 경기 순환적 특성과 방어적 특성을 모두 가진 혼합형 섹터로, Google/Alphabet, Netflix, KT 등이 대표 기업입니다.
1건의 항목
주어진 모델의 파라미터가 주어졌을 때, 관찰된 데이터가 실제로 나타날 확률.
1건의 항목
MNIST Dataset # Lab 7 Learning rate and Evaluation import tensorflow as tf import matplotlib.pyplot as plt import random tf.set_random_seed(777) # for reproducibility # 텐서플로우에서 데이터 받아오기 from tensorflow.examples.tutorials.mnist import input_data # Check out www.tensorflow.org/get_started/mnist/beginn...
3건의 항목
Progressive Web App PWA(Progressive Web App)는 웹 애플리케이션을 개발하고 배포하기 위한 접근 방식과 기술 집합을 가리키는 용어입니다.
많은 수의 엔지니어와 nested states를 관리하기 위한 mobile app Cross-platform Architecture RIBs의 이름은 Router, Interactor, Builder의 약자이다.
이미지 자체를 늘리고 싶은데. 특정 부분은 고정시키고 싶으면 어떻게 할까? Image Stretch a.k.a nine patch 이렇게 이미지의 특정 부분은 고정시키고 나머지만 늘릴 수 있도록 하게 만드는 것을 Image Stretch라 한다.
1건의 항목
Test라는 과정은 사실 공학 어디에서든 등장하는 개념이다. 작업에 의존도가 있고, 복잡한 과정으로 넘어갈 수록 이전 단계의 오류는 치명적이기 때문이다. 이를 관리하는 방법이 Test라 할 수 있다. 소프트웨어에서 역시 이러한 개념이 적용된다.
1건의 항목
데이터의 중심을 나타내는 척도에 대해서 배워본다. 평균 (mean) 평균은 대표적으로 집단의 중심위치를 나타내는 척도로 사용된다. 이 평균에는 보통 3종류가 사용된다.
1건의 항목
Bitcoin Programming 책을 읽으며 이해한 내용에 대해 정리한다. 첫번째는 유한체이다.
3건의 항목
Python은 언어이기에 내장하는 기능들이 대부분의 프로그래머에게 필요한 필수적인 것들을 제공하고 있다. 따라서 특정 분야에서 필수적으로 필요로 하는 기능은, 분야에 제한적이기에 Python 언어에서 기본 내장하기가 어렵다.
정규 표현식은 다양한 언어에서 사용이 가능하다. 이 글에서는 파이썬을 기반으로 정규 표현식을 확인해 보도록 하자. import re p = re.compile('ab*') re.compile을 사용하여 정규 표현식(위 예에서는 ab*)을 컴파일한다.
코드의 관리는 중요하다. 위계 질서를 가지고 구분하지 않으면 혼란을 초래한다. 접근 제어는 특히 SDK 작업을 하는 경우 인터페이스 역할을 하기 때문에 잘 알아두는 것이 좋다.
9건의 항목
Monad에 대한 것에 대해 탐구합니다.
Monad는 어떻게 정의할 수 있을까? Monad Monad: 다음의 연산들이 정의된 Functor unit: T -> M<T> (return in Haskell) flat: M<M<T>> -> M<T> (join in Haskell) Functor에 unit하고 flat추가한게 모나드다.
그래서 Monad를 왜 사용하는가? 왜 모나드가 유용한가? Improve High-Demensional lift Monad는 Functor의 불만족스러운 부분을 해소해준다. 앞에서 lift2d에 대해 배웠다.
그래서 Monad를 왜 사용하는가? 왜 차원확장 flatLift는 중요할까? 다변수를 받아 모나드를 반환하는 함수도 합성할 수 있다.
어떻게 Monad를 사용해야 하는가? 사용방법 Monad 함수를 직접적으로 사용한다. flatLift, flatLift2d 언어에서 제공하는 Monad 특화된 언어를 사용한다.
Monad에는 어떤 종류가 있는가? Monad란 개념에 대한 의미론적 확장에 대응되는 제네릭 타입.
수학에서의 범주론에 대해 알아보자. 왜 Monad는 이런 형태가 된 것인가? Monad, Category Theory Monad라는 단어는 프로그래밍에서 태동된 단어가 아니다. 수학에서의 범주론에서 유래된 단어이다.
함수형 프로그래밍을 공부하다보면 벽을 한번 마주한다. Functor와 Monad가 그것이다. 이걸 이해하기 위해서 위키피디아에서 집합론?, 범주론? 이런 걸 읽었던 적이 있는 것 같은데 여전히 잘 모르겠다. 이번에는 와닿는 방식으로 이해하는 것을 목표로 한다.
Apple에서 공개한 API인 Combine. 이제 Rx에서 Combine으로 많이 넘어간다고 한다. 무엇을 하는 것인지, 왜 좋은지, 바로 써먹기 위한 팁은 무엇이 있는지 알아본다.
3건의 항목
달러가 다른 주요 통화 전반에 강한지 약한지를 한 숫자로 재는 달러인덱스가 무엇이고, 원·달러 환율을 읽을 때 왜 이 지표를 같이 봐야 하는지 짚습니다. 2026년 중반 실제 데이터로 달러 강세와 원화 약세가 어떻게 겹쳤는지 살펴봅니다.
두 나라 정책금리의 차이가 자본의 흐름과 환율을 어떻게 밀어내는지, 특히 한·미 금리차가 원·달러 환율을 읽는 핵심 축인 이유를 짚습니다. 2026년 중반 국면의 실제 금리 수준과 향후 경로 시그널을 함께 봅니다.
원·달러 환율이 높다는 걱정을 두고, 지금의 원화 약세가 한국만의 문제인지 아니면 전 세계가 겪는 달러 강세의 한 조각인지를 실제 데이터로 갈라 봅니다. 무엇을 확인하면 이 판정이 뒤집히는지까지 짚습니다.
1건의 항목
현재 사용하는 동기화 도구인 모니터(Monitor)에 대해서 알아본다. 세마포는 실제로 매우 오래된 동기화 도구이다. 현재에는 모니터(monitor)라는 동기화 도구를 주로 사용하며, 이는 좀 더 고수준의 동기화 기능을 제공한다. 1.
1건의 항목
DevOps란? 서비스 개발과 운영을 통합 왜 필요할까? 개발과 운영이 분리된 전통적 방식 개발팀, 운영팀 분리 되어 있음 개발팀에서 배포 파일을 운영팀에 전달 운영팀에서 배포 운영팀은 모니터링을 통해 개발팀에게 피드백 전달 이렇게 되는 경우 배포사이 개발팀과 운영팀의 커뮤니케이션 비용 증가 문제가 발생했을 때 현상/원인 파악이 어려움 서비스 개발자는 서비스 코드를 잘 알지만 운영 환경에 익숙하지 않음 시스템 운영자는 운영 환경에 익숙하지만 서비스 코드를 잘 모름 긴 주기 배포 하지만 각 분야 전문가가 배치되어 있어 보다 안전하다고...
2건의 항목
Monad와 Functor 사이에는 Monoidal Functor라는 중간 단계가 있다. Monoidal Functor를 정의할 수 있는 언어 아무 언어에서나 정의될 수 있는 개념은 아니다. 다음의 조건이 선행되어야 한다.
함수형 언어가 다인수함수를 다루는 법.
1건의 항목
범주론에서의 카테고리에 대해 알아보자. 프로그래밍과 무슨 관계가 있는가? 왜 이런 메타수학에서 사용되는 개념이 프로그래밍에서 사용될까? 프로그래밍에서 공통적으로 나타내는 개념들 사이의 관계가 카테고리의 조건에 딱 들어맞는다. 모든 프로그래밍 언어에는 타입이 있다.
1건의 항목
Volume과 Mount Docker Conatiner에 쓰여진 데이터는 컨테이너가 삭제될 때 함께 사라진다. 하지만 이에 관계없이 우리는 데이터를 영속적으로 저장할 필요가 있다.
1건의 항목
Code import tensorflow as tf tf.set_random_seed(777) # 같은 값이 나오도록 하기 위해서 # 데이터 준비 x_train = [1, 2, 3] y_train = [1, 2, 3] # 초기에 랜덤하게 값을 할당한다.
1건의 항목
Module Stability는 무엇일까? 공식문서를 통해 알아보자. Module Swift에서 Module은 무엇을 말할까? Swift는 접근 제어의 기준으로 Module을 사용한다. 코드 배포의 단위로써 import 키워드를 통해 사용하는 것들이 모두 모듈이다.
4건의 항목
동시성과 깔끔한 코드는 양립하기 아주 어렵다. 그럼에도 불구하고, 동시성은 왜 필요할까? 객체는 처리의 추상화다. 스레드는 일정의 추상화다. - 제임스 O. 코플리엔 동시성이 필요한 이유? 동시성은 “무엇”과 “언제”의 Coupling을 없애는 전략이다.
Actor Model 개요 객체지향의 패턴에서 메소드 호출 방식이 비동기로 변경된 패턴 Actor들은 모두 Thread 기반으로 동작하는 객체어야 한다. 또한 Actor는 메시지의 전송/수신에 대한 동기화 관리까지 포함한다.
Task는 코드 블럭을 독립적으로 사용할 수 있다. 이러한 점을 사용하면 병렬적으로 특정 코드를 처리하게 할 수도 있다.
Actor isolation Actor의 isolation은 actor type의 근본적인 동작이다. Swift language model에서 어떻게 Actor가 actor 바깥쪽에서 들어오는 비동기 interaction에 대해 고립을 보장하는지 에대해 알아보자.
2건의 항목
냄새나면 당장 갈아라. 어떻게 하는지에 대해서 지금까지 배웠다. 하지만, “언제” 시작하고 그만할지를 판단하는 것은 또 다른 얘기다. 어떤 “냄새”를 맡았을 때 손을 대야할까? 기이한 이름 이름으로 이게 뭐하는 것인지 딱 볼 수 있게 작성해야 한다.
분기에 따라 값이 결정되는 코드를 짤 때, 변수를 무엇으로 선언하는 것이 좋을까? 작은 부분이나 좋은 지적이라 생각하여 정리해본다. 핵심 요약 분기에 따라 값이 결정될 때 변수를 선언해야 한다면, var보다는 let을 우선적으로 검토해보자.
1건의 항목
생산자-소비자 문제는 생산자가 데이터를 생산하면 소비자는 그 데이터를 소비하는 형태의 문제이다. 컴퓨터 환경에서 예를 보면, 컴파일러 -> 어셈블러, 웹 서버 -> 웹 클라이언트 등이 있다.
5건의 항목
3. 임계구역(Critical section) 문제 위의 예에서 보았던 문제를 임계구역 문제라 한다. 임계구역은 여러 개의 쓰레드가 수행되는 시스템에서 각 쓰레드들이 공유하는 데이터(변수, 테이블, 파일 등)를 변경하는 코드 영역을 말한다.
Readers-Writers 문제는 대표적으로 공통 데이터베이스에 접근하는 경우가 있다. 하나의 데이터베이스에 여러 프로세스(readers, writers)가 접근하므로, 데이터베이스는 임계구역으로 설정해야한다.
현재 사용하는 동기화 도구인 모니터(Monitor)에 대해서 알아본다. 세마포는 실제로 매우 오래된 동기화 도구이다. 현재에는 모니터(monitor)라는 동기화 도구를 주로 사용하며, 이는 좀 더 고수준의 동기화 기능을 제공한다. 1.
앞에서는 Swift concurrency가 어떻게 동작하는지 확인했다. 이번에는 Swift concurrency를 채택할 때 주의해야 하는점, 그리고 Actor를 통한 Synchronization에 대해 알아보자.
확률에 대해 이해한다. 사건에 확률을 부여하는 방법 동전의 앞면이 나오는 것을 사건 A라 정의했을 때, P(A)를 구하는 방법에 대해 알아보자. 고전적 방법 단순히 1/2라 생각한다. 이 생각의 배경에는 앞면과 뒷면이 나오는 가능성이 동일하다 생각하고 부여한다.
1건의 항목
과일 카드 게임 Stack: MVC, UIKit, XCTest, iOS Team: 1인 진행 기간: 2021/08/30 → 2021/09/10 About: MVC 패턴에서 Model을 설계하는 것을 연습하고, 이를 View에 보여주는 간단한 카드게임을 만들었습니다.
1건의 항목
onBan Stack: Caching, MVP, Network, UIKit, UserDefault, iOS Team: 1인 Role: 개발 진행 기간: 2021/09/27 → 2021/10/08 About: 반찬을 주문할 수 있는 간단한 애플리케이션입니다.
3건의 항목
맛보기의 마지막으로, 간단하게 프로젝트에 적용해보자. MVVM과 찰떡인 RxSwift를 적용해보면서 아키텍쳐와 사용방법에 대해 익숙해져보자. 프로젝트 개요 버튼을 누르면 값이 변경되고 아래에 총 금액이 나타난다.
사용자 입력에 대한 Test, 단방향 흐름, 역할과 책임을 고려한 MVVM 구조를 채택하였습니다. 기획 분석 화면 이동이 복잡하지 않다. 사용자 입력에 대해 처리할 부분이 있어, 입력 테스트가 필요하다. 목표 단방향 흐름의 구조를 갖는 아키텍쳐를 사용한다.
앱 설명 방탈출, 이제는 기록하고 경쟁하세요! 방탈출 카페 위치 조회, 방탈출 정보 기록 및 랭크 확인 기능 제공 AppStore: Escaper 방탈출 Escaper Keynote 소개자료 WIKI 사용 스킬 MVVM Firebase CoreLocation MapKit 경험 한 것 사용자의 데이터 과금을 우려하여 ImageCache를 직접 구현하여 사용하였습니다.
1건의 항목
가지를 끊어버리는 백 트래킹에 대해 알아보자.
7건의 항목
개체 지향 프로그래밍을 배우는데 있어 알아두면 좋은 내용들을 정리해본다.
임시 변수를 없애는 방법을 알아보자.
냄새나면 당장 갈아라. 어떻게 하는지에 대해서 지금까지 배웠다. 하지만, “언제” 시작하고 그만할지를 판단하는 것은 또 다른 얘기다. 어떤 “냄새”를 맡았을 때 손을 대야할까? 기이한 이름 이름으로 이게 뭐하는 것인지 딱 볼 수 있게 작성해야 한다.
Rename Variable, 변수 이름 바꾸기를 알아보자. 요약 코드 let a = height * width; let area = height * width; 배경 명확한 프로그래밍의 핵심은 이름 짓기다.
이름은 어디서든 쓰인다. 많이 사용하기 때문에 잘지으면 편하다. 몇 가지의 규칙을 알아보자. 의도를 분명히 밝혀라 말하기는 쉽지. 어렵거든? 저자도 안다. 하지만 이 의도가 분명한 이름을 짓는 것은 정말로 중요하다. 결국 최종적으로 절약하는 시간이 더 많기 때문이다.
Intro 프로그래밍 초창기에는 System = Routine + Subroutine 이었다. Fortran, PL/1시절에는 System = Program + SubProgram + Function 이었다.지금은 Function만 남았다.
Fundamentals 사용처에 대한 “명료함”이 최우선이다. “간결함”보다 “명료함”이 보다 중요하다. 모든 선언에 대해 문서를 작성해라. ??? 클린코드와 대치된다.
1건의 항목
Network Address Translation (네트워크 주소 변환) 자 위에서 결국 우리는 공유기를 통해서 우리집에 배정된 공인 IP 주소를 가지고 각각의 장치에 배정된 사설 IP로 뿌려서 사용한다는 것을 알게되었다.
1건의 항목
Java에서의 Nested Class를 알아보며, 어떻게 변화해 왔을지 한번 생각해보자. Nested Class 클래스 안에 다른 클래스 Java에서는 둘로 나뉜다.
1건의 항목
정리한 함수를 다시보자. 편함을 위해 중첩상태가 너무 많아졌다.
36건의 항목 처음 10개의 태그
목적지 컴퓨터의 IP 주소를 이용하여 MAC Address를 찾기 위한 Protocol! ARP 요청 - Ethernet 프레임을 전송하려면, 목적지 컴퓨터의 MAC Address를 알아야 한다.
수도관의 크기 결국 데이터는 흐름이다. 그렇기 때문에 어떤 관을 따라간다고 생각할 수 있다. 이 때 관의 지름이 대역폭이다. 한번에 보낼 수 있는 데이터의 양이라 생각하면 된다. 이 크기가 클수록 많은 데이터를 초 당 전송할 수 있는 양이 늘어난다.
CDN? Content Delivery Network 곳곳에 분산되어 있는 서버 그룹을 말한다. 이를 사용하게 되면 인터넷 콘텐츠를 빠르게 전달할 수 있다.
내, 외부 네트워크 구간 사이에 위치한 중간 지점 접근 제한을 수행 외부 네트워크에서 직접 접근이 가능 설명 회사에서는 서비스를 제공하는 서버와 내부에서만 동작해야하는 서버가 있다.
Domain Name Server 도메인이름을 치면 IP주소로 바꿔주는 서비스 naver.com -> 192.168.03.2 OR 192.168.03.2:80 그러면 어떻게 DNS서버를 들렀다 오는걸까? 그러면 매번 입력할 때마다 DNS를 들렀다 오는걸까? 브라우저 캐시에 저장되어 있다.
랜에서 데이터를 정상적으로 주고 받기 위해 필요한 계층 앞은 전달하기 위해 변환하는 과정이 주라 생각 MAC Address Ethernet = Switch 트레일러 FCS(Frame Check Sequence) 전송중 오류 발생 확인 용도 프레임 Ethernet 헤더와 트레일러가 추가된 데이터 MAC Address를 통한 프레임 전송 과정 A에서 B로 데이터를 전송한다고 생각해보자.
기본 요소 송신기 전달 매개체(매질) 수신기 신호 아날로그 연속적인 값이기 때문에, 노이즈에 의해 영향을 받을 수 있다. 즉, 값의 변화가 반영될 여지가 크다. 애초에 연속적인 값이기 때문.
일반적으로 데이터 링크 계층에서 가장 많이 사용되는 규칙 랜에서 사용되는 규칙 허브와 같은 장비에 연결된 컴퓨터와 데이터를 주고받을 때 사용 허브는 근본적으로 전기 신호를 받을 포트 뿐만 아니라 다른 포트에도 전달함 이 부분이 상당히 문제임.
다른 네트워크로 들어가는 입구 역할을 하는 네트워크 포인트 종류가 다른 네트워크 간의 통로 역할을 하는 장치 Protocol을 적절히 변환해주기도 함 다른 언어를 사용하는 사람 사이의 통역가, 번역기라 생각 톨게이트와 유사 한국에서 일본으로 넘어가는 톨게이트가 있다 해보자.
인터넷 공간 상에서 해당 단말기의 고유 주소 Socket을 통해 통신한다는 것은 알았다. 근데 우리가 전화를 걸더라도, 어디에 전화를 걸것인지 알아야 한다. 그걸 대표하는 것이 전화번호이다. 마찬가지로 통신을 하려면, 어디에 통신할 것인지 알려주는 과정이 필요하다.
3건의 항목
네트워크 계층 네트워크 연결 구조 Data Link Layer에서는 Ethernet 규칙을 기반으로 같은 네트워크 내에 있는 컴퓨터끼리 연결했다. 다른 네트워크에 있는 목적지로 데이터를 전달하려면 다른 기술이 필요하다.
물리 계층 (Physical Layer L1) 기계적, 전기적인 통신망 접면의 정의 데이터를 전기적인 신호로 변환해서 주고받는 기능만 할 뿐 대표 장비 : 통신 케이블, 리피터, 허브 등 데이터링크 계층 (Data Link Layer 2, L2) 데이타 링크의 제어 (프레임화, 데이터 투명성, 오류 제어 등) 맥 주소를 가지고 통신한다.
이 계층에서도 TCP 헤더를 붙여 세그먼트(Segment)를 만드는 캡슐화를 진행한다. 연결형 통신에 사용 연결이라는 통신로를 확보해야 한다. 가상의 통신로 연결을 확립하기 위해서는 TCP 헤더의 코드 비트를 확인해야 한다.
2건의 항목
XOR 문제 두 개의 인풋에 대해 1개의 결과값이 나오는 문제이므로 텐서플로우로 구현해보자. 결과값이 0 또는 1이므로, logistic regression으로 만들 수 있다.
초기값 주기 x, w = 0 일 경우 gradient가 0이 되서 학습이 안된다! 모두 0이면 학습이 안된다! Restricted Boatman Machine(RBM) 어떻게 Weight를 초기화 할 수 있을까? 그 해결방안 중 하나가 RBM이었는데, 아이디어는 간단하다.
1건의 항목
Swift를 처음 공부하면서 가장 어려웠던게 이 Optional인 것 같다. 애초에 개발도 처음할 시기였으니, 이런 자료구조가 왜 필요한지 전혀 몰랐었던 시간이 있었다. 해당 이유는 Either와 Result 이해와 실제 사용예 알아보기 포스트를 참고해주길 바란다.
1건의 항목
이미지 자체를 늘리고 싶은데. 특정 부분은 고정시키고 싶으면 어떻게 할까? Image Stretch a.k.a nine patch 이렇게 이미지의 특정 부분은 고정시키고 나머지만 늘릴 수 있도록 하게 만드는 것을 Image Stretch라 한다.
2건의 항목
무심코 사용하는 많은 비동기 함수들은 사실 변화의 과정을 겪은 결과들이다. 네트워크 I/O API가 어떻게 변화되어 왔는지 알아보자. 한눈에 보기 network API를 사용하다보면 자연스레 머리에 이런 그림이 떠오른다.
Data(contentof)는 로컬 파일을 불러오기 위한 메서드이다. 애초에 동기 메서드이다. 가끔 이걸 DispatchQueue에 Item으로 싼뒤에 넣어 비동기 처럼 사용하는 경우가 있는데, 이러면 안된다. API의 존재 이유에 맞지 않기 때문이다.
1건의 항목
행렬의 “크기”나 “길이”를 수치적으로 나타내는 척도 만족해야 하는 성질 비음수성 (Non-negativity) \|A\| \geq 0 이고, \|A\| = 0 이면 A = 0 동차성 (Homogeneity) 스칼라 \alpha 에 대해 \|\alpha A\| = |\alpha| \|A\| 삼각 부등식 (Triangle Inequality) \|A + B\| \leq \|A\| + \|B\| Induced Norm 행렬이 벡터에 작용할 때 그 벡터의 크기가 얼마나 변화하는지 측정하는 노름 \|A\| = \sup_{\mathbf{x...
2건의 항목
왜 기계학습 및 여러 시스템에서 노이즈를 모델링할 때 정규분포를 선택하는가? 그게 제일 합리적이라서. 첫째로 모형화하고자 하는 분포중에는 Normal Distribution에 가까운 것들이 많다.
정규 분포 실제로 가장 많이 적용되는 분포는 이항 분포이다. 하지만 이는 이산 확률 변수에 대해 정의되는 변수이다. 이번에는 연속 확률 분포들 중에서 대부분의 통계학 이론의 기본이 되는 정규분포에 대해서 공부한다.
2건의 항목
Notification Center는 꽤나 오래전 부터 iOS의 이벤트 전송 매커니즘으로 자리잡았다. 어떤 요소들이 있는지 확인해보자.
Lagacy를 Combine 전환하면서 배웠던 Tip들을 적어본다. Notification Cetner에 걸었던 Observer를 Publisher로 전환하는 것에 대한 글이다.
1건의 항목
이미지와 글자가 있는 Button을 만들다가, String안에 image를 넣을 수 있다는 것을 알았다! NSAttributedString 텍스트 일부에 대해 특성(시각적 스타일, 하이퍼 링크 등)이 있는 문자열 텍스트 일부에 대해 특성들을 적용할 수 있는 String이다.
1건의 항목
Bundle 실행 가능한 코드(executble code) + 리소스 (Resources)를 가진 계층 어떻게 보면 이 개념은 개발자를 위한 개념이다. 결국 Package내부는 Bundle과 같이 구성되어 있다.
2건의 항목
GoF의 디자인 패턴, 메멘토 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다. 핵심 요약 객체의 상태를 기억해두었다가 필요할 때 기억해둔 상태로 객체를 되돌린다.
Swift에서의 상속은 다른 언어와 비슷하다.
1건의 항목
이제 우리는 동시성 프로그래밍을 할 수 있다! 필요한 내용들을 어느정도 배웠다고 할 수 있다. 하지만, 동시성 프로그래밍이 어려운 이유는 별도의 작업흐름으로 공유 데이터에 접근하면서 발생하기 때문이다.
1건의 항목
TableView의 index를 조정하면서 NSNotFound라는 값을 넣어주는 것을 보게되었다. 왜 이런 것이 필요한지 알아본다. 핵심 정리 ObjectiveC에는 Optional이 없다.
2건의 항목
GoF의 디자인 패턴, 메멘토 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다. 핵심 요약 객체의 상태를 기억해두었다가 필요할 때 기억해둔 상태로 객체를 되돌린다.
Swift에서의 상속은 다른 언어와 비슷하다.
1건의 항목
깨끗한 코드와 오류 처리는 화실히 연관성이 있다. 하지만 오류 처리로 인해 프로그램 논리를 이해하기 어려줘진다면 깨끗한 코드가 아니다. 오류보다 예외를 사용하라 에전 프로그래밍 언어는 예외를 지원하지 않았다.
1건의 항목
UILabel에 들어간 text를 모두 표현하고 싶다면 어떻게 해야할까? 쉬워보이지만 의외로 삽질을 하는 부분이다. 간단하게 알아보자.
1건의 항목
Bit와 진법 변환에 대해 알아본다. 최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. 4Bit 4Bit로는 16진수 한자리를 표현할 수 있다. 16진수는 0F(015) 까지 한 자리에 쓴다.
1건의 항목
Bitcoin Programming 책을 읽으며 이해한 내용에 대해 정리한다. 첫번째는 유한체이다.
2건의 항목
Intuition Concept 이게 정적분이죠! 하지만 컴퓨터는 연속적인 값을 인식할 수 없기 때문에 (사실 점들의 집합이 선이긴 하죠) 이산적인 값에 대해서 이 값에 근사해야 합니다.
Intuition Concept 컴퓨터는 이산적인 값에서 작동하는 기계입니다. 우리의 정신세계에서 이상적인 선은 존재할 수 있지만 현실에서는 가산적인 점의 집합이 결국 선이겠죠. 연속적인 세계에서 정의된 해석적 미분방정식의 풀이 방법은 컴퓨터에서 적용할 수 없습니다.
2건의 항목
NVIDIA 매출의 절반 가까이가 소수 대형 클라우드의 지갑에서 나온다는 쏠림을 근거로, 이 회사의 단기 실적을 흔드는 진짜 변수는 칩 경쟁력이 아니라 고객의 투자 계획이라는 주장을 짚습니다.
NVIDIA의 주가와 시가총액·PER 같은 밸류에이션 숫자가 지금 어디 있는지 한자리에서 봅니다. 무엇이 움직이면 다시 들여다볼지 짚습니다.
3건의 항목
Replace Primitive With Object, 기본형을 객체로 바꾸기를 알아보자.
What is Class? 우리는 클래스라는 개념을 왜 도입했을까? C++에서 함수가 태어나게 된 이유도 분리해서 관리하기 위함이었다.
모든 변수는 객체이다. 파이썬에서 사용하는 변수는 객체를 가리킨다. 여기서 객체란 파이썬에서 사용되는 모든 것 을 의미하는 말이다. 이게 무슨말일까? 이 개념에 대한 직관적인 설명을 잘해둔 페이지가 있어 여기 소개한다.
3건의 항목
Computer Vision의 Task 이중 Object Detection에 해당하는 문제이다. R-CNN region proposal을 진행한다. CNN에 각각 넣는다.
핵심 아이디어 입력 이미지의 크기나 비율에 관계없이 CNN 학습은 불가한가? Fast R-CNN으로 넘어가기전 상당히 많은 아이디어를 가져온 논문이다.
개요 detection paper saga 이제는 오랜 시간이 지난 논문인 SSD를 간단하게 리뷰 해보려 한다. 매우 직관적인 구조를 가지고 있어 많은 구조가 이 SSD를 기반으로 만들어지고 있다.
2건의 항목
KVC/KVO 는 Apple Framework에서 중요한 부분을 담당한다. 한번 공부해보자. Background 03. Operation Queue에서 간단하게 알아보았던 적이 있다.
! 사용하지 않기 Swift 코드에서 !가 보이는 경우는 두가지다. 연산자(!=, not, !==)에서 사용하는 경우는 제외한다.
1건의 항목
동기 다른 블로그 호스팅 서비스(Tistory, Velog)를 사용하면, 내가 온전히 관리하지 못한다는 측면에서 아쉬움이 있었다. Github Page를 Jekyll을 사용해 포스팅해보았지만, 1000개가 넘어가는 시점부터 너무 느려 사용하기가 꺼려졌다.
2건의 항목
이전글들은 사실 이 원칙을 위해 달려온 것이 아닌가하는 생각이 든다. OOP의 정수로 불리우는 SOLID원칙에 대해서 깊게 알아보고, 실제 iOS Framework의 설계 방향에 대입하면서 보다 찐한 이해를 경험해보자.
SOLID 설계 정신에 대해 알아보자. SOLID 정신으로 이룰 수 있는 것 소프트웨어 설계를 “유연하게” 할 수 있다. 유연한 소프트웨어 설계, 즉 추상적인 설계로 커플링을 제거할 수 있다.
1건의 항목
C4D Download octane .
1건의 항목
앱 배포에 있어 꼭 알아야 하는 App Thining중 On-Demand Resource에 대해 알아본다. 해당글은 WWDC 2015를 기준으로 한다. Do Better 이전 글에서 App Slicing을 하면서 앱 크기를 많이 줄일 수 있다는 것을 확인했다.
1건의 항목
애플의 공식문서를 읽고, 개발에 참고해야 할만한 내용을 정리합니다.
1건의 항목
앱 배포에 있어 꼭 알아야 하는 App Thining중 On-Demand Resource에 대해 알아본다. 해당글은 WWDC 2015를 기준으로 한다. Do Better 이전 글에서 App Slicing을 하면서 앱 크기를 많이 줄일 수 있다는 것을 확인했다.
1건의 항목
On premise 서버를 운영하기 위해 서버를 사내 랙에 설치하거나 데이터 센터에 두는 방식 Cloud 월 정액 기반으로 사용한 만큼 요금을 지불하는 방식 선택 방법 시스템 자원 사용량을 근간으로 가격을 책정하기 때문에, 잘생각 하지만 시스템 설비를 책정할 때, 최대 용량을 기준으로 하기 때문에 비효율적 구 분클라우드온프라미스 (기존 서버 구축방식)초기도입비용월정액기반으로 사용한만큼 요금을 지불일회성 비용으로 구매시 많은 비용예산이 소요됨인력운영비시스템 엔지니어의 업무 감소시스템 엔지니어의 업무 증대 ( 서버 운영 및 관리/ 전산...
57건의 항목 처음 10개의 태그
GOF의 디자인 패턴 1장, 서론의 두번째를 정리해봅니다.
GoF의 디자인 패턴, 첫번째 추상 팩토리 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 두번째 빌더 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 팩토리 메서드 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 원형 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 싱글톤 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 적응자 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 가교 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다. 핵심 요약 기능과 구현의 분리를 통해 시스템의 확장성과 유지보수성을 높이는 패턴 기존 시스템에 새로운 기능을 추가해도 어떠한 변경도 없이 추가가 가능하다.
GoF의 디자인 패턴, 복합체 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다. 핵심 요약 단일체와 집합체를 하나의 동일한 개념으로 처리하기 위한 패턴 폴더 구조, View 구조 등이 예가 될 수 있겠다.
GoF의 디자인 패턴, 장식자 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
27건의 항목 처음 10개의 태그
운영 체제가 하는 일을 간단하게 알아보자. 최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. 운영체제가 하는 일 접근 제어 + 동기화 + 관리 전산 자원을 관리한다. 대표적인 전산 자원은 CPU, RAM 등이 있다.
운영체제에 대한 정의, 역할에 대해 알아본다. 운영체제는 사용자가 컴퓨터를 사용하기 위해 필요한 소프트웨어이다. 일반적으로 사용하는 모든 프로그램은 운영체제에서 그 자원을 관리한다. 목적 운영체제를 사용하는 가장 큰 목적은 하드웨어의 관리이다.
일괄처리부터 시분할시스템, 최근의 고급운영체제, 인터럽트에 기반한 현대 운영체제까지 변천 역사를 알아본다. 1. 초기 컴퓨터 노가다, 사람 손도 많이가, 장치도 엄청커, 비싸기도 비싸 운영체제는 컴퓨터가 발전하면서 같이 발전하게 되었다.
운영체제의 사용자모드와 관리자모드, 하드웨어 보호 관해서 알아본다. 1.
운영체제의 주요 서비스: 프로세스, 메모리, 파일관리, 시스템 호출에 대해 알아본다. 운영체제의 주요 서비스는 하드웨어 자원을 각 사용자 애플리케이션에 적절히 분배해주는 것이다.
프로세스의 정의, CPU 스케쥴러, 멀티 프로그래밍에 대해 알아본다. 1. 프로세스(Process) 프로세스는 메인 메모리에 할당되어 실행중인 상태인 프로그램을 말한다. 프로그램은 일반적으로 하드디스크(보조기억장치)에 저장되어 아무 일도 하지 않는 상태이다.
CPU 스케쥴링에 대해 알아본다. CPU가 하나의 프로세스 작업이 끝나면 다음 프로세스 작업을 수행해야 한다. 이때 다음 프로세스가 어느 프로세스인지를 선택하는 알고리즘을 CPU Scheduling 알고리즘이라고 한다.
Thread에 대해서 알아본다. 쓰레드(Thread) 쓰레드는 프로그램 **내부의 흐름(맥)**이다.
프로세스 동기화가 발생하는 예시와 목적, 그리고 그것을 해결하기 위한 원칙에 대해 알아본다. 1.
2. Bank Account Problem(은행 계좌 문제) 동기화의 필요성을 가장 잘 느낄 수 있는 은행 계좌 문제에 대해 알아본다. 2.1 문제 설명 동기화 문제 중에서 대표적인 은행 계좌 문제를 살펴보자. 은행에는 하나의 계좌에 입금, 출금을 할 수 있다.
1건의 항목
관계 연산 (True or False) Equals 두 개가 완전히 동치인 경우 Disjoint 두 개가 하나도 겹치지 않는, 즉 서로소인 경우 Intersects 교집합 뚫고 지나가는 경우, 겹치는 경우 Touches 테두리에 걸리는 경우 Crosses 교차할 때 그런데, 비교하고자 하는 두개의 gemoetry가 서로 차원이 다르거나 (점, 선, 면) 혹은 선이어야만 연산이 성립 점 & 선, 선 & 면, 선 & 선만 정의가 가능 Within / Contains 완전히 포함될 떄 성립 Overlaps 같은 차원...
1건의 항목
동시성 프로그래밍을 위해 apple에서는 GCD라는 것을 제공한다는 사실을 이제 우리는 알고 있다. 그런데, 이외에 다른 방법이 하나 더있다. 바로 Operation Queue이다.
2건의 항목
연산자 & 피연산자 연산자 : 산술연산자인 +, - , * , / 와 같이 이미 정의된 연산을 수행하는 기호 피연산자 : 연산에 참여하는 변수나 값 연산자의 종류 대입 연산자 일반적 수학에서 사용하는 기호 LHS와 RHS가 다른의미를 가지고 있다.
Combine이 무엇일까? Apple이 설명하는 것을 들어보자. What is Combine 이벤트 처리 연산자를 결헙하여 비동기 이벤트를 처리하는 방법 일단 비동기 이벤트가 무엇이 있는지부터 알아보자.
1건의 항목
실제 Functor는 무엇을 의미하는가? Functor 카테고리 사이에서의 사상(morphisms) 동질의 대상들을 규정하면, 그 사이를 비교하거나 대응하기 위한 수단도 필요하다. 집합의 경우 집합 사이의 함수가 그것이다.
1건의 항목
설명 최적화 기법 중 하나다. 대부분의 최적화 기법이 그렇듯, 특정 제약조건에서 목적함수를 최적화하는 문제이다. 그런데 이 목적함수의 모양이 선형이다. 주로 자원 배분, 생산 계획, 물류 최적화 등에서 활용된다.
1건의 항목
정의 옵션의 시간 가치 감소율 옵션의 가치가 만기일이 다가옴에 따라 시간 경과로 인해 얼마나 감소하는지를 측정함. 옵션은 만기일이 가까우면, 불확실성이 사라지기 때문에 기본적으로는 가치가 감소함. 이 측면에서 바라본 가치의 감소만을 뜻함.
5건의 항목
Functor란 무엇인가? Functor Functor: 임의의 타입 T, U가 주어졌을 때, 연산 lift이 정의되는 01.
순수 함수형 프로그래밍언어 Haskell에는 Either라는 자료구조가 있다. 둘 중 하나의 타입을 가질 수 있는 경우 사용하는 자료구조라 한다. 이 Either 자료구조에 영감을 얻어 태어난 것이 Swift의 Result라 한다.
Swift를 처음 공부하면서 가장 어려웠던게 이 Optional인 것 같다. 애초에 개발도 처음할 시기였으니, 이런 자료구조가 왜 필요한지 전혀 몰랐었던 시간이 있었다. 해당 이유는 Either와 Result 이해와 실제 사용예 알아보기 포스트를 참고해주길 바란다.
처음에 Swift 공부할 때는 정말 아무것도 몰라서, 힘들었던 경험이 있다. 좋은 기회로 한번더 정리할 시간이 생겼다. 다시한번 전체적으로 훑는 시리즈를 만들어본다. 먼저, Swift가 어떤 언어적 특징을 갖는지, 기본 문법은 어떤지 알아보는 시간을 가지려 한다.
! 사용하지 않기 Swift 코드에서 !가 보이는 경우는 두가지다. 연산자(!=, not, !==)에서 사용하는 경우는 제외한다.
1건의 항목
Swift를 처음 공부하면서 가장 어려웠던게 이 Optional인 것 같다. 애초에 개발도 처음할 시기였으니, 이런 자료구조가 왜 필요한지 전혀 몰랐었던 시간이 있었다. 해당 이유는 Either와 Result 이해와 실제 사용예 알아보기 포스트를 참고해주길 바란다.
1건의 항목
HTTP 메소드 종류 GET 요청이 캐시된다. 브라우저, 로봇이 임의로 요청이 가능하다.
1건의 항목
Intuition Concept 컴퓨터는 이산적인 값에서 작동하는 기계입니다. 우리의 정신세계에서 이상적인 선은 존재할 수 있지만 현실에서는 가산적인 점의 집합이 결국 선이겠죠. 연속적인 세계에서 정의된 해석적 미분방정식의 풀이 방법은 컴퓨터에서 적용할 수 없습니다.
1건의 항목
Orthogonal Matrix A^TA\;=\;AA^T\;=\;I\\ \;\\ A\;=\;A^{-1}\\.
1건의 항목
네트워크 통신 규칙 규칙은 필요하다.
2건의 항목
네트워크 통신 규칙 규칙은 필요하다.
물리 계층 (Physical Layer L1) 기계적, 전기적인 통신망 접면의 정의 데이터를 전기적인 신호로 변환해서 주고받는 기능만 할 뿐 대표 장비 : 통신 케이블, 리피터, 허브 등 데이터링크 계층 (Data Link Layer 2, L2) 데이타 링크의 제어 (프레임화, 데이터 투명성, 오류 제어 등) 맥 주소를 가지고 통신한다.
1건의 항목
TableView dataSource에서 아이템을 가져오다 outOfIndex가 나서 crash가 났다. 이로부터 배운 점에 대해 적어본다. 어떤 상황인가? crash 로그를 확인해보니, tableView에서 indexPath를 벗어나 발생했음을 확인했다.
2건의 항목
인덱스로 Array 아이템을 탐색하다보면 항상 마주하는 것이 있다. Fatal error: Index out of range. 잘못하면 런타임에 애플리케이션이 바로 죽어버리기 마련이다. 아무리 염두에 둔다하더라도 우리는 사람인 이상 실수를 하기 마련이다.
! 사용하지 않기 Swift 코드에서 !가 보이는 경우는 두가지다. 연산자(!=, not, !==)에서 사용하는 경우는 제외한다.
3건의 항목
fstream Reading from file #include <iostream> #include <fstream> #include <string> using namespace std; int main(){ string line1; string line2 ifstream myfile("input.txt"); if (myfile.is_open()){ if(!myfile.eof()){ // end of file 이 아니면 계속 진행.
format() print('{0} ate {1} apples {2}'.format('I', '3', 'yesterday')) print('{0} ate {1} apples {2}'.format('You', '5', 'at 2 pm')) print('{1} ate {0} apples {2}'.format('5', 'You', 'a...
컴퓨터를 통한 문제 해결을 위해서 우리는 정수, 실수, 문자열 등을 프로그램 실행중에 만들어서 사용하였다.
1건의 항목
Overfitting? Train data set에서는 accuracy가 높게 나오지만, Test data set에서 accuracy가 낮게 나오는 현상 Layer수가 늘어날 수록 training err는 떨어진다.
1건의 항목
자료형 프로그램에서 선언된 변수들이 기억 공간에서 어떻게 저장되고 처리되어야 할지, 컴파일러에게 알려줌 종류 정수형 실수형 문자형 사용자 정의 자료형 정수형 소수점이 없는 숫자 음의 정수, 0 , 양의 정수 오버플로우(overflow) 데이터 허용 범위를 넘는 값을 변수에 저장할 때, 의도한 값이 아닌 다른 값이 저장되는 것 #include <stdio.h> int main(void) { short a = 32767, b=2, c; unsigned short d; c = a+b; d = a+b; printf("c...
2건의 항목
Overloading 같은 함수이름, 혹은 연산자를 사용하면서, 하나 이상의 정의가 가능한 방법이다. Function Overloading 연산자 오버로딩과 방식이 동일하다. 밑에서 예를 든것을 보고 이해해보자.
Inherence 전체적인 구조 상속이 필요한 이유 상속은 매우 유용하다. 13. Class & Object & Constructor 글을 다시 기억해보자.
2건의 항목
인터페이스는 왜 필요할까? 그리고 무엇일까? Interface의 사전적 의미 inter-(상호간의) + -face(면) = interface 접해있는 두 물체나 공간 사이의 경계 사용자는 스위치를 키는 버튼에 집중 이걸 누르면 어떤 일이 일어날지를 앎 (what) 어떻게 그런일이 일어나는지는 모름 (how) 실제 동작은 구현 공간에서 일어남 배선의 연결 사용자는 잘 알지 못하는 공간 구현자만 알고 있음 이미 알고 있는 개념 = 함수 함수는 블랙박스임: 호출자는 내부가 어떻게 도는지 이해하려 하지 않는다.
Inherence 전체적인 구조 상속이 필요한 이유 상속은 매우 유용하다. 13. Class & Object & Constructor 글을 다시 기억해보자.
1건의 항목
Inherence 전체적인 구조 상속이 필요한 이유 상속은 매우 유용하다. 13. Class & Object & Constructor 글을 다시 기억해보자.
1건의 항목
Package Finder가 단일 파일인 것처럼 사용자에게 제공하는 디렉토리 가장 쉽게 알아볼 수 있는 것은 우리가 사용하는 Application에 있는 최종 Product! .app 이다.
3건의 항목
Packet Delay 패킷스위칭을 시 라우터는 패킷단위의 데이터를 전달받고 목적지로 전달하는 역할을 수행한다. 이 과정에서 라우터가 보낼 수 있는 대역폭보다 더 많은 유저가 더 빠른 속도로 데이터를 보낸다면 딜레이가 생길 수 밖에 없다.
한번에 전송할 데이터의 크기 편지를 내가 썼다. 그 편지를 누군가한테 보내는데, 글자하나하나를 보내지 않는다. 이 때 편지는 우체부 아저씨가 누군가한테 배달하는 단위가 된다. 이와 같은 개념이 패킷이다. 패킷은 데이터를 보내는 데 있어 발생하는 단위이다.
설명 현재 네트워크에서 다른 네트워크로 최적 경로를 통해 데이터를 전송 경로 정보는 라우팅 테이블에 등록 라우팅 테이블에 경로 정보를 등록하는 방법은 수동 등록과 자동 등록이 있다. 수동 등록은 소규모 네트워크에 적합하다.
1건의 항목
What is Padding Convolution 전 게시물에서 3x3 짜리 필터를 걸었을 때, 4x4짜리가 나왔다. 어떻게 보면 당연할 결과이다.
2건의 항목
외부 단편화를 해결하는 방법인 페이징(Paging)에 대해 알아본다. 1. 페이징(Paging) 외부 단편화로 인한 메모리 낭비는 매우 심하다는 것을 살펴보았다.
page를 메모리에 할당하는 프레임 할당에 대해 알아본다. 1. Global VS Local Replacement Global Replacement 메모리 상의 모든 프로세스 페이지에 대한 교체 작업을 수행한다.
2건의 항목
기한이 다가오고, 모르는 기술 앞에서 우리는 압박을 받기 마련이다. 어떻게 헤쳐나가야 할까? 압박 프로개발자는 압박감을 느껴도 침착하고 결단력 있게 행동한다. 압박감이 커질 수록 훈련과 규율을 따른다.
사람이 싫더라도 우리는 그들과 일하는 방법을 배워야 한다. 프로그래머 vs 보통 사람들 프로그래머는 사람들과 같이 일하는게 좋아서 된게 아니다. 일반적으로 사람들 사이의 관계는 뒤죽박죽이고 예측하기 히믇ㄹ다. 우리는 예측한 대로 움직일 때가 즐겁다.
3건의 항목
최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. PC 조립 과정 보며 구조 이해하기 컴퓨터 하드웨어 구성 요약 다나와 다나와 이곳에 가면 컴퓨터 용어에 대한 간단한 설명들을 쉽게 알 수 있다. 컴퓨터란? CPU가 가장 중요하다.
같은 일을 여러 사람이 동시에 하는 것 군대 삽질 분대가 다같이 행위는 하나, 주체는 여러개 병렬성은 Concurrency에 포함된다.
동시성은 이제 프로그래밍에서 빼놓을 수 없는 요소가 되었다.
8건의 항목
Example of a Layer 이제 원래 배웠던 신경망의 노드에서 하는 활동으로 돌아오자. 결국 이 필터는 가중치들의 모임이고, 원래 데이터에서 이 가중치를 곱한다음에 더하는 행위는 한 노드에 이 데이터들이 들어가는 것이다.
냄새나면 당장 갈아라. 어떻게 하는지에 대해서 지금까지 배웠다. 하지만, “언제” 시작하고 그만할지를 판단하는 것은 또 다른 얘기다. 어떤 “냄새”를 맡았을 때 손을 대야할까? 기이한 이름 이름으로 이게 뭐하는 것인지 딱 볼 수 있게 작성해야 한다.
Introduce Parameter Object, 매개변수 객체 만들기에 대해 알아보자.
변수 func someFunction(a: Int, b: Int) { } 이러한 상황에서 a, b는 무엇일까? 일단 기본적으로 변수다. 그리고 함수내에서 사용하고 있다. 이렇게 함수 내에서 사용하는 변수인 경우 parameter라 부른다. 다른 말로는 매개변수이다.
함수의 일반적인 개념 사용자가 필요한 함수를 만들어 쓰자. 프로그램 실행 흐름 프로그램 실행 중에 함수명과 동일한 부분을 만나면, 해당함수로 이동 함수실행 main() 함수로 다시 돌아옴 함수의 장점 동일한 기능을 여러번 작성할 필요가 없다.
함수의 기본 모양 수학에서의 함수와 같이, input , output 이 있고, input 이 들어갔을 때, 어떤 작업을 한 뒤, output 을 내보내는 방식으로 작동한다.
일급 함수 parameter로 사용가능 return 값으로 사용가능 익명함수 argument label 호출하는 쪽에서 사용하는 이름 parameter name function 안에서 사용하는 이름 Variadic parameters 0개 이상의 특별한 타입을 나열해서 파라미터로 넘길 수 있음 ...을 넣어서 사용 이렇게 선언된 경우 함수안에서 해당 type의 Array로 사용할 수 있음 func sum(values: Int…) -> Int { var result = 0 for value in values { result +=...
Parameters 문서에 제공할만한 매개변수 이름을 선택하자. 파라미터 이름을 숨겨 보이지 않는 경우에도 설명에 있어서는 중요하다.
1건의 항목
일급 함수 parameter로 사용가능 return 값으로 사용가능 익명함수 argument label 호출하는 쪽에서 사용하는 이름 parameter name function 안에서 사용하는 이름 Variadic parameters 0개 이상의 특별한 타입을 나열해서 파라미터로 넘길 수 있음 ...을 넣어서 사용 이렇게 선언된 경우 함수안에서 해당 type의 Array로 사용할 수 있음 func sum(values: Int…) -> Int { var result = 0 for value in values { result +=...
4건의 항목
실버2 : 파라메트릭 서치 문제이다. 생각 파라메트릭 서치 문제이다. 일단 완전 탐색이 불가하고, 답을 제시했을 때 분기를 만들 수 있다는 점에서 바로 접근했다. 인접한 집간의 최대 거리를 제시한다.
실버1 : 이분 탐색, Parametric Search 문제이다. 생각 처음에 이 문제를 풀 때, 세그먼트 트리로 풀려고 했다. 그런데, 문제가 생겼다.
실버3 : 이분 탐색 문제이다. 생각 이분 탐색 문제이다. 이전의 문제들과 마찬가지로, 값을 제시하고 그에 대한 분기를 만드는 것이 중요하다. 이 때, 어느 영역에서 답이 나오는지를 잘 체크하고, 답의 후보를 기록해두는 행위가 중요하다.
실버2 : 파라메트릭 서치 문제이다. Root 찾기 처음에 또다시 해시로 풀려고 하다가, 중간에 입력값의 범위가 후덜덜한 것을 보고 풀이 방법을 바꾸었다. 이 문제를 그냥 linear하게 풀려고 하면 100000번을 linear하게 탐색해야 하기 때문에 터져버린다.
1건의 항목
protoc protobuf는 데이터를 구조화하고, 이를 전송하고자 하는데 있어서 유연하고 효율적으로 작성하고 파싱하도록 지원하는 자동화 솔루션이다. json이나 xml을 생각하면 이해가 쉬운데, 사실 조금 다른 부분이 있다.
1건의 항목
발생하는 경우 계정 패스워드를 바꿨는데 로컬 반영이 안된 경우 환경 등의 알지못하는 변경이 영향을 준 경우 해결 방법 git config --unset credential.helper // git config credential.helper store // 해당 Git directory에서 적용 git config credential.helper store --global // 전체 Git에서 적용 Reference push 시 Password 물어보지 않도록 설정하기 .
1건의 항목
HTTP 메소드 종류 GET 요청이 캐시된다. 브라우저, 로봇이 임의로 요청이 가능하다.
1건의 항목
내가 기존에 만들었던 강아지 밥주는 앱(DogFood …)를 기준으로 설명해보겠다. PROJECT_FILE_NAME.xcodeproj 이녀석의 정체는 파일이 아니다. 디렉토리다! 우클릭후 “패키지 내용보기”로 내부를 확인할 수 있다.
1건의 항목
소수설에서 태어난 다양한 주장들에 대해 알아보자. ADT와 PDA, Alan Kay에 대해 알아보자. 지금까지. 주류 OO에 대해 배웠다. 이제는 소수설들이 어떤 것들이 있었는지 알아보자. 취할 것은 취하고, 아닌 것은 아닌 것임을 알기 위해 배운다.
1건의 항목
실제 컴파일, 링킹이 끝난 뒤의 결과물에 대해서는 잘 모르는 것 같다. 실행 파일은 어떻게 구성되어 있는 걸까? 우리가 사용하는 프로그램들은, 바이너리화되어 있는 파일의 형태로 존재한다. 그런데, 이 실행파일의 형태는 OS에 따라 다른 형태로 존재한다.
1건의 항목
네트워크 공부를 하다보니, 인코딩이라는 것에 대해 제대로 이해할 필요가 있다고 생각했다. 왜 필요한지, 어떻게 사용하는지에 대해서 이해해보는 포스팅이다.
1건의 항목
데이터를 설명하는 상대위치와 이를 나타내는 box plot에 대해 알아본다. 상대위치 중앙값이 50%에 위치하는 분위수라면, 이에 대응하는 다양한 분위수가 존재한다. 백분위수 분포를 100개로 쪼개어 생각하는 것이다.
2건의 항목
이제 리팩터링 전반에 적용되는 원칙 몇 가지를 살펴보자. 리팩터링 정의 리팩터링이라는 개발 용어는 굉장히 두루뭉실한 의미로 통용된다. (많은 개발 용어가 그렇다) 하지만 이를 엄격하게 정의해야 유용하다.
iOS Layout을 적용하는 것에는 여러가지 방법이 있다. autolayout만이 정답이라 생각했는데, 오산이었다. 이 부분은 주기적인 업데이트를 하도록 하겠다. Storyboard 장점으로는 UI 구성을 눈으로 확인할 수 있다는 점이다.
4건의 항목
실버2 : 순열 문제이다.
풀이 순열로 해결했다. n이 작아서 가능했다. 순열로 가능한 순서의 모든 banned를 나열하고, 각각에 대해 가능한지 확인하여 문제를 해결했다.
문자열 처리는 파이썬으로 find() isalpha() isalnum() for ~ in list, string으로 하나씩 꺼낼 수 있다. ~ in list, string으로만 하면 t/f 반환한다.
스위프트에서 제공하지 않는 Combination, Permutation 구현이다.
1건의 항목
Split Phase, 단계 쪼개기를 알아보자.
3건의 항목
Agility Robotics가 SPAC 합병으로 나스닥에 오르려는 과정을, IPO 투자설명서와 합병 계약 원문으로 단계별로 짚습니다. 기업가치 25억 달러가 무슨 뜻이고 아직 무엇이 안 정해졌는지.
언어 모델처럼 '하나의 큰 모델'로 여러 로봇을 움직이겠다는 흐름을, NVIDIA의 오픈 모델·서베이 논문·연구 발표를 근거로 짚습니다. 무엇이 확인됐고 어디가 아직 병목인지.
오늘 정원에 심긴 두 갈래를 짚습니다. 언어 모델처럼 하나의 큰 모델로 여러 로봇을 움직이려는 흐름과, 미국 정부가 최신 AI 모델을 껐다가 18일 만에 되살린 사건. 무엇을 먼저 읽고 무엇을 지켜보면 되는지 안내합니다.
2건의 항목
물리 계층 (Physical Layer L1) 기계적, 전기적인 통신망 접면의 정의 데이터를 전기적인 신호로 변환해서 주고받는 기능만 할 뿐 대표 장비 : 통신 케이블, 리피터, 허브 등 데이터링크 계층 (Data Link Layer 2, L2) 데이타 링크의 제어 (프레임화, 데이터 투명성, 오류 제어 등) 맥 주소를 가지고 통신한다.
비트 0, 1 비트가 모여 데이터 구성 비트를 주고 받는 것이 통신의 본질 바이트 = 8비트 워드 = 1바이트가 2개 (16비트) 데이터가 어떻게 전기 신호로 전달? 데이터가 전달되지 않을 때 전기적 신호가 존재 Clock 신호 CPU는 해당 신호에 맞춰 일을 처리한다.
1건의 항목
Motivation of Pivoting 가우스 소거법과, 가우스-조르당 방법에서 대각행렬을 기준으로 수행한다는 것은 명백하다. 우리는 그래서 이 대각 행렬의 요소를 Pivot 이라 부른다.
1건의 항목
컴퓨터가 모든 것을 숫자로 다루는 방식을 알아보자. 최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. 컴퓨터로 글자를 나타내는 방법 ASCII Code 숫자와 글자에 대한 함수관계를 정의한다.
1건의 항목
PLA ABS.
2건의 항목
Code import tensorflow as tf tf.set_random_seed(777) # 같은 값이 나오도록 하기 위해서 # 데이터 준비 x_train = [1, 2, 3] y_train = [1, 2, 3] # 초기에 랜덤하게 값을 할당한다.
Generic의 경우 코드 중복을 줄일 수 있는 좋은 기능이다. 잘 다뤄둔다면 중급(?) 이상의 개발자가 되는데 큰 도움을 줄 것이다.
11건의 항목 처음 10개의 태그
모든 사람들의 의견을 바탕으로 수렴된 추정치를 내는 방법 Agile 개발 방법론에서 등장하는 단어이다. 추정치를 내는데 사용하는 방법중 하다나. 모든 개발자가 참여한다.
계획이란 무엇인가? 계획이 없다면 프로젝트는 수많은 문제들과 마주하게 된다. 시간 / 비용 값을 기반으로 진행 여부를 판단한다 제때 원하는 기능을 내놓을 수 있을지 없을지 알 수 있다. 하지만 계획한다는 것은 어렵고, 수시로 어긋나기까지 한다.
계획과 추정에 대한 연구결과 2/3 가량의 프로젝트는 추정된 비용 이상으로 많은 돈이 든다. 최종 제품에 포함된 기능들 중 64 퍼센트 가량은 거의 혹은 결코 쓰이지 않는다. 평균적인 프로젝트는 계획된 일정을 두 배 정도 초과한다.
지금 열정적으로 수행하는 ‘좋은’ 계획이 다음 주에 실행할 ‘완벽한’ 계획보다 낫다.
스토리 점수는 상대적이다 스토리 점수: 사용자 스토리나, 기능, 작업의 규모를 표현하기 위해 사용하는 단위 값의 상대성에 의미가 있다.
이상적 시간과 실제 경과 시간 축구 한게임하는데 시간이 얼마나 걸릴까? 누구는 90분, 누구는 3시간이라 말할 것이다. 90분은 이상적 시간에 대응되고, 3시간은 실제 경과 시간에 대응된다고 볼 수 있다.
수확 체감의 법칙 수확 체감의 법칙은 노동을 더 투입한 만큼에 비례하여 결과가 늘어나지 않음을 말한다. 계획 추정에 있어서도 비슷하다. 적은 시간 투자를 통해 얻는 결과와 많은 시간 투자를 통해 얻은 결과가 크게 다르지 않다.
재 추정을 하면 안 되는 경우 첫번째 이터레이션을 한 후, 1, 2번 스토리를 마무리했다고 생각해보자. 원래는 4개의 스토리 모두를 한 이터레이션에 할 수 있을 것이라 생각했다.
규모 추정에는 스토리 점수와 이상적 작업일이라는 두 수단이 있다. 각각 나름의 장단점이 있는데, 어떻게 활용하는 것이 좋은지에 대해 얘기해본다. 스토리 점수의 장점 스토리 점수는 팀원들로 하여금 기능간 경계를 뛰어 넘게 한다.
핵심 요약 시간이 없기 때문에 우선순위 선정을 해야 한다. 스토리 말고 테마를 통해 우선순위 산정한다.
2건의 항목
우리가 가장 못하는 행위인 추정에 대해 알아보자. 추정 가장 단순하면서도 가장 두려운 행위다. 큰 사업가치가 추정에 따라 좌지우지된다. 사업부와 개발자를 벌어지게 만드는 제 1요소이다. 불신감의 원인은 대부분 추정이다.
모든 사람들의 의견을 바탕으로 수렴된 추정치를 내는 방법 Agile 개발 방법론에서 등장하는 단어이다. 추정치를 내는데 사용하는 방법중 하다나. 모든 개발자가 참여한다.
1건의 항목
PNG(Portable Network Graphics) 핵심: 비손실 압축 방법 원리 Huffman coding를 통한 압축 그렇기 때문에 반복되는 이미지가 등장할 경우 PNG가 보다 효과적 장점: 투명도 사용가능, 비손실 압축, 32비트 트루컬러, 크게 색상 변화가 크지 않은 이미지의 경우 사용하는 것이 좋다.
4건의 항목
실버2 : two pointer 문제이다. 풀이 투포인터는 i이상 j미만으로 짠다. 같을 경우는 i를 늘려서 파악한다.
Aliasing (Reference Variable) 기본적으로, 우리가 선언된 변수를 다른 변수에 할당하게 되면 이 값을 복사해서 사용하는 셈이 된다.
What is pointer 포인터는 먼저 자료형으로 선언할 수 있다. 각각의 자료형에 대해 * 를 달게 되면 선언할 수 있으며.
Pass by Reference 내가 클래스를 만들고, 그 클래스를 바탕으로 객체를 만들었다. 이때, 이 클래스에 연결되어 있는, 함수를 메서드라 했다.
3건의 항목
개요 한점에 대해 유일한 좌표를 부여하기 위한 체계 직교좌표계 (x, y, z) 구면좌표계 (r \theta, \phi) 지리좌표계 (\lambda, \phi) 지표면에만 있다고 가정하고 위, 경도로만 표현하는 것 지심좌표계 (x, y, z) 지표면 안으로 들어간다고 가정했을 때 필요 좌표계 EPSG 무지하게 많은 좌표계들을 한번에 알아볼 수 있는 코드 좌표계 변환 방식 측지계가 같으면 쉽게 변환이 가능 즉 준거타원체와 기준점이 같으면 하지만 측지계가 다르면 복잡한 로직이 필요 즉, 준거타원체도 다르고, 기준점도 다르면 3-Para...
7건의 항목
다형성은 무엇인가? 왜 중요한가? Polymorphism poly + morph + ism: 다양한 + 변하다 + 상태 = 다양한 형태로 변할 수 있는 능력 많은 사람들이 OOP의 핵심이라 여기는 특징 같은 지시를 내렸는데 다른 종류의 개체가 동작을 달리 하는 것 어떤 함수 구현이 실행될지 실행중에 결정된다.
Early Binding과 Late Binding은 성능에서 어떤 차이가 나는가? 실제로는 어떻게 사용하는가? 알게 모르게 당연하게 사용하고 있는 다형적 메서드는 무엇이 있을까? 이른 바인딩 vs.
추상클래스는 왜 필요할까? 다형성은 멋지고 강력한 개념 OO 4대 특성인 이유 (상속, 캡슐화, 다형성, 추상화) 다형성은 상속에 기반 상속과 다형성은 추상화에 기반 공통된 것을 뽑아내어 일반화된, 범용적인 것으로 적용 여러 클래스에서 공통 분모를 뽑아 부모 클래스로 제작 자식마다 달리 작동하는 구현을 부모의 method signature로 일반화 추상화는 조금더 복잡한 문제를 해결하기 위한 것 새로운 개념은 새로운 문제도 가져온다 추상화는 막강하지만 그로 인해 생각지 못한 문제가 발생 역시 사람은 직접 해보고 당해봐야 답을 찾음 ...
만약에 연극 종류가 추가되면 어떻게 될까? 이제 다형성으로 변경할 시점이다. 다형성을 활용해 계산코드 재구성하기 지금까지 구성한 코드를 한번 보자.
마지막으로 변경된 코드를 보며 생각해보자.
Replace Conditional With Polymorphism, 조건부 로직을 다형성으로 바꾸기를 알아보자.
Dynamic Binding (동적 바인딩) 그런데, 우리가 두 클래스가 상속관계에 있다는 것을 안다면, 이 멤버함수를 자동으로 묶어줄 수는 없을까? 이제 override , virtual 의 강력한 기능을 알 수 있다.
1건의 항목
Curve Fitting with Polynomials Least Square Method을 보고 오면 좋다. 데이터가 주어졌을 때 다항식 곡선으로 어떻게 맞출 수 있는지 알아보자. Intuition Concept 아래와 같은 그림을 보고 직관적으로 이해해보자.
2건의 항목
개요 앞서 알아본, FCN에서 발생하는 문제를 Dilated Convolution으로 해결하겠다는 논지이다.
Types of Layer in a CNN Convolution 여태껏 배운 합성곱을 사용하여 다음 레이어를 만드는 방식이다. Pooling Fully connected What is Pooling 결과값을 압축한다! 로 생각하면 이해가 빠르다.
1건의 항목
모집단을 추정하기 위한 표본을 추출하는 방법에 대해 알아본다. 표본 추출 단순 랜덤 추출 단순히 랜덤하게 모집단에서 추출하는 방법이다. 집단의 분포가 불균형할 경우 모집단의 특성을 대변하지 못한다는 단점이 있다.
1건의 항목
통계 개념 정리에 앞서 통계학이라는 학문에 대해 알아본다. 통계는 왜 공부하는가 미래를 알기 위해서, 집단의 특징을 알기 위해서 우리는 군중의 특징에 대해 알 필요가 있다. 예를 들어 물건을 판다고 생각해보자.
1건의 항목
IP 주소를 갖고 있는 컴퓨터에서 Process에 접근하기 위한 번호 해당 컴퓨터에 들어가더라도, 어떤 process에 접근하는지를 알아야 한다. 그걸 대표하는 것이 포트 번호이다.
1건의 항목
IP 주소를 갖고 있는 컴퓨터에서 Process에 접근하기 위한 번호 해당 컴퓨터에 들어가더라도, 어떤 process에 접근하는지를 알아야 한다. 그걸 대표하는 것이 포트 번호이다.
1건의 항목
개념 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 쓰이는 형식언어 프로그래밍을 다루다 보면 가장 많이 만나게 되는 것이 문자열이다. 모든 것이 문자열로 나타나 있고, 이것을 기반으로 한 규칙으로 프로그램이 구동되기 때문이다.
1건의 항목
모든 직업군에 종사하는 사람들은 연습을 한다. 연습 모든 프로는 기술 연마를 한다. 프로그래머는 무엇을 해야할까? 연습의 배경지식 작은 프로그램을 짜봐라.
1건의 항목
프로그램 실행 과정 graph LR A[원시함수 작성] --> |Compiler|B(오브젝트 파일 생성) B-->|Linker|C[실행파일 생성] Compiler : 고급 언어로 작성된 파일을 기계어로 번역해줌.
1건의 항목
물리 계층 (Physical Layer L1) 기계적, 전기적인 통신망 접면의 정의 데이터를 전기적인 신호로 변환해서 주고받는 기능만 할 뿐 대표 장비 : 통신 케이블, 리피터, 허브 등 데이터링크 계층 (Data Link Layer 2, L2) 데이타 링크의 제어 (프레임화, 데이터 투명성, 오류 제어 등) 맥 주소를 가지고 통신한다.
1건의 항목
기한이 다가오고, 모르는 기술 앞에서 우리는 압박을 받기 마련이다. 어떻게 헤쳐나가야 할까? 압박 프로개발자는 압박감을 느껴도 침착하고 결단력 있게 행동한다. 압박감이 커질 수록 훈련과 규율을 따른다.
1건의 항목
그래프 용어 V : vertex E : Edge path 연결 그래프 : 어떤 두 정점 사이에도 경로가 존재하는 그래프 부분 그래프 가중치 포함 그래프 : Edge에 가중치가 달려있음 순환 경로 순환 그래프, 비순환 그래프 트리 - 비순환, 비방향그래프 신장 트리 : 연결된, 비방향성 그래프에서 순환경로를 제거하면서 연결된 부분 그래프가 되도록 하는 트리 신장 트리의 개수는 Cayley’s formula에 따른 개수를 가짐 최소비용신장트리 신장 트리가 되는 부분 그래프 중에서 가중치가 최소가되는 부분 그래프 무조건 트리로 나온다.
1건의 항목
골드4 : 수학 문제이다. 생각 문제 이름 부터 뭔가 마음에 들지 않았다. 풀이 방법은 바로 떠올랐는데 왜 요즘 이런게 구현이 안되는지… score가 최대공약수를 구하는 것이기 때문에 소인수 분해를 떠올릴 수 있고, 그러기 위해서는 소수를 구해야 한다.
1건의 항목
골드4 : 수학 문제이다. 생각 문제 이름 부터 뭔가 마음에 들지 않았다. 풀이 방법은 바로 떠올랐는데 왜 요즘 이런게 구현이 안되는지… score가 최대공약수를 구하는 것이기 때문에 소인수 분해를 떠올릴 수 있고, 그러기 위해서는 소수를 구해야 한다.
1건의 항목
Replace Primitive With Object, 기본형을 객체로 바꾸기를 알아보자.
1건의 항목
String 문자열 나누기 Pithon -> Python 으로 바꾸는 작업을 진행해보자. # 잘못된 예 a = "Pithon" a[1] = 'y' 불가능하다. 문자열의 요소값은 바꿀 수 있는 값이 아니다.
1건의 항목
프로그래밍 사용자가 어떤 값을 컴퓨터에 넣고(입력) 처리한 결과를 사용자에게 다시 제공(출력)하는 것 graph LR; A[Input] --> B{Function} B --> C(Output) 입출력 함수 표준 입출력 함수: 키보드와 모니터를 통해 자료를 입출력 파일 입출력 함수: 특정한 파일을 통해 자료를 입출력 저급 입출력 함수: 운영체제 내, 시스템 호출을 통해 자료를 입출력 표준 입출력 함수 형식화된 입출력 printf() 함수 표준 출력 장치인 모니터로 자료를 출력 도스창에 실행결과를 표시할 때 사용 제어 문자열...
1건의 항목
핵심 요약 시간이 없기 때문에 우선순위 선정을 해야 한다. 스토리 말고 테마를 통해 우선순위 산정한다.
1건의 항목
문자열 처리는 파이썬으로 find() isalpha() isalnum() for ~ in list, string으로 하나씩 꺼낼 수 있다. ~ in list, string으로만 하면 t/f 반환한다.
2건의 항목
인터넷 공간 상에서 해당 단말기의 고유 주소 Socket을 통해 통신한다는 것은 알았다. 근데 우리가 전화를 걸더라도, 어디에 전화를 걸것인지 알아야 한다. 그걸 대표하는 것이 전화번호이다. 마찬가지로 통신을 하려면, 어디에 통신할 것인지 알려주는 과정이 필요하다.
Network Address Translation (네트워크 주소 변환) 자 위에서 결국 우리는 공유기를 통해서 우리집에 배정된 공인 IP 주소를 가지고 각각의 장치에 배정된 사설 IP로 뿌려서 사용한다는 것을 알게되었다.
2건의 항목
Secure Shell 기존에 Telnet 사용 → 암호화를 통해 안전한 제어 가능, 중간에 가로채도 쓸모 없음 클라이언트와 서버로 분리됨 공개키, 암호키 방식으로 서버에 접속하는 방식이 있음 보다 안전함 → 따로 구글링 할 것 .
비밀키를 직렬화하는 방법을 알아보자. 비밀키 직렬화 비밀키를 직렬화할 이유는 그닥 없다. 네트워크로 전파할 일이 없기 때문이다. 비밀키 전파는 지갑이 털릴 수 있는 위험이 매우 크다.
1건의 항목
확률이 p라는 것 반복이 가능한 경우(Frequentist Probability) 특정 실험을 “무한히 반복”했을 때, 해당 결과가 나오는 비율이 p 반복이 가능한 사건에 대한 확률은 이해하기 쉽다.
1건의 항목
확률분포에 대해 이해한다. 왜 배우는가? 실생활에서 결국 엔지니어가 수행하는 역할은, 다양한 문제에 대해 이를 다룰 수 있는 문제로 바꾸는 것에 있다. 확률과 같이 애매하게 보이는 개념을 어떻게 수치화하여, 다룰 수 있는 문제로 바꾸는지에 대한 내용이 대부분이다.
1건의 항목
확률분포에 대해 이해한다. 왜 배우는가? 실생활에서 결국 엔지니어가 수행하는 역할은, 다양한 문제에 대해 이를 다룰 수 있는 문제로 바꾸는 것에 있다. 확률과 같이 애매하게 보이는 개념을 어떻게 수치화하여, 다룰 수 있는 문제로 바꾸는지에 대한 내용이 대부분이다.
1건의 항목
소수설에서 태어난 다양한 주장들에 대해 알아보자. ADT와 PDA, Alan Kay에 대해 알아보자. 지금까지. 주류 OO에 대해 배웠다. 이제는 소수설들이 어떤 것들이 있었는지 알아보자. 취할 것은 취하고, 아닌 것은 아닌 것임을 알기 위해 배운다.
8건의 항목
운영 체제가 하는 일을 간단하게 알아보자. 최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. 운영체제가 하는 일 접근 제어 + 동기화 + 관리 전산 자원을 관리한다. 대표적인 전산 자원은 CPU, RAM 등이 있다.
Inter Process Communication 프로세스는 완전히 독립된 실행객체이다. 서로 독립되어 있다는 것은 다른 프로세스의 영향을 받지 않는다는 장점이 있다.
IP 주소를 갖고 있는 컴퓨터에서 Process에 접근하기 위한 번호 해당 컴퓨터에 들어가더라도, 어떤 process에 접근하는지를 알아야 한다. 그걸 대표하는 것이 포트 번호이다.
프로세스간 통신 interface IPC를 가능케하는 interface이다. 서로 다른 process에서 접속을 하려 할 때, 이 socket을 사용하여 접근하게 되고, 해당 socket은 접속하는 process가 제대로 왔는 지와 같은 검사를 수행하게 된다.
운영체제의 주요 서비스: 프로세스, 메모리, 파일관리, 시스템 호출에 대해 알아본다. 운영체제의 주요 서비스는 하드웨어 자원을 각 사용자 애플리케이션에 적절히 분배해주는 것이다.
Thread에 대해서 알아본다. 쓰레드(Thread) 쓰레드는 프로그램 **내부의 흐름(맥)**이다.
프로세스 동기화가 발생하는 예시와 목적, 그리고 그것을 해결하기 위한 원칙에 대해 알아본다. 1.
외부 단편화를 해결하는 방법인 페이징(Paging)에 대해 알아본다. 1. 페이징(Paging) 외부 단편화로 인한 메모리 낭비는 매우 심하다는 것을 살펴보았다.
1건의 항목
현재 사용하는 동기화 도구인 모니터(Monitor)에 대해서 알아본다. 세마포는 실제로 매우 오래된 동기화 도구이다. 현재에는 모니터(monitor)라는 동기화 도구를 주로 사용하며, 이는 좀 더 고수준의 동기화 기능을 제공한다. 1.
3건의 항목
생산자-소비자 문제는 생산자가 데이터를 생산하면 소비자는 그 데이터를 소비하는 형태의 문제이다. 컴퓨터 환경에서 예를 보면, 컴파일러 -> 어셈블러, 웹 서버 -> 웹 클라이언트 등이 있다.
현재 사용하는 동기화 도구인 모니터(Monitor)에 대해서 알아본다. 세마포는 실제로 매우 오래된 동기화 도구이다. 현재에는 모니터(monitor)라는 동기화 도구를 주로 사용하며, 이는 좀 더 고수준의 동기화 기능을 제공한다. 1.
동시성과 깔끔한 코드는 양립하기 아주 어렵다. 그럼에도 불구하고, 동시성은 왜 필요할까? 객체는 처리의 추상화다. 스레드는 일정의 추상화다. - 제임스 O. 코플리엔 동시성이 필요한 이유? 동시성은 “무엇”과 “언제”의 Coupling을 없애는 전략이다.
2건의 항목
프로란 무엇일까? 내가 생각한 프로와 저자의 프로는 무엇이 다를까? Clean Coder 소프트웨어 개발자로서 전설로 알려진 로버트 C. 마틴의 저서이다. 프로란 무엇인지, 그리고 프로로서 어떻게 생각하고 행동해야 하는지에 대해 적혀있다.
프로는 어떤 마음가짐을 가져야 하는가? 함부로 바라지 마라 Professionalism 명예와 긍지 책임과 의무 책임감을 가져라 제대로 테스트하지 않고 물건을 보냈을 때 발생한 사건에 대해 말한다. 제품이 완성됨을 확신하지 않고서 납품하여 큰 문제가 발생했다.
1건의 항목
앱스토어에 실제 앱을 배포해본 사람은 알겠지만, 인증서, provisioning과 같은 개념은 생소하다. 정확하게 알아보자. 원칙 Apple 만이 자신들의 하드웨어(iOS, iPadOS, MacOS etc)에 특정 소프트웨어가 동작하도록 할 수 있다.
1건의 항목
사람이 싫더라도 우리는 그들과 일하는 방법을 배워야 한다. 프로그래머 vs 보통 사람들 프로그래머는 사람들과 같이 일하는게 좋아서 된게 아니다. 일반적으로 사람들 사이의 관계는 뒤죽박죽이고 예측하기 히믇ㄹ다. 우리는 예측한 대로 움직일 때가 즐겁다.
37건의 항목 처음 10개의 태그
level2 : 구현, 또는 동적 계획법을 사용하는 문제이다. 처음 풀이로는 빠르게 풀기 위해서 그냥 단순히 구현을 했다. 입력이 1000 x 1000 이라, 완전 탐색을 수행하더라도 로직을 최대한 덜 쓰도록 짜야된다는 생각을 하면서 짰다.
풀이 하라는 대로 구현했다. 이거 부캠 시험에서 나온것 같은 기분이.
level2 : SQL 사용 생각 간단하다. 예시를 보고 외우던가 나중에 찾아보자.
풀이 실패했다. 뭔가 감은 오는데 기존의 dp처럼 풀려고 하니 문제가 안잡히는 기분. 일단 접근 방법은 맞으니, 엑셀처럼 나열하면서 규칙을 찾는 것이 좋다.
풀이 문자열 정렬의 아이디어는 항상 갖고 있는게 좋을 것 같다. 약간 스킬 적인 측면으로 작용하는데(~~~이거 버그아닌데 스끼린데~~~) 음 일단 보자. 이 문제는 보면 특징이 있다. 일단 다 만드는 것은 잘못된 방법이다.
풀이 아. 시도를 총 세번했다. 해시맵으로 발생할 수 있는 모든 구간에서 시청하고 있는 사람을 저장 아이디어는 좋았으나, 실제 계산할 때 n^2을 피할 수 없음.
풀이 구현 문제라 풀만하긴 한데, 코드가 깔끔히 짠다그래도 아직 부족하다. 다시한번 꼭 짜보자. 리팩토링 연습이다.
풀이 트리 구현을 한번도 안해보다가 처음으로 했다. 첫 시도에서는 바로 구현을 못하고 다른 코드를 참고 했다. 반복적으로 연습하면서 체득을 해야 겠다.
풀이 정말 미쳐버리겠다. 왜 구현을 못하지. 왜 while문으로 구현을 못하는 걸까. 푸는 방법 다 알아놓고. 미쳐버리겠다.
풀이 시뮬레이션 문제이다. 시뮬레이션 문제는 순서를 명확하게 이해하고 이를 지켜주는 것이 매우 중요하다.
2건의 항목
송재준 저자의 Programming Bitcoin을 정리합니다.
고급언어 > 가상 머신 > 실제 머신 이 이해하는 방식으로 추상화된 코드가 구체화 된다. 이 단계에서 가상 머신이 이해할 수 있을 정도의 형태로 변환한 코드를 바이트 코드라 한다. 이렇게 중간단계를 둚으로서 다양한 머신에 대응할 수 있다.
1건의 항목
보통 golang이라 부른다. 컴파일 언어이다. 장점 컴파일 속도가 매우 빨라 인터프리터 언어처럼 쓸 수 있다. 단순함과 실용성을 강조한다. 정적 타입 언어이다. GoRoutine 비동기 매커니즘을 제공한다. 단점 Byte code 생성 언어가 아니다.
2건의 항목
팀이 중요할까 프로젝트가 중요할까? 갈아서 만들었나요? 서로 다른 프로젝트에 속한 사람들이 뒤죽박죽이라면 어떨까? 1에는 A, B 2에는 B, C 거기에 프로그래머 말고 사업분석가, 테스터들도 섞인다면? 한 덩어리로 뭉친 팀 팀이 만들어지는데는 시간이 걸린다.
간단하게 프로젝트 내부를 탐험해보았다면, 각각의 제대로된 정의를 알아야 한다. 앞의 글에서 이어지니, 이해가 안되면 보고 오는 것이 좋다.
1건의 항목
내가 기존에 만들었던 강아지 밥주는 앱(DogFood …)를 기준으로 설명해보겠다. PROJECT_FILE_NAME.xcodeproj 이녀석의 정체는 파일이 아니다. 디렉토리다! 우클릭후 “패키지 내용보기”로 내부를 확인할 수 있다.
1건의 항목
3D를 어떻게 2D로 만들까? 지구 중심에 광원이 있다고 가정, 그림자를 투영 투영면의 종류에 따라 원통 원추(뿔) 방위(천장 원만 사용) 광원의 위치에 따라 심사(정중앙) 평사(표면) 정사(무한이 먼 광원, 평행) 메르카토르 도법 원통, 심사 정형법: 각도를 유지 모든 면이 같은 면적과 같이 보이기 때문에, 지도에서의 각과, 실제 배를 돌리때의 기수각이 같다는 점에서 이러한 단어가 붙음 지도의 위쪽으로 갈수록 실제 면적이 길게 표현됨 특성상 북극, 남극의 경우 투사가 되지 않아 표현자체가 어렵다는 단점이 존재 골피터스 도법 면적이...
1건의 항목
간단하게 property는 member 변수이다. 그런데 Swift에는 다양한 종류의 property가 존재한다. 사실 어떻게 보면 활용방법? 테크닉에 가깝겠다. 어떻게 property를 관리하는 지 안다면, 실제 코드를 간결하고 읽기 좋게 유지할 수 있다.
1건의 항목
간단하게 property는 member 변수이다. 그런데 Swift에는 다양한 종류의 property가 존재한다. 사실 어떻게 보면 활용방법? 테크닉에 가깝겠다. 어떻게 property를 관리하는 지 안다면, 실제 코드를 간결하고 읽기 좋게 유지할 수 있다.
1건의 항목
간단하게 property는 member 변수이다. 그런데 Swift에는 다양한 종류의 property가 존재한다. 사실 어떻게 보면 활용방법? 테크닉에 가깝겠다. 어떻게 property를 관리하는 지 안다면, 실제 코드를 간결하고 읽기 좋게 유지할 수 있다.
1건의 항목
protoc protobuf는 데이터를 구조화하고, 이를 전송하고자 하는데 있어서 유연하고 효율적으로 작성하고 파싱하도록 지원하는 자동화 솔루션이다. json이나 xml을 생각하면 이해가 쉬운데, 사실 조금 다른 부분이 있다.
6건의 항목
HTTP 관련 내용은 사실 읽어도 읽어도 잘 머리에 안남는 것 같다. 사실 전반적인 흐름은 아는데, 뭔가 단어들이 기억에 잘 남는다는 느낌은 안들었었다. 다시한번 정리하면서 반복학습을 할 목적으로 포스팅을 남겨본다.
목적지 컴퓨터의 IP 주소를 이용하여 MAC Address를 찾기 위한 Protocol! ARP 요청 - Ethernet 프레임을 전송하려면, 목적지 컴퓨터의 MAC Address를 알아야 한다.
서로 다른 개체들이 서로 간의 의사소통을 하기 위해 만들어놓은 규약 사람이 대화를 하는 과정에도 일정한 흐름과 규약이 존재한다. 어떠한 객체가 소통하기 위해서는 서로의 방식을 맞추어야 한다.
설명 현재 네트워크에서 다른 네트워크로 최적 경로를 통해 데이터를 전송 경로 정보는 라우팅 테이블에 등록 라우팅 테이블에 경로 정보를 등록하는 방법은 수동 등록과 자동 등록이 있다. 수동 등록은 소규모 네트워크에 적합하다.
이전에 metatype에 대해 흘려들었었는데, 이번에 간단하게 정리해보려한다. metatype이란? Swift에서 우리는 특정 instance의 Type에 접근할 수 있다.
Protocol의 경우 POP라는 개념으로 Apple에서 밀어주는? 개념이다.
1건의 항목
Protocol의 경우 POP라는 개념으로 Apple에서 밀어주는? 개념이다.
2건의 항목
GoF의 디자인 패턴, 원형 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
인터페이스는 왜 필요할까? 그리고 무엇일까? Interface의 사전적 의미 inter-(상호간의) + -face(면) = interface 접해있는 두 물체나 공간 사이의 경계 사용자는 스위치를 키는 버튼에 집중 이걸 누르면 어떤 일이 일어날지를 앎 (what) 어떻게 그런일이 일어나는지는 모름 (how) 실제 동작은 구현 공간에서 일어남 배선의 연결 사용자는 잘 알지 못하는 공간 구현자만 알고 있음 이미 알고 있는 개념 = 함수 함수는 블랙박스임: 호출자는 내부가 어떻게 도는지 이해하려 하지 않는다.
1건의 항목
앱스토어에 실제 앱을 배포해본 사람은 알겠지만, 인증서, provisioning과 같은 개념은 생소하다. 정확하게 알아보자. 원칙 Apple 만이 자신들의 하드웨어(iOS, iPadOS, MacOS etc)에 특정 소프트웨어가 동작하도록 할 수 있다.
3건의 항목
GoF의 디자인 패턴, 프록시 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
Proxy 패턴은 뭘까? 서버에서 들었던 것 같은데, 패턴으로는 어떤 의미가 있는지 알아보자.
프록시란? 대리 응답 프록시(proxy)는 “대리”라는 뜻이다. 그렇다면 어떠한 경우에서 이러한 대리의 개념이 필요할까? 보통은 보안상의 이유로 직접 통신하는 것이 문제가 발생할 경우 이런 방식을 사용한다.
4건의 항목
Apple에서 나온 Reactive Programming Framework인 Combine을 정리합니다.
GoF의 디자인 패턴, 감시자 패턴에 대해 알아본다. 핵심 요약 객체 사이에 일 대 다 의존 관계를 정의해두어, 어떤 객체의 상태가 변할 때, 그 객체에 의존성을 가진 다른 객체들이 변화를 통지받고 자동으로 갱신될 수 있게 만든다.
Observer 패턴, 많이 들어봤다. GoF의 정의로 알아보자. Observer 관찰자, 감시자 변화가 생기면 알아챈다. 다만 이 관찰자는 여러명일 수 있다.
Notification Center는 꽤나 오래전 부터 iOS의 이벤트 전송 매커니즘으로 자리잡았다. 어떤 요소들이 있는지 확인해보자.
2건의 항목
인터넷 공간 상에서 해당 단말기의 고유 주소 Socket을 통해 통신한다는 것은 알았다. 근데 우리가 전화를 걸더라도, 어디에 전화를 걸것인지 알아야 한다. 그걸 대표하는 것이 전화번호이다. 마찬가지로 통신을 하려면, 어디에 통신할 것인지 알려주는 과정이 필요하다.
Network Address Translation (네트워크 주소 변환) 자 위에서 결국 우리는 공유기를 통해서 우리집에 배정된 공인 IP 주소를 가지고 각각의 장치에 배정된 사설 IP로 뿌려서 사용한다는 것을 알게되었다.
2건의 항목
Secure Shell 기존에 Telnet 사용 → 암호화를 통해 안전한 제어 가능, 중간에 가로채도 쓸모 없음 클라이언트와 서버로 분리됨 공개키, 암호키 방식으로 서버에 접속하는 방식이 있음 보다 안전함 → 따로 구글링 할 것 .
공개키 비트코인 주소 형식에 대해 알아본다. 이는 곧 “주소”이다. 비트코인 주소 WIF(Wallet Import Format) 앞에서 공개키와 비밀키, 그리고 서명, 검증 방식에 대해 알아보았다. 그리고 이를 직렬화하는 방법도 배웠다.
4건의 항목
Apple에서 나온 Reactive Programming Framework인 Combine을 정리합니다.
GoF의 디자인 패턴, 감시자 패턴에 대해 알아본다. 핵심 요약 객체 사이에 일 대 다 의존 관계를 정의해두어, 어떤 객체의 상태가 변할 때, 그 객체에 의존성을 가진 다른 객체들이 변화를 통지받고 자동으로 갱신될 수 있게 만든다.
Observer 패턴, 많이 들어봤다. GoF의 정의로 알아보자. Observer 관찰자, 감시자 변화가 생기면 알아챈다. 다만 이 관찰자는 여러명일 수 있다.
Notification Center는 꽤나 오래전 부터 iOS의 이벤트 전송 매커니즘으로 자리잡았다. 어떤 요소들이 있는지 확인해보자.
4건의 항목
Combine이 무엇일까? Apple이 설명하는 것을 들어보자. What is Combine 이벤트 처리 연산자를 결헙하여 비동기 이벤트를 처리하는 방법 일단 비동기 이벤트가 무엇이 있는지부터 알아보자.
Apple에서 공개한 API인 Combine. 이제 Rx에서 Combine으로 많이 넘어간다고 한다. 무엇을 하는 것인지, 왜 좋은지, 바로 써먹기 위한 팁은 무엇이 있는지 알아본다.
Combine에 대해서 실제 사용하다 보니, 이게 도대체 어떤 방식으로 이루어지는 지 궁금했다. 실제 코드를 보지 않으면 명확해지지 않을 것 같아 정리한다.
두번째 글에서는 이해한 RxSwift의 기본 개념을 바탕으로 자주 사용하는 메서드를 알아본다. 무리하게 기억할 필요는 없고, 이렇게 사전 제작된 함수들이 많고, 잘 사용할 경우 유용하다는 사실까지만 이해해도 맛보기로는 충분할 듯 하다.
1건의 항목
동기 다른 블로그 호스팅 서비스(Tistory, Velog)를 사용하면, 내가 온전히 관리하지 못한다는 측면에서 아쉬움이 있었다. Github Page를 Jekyll을 사용해 포스팅해보았지만, 1000개가 넘어가는 시점부터 너무 느려 사용하기가 꺼려졌다.
1건의 항목
발생하는 경우 계정 패스워드를 바꿨는데 로컬 반영이 안된 경우 환경 등의 알지못하는 변경이 영향을 준 경우 해결 방법 git config --unset credential.helper // git config credential.helper store // 해당 Git directory에서 적용 git config credential.helper store --global // 전체 Git에서 적용 Reference push 시 Password 물어보지 않도록 설정하기 .
2건의 항목
Progressive Web App PWA(Progressive Web App)는 웹 애플리케이션을 개발하고 배포하기 위한 접근 방식과 기술 집합을 가리키는 용어입니다.
appsco.pe/developer/splash-screens 해당 사이트에서 스플래시 이미지를 만든다. PWA를 위해 이를 적절한 사이즈로 변환한 뒤, html head에 넣어준다.
87건의 항목 처음 10개의 태그
송재준 저자의 Programming Bitcoin을 정리합니다.
골드5 : 구현 문제이다.
실버2 : 동적계획법 문제이다.
실버2 : 동적계획법 문제이다. 풀이 그냥 합을 구하는 문제이다.
실버1 : DFS 문제이다. 풀이 DFS와 동적계획법이 섞인 문제이다. 일단, 특정 위치까지 갈 수 있는 모든 경우의 수를 구해야 하는데, 그냥 방문할 때마다 count를 늘려준다면, 중복해서 방문하는 곳이 너무 많아 비효율 적이다.
실버1 : 최단거리 문제이다. 생각 모든 경로에 대한 최단 거리를 구해야 한다. 가중치는 양수이자 동일 정점 개수 100개 모든 경로에 대해 최단 거리를 구해야 한다는 점에서 플루이드를 사용할 것이고, O(V^3) 알고리즘에도 통과한 노드 개수이므로 진행한다.
실버2 : BFS 문제이다.
골드4 : dp & DFS 문제이다. 풀이 이게. 접근 방식을 약간 반대로해서 오래걸렸다. 바텀 업 방식으로 사고를 하여, 마지막 지점까지 가는데 있어 4방향의 경로를 더해주어야 한다고 생각했다. 그런데 그렇게 생각을 하니 쉽게 점화식이 떠오르지 않았다.
실버5 : 브루트포스 문제이다.
실버2 : 조합 문제이다. 풀이1 기본적인 조합 문제이다.
3건의 항목
프로는 어떤 마음가짐을 가져야 하는가? 함부로 바라지 마라 Professionalism 명예와 긍지 책임과 의무 책임감을 가져라 제대로 테스트하지 않고 물건을 보냈을 때 발생한 사건에 대해 말한다. 제품이 완성됨을 확신하지 않고서 납품하여 큰 문제가 발생했다.
테스트 전략에 대해 알아본다. 테스트 전략 단위 테스트로는 충분치 않다. 프로 개발 팀이라면 훌륭한 테스트 전략이 필요하다. QA는 오류를 찾지 못해야 한다. 개발팀의 목표는 이거다. 그렇다고 해서 QA와 개발자가 서로 적대적인 관계를 가져야 하는 것은 아니다.
왜 필요할까? V-Diagram 왜 단계적인 테스트가 필요할까? 문제가 발생했을 때, 시간, 의사소통 등의 비용을 줄이기 위함 요구사항 만족함을 증명하는 것 어떤 종류가 있을까? 단위 테스트 테스트가 가능한 최소 단위로 나누어진 모듈, 프로그램, 객체, 클래스 내에서 결함을 찾고 기능을 검증 독립적으로 수행됨 프로그래머가 주도함 코드를 중심으로 수행 이러한 구분은, 어떤 Task냐에 따라 구분이 달라진다.
1건의 항목
QR Decomposition QR 분해의 근본적인 이유는 무엇일까? 기존의 선형대수에 대한 글에서, 행렬은 하나의 공간을 매핑한다고 했다. 그리고 행렬 size가 정사각행렬이고, full rank일 때 n차원 공간을 매핑한다.
1건의 항목
문자열 처리는 파이썬으로 find() isalpha() isalnum() for ~ in list, string으로 하나씩 꺼낼 수 있다. ~ in list, string으로만 하면 t/f 반환한다.
1건의 항목
정렬에 대해 깊게 공부해보자.
1건의 항목
현재 프로젝트에 적합한 간단한 이미지 캐시를 구현하여 사용하였습니다. 기본에 임시로 작업한 이미지 캐시의 경우, 네트워크 요청후 디스크에 저장이 되는 구조로 제작하였습니다.
1건의 항목
정렬에 대해 깊게 공부해보자.
2건의 항목
기억 장치의 동작방법에 대해 이해해보자. 최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자.
운영체제에 대한 정의, 역할에 대해 알아본다. 운영체제는 사용자가 컴퓨터를 사용하기 위해 필요한 소프트웨어이다. 일반적으로 사용하는 모든 프로그램은 운영체제에서 그 자원을 관리한다. 목적 운영체제를 사용하는 가장 큰 목적은 하드웨어의 관리이다.
2건의 항목
String library method #include <string> #include <iostream> using namespace std; int main(){ string word = "good"; word.length(); // 길이 리턴 word.empty(); // 빈 문자열인지 1, 0값 리턴 word.clear(); // 문자열 삭제 word += "-bye"; // 더하기 가능 word[0]; // h word[word.length() - 1]; // 마지막...
확률분포에 대해 이해한다. 왜 배우는가? 실생활에서 결국 엔지니어가 수행하는 역할은, 다양한 문제에 대해 이를 다룰 수 있는 문제로 바꾸는 것에 있다. 확률과 같이 애매하게 보이는 개념을 어떻게 수치화하여, 다룰 수 있는 문제로 바꾸는지에 대한 내용이 대부분이다.
2건의 항목
확률분포에 대해 이해한다. 왜 배우는가? 실생활에서 결국 엔지니어가 수행하는 역할은, 다양한 문제에 대해 이를 다룰 수 있는 문제로 바꾸는 것에 있다. 확률과 같이 애매하게 보이는 개념을 어떻게 수치화하여, 다룰 수 있는 문제로 바꾸는지에 대한 내용이 대부분이다.
확률 변수 여러 값을 무작위하게 가지는 변수 확률 변수는 반드시 확률 분포와 결합되어야 한다. 확률 변수는 이산적일 수도, 연속적일 수도 있다. 이산적일 경우 반드시 정수인 것은 아니다. 연속적인 경우 실수값들과 연관된다.
1건의 항목
컴퓨터를 통하여 문제를 해결하는 가장 중요한 이유 중에는 계속적으로 반복하는 작업을 컴퓨터가 대신 처리하여 주는 것이다. 이런 기능을 반복문이라고 하며, 대부분의 프로그래밍 언어는 다양한 반복문을 제공한다.
2건의 항목
1D Array & Slicing # www.tensorflow.org/api_guides/python/array_ops import tensorflow as tf import numpy as np import pprint tf.set_random_seed(777) # for reproducibility pp = pprint.PrettyPrinter(indent=4) sess = tf.InteractiveSession() t = np.array([0., 1., 2., 3., 4., 5., 6.]) pp.pprint(t) pr...
Rank 행렬은 하나의 공간을 매핑한다고 했다. 방금은 3 x 3 의 행렬에 대해 봤기 때문에, 열벡터 공간과 행벡터 공간이 동일하게 3차원 공간을 매핑하고 있었다. 하지만 행렬이 꼭 정사각행렬이라는 법은 없다.
3건의 항목
JPG(Joint Photographic Experts Group) 정의: 정지 화상을 위해서 만들어진 손실 압축 방법 표준 핵심: 전체적 구조 손실보다 디테일 손실에 둔감하다는 점을 통해 압축 원리: 이미지의 고주파 성분의 일부를 제거함.
PNG(Portable Network Graphics) 핵심: 비손실 압축 방법 원리 Huffman coding를 통한 압축 그렇기 때문에 반복되는 이미지가 등장할 경우 PNG가 보다 효과적 장점: 투명도 사용가능, 비손실 압축, 32비트 트루컬러, 크게 색상 변화가 크지 않은 이미지의 경우 사용하는 것이 좋다.
색상정보가 담긴 픽셀로 표현 JPEG, GIF, PNG 등 .
3건의 항목
Computer Vision의 Task 이중 Object Detection에 해당하는 문제이다. R-CNN region proposal을 진행한다. CNN에 각각 넣는다.
핵심 아이디어 Feature Extraction, classification, bounding box regression까지 한번에 학습할 수 있는 모델을 만들자! Fast R-CNN은 이전 SSP Net이 가지는 한계점을 극복하는 시도에서 출발한다.
핵심 아이디어 Region Proposal도 Network안에 포함시키자! Faster R-CNN의 핵심 아이디어는 Resion Proposal Network(이하 RPN)이다.
1건의 항목
Promise, Rx 등 비동기 처리를 하기 위한 방법은 많다. 이를 배워보기 이전에, 왜 그러한 개념이 나왔는지, 어떠한 방식으로 개선해왔는지를 코드를 고쳐보면서 이해해보는 것이 이 포스팅의 목표이다. 최대한 개조식으로 적으려 노력했다.
1건의 항목
동시성과 깔끔한 코드는 양립하기 아주 어렵다. 그럼에도 불구하고, 동시성은 왜 필요할까? 객체는 처리의 추상화다. 스레드는 일정의 추상화다. - 제임스 O. 코플리엔 동시성이 필요한 이유? 동시성은 “무엇”과 “언제”의 Coupling을 없애는 전략이다.
1건의 항목
Readers-Writers 문제는 대표적으로 공통 데이터베이스에 접근하는 경우가 있다. 하나의 데이터베이스에 여러 프로세스(readers, writers)가 접근하므로, 데이터베이스는 임계구역으로 설정해야한다.
1건의 항목
개요 SORT(Simple Online and Realtime Tracking)은 매우 알고리즘이 간단함에도 불구하고 효과적이고 실용적인 다중 대상 추적 알고리즘이다. IOU를 기반으로 추적된 물체에 대해 association(할당)을 진행하기 때문에 매우 빠르다.
2건의 항목
재귀 호출 함수에서 그 함수를 다시 호출하는 것 재귀함수 재귀호출을 구현한 함수 #include <stdio.h> int sum(int a); int main() { int input, s = 0; printf("양의 정수를 입력하세요 : "); scanf("%d", &input); s = sum(input); printf("재귀함수를 이용한 1부터 %d까지 합 : %d\n", input, s); return 0; } int sum(int a) { if (a &...
Recursion Function Factorial 같은 함수를 구현하기 위해서는, 자기자신의 출력값을 다시 불러야 되는 필요성이 있다. 이것을 재귀함수라 한다. 11. Function Part.
2건의 항목
재귀 호출 함수에서 그 함수를 다시 호출하는 것 재귀함수 재귀호출을 구현한 함수 #include <stdio.h> int sum(int a); int main() { int input, s = 0; printf("양의 정수를 입력하세요 : "); scanf("%d", &input); s = sum(input); printf("재귀함수를 이용한 1부터 %d까지 합 : %d\n", input, s); return 0; } int sum(int a) { if (a &...
Recursion Function Factorial 같은 함수를 구현하기 위해서는, 자기자신의 출력값을 다시 불러야 되는 필요성이 있다. 이것을 재귀함수라 한다. 11. Function Part.
1건의 항목
탐색하는 방법에 대해 알아보자. 검색 문제 n개의 키를 가진 배열 S와 키 x가 주어졌을 때, x=S[i]가 되는 첨자 i를 찾는 것 없다면 오류로 처리한다. 결론 : 이분 검색 알고리즘보다 효율적인 알고리즘은 없다. 이진 검색 상태 공간 트리 순차 검색은 답이없다.
1건의 항목
오늘은 작업 중 내가 모르는 코드를 발견해서 글을 써본다. reduce! reduce(::) 형태만 봐왔었는데 reduce(into::) 형태도 있더라! 알아보자.
29건의 항목 처음 10개의 태그
임시 변수를 없애는 방법을 알아보자.
임시 변수 제거를 계속해보자.
정리한 함수를 다시보자. 편함을 위해 중첩상태가 너무 많아졌다.
우리가 하고 싶었던 HTML을 만들기 위해 계산 단계와 포맷팅 단계를 분리하는 작업을 진행해보자.
만약에 연극 종류가 추가되면 어떻게 될까? 이제 다형성으로 변경할 시점이다. 다형성을 활용해 계산코드 재구성하기 지금까지 구성한 코드를 한번 보자.
마지막으로 변경된 코드를 보며 생각해보자.
이제 리팩터링 전반에 적용되는 원칙 몇 가지를 살펴보자. 리팩터링 정의 리팩터링이라는 개발 용어는 굉장히 두루뭉실한 의미로 통용된다. (많은 개발 용어가 그렇다) 하지만 이를 엄격하게 정의해야 유용하다.
냄새나면 당장 갈아라. 어떻게 하는지에 대해서 지금까지 배웠다. 하지만, “언제” 시작하고 그만할지를 판단하는 것은 또 다른 얘기다. 어떤 “냄새”를 맡았을 때 손을 대야할까? 기이한 이름 이름으로 이게 뭐하는 것인지 딱 볼 수 있게 작성해야 한다.
리팩토링에 있어 테스트 코드는 왜 중요할까? 자가 테스트 코드의 가치 프로그래머들의 대부분의 시간은 코드치는 시간이 아니다. 현상황 파악 / 설계 고민 / 디버깅에 많은 시간을 쓴다. 디버깅의 경우 수정자체는 금방 끝난다. 다만 찾는데 고통스럽다.
카탈로그 설명을 보기전에 어떻게 읽으면 좋은지 알아보자. 리팩터링 설명 형식 이름 개요: 핵심 개념이 무엇인가? 나중에 찾아볼 때, 이게 어떤건지 쉽게 떠올리기 위한 것.
1건의 항목
모든 변수는 객체이다. 파이썬에서 사용하는 변수는 객체를 가리킨다. 여기서 객체란 파이썬에서 사용되는 모든 것 을 의미하는 말이다. 이게 무슨말일까? 이 개념에 대한 직관적인 설명을 잘해둔 페이지가 있어 여기 소개한다.
1건의 항목
오래 기다렸다. ARC가 무엇일까? 자바의 Garbage Collector와는 무엇이 다를까? 장단점은 무엇일까? 어떤 원리로 동작하는 것일까? 발생하는 문제점은 무엇일까? 어떻게 해결할 수 있을까? 이러한 내 궁금증들을 담았다.
4건의 항목
Aliasing (Reference Variable) 기본적으로, 우리가 선언된 변수를 다른 변수에 할당하게 되면 이 값을 복사해서 사용하는 셈이 된다.
Pass by Reference 내가 클래스를 만들고, 그 클래스를 바탕으로 객체를 만들었다. 이때, 이 클래스에 연결되어 있는, 함수를 메서드라 했다.
Swift는 객체의 느낌으로 사용하는 3개의 개체가 있다. struct, class, enumeration이 그것이다. struct는 apple에서 권장하고, 실제로도 대체하는 것이 좋다고 생각되는 자료구조이고, enum의 경우 다른 언어보다 기능이 많이 추가되었다.
처음에 Swift 공부할 때는 정말 아무것도 몰라서, 힘들었던 경험이 있다. 좋은 기회로 한번더 정리할 시간이 생겼다. 다시한번 전체적으로 훑는 시리즈를 만들어본다. 먼저, Swift가 어떤 언어적 특징을 갖는지, 기본 문법은 어떤지 알아보는 시간을 가지려 한다.
1건의 항목
한다, 하지 않는다 둘뿐이다. 중간은 없다. 아니라고 말하기 시간을 쪼는 관리자와 개발 팀장간의 대화를 소개하며 시작한다. 관리자는 이번주 안에 마치라 한다. 개발자인 나는 4주가 소요된다고 말한다.
11건의 항목 처음 10개의 태그
문자열 처리는 파이썬으로 find() isalpha() isalnum() for ~ in list, string으로 하나씩 꺼낼 수 있다. ~ in list, string으로만 하면 t/f 반환한다.
정규 표현식은 다양한 언어에서 사용이 가능하다. 이 글에서는 파이썬을 기반으로 정규 표현식을 확인해 보도록 하자. import re p = re.compile('ab*') re.compile을 사용하여 정규 표현식(위 예에서는 ab*)을 컴파일한다.
개요 앞의 글에서 우리는 컴파일 된 pattern 객체의 메서드를 공부했다. 이 메서드에는 match, search, findall, finditer가 있었다. 해당 메서드들은 검색이 된 경우 match 객체를 리턴했다.
개요 지금까지는 간단한 정규식을 살펴 보았지만, 실제로 존재하는 다양한 문자열에서 정보를 뽑아내기 위해서는 추가적인 옵션이 필요하다. 예를 들어 쇼핑몰의 상품 리뷰를 사용자가 작성했다고 한다. 우리는 여기서 핵심적인 단어를 뽑아내야 한다.
앞에서 정규식을 표현할 때 우리는 \ 문자를 사용했다. 하지만 내가 정규식을 작성하는 데 있어서 \문자 자체를 찾고 싶다면 어떻게 해야할까? \section 이렇게 정규식을 작성하게 되면 문제가 발생한다.
특정 문자열이 반복되는지에 대해서 알기 위해서는 어떠한 정규식을 작성해야 할까? 우리가 앞에서 배운 내용으로는 할 수 없다. 이렇게 특정 문자열이 단위로 구성되어 검색을 진행하고 싶을 때 사용하는 것이 그루핑이다.
개요 Lookahead Assertions는 이해하기가 어렵다. 하지만 예시와 함께라면 어떤 경우에 이를 사용해야 하는지 알 수 있을 것이다.
개요 sub 메서드를 사용하면 정규식과 매치되는 부분을 다른 문자로 쉽게 바꿀 수 있다.
Greedy는 알고리즘 문제를 풀 때 보았던 용어이다. 이 용어는 어떤 의미로 사용이 될까? 무언가 탐욕적으로 한다는 의미일 것이다. 다음과 같은 문자열에서 처음 나오는 tag를 검색하고 싶다 해보자.
개념 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 쓰이는 형식언어 프로그래밍을 다루다 보면 가장 많이 만나게 되는 것이 문자열이다. 모든 것이 문자열로 나타나 있고, 이것을 기반으로 한 규칙으로 프로그램이 구동되기 때문이다.
1건의 항목
핵심 아이디어 Region Proposal도 Network안에 포함시키자! Faster R-CNN의 핵심 아이디어는 Resion Proposal Network(이하 RPN)이다.
2건의 항목
기억 장치의 동작방법에 대해 이해해보자. 최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자.
운영체제의 사용자모드와 관리자모드, 하드웨어 보호 관해서 알아본다. 1.
2건의 항목
3개의 Feature를 가진 회귀모델 # Lab 4 Multi-variable linear regression import tensorflow as tf tf.set_random_seed(777) # for reproducibility x1_data = [73., 93., 89., 96., 73.] x2_data = [80., 88., 91., 98., 66.] x3_data = [75., 93., 90., 100., 70.] y_data = [152., 185., 180., 196., 142.] # placeholders for ...
# Lab 5 Logistic Regression Classifier import tensorflow as tf tf.set_random_seed(777) # for reproducibility x_data = [[1, 2], [2, 3], [3, 1], [4, 3], [5, 3], [6, 2]] y_data = [[0], [0], [0], [1], [1], [1]] # placeholders for a tensor that will be always fed.
1건의 항목
Overfitting? Train data set에서는 accuracy가 높게 나오지만, Test data set에서 accuracy가 낮게 나오는 현상 Layer수가 늘어날 수록 training err는 떨어진다.
1건의 항목
XOR 문제에서 이제 NN을 공부하는데 있어서 sigmoid 함수를 통과했던 것을 우리는 Activate Function이라고 부를 것이다.
1건의 항목
디자이너와 일을 하다보면, image의 색상 자체를 변경해주길 바라는 경우가 있다.
1건의 항목
테이블 뷰의 reorder 버튼을 변경해야 하는데, API가 없어 고생했던 경험을 공유한다.
2건의 항목
기본 요소 송신기 전달 매개체(매질) 수신기 신호 아날로그 연속적인 값이기 때문에, 노이즈에 의해 영향을 받을 수 있다. 즉, 값의 변화가 반영될 여지가 크다. 애초에 연속적인 값이기 때문.
비트 0, 1 비트가 모여 데이터 구성 비트를 주고 받는 것이 통신의 본질 바이트 = 8비트 워드 = 1바이트가 2개 (16비트) 데이터가 어떻게 전기 신호로 전달? 데이터가 전달되지 않을 때 전기적 신호가 존재 Clock 신호 CPU는 해당 신호에 맞춰 일을 처리한다.
2건의 항목
무심코 사용하는 많은 비동기 함수들은 사실 변화의 과정을 겪은 결과들이다. 네트워크 I/O API가 어떻게 변화되어 왔는지 알아보자. 한눈에 보기 network API를 사용하다보면 자연스레 머리에 이런 그림이 떠오른다.
특정 데이터를 서버로부터 받고 싶다고 하자. 일반적인 REST API를 사용한다면 서버에 GET 요청을 하고, 그 결과로 json 데이터를 받을 것이다. 이렇게 일반적으로 가장 많이 사용하는 Server 통신 방식이 Request-Driven 방식이라 생각하면 된다.
1건의 항목
Swift에서 Struct, Class, Enum을 초기화할 수 있는 Initializer에 대해서 알아보자. 이 부분에서 class 초기화는 다른 언어의 초기화 과정과 약간 다른 부분이 있다. 해당 내용은 좀 길어질 수 있어 다음 포스팅으로 넘겼다.
1건의 항목
Identifier Reserved Words 사용가능 문자 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789 예약어는 안된다.
1건의 항목
tableView를 다루다보면 셀의 크기를 정하는 일이 상당히 귀찮을 때가 있다. 어떻게 하면 동적인 cell을 만들 수 있는지 확인해보자. Working with Self-Sizing Table View Cells 애플에서는 일단 이 옵션을 사용하지 말라고 한다.
3건의 항목
개요 Pretrained model을 사용하거나 Transfer Learning 을 사용하는 모델들에 대해서 읽을 때 Backbone이 되는 CNN 모델들이 몇 개 있다.
개요 structure of mask RCNN Facebok AI Research (FAIR), Kaiming He, 24 Jan 2018 Marr Prize at ICCV 2017 object instance segmentation을 위한 프레임 워크이다.
Fast Forward (Resnet) ResNet (34, 50, 101): Residual CNNs for Image Classification Tasks 출력단을 빼서 순차적으로 넣지 않고 먼 레이어에다가 함께 넣어버린다.
2건의 항목
앞 글에서 간단하게 소개했지만 Responder Chain은 간단하게 알고 넘어갈 만한 것이 아니다.
ViewController는 계층을 이루면서 구성된다. 그 중 대표적으로 알려진 것이 NavigationController, TabBarController 이다.
2건의 항목
Functor란 무엇인가? Functor Functor: 임의의 타입 T, U가 주어졌을 때, 연산 lift이 정의되는 01.
순수 함수형 프로그래밍언어 Haskell에는 Either라는 자료구조가 있다. 둘 중 하나의 타입을 가질 수 있는 경우 사용하는 자료구조라 한다. 이 Either 자료구조에 영감을 얻어 태어난 것이 Swift의 Result라 한다.
1건의 항목
개체 지향을 얘기하면 꼭 나오는 단어인 예외에 대해서 알아본다. Exception 사실 예외는 개체지향의 일부가 아니다.
1건의 항목
프록시란? 대리 응답 프록시(proxy)는 “대리”라는 뜻이다. 그렇다면 어떠한 경우에서 이러한 대리의 개념이 필요할까? 보통은 보안상의 이유로 직접 통신하는 것이 문제가 발생할 경우 이런 방식을 사용한다.
1건의 항목
What is Padding Convolution 전 게시물에서 3x3 짜리 필터를 걸었을 때, 4x4짜리가 나왔다. 어떻게 보면 당연할 결과이다.
6건의 항목
많은 수의 엔지니어와 nested states를 관리하기 위한 mobile app Cross-platform Architecture RIBs의 이름은 Router, Interactor, Builder의 약자이다.
간단한 구조 일단 RIB의 구조는 위와 같다.
그럼 이번에는 Router에서 하위 RIB의 build()를 호출할 때 어떠한 순서로 진행되는지 알아보자. 먼저, 동적 의존성이 있을 경우 component를 생성해준다.
RIB과 통신하기 생성시에 어떠한 흐름으로 동작하는지 알았다면, 이번에는 RIB간의 소통을 알아볼 차례다.
Deep link를 적용하기 위해서는 AppDelegate에서 응답을 받아 처리해야 한다. 해당 내용은 그림으로 그리기가 너무 벅차 말로 간단하게 대체하려 한다.
일단 해당 내용을 다 따라가면서 쳐보는 것을 추천한다. 아무래도 framework라고 공식 문서에 적혀있는 것으로 보아 진입장벽이 있을 것으로 보인다. 오히려 핵심 아이디어만 가져와서 사용하고, 유연하게 적용하는 것이 좋지 않을까하는 생각이다.
1건의 항목
왜 필요할까? V-Diagram 왜 단계적인 테스트가 필요할까? 문제가 발생했을 때, 시간, 의사소통 등의 비용을 줄이기 위함 요구사항 만족함을 증명하는 것 어떤 종류가 있을까? 단위 테스트 테스트가 가능한 최소 단위로 나누어진 모듈, 프로그램, 객체, 클래스 내에서 결함을 찾고 기능을 검증 독립적으로 수행됨 프로그래머가 주도함 코드를 중심으로 수행 이러한 구분은, 어떤 Task냐에 따라 구분이 달라진다.
5건의 항목
Agility Robotics가 SPAC 합병으로 나스닥에 오르려는 과정을, IPO 투자설명서와 합병 계약 원문으로 단계별로 짚습니다. 기업가치 25억 달러가 무슨 뜻이고 아직 무엇이 안 정해졌는지.
언어 모델처럼 '하나의 큰 모델'로 여러 로봇을 움직이겠다는 흐름을, NVIDIA의 오픈 모델·서베이 논문·연구 발표를 근거로 짚습니다. 무엇이 확인됐고 어디가 아직 병목인지.
물리 세계를 인식하고 개입하는 AI를 가리키는 'Physical AI'가 무슨 뜻인지, 왜 지금 로봇용 파운데이션 모델과 함께 떠올랐는지, 그리고 병목이 어디인지를 1차 자료로 짚습니다.
로봇을 가상에서 훈련시켜 실물로 옮길 때 생기는 성능 저하, sim-to-real gap이 무엇이고 왜 Physical AI의 핵심 병목인지 짚습니다. 아직 자라는 중인 문서입니다.
GPU 회사에서 AI 인프라의 축으로 올라선 NVIDIA를 어떻게 읽어야 하는지, 매출이 데이터센터 한 곳에 얼마나 쏠려 있는지와 Physical AI 전략을 중심으로 관찰 축을 잡습니다.
2건의 항목
Descripter 이미지를 비교하기 위해 동일한 방법을 통해 하나의 비교 대상으로 만드는 것 두 가지 이미지가 있다. 이 두가지 이미지가 비슷한지 아닌지를 구분하기 위해 만든 것이 descripter이다.
핵심 아이디어 Feature Extraction, classification, bounding box regression까지 한번에 학습할 수 있는 모델을 만들자! Fast R-CNN은 이전 SSP Net이 가지는 한계점을 극복하는 시도에서 출발한다.
1건의 항목
개요 structure of mask RCNN Facebok AI Research (FAIR), Kaiming He, 24 Jan 2018 Marr Prize at ICCV 2017 object instance segmentation을 위한 프레임 워크이다.
1건의 항목
핵심 아이디어 Feature Extraction, classification, bounding box regression까지 한번에 학습할 수 있는 모델을 만들자! Fast R-CNN은 이전 SSP Net이 가지는 한계점을 극복하는 시도에서 출발한다.
1건의 항목
운영체제에 대한 정의, 역할에 대해 알아본다. 운영체제는 사용자가 컴퓨터를 사용하기 위해 필요한 소프트웨어이다. 일반적으로 사용하는 모든 프로그램은 운영체제에서 그 자원을 관리한다. 목적 운영체제를 사용하는 가장 큰 목적은 하드웨어의 관리이다.
6건의 항목
Train/Test Dataset 정확도를 측정하는데 있어서 앞에서는, 모델을 훈련하는 데 사용했던 데이터를 가지고서 평가했다. 그런데 사실은 그렇게 수행하면 안되는 것이 당연하다.
실수 표현 부동 소수점으로 표현한다. 지표 + 가수로 표현된다. 왜 쓰는가? 고정 소수점으로 쓸 경우, 큰 수 (10^23) 과 같은 수를 표현하기 위해 많은 양의 비트가 필요하게 된다.
반올림 때문에 값이 너무 커져서 표현할 수 없는 현상을 말한다. 이번에는 값이 너무 커져서 ∞, -∞로 근사되는 현상을 말한다. 마찬가리로 NaN으로 처리된다.
디지털 컴퓨터에서 연속적인 대상을 다루는 수학을 처리할 경우 근본적인 문제가 있다. 무한에 가까운 정보를 정해진 비트 패턴으로 표현해야 한다는 것이다. 이는 거의 모든 실수의 경우 근사 오차가 발생한다는 것을 암시한다.
반올림 때문에 값이 0이 되는 현상을 말한다. 값이 잘못해서 정확히 0이 되면 문제소지가 많다. 0으로 나누기. log0 계산. (값이 발산함) log0은 음의 무한대로 발산한다. 근데 실제 계산에서는 NaN(Not a Number)로 처리한다.
Motivation of Pivoting 가우스 소거법과, 가우스-조르당 방법에서 대각행렬을 기준으로 수행한다는 것은 명백하다. 우리는 그래서 이 대각 행렬의 요소를 Pivot 이라 부른다.
1건의 항목
CPU 스케쥴링에 대해 알아본다. CPU가 하나의 프로세스 작업이 끝나면 다음 프로세스 작업을 수행해야 한다. 이때 다음 프로세스가 어느 프로세스인지를 선택하는 알고리즘을 CPU Scheduling 알고리즘이라고 한다.
2건의 항목
디바이스가 가지고 있는 고유의 물리적, 하드웨어 주소 패킷에 들어오는 mac 주소를 보고 적어둔 테이블을 기반으로 사설 IP주소를 알아낸다음 해당 디바이스로 데이터를 넘겨준다.
설명 현재 네트워크에서 다른 네트워크로 최적 경로를 통해 데이터를 전송 경로 정보는 라우팅 테이블에 등록 라우팅 테이블에 경로 정보를 등록하는 방법은 수동 등록과 자동 등록이 있다. 수동 등록은 소규모 네트워크에 적합하다.
1건의 항목
CPU 스케쥴링에 대해 알아본다. CPU가 하나의 프로세스 작업이 끝나면 다음 프로세스 작업을 수행해야 한다. 이때 다음 프로세스가 어느 프로세스인지를 선택하는 알고리즘을 CPU Scheduling 알고리즘이라고 한다.
1건의 항목
TLS 위에서 동작하는 HTTP 종단간 암호화 (E2E 암호화) HTTP 메시지를 암호화하여 주고 받음 보안이란? 서버 인증 클라이언트는 자신이 진짜 서버임을 알 수 있어야 함 클라이언트 인증 서버는 자신이 진짜 사용자임을 알 수 있어야 함 무결성 클라이언트와 서버는 그들의 데이터가 위조되는 것으로 부터 안전해야 함 암호화 클라이언트와 서버는 도청 걱정 없이 대화가 가능해야 함 동작 방식 서버가 클라이언트에게 인증서를 보내어 자신을 증명한다.
1건의 항목
컴파일 과정을 마친 응용 프로그램이 사용자에 의해서 실행되어지는 때를 의미 런타임 에러는 이미 컴파일이 끝난 상태에서, 의도치 않은 예외 상황(메모리 부족, 0나누기, Null 참조)으로 인해 발생하는 오류를 말한다.
3건의 항목
RunLoop이란 무엇일까? RunLoop Run loop은 일단 Thread와 관련된 녀석이다. 간단하게 말하면, Run loop은 event를 처리하기 위해 만들어진 loop이다. Timer 또한 함께 처리한다.
이전 글에서 RunLoop에 대해 알아보았다. Timer도 같이 처리한다 했었는데, 이번에는 Timer에 대해서 알아보려한다. Timer 특정 시간 간격이 지난 후, Target 객체로 메시지를 전송한다.
iOS 화면 업데이트는 어떻게 되는 걸까? draw, layoutIfNeeded, setNeedsLayout 등. 이해가 안가는 것들이 너무 많았다.
3건의 항목
Promise, Rx 등 비동기 처리를 하기 위한 방법은 많다. 이를 배워보기 이전에, 왜 그러한 개념이 나왔는지, 어떠한 방식으로 개선해왔는지를 코드를 고쳐보면서 이해해보는 것이 이 포스팅의 목표이다. 최대한 개조식으로 적으려 노력했다.
두번째 글에서는 이해한 RxSwift의 기본 개념을 바탕으로 자주 사용하는 메서드를 알아본다. 무리하게 기억할 필요는 없고, 이렇게 사전 제작된 함수들이 많고, 잘 사용할 경우 유용하다는 사실까지만 이해해도 맛보기로는 충분할 듯 하다.
맛보기의 마지막으로, 간단하게 프로젝트에 적용해보자. MVVM과 찰떡인 RxSwift를 적용해보면서 아키텍쳐와 사용방법에 대해 익숙해져보자. 프로젝트 개요 버튼을 누르면 값이 변경되고 아래에 총 금액이 나타난다.
1건의 항목
인덱스로 Array 아이템을 탐색하다보면 항상 마주하는 것이 있다. Fatal error: Index out of range. 잘못하면 런타임에 애플리케이션이 바로 죽어버리기 마련이다. 아무리 염두에 둔다하더라도 우리는 사람인 이상 실수를 하기 마련이다.
1건의 항목
모집단을 추정하기 위한 표본을 추출하는 방법에 대해 알아본다. 표본 추출 단순 랜덤 추출 단순히 랜덤하게 모집단에서 추출하는 방법이다. 집단의 분포가 불균형할 경우 모집단의 특성을 대변하지 못한다는 단점이 있다.
1건의 항목
모집단을 추정하기 위한 표본을 추출하는 방법에 대해 알아본다. 표본 추출 단순 랜덤 추출 단순히 랜덤하게 모집단에서 추출하는 방법이다. 집단의 분포가 불균형할 경우 모집단의 특성을 대변하지 못한다는 단점이 있다.
1건의 항목
Shadow를 보다가 scale에 대해서 알게된 내용을 적어본다. 정리 retina display가 나오면서 화면의 기본단위를 논리적으로 정의된 것을 사용하게 되었다. Point가 그것이다.
2건의 항목
프로그래밍 사용자가 어떤 값을 컴퓨터에 넣고(입력) 처리한 결과를 사용자에게 다시 제공(출력)하는 것 graph LR; A[Input] --> B{Function} B --> C(Output) 입출력 함수 표준 입출력 함수: 키보드와 모니터를 통해 자료를 입출력 파일 입출력 함수: 특정한 파일을 통해 자료를 입출력 저급 입출력 함수: 운영체제 내, 시스템 호출을 통해 자료를 입출력 표준 입출력 함수 형식화된 입출력 printf() 함수 표준 출력 장치인 모니터로 자료를 출력 도스창에 실행결과를 표시할 때 사용 제어 문자열...
Aliasing (Reference Variable) 기본적으로, 우리가 선언된 변수를 다른 변수에 할당하게 되면 이 값을 복사해서 사용하는 셈이 된다.
3건의 항목
운영 체제가 하는 일을 간단하게 알아보자. 최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. 운영체제가 하는 일 접근 제어 + 동기화 + 관리 전산 자원을 관리한다. 대표적인 전산 자원은 CPU, RAM 등이 있다.
CPU 스케쥴링에 대해 알아본다. CPU가 하나의 프로세스 작업이 끝나면 다음 프로세스 작업을 수행해야 한다. 이때 다음 프로세스가 어느 프로세스인지를 선택하는 알고리즘을 CPU Scheduling 알고리즘이라고 한다.
하드 디스크의 구조를 바탕으로 스케쥴링을 하는 방법에 대해 알아본다. 1. 디스크 스케줄링 보조기억장치는 현재 여러 가지 존재하지만 아직까지는 하드 디스크가 주로 사용된다. 하드 디스크의 구조는 앞서 살펴봤듯이 위 그림과 같다.
2건의 항목
이전 글에서 Scheme에 대해서 알아보았다. 하지만 실제로 어떻게 사용하는 건지 잘 모른다. 이번 글에서 알아보도록 하자. Scheme 알아보기 프로젝트를 하나 만들어주고, Product -> Scheme -> Edit Scheme 들어가자.
Target Xcode의 빌드를 통해 생성된 최종 Product Framework Application 등등 일반적으로 하나의 모듈 또는 앱을 의미한다. 보통 프로젝트 생성시 하나만 생성되나, 목적에 따라 하나의 프로젝트에 여러개의 Target을 생성할 수 있다.
1건의 항목
서명 역시 검증을 위해 전파될 필요가 있다. 즉, 직렬화가 필요하다. DER(Distinguished Encoding Rules) 서명에 대해 앞에서 공부했을 때 핵심은 r, s의 값이었다.
1건의 항목
비트코인 스크립트는 무엇일까? Smart Contract 비트코인이 전송되는데 있어 어떠한 계약을 걸 수 있다. 그걸 스마트 컨트랙트이라고 한다. 그리고 그 계약을 서술하는 프로그래밍 언어가 스크립트이다. 스크립트는 스택 기반의 스크립트 언어이다.
1건의 항목
트랙잭션 출력에 대해 알아보자.
6건의 항목
골드4 : 이분 탐색 문제이다. 생각 어려웠다. 여러가지 배열이 섞이고, 계산하는 방법을 생각하지 못했다. 이 문제를 풀면서 배운 것은, 정말 컴퓨터처럼(센다..) 생각해야 된다는 것.
실버3 : 이진 탐색 문제이다. 풀이 예산 금액은 최대예산과 아예 안주는(0원) 방법이 있다. 따라서 0과 max금액을 양 끝으로 잡는다.
실버2 : 파라메트릭 서치 문제이다. Root 찾기 처음에 또다시 해시로 풀려고 하다가, 중간에 입력값의 범위가 후덜덜한 것을 보고 풀이 방법을 바꾸었다. 이 문제를 그냥 linear하게 풀려고 하면 100000번을 linear하게 탐색해야 하기 때문에 터져버린다.
풀이1 실버5 : 브루트포스 문제이다. Code // // main.swift // CodingTest // // Created by 최완식 on 2021/08/15.
실버1 : 완전 탐색 문제이다. 풀이 매우 막 푼 풀이. 좋지 않다.
점, 선, 면 Box로 만든 뒤에 저장 저장은 어떻게? Grid 전체 공간을 Tessellation하여 셀로 나누고, 데이터를 셀에 넣는 방식 Tessellation 일정한 형태의 도형들로 평면을 빈틈없이 채우는 것을 말함 a.k.a 쪽매맞춤 쪽매붙임 공간을 다 특정도형으로 쪼개고, 또 그 안에서 쪼개는 방식으로 저장하는 것 무조건적으로 다 분할해야 함 QuadTree 전체 공간을 재귀적으로 가로/세로 2등분하여 4개의 자식 노드를 가진 트리 구조를 사용하는 공간 인덱스 4개의 노드를 가지도록 분할하여 저장 특정 geometry가 ...
1건의 항목
Progressive Web App PWA(Progressive Web App)는 웹 애플리케이션을 개발하고 배포하기 위한 접근 방식과 기술 집합을 가리키는 용어입니다.
1건의 항목
비밀키, 공개키, 서명, 그리고 검증 방법까지 알아보았다. 하지만 이러한 값을 가지고 있기만 해서는 결제라는 행위가 이루어질 수 없다. 어딘가로 보내야 한다. 그때 필요한 기술인 직렬화를 알아보자.
1건의 항목
암호학에서 중요하게 사용되는 타원곡선에 대해 알아보자. 왜 해당 곡선을 사용할까? 타원곡선 y^2 = x^3 + Ax + B 위의 방정식의 형태로 나타나는 곡선 타원의 둘레를 구하기 위한 적분, 이의 역함수를 구하는 과정에서 유래했다.
1건의 항목
Reference Programming Bitcoin by Jimmy Song(O’Reilly). Copyright 2019 Jimmy Song, 978-1-492-03149-9 programmingbitcoin .
1건의 항목
클라우드 사업자조차 고객 VM의 메모리를 들여다볼 수 없게 만드는 기밀 컴퓨팅이 무엇인지, AWS의 새 발표와 사용자 가이드로 그 증명(attestation) 구조를 짚습니다.
2건의 항목
플래티넘5 : 세그먼트 트리 문제이다. 생각 전형적인 세그먼트 트리 문제이다. 구간에 대한 합을 연속된 쿼리로 물어보는 경우인데, 이런 경우 단순하게 짜면 그냥 펑!이다.
플래티넘5 : 세그먼트 트리 문제이다. 생각 01234564175298 입력값이 이렇게 주어진다고 생각해보자. 이 상태에서 3~6까지의 최소값을 구하는 것은, 단순한 방법으로 구해도 O(n^2)으로 풀 수 있다.
4건의 항목
Task Segmentation semantic segmentation은 이미지 내에 있는 물체들을 의미 있는 단위로 분할해내는 것이다. 좀 더 구체적으로 이야기하면, 이미지의 각 픽셀이 어느 클래스에 속하는지 예측하는 것이다.
개요 Noh, H., Hong, S., and Han, B. Learning Deconvolution Network for Semantic Segmentation. ICCV, 2015.
개요 앞서 알아본, FCN에서 발생하는 문제를 Dilated Convolution으로 해결하겠다는 논지이다.
개요 structure of mask RCNN Facebok AI Research (FAIR), Kaiming He, 24 Jan 2018 Marr Prize at ICCV 2017 object instance segmentation을 위한 프레임 워크이다.
1건의 항목
정렬에 대해 깊게 공부해보자.
1건의 항목
개요 Noh, H., Hong, S., and Han, B. Learning Deconvolution Network for Semantic Segmentation. ICCV, 2015.
3건의 항목
프로세스 동기화 도구에 대해 알아본다. Semaphore(세마포) Semaphoresms 깃발이라는 네덜란드 단어이다. 옛날에는 기찻길에서 공유하는 길이 있을 때, 깃발 표식으로 오고감의 신호를 주고 받았다.
동시성과 깔끔한 코드는 양립하기 아주 어렵다. 그럼에도 불구하고, 동시성은 왜 필요할까? 객체는 처리의 추상화다. 스레드는 일정의 추상화다. - 제임스 O. 코플리엔 동시성이 필요한 이유? 동시성은 “무엇”과 “언제”의 Coupling을 없애는 전략이다.
이제 우리는 동시성 프로그래밍을 할 수 있다! 필요한 내용들을 어느정도 배웠다고 할 수 있다. 하지만, 동시성 프로그래밍이 어려운 이유는 별도의 작업흐름으로 공유 데이터에 접근하면서 발생하기 때문이다.
7건의 항목
2026년 6월 말 NVIDIA가 SEC에 낸 실적·공시를 읽고, 분기 매출 816억 달러라는 숫자와 회사가 붙인 "AI 인프라 리더십" 프레이밍을 갈라서 짚습니다.
NVIDIA의 분기 매출 816억 달러가 데이터센터에 얼마나 쏠려 있는지, SEC에 제출된 부문별·시장별 숫자로 직접 확인합니다.
기업이 설비에 돈을 쏟았다 줄였다 하는 자본지출 사이클이 무엇이고, 왜 AI 인프라 수요와 반도체 실적을 읽는 축이 되는지 짚습니다. 대형 클라우드 사업자들의 최근 투자 숫자로 지금 사이클이 어디쯤인지도 함께 살펴봅니다.
GPU 회사에서 AI 인프라의 축으로 올라선 NVIDIA를 어떻게 읽어야 하는지, 매출이 데이터센터 한 곳에 얼마나 쏠려 있는지와 Physical AI 전략을 중심으로 관찰 축을 잡습니다.
NVIDIA 매출의 절반 가까이가 소수 대형 클라우드의 지갑에서 나온다는 쏠림을 근거로, 이 회사의 단기 실적을 흔드는 진짜 변수는 칩 경쟁력이 아니라 고객의 투자 계획이라는 주장을 짚습니다.
오늘은 두 개의 숫자를 다시 읽습니다. NVIDIA의 분기 매출 816억 달러가 실은 소수 대형 클라우드의 지갑에 매여 있다는 이야기와, 높아 보이는 원·달러 환율의 주어가 '한국'이 아니라 '달러'라는 이야기. 무엇을 보면 이 판정이 뒤집히는지까지 짚습니다.
NVIDIA의 주가와 시가총액·PER 같은 밸류에이션 숫자가 지금 어디 있는지 한자리에서 봅니다. 무엇이 움직이면 다시 들여다볼지 짚습니다.
1건의 항목
Actor isolation Actor의 isolation은 actor type의 근본적인 동작이다. Swift language model에서 어떻게 Actor가 actor 바깥쪽에서 들어오는 비동기 interaction에 대해 고립을 보장하는지 에대해 알아보자.
1건의 항목
Progressive Web App PWA(Progressive Web App)는 웹 애플리케이션을 개발하고 배포하기 위한 접근 방식과 기술 집합을 가리키는 용어입니다.
1건의 항목
이번엔 트랙잭션 입력에 대해 알아보자.
1건의 항목
다음으로 또 많이 쓰이는 Sequence Diagram에 대해 알아보자. 해당 글의 사진 자료는 외부 블로그를 많이 참고했다.
5건의 항목
비밀키, 공개키, 서명, 그리고 검증 방법까지 알아보았다. 하지만 이러한 값을 가지고 있기만 해서는 결제라는 행위가 이루어질 수 없다. 어딘가로 보내야 한다. 그때 필요한 기술인 직렬화를 알아보자.
서명 역시 검증을 위해 전파될 필요가 있다. 즉, 직렬화가 필요하다. DER(Distinguished Encoding Rules) 서명에 대해 앞에서 공부했을 때 핵심은 r, s의 값이었다.
비밀키를 직렬화하는 방법을 알아보자. 비밀키 직렬화 비밀키를 직렬화할 이유는 그닥 없다. 네트워크로 전파할 일이 없기 때문이다. 비밀키 전파는 지갑이 털릴 수 있는 위험이 매우 크다.
protoc protobuf는 데이터를 구조화하고, 이를 전송하고자 하는데 있어서 유연하고 효율적으로 작성하고 파싱하도록 지원하는 자동화 솔루션이다. json이나 xml을 생각하면 이해가 쉬운데, 사실 조금 다른 부분이 있다.
Serialization & Deserialization 데이터 구조나 오브젝트 상태를 동일하거나 다른 컴퓨터 환경에 저장(이를테면 파일이나 메모리 버퍼: persistence)하고 나중에 재구성할 수 있는 포맷으로 변환하는 과정 쉽게 생각하면, 내가 가지고 있는 이 객체 구조를 어딘가에 저장할 수 있도록 변환하는 과정을 말한다.
3건의 항목
내, 외부 네트워크 구간 사이에 위치한 중간 지점 접근 제한을 수행 외부 네트워크에서 직접 접근이 가능 설명 회사에서는 서비스를 제공하는 서버와 내부에서만 동작해야하는 서버가 있다.
프록시란? 대리 응답 프록시(proxy)는 “대리”라는 뜻이다. 그렇다면 어떠한 경우에서 이러한 대리의 개념이 필요할까? 보통은 보안상의 이유로 직접 통신하는 것이 문제가 발생할 경우 이런 방식을 사용한다.
On premise 서버를 운영하기 위해 서버를 사내 랙에 설치하거나 데이터 센터에 두는 방식 Cloud 월 정액 기반으로 사용한 만큼 요금을 지불하는 방식 선택 방법 시스템 자원 사용량을 근간으로 가격을 책정하기 때문에, 잘생각 하지만 시스템 설비를 책정할 때, 최대 용량을 기준으로 하기 때문에 비효율적 구 분클라우드온프라미스 (기존 서버 구축방식)초기도입비용월정액기반으로 사용한만큼 요금을 지불일회성 비용으로 구매시 많은 비용예산이 소요됨인력운영비시스템 엔지니어의 업무 감소시스템 엔지니어의 업무 증대 ( 서버 운영 및 관리/ 전산...
1건의 항목
운영체제의 주요 서비스: 프로세스, 메모리, 파일관리, 시스템 호출에 대해 알아본다. 운영체제의 주요 서비스는 하드웨어 자원을 각 사용자 애플리케이션에 적절히 분배해주는 것이다.
1건의 항목
아무 생각없이 코딩하다가(…) 의존성 주입을 그냥 property 주입으로 하고 있었다. 당연히 Storyboard면 안되지 않았었나? 하는 무지성 코드질을 하다 지적받고 떠올랐다.
1건의 항목
물리 계층 (Physical Layer L1) 기계적, 전기적인 통신망 접면의 정의 데이터를 전기적인 신호로 변환해서 주고받는 기능만 할 뿐 대표 장비 : 통신 케이블, 리피터, 허브 등 데이터링크 계층 (Data Link Layer 2, L2) 데이타 링크의 제어 (프레임화, 데이터 투명성, 오류 제어 등) 맥 주소를 가지고 통신한다.
4건의 항목
실버2 : 파라메트릭 서치 문제이다. Root 찾기 처음에 또다시 해시로 풀려고 하다가, 중간에 입력값의 범위가 후덜덜한 것을 보고 풀이 방법을 바꾸었다. 이 문제를 그냥 linear하게 풀려고 하면 100000번을 linear하게 탐색해야 하기 때문에 터져버린다.
문자열 처리는 파이썬으로 find() isalpha() isalnum() for ~ in list, string으로 하나씩 꺼낼 수 있다. ~ in list, string으로만 하면 t/f 반환한다.
Set set은 정렬되지 않은 수학의 집합과 동일한 개념의 데이터 타입으로서, 중복된 값을 가질 수 없다. 아래의 예제에서 exSet1은 set의 규칙에 제대로 부합하는 경우 이지만, exSet2는 중복된 아이템(‘p’)이 섞여 있는 것을 볼 수 있다.
Value Type 다른 변수에 대입하면 복사됨 argument로 넘겨도 복사됨 argument로 collection을 넘겨서 변화주면 원하는 결과를 얻을 수 없음 Objective-C의 경우 가능 Array 동일한 Type의 값을 저장할 수 있는 Ordered List 동일한 값이 다른 위치에서 반복적으로 낭로 수 있음 Foundation의 NSArray와 bridge 표현 let array: Array<SomeType>() let array: [SomeType] let array = [Int]() let array ...
1건의 항목
iOS 화면 업데이트는 어떻게 되는 걸까? draw, layoutIfNeeded, setNeedsLayout 등. 이해가 안가는 것들이 너무 많았다.
1건의 항목
왜 필요한가? 주기적인 포맷이 필요하다는 것을 느꼈다. 7년동안 정리를 안하다보니 나도 스트레스를 받더라. 그럴 때마다 기존에 사용하는 환경을 다시 구축하는게 너무나 시간낭비고 하기 싫었다.
1건의 항목
공개키 비트코인 주소 형식에 대해 알아본다. 이는 곧 “주소”이다. 비트코인 주소 WIF(Wallet Import Format) 앞에서 공개키와 비밀키, 그리고 서명, 검증 방식에 대해 알아보았다. 그리고 이를 직렬화하는 방법도 배웠다.
1건의 항목
운영체제에 대한 정의, 역할에 대해 알아본다. 운영체제는 사용자가 컴퓨터를 사용하기 위해 필요한 소프트웨어이다. 일반적으로 사용하는 모든 프로그램은 운영체제에서 그 자원을 관리한다. 목적 운영체제를 사용하는 가장 큰 목적은 하드웨어의 관리이다.
1건의 항목
인터페이스는 왜 필요할까? 그리고 무엇일까? Interface의 사전적 의미 inter-(상호간의) + -face(면) = interface 접해있는 두 물체나 공간 사이의 경계 사용자는 스위치를 키는 버튼에 집중 이걸 누르면 어떤 일이 일어날지를 앎 (what) 어떻게 그런일이 일어나는지는 모름 (how) 실제 동작은 구현 공간에서 일어남 배선의 연결 사용자는 잘 알지 못하는 공간 구현자만 알고 있음 이미 알고 있는 개념 = 함수 함수는 블랙박스임: 호출자는 내부가 어떻게 도는지 이해하려 하지 않는다.
1건의 항목
1D Array & Slicing # www.tensorflow.org/api_guides/python/array_ops import tensorflow as tf import numpy as np import pprint tf.set_random_seed(777) # for reproducibility pp = pprint.PrettyPrinter(indent=4) sess = tf.InteractiveSession() t = np.array([0., 1., 2., 3., 4., 5., 6.]) pp.pprint(t) pr...
2건의 항목
2. Bank Account Problem(은행 계좌 문제) 동기화의 필요성을 가장 잘 느낄 수 있는 은행 계좌 문제에 대해 알아본다. 2.1 문제 설명 동기화 문제 중에서 대표적인 은행 계좌 문제를 살펴보자. 은행에는 하나의 계좌에 입금, 출금을 할 수 있다.
Task는 코드 블럭을 독립적으로 사용할 수 있다. 이러한 점을 사용하면 병렬적으로 특정 코드를 처리하게 할 수도 있다.
1건의 항목
조금이라도 더 빠르게 Project file을 와리가리 하고 싶은 마음에 사용하는 단축키를 정리해본다. 언젠가는 까먹으니, 그때와서 봐야지. 이건 계속해서 업데이트하도록 하겠다.
4건의 항목
실버1 : 최단거리 문제이다. 생각 모든 경로에 대한 최단 거리를 구해야 한다. 가중치는 양수이자 동일 정점 개수 100개 모든 경로에 대해 최단 거리를 구해야 한다는 점에서 플루이드를 사용할 것이고, O(V^3) 알고리즘에도 통과한 노드 개수이므로 진행한다.
골드3 : 최단 경로 문제이다. 풀이 이전에 풀었던 문제와 매우 비슷한데 음,.., 아 분명히 풀었다. 아마 프로그래머스 문제였던 것 같다. 연결되어 있는지 모두 파악하는 문제였다.
실버1 : 최단경로 문제이다.
풀이 다익스트라로 한번에 성공했다. 그래도 발전이 있나보네. 스위프트로 플루이드 워셜로 다시 풀었다. Code # AB가 함께 모든 노드까지 가는데 걸리는 최단 거리를 구한다. # 그리고 그 거리 각각에서 출발하여 # 1.
6건의 항목
실버1 : 수학 문제이다. 생각 소수 구하는 알고리즘인 에라토스테네스의 체를 사용하면 간단히 풀 수 있다. 이 때, 시간제한 때문에 구한 소수를 담아두는 것이 좋다.
실버2 : 수학 문제이다. 생각 소수 구하는 알고리즘인 에라토스테네스의 체를 사용하면 간단히 풀 수 있다.
실버2 : 수학 문제이다. 생각 소수 구하는 알고리즘인 에라토스테네스의 체를 사용하면 간단히 풀 수 있다.
실버4 : 수학 문제이다. 생각 소수 구하는 알고리즘인 에라토스테네스의 체를 사용하면 간단히 풀 수 있다.
실버1 : 수학 문제이다. 풀이 에라토스 테네스를 적용한 수를 가져오고, 이를 기반으로 상근수 로직을 적용하여 답을 계산한다. Code // // main.swift // CodingTest // // Created by 최완식 on 2021/08/15.
골드4 : 수학 문제이다. 생각 문제 이름 부터 뭔가 마음에 들지 않았다. 풀이 방법은 바로 떠올랐는데 왜 요즘 이런게 구현이 안되는지… score가 최대공약수를 구하는 것이기 때문에 소인수 분해를 떠올릴 수 있고, 그러기 위해서는 소수를 구해야 한다.
3건의 항목
XOR 문제에서 이제 NN을 공부하는데 있어서 sigmoid 함수를 통과했던 것을 우리는 Activate Function이라고 부를 것이다.
\sigma(x) = \frac{1}{1 + e^{-x}} Bernoulli Distribution의 파라미터 \phi를 추정할 때 쓰인다. 이는 아마 이 함수의 치역이 (0, 1)이기 때문이다. 크기가 큰 수를 넣으면 크기 변화가 거의 없다.
Bernoulli Distribution을 따르는 이진 분류 문제에 사용되는 함수 Logistic Function f(x) = \frac L{1 + e^{(-k(x - x_0))}} L: 함수의 최댓값 k: 함수의 경사도 (로지스틱 성장률) x_0: 함수의 중심 Standard Logistic Function (Sigmoid Function) logit^{-1}(x) = \sigma(x) = \frac{1}{1 + e^{-x}} Logit 함수의 역함수 의미 어떠한 성장의 단계를 나타내는 함수 초기에는 기하급수적, 포화가 시작되면...
1건의 항목
기본 요소 송신기 전달 매개체(매질) 수신기 신호 아날로그 연속적인 값이기 때문에, 노이즈에 의해 영향을 받을 수 있다. 즉, 값의 변화가 반영될 여지가 크다. 애초에 연속적인 값이기 때문.
2건의 항목
비트코인에서 사용하는 타원곡선은 무엇일까? 비트코인에서 사용하는 타원 곡선 지금까지는 타원곡선에 들어가는 유한체의 위수를 작은 소수를 사용했다. 하지만 실전에서는 매우 큰 소수를 사용하여 컴퓨터로 탐색이 불가능하게 만든다.
서명, 검증 알고리즘을 알았으니 필요한 클래스들을 작성해보자.
4건의 항목
Decompose Conditional, 조건문 분해하기를 알아보자.
Consolidate Conditional Expression, 조건식 통합하기를 알아보자.
Replace Nested Conditional With Guard Clauses, 중첩 조건문을 보호 구문으로 바꾸기를 알아보자.
Replace Conditional With Polymorphism, 조건부 로직을 다형성으로 바꾸기를 알아보자.
7건의 항목
골드4 : bfs 문제이다. 생각 단순한 구현 문제이다. 이 때, 순서를 잘 파악하는 것이 중요하다. 먼저, 불을 번지게 한 상태에서, 사람의 현재 위치로 부터 어디로 가는 것이 좋은지를 판단해야 한다.
골드4 : 구현 문제이다. 상당히 갑갑했다. 일단 무한개의 소용돌이가 생길 수 있다는 점에서 기존의 달팽이 문제처럼 생각하면 안된다라는 판단이 들었다. 발생하는 모든 숫자를 저장한다면 메모리 초과가 날 것이 분명했기 때문이다.
골드5 : 구현 문제이다. 풀이 문제 똑바로 읽자. 조건하나 안봐서 틀렸네.
풀이1 실버5 : 브루트포스 문제이다. Code // // main.swift // CodingTest // // Created by 최완식 on 2021/08/15.
골드1 : 구현, 시뮬레이션 문제이다.
실버1 : 구현 문제이다. 생각 단순 구현 문제이다. 비트마스크 연습을 위해 비트마스크로 풀었다. 해당 과정을 하는 동안에 인접행렬 같은 matrix를 만들어 무언가를 해보려 했지만 좋지 못했다. 구현 문제는 노가다로 적어주는게 정신 건강에 이롭다.
풀이 시뮬레이션 문제이다. 시뮬레이션 문제는 순서를 명확하게 이해하고 이를 지켜주는 것이 매우 중요하다.
3건의 항목
GoF의 디자인 패턴, 싱글톤 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
모든 것을 OO로 해결할 수 있을까? 그것에 대항하는 static에 대해 알아보자. Static Method OO에서는 모든 것이 개체속에 있어왔다. 그렇기 때문에 불편함이 발생했다.
디자인 패턴의 가장 첫번째인 싱글톤을 알아보자.
1건의 항목
CPU 스케쥴링에 대해 알아본다. CPU가 하나의 프로세스 작업이 끝나면 다음 프로세스 작업을 수행해야 한다. 이때 다음 프로세스가 어느 프로세스인지를 선택하는 알고리즘을 CPU Scheduling 알고리즘이라고 한다.
1건의 항목
통계 개념 정리에 앞서 통계학이라는 학문에 대해 알아본다. 통계는 왜 공부하는가 미래를 알기 위해서, 집단의 특징을 알기 위해서 우리는 군중의 특징에 대해 알 필요가 있다. 예를 들어 물건을 판다고 생각해보자.
1건의 항목
Task와 TaskGroup은 무엇일까? 그리고 Apple이 말하는 Structured Concurrency는 무엇일까? Calling Asynchronous Functions in Parallel 앞의 글에서 보았듯이 await 키워드를 사용하면, 다음코드로 넘어가기 전에 호출자는 해당 작업을 마치는 것을 기다린다.(suspend) let firstPhoto = await downloadPhoto(named: photoNames[0]) let secondPhoto = await downloadPhoto(named: photoNam...
1건의 항목
플래티넘5 : 슬라이딩 윈도우 문제이다. 생각 N이 500만이라 세그먼트 트리로 풀면 터진다.
1건의 항목
비트코인 스크립트는 무엇일까? Smart Contract 비트코인이 전송되는데 있어 어떠한 계약을 걸 수 있다. 그걸 스마트 컨트랙트이라고 한다. 그리고 그 계약을 서술하는 프로그래밍 언어가 스크립트이다. 스크립트는 스택 기반의 스크립트 언어이다.
1건의 항목
프로세스간 통신 interface IPC를 가능케하는 interface이다. 서로 다른 process에서 접속을 하려 할 때, 이 socket을 사용하여 접근하게 되고, 해당 socket은 접속하는 process가 제대로 왔는 지와 같은 검사를 수행하게 된다.
3건의 항목
Logistic Regression 의 그래프 함수를 통과하기 전의 값을 Score(Logit) 이라 부른다. 통과한 난 뒤의 값은 확률이다.
\zeta(x) = \ln(1 + e^x) 치역이 (0, ∞)인 함수 정규 분포의 \beta, \sigma 파라미터를 산출하는데 사용한다.
Categorical Distribution을 따르는 다중 분류 문제에 사용되는 함수 Softmax Function f(x_i) = \frac{e^{x_i}}{\sum_{j=1}^{K} e^{x_j}} Logistic Function의 다차원 일반화 Reference Softmax Function - Wikipedia .
1건의 항목
\zeta(x) = \ln(1 + e^x) 치역이 (0, ∞)인 함수 정규 분포의 \beta, \sigma 파라미터를 산출하는데 사용한다.
5건의 항목
이전글들은 사실 이 원칙을 위해 달려온 것이 아닌가하는 생각이 든다. OOP의 정수로 불리우는 SOLID원칙에 대해서 깊게 알아보고, 실제 iOS Framework의 설계 방향에 대입하면서 보다 찐한 이해를 경험해보자.
SOLID 설계 정신에 대해 알아보자. SOLID 정신으로 이룰 수 있는 것 소프트웨어 설계를 “유연하게” 할 수 있다. 유연한 소프트웨어 설계, 즉 추상적인 설계로 커플링을 제거할 수 있다.
이전 장들에서는 Code, Code Block, 함수 구현 방법, 함수들의 연관 방식을 알아보았지만, 이번에는 조금더 고차원의 얘기를 할까 한다. 클래스 체계 Java Convention에 따르면 가장 먼저 변수 목록이 나온다.
코딩은 어렵다. 코딩 오류를 느끼는 감각은 중요하다. 이는 곧 빠른 피드백 루프를 통해 배움이 빨라짐을 의미한다. 잘못된 것을 알아야 고칠 것 아닌가? 이 장에서는 코드를 짤 때 행동과 기분, 태도에 대한 규칙과 원칙을 소개한다.
리팩토링 작업중, 고민했던 것들을 정리해본다. 누군가에게는 도움이 되겠지. 문제 상황 일단 문제상황은 위와 같다. 같은 VC로 작성되어있음에도 불구하고, 실제 유저가 진입했을 때 보는 화면은 두가지이다.
1건의 항목
비트코인 스크립트는 무엇일까? Smart Contract 비트코인이 전송되는데 있어 어떠한 계약을 걸 수 있다. 그걸 스마트 컨트랙트이라고 한다. 그리고 그 계약을 서술하는 프로그래밍 언어가 스크립트이다. 스크립트는 스택 기반의 스크립트 언어이다.
9건의 항목
정렬에 대해 깊게 공부해보자.
골드2 : 그리디, 정렬 문제이다. 생각 실제로 운송물을 움직인다고 생각해보자. 그렇다면 가장 무거운 하중을 움직일 수 있는 크레인이 가장 많이 움직여야 최단 시간에 짐을 움직일 수 있다. 이부분이 핵심이다.
실버5 : 정렬 문제이다. 생각 정렬 문제이다. merge sort(합병 정렬)을 구현해보고자 시도했다. 알고리즘 기본적인 병합 정렬의 알고리즘은 다음과 같다. 위키 백과 - 합병 정렬 좀 더 자세한 설명 partition 나누는 방법은 간단하다.
실버3 : 정렬 문제이다. 생각 문제에서 하라는 대로 비교만 하면 된다.
실버2 : 파라메트릭 서치 문제이다. Root 찾기 처음에 또다시 해시로 풀려고 하다가, 중간에 입력값의 범위가 후덜덜한 것을 보고 풀이 방법을 바꾸었다. 이 문제를 그냥 linear하게 풀려고 하면 100000번을 linear하게 탐색해야 하기 때문에 터져버린다.
실버4 : 정렬 생각 최빈값 구할 때, 머리를 좀 써야한다. map구조를 잘 써볼 것. 그리고 정렬하는 방법도 고민해볼 것. Code // // main.cpp // test2 // // Created by 최완식 on 2021/03/29.
풀이1 이게 보면, 전화번호 개수가 백만개라 단순히 비교로 풀면 n^2이라 박살난다. 그렇기 떄문에 다른 방법을 고민해야한다. 이 문제의 핵심은 결국 특정 단어가 접두어로 있는지에 대한 문제이다. 그렇기 때문에 startswith를 생각하는 것이 편하다.
문자열 처리는 파이썬으로 find() isalpha() isalnum() for ~ in list, string으로 하나씩 꺼낼 수 있다. ~ in list, string으로만 하면 t/f 반환한다.
개요 SORT(Simple Online and Realtime Tracking)은 매우 알고리즘이 간단함에도 불구하고 효과적이고 실용적인 다중 대상 추적 알고리즘이다. IOU를 기반으로 추적된 물체에 대해 association(할당)을 진행하기 때문에 매우 빠르다.
1건의 항목
Agility Robotics가 SPAC 합병으로 나스닥에 오르려는 과정을, IPO 투자설명서와 합병 계약 원문으로 단계별로 짚습니다. 기업가치 25억 달러가 무슨 뜻이고 아직 무엇이 안 정해졌는지.
1건의 항목
골드5 : 동적 계획법 문제이다. 생각 결국 무게 제약이 있는 문제이다. 나는 이 문제를 풀 때 감을 잡기 참어려웠는데, 무게에 제약이 있다는 점을 갖고 완전 탐색을 한다는 아이디어를 가지고 생각했다.
1건의 항목
Basic Point 하나의 좌표를 갖는 geometry LineString(Polyline) 두 개 이상의 좌표를 갖는 geometry Line 두개의 좌표인 경우 LinearRing 첫 점과 끝점이 같은 경우 분류 Simple Non-Simple - 선이 교차하는 경우 Simple, closed - 교차하지 않는 다각형모양을 가진 선 LinearRing Non-Simple, closed - Not a LinaerRing Polygon 면 hole을 가질 수 있다.
1건의 항목
코드를 짜다보면, 어느새 얽히고 섥혀있는 내 프로젝트를 마주한다. 부지런함이 개발자의 덕목이 아닌가라고 생각될 정도로 항상 깔끔함을 유지하는 것이 참 중요하다는 생각이 들곤한다. 혹은 미래의 나와 과거의 나가 항상 현재에서 싸우는 듯하기도 한다.
1건의 항목
스토리 점수는 상대적이다 스토리 점수: 사용자 스토리나, 기능, 작업의 규모를 표현하기 위해 사용하는 단위 값의 상대성에 의미가 있다.
2건의 항목
개요 한점에 대해 유일한 좌표를 부여하기 위한 체계 직교좌표계 (x, y, z) 구면좌표계 (r \theta, \phi) 지리좌표계 (\lambda, \phi) 지표면에만 있다고 가정하고 위, 경도로만 표현하는 것 지심좌표계 (x, y, z) 지표면 안으로 들어간다고 가정했을 때 필요 좌표계 EPSG 무지하게 많은 좌표계들을 한번에 알아볼 수 있는 코드 좌표계 변환 방식 측지계가 같으면 쉽게 변환이 가능 즉 준거타원체와 기준점이 같으면 하지만 측지계가 다르면 복잡한 로직이 필요 즉, 준거타원체도 다르고, 기준점도 다르면 3-Para...
1건의 항목
appsco.pe/developer/splash-screens 해당 사이트에서 스플래시 이미지를 만든다. PWA를 위해 이를 적절한 사이즈로 변환한 뒤, html head에 넣어준다.
8건의 항목
level2 : SQL 사용 생각 간단하다. 예시를 보고 외우던가 나중에 찾아보자.
level3 : join을 사용하는 문제이다. 생각 이 문제를 풀기 위해서는, join이라는 쿼리가 어떻게 돌아가는 지 알아야 한다. right join, left join등 다양한 join의 방법이 있지만, 일단 기본적으로 join을 하면 그냥 합쳐진다.
level2 : limit을 사용하는 문제이다. 생각 가져온 table에 대해 제한을 걸어, 그 만큼의 행만 가져오게 하는 문제이다.
level3 : join을 사용하는 문제이다. 생각 이 문제를 풀기 위해서는, join이라는 쿼리가 어떻게 돌아가는 지 알아야 한다. right join, left join등 다양한 join의 방법이 있지만, 일단 기본적으로 join을 하면 그냥 합쳐진다.
level4 : table을 분리하는 방법을 사용해보자. 생각 문제가 잘 안풀리면, 제공해주는 table을 분리하고, 그 분리한 table로 부터 원하는 결과를 도출해보자. 즉 sub query를 사용해서 임의로 table을 만드는 것.
level4 : 변수를 사용하는 문제이다. 생각 이 문제는 group by를 사용할 수 없다는 것이 핵심이다. group by 는 있는 값을 DISTINCT하게 판단하여 집합을 구성해주는 쿼리이다.
level2 : case when을 사용하는 문제이다. 생각 쿼리로 가져온 table에 대해서 추출을 진행할 때, 사용할 수 있는 테크닉이다. 이건 예제로 보는 것이 정확하다.
level3 : join을 사용하는 문제이다. 생각 이 문제를 풀기 위해서는, join이라는 쿼리가 어떻게 돌아가는 지 알아야 한다. right join, left join등 다양한 join의 방법이 있지만, 일단 기본적으로 join을 하면 그냥 합쳐진다.
3건의 항목
이전글들은 사실 이 원칙을 위해 달려온 것이 아닌가하는 생각이 든다. OOP의 정수로 불리우는 SOLID원칙에 대해서 깊게 알아보고, 실제 iOS Framework의 설계 방향에 대입하면서 보다 찐한 이해를 경험해보자.
SOLID 설계 정신에 대해 알아보자. SOLID 정신으로 이룰 수 있는 것 소프트웨어 설계를 “유연하게” 할 수 있다. 유연한 소프트웨어 설계, 즉 추상적인 설계로 커플링을 제거할 수 있다.
동시성과 깔끔한 코드는 양립하기 아주 어렵다. 그럼에도 불구하고, 동시성은 왜 필요할까? 객체는 처리의 추상화다. 스레드는 일정의 추상화다. - 제임스 O. 코플리엔 동시성이 필요한 이유? 동시성은 “무엇”과 “언제”의 Coupling을 없애는 전략이다.
1건의 항목
기억 장치의 동작방법에 대해 이해해보자. 최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자.
2건의 항목
앞으로 그림에서 나오는 Swift version은 가상이다. 이해를 위해서 가상으로 적었다.
Module Stability는 무엇일까? 공식문서를 통해 알아보자. Module Swift에서 Module은 무엇을 말할까? Swift는 접근 제어의 기준으로 Module을 사용한다. 코드 배포의 단위로써 import 키워드를 통해 사용하는 것들이 모두 모듈이다.
6건의 항목
실버4 : 스택 문제이다. Code // // main.cpp // algorithm_prac // // Created by 최완식 on 2021/04/05.
골드4 : stack 문제이다. 풀이 아, 정말 아쉬운 문제였다. 하지만 배운 것이 있었다. Stack을 기본적으로 사용하는 이유은 어떤 복잡도 문제를 해결하기 위함이다. 이 부분은 뒤에 다시 살펴보도록 하자.
골드5 : 스택 문제이다. 풀이 비슷한 문제를 한 3번 봤다. 근데 그 때는 heap을 사용해서 뒤에서 가장 큰 문자를 계속해서 뽑는 것으로 문제를 해결했다. 풍선 터트리기 그런 방식으로 해당 문제를 다시 풀려했으나, 밑에 알고리즘 분류를 봤는데 stack…이더라.
실버? : stack 문제이다. 풀이 처음에 op과 ()를 담는걸 별도로 생각했다가 낭패를 보았다. 생각하다보니 이 두개가 엮인다는 것을 알았고, 쉽게 규칙을 파악해서 풀 수 있었다.
풀이1 이게 보면, 전화번호 개수가 백만개라 단순히 비교로 풀면 n^2이라 박살난다. 그렇기 떄문에 다른 방법을 고민해야한다. 이 문제의 핵심은 결국 특정 단어가 접두어로 있는지에 대한 문제이다. 그렇기 때문에 startswith를 생각하는 것이 편하다.
풀이 prices의 길이가 100,000이라 n^2으로 짜면 터질 것 같아 stack으로 구현했다. 그런데 이때, 특정 원소가 조사해야 하는 부분은 i+1부터 끝까지의 요소이다. 그 과정에서 중복이 발생하기 때문에 반대로 정렬한뒤 값을 구해주었다.
1건의 항목
언제 사용할까? Conditional GET을 이용하여 트래픽은 줄일 수 있으나, Round Trip은 줄일 수 없다.
2건의 항목
데이터를 설명하는 또 다른 척도인 변동성에 대해 알아본다. 변동성 데이터의 분포를 나타냄에 있어 퍼진 정도를 측정한다. 범위 range = 최대 관측치 - 최소 관측치 해당 데이터의 값이 어디서 부터 어디까지인지 나타낸다.
확률변수 X가 따르는 분포 P(X)에서 추출된 x 로 구성된 함수 f(x)에 대한 분산 \text{Var} \text{Var}_{X \sim P} [f(x)] = \mathbb{E}_{X \sim P} [(f(x) - \mathbb{E}_{X \sim P} [f(x)])^2] 만약 \text{Var}_{X \sim P} 에서 확률분포 P(X)를 확실히 알 수 있다면 생략한다.
1건의 항목
프로그래밍 사용자가 어떤 값을 컴퓨터에 넣고(입력) 처리한 결과를 사용자에게 다시 제공(출력)하는 것 graph LR; A[Input] --> B{Function} B --> C(Output) 입출력 함수 표준 입출력 함수: 키보드와 모니터를 통해 자료를 입출력 파일 입출력 함수: 특정한 파일을 통해 자료를 입출력 저급 입출력 함수: 운영체제 내, 시스템 호출을 통해 자료를 입출력 표준 입출력 함수 형식화된 입출력 printf() 함수 표준 출력 장치인 모니터로 자료를 출력 도스창에 실행결과를 표시할 때 사용 제어 문자열...
1건의 항목
식사하는 철학자 문제는 원형 테이블에 5명의 철학자와 5개의 젓가락이 있는 상황이 있다고 하자. 각 철학자는 생각하고 식사하고 생각하고 식사하고를 반복한다. 단, 식사를 하기 위해서는 2개의 젓가락이 필요하다. 이 상황을 프로그래밍을 해보자.
3건의 항목
GoF의 디자인 패턴, 상태 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
CodeInfomationRangeDescription1xxInformational100, 101100: Continue 101: Switching Protocols 2xxSuccessful200~206 201: Created 202: Accepted (대기열 긴 경우, 요청은 받았어! ^^ 이 용도..) 3xxRedirection300~307 301: Moved Permanently 302: Found (이전 Moved Temporarily) 307: Temporary Redirect (Recommaned) 308: Perman...
HTTP에서 상태가 필요한 이유 로그인이 되게 하고 싶다. 쇼핑몰 로그인이 아니어도 카트 목록을 기억하게 하고 싶다. 해결 방법 Fat URL - URL에 상태 정보를 모두 집어 넣기 - URL을 파싱해서, 사용자의 상태를 확인한다.
1건의 항목
CodeInfomationRangeDescription1xxInformational100, 101100: Continue 101: Switching Protocols 2xxSuccessful200~206 201: Created 202: Accepted (대기열 긴 경우, 요청은 받았어! ^^ 이 용도..) 3xxRedirection300~307 301: Moved Permanently 302: Found (이전 Moved Temporarily) 307: Temporary Redirect (Recommaned) 308: Perman...
4건의 항목
모든 것을 OO로 해결할 수 있을까? 그것에 대항하는 static에 대해 알아보자. Static Method OO에서는 모든 것이 개체속에 있어왔다. 그렇기 때문에 불편함이 발생했다.
팩토리 메서드는 무엇일까? 무엇이 좋을까? Factory Method 사용할 클래스를 정확히 몰라도 개체 생성을 가능하게 해주는 패턴 public final class Cup { private int sizeMl; private Cup(int sizeMl) { this.sizeMl = sizeMl; } public static Cup createOrNull(CupSize size) { switch (size) { case SMALL: return new Cup(355); case MEDIUM: return new Cup(473); ...
static Members 때때로는, 클래스의 객체들이 모두 공유하는 변수를 가지는 것이 용이하다. 전역변수와는 조금 다른 점이 있다 공통점 : 특정 함수나 클래스가 끝나고 나서 변수가 사라지지 않는다. 차이점 : 특정 클래스에 구속되어 있다.
enum에 static 변수를 사용해서 관리를 하다가 문득 이런 생각이 들었다. Type property에는 2가지 종류, static, class가 있는데 뭐가 다른거지? 이참에 헷갈렸던 용어까지 몽땅 정리해보려 한다.
1건의 항목
What is Array? 직접적으로 값을 순차적으로 매핑한다. C언어에서 오래된 기술이고, 객체가 아니다.
1건의 항목
Static Binding (정적 바인딩) #include <iostream> #include <string> #include <vector> using namespace std; class Base{ public: void f(){cout << "Base::f()" << endl;} virtual void vf() {cout << "Base::vf()" << endl;} }; class Derived:public Base...
1건의 항목
인터넷 공간 상에서 해당 단말기의 고유 주소 Socket을 통해 통신한다는 것은 알았다. 근데 우리가 전화를 걸더라도, 어디에 전화를 걸것인지 알아야 한다. 그걸 대표하는 것이 전화번호이다. 마찬가지로 통신을 하려면, 어디에 통신할 것인지 알려주는 과정이 필요하다.
1건의 항목
앞으로 진행할 긇에서는, Library와 Framework에 대해서 알아볼 것이다. 첫번째 순서로는 Library이다. Library & Framework 일단 간단하게 Library와 Framework에 대한 차이를 알아보고 가자.
1건의 항목
팩토리 메서드는 무엇일까? 무엇이 좋을까? Factory Method 사용할 클래스를 정확히 몰라도 개체 생성을 가능하게 해주는 패턴 public final class Cup { private int sizeMl; private Cup(int sizeMl) { this.sizeMl = sizeMl; } public static Cup createOrNull(CupSize size) { switch (size) { case SMALL: return new Cup(355); case MEDIUM: return new Cup(473); ...
2건의 항목
Go Lang Features를 기반으로 한 Static site generator 빠르다. 유연함을 강조하여 다양한 플랫폼에서 쉽게 사용가능하다. Reference Hugo .
Markdown과 같은 text input을 받아 정적 페이지, 즉 HTML로 변환해주는 엔진을 말한다. 백엔드 서버가 필요없다. Jekyll, Hugo, Next.js 등이 있다. Reference Static site generator .
28건의 항목 처음 10개의 태그
통계 개념 정리에 앞서 통계학이라는 학문에 대해 알아본다. 통계는 왜 공부하는가 미래를 알기 위해서, 집단의 특징을 알기 위해서 우리는 군중의 특징에 대해 알 필요가 있다. 예를 들어 물건을 판다고 생각해보자.
데이터의 중심을 나타내는 척도에 대해서 배워본다. 평균 (mean) 평균은 대표적으로 집단의 중심위치를 나타내는 척도로 사용된다. 이 평균에는 보통 3종류가 사용된다.
데이터를 설명하는 또 다른 척도인 변동성에 대해 알아본다. 변동성 데이터의 분포를 나타냄에 있어 퍼진 정도를 측정한다. 범위 range = 최대 관측치 - 최소 관측치 해당 데이터의 값이 어디서 부터 어디까지인지 나타낸다.
데이터를 설명하는 상대위치와 이를 나타내는 box plot에 대해 알아본다. 상대위치 중앙값이 50%에 위치하는 분위수라면, 이에 대응하는 다양한 분위수가 존재한다. 백분위수 분포를 100개로 쪼개어 생각하는 것이다.
데이터의 두 변수간 선형관계를 나타내는 척도에 대해서 알아본다. 선형관계 두 변수의 관계를 알아보는 것은 매우 중요하다. 어떠한 연관성을 통하여 유의미한 정보를 이끌어 낼 수 있기 때문이다. 이러한 선형관계를 알아내는 척도는 3가지 정도가 알려져 있다.
모집단을 추정하기 위한 표본을 추출하는 방법에 대해 알아본다. 표본 추출 단순 랜덤 추출 단순히 랜덤하게 모집단에서 추출하는 방법이다. 집단의 분포가 불균형할 경우 모집단의 특성을 대변하지 못한다는 단점이 있다.
확률에 대해 이해한다. 사건에 확률을 부여하는 방법 동전의 앞면이 나오는 것을 사건 A라 정의했을 때, P(A)를 구하는 방법에 대해 알아보자. 고전적 방법 단순히 1/2라 생각한다. 이 생각의 배경에는 앞면과 뒷면이 나오는 가능성이 동일하다 생각하고 부여한다.
확률분포에 대해 이해한다. 왜 배우는가? 실생활에서 결국 엔지니어가 수행하는 역할은, 다양한 문제에 대해 이를 다룰 수 있는 문제로 바꾸는 것에 있다. 확률과 같이 애매하게 보이는 개념을 어떻게 수치화하여, 다룰 수 있는 문제로 바꾸는지에 대한 내용이 대부분이다.
대표적으로 사용하는 이산 확률 변수에 대한 분포를 알아본다. 의미적으로 이해하는 것을 우선으로 한다. 초기하 분포 n번의 시행에서 k번 성공할 확률, 그런데 독립시행이 아닐 경우의 분포 주머니에 10개의 공이 있다. 이 때 파란공이 3개, 빨간공이 7개 이다.
대표적으로 사용하는 연속 확률 변수에 대한 분포를 알아본다. 의미적으로 이해하는 것을 우선으로 한다. 감마 분포 a번째 사건이 발생할 때까지 걸리는 시간에 대한 분포 음이항 분포와 매우 비슷하다.
1건의 항목
WWDC 2019 키노트를 확인해보며 알짜 정보를 쏙쏙 뽑아보자. Dark Mode iOS 13부터 지원되는 기능이다. 말 그대로 dark mode이다. 해당 기능을 만들면서 고민했던 것은 역시 Mode에 따라 변화하는 색상이었다.
1건의 항목
STereoLithography 혹은 Standard Triangulated Language 3차원 데이터를 표현하는 국제 표준 형식중 하나. 복잡한 3차원 폴리곤을 삼각형의 조합으로 만들어 곡면을 표현한다.
3건의 항목
아무 생각없이 코딩하다가(…) 의존성 주입을 그냥 property 주입으로 하고 있었다. 당연히 Storyboard면 안되지 않았었나? 하는 무지성 코드질을 하다 지적받고 떠올랐다.
code를 보다가 unwind segue라는 녀석을 보게 되었다. 처음 보는 친구라 정리해보려고 한다. Unwind Segue 일단 Unwind라는 뜻을 알아보자. 음. 무언가를 푼다는 개념같다.
서로 다른 화면을 유기적으로 작업하고자, 충돌 문제가 다수 발생하는 스토리보드 사용을 하지 않았습니다. 프로젝트를 진행하기 전, 스토리보드 사용 여부에 대해 의사결정을 했습니다. 결과적으로 스토리보드 사용을 하지 않았는데, 그 이유는 다음과 같습니다.
2건의 항목
스토리 점수는 상대적이다 스토리 점수: 사용자 스토리나, 기능, 작업의 규모를 표현하기 위해 사용하는 단위 값의 상대성에 의미가 있다.
규모 추정에는 스토리 점수와 이상적 작업일이라는 두 수단이 있다. 각각 나름의 장단점이 있는데, 어떻게 활용하는 것이 좋은지에 대해 얘기해본다. 스토리 점수의 장점 스토리 점수는 팀원들로 하여금 기능간 경계를 뛰어 넘게 한다.
2건의 항목
GoF의 디자인 패턴, 전략 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
테스트 전략에 대해 알아본다. 테스트 전략 단위 테스트로는 충분치 않다. 프로 개발 팀이라면 훌륭한 테스트 전략이 필요하다. QA는 오류를 찾지 못해야 한다. 개발팀의 목표는 이거다. 그렇다고 해서 QA와 개발자가 서로 적대적인 관계를 가져야 하는 것은 아니다.
1건의 항목
What is Padding Convolution 전 게시물에서 3x3 짜리 필터를 걸었을 때, 4x4짜리가 나왔다. 어떻게 보면 당연할 결과이다.
7건의 항목
자료형 프로그램에서 선언된 변수들이 기억 공간에서 어떻게 저장되고 처리되어야 할지, 컴파일러에게 알려줌 종류 정수형 실수형 문자형 사용자 정의 자료형 정수형 소수점이 없는 숫자 음의 정수, 0 , 양의 정수 오버플로우(overflow) 데이터 허용 범위를 넘는 값을 변수에 저장할 때, 의도한 값이 아닌 다른 값이 저장되는 것 #include <stdio.h> int main(void) { short a = 32767, b=2, c; unsigned short d; c = a+b; d = a+b; printf("c...
문자배열 char 형 문자를 여러 개 모아놓은 문자 집합 문자 : 작은 따옴표 ’ ’ 문자열 : 큰 따옴표 ” ” ‘\0’ (NULL) : 문자열 끝에 항상 문자코드 ‘\0’을 덧붙여야 함 char str[5] = {'A', 'B', 'C', 'D', '\0'}; // 옳은 선언 char str[4] = {'A', 'B', 'C', 'D'} // 잘못된 선언 char str...
String library method #include <string> #include <iostream> using namespace std; int main(){ string word = "good"; word.length(); // 길이 리턴 word.empty(); // 빈 문자열인지 1, 0값 리턴 word.clear(); // 문자열 삭제 word += "-bye"; // 더하기 가능 word[0]; // h word[word.length() - 1]; // 마지막...
String 문자열 나누기 Pithon -> Python 으로 바꾸는 작업을 진행해보자. # 잘못된 예 a = "Pithon" a[1] = 'y' 불가능하다. 문자열의 요소값은 바꿀 수 있는 값이 아니다.
개요 sub 메서드를 사용하면 정규식과 매치되는 부분을 다른 문자로 쉽게 바꿀 수 있다.
이미지와 글자가 있는 Button을 만들다가, String안에 image를 넣을 수 있다는 것을 알았다! NSAttributedString 텍스트 일부에 대해 특성(시각적 스타일, 하이퍼 링크 등)이 있는 문자열 텍스트 일부에 대해 특성들을 적용할 수 있는 String이다.
특정 문자열이나 공백을 제거하려면 어떻게 해야할까? 공백 싹다 지우기 let myString = "This \n is a st\tri\rng" let trimmedString = myString.components(separatedBy: .whitespacesAndNewlines).joined() 양쪽 지우기 var string = " AAAAAAAA " let trimedString = string.trimmingCharacters(in: [" "]) // 양끝단의 특정 문자도...
1건의 항목
문자열 처리는 파이썬으로 find() isalpha() isalnum() for ~ in list, string으로 하나씩 꺼낼 수 있다. ~ in list, string으로만 하면 t/f 반환한다.
1건의 항목
오래 기다렸다. ARC가 무엇일까? 자바의 Garbage Collector와는 무엇이 다를까? 장단점은 무엇일까? 어떤 원리로 동작하는 것일까? 발생하는 문제점은 무엇일까? 어떻게 해결할 수 있을까? 이러한 내 궁금증들을 담았다.
4건의 항목
Swift는 객체의 느낌으로 사용하는 3개의 개체가 있다. struct, class, enumeration이 그것이다. struct는 apple에서 권장하고, 실제로도 대체하는 것이 좋다고 생각되는 자료구조이고, enum의 경우 다른 언어보다 기능이 많이 추가되었다.
static 변수 및 함수는 인스턴스를 생성하지 않고 접근하기 위해 사용한다. swift에서는 어디서 관리하는 것이 좋을까? swift에서 사용하는 Method가 궁금하다면 해당글을 읽고 오자.
Swift에서 Struct, Class, Enum을 초기화할 수 있는 Initializer에 대해서 알아보자. 이 부분에서 class 초기화는 다른 언어의 초기화 과정과 약간 다른 부분이 있다. 해당 내용은 좀 길어질 수 있어 다음 포스팅으로 넘겼다.
Structure C언어 등의 구조체보다 다양한 기능 상속 불가능 인스턴스/타입 메서드 인스턴스/타입 프로퍼티 값타입 Swift의 대부분의 큰 뼈대는 모두 구조체 Struct가 선호되는 이유 mutability control에 유리 상태로 인한 부작용 없음 let 선언으로 완전한 immutable 자료형 생성 class의 경우 let 인스턴스여도 member 변수 변경 가능 성능 유리 referencing 소요 시간 감소 compiler가 강력한 최적화 수행 함수형 프로그래밍에서 효과정 immutable 요소를 바탕으로 code 가...
7건의 항목
GoF의 디자인 패턴, 적응자 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 가교 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다. 핵심 요약 기능과 구현의 분리를 통해 시스템의 확장성과 유지보수성을 높이는 패턴 기존 시스템에 새로운 기능을 추가해도 어떠한 변경도 없이 추가가 가능하다.
GoF의 디자인 패턴, 복합체 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다. 핵심 요약 단일체와 집합체를 하나의 동일한 개념으로 처리하기 위한 패턴 폴더 구조, View 구조 등이 예가 될 수 있겠다.
GoF의 디자인 패턴, 장식자 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 파사드 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 플라이급 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
GoF의 디자인 패턴, 프록시 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
1건의 항목
네트워크 구조 네트워크 엣지(Network Edge) 말단 device, 우리가 사용하는 대부분의 기기에 해당한다. 네트워크 코어(Network Core) 엔드 시스템을 연결하기 위한 중간의 매개들을 말한다.
1건의 항목
Task를 알아보면서 많은 삽질을 했으니, 이제 다시한번 WWDC 영상을 봐본다. Intro 예전의 프로그래밍 언어는 control flow가 상하로 왔다갔다했었다. 이런 코드는 흐름을 읽는 것을 방해했다.
1건의 항목
Test라는 과정은 사실 공학 어디에서든 등장하는 개념이다. 작업에 의존도가 있고, 복잡한 과정으로 넘어갈 수록 이전 단계의 오류는 치명적이기 때문이다. 이를 관리하는 방법이 Test라 할 수 있다. 소프트웨어에서 역시 이러한 개념이 적용된다.
1건의 항목
개요 style transfer에서는 input의 style을 target의 style과 맞게 만들어주는 방법이 필요한데, 이에 대한 방법론의 핵심을 담당하는 Gram Matrix에 대해 알아본다.
1건의 항목
Apple에서 공개한 API인 Combine. 이제 Rx에서 Combine으로 많이 넘어간다고 한다. 무엇을 하는 것인지, 왜 좋은지, 바로 써먹기 위한 팁은 무엇이 있는지 알아본다.
1건의 항목
네트워크 주소와 브로드캐스트 주소 브로드캐스트는 앞에서 Switch(또는 지금은 Router)에 연결된 모든 호스트에 요청을 보내는 것을 의미했다. 이런 용도로 사용되는 특별한 주소를 말한다. 브로드 캐스트 주소 호스트 ID가 255인 주소이다.
2건의 항목
Combine이 무엇일까? Apple이 설명하는 것을 들어보자. What is Combine 이벤트 처리 연산자를 결헙하여 비동기 이벤트를 처리하는 방법 일단 비동기 이벤트가 무엇이 있는지부터 알아보자.
Combine에 대해서 실제 사용하다 보니, 이게 도대체 어떤 방식으로 이루어지는 지 궁금했다. 실제 코드를 보지 않으면 명확해지지 않을 것 같아 정리한다.
1건의 항목
다시 핵심만 간결하게 복기하기 위한 목적으로 정리하기 때문에, 요약하는 방식으로 글을 작성한다. 역/식자의 말 절대적이라 믿으면 안된다 개선의 여지가 있을 것이라 생각해야 한다. 이 요소들을 소개하는 이유는 팀/공동체에서 서로 동의하는 합리적인 원칙을 세우기 위함이다.
107건의 항목 처음 10개의 태그
실버5 : 브루트포스 문제이다.
브론즈2 : 브루트포스 문제이다.
실버1 : 수학 문제이다. 풀이 에라토스 테네스를 적용한 수를 가져오고, 이를 기반으로 상근수 로직을 적용하여 답을 계산한다. Code // // main.swift // CodingTest // // Created by 최완식 on 2021/08/15.
실버5 : 브루트포스 문제이다. 풀이 String으로 변환해서 판단하려고 했는데, 생성시간이 꽤나 오래걸리나보다.
풀이1 실버5 : 브루트포스 문제이다. Code // // main.swift // CodingTest // // Created by 최완식 on 2021/08/15.
풀이 하라는 대로 구현했다. 이거 부캠 시험에서 나온것 같은 기분이.
풀이 하라는 대로 구현했다. 일단, board에서는 빈칸을 찾아야 하고, table에서는 채워진 조각을 찾아야 한다. 각각에서 그 빈 구석을 모두 도려낸 뒤에, 그 조각들이 맞는지를 완전탐색했다.
풀이 다익스트라로 한번에 성공했다. 그래도 발전이 있나보네. 스위프트로 플루이드 워셜로 다시 풀었다. Code # AB가 함께 모든 노드까지 가는데 걸리는 최단 거리를 구한다. # 그리고 그 거리 각각에서 출발하여 # 1.
OOP 다음으로 떠오르는 패러다임인 FP에 대해서 알아보자. 물론 FP는 OOP보다 먼저 등장했다. 그렇다면 갑자기 왜 등장하게 되었을까? FP의 장점과 개념을 이해하면서 알아가보자.
자주 사용하는 고차함수들에 대해서 이해해보자.map, flatMap과 같은 경우는 여러가지가 존재하는데, 각각의 활용 방법에 대해서 알아보자.
7건의 항목
기본 요소 송신기 전달 매개체(매질) 수신기 신호 아날로그 연속적인 값이기 때문에, 노이즈에 의해 영향을 받을 수 있다. 즉, 값의 변화가 반영될 여지가 크다. 애초에 연속적인 값이기 때문.
설명 현재 네트워크에서 다른 네트워크로 최적 경로를 통해 데이터를 전송 경로 정보는 라우팅 테이블에 등록 라우팅 테이블에 경로 정보를 등록하는 방법은 수동 등록과 자동 등록이 있다. 수동 등록은 소규모 네트워크에 적합하다.
Switch Data Link Layer에서 동작 Layer 2 스위치, 스위치 허브라 불림 허브와 비슷하지만, 데이터 충돌을 방지할 수 있다.
냄새나면 당장 갈아라. 어떻게 하는지에 대해서 지금까지 배웠다. 하지만, “언제” 시작하고 그만할지를 판단하는 것은 또 다른 얘기다. 어떤 “냄새”를 맡았을 때 손을 대야할까? 기이한 이름 이름으로 이게 뭐하는 것인지 딱 볼 수 있게 작성해야 한다.
제어문 프로그램의 실행을 인위적으로 조절할 수 있는 문장 제어문의 종류 If 조건 연산자 유일하게 피연산자가 3개인 삼항 연산자 선택문(if)문과 같이 행동함 #include <stdio.h> int main() { int min, max; int x = 10, y = 20; max = (x>y) ? x : y; min = (x>y) ? y : x; printf("두 수 %d과 %d 중에 큰 수는 %d이다.\n", x, y, max); printf("두 수 %d과 %d 중에 작은 수는...
Do ~ While 일단 Do 안에 있는 명령문을 실행하고 나중에 while문의 조건식 비교 적어도 한번은 명령문을 처리함 마지막에 세미콜론(;)을 반드시 추가해야 함 조건식을 검사하는 while(조건식)은 C 문장으로 여기기 때문 #include <stdio.h> int main() { int sum = 0; int number = 0; printf("1에서 10까지 합을 구합니다.\n"); do { number++; sum += number; } while(number<10); printf(&q...
기존에 작업한 글이 있어 링크로 대체한다. 05. Control Flow 06. Loop Part. 01 07. Loop Part. 02 iomanip library 기본적으로 iostream 라이브러리로 출력을 하게되면, 왼쪽 정렬이다.
1건의 항목
앱스토어에서 크래시가 나서 Reject을 당하면 Crash Report를 함께 준다. 해당 파일을 열어보면 이상한 숫자들만 가득하다. dSYM debug symbol file App을 Release한 뒤에 Crash를 진단할 수 있게 도와주는 파일이다.
1건의 항목
TLS 위에서 동작하는 HTTP 종단간 암호화 (E2E 암호화) HTTP 메시지를 암호화하여 주고 받음 보안이란? 서버 인증 클라이언트는 자신이 진짜 서버임을 알 수 있어야 함 클라이언트 인증 서버는 자신이 진짜 사용자임을 알 수 있어야 함 무결성 클라이언트와 서버는 그들의 데이터가 위조되는 것으로 부터 안전해야 함 암호화 클라이언트와 서버는 도청 걱정 없이 대화가 가능해야 함 동작 방식 서버가 클라이언트에게 인증서를 보내어 자신을 증명한다.
1건의 항목
무심코 사용하는 많은 비동기 함수들은 사실 변화의 과정을 겪은 결과들이다. 네트워크 I/O API가 어떻게 변화되어 왔는지 알아보자. 한눈에 보기 network API를 사용하다보면 자연스레 머리에 이런 그림이 떠오른다.
4건의 항목
최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. PC 조립 과정 보며 구조 이해하기 컴퓨터 하드웨어 구성 요약 다나와 다나와 이곳에 가면 컴퓨터 용어에 대한 간단한 설명들을 쉽게 알 수 있다. 컴퓨터란? CPU가 가장 중요하다.
프로세스 동기화가 발생하는 예시와 목적, 그리고 그것을 해결하기 위한 원칙에 대해 알아본다. 1.
2. Bank Account Problem(은행 계좌 문제) 동기화의 필요성을 가장 잘 느낄 수 있는 은행 계좌 문제에 대해 알아본다. 2.1 문제 설명 동기화 문제 중에서 대표적인 은행 계좌 문제를 살펴보자. 은행에는 하나의 계좌에 입금, 출금을 할 수 있다.
Atomicity을 가지는 행위에 대해 시작과 끝을 알리는 행위 화장실 들어갈 때 문잠구는 거 규칙 준수의 개념과도 비슷하다. 예를 들어, 100개의 인형에 눈을 다는 작업이 있다고 하자. 그렇다면 이 작업은 동시성을 가진다.
1건의 항목
복잡성은 죽음이다. 개발자에게 생기를 앗아가며, 제품을 계획하고 제작하고 테스트하기 어렵게 만든다. - 레이 오지, 마이크로소프트 최고 기술 책임자(CTO) 도시를 세운다면? 도시가 돌아가는 이유는, 각 분야를 담당하는 팀이 있기 때문이다.
1건의 항목
git checkout refs/tags/5.23.0\(2\) 이렇게 써줘야 함 (를 알아먹지 못하기 때문 .
2건의 항목
level2 : limit을 사용하는 문제이다. 생각 가져온 table에 대해 제한을 걸어, 그 만큼의 행만 가져오게 하는 문제이다.
OOP 다음으로 떠오르는 패러다임인 FP에 대해서 알아보자. 물론 FP는 OOP보다 먼저 등장했다. 그렇다면 갑자기 왜 등장하게 되었을까? FP의 장점과 개념을 이해하면서 알아가보자.
1건의 항목
Target Xcode의 빌드를 통해 생성된 최종 Product Framework Application 등등 일반적으로 하나의 모듈 또는 앱을 의미한다. 보통 프로젝트 생성시 하나만 생성되나, 목적에 따라 하나의 프로젝트에 여러개의 Target을 생성할 수 있다.
1건의 항목
Target / Action은 사용자 interaction을 처리하는 주요 방법으로 알려져있다. 문서를 읽으며 알아보자. Target/Action Target/Action은 대표적인 비동기 이벤트이다. Action이 왔을 때, 처리되는 방식이기 때문이다.
2건의 항목
Task와 TaskGroup은 무엇일까? 그리고 Apple이 말하는 Structured Concurrency는 무엇일까? Calling Asynchronous Functions in Parallel 앞의 글에서 보았듯이 await 키워드를 사용하면, 다음코드로 넘어가기 전에 호출자는 해당 작업을 마치는 것을 기다린다.(suspend) let firstPhoto = await downloadPhoto(named: photoNames[0]) let secondPhoto = await downloadPhoto(named: photoNam...
Task를 알아보면서 많은 삽질을 했으니, 이제 다시한번 WWDC 영상을 봐본다. Intro 예전의 프로그래밍 언어는 control flow가 상하로 왔다갔다했었다. 이런 코드는 흐름을 읽는 것을 방해했다.
2건의 항목
Task와 TaskGroup은 무엇일까? 그리고 Apple이 말하는 Structured Concurrency는 무엇일까? Calling Asynchronous Functions in Parallel 앞의 글에서 보았듯이 await 키워드를 사용하면, 다음코드로 넘어가기 전에 호출자는 해당 작업을 마치는 것을 기다린다.(suspend) let firstPhoto = await downloadPhoto(named: photoNames[0]) let secondPhoto = await downloadPhoto(named: photoNam...
Task를 알아보면서 많은 삽질을 했으니, 이제 다시한번 WWDC 영상을 봐본다. Intro 예전의 프로그래밍 언어는 control flow가 상하로 왔다갔다했었다. 이런 코드는 흐름을 읽는 것을 방해했다.
1건의 항목
같은 일을 여러 사람이 동시에 하는 것 군대 삽질 분대가 다같이 행위는 하나, 주체는 여러개 병렬성은 Concurrency에 포함된다.
1건의 항목
Task를 알아보면서 많은 삽질을 했으니, 이제 다시한번 WWDC 영상을 봐본다. Intro 예전의 프로그래밍 언어는 control flow가 상하로 왔다갔다했었다. 이런 코드는 흐름을 읽는 것을 방해했다.
6건의 항목
www.example.org/index.html 을 GET 요청 한 상황을 가정해보자. 서버는 80번 포트를 열고 요청을 대기한다. 클라이언트는 웹 브라우저 주소창에 URL을 입력한다. 웹 브라우저는 DNS에 물어보고 해당 URL Host의 아이피를 알아낸다.
네트워크 두 대 이상의 컴퓨터를 연결한 것 인터넷 수억개의 컴퓨팅 장치를 연결하는 TCP/IP 프로토콜로 구현된 네트워크 결론 인터넷은 네트워크의 일종 TCP/IP 프로톨을 준수하는 네트워크 이용하기 위해 웹브라우저 사용 .
Packet Delay 패킷스위칭을 시 라우터는 패킷단위의 데이터를 전달받고 목적지로 전달하는 역할을 수행한다. 이 과정에서 라우터가 보낼 수 있는 대역폭보다 더 많은 유저가 더 빠른 속도로 데이터를 보낸다면 딜레이가 생길 수 밖에 없다.
가상 단말기 프로그램 ssh, telnet, tcp 접속을 위한 클라이언트 window환경의 호스트 운영체제에서 다른 운영체제의 CLI환경에 SSH 접속 가능 받아서 사용하면 끝 호스트네임 (사용자이름@IP주소) 포트번호 넣어주고 뿅 .
이 계층에서도 TCP 헤더를 붙여 세그먼트(Segment)를 만드는 캡슐화를 진행한다. 연결형 통신에 사용 연결이라는 통신로를 확보해야 한다. 가상의 통신로 연결을 확립하기 위해서는 TCP 헤더의 코드 비트를 확인해야 한다.
전송 계층 Physical Layer, Data Link Layer, Network Layer 이 세개의 계층만 있으면 목적지에 데이터를 보낼 수 있다. 하지만 데이터 유실, 손상되는 경우 알수도 없고 해줄게 없다. 이를 방지하기 위한 계층이 전송계층이다.
4건의 항목
소수설 주창중 하나인 eXtreme Programming에 대해 알아보자.
지난 10년 동안 우리 분야는 눈부신 성장을 이뤘다. 97년도만 해도 TDD라는 개념을 아무도 몰랐다. 그 당시 단위 테스트는 프로그램이 돌아가는지 확인하는 일회성 코드에 불과했다.
테스트 주도 개발이 주는 혜택은 무엇일까? 테스트 주도 개발 TDD를 처음 들었을 때는 충격이었다. 단위 테스트를 먼저 만들라니? 켄트 백이 TDD를 어떻게 보여주었는지 대한 예시를 보곤 충격먹었다. 코드 실행 주기가 30초였다.
기한이 다가오고, 모르는 기술 앞에서 우리는 압박을 받기 마련이다. 어떻게 헤쳐나가야 할까? 압박 프로개발자는 압박감을 느껴도 침착하고 결단력 있게 행동한다. 압박감이 커질 수록 훈련과 규율을 따른다.
2건의 항목
한다, 하지 않는다 둘뿐이다. 중간은 없다. 아니라고 말하기 시간을 쪼는 관리자와 개발 팀장간의 대화를 소개하며 시작한다. 관리자는 이번주 안에 마치라 한다. 개발자인 나는 4주가 소요된다고 말한다.
팀이 중요할까 프로젝트가 중요할까? 갈아서 만들었나요? 서로 다른 프로젝트에 속한 사람들이 뒤죽박죽이라면 어떨까? 1에는 A, B 2에는 B, C 거기에 프로그래머 말고 사업분석가, 테스터들도 섞인다면? 한 덩어리로 뭉친 팀 팀이 만들어지는데는 시간이 걸린다.
1건의 항목
범주론에서의 카테고리에 대해 알아보자. 프로그래밍과 무슨 관계가 있는가? 왜 이런 메타수학에서 사용되는 개념이 프로그래밍에서 사용될까? 프로그래밍에서 공통적으로 나타내는 개념들 사이의 관계가 카테고리의 조건에 딱 들어맞는다. 모든 프로그래밍 언어에는 타입이 있다.
1건의 항목
변수, 클래스, 구조체 등을 선언할 때, 해당 객체 내부에서 사용하는 타입을 고정하지 않고 임의의 타입을 사용할 수 있도록 하는 것 실제 사용하는 시점에 사용하는 타입을 결정한다.
1건의 항목
GoF의 디자인 패턴, 템플릿 메서드 패턴에 대해 알아본다. 해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
1건의 항목
1D Array & Slicing # www.tensorflow.org/api_guides/python/array_ops import tensorflow as tf import numpy as np import pprint tf.set_random_seed(777) # for reproducibility pp = pprint.PrettyPrinter(indent=4) sess = tf.InteractiveSession() t = np.array([0., 1., 2., 3., 4., 5., 6.]) pp.pprint(t) pr...
1건의 항목
Print..Print 맨날 확인하려면 프린트해야해. GUI로 멋지게 봐보자. 5 Steps of using TensorBoard 내가 Log화 하고 싶은 텐서들을 결정한다. 이것들은 함수로 구현할 수 있다.
23건의 항목 처음 10개의 태그
Supervised Learning (지도 학습) Label이 결정된 데이터를 가지고 학습하는 방법 Example Image Labeling Email spam filter Predicting exam score Unsupervised Learning(비지도 학습) Label이 없는 상태로 학습하는 것, 그룹핑(클러스터링)을 하는 것을 목적으로 한다.
Tensorflow란? 구글에서 만든 데이터 플로우 그래프를 사용해서 수치적 계산을 위한 오픈소스 라이브러리.
Code import tensorflow as tf tf.set_random_seed(777) # 같은 값이 나오도록 하기 위해서 # 데이터 준비 x_train = [1, 2, 3] y_train = [1, 2, 3] # 초기에 랜덤하게 값을 할당한다.
비용 최소화 코드 저번글에서 X, Y에 최적화된 W, b를 찾았다면, 이번에는 고정된 X, Y 에 대해 다른 W값을 넣어주면서 Cost의 변화를 살펴보자.
3개의 Feature를 가진 회귀모델 # Lab 4 Multi-variable linear regression import tensorflow as tf tf.set_random_seed(777) # for reproducibility x1_data = [73., 93., 89., 96., 73.] x2_data = [80., 88., 91., 98., 66.] x3_data = [75., 93., 90., 100., 70.] y_data = [152., 185., 180., 196., 142.] # placeholders for ...
Numpy.loadtxt() 단, csv 파일의 모든 값이 같은 자료형이어야 한다.
# Lab 5 Logistic Regression Classifier import tensorflow as tf tf.set_random_seed(777) # for reproducibility x_data = [[1, 2], [2, 3], [3, 1], [4, 3], [5, 3], [6, 2]] y_data = [[0], [0], [0], [1], [1], [1]] # placeholders for a tensor that will be always fed.
Logistic Regression 의 그래프 함수를 통과하기 전의 값을 Score(Logit) 이라 부른다. 통과한 난 뒤의 값은 확률이다.
Softmax classification # Lab 6 Softmax Classifier import tensorflow as tf tf.set_random_seed(777) # for reproducibility x_data = [[1, 2, 1, 1], [2, 1, 3, 2], [3, 1, 3, 4], [4, 1, 5, 5], [1, 7, 5, 5], [1, 2, 5, 6], [1, 6, 6, 6], [1, 7, 7, 7]] # One-hot Encoding 이라 한다.
Train/Test Dataset 정확도를 측정하는데 있어서 앞에서는, 모델을 훈련하는 데 사용했던 데이터를 가지고서 평가했다. 그런데 사실은 그렇게 수행하면 안되는 것이 당연하다.
1건의 항목
iOS 개발자로서 제플린이나 피그마 창을 하나만 띄워서 보는건 너무 귀찮다. 여러개 띄울수는 없을까? 해결 방법 open -na /Applications/Zeplin.app open -na /Applications/Figma.app 모든 프로그램이 되는 것은 아니다.
2건의 항목
STereoLithography 혹은 Standard Triangulated Language 3차원 데이터를 표현하는 국제 표준 형식중 하나. 복잡한 3차원 폴리곤을 삼각형의 조합으로 만들어 곡면을 표현한다.
일정한 형태의 도형들로 평면을 빈틈 없이 채우는 것을 말함 타일링(Tiling), 평면작성, 쪽매맞춤, 쪽매붙임이라고도 불림 목욕탕 타일, 보도블록 까는 것에서 흔히 볼 수 있음 타일의 개수, 조건들에 따라 다양한 테셀레이션들이 있다.
6건의 항목
소수설 주창중 하나인 eXtreme Programming에 대해 알아보자.
리팩토링에 있어 테스트 코드는 왜 중요할까? 자가 테스트 코드의 가치 프로그래머들의 대부분의 시간은 코드치는 시간이 아니다. 현상황 파악 / 설계 고민 / 디버깅에 많은 시간을 쓴다. 디버깅의 경우 수정자체는 금방 끝난다. 다만 찾는데 고통스럽다.
창발성 단순한 결합이 복잡한 결과를 나타내는 것을 뉴런 하나만으로 의미가 있을까? 뉴런이 모여 어떠한 인식을 하기 위해서는 수십억개의 뉴련이 상호작용해야 한다. 즉, 미시적인 부분의 각각의 특성만으로는 설명할 수 없는 전체로서 나타나는 복잡한 현상을 말한다.
인수 테스트는 무엇일까? 시기 상조의 정밀도 불확실성의 원칙 서류와 실제 시스템의 동작은 다르다. 사업부는 요구했던 내용이 실제 시스템에서 돌아가는 모습과 다르다는 것을 깨닫는다. 요구사항이 정밀해질수록 최종 구현된 시스템과 초기 요구사항의 차이는 벌어진다.
왜 필요할까? V-Diagram 왜 단계적인 테스트가 필요할까? 문제가 발생했을 때, 시간, 의사소통 등의 비용을 줄이기 위함 요구사항 만족함을 증명하는 것 어떤 종류가 있을까? 단위 테스트 테스트가 가능한 최소 단위로 나누어진 모듈, 프로그램, 객체, 클래스 내에서 결함을 찾고 기능을 검증 독립적으로 수행됨 프로그래머가 주도함 코드를 중심으로 수행 이러한 구분은, 어떤 Task냐에 따라 구분이 달라진다.
Test라는 과정은 사실 공학 어디에서든 등장하는 개념이다. 작업에 의존도가 있고, 복잡한 과정으로 넘어갈 수록 이전 단계의 오류는 치명적이기 때문이다. 이를 관리하는 방법이 Test라 할 수 있다. 소프트웨어에서 역시 이러한 개념이 적용된다.
1건의 항목
Test라는 과정은 사실 공학 어디에서든 등장하는 개념이다. 작업에 의존도가 있고, 복잡한 과정으로 넘어갈 수록 이전 단계의 오류는 치명적이기 때문이다. 이를 관리하는 방법이 Test라 할 수 있다. 소프트웨어에서 역시 이러한 개념이 적용된다.
4건의 항목
소수설 주창중 하나인 eXtreme Programming에 대해 알아보자.
지난 10년 동안 우리 분야는 눈부신 성장을 이뤘다. 97년도만 해도 TDD라는 개념을 아무도 몰랐다. 그 당시 단위 테스트는 프로그램이 돌아가는지 확인하는 일회성 코드에 불과했다.
테스트 주도 개발이 주는 혜택은 무엇일까? 테스트 주도 개발 TDD를 처음 들었을 때는 충격이었다. 단위 테스트를 먼저 만들라니? 켄트 백이 TDD를 어떻게 보여주었는지 대한 예시를 보곤 충격먹었다. 코드 실행 주기가 30초였다.
기한이 다가오고, 모르는 기술 앞에서 우리는 압박을 받기 마련이다. 어떻게 헤쳐나가야 할까? 압박 프로개발자는 압박감을 느껴도 침착하고 결단력 있게 행동한다. 압박감이 커질 수록 훈련과 규율을 따른다.
5건의 항목
이제 리팩터링 전반에 적용되는 원칙 몇 가지를 살펴보자. 리팩터링 정의 리팩터링이라는 개발 용어는 굉장히 두루뭉실한 의미로 통용된다. (많은 개발 용어가 그렇다) 하지만 이를 엄격하게 정의해야 유용하다.
리팩토링에 있어 테스트 코드는 왜 중요할까? 자가 테스트 코드의 가치 프로그래머들의 대부분의 시간은 코드치는 시간이 아니다. 현상황 파악 / 설계 고민 / 디버깅에 많은 시간을 쓴다. 디버깅의 경우 수정자체는 금방 끝난다. 다만 찾는데 고통스럽다.
테스트 전략에 대해 알아본다. 테스트 전략 단위 테스트로는 충분치 않다. 프로 개발 팀이라면 훌륭한 테스트 전략이 필요하다. QA는 오류를 찾지 못해야 한다. 개발팀의 목표는 이거다. 그렇다고 해서 QA와 개발자가 서로 적대적인 관계를 가져야 하는 것은 아니다.
왜 필요할까? V-Diagram 왜 단계적인 테스트가 필요할까? 문제가 발생했을 때, 시간, 의사소통 등의 비용을 줄이기 위함 요구사항 만족함을 증명하는 것 어떤 종류가 있을까? 단위 테스트 테스트가 가능한 최소 단위로 나누어진 모듈, 프로그램, 객체, 클래스 내에서 결함을 찾고 기능을 검증 독립적으로 수행됨 프로그래머가 주도함 코드를 중심으로 수행 이러한 구분은, 어떤 Task냐에 따라 구분이 달라진다.
Test라는 과정은 사실 공학 어디에서든 등장하는 개념이다. 작업에 의존도가 있고, 복잡한 과정으로 넘어갈 수록 이전 단계의 오류는 치명적이기 때문이다. 이를 관리하는 방법이 Test라 할 수 있다. 소프트웨어에서 역시 이러한 개념이 적용된다.
1건의 항목
Pass by Reference 내가 클래스를 만들고, 그 클래스를 바탕으로 객체를 만들었다. 이때, 이 클래스에 연결되어 있는, 함수를 메서드라 했다.
8건의 항목
Thread에 대해서 알아본다. 쓰레드(Thread) 쓰레드는 프로그램 **내부의 흐름(맥)**이다.
동시성과 깔끔한 코드는 양립하기 아주 어렵다. 그럼에도 불구하고, 동시성은 왜 필요할까? 객체는 처리의 추상화다. 스레드는 일정의 추상화다. - 제임스 O. 코플리엔 동시성이 필요한 이유? 동시성은 “무엇”과 “언제”의 Coupling을 없애는 전략이다.
무심코 사용하는 많은 비동기 함수들은 사실 변화의 과정을 겪은 결과들이다. 네트워크 I/O API가 어떻게 변화되어 왔는지 알아보자. 한눈에 보기 network API를 사용하다보면 자연스레 머리에 이런 그림이 떠오른다.
여러 일을 여러 사람이 각자 동시에 하는 것 행위도 여러개, 주체도 여러개 가짜 병렬 (논리적 개념) 코어는 하나임에도 두개의 서로 다른 동작을 번갈아가며 처리하여 동시에 수행하는 것 “처럼” 보이는 것 소프트웨어 수준으로 처리 Thread, Actor 등 Reference Parallelism .
RunLoop이란 무엇일까? RunLoop Run loop은 일단 Thread와 관련된 녀석이다. 간단하게 말하면, Run loop은 event를 처리하기 위해 만들어진 loop이다. Timer 또한 함께 처리한다.
autoreleasepool. 어딘가에서 들어봤지만 언제쓰는지는 전혀 몰랐다.
동시성은 이제 프로그래밍에서 빼놓을 수 없는 요소가 되었다.
앞에서는 새롭게 나온 개념들을 어떻게 사용하는지에 대해서 알아보았다. 그렇다면 왜 이렇게 설계했는지, 실제로는 어떻게 동작하는지 알아보자. Threading Model New feed reader 앱을 만든다고 생각해보자. 고수준에서 어떠한 것들이 필요할지 생각해보자.
3건의 항목
Actor Model 개요 객체지향의 패턴에서 메소드 호출 방식이 비동기로 변경된 패턴 Actor들은 모두 Thread 기반으로 동작하는 객체어야 한다. 또한 Actor는 메시지의 전송/수신에 대한 동기화 관리까지 포함한다.
Task는 코드 블럭을 독립적으로 사용할 수 있다. 이러한 점을 사용하면 병렬적으로 특정 코드를 처리하게 할 수도 있다.
Actor isolation Actor의 isolation은 actor type의 근본적인 동작이다. Swift language model에서 어떻게 Actor가 actor 바깥쪽에서 들어오는 비동기 interaction에 대해 고립을 보장하는지 에대해 알아보자.
1건의 항목
일정한 형태의 도형들로 평면을 빈틈 없이 채우는 것을 말함 타일링(Tiling), 평면작성, 쪽매맞춤, 쪽매붙임이라고도 불림 목욕탕 타일, 보도블록 까는 것에서 흔히 볼 수 있음 타일의 개수, 조건들에 따라 다양한 테셀레이션들이 있다.
1건의 항목
시간은 참 짧다. 어떻게 관리해야 할까 시간 관리 저자는 아침에 조용한 시간동안 할일을 정리했다고 한다. 회의 회의는 참석자마다 시간당 약 20만원 정도의 비용이 든다. 급여, 복지비 등등 모두 합치면 회의는 필요하다. 그럼에도 회의는 엄청난 시간 낭비다.
1건의 항목
일괄처리부터 시분할시스템, 최근의 고급운영체제, 인터럽트에 기반한 현대 운영체제까지 변천 역사를 알아본다. 1. 초기 컴퓨터 노가다, 사람 손도 많이가, 장치도 엄청커, 비싸기도 비싸 운영체제는 컴퓨터가 발전하면서 같이 발전하게 되었다.
1건의 항목
디자이너와 일을 하다보면, image의 색상 자체를 변경해주길 바라는 경우가 있다.
1건의 항목
TLS 위에서 동작하는 HTTP 종단간 암호화 (E2E 암호화) HTTP 메시지를 암호화하여 주고 받음 보안이란? 서버 인증 클라이언트는 자신이 진짜 서버임을 알 수 있어야 함 클라이언트 인증 서버는 자신이 진짜 사용자임을 알 수 있어야 함 무결성 클라이언트와 서버는 그들의 데이터가 위조되는 것으로 부터 안전해야 함 암호화 클라이언트와 서버는 도청 걱정 없이 대화가 가능해야 함 동작 방식 서버가 클라이언트에게 인증서를 보내어 자신을 증명한다.
1건의 항목
Expander control github의 issue나 pull request 올릴 때, 정보를 숨기고 싶은 경우가 있다. 그런 경우 toggle을 사용하면 유용하다. expander control이라고도 하는데, 접기/펼치기 를 가능케해서 그런 이름이 붙었다.
4건의 항목
Openpose를 사용하여 동작을 추출, 그것을 기반으로 동작을 예측하고 분류하는 모델을 제작했다.
항공기의 운행을 따라가는 Schedule이라는 변수를 사용하여 높은 정확도로 지연편을 검출할 수 있었다.
서울시 관내 식당의 식수인원을 예측하여 사회적 이익을 가져오는 프로젝트를 진행했다.
2 Stage model을 사용하여 효과적으로 결로를 예측하고과 서비스를 구축하였다.
1건의 항목
개요 SORT(Simple Online and Realtime Tracking)은 매우 알고리즘이 간단함에도 불구하고 효과적이고 실용적인 다중 대상 추적 알고리즘이다. IOU를 기반으로 추적된 물체에 대해 association(할당)을 진행하기 때문에 매우 빠르다.
4건의 항목
www.example.org/index.html 을 GET 요청 한 상황을 가정해보자. 서버는 80번 포트를 열고 요청을 대기한다. 클라이언트는 웹 브라우저 주소창에 URL을 입력한다. 웹 브라우저는 DNS에 물어보고 해당 URL Host의 아이피를 알아낸다.
비트코인의 트랜잭션에 대해 알아보자. Transaction 앞에서 네트워크 혹은 디바이스에 이동하기 위한 공개키와 비밀키의 직렬화 방법에 대해 알아보았다. 물론 그에 대한 파싱까지 같이 배웠다.
이번엔 트랙잭션 입력에 대해 알아보자.
트랜잭션에 대한 수수료는 어떻게 계산되는가? Transaction Fee 보상이 주어지지 않으면 누가 일을 할까? 채굴자는 거래 내역을 정리하고 블록을 만들어 추가함으로서 수수료를 받는다.
1건의 항목
트랜잭션에 대한 수수료는 어떻게 계산되는가? Transaction Fee 보상이 주어지지 않으면 누가 일을 할까? 채굴자는 거래 내역을 정리하고 블록을 만들어 추가함으로서 수수료를 받는다.
2건의 항목
비트코인의 트랜잭션에 대해 알아보자. Transaction 앞에서 네트워크 혹은 디바이스에 이동하기 위한 공개키와 비밀키의 직렬화 방법에 대해 알아보았다. 물론 그에 대한 파싱까지 같이 배웠다.
이번엔 트랙잭션 입력에 대해 알아보자.
2건의 항목
비트코인의 트랜잭션에 대해 알아보자. Transaction 앞에서 네트워크 혹은 디바이스에 이동하기 위한 공개키와 비밀키의 직렬화 방법에 대해 알아보았다. 물론 그에 대한 파싱까지 같이 배웠다.
트랙잭션 출력에 대해 알아보자.
1건의 항목
이전 글에서 PresentationController가 무엇인지 배웠다. 그런데, Transition Animator를 제공하는 부분에서 UIViewControllerAnimatedTransitioning이라는 친구를 보았다. 오늘의 주제는 이녀석이다.
2건의 항목
물리 계층 (Physical Layer L1) 기계적, 전기적인 통신망 접면의 정의 데이터를 전기적인 신호로 변환해서 주고받는 기능만 할 뿐 대표 장비 : 통신 케이블, 리피터, 허브 등 데이터링크 계층 (Data Link Layer 2, L2) 데이타 링크의 제어 (프레임화, 데이터 투명성, 오류 제어 등) 맥 주소를 가지고 통신한다.
전송 계층 Physical Layer, Data Link Layer, Network Layer 이 세개의 계층만 있으면 목적지에 데이터를 보낼 수 있다. 하지만 데이터 유실, 손상되는 경우 알수도 없고 해줄게 없다. 이를 방지하기 위한 계층이 전송계층이다.
1건의 항목
TLS 위에서 동작하는 HTTP 종단간 암호화 (E2E 암호화) HTTP 메시지를 암호화하여 주고 받음 보안이란? 서버 인증 클라이언트는 자신이 진짜 서버임을 알 수 있어야 함 클라이언트 인증 서버는 자신이 진짜 사용자임을 알 수 있어야 함 무결성 클라이언트와 서버는 그들의 데이터가 위조되는 것으로 부터 안전해야 함 암호화 클라이언트와 서버는 도청 걱정 없이 대화가 가능해야 함 동작 방식 서버가 클라이언트에게 인증서를 보내어 자신을 증명한다.
1건의 항목
Intuition Concept 이게 정적분이죠! 하지만 컴퓨터는 연속적인 값을 인식할 수 없기 때문에 (사실 점들의 집합이 선이긴 하죠) 이산적인 값에 대해서 이 값에 근사해야 합니다.
3건의 항목
분기 한정법에 대해 알아보자. 분기 한정법 Branch : 이전 상태 공간 트리에서 다음 가지로 넘어가는 경우를 말함 Bound : 한계 이전의 백 트레킹과 크게 다르지 않다. 그 부분 집합의 합을 구하는 문제와 크게 다르지는 않다.
골드3 : 그래프 문제이다. 생각 현재 시작 위치에서 다음 쓰레기를 치우고, 그 위치에서 다시 다음 경로를 탐색하는 과정으로 문제를 풀려 했다. 하지만 코드를 짜면서도 탐색과정이 계속하여 중복되서 어떻게 풀어야 할지 고민을 많이했다.
Overfitting? Train data set에서는 accuracy가 높게 나오지만, Test data set에서 accuracy가 낮게 나오는 현상 Layer수가 늘어날 수록 training err는 떨어진다.
4건의 항목
가지를 끊어버리는 백 트래킹에 대해 알아보자.
골드2 : 트리, 유니온파인드 문제이다. Root 찾기 흠. 입력으로 들어오는 node들이 순차적이지 않다는 점을 알아야 한다.이거 때매 시간 엄청 날렸다 즉, 랜덤으로 들어오는 그래프 정보를 가지고, 어떤 녀석이 tree의 root가 될 것인지 알아내야 한다.
풀이 트리 구현을 한번도 안해보다가 처음으로 했다. 첫 시도에서는 바로 구현을 못하고 다른 코드를 참고 했다. 반복적으로 연습하면서 체득을 해야 겠다.
용어 정점(Vertex, Node): 그래프의 노드 간선(Edge): 그래프의 노드를 연결하는 선 방향 (화살표) 무방향 그래프(Undirected Graph): 간선에 방향이 없는 그래프 방향 그래프(Directed Graph): 간선에 방향이 있는 그래프 값 가중치(Weight): 간선에 부여된 값 정의 그래프(Graph) 그래프(graph) G는 정점(vertex)의 집합 V와 간선(edge)의 집합 E로 구성된다.
1건의 항목
특정 문자열이나 공백을 제거하려면 어떻게 해야할까? 공백 싹다 지우기 let myString = "This \n is a st\tri\rng" let trimmedString = myString.components(separatedBy: .whitespacesAndNewlines).joined() 양쪽 지우기 var string = " AAAAAAAA " let trimedString = string.trimmingCharacters(in: [" "]) // 양끝단의 특정 문자도...
1건의 항목
에러 처리는 프로그래밍에서 빼놓을 수 없다. 에러 관리를 제대로 해두어야 추후 디버깅에 있어 이득을 볼 수 있다. 미래의 나를 위한 투자?의 개념이다. 에러를 관리하는 것도 중요하지만 에러를 내는 방법, 에러를 감지하여 처리하는 방법을 아는 것 역시 중요하다.
3건의 항목
개체 지향을 얘기하면 꼭 나오는 단어인 예외에 대해서 알아본다. Exception 사실 예외는 개체지향의 일부가 아니다.
깨끗한 코드와 오류 처리는 화실히 연관성이 있다. 하지만 오류 처리로 인해 프로그램 논리를 이해하기 어려줘진다면 깨끗한 코드가 아니다. 오류보다 예외를 사용하라 에전 프로그래밍 언어는 예외를 지원하지 않았다.
예외 처리 예외 처리를 사용하므로써 알고리즘이 마주할 수 있는 예외 상황에 대해 코드를 분리할 수 있다. 이 결과 알고리즘에 보다 집중할 수 있다. 에러를 만들어 보자.
1건의 항목
튜플(tuple)은 몇 가지 점을 제외하곤 리스트와 거의 비슷하다. 리스트와 다른 점은 다음과 같다. 리스트는 []으로 둘러싸지만 튜플은 ()으로 둘러싼다. 리스트는 그 값의 생성, 삭제, 수정이 가능하지만 튜플은 그 값을 바꿀 수 없다.
2건의 항목
튜링 완전이란 무엇인가? Turing Machine 가상의 기계 무한히 긴 테이프 그 테이프를 읽고 쓰는 헤드 상태 머신 (현재 상태와 입력 문자를 기반으로 다음 상태와 출력 문자를 결정) “이론상으로 모든 계산을 수행할 수 있음” Turing Completeness system 튜링 기계가 할 수 있는 모든 계산을 수행할 수 있는 시스템를 말함 언어로는 C, Java, Python, Ruby, JavaScript 등이 있음 Turing Incompleteness system 튜링 완전하지 않은 언어를 말함 특정한 종류의 계산을 수...
비트코인 스크립트는 무엇일까? Smart Contract 비트코인이 전송되는데 있어 어떠한 계약을 걸 수 있다. 그걸 스마트 컨트랙트이라고 한다. 그리고 그 계약을 서술하는 프로그래밍 언어가 스크립트이다. 스크립트는 스택 기반의 스크립트 언어이다.
2건의 항목
튜링 완전이란 무엇인가? Turing Machine 가상의 기계 무한히 긴 테이프 그 테이프를 읽고 쓰는 헤드 상태 머신 (현재 상태와 입력 문자를 기반으로 다음 상태와 출력 문자를 결정) “이론상으로 모든 계산을 수행할 수 있음” Turing Completeness system 튜링 기계가 할 수 있는 모든 계산을 수행할 수 있는 시스템를 말함 언어로는 C, Java, Python, Ruby, JavaScript 등이 있음 Turing Incompleteness system 튜링 완전하지 않은 언어를 말함 특정한 종류의 계산을 수...
튜링 머신 다비트 힐베르트 20세기 가장 위대한 수학자 힐베르트 문제가 이 아저씨 힐베르트의 꿈 정의(def)와 공리(axiom)를 입력하면 모든 수학적 명제를 도출해 줄 수 있는 기계를 만들자 쿠르트 괴델 힐베르트의 꿈을 박살냄 ㅎㅎ 불완전성 정리 기계적인 방식으로 모든 수학적 명제를 도출할 수 없다.
2건의 항목
Swift에서 Struct, Class, Enum을 초기화할 수 있는 Initializer에 대해서 알아보자. 이 부분에서 class 초기화는 다른 언어의 초기화 과정과 약간 다른 부분이 있다. 해당 내용은 좀 길어질 수 있어 다음 포스팅으로 넘겼다.
이전 글에서 초기화를 알아보았다. 그런데 그 과정에서 Two Phase Initialization이라는 생소한 단어를 보았다면 잘 왔다. Swift는 상속 과정에서 모든 instance의 property의 값이 보장되기 위한 방법으로 2단계 초기화 방법을 사용한다.
2건의 항목
실버2 : two pointer 문제이다. 풀이 투포인터는 i이상 j미만으로 짠다. 같을 경우는 i를 늘려서 파악한다.
What is pointer 포인터는 먼저 자료형으로 선언할 수 있다. 각각의 자료형에 대해 * 를 달게 되면 선언할 수 있으며.
1건의 항목
자료형 프로그램에서 선언된 변수들이 기억 공간에서 어떻게 저장되고 처리되어야 할지, 컴파일러에게 알려줌 종류 정수형 실수형 문자형 사용자 정의 자료형 정수형 소수점이 없는 숫자 음의 정수, 0 , 양의 정수 오버플로우(overflow) 데이터 허용 범위를 넘는 값을 변수에 저장할 때, 의도한 값이 아닌 다른 값이 저장되는 것 #include <stdio.h> int main(void) { short a = 32767, b=2, c; unsigned short d; c = a+b; d = a+b; printf("c...
1건의 항목
자료형 프로그램에서 선언된 변수들이 기억 공간에서 어떻게 저장되고 처리되어야 할지, 컴파일러에게 알려줌 종류 정수형 실수형 문자형 사용자 정의 자료형 정수형 소수점이 없는 숫자 음의 정수, 0 , 양의 정수 오버플로우(overflow) 데이터 허용 범위를 넘는 값을 변수에 저장할 때, 의도한 값이 아닌 다른 값이 저장되는 것 #include <stdio.h> int main(void) { short a = 32767, b=2, c; unsigned short d; c = a+b; d = a+b; printf("c...
1건의 항목
자료형 프로그램에서 선언된 변수들이 기억 공간에서 어떻게 저장되고 처리되어야 할지, 컴파일러에게 알려줌 종류 정수형 실수형 문자형 사용자 정의 자료형 정수형 소수점이 없는 숫자 음의 정수, 0 , 양의 정수 오버플로우(overflow) 데이터 허용 범위를 넘는 값을 변수에 저장할 때, 의도한 값이 아닌 다른 값이 저장되는 것 #include <stdio.h> int main(void) { short a = 32767, b=2, c; unsigned short d; c = a+b; d = a+b; printf("c...
1건의 항목
범주론에서의 카테고리에 대해 알아보자. 프로그래밍과 무슨 관계가 있는가? 왜 이런 메타수학에서 사용되는 개념이 프로그래밍에서 사용될까? 프로그래밍에서 공통적으로 나타내는 개념들 사이의 관계가 카테고리의 조건에 딱 들어맞는다. 모든 프로그래밍 언어에는 타입이 있다.
2건의 항목
Generic의 경우 코드 중복을 줄일 수 있는 좋은 기능이다. 잘 다뤄둔다면 중급(?) 이상의 개발자가 되는데 큰 도움을 줄 것이다.
type alias를 공부하면서 마주쳤던 associated type에 대해 알아본다.
2건의 항목
Type Constructor 새로운 데이터 타입을 만드는 틀. A라는 진짜 데이터가 있을 때, 이 값을 유지하면서 감쌀 수 있는 논리적 구조. 감싼다는 측면에서 바라보았을 때 이 정의에 부합하는 녀석들은 이런 것들이 있을 수 있겠다.
Functor란 무엇인가? Functor Functor: 임의의 타입 T, U가 주어졌을 때, 연산 lift이 정의되는 01.
1건의 항목
Semantics Type typealias Kilograms = Double struct Package { var weight: Kilograms } Combine Protocols protocol ReadAccess {} protocol WriteAccess {} typealias AdminAccess = ReadAccess & WriteAccess struct Teacher: AdminAccess {} Int, Double은 어디서든 사용되는 타입이다.
1건의 항목
개요 앞서 배운 Dilated Convolution(atrous convolution) 을 적극적으로 활용할 것을 제안하여 segmentation 을 해결하자는 논문이다.
1건의 항목
전송 계층 Physical Layer, Data Link Layer, Network Layer 이 세개의 계층만 있으면 목적지에 데이터를 보낼 수 있다. 하지만 데이터 유실, 손상되는 경우 알수도 없고 해줄게 없다. 이를 방지하기 위한 계층이 전송계층이다.
4건의 항목
실수가 2번이상 반복되면 실력이다. UI 개발시 한방에 끝나기 위한 Edge case를 정리하자. 수시로 업데이트 한다.
Border는 바깥으로 그려질까 안쪽으로 그려질까? 오해와 삽질에 대해 정리해본다. Answer innerborder를 그리기 위해서는 현재 표현되는 frame을 border width만큼 줄여버리면 된다.
iOS Layout을 적용하는 것에는 여러가지 방법이 있다. autolayout만이 정답이라 생각했는데, 오산이었다. 이 부분은 주기적인 업데이트를 하도록 하겠다. Storyboard 장점으로는 UI 구성을 눈으로 확인할 수 있다는 점이다.
테이블 뷰의 reorder 버튼을 변경해야 하는데, API가 없어 고생했던 경험을 공유한다.
1건의 항목
이전에 앱의 실행 과정에 대해서 공부했을 때 제대로 이해하지 못했었다. 이번 기회에 제대로 이해하는 자리를 가져보려 한다. 조금 성장했는지 약간 더 이해가 되었다! 그럼 시작하자.
1건의 항목
CollectionView나 TableView에서 특정 요소로 스크롤 시키는 방법에 대해 알아본다.
2건의 항목
앞 글에서 간단하게 소개했지만 Responder Chain은 간단하게 알고 넘어갈 만한 것이 아니다.
Target / Action은 사용자 interaction을 처리하는 주요 방법으로 알려져있다. 문서를 읽으며 알아보자. Target/Action Target/Action은 대표적인 비동기 이벤트이다. Action이 왔을 때, 처리되는 방식이기 때문이다.
1건의 항목
앞 글에서 간단하게 소개했지만 Responder Chain은 간단하게 알고 넘어갈 만한 것이 아니다.
2건의 항목
Data(contentof)는 로컬 파일을 불러오기 위한 메서드이다. 애초에 동기 메서드이다. 가끔 이걸 DispatchQueue에 Item으로 싼뒤에 넣어 비동기 처럼 사용하는 경우가 있는데, 이러면 안된다. API의 존재 이유에 맞지 않기 때문이다.
디자인 가이드를 읽다보면, Asset이 없는 경우가 있다. 이럴 경우 그냥 View를 만들고 Image화 해서 사용하면 좋겠는데.
1건의 항목
UIImageView 내부에 GestureRecognizer를 넣고 이벤트를 받으려 했더니 동작하지 않았다. userInteractionEnabled UIImageView의 userInteractionEnabled의 값은 defaultValue가 false이다.
38건의 항목 처음 10개의 태그
Border는 바깥으로 그려질까 안쪽으로 그려질까? 오해와 삽질에 대해 정리해본다. Answer innerborder를 그리기 위해서는 현재 표현되는 frame을 border width만큼 줄여버리면 된다.
TableView dataSource에서 아이템을 가져오다 outOfIndex가 나서 crash가 났다. 이로부터 배운 점에 대해 적어본다. 어떤 상황인가? crash 로그를 확인해보니, tableView에서 indexPath를 벗어나 발생했음을 확인했다.
headerView가 있는 TableView에서 높이는 제대로 맞는데, 이상하게 셀수가 많아질 상황에서 끝까지 스크롤되지 않는 문제가 발생했다. headerView의 layout을 먼저 잡아주어야 한다.
이전에 앱의 실행 과정에 대해서 공부했을 때 제대로 이해하지 못했었다. 이번 기회에 제대로 이해하는 자리를 가져보려 한다. 조금 성장했는지 약간 더 이해가 되었다! 그럼 시작하자.
iOS 앱개발에서 화면을 담당한다면 피할 수 없는 autolayout! 공식 문서를 읽어보며 정리해보자.
이전 글에서 PresentationController가 무엇인지 배웠다. 그런데, Transition Animator를 제공하는 부분에서 UIViewControllerAnimatedTransitioning이라는 친구를 보았다. 오늘의 주제는 이녀석이다.
WWDC 2019 키노트를 확인해보며 알짜 정보를 쏙쏙 뽑아보자. Dark Mode iOS 13부터 지원되는 기능이다. 말 그대로 dark mode이다. 해당 기능을 만들면서 고민했던 것은 역시 Mode에 따라 변화하는 색상이었다.
맨날 헷갈리는 이것. 오늘은 뽑아버리겠다. Frame Super view의 좌표계를 기준으로 했을 때 본인의 좌표계를 말한다. 우리가 위치를 표시하기 위해서는 기준 좌표계가 있어야 한다.
Hit Testing 그럼 터치가 어디서 발생했는지는 어떻게 알 수 있을까? 즉, 터치가 발생한 시점에, 어떻게 내가 누른 가장 상위 객체(상단은 view 계층에서 top을 말함)를 판단할 수 있을까? 여기서 이벤트에 반응한 가장 상위 객체를 first Responder라 한다.
이미지 자체를 늘리고 싶은데. 특정 부분은 고정시키고 싶으면 어떻게 할까? Image Stretch a.k.a nine patch 이렇게 이미지의 특정 부분은 고정시키고 나머지만 늘릴 수 있도록 하게 만드는 것을 Image Stretch라 한다.
1건의 항목
UILabel에 들어간 text를 모두 표현하고 싶다면 어떻게 해야할까? 쉬워보이지만 의외로 삽질을 하는 부분이다. 간단하게 알아보자.
1건의 항목
ViewController는 계층을 이루면서 구성된다. 그 중 대표적으로 알려진 것이 NavigationController, TabBarController 이다.
1건의 항목
입문하지 얼마 되지 않은 나는 여전히 기본 Transition만 사용하고 있다. 나도 화려한 UX를 만들어보고 싶다! 그 전에, 그 시작이 되는 UIPresentationController부터 알아보자.
1건의 항목
앞 글에서 간단하게 소개했지만 Responder Chain은 간단하게 알고 넘어갈 만한 것이 아니다.
1건의 항목
Shadow를 보다가 scale에 대해서 알게된 내용을 적어본다. 정리 retina display가 나오면서 화면의 기본단위를 논리적으로 정의된 것을 사용하게 되었다. Point가 그것이다.
2건의 항목
UIScrollView의 ContentInset, ContentOffset, ContentSize에 대해서 알아본다.
설명 실제 동작하는 스타벅스 앱을 클론 코딩하였습니다. 처음으로 팀플을 진행했으며, commit convention, 브랜치 전략등을 사용해보았습니다.
1건의 항목
stack view는 autolayout을 적용하지 않고도 layout을 잡을 수 있는 신기한 친구다. 한번 알아보자. 이 글을 읽기 위해서는 이전글을 읽고 오는 것이 이해가 쉽다.
1건의 항목
UITabBarController 위 그림에서 가운데 있는 것이 TabbarController이다. TabBarController의 경우 다음과 같은 특징을 갖는다.
8건의 항목
TableView dataSource에서 아이템을 가져오다 outOfIndex가 나서 crash가 났다. 이로부터 배운 점에 대해 적어본다. 어떤 상황인가? crash 로그를 확인해보니, tableView에서 indexPath를 벗어나 발생했음을 확인했다.
headerView가 있는 TableView에서 높이는 제대로 맞는데, 이상하게 셀수가 많아질 상황에서 끝까지 스크롤되지 않는 문제가 발생했다. headerView의 layout을 먼저 잡아주어야 한다.
CollectionView나 TableView에서 특정 요소로 스크롤 시키는 방법에 대해 알아본다.
테이블 뷰의 reorder 버튼을 변경해야 하는데, API가 없어 고생했던 경험을 공유한다.
TableView 리팩토링 하다가 레거시를 다르게 바꿀 수 있을까하면서 알아보았다. 이걸 배우면 이런게 가능하다. 자동으로 이렇게 애니메이션을 처리해준다! iOS 13에서부터 적용가능하다.
tableView를 다루다보면 셀의 크기를 정하는 일이 상당히 귀찮을 때가 있다. 어떻게 하면 동적인 cell을 만들 수 있는지 확인해보자. Working with Self-Sizing Table View Cells 애플에서는 일단 이 옵션을 사용하지 말라고 한다.
UITableView의 Separator와 관련해 해결했던 것들을 적어둔다. 높이 늘리기 찾아본 결과 방법이 없다. 셀 안에 UIView를 만들어서 처리하는 것이 방법. Separator 길이 조정 self.tableView.
UITableView의 바닥을 어느정도 띄워야할 필요가 있었다. 어떻게 했는지 기록해둔다. Solution UIScrollView의 contentInset 동작을 이해했다면 쉽게 알아먹을 수 있다.
1건의 항목
앞 글에서 간단하게 소개했지만 Responder Chain은 간단하게 알고 넘어갈 만한 것이 아니다.
1건의 항목
회전과 관련된 코드를 보다보니, compact, regular와 같은 용어들이 보였다. UITraitCollection은 무엇일까? Size Classes 먼저, Apple이 다양한 디바이스들의 스크린 모양을 어떻게 논리적으로 관리하는 지 부터 알아야 한다.
3건의 항목
업무 하면서 Shadow에 대해 알게된 내용을 정리한다.
디자인 가이드를 읽다보면, Asset이 없는 경우가 있다. 이럴 경우 그냥 View를 만들고 Image화 해서 사용하면 좋겠는데.
View 화면을 구성하는데 기본이 되는 class NSObject를 상속한 UIResponder를 상속해서 구성됨 CustomView는 UIView를 상속함 UIImageView, UILable, UIScrollView… 가능한 것들 Drawing Animation Layout subview 관리 Event Handling UIResponder 상속하기 때문에, touch와 같은 event에 반응 가능 gesture 추가 초기화 형태 // code init(frame:) init() // default parameter = CGRe...
4건의 항목
ViewController는 계층을 이루면서 구성된다. 그 중 대표적으로 알려진 것이 NavigationController, TabBarController 이다.
UITabBarController 위 그림에서 가운데 있는 것이 TabbarController이다. TabBarController의 경우 다음과 같은 특징을 갖는다.
ViewController는 iOS 앱 개발에서 빼놓을 수 없는 요소이다. 구조적으로 어떻게 구성되었는지 알아보고, 어떤 life cycle을 가지는지 이해해보자. 그럼 시작하자.
UIViewController가 init 되는 시점에 특정 View를 설정하면 안되는가? 왜 안되는가? 핵심 요약 UIViewController의 init에 View를 설정하게 되면, 메모리 부족으로 인해 View가 해제되는 상황에 대응할 수 없다.
1건의 항목
이전에 앱의 실행 과정에 대해서 공부했을 때 제대로 이해하지 못했었다. 이번 기회에 제대로 이해하는 자리를 가져보려 한다. 조금 성장했는지 약간 더 이해가 되었다! 그럼 시작하자.
3건의 항목
UML에서 아직 그래도 많이 쓰이는 Class Diagram에 대해 정리해보자.
다음으로 또 많이 쓰이는 Sequence Diagram에 대해 알아보자. 해당 글의 사진 자료는 외부 블로그를 많이 참고했다.
UML은 무엇일까? 그리고 왜 쓰였을까? UML(Unified Modeling Language) 시스템의 디자인을 시각화하기 위해 만든 표준 시스템 설계에 대한 그림을 그릴 때, 해당 표준이 없다면 중구난방으로 그려 의사소통의 효율성이 저해되었을 것 구조에 관한 다이어그램 7개, 동작에 관한 다이어그램 7개가 있음 현재 UML은? 이전에 유행하던 시절이 있었음 그 당시에는 외주받아 시스템의 개략도를 보여주고, 계약이 체결되는 방식이었기 때문이었음 현재는 회사안에 개발팀이 있기 때문에 필요없는 문서화라 생각되어 지양되는 분위기 지금은...
1건의 항목
예외 처리를 제대로 하지 못하는 이유는 무엇일까? 예외 처리를 제대로 하지 못하는 이유 과거에 주류이던 예외 처리 방식은 지속적으로 작동이 보장되어야 하는 프로그램에 대해 “하드웨어가 멈추는 크래시”가 무서워서 그랬을 수 있다.
1건의 항목
Overfitting? Train data set에서는 accuracy가 높게 나오지만, Test data set에서 accuracy가 낮게 나오는 현상 Layer수가 늘어날 수록 training err는 떨어진다.
1건의 항목
자료형 프로그램에서 선언된 변수들이 기억 공간에서 어떻게 저장되고 처리되어야 할지, 컴파일러에게 알려줌 종류 정수형 실수형 문자형 사용자 정의 자료형 정수형 소수점이 없는 숫자 음의 정수, 0 , 양의 정수 오버플로우(overflow) 데이터 허용 범위를 넘는 값을 변수에 저장할 때, 의도한 값이 아닌 다른 값이 저장되는 것 #include <stdio.h> int main(void) { short a = 32767, b=2, c; unsigned short d; c = a+b; d = a+b; printf("c...
1건의 항목
네트워크 공부를 하다보니, 인코딩이라는 것에 대해 제대로 이해할 필요가 있다고 생각했다. 왜 필요한지, 어떻게 사용하는지에 대해서 이해해보는 포스팅이다.
8건의 항목
그래프 용어 V : vertex E : Edge path 연결 그래프 : 어떤 두 정점 사이에도 경로가 존재하는 그래프 부분 그래프 가중치 포함 그래프 : Edge에 가중치가 달려있음 순환 경로 순환 그래프, 비순환 그래프 트리 - 비순환, 비방향그래프 신장 트리 : 연결된, 비방향성 그래프에서 순환경로를 제거하면서 연결된 부분 그래프가 되도록 하는 트리 신장 트리의 개수는 Cayley’s formula에 따른 개수를 가짐 최소비용신장트리 신장 트리가 되는 부분 그래프 중에서 가중치가 최소가되는 부분 그래프 무조건 트리로 나온다.
골드2 : 유니언 파인드 문제이다. 생각 이런 문제는 정말 비행기가 온다고 생각하고 푸는 것이 가장 좋은 것 같다. 그러니까 모든 문제는 시뮬레이션을 제대로 하는 것이 중요. 총 5개의 게이트가 있다고 하자. 그 때, 4번으로 비행기가 들어온다.
골드4 : union find 문제이다. 풀이 기본적인 union find 문제. 코드를 기억하자.
골드4 : 유니온 파인드 문제이다. 생각 이 문제의 핵심은 갈 수 있는지 없는지를 판단하는 것이다. 처음에 그래프라고 생각하고 접근하니, dfs를 수행할 때 depth가 너무 깊어져 터질 것 같아 다른 방법으로 진행했다.
골드4 : 유니온 파인드 문제이다. 생각 문제를 이해해보자. 먼저 처음에 아무일도 하지 않을 경우에 입력된 n에 대해서 0 ~ n까지의 바구니가 생긴다. 그 다음, m개의 명령이 들어온다.
실버2 : 유니온파인드 문제이다. 풀이 유니온 파인드로 같은 집합인지 아닌지를 검증하고, 같은 집합이라면 촌수를 계산한다! 이 때 pypy로 하지말고 python3로 할 것.
골드2 : union find 문제이다. 풀이 으으 너무 아쉽다. 잘해놓고 같은 친구가 들어올 경우에 계산이 중복된다는 것을 체크하지 못했다. 그리고 지나고 보니 코드가 더러워서 다시짰다.
골드2 : 트리, 유니온파인드 문제이다. Root 찾기 흠. 입력으로 들어오는 node들이 순차적이지 않다는 점을 알아야 한다.이거 때매 시간 엄청 날렸다 즉, 랜덤으로 들어오는 그래프 정보를 가지고, 어떤 녀석이 tree의 root가 될 것인지 알아내야 한다.
1건의 항목
Monad는 어떻게 정의할 수 있을까? Monad Monad: 다음의 연산들이 정의된 Functor unit: T -> M<T> (return in Haskell) flat: M<M<T>> -> M<T> (join in Haskell) Functor에 unit하고 flat추가한게 모나드다.
4건의 항목
리팩토링에 있어 테스트 코드는 왜 중요할까? 자가 테스트 코드의 가치 프로그래머들의 대부분의 시간은 코드치는 시간이 아니다. 현상황 파악 / 설계 고민 / 디버깅에 많은 시간을 쓴다. 디버깅의 경우 수정자체는 금방 끝난다. 다만 찾는데 고통스럽다.
지난 10년 동안 우리 분야는 눈부신 성장을 이뤘다. 97년도만 해도 TDD라는 개념을 아무도 몰랐다. 그 당시 단위 테스트는 프로그램이 돌아가는지 확인하는 일회성 코드에 불과했다.
왜 필요할까? V-Diagram 왜 단계적인 테스트가 필요할까? 문제가 발생했을 때, 시간, 의사소통 등의 비용을 줄이기 위함 요구사항 만족함을 증명하는 것 어떤 종류가 있을까? 단위 테스트 테스트가 가능한 최소 단위로 나누어진 모듈, 프로그램, 객체, 클래스 내에서 결함을 찾고 기능을 검증 독립적으로 수행됨 프로그래머가 주도함 코드를 중심으로 수행 이러한 구분은, 어떤 Task냐에 따라 구분이 달라진다.
Test라는 과정은 사실 공학 어디에서든 등장하는 개념이다. 작업에 의존도가 있고, 복잡한 과정으로 넘어갈 수록 이전 단계의 오류는 치명적이기 때문이다. 이를 관리하는 방법이 Test라 할 수 있다. 소프트웨어에서 역시 이러한 개념이 적용된다.
1건의 항목
실제 컴파일, 링킹이 끝난 뒤의 결과물에 대해서는 잘 모르는 것 같다. 실행 파일은 어떻게 구성되어 있는 걸까? 우리가 사용하는 프로그램들은, 바이너리화되어 있는 파일의 형태로 존재한다. 그런데, 이 실행파일의 형태는 OS에 따라 다른 형태로 존재한다.
1건의 항목
Deep Link 기존의, 즉 옛날옛적의 웹은 home page를 통해 각 문서에 접근하여 정보를 얻는 방식을 취했었다.
1건의 항목
오래 기다렸다. ARC가 무엇일까? 자바의 Garbage Collector와는 무엇이 다를까? 장단점은 무엇일까? 어떤 원리로 동작하는 것일까? 발생하는 문제점은 무엇일까? 어떻게 해결할 수 있을까? 이러한 내 궁금증들을 담았다.
1건의 항목
code를 보다가 unwind segue라는 녀석을 보게 되었다. 처음 보는 친구라 정리해보려고 한다. Unwind Segue 일단 Unwind라는 뜻을 알아보자. 음. 무언가를 푼다는 개념같다.
1건의 항목
개요 Noh, H., Hong, S., and Han, B. Learning Deconvolution Network for Semantic Segmentation. ICCV, 2015.
1건의 항목
HTTP 메소드 종류 GET 요청이 캐시된다. 브라우저, 로봇이 임의로 요청이 가능하다.
2건의 항목
풀이1 실버4 : 이분 탐색 문제이다. 생각 특정 숫자가 등장하는 lowerBound와 UpperBound를 잡아내면 끝나는 문제이다.
문자열 처리는 파이썬으로 find() isalpha() isalnum() for ~ in list, string으로 하나씩 꺼낼 수 있다. ~ in list, string으로만 하면 t/f 반환한다.
1건의 항목
Task Segmentation semantic segmentation은 이미지 내에 있는 물체들을 의미 있는 단위로 분할해내는 것이다. 좀 더 구체적으로 이야기하면, 이미지의 각 픽셀이 어느 클래스에 속하는지 예측하는 것이다.
2건의 항목
Uniform Resource Identifier 아무래도 URL, URN의 상위 개념이다보니, 추상적인 의미를 더 많이 가진다고 생각하면 된다. 즉, 특정 정보를 식별할 수 있는 문자열이라면 URI라 생각할 수 있다.
문득 이 차이가 헷갈렸다. URI가 더 큰 집합이라는 것은 알고 있었으나 정확하게 모르는 듯하다. 정리해두자. 들어가기에 앞서 먼저 URI와 같은 친구들이 필요한 이유부터 생각해보자. 결국 웹 기술은 어렵게 생각할 필요없이, 원하는 문서를 가져다 주기만 하면 된다.
5건의 항목
문득 이 차이가 헷갈렸다. URI가 더 큰 집합이라는 것은 알고 있었으나 정확하게 모르는 듯하다. 정리해두자. 들어가기에 앞서 먼저 URI와 같은 친구들이 필요한 이유부터 생각해보자. 결국 웹 기술은 어렵게 생각할 필요없이, 원하는 문서를 가져다 주기만 하면 된다.
Uniform Resource Locator 보통 http, https protocol을 많이 사용한다. URI와의 차이점은, 정확한 위치를 기술해야 한다는 것이다. 다음의 두 URI의 차이점을 생각해보자. 이해가 가는가? 별 것 없다!.
URLSession을 만들었다면, 그 안에 들어갈 URL과 Request를 정의해야 한다. 이번에도 문서를 보며 알아보자.
iOS App에서 서버와 통신하기 위해 Apple에서는 URLSession이라는 기본 API를 제공하고 있다.
이전 글에서 URLSession, URL, URLRequest 를 생성하는 방법을 알아보았다. 이번에는 어떤 Task들이 있는지 알아보자. Task Apple에서 기본적으로 제안하는 task의 종류는 총 3가지이다.
1건의 항목
네트워크 공부를 하다보니, 인코딩이라는 것에 대해 제대로 이해할 필요가 있다고 생각했다. 왜 필요한지, 어떻게 사용하는지에 대해서 이해해보는 포스팅이다.
1건의 항목
URLSession을 만들었다면, 그 안에 들어갈 URL과 Request를 정의해야 한다. 이번에도 문서를 보며 알아보자.
1건의 항목
URLSession을 만들었다면, 그 안에 들어갈 URL과 Request를 정의해야 한다. 이번에도 문서를 보며 알아보자.
3건의 항목
URLSession을 만들었다면, 그 안에 들어갈 URL과 Request를 정의해야 한다. 이번에도 문서를 보며 알아보자.
iOS App에서 서버와 통신하기 위해 Apple에서는 URLSession이라는 기본 API를 제공하고 있다.
Data(contentof)는 로컬 파일을 불러오기 위한 메서드이다. 애초에 동기 메서드이다. 가끔 이걸 DispatchQueue에 Item으로 싼뒤에 넣어 비동기 처럼 사용하는 경우가 있는데, 이러면 안된다. API의 존재 이유에 맞지 않기 때문이다.
1건의 항목
이전 글에서 URLSession, URL, URLRequest 를 생성하는 방법을 알아보았다. 이번에는 어떤 Task들이 있는지 알아보자. Task Apple에서 기본적으로 제안하는 task의 종류는 총 3가지이다.
2건의 항목
문득 이 차이가 헷갈렸다. URI가 더 큰 집합이라는 것은 알고 있었으나 정확하게 모르는 듯하다. 정리해두자. 들어가기에 앞서 먼저 URI와 같은 친구들이 필요한 이유부터 생각해보자. 결국 웹 기술은 어렵게 생각할 필요없이, 원하는 문서를 가져다 주기만 하면 된다.
Uniform Resource Name 그럼 이녀석은 왜 나왔는가? URL의 단점때문에 등장했다. URL은 “정확한 위치”를 가리켜야 한다는 제약을 가지고 있다.
1건의 항목
설명 실제 동작하는 스타벅스 앱을 클론 코딩하였습니다. 처음으로 팀플을 진행했으며, commit convention, 브랜치 전략등을 사용해보았습니다.
1건의 항목
UIImageView 내부에 GestureRecognizer를 넣고 이벤트를 받으려 했더니 동작하지 않았다. userInteractionEnabled UIImageView의 userInteractionEnabled의 값은 defaultValue가 false이다.
1건의 항목
네트워크 공부를 하다보니, 인코딩이라는 것에 대해 제대로 이해할 필요가 있다고 생각했다. 왜 필요한지, 어떻게 사용하는지에 대해서 이해해보는 포스팅이다.
1건의 항목
네트워크 공부를 하다보니, 인코딩이라는 것에 대해 제대로 이해할 필요가 있다고 생각했다. 왜 필요한지, 어떻게 사용하는지에 대해서 이해해보는 포스팅이다.
1건의 항목
네트워크 공부를 하다보니, 인코딩이라는 것에 대해 제대로 이해할 필요가 있다고 생각했다. 왜 필요한지, 어떻게 사용하는지에 대해서 이해해보는 포스팅이다.
1건의 항목
네트워크 공부를 하다보니, 인코딩이라는 것에 대해 제대로 이해할 필요가 있다고 생각했다. 왜 필요한지, 어떻게 사용하는지에 대해서 이해해보는 포스팅이다.
1건의 항목
트랙잭션 출력에 대해 알아보자.
3건의 항목
Enumeration 연관된 Value들의 공통 Type을 정의할 경우 사용 Type-Safe한 방법으로 사용 가능 특정 값으로 Raw Value 지정 필수 아님 Raw Value 사용 가능 자료 구조 String Chracter Integer Floating-point 사용 가능 기능 Computed Property Instance method Initializer Extension Protocol Raw Value의 묵시적 할당 enum Planet: Int { case mercury = 1, venus, earth, mars,...
Structure C언어 등의 구조체보다 다양한 기능 상속 불가능 인스턴스/타입 메서드 인스턴스/타입 프로퍼티 값타입 Swift의 대부분의 큰 뼈대는 모두 구조체 Struct가 선호되는 이유 mutability control에 유리 상태로 인한 부작용 없음 let 선언으로 완전한 immutable 자료형 생성 class의 경우 let 인스턴스여도 member 변수 변경 가능 성능 유리 referencing 소요 시간 감소 compiler가 강력한 최적화 수행 함수형 프로그래밍에서 효과정 immutable 요소를 바탕으로 code 가...
처음에 Swift 공부할 때는 정말 아무것도 몰라서, 힘들었던 경험이 있다. 좋은 기회로 한번더 정리할 시간이 생겼다. 다시한번 전체적으로 훑는 시리즈를 만들어본다. 먼저, Swift가 어떤 언어적 특징을 갖는지, 기본 문법은 어떤지 알아보는 시간을 가지려 한다.
1건의 항목
분기에 따라 값이 결정되는 코드를 짤 때, 변수를 무엇으로 선언하는 것이 좋을까? 작은 부분이나 좋은 지적이라 생각하여 정리해본다. 핵심 요약 분기에 따라 값이 결정될 때 변수를 선언해야 한다면, var보다는 let을 우선적으로 검토해보자.
7건의 항목
Extract Variable, 변수 추출하기를 알아보자.
Inline Variable, 변수 인라인하기를 알아보자.
Encapsulate Variable, 변수 캡슐화하기를 알아보자.
Rename Variable, 변수 이름 바꾸기를 알아보자. 요약 코드 let a = height * width; let area = height * width; 배경 명확한 프로그래밍의 핵심은 이름 짓기다.
프로그램 실행 과정 graph LR A[원시함수 작성] --> |Compiler|B(오브젝트 파일 생성) B-->|Linker|C[실행파일 생성] Compiler : 고급 언어로 작성된 파일을 기계어로 번역해줌.
Local, Global Variables Local Variables 함수 안에서만 동작하고 함수가 끝나면 메모리에서 삭제된다.
모든 변수는 객체이다. 파이썬에서 사용하는 변수는 객체를 가리킨다. 여기서 객체란 파이썬에서 사용되는 모든 것 을 의미하는 말이다. 이게 무슨말일까? 이 개념에 대한 직관적인 설명을 잘해둔 페이지가 있어 여기 소개한다.
2건의 항목
데이터를 설명하는 또 다른 척도인 변동성에 대해 알아본다. 변동성 데이터의 분포를 나타냄에 있어 퍼진 정도를 측정한다. 범위 range = 최대 관측치 - 최소 관측치 해당 데이터의 값이 어디서 부터 어디까지인지 나타낸다.
확률변수 X가 따르는 분포 P(X)에서 추출된 x 로 구성된 함수 f(x)에 대한 분산 \text{Var} \text{Var}_{X \sim P} [f(x)] = \mathbb{E}_{X \sim P} [(f(x) - \mathbb{E}_{X \sim P} [f(x)])^2] 만약 \text{Var}_{X \sim P} 에서 확률분포 P(X)를 확실히 알 수 있다면 생략한다.
1건의 항목
데이터를 설명하는 또 다른 척도인 변동성에 대해 알아본다. 변동성 데이터의 분포를 나타냄에 있어 퍼진 정도를 측정한다. 범위 range = 최대 관측치 - 최소 관측치 해당 데이터의 값이 어디서 부터 어디까지인지 나타낸다.
1건의 항목
가변적인 수를 Encoding하는 방법 중 하나인 Varints 형식을 알아보자. Varint 이전에 Input, output등의 개수를 나타낼 때 있어 varint 형식을 사용한다고 했었다. 여기서 간단하게 알아보자.
4건의 항목
수학식으로 이루어진 점, 직선, 곡선 등으로 표현 확대 및 축소에 자유로움 계산량이 많아 하지만 색상의 자연스러운 변화나 세밀한 표현이 어려움 AI, SVG 등 .
What is Array? 직접적으로 값을 순차적으로 매핑한다. C언어에서 오래된 기술이고, 객체가 아니다.
List 이제껏 vector container 에 대해서 집중적으로 사용했는데, list container 역시 vector와 마찬가지로 많이 사용된다. Vector 장점 : search가 빠르다. 단점 : pop/ push 가 느리다.
STereoLithography 혹은 Standard Triangulated Language 3차원 데이터를 표현하는 국제 표준 형식중 하나. 복잡한 3차원 폴리곤을 삼각형의 조합으로 만들어 곡면을 표현한다.
2건의 항목
비트코인에서 사용하는 타원곡선은 무엇일까? 비트코인에서 사용하는 타원 곡선 지금까지는 타원곡선에 들어가는 유한체의 위수를 작은 소수를 사용했다. 하지만 실전에서는 매우 큰 소수를 사용하여 컴퓨터로 탐색이 불가능하게 만든다.
서명, 검증 알고리즘을 알았으니 필요한 클래스들을 작성해보자.
2건의 항목
비트코인의 트랜잭션에 대해 알아보자. Transaction 앞에서 네트워크 혹은 디바이스에 이동하기 위한 공개키와 비밀키의 직렬화 방법에 대해 알아보았다. 물론 그에 대한 파싱까지 같이 배웠다.
Module Stability는 무엇일까? 공식문서를 통해 알아보자. Module Swift에서 Module은 무엇을 말할까? Swift는 접근 제어의 기준으로 Module을 사용한다. 코드 배포의 단위로써 import 키워드를 통해 사용하는 것들이 모두 모듈이다.
1건의 항목
불투명한 뷰는 어떻게 만드는거지? 그게 바로 이거였다. Materials iOS는 깊이감을 느낄 수 있도록 하는 반투명 효과를 제공한다. Blur Effect 혹은 Material으로 부르는 친구다.
1건의 항목
UIViewController가 init 되는 시점에 특정 View를 설정하면 안되는가? 왜 안되는가? 핵심 요약 UIViewController의 init에 View를 설정하게 되면, 메모리 부족으로 인해 View가 해제되는 상황에 대응할 수 없다.
1건의 항목
개념 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 쓰이는 형식언어 프로그래밍을 다루다 보면 가장 많이 만나게 되는 것이 문자열이다. 모든 것이 문자열로 나타나 있고, 이것을 기반으로 한 규칙으로 프로그램이 구동되기 때문이다.
1건의 항목
Inherence 전체적인 구조 상속이 필요한 이유 상속은 매우 유용하다. 13. Class & Object & Constructor 글을 다시 기억해보자.
1건의 항목
개념 개발자와 시스템 관리자가 컨테이너 기술을 사용하여 어플리케이션을 개발, 배포, 실행하기 위한 플랫폼 컨테이너 기술을 리눅스에서 사용되던 기술이다. 이 때, 이 기술을 사용하여 응용프로그램을 배포하는 것을 컨테이화 시킨 것이다.
1건의 항목
운영 체제가 하는 일을 간단하게 알아보자. 최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자. 운영체제가 하는 일 접근 제어 + 동기화 + 관리 전산 자원을 관리한다. 대표적인 전산 자원은 CPU, RAM 등이 있다.
1건의 항목
Plot3 x, y, z값이 있을 때 이를 그려준다.
1건의 항목
Accessibility 자체만 해도 상당히 방대한 개념이다. 이번에는 iOS 개발자가 실제로 많이 사용하는 Accessibility인 Voice Over를 UIKit에 적용하는 방법에 대해 알아보자.
1건의 항목
Volume과 Mount Docker Conatiner에 쓰여진 데이터는 컨테이너가 삭제될 때 함께 사라진다. 하지만 이에 관계없이 우리는 데이터를 영속적으로 저장할 필요가 있다.
3건의 항목
공개키 비트코인 주소 형식에 대해 알아본다. 이는 곧 “주소”이다. 비트코인 주소 WIF(Wallet Import Format) 앞에서 공개키와 비밀키, 그리고 서명, 검증 방식에 대해 알아보았다. 그리고 이를 직렬화하는 방법도 배웠다.
Reference Programming Bitcoin by Jimmy Song(O’Reilly). Copyright 2019 Jimmy Song, 978-1-492-03149-9 programmingbitcoin .
비밀키를 직렬화하는 방법을 알아보자. 비밀키 직렬화 비밀키를 직렬화할 이유는 그닥 없다. 네트워크로 전파할 일이 없기 때문이다. 비밀키 전파는 지갑이 털릴 수 있는 위험이 매우 크다.
1건의 항목
LAN 근거리 통신망 같은 건물 안을 범위로 하는 네트워크 집, 사무실과 같은 공간에서 사용 컴퓨터, 프린터와 같은 장치를 연결 MAN 도시권 통신망 서울시, 대학 캠퍼스 정도의 범위 WAN 광역 통신망 넓은 범위에 구축된 네트워크 랜과 랜을 연결 범위가 넓어 속도가 느리고 오류가 많다.
1건의 항목
오래 기다렸다. ARC가 무엇일까? 자바의 Garbage Collector와는 무엇이 다를까? 장단점은 무엇일까? 어떤 원리로 동작하는 것일까? 발생하는 문제점은 무엇일까? 어떻게 해결할 수 있을까? 이러한 내 궁금증들을 담았다.
1건의 항목
오래 기다렸다. ARC가 무엇일까? 자바의 Garbage Collector와는 무엇이 다를까? 장단점은 무엇일까? 어떤 원리로 동작하는 것일까? 발생하는 문제점은 무엇일까? 어떻게 해결할 수 있을까? 이러한 내 궁금증들을 담았다.
2건의 항목
AI가 웹을 공짜로 긁어가던 시대를 끝내려는 Cloudflare의 실험을 짚습니다. 크롤러를 분류하고, 신원을 확인하고, 요청 하나에 돈을 매기는 흐름이 어떻게 작동하는지 살펴봅니다.
Progressive Web App PWA(Progressive Web App)는 웹 애플리케이션을 개발하고 배포하기 위한 접근 방식과 기술 집합을 가리키는 용어입니다.
1건의 항목
네트워크 두 대 이상의 컴퓨터를 연결한 것 인터넷 수억개의 컴퓨팅 장치를 연결하는 TCP/IP 프로토콜로 구현된 네트워크 결론 인터넷은 네트워크의 일종 TCP/IP 프로톨을 준수하는 네트워크 이용하기 위해 웹브라우저 사용 .
1건의 항목
비용 최소화 코드 저번글에서 X, Y에 최적화된 W, b를 찾았다면, 이번에는 고정된 X, Y 에 대해 다른 W값을 넣어주면서 Cost의 변화를 살펴보자.
2건의 항목
Generic의 경우 코드 중복을 줄일 수 있는 좋은 기능이다. 잘 다뤄둔다면 중급(?) 이상의 개발자가 되는데 큰 도움을 줄 것이다.
generic을 보면서 몇몇 곳에서 where 키워드를 사용하는 것을 보았다. 한번 정리해야 할 것 같아 공식 문서을 읽어본다. Generic Where Clauses generic에도 where 조항을 넣어 받는 타입에 세부 제약을 추가할 수 있다.
3건의 항목
반복문의 필요성 특정 명령을 반복적으로 사용해야 함 규칙적으로 반복하는 일 동일한 내용을 반복할 때 For 특정 문장을 일정한 횟수만큼 반복 시킬 때 사용 #include <stdio.h> int main() { int i, Sum = 0; for (i=1; i<=10; i++) Sum += i; printf("1부터 10까지의 합은 %d다.\n",Sum); return 0; } // 프로세스가 시작되었습니다.
기존에 작업한 글이 있어 링크로 대체한다. 05. Control Flow 06. Loop Part. 01 07. Loop Part. 02 iomanip library 기본적으로 iostream 라이브러리로 출력을 하게되면, 왼쪽 정렬이다.
컴퓨터를 통하여 문제를 해결하는 가장 중요한 이유 중에는 계속적으로 반복하는 작업을 컴퓨터가 대신 처리하여 주는 것이다. 이런 기능을 반복문이라고 하며, 대부분의 프로그래밍 언어는 다양한 반복문을 제공한다.
3건의 항목
공개키 비트코인 주소 형식에 대해 알아본다. 이는 곧 “주소”이다. 비트코인 주소 WIF(Wallet Import Format) 앞에서 공개키와 비밀키, 그리고 서명, 검증 방식에 대해 알아보았다. 그리고 이를 직렬화하는 방법도 배웠다.
Reference Programming Bitcoin by Jimmy Song(O’Reilly). Copyright 2019 Jimmy Song, 978-1-492-03149-9 programmingbitcoin .
비밀키를 직렬화하는 방법을 알아보자. 비밀키 직렬화 비밀키를 직렬화할 이유는 그닥 없다. 네트워크로 전파할 일이 없기 때문이다. 비밀키 전파는 지갑이 털릴 수 있는 위험이 매우 크다.
1건의 항목
간단하게 property는 member 변수이다. 그런데 Swift에는 다양한 종류의 property가 존재한다. 사실 어떻게 보면 활용방법? 테크닉에 가깝겠다. 어떻게 property를 관리하는 지 안다면, 실제 코드를 간결하고 읽기 좋게 유지할 수 있다.
1건의 항목
iOS 개발자로서 제플린이나 피그마 창을 하나만 띄워서 보는건 너무 귀찮다. 여러개 띄울수는 없을까? 해결 방법 open -na /Applications/Zeplin.app open -na /Applications/Figma.app 모든 프로그램이 되는 것은 아니다.
2건의 항목
답답한 걸 싫어하는 내게 속도가 나지 않는다는 것은 정말 곤욕이다. 내가 자주 사용하는 Alfred Workflow를 공유해본다. Markdown Table 블로그글을 쓰거나, 기록을 해야 할 때, table만큼 좋은 게 없다.
잘 사용하고 있던 Alfred workflow가 동작하지 않는다. Mac OS 12.3으로 업데이트하고나서 바로 이런 이슈가 터지다니. 속도가 안나 답답하다. Issue 원인 Apple에서 12.3부터 공식적으로 python 2을 지원하지 않는다고 한다.
1건의 항목
간단하게 프로젝트 내부를 탐험해보았다면, 각각의 제대로된 정의를 알아야 한다. 앞의 글에서 이어지니, 이해가 안되면 보고 오는 것이 좋다.
1건의 항목
Framework와 library에 대해서는 모두 알았다. 그럼 XCFramework는 무엇일까? XCFramework framework의 다양한 변형들을 Bundle하는 새로운 방법, Framework를 한번더 Bundling 한다.
26건의 항목 처음 10개의 태그
예전에 네트워크 처리를 하면서 맞닥들였던 문제를 다시한번 적어본다. 그리고 그 개념까지 간단하게 정리해본다.
앞으로 그림에서 나오는 Swift version은 가상이다. 이해를 위해서 가상으로 적었다.
접근성 개발에 있어 쉽게 도와주는 녀석이 있다! Accessibility Inspector!! Introduction 접근성 관련해서 반영해주려니까 테스트 기기가 없더라.
앱 배포에 있어 꼭 알아야 하는 App Thining중 App Slicing에 대해 알아본다. 해당글은 WWDC 2015를 기준으로 한다. App Distribution Today 이전의 App 배포 방법은 다음과 같은 방식으로 수행되었다.
iOS 내부 디바이스에 다양한 CPU 제품이 들어감에 따라 이를 대응할 수 있도록 Project setting을 해야한다. 내부 디바이스들이 어떤 특징을 가지고 있는지 알아보자. 이번 글은 CPU Architecture 글을 읽고 오면 좀 더 편하다.
실제 컴파일, 링킹이 끝난 뒤의 결과물에 대해서는 잘 모르는 것 같다. 실행 파일은 어떻게 구성되어 있는 걸까? 우리가 사용하는 프로그램들은, 바이너리화되어 있는 파일의 형태로 존재한다. 그런데, 이 실행파일의 형태는 OS에 따라 다른 형태로 존재한다.
앱 배포를 하다보면 bitcode enabled라는 flag가 있다. 이녀석을 체크하냐 마냐에 따라서 빌드 속도가 상당히 차이나는 것을 보았는데 도대체 왜 그런 건지 이해해보려 한다. bitcode 다음은 Distrubution Options에서 찾은 설명이다.
이전 글에서 Scheme에 대해서 알아보았다. 하지만 실제로 어떻게 사용하는 건지 잘 모른다. 이번 글에서 알아보도록 하자. Scheme 알아보기 프로젝트를 하나 만들어주고, Product -> Scheme -> Edit Scheme 들어가자.
Bundle 실행 가능한 코드(executble code) + 리소스 (Resources)를 가진 계층 어떻게 보면 이 개념은 개발자를 위한 개념이다. 결국 Package내부는 Bundle과 같이 구성되어 있다.
앱스토어에 실제 앱을 배포해본 사람은 알겠지만, 인증서, provisioning과 같은 개념은 생소하다. 정확하게 알아보자. 원칙 Apple 만이 자신들의 하드웨어(iOS, iPadOS, MacOS etc)에 특정 소프트웨어가 동작하도록 할 수 있다.
2건의 항목
XOR 문제 두 개의 인풋에 대해 1개의 결과값이 나오는 문제이므로 텐서플로우로 구현해보자. 결과값이 0 또는 1이므로, logistic regression으로 만들 수 있다.
XOR 문제에서 이제 NN을 공부하는데 있어서 sigmoid 함수를 통과했던 것을 우리는 Activate Function이라고 부를 것이다.
1건의 항목
소수설 주창중 하나인 eXtreme Programming에 대해 알아보자.
1건의 항목
1D Array & Slicing # www.tensorflow.org/api_guides/python/array_ops import tensorflow as tf import numpy as np import pprint tf.set_random_seed(777) # for reproducibility pp = pprint.PrettyPrinter(indent=4) sess = tf.InteractiveSession() t = np.array([0., 1., 2., 3., 4., 5., 6.]) pp.pprint(t) pr...
1건의 항목
개요 지금까지는 간단한 정규식을 살펴 보았지만, 실제로 존재하는 다양한 문자열에서 정보를 뽑아내기 위해서는 추가적인 옵션이 필요하다. 예를 들어 쇼핑몰의 상품 리뷰를 사용자가 작성했다고 한다. 우리는 여기서 핵심적인 단어를 뽑아내야 한다.
1건의 항목
Extended String Delimiters # #""Hello World""# = Hello world 특수문자들을 그대로 표현 가능 String literal 선언을 로 감쌈 escape seqence\n은 아래와 같이 사용 #"Line1\#nLine2# Line1 Line2 Concatenating + 가능 String Interpolation "\(name) 는 \(food)을 먹습니다" Unicode String은 내부적으로 Unicode scalar val...