
C#에 관해 그 동안 익혀왔던 것들을 조금씩이라도 블로그에 정리해보기로 마음 먹었을 때, 가장 먼저 하고 싶으면서도 망설여 졌던 주제가 Await, Async이다. 아무튼 오늘의 포스팅을 통해, 좀 더 개념을 명확히 이해할 수 있게 되길, 다음에 읽었을 때는 더 많이 알게 되었길 바래본다. Go for it! 1. 비동기란 무엇인가? 위 사진은 비동기 프로그래밍에 현실적인 예이다. 우리는 바쁜 아침 시간, 조금이라도 더 풍성하게 먹기위해, 비동기적으로 아침을 차린다. 후라이팬에 불을 올리고, 토스트기에 빵을 넣고, 후라이팬이 데워지면 기름을 두르고 계란을 넣는다. 이 때, 계란을 부치는 일과 빵을 굽는 일은 비동기적으로 일어나도 괜찮다. 나중에 이를 합쳐서 샌드위치를 만들어 먹겠다고 하면 동기화가 필요하..

에디터 설정 파일은 일정한 editor 환경에 종속적이기 때문에 원격저장소에 저장할 필요가 없다. (그렇다고 버전관리가 불필요한가? 싶은 의문은 든다.) 아무튼 .gitignore에 추가하는 것을 빼먹고 불필요한 파일을 이미 커밋한 경우 제거하는 방법을 알아보자 1. Git 에서 파일 or 폴더 삭제하기 $ git rm --cached {삭제할파일} $ git rm -r --cached {삭제할폴더} 나의 경우에는 git rm -r --cached .vscode 2. 변경 내역 Commit 하기 $ git commit -m "untrack .vscode" 3. .gitignore 파일에 해당 폴더 추가하기 # VsCode .vscode 4. 변경 내역 Commit 하기 $ git add .\.gitign..
함수를 정의 하다보면, 여러개의 변수를 반환하고 싶을 때가 있다. 또는 여러개의 연관된 변수를 묶어 사용하고 싶기도 하다. 그러나 새로운 타입의 객체를 생성하기 부담스러운 경우(객체 너무 많아...한번 쓰고 버릴건데..) 튜플을 사용해볼 수 있다. 1. Tuple 사용하기 public void Example() { var colorInfo = GetColor(); Console.WriteLine($"name: {colorInfo.Item1} " + $"r:{colorInfo.Item2} " + $"g:{colorInfo.Item3} " + $"b:{colorInfo.Item4}"); // Output // name: red r:255 g:0 b:0 } public Tuple GetColor() { ret..

개요 프로그래밍에서 Copy에는 Deep Copy(깊은 복사)와 Shallow Copy(얕은 복사) 두가지가 있다. Shallow Copy object class에 MemberwiseClone을 이용하여 Shallow Copy(얕은 복사)를 진행하였다.(Coffee의 Copy 함수는 는 더 아래 참고.) class Program { static void Main(string[] args) { var coffee1 = new Coffee() { Shot = 2, CoffeeBean = new CoffeeBean { Origin = "Brazil"} }; var coffee2 = coffee1.Copy(); coffee2.Shot = 1; coffee2.CoffeeBean.Origin = "Kenya"; C..

내 블로그 글들이 다음으로부터만 검색 유입이 되는 걸 보고, 내 블로그 이름을 구글에 검색해 보았다. 알아보니, 티스토리의 계열사(?)인 다음을 제외하고는 내 블로그가 검색되도록 별도의 등록과정을 거쳐야 한다고 한다. 절차는 생각보다 간단하다. 1. Sign-In Google Search Console 1) 아래 사이트로 들어간다. https://search.google.com/search-console/welcome Google Search Console 로그인 Google 검색 콘솔로 이동 accounts.google.com 2) 나의 블로그 주소를 오른쪽 URL 창에 붙여 넣기 후 > '계속'을 클릭한다. 3) '다른 확인 방법'에 HTML 태그를 복사한다. 4) 티스토리 관리 > 스킨 편집 > H..

오늘은 Architectural Pattern(아키텍쳐 패턴) 중에서도 MVVM 패턴에 대하여 설명해보려고 한다. MVVM 패턴은 주로 엔터프라이즈 규모의 대화형 어플리케이션을 설계하는 뼈대가 되는 패턴이다. 주로 MVC과 비교 된다. 요새 모바일 웹/앱을 포함해 대화형 어플리케이션은 전체 소프트웨에서 상당히 많은 부분을 차지함을 생각해보면, MVVM 패턴은 .Net, ios, Android 등 다양한 분야에서 사용되고 있다는 사실이 크게 놀랍지 않다. Architectural Pattern Architectural Pattern(아키텍처 패턴)은 소프트웨어 아키텍처의 공통적인 발생 문제에 대한 일반적인, 재사용 가능한 해결책을 의미한다.(위키) 생성, 구조, 행위 패턴으로 나뉘어져 있는 일반적인 소프트..

나머지 MySQL Level2 문제를 풀어보려고 한다. 이로써 오늘까지 올려진 프로그래머스의 모든 MySQL Level2 문제를 전부 풀게 된다 1. 이름에 el이 들어가는 동물 찾기 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE LOWER(NAME) LIKE '%el%' AND ANIMAL_TYPE = 'Dog' ORDER BY NAME 2. 중성화 여부 파악하기 SELECT ANIMAL_ID, NAME, CASE WHEN (SEX_UPON_INTAKE LIKE '%NEUTERED%' OR SEX_UPON_INTAKE LIKE '%SPAYED%') THEN 'O' ELSE 'X' END AS '중성화' FROM ANIMAL_INS ORDER BY ANIMAL_ID AS..

1. Heroicons 개수는 적지만, svg 형태를 무료로 제공한다. https://heroicons.com/ Heroicons Beautiful hand-crafted SVG icons, by the makers of Tailwind CSS. heroicons.com 2. Font Awesome 로그인하고 스크립트에 관련 source를 추가시켜 주어야 사용할 수 있다. https://fontawesome.com/v5/search?s=solid%2Cbrands Font Awesome The world’s most popular and easiest to use icon set just got an upgrade. More icons. More styles. More Options. fontawesome..

더보기 There are only two hard problems in Computer Science: cache invalidation and naming things — Phil Karlton 개발을 하다보면, 이름을 짓는 것이 참 어렵고, 중요하다는 사실을 느낄 때가 많다. 개인적인 생각에는 잘 지어놓은 이름은 두고두고 코드를 이해하는데 작용하는거 같다. 네이밍 방법론에 대표적인 것들에는 다음과 같은 것들이 있다. 대표적인 네이밍 방법론 CamelCase(카멜 표기법): 두 개 이상의 단어가 모인 합성어에서 맨 처음 단어를 대문자로 표기하는 방법 lowerCamelCase UppperCamelCase snake_case(스네이크 표기법): 두 개 이상의 단어가 모인 합성어에서 언더라인(_), 또는 ..

보통 새로운 프로젝트를 만들 때, Github에 repository를 만들고 해장 저장소를 Clone 해서 사용한다. 오늘은 반대로 로컬 저장소에 폴더 및 파일을 만들고 이를 원격 저장소와 연결하는 절차를 정리하려고 한다. Try. 일반적인 Clone은 다음과 같다. git clone 이미 해당 폴더가 있다면 다음과 같은 에러 로그가 출력 될 것이다. $ git clone https://github.com/nagneo/react-for-beginners.git fatal: destination path 'react-for-beginners' already exists and is not an empty directory. 해결 1. 해당 폴더를 연다. cd /react-for-beginners 2. gi..