분류 전체보기
-
TOC 만들기문제해결 2023. 2. 9. 22:58
TOC 만들기 TOC는 Table of contents로 목차를 가리킨다. 티스토리 블로그에서는 자체 목차는 없지만, Tocbot같은 라이브러리가 존재한다. tocbot을 그대로 적용하려고 했다가 직접 만들어보는 것도 해볼 만한 것 같아서 시작하였다. 목적 현재 블로그에 TOC를 적용할 수 있도록, TOC를 처음부터 만든다. 목표 블로그에 TOC를 라이브러리 없이 제작한다. 대상은 사용 중인 티스토리 블로그와 현재 선택한 블로그 스킨이다. TOC를 선택하면 해당 문단으로 이동하는 등의 기본적인 기능을 추가한다. 과정 티스토리 블로그는 관리자 메뉴에서 스킨 편집을 할 수 있다. 편집을 누르면, HTML과 CSS를 수정할 수 있고, 필요한 파일을 업로드할 수 있도록 되어 있다. 이에 HTML 탭 하단에 자바..
-
2. express 타입 이해...2분석과탐구 2023. 1. 7. 20:43
express 예제의 타입 확인. 이번 글의 목표는 npm에 올라온 express 예제의 타입을 확인하는 것이다. 다음은 express 예제에 번호를 추가한 것이다. const express = require('express') // (1) const app = express() // (2) app.get('/', function (req, res) { // (3) res.send('Hello World') // (4) }) app.listen(3000) // (5) 이 예제에 타입이 추가된 코드는 다음과 같다. (1)부터 (5)까지 코드를 보며 타입을 알아볼 것이다. (1) ~ (5)번으로 넘버링된 줄을 하나씩 살펴보자. (1) : "export = "로 모듈을 내보내는 파일을 받을 때 쓰는 방식이다...
-
1. express 타입 이해...1분석과탐구 2023. 1. 7. 07:32
express의 타입 npm express에 있는 모듈에서 가리키는 express 사용법은 다음과 같다. const express = require('express') // (1) const app = express() // (2) app.get('/', function (req, res) { // (3) res.send('Hello World') // (4) }) app.listen(3000) // (5) 위 코드 (1) ~ (5)에서 타입은 어떻게 되는가? express 자체는 자바스크립트로 먼저 작성되었다. 그리고, 타입이 따로 추가된 형태이다. NPM을 가보면 다음과 같이 되어 있다. express 라이브러리를 타입스크립트에서 사용하려면 타입 정보가 필요한 것이다. 이를 위하여 @types/exp..
-
매크로 expand(STRING_CAT 매크로를 예시로)간단기법 2022. 10. 5. 11:14
STRING_CAT 매크로의 예시 매크로에서 문자열을 이어 붙이기 위해 ##(token concatenation) 연산자를 사용한다. 위 코드에서는 DUMMY 매크로는 STRING_CAT 매크로를 이용하고, STRING_CAT 매크로는 ##으로 문자열을 이어 붙인다. 위 코드의 의도는 DUMMY매크로 위치에 int _dummy33 = 0; 처럼 _duumy라는 문자열에 __LINE__으로 얻은 숫자를 이어 붙이려는 것이다. 그러나, 실제 나오는 결과물은 예상과 다르게 int _dummy__LINE__ = 0;이다. 우리의 의도와는 다르게 STRING_CAT(_dummy, __LINE__)을 호출하게 되면 __LINE__이 그대로 문자열로 들어가고, 번호로 평가되지 않는 것이다. 매크로 EXPAND 규칙 ..
-
std::move에 대하여분석과탐구 2022. 10. 3. 15:20
std::move 선언 std::move의 선언은 다음과 같다. 템플릿 함수 std::move는 함수다. 그 선언 모습은 위와 같다. 첫 번째 줄을 보면 템플릿으로 된 것을 볼 수 있다. 반환형 함수의 반환형을 보자. constexpr 키워드가 붙어있다. 함수에 붙은 constexpr은 이 함수가 컴파일 타임에 계산될 수도 있으니, 컴파일 타임에 계산할 수 있다면 우선하라는 의미이다. constexpr을 제외한 반환형은 std::remove_reference_t&&이다. 즉, T라는 타입에서 reference를 제거한 것에 &&을 추가한다. &&은 rvalue reference이다. 즉, T라는 타입에서 reference을 제거하고 다시 rvalue reference를 추가하는 것이다. 함수 이름 std..
-
문자열 뒤집기 두 가지 버전간단기법 2022. 9. 17. 19:11
하나의 변수만 사용 #include #include void Reverse(char* string) { char* lastString = string; for (; *lastString != '\0'; lastString++); lastString--; for (; string < lastString;) { *string ^= *lastString; *lastString ^= *string; *string ^= *lastString; string++; lastString--; } } int main() { char str[] = "abcdef"; Reverse(str); printf("%s \n", str); return 0; } xor 연산을 이용하였음. xor는 자주 쓰는 연산이 아니기에 처음 봤을 ..
-
[PowerShell] 디렉토리에서 postfix 없애기간단기법 2022. 9. 17. 18:03
개요 Github에서 소스코드를 zip파일로 다운받으니, 레포 이름 뒤에 "-master"가 붙더라. "-master"라는 postfix를 없애려면 어떻게 해야하나? 방법 손으로 하나하나 지워도 되지만.... 스크립트를 써보자. 윈도우니까 파워셀을 이용해보자. 파워셀 Rename-Item 친절하게 예제도 있다. Get-ChildItem *.txt | Rename-Item -NewName { $_.Name -replace '.txt','.log' } 위 문장과 정규식을 이용하여 다음과 같이 하면 변경할 수 있다. Get-ChildItem *-master | Rename-Item -NewName {$_.Name -replace '-master', ''}
-
업무일지를 지속적으로 써본 소감짧은경험기 2022. 6. 6. 02:13
이전 글 업무일지를 쓰기 시작했다. 업무일지 작성 한달 소감 업무 일지 정말 좋다 이전 글에서도 다음과 같은 소회를 밝혔다. 이전까지 업무일지를 쓰라는 조언을 들으면, 관료주의 병폐로 여기고 무시했는데, 해보니 좋더라... 기록 이 소회를 느낀 후, 8개월 정도 계속 썼다. 써본 결론은 정말 좋다. 써본 결과 다음과 같은 장점이 있다. 프로젝트를 어떻게 진행했는지 주기적으로 체크 할 수 있다. 날마다, 주마다, 달마다, 분기마다... 어떻게 업무를 처리 했는지 복기할 수 있어서 잘한점과 못한점을 지속적으로 체크하여 더 나은 방향으로 갈 수 있게 방향 설정을 할 수 있다. 프로젝트 의사결정에 대한 히스토리나 당시의 내 생각을 알기 좋다.