From 52ead88fb151c2668eb861a2af8736c026cc8825 Mon Sep 17 00:00:00 2001 From: pozafly Date: Fri, 5 May 2023 23:29:04 +0900 Subject: [PATCH] Updates --- 404.html | 2 +- 404/index.html | 2 +- _gatsby/slices/_gatsby-scripts-1.html | 2 +- about/index.html | 2 +- author/another-author/index.html | 2 +- author/ghost/index.html | 2 +- author/pozafly/index.html | 2 +- blog/Gatsby-Blog/index.html | 4 ++-- blog/blog-insert-tap/index.html | 4 ++-- blog/jekyll-kakao-share-button/index.html | 4 ++-- css/stacking-context/index.html | 4 ++-- diary/20210517/index.html | 4 ++-- diary/20210523/index.html | 4 ++-- diary/20210530/index.html | 4 ++-- diary/20210606/index.html | 4 ++-- diary/20210627/index.html | 4 ++-- e0525e89-f580b5526d62ccdf5313.js | 2 ++ e0525e89-f580b5526d62ccdf5313.js.map | 1 + environment/webpack-boilerplate/index.html | 4 ++-- html/meta-tag-and-vue-meta/index.html | 4 ++-- html/pdf-css/index.html | 4 ++-- html/semantic-web/index.html | 4 ++-- index.html | 2 +- .../index.html" | 4 ++-- javascript/array-is-object/index.html | 4 ++-- javascript/closure-with-currying/index.html | 4 ++-- javascript/event-loop-and-async/index.html | 4 ++-- javascript/getter-setter/index.html | 4 ++-- javascript/javascript-mvc/index.html | 4 ++-- javascript/prototype/index.html | 4 ++-- javascript/shallo-copy-and-deep-copy/index.html | 4 ++-- javascript/symbol/index.html | 4 ++-- network/uri-structure/index.html | 4 ++-- node/node-version-manager/index.html | 4 ++-- node/setting-npm-differently-for-each-project/index.html | 4 ++-- oracle/CHR-ASCII/index.html | 4 ++-- .../index.html" | 4 ++-- .../index.html" | 4 ++-- page-data/app-data.json | 2 +- react/class-functional-component-difference/index.html | 4 ++-- rss.xml | 2 +- spring/JUnit(1)motive/index.html | 4 ++-- spring/JUnit(2)Mockito/index.html | 4 ++-- spring/MediaType/index.html | 4 ++-- tags/auto-mation/index.html | 2 +- tags/blog/index.html | 2 +- tags/bundler/index.html | 2 +- tags/css/index.html | 2 +- tags/design-pattern/index.html | 2 +- tags/diary/index.html | 2 +- tags/gatsby/index.html | 2 +- tags/html/index.html | 2 +- tags/index.html | 2 +- tags/j-unit/index.html | 2 +- tags/java-script/index.html | 2 +- tags/java/index.html | 2 +- tags/jwt/index.html | 2 +- tags/lets-encrypt/index.html | 2 +- tags/media-type/index.html | 2 +- tags/my-sql/index.html | 2 +- tags/network/index.html | 2 +- tags/node-js/index.html | 2 +- tags/oracle/index.html | 2 +- tags/pdf/index.html | 2 +- tags/react/index.html | 2 +- tags/semantic-web/index.html | 2 +- tags/sentry/index.html | 2 +- tags/seo/index.html | 2 +- tags/spring-boot/index.html | 2 +- tags/spring-security/index.html | 2 +- tags/tool/index.html | 2 +- tags/travis-ci/index.html | 2 +- .../tripllo-\354\240\234\354\236\221\352\270\260/index.html" | 2 +- tags/type-script/index.html | 2 +- tags/uri/index.html | 2 +- tags/vue-js/index.html | 2 +- tags/webpack/index.html | 2 +- .../index.html" | 2 +- .../index.html" | 2 +- tripllo/(1)production-motive/index.html | 4 ++-- tripllo/(10)vue-travis-automation/index.html | 4 ++-- tripllo/(11)vue-sentry-error-monitoring-system/index.html | 4 ++-- tripllo/(12)aws-lets-encrypt-renewal-automation/index.html | 4 ++-- tripllo/(13)Vuex-and-eventBus/index.html | 4 ++-- tripllo/(14)Closure-Currying/index.html | 4 ++-- tripllo/(2)mysql-design-spring-boot/index.html | 4 ++-- tripllo/(3)vue-esLint-prettier-setting/index.html | 4 ++-- tripllo/(4)spring-security-jwt/index.html | 4 ++-- tripllo/(5)login2-SpringBoot/index.html | 4 ++-- tripllo/(6)login3-vue/index.html | 4 ++-- tripllo/(7)login4-vue-social-login/index.html | 4 ++-- tripllo/(8)vue-refactor1/index.html | 4 ++-- tripllo/(9)vue-refactor2/index.html | 4 ++-- tripllo/tripllo-delete/index.html | 4 ++-- tripllo/tripllo-epilogue/index.html | 4 ++-- typescript/typescript-env/index.html | 4 ++-- .../index.html" | 4 ++-- webpack-runtime-52fd7f98635d9b9ff5c2.js | 2 ++ webpack-runtime-52fd7f98635d9b9ff5c2.js.map | 1 + webpack.stats.json | 2 +- 100 files changed, 152 insertions(+), 146 deletions(-) create mode 100644 e0525e89-f580b5526d62ccdf5313.js create mode 100644 e0525e89-f580b5526d62ccdf5313.js.map create mode 100644 webpack-runtime-52fd7f98635d9b9ff5c2.js create mode 100644 webpack-runtime-52fd7f98635d9b9ff5c2.js.map diff --git a/404.html b/404.html index 6b2396d0b..6ffaf540c 100644 --- a/404.html +++ b/404.html @@ -64,4 +64,4 @@ > window.___chunkMapping="{\"app\":[\"/app-97d1ef99a3067094028f.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-7e56e5f698fc1b8ecad4.js\"],\"component---src-pages-about-tsx\":[\"/component---src-pages-about-tsx-537864e8821dcd6ae890.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-735c812959870adf97bc.js\"],\"component---src-templates-author-tsx\":[],\"component---src-templates-index-tsx\":[\"/component---src-templates-index-tsx-79eaa8229b337742b119.js\"],\"component---src-templates-post-tsx\":[],\"component---src-templates-tags-tsx\":[\"/component---src-templates-tags-tsx-115dcf3868904aa97209.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/404/index.html b/404/index.html index 1c5cde5b7..7566cff5c 100644 --- a/404/index.html +++ b/404/index.html @@ -64,4 +64,4 @@ > window.___chunkMapping="{\"app\":[\"/app-97d1ef99a3067094028f.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-7e56e5f698fc1b8ecad4.js\"],\"component---src-pages-about-tsx\":[\"/component---src-pages-about-tsx-537864e8821dcd6ae890.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-735c812959870adf97bc.js\"],\"component---src-templates-author-tsx\":[],\"component---src-templates-index-tsx\":[\"/component---src-templates-index-tsx-79eaa8229b337742b119.js\"],\"component---src-templates-post-tsx\":[],\"component---src-templates-tags-tsx\":[\"/component---src-templates-tags-tsx-115dcf3868904aa97209.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/_gatsby/slices/_gatsby-scripts-1.html b/_gatsby/slices/_gatsby-scripts-1.html index 527537882..27aa0111b 100644 --- a/_gatsby/slices/_gatsby-scripts-1.html +++ b/_gatsby/slices/_gatsby-scripts-1.html @@ -4,4 +4,4 @@ > window.___chunkMapping="{\"app\":[\"/app-97d1ef99a3067094028f.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-7e56e5f698fc1b8ecad4.js\"],\"component---src-pages-about-tsx\":[\"/component---src-pages-about-tsx-537864e8821dcd6ae890.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-735c812959870adf97bc.js\"],\"component---src-templates-author-tsx\":[],\"component---src-templates-index-tsx\":[\"/component---src-templates-index-tsx-79eaa8229b337742b119.js\"],\"component---src-templates-post-tsx\":[],\"component---src-templates-tags-tsx\":[\"/component---src-templates-tags-tsx-115dcf3868904aa97209.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/about/index.html b/about/index.html index e6f3309ac..430e41127 100644 --- a/about/index.html +++ b/about/index.html @@ -72,4 +72,4 @@ > window.___chunkMapping="{\"app\":[\"/app-97d1ef99a3067094028f.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-7e56e5f698fc1b8ecad4.js\"],\"component---src-pages-about-tsx\":[\"/component---src-pages-about-tsx-537864e8821dcd6ae890.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-735c812959870adf97bc.js\"],\"component---src-templates-author-tsx\":[],\"component---src-templates-index-tsx\":[\"/component---src-templates-index-tsx-79eaa8229b337742b119.js\"],\"component---src-templates-post-tsx\":[],\"component---src-templates-tags-tsx\":[\"/component---src-templates-tags-tsx-115dcf3868904aa97209.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/author/another-author/index.html b/author/another-author/index.html index aa04d2b16..59a5477b0 100644 --- a/author/another-author/index.html +++ b/author/another-author/index.html @@ -64,4 +64,4 @@ > window.___chunkMapping="{\"app\":[\"/app-97d1ef99a3067094028f.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-7e56e5f698fc1b8ecad4.js\"],\"component---src-pages-about-tsx\":[\"/component---src-pages-about-tsx-537864e8821dcd6ae890.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-735c812959870adf97bc.js\"],\"component---src-templates-author-tsx\":[],\"component---src-templates-index-tsx\":[\"/component---src-templates-index-tsx-79eaa8229b337742b119.js\"],\"component---src-templates-post-tsx\":[],\"component---src-templates-tags-tsx\":[\"/component---src-templates-tags-tsx-115dcf3868904aa97209.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/author/ghost/index.html b/author/ghost/index.html index 3400fdd8a..aab363f08 100644 --- a/author/ghost/index.html +++ b/author/ghost/index.html @@ -64,4 +64,4 @@ > window.___chunkMapping="{\"app\":[\"/app-97d1ef99a3067094028f.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-7e56e5f698fc1b8ecad4.js\"],\"component---src-pages-about-tsx\":[\"/component---src-pages-about-tsx-537864e8821dcd6ae890.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-735c812959870adf97bc.js\"],\"component---src-templates-author-tsx\":[],\"component---src-templates-index-tsx\":[\"/component---src-templates-index-tsx-79eaa8229b337742b119.js\"],\"component---src-templates-post-tsx\":[],\"component---src-templates-tags-tsx\":[\"/component---src-templates-tags-tsx-115dcf3868904aa97209.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/author/pozafly/index.html b/author/pozafly/index.html index 23d0e4ec8..098468a96 100644 --- a/author/pozafly/index.html +++ b/author/pozafly/index.html @@ -64,4 +64,4 @@ > window.___chunkMapping="{\"app\":[\"/app-97d1ef99a3067094028f.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-7e56e5f698fc1b8ecad4.js\"],\"component---src-pages-about-tsx\":[\"/component---src-pages-about-tsx-537864e8821dcd6ae890.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-735c812959870adf97bc.js\"],\"component---src-templates-author-tsx\":[],\"component---src-templates-index-tsx\":[\"/component---src-templates-index-tsx-79eaa8229b337742b119.js\"],\"component---src-templates-post-tsx\":[],\"component---src-templates-tags-tsx\":[\"/component---src-templates-tags-tsx-115dcf3868904aa97209.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/blog/Gatsby-Blog/index.html b/blog/Gatsby-Blog/index.html index b2e9eaaba..c21f379e3 100644 --- a/blog/Gatsby-Blog/index.html +++ b/blog/Gatsby-Blog/index.html @@ -58,7 +58,7 @@ gtag('config', 'G-SLQNH3ND3J', {"anonymize_ip":true,"cookie_expires":0,"send_page_view":false}); } -
Blog,  Gatsby

Gatsby 블로그 이사

블로그 이사를 완료했다. 사실 블로그를 어떤 기준으로 운영해야하는지 감이 없기도 했고 개발 기록을 남기는 작업은, 첫 블로그를 만들기 전에 onenote에 전부 작업을 해두고 있었기 때문에 블로그에 전부 옮기는 작업이 귀찮기도 했었다. 하지만 어쨌든 블로그를 만들어뒀기 때문에 포트폴리오 프로젝트 정리를 약간 하는 용도로 사용했다.

Gatsby 블로그 이사
Blog,  Gatsby

Gatsby 블로그 이사

블로그 이사를 완료했다. 사실 블로그를 어떤 기준으로 운영해야하는지 감이 없기도 했고 개발 기록을 남기는 작업은, 첫 블로그를 만들기 전에 onenote에 전부 작업을 해두고 있었기 때문에 블로그에 전부 옮기는 작업이 귀찮기도 했었다. 하지만 어쨌든 블로그를 만들어뒀기 때문에 포트폴리오 프로젝트 정리를 약간 하는 용도로 사용했다.

Gatsby 블로그 이사
Blog,  Gatsby

블로그 탭 추가, 그리고 회고 시작

주간회고를 시작하면서 블로그의 틀을 조금 수정했다.

블로그 탭 추가, 그리고 회고 시작
Blog,  Gatsby

블로그 탭 추가, 그리고 회고 시작

주간회고를 시작하면서 블로그의 틀을 조금 수정했다.

블로그 탭 추가, 그리고 회고 시작
Blog

Github Blog에 카카오톡 공유버튼 만들기

Jekyll로 만든 Github 블로그에 카톡 공유버튼을 만들어보자!

Github Blog에 카카오톡 공유버튼 만들기
Blog

Github Blog에 카카오톡 공유버튼 만들기

Jekyll로 만든 Github 블로그에 카톡 공유버튼을 만들어보자!

Github Blog에 카카오톡 공유버튼 만들기
CSS

왜 내 z-index는 먹히지 않는가?

z-index가 때로 적용이 되지 않는 문제를 해결하기 위해 stacking context에 대해 정확히 알아본다.

왜 내 z-index는 먹히지 않는가?
CSS

왜 내 z-index는 먹히지 않는가?

z-index가 때로 적용이 되지 않는 문제를 해결하기 위해 stacking context에 대해 정확히 알아본다.

왜 내 z-index는 먹히지 않는가?
Diary

2021년 5월 2주차 회고

2021년 5월 2주차 회고

2021년 5월 2주차 회고
Diary

2021년 5월 2주차 회고

2021년 5월 2주차 회고

2021년 5월 2주차 회고
Diary

2021년 5월 3주차 회고

2021년 5월 3주차 회고

2021년 5월 3주차 회고
Diary

2021년 5월 3주차 회고

2021년 5월 3주차 회고

2021년 5월 3주차 회고
Diary

2021년 5월 마지막 주 회고

2021년 5월 마지막 주 회고

2021년 5월 마지막 주 회고
Diary

2021년 5월 마지막 주 회고

2021년 5월 마지막 주 회고

2021년 5월 마지막 주 회고
Diary

2021년 6월 첫째 주 회고

2021년 6월 첫째 주 회고

2021년 6월 첫째 주 회고
Diary

2021년 6월 첫째 주 회고

2021년 6월 첫째 주 회고

2021년 6월 첫째 주 회고
Diary

2021년 6월 마지막 주 회고

2021년 6월 마지막 주 회고

2021년 6월 마지막 주 회고
Diary

2021년 6월 마지막 주 회고

2021년 6월 마지막 주 회고

2021년 6월 마지막 주 회고
Webpack,  Bundler,  Tool

Webpack5 JavaScript 보일러플레이트 만들기

모던 프론트엔드 웹 개발에 필요한 세팅을 직접 해보면서 어떤 옵션과 기능이 있는지 알아보자.

Webpack5 JavaScript 보일러플레이트 만들기
Webpack,  Bundler,  Tool

Webpack5 JavaScript 보일러플레이트 만들기

모던 프론트엔드 웹 개발에 필요한 세팅을 직접 해보면서 어떤 옵션과 기능이 있는지 알아보자.

Webpack5 JavaScript 보일러플레이트 만들기
Vue.js,  HTML,  SEO

vue-meta와 Meta tag

Semantic-Tag와 함께 SEO 향상을 위해 meta tag를 프로젝트에 적용하면서 meta tag의 역할과 기능, 그리고 Vue.js에서는 meta tag를 동적으로 어떻게 변화시킬 수 있는지 알아보자.

vue-meta와 Meta tag
Vue.js,  HTML,  SEO

vue-meta와 Meta tag

Semantic-Tag와 함께 SEO 향상을 위해 meta tag를 프로젝트에 적용하면서 meta tag의 역할과 기능, 그리고 Vue.js에서는 meta tag를 동적으로 어떻게 변화시킬 수 있는지 알아보자.

vue-meta와 Meta tag
CSS,  HTML,  PDF

PDF 페이지 CSS로 안전하게 작성하기

웹을 개발하다 보면, PDF로 문서를 사용자에게 제공하는 기능을 구현해야 할 때가 있다. 다른 개발자분들이 헤매지 않을 수 있도록 정리해보았다.

PDF 페이지 CSS로 안전하게 작성하기
CSS,  HTML,  PDF

PDF 페이지 CSS로 안전하게 작성하기

웹을 개발하다 보면, PDF로 문서를 사용자에게 제공하는 기능을 구현해야 할 때가 있다. 다른 개발자분들이 헤매지 않을 수 있도록 정리해보았다.

PDF 페이지 CSS로 안전하게 작성하기
HTML,  SEO,  Semantic Web

Semantic Web에 대해 더 깊이 알아보기

Semantic Tag를 실제로 적용해보면서 고민했던 것과 팁을 함께 내용에 적어두었다. Semantic Tag에 대한 정의는 많지만 실제로 어떤 기준으로 적용해야할지 고민한다면 이 글이 도움이 될 수 있겠다.

Semantic Web에 대해 더 깊이 알아보기
HTML,  SEO,  Semantic Web

Semantic Web에 대해 더 깊이 알아보기

Semantic Tag를 실제로 적용해보면서 고민했던 것과 팁을 함께 내용에 적어두었다. Semantic Tag에 대한 정의는 많지만 실제로 어떤 기준으로 적용해야할지 고민한다면 이 글이 도움이 될 수 있겠다.

Semantic Web에 대해 더 깊이 알아보기
Java

Java 다형적 변수, 형변환

JAVA의 다형성을 통해 다형적 변수와 형변환에 대해서 알아보자.

Java 다형적 변수, 형변환
Java

Java 다형적 변수, 형변환

JAVA의 다형성을 통해 다형적 변수와 형변환에 대해서 알아보자.

Java 다형적 변수, 형변환
JavaScript

JavaScript에서 배열은 객체다

배열이 객체인 이유와, 유사 배열 객체와의 차이점을 알아본다.

JavaScript에서 배열은 객체다
JavaScript

JavaScript에서 배열은 객체다

배열이 객체인 이유와, 유사 배열 객체와의 차이점을 알아본다.

JavaScript에서 배열은 객체다
JavaScript

클로저와 함께 알아보는 curring 함수

JavaScript의 클로저를 통해 currying 함수를 알아보자.

클로저와 함께 알아보는 curring 함수
JavaScript

클로저와 함께 알아보는 curring 함수

JavaScript의 클로저를 통해 currying 함수를 알아보자.

클로저와 함께 알아보는 curring 함수
JavaScript

Event Loop와 비동기

Event Loop와 비동기
JavaScript

Event Loop와 비동기

Event Loop와 비동기
JavaScript

JavaScript의 Getter / Setter

객체의 접근자 프로퍼티인 Getter와 Setter에 대해 알아보자.

JavaScript의 Getter / Setter
JavaScript

JavaScript의 Getter / Setter

객체의 접근자 프로퍼티인 Getter와 Setter에 대해 알아보자.

JavaScript의 Getter / Setter
JavaScript,  Design Pattern

JavaScript MVC 패턴으로 만드는 SPA

모던 JavaScript 프레임워크 없이 MVC 패턴으로 SPA을 만들어보자

JavaScript MVC 패턴으로 만드는 SPA
JavaScript,  Design Pattern

JavaScript MVC 패턴으로 만드는 SPA

모던 JavaScript 프레임워크 없이 MVC 패턴으로 SPA을 만들어보자

JavaScript MVC 패턴으로 만드는 SPA
JavaScript

객체지향 프로그래밍으로 알아보는 prototype

객체지향 프로그래밍으로 알아보는 prototype
JavaScript

객체지향 프로그래밍으로 알아보는 prototype

객체지향 프로그래밍으로 알아보는 prototype
JavaScript

JavaScript의 얕은 복사와 깊은 복사

JavaScript의 얕은 복사와 깊은 복사로 알아보는 객체의 특성. (feat. React, Vue.js)

JavaScript의 얕은 복사와 깊은 복사
JavaScript

JavaScript의 얕은 복사와 깊은 복사

JavaScript의 얕은 복사와 깊은 복사로 알아보는 객체의 특성. (feat. React, Vue.js)

JavaScript의 얕은 복사와 깊은 복사
JavaScript

JavaScript의 Symbol에 대해서.

Symbol은 도대체 뭘까? 어디에 사용되고 있을까? 조금 더 깊게 들어가서 알아보자. 나중에 라이브러리를 만들 수도 있으니..

JavaScript의 Symbol에 대해서.
JavaScript

JavaScript의 Symbol에 대해서.

Symbol은 도대체 뭘까? 어디에 사용되고 있을까? 조금 더 깊게 들어가서 알아보자. 나중에 라이브러리를 만들 수도 있으니..

JavaScript의 Symbol에 대해서.
Network,  URI

다시 보기 위해 적어두는 URI 구조

하나의 주소 안에도 여러가지 용어가 나온다. Host, Domain, Site, Origin등이 그것이다.

다시 보기 위해 적어두는 URI 구조
Network,  URI

다시 보기 위해 적어두는 URI 구조

하나의 주소 안에도 여러가지 용어가 나온다. Host, Domain, Site, Origin등이 그것이다.

다시 보기 위해 적어두는 URI 구조
Tool,  Node.js

노드 버전 매니저 툴 비교기(nvm & fnm & Volta)

nvm을 시작으로 Node.js 버전을 관리하다 fnm을 알게되었고, 추가로 Volta를 알게되어 세가지 툴의 속도 및 방식에 대해서 간략하게 알아본 정보를 정리해본다.

노드 버전 매니저 툴 비교기(nvm & fnm & Volta)
Tool,  Node.js

노드 버전 매니저 툴 비교기(nvm & fnm & Volta)

nvm을 시작으로 Node.js 버전을 관리하다 fnm을 알게되었고, 추가로 Volta를 알게되어 세가지 툴의 속도 및 방식에 대해서 간략하게 알아본 정보를 정리해본다.

노드 버전 매니저 툴 비교기(nvm & fnm & Volta)
Tool,  Node.js

nvm을 사용해 프로젝트별로 Node.js 버전 다르게 사용하기

NVM을 사용해 프로젝트 별로 Node.js 버전 지정을 자동화 해보자.

nvm을 사용해 프로젝트별로 Node.js 버전 다르게 사용하기
Tool,  Node.js

nvm을 사용해 프로젝트별로 Node.js 버전 다르게 사용하기

NVM을 사용해 프로젝트 별로 Node.js 버전 지정을 자동화 해보자.

nvm을 사용해 프로젝트별로 Node.js 버전 다르게 사용하기
Oracle

오라클 CHR, ASCII 함수 사용법

CHR(), ASCII() 함수 사용법.

오라클 CHR, ASCII 함수 사용법
Oracle

오라클 CHR, ASCII 함수 사용법

CHR(), ASCII() 함수 사용법.

오라클 CHR, ASCII 함수 사용법
Oracle

ORACLE 계정관련 명령어

ORACLE 계정관련 명령어로 테이블 조작을 해보자.

ORACLE 계정관련 명령어
Oracle

ORACLE 계정관련 명령어

ORACLE 계정관련 명령어로 테이블 조작을 해보자.

ORACLE 계정관련 명령어
Oracle

오라클 테이블 스페이스 조작

Local Oracle 사용시 용량에 문제가 생기면 이 방법을 사용하자..

오라클 테이블 스페이스 조작
Oracle

오라클 테이블 스페이스 조작

Local Oracle 사용시 용량에 문제가 생기면 이 방법을 사용하자..

오라클 테이블 스페이스 조작
React,  JavaScript

React의 클래스형, 함수형 컴포넌트 차이

React의 클래스형, 함수형 컴포넌트 차이
React,  JavaScript

React의 클래스형, 함수형 컴포넌트 차이

React의 클래스형, 함수형 컴포넌트 차이
SpringBoot,  JUnit

JUnit(1) - 개념

SpringBoot에서 JUnit의 개념짚기

JUnit(1) - 개념
SpringBoot,  JUnit

JUnit(1) - 개념

SpringBoot에서 JUnit의 개념짚기

JUnit(1) - 개념
SpringBoot,  JUnit

JUnit(2) - Mockito

Mockito 프레임워크를 통해 Mock 테스트를 알아보자.

JUnit(2) - Mockito
SpringBoot,  JUnit

JUnit(2) - Mockito

Mockito 프레임워크를 통해 Mock 테스트를 알아보자.

JUnit(2) - Mockito
SpringBoot,  MediaType

Spring에서의 MediaType

Spring MVC에서 MediaType 매핑에 대해서 알아보고 테스트 해보자

Spring에서의 MediaType
SpringBoot,  MediaType

Spring에서의 MediaType

Spring MVC에서 MediaType 매핑에 대해서 알아보고 테스트 해보자

Spring에서의 MediaType
Tripllo 제작기

(1) 제작동기

Trello 어플리케이션을 만들기 시작한 지 벌써 2달이 조금 안 되었다. 하루에 10시간씩 꼬박 시간을 들여가며 만드는 시간이 조급하면서도 즐거웠다. 현재 어플 상태는 3/4 정도 만들어진 상태로 배포되어 있다. 어플을 만들면서 다음번에 같은 문제를 만났을 때 참고할 만한 자료를 남겨두어야지 생각만 하다가 지금부터라도 남겨두어야겠다 싶어 제작기를 적으려고 한다.

(1) 제작동기
Tripllo 제작기

(1) 제작동기

Trello 어플리케이션을 만들기 시작한 지 벌써 2달이 조금 안 되었다. 하루에 10시간씩 꼬박 시간을 들여가며 만드는 시간이 조급하면서도 즐거웠다. 현재 어플 상태는 3/4 정도 만들어진 상태로 배포되어 있다. 어플을 만들면서 다음번에 같은 문제를 만났을 때 참고할 만한 자료를 남겨두어야지 생각만 하다가 지금부터라도 남겨두어야겠다 싶어 제작기를 적으려고 한다.

(1) 제작동기
Tripllo 제작기,  Travis CI,  AutoMation

(10) Frontend -travis 배포 자동화

Vue프로젝트를 aws의 S3와 CloudFront에 Travis CI를 통해 배포 자동화를 해보자.

(10) Frontend -travis 배포 자동화
Tripllo 제작기,  Travis CI,  AutoMation

(10) Frontend -travis 배포 자동화

Vue프로젝트를 aws의 S3와 CloudFront에 Travis CI를 통해 배포 자동화를 해보자.

(10) Frontend -travis 배포 자동화
Tripllo 제작기,  Sentry,  에러 모니터링

(11) Sentry 에러 로깅 시스템 도입

Sentry를 통해 프론트엔드 에러 로깅 시스템을 도입해보자.

(11) Sentry 에러 로깅 시스템 도입
Tripllo 제작기,  Sentry,  에러 모니터링

(11) Sentry 에러 로깅 시스템 도입

Sentry를 통해 프론트엔드 에러 로깅 시스템을 도입해보자.

(11) Sentry 에러 로깅 시스템 도입
Tripllo 제작기,  Let's Encrypt,  AutoMation

(12) Let's Encrypt 갱신 자동화

AWS EC2 환경에서 Nginx와 Let's Encrypt로 HTTPS SSL 인증서 갱신 자동화를 해보자.

(12) Let's Encrypt 갱신 자동화
Tripllo 제작기,  Let's Encrypt,  AutoMation

(12) Let's Encrypt 갱신 자동화

AWS EC2 환경에서 Nginx와 Let's Encrypt로 HTTPS SSL 인증서 갱신 자동화를 해보자.

(12) Let's Encrypt 갱신 자동화
Tripllo 제작기,  Vue.js

(13) Vuex-store와 EventBus에 대한 고찰

데이터를 Vuex store에 저장시키지 말고 로컬 컴포넌트에서 불러와 EventBus로 통신을 하면 어떻게 될까? 라는 물음에서 시작된 삽질기.

(13) Vuex-store와 EventBus에 대한 고찰
Tripllo 제작기,  Vue.js

(13) Vuex-store와 EventBus에 대한 고찰

데이터를 Vuex store에 저장시키지 말고 로컬 컴포넌트에서 불러와 EventBus로 통신을 하면 어떻게 될까? 라는 물음에서 시작된 삽질기.

(13) Vuex-store와 EventBus에 대한 고찰
Tripllo 제작기,  JavaScript,  Vue.js

(14) Closure & Currying 적용기

함수형 프로그래밍에 대해서 공부하다가 Tripllo에 적용한 클로저와 커링.

(14) Closure & Currying 적용기
Tripllo 제작기,  JavaScript,  Vue.js

(14) Closure & Currying 적용기

함수형 프로그래밍에 대해서 공부하다가 Tripllo에 적용한 클로저와 커링.

(14) Closure & Currying 적용기
Tripllo 제작기,  MySQL,  SpringBoot

(2) MySQL 설계 & SpringBoot init

Tripllo 백엔드 세팅을 해보자. Workbench로 DB를 설계하고 MySQL, MyBatis와 SpringBoot를 연동한다.

(2) MySQL 설계 & SpringBoot init
Tripllo 제작기,  MySQL,  SpringBoot

(2) MySQL 설계 & SpringBoot init

Tripllo 백엔드 세팅을 해보자. Workbench로 DB를 설계하고 MySQL, MyBatis와 SpringBoot를 연동한다.

(2) MySQL 설계 & SpringBoot init
Tripllo 제작기,  Vue.js

(3) Vue init & ESLint, Prettier 설정

백엔드 Setting은 끝났으니 이제 프론트엔드 Setting이 필요하다. npm 으로 Vue를 생성하고, 코드 포맷터인 ESLint, Prettier 설정을 해보자.

(3) Vue init & ESLint, Prettier 설정
Tripllo 제작기,  Vue.js

(3) Vue init & ESLint, Prettier 설정

백엔드 Setting은 끝났으니 이제 프론트엔드 Setting이 필요하다. npm 으로 Vue를 생성하고, 코드 포맷터인 ESLint, Prettier 설정을 해보자.

(3) Vue init & ESLint, Prettier 설정
Tripllo 제작기,  SpringSecurity,  JWT

(4) 로그인1 -SpringSecurity & JWT 개념

Spring Security와 JWT를 사용해서 로그인 기능을 구현했다. Spring Security와 JWT의 개념을 알아보자.

(4) 로그인1 -SpringSecurity & JWT 개념
Tripllo 제작기,  SpringSecurity,  JWT

(4) 로그인1 -SpringSecurity & JWT 개념

Spring Security와 JWT를 사용해서 로그인 기능을 구현했다. Spring Security와 JWT의 개념을 알아보자.

(4) 로그인1 -SpringSecurity & JWT 개념
Tripllo 제작기,  SpringSecurity,  JWT

(5) 로그인2 -SpringBoot 구현

Spring Security와 JWT를 사용해서 로그인 기능을 구현했다. Spring Security의 구현된 소스와 login의 Service 단 내부 로직을 개념에 맞춰서 알아보자.

(5) 로그인2 -SpringBoot 구현
Tripllo 제작기,  SpringSecurity,  JWT

(5) 로그인2 -SpringBoot 구현

Spring Security와 JWT를 사용해서 로그인 기능을 구현했다. Spring Security의 구현된 소스와 login의 Service 단 내부 로직을 개념에 맞춰서 알아보자.

(5) 로그인2 -SpringBoot 구현
Tripllo 제작기,  Vue.js

(6) 로그인3 -vue 구현

SpringBoot 쪽 서비스 로직이 만들어졌으므로 이번엔 vue에서 화면을 만들고 회원가입과 로그인을 진행해보자. 우리는 vue의 기능을 최대한 살려서 뼈대가 되는 페이지 하나에 login과 signup 2개의 컴포넌트를 붙이고 watch를 활용해 데이터를 검증할 것이다.

(6) 로그인3 -vue 구현
Tripllo 제작기,  Vue.js

(6) 로그인3 -vue 구현

SpringBoot 쪽 서비스 로직이 만들어졌으므로 이번엔 vue에서 화면을 만들고 회원가입과 로그인을 진행해보자. 우리는 vue의 기능을 최대한 살려서 뼈대가 되는 페이지 하나에 login과 signup 2개의 컴포넌트를 붙이고 watch를 활용해 데이터를 검증할 것이다.

(6) 로그인3 -vue 구현
Tripllo 제작기,  Vue.js

(7) 로그인4 -vue 소셜로그인

vue에서 소셜 로그인 기능을 만들어보자. 보통 요즘 서비스들은 다 소셜 로그인으로 가입, 로그인이 되므로 앞으로 서비스 개발할 때 거의 필수적으로 들어갈 기능이라고 생각했다. 또 backend보다는 frontend 개발자로 지원하고 싶기 때문에 백엔드의 OAuth2.0 을 사용하는 것 보다는 Javascript단에서 로그인 기능을 넣고 싶었다.

(7) 로그인4 -vue 소셜로그인
Tripllo 제작기,  Vue.js

(7) 로그인4 -vue 소셜로그인

vue에서 소셜 로그인 기능을 만들어보자. 보통 요즘 서비스들은 다 소셜 로그인으로 가입, 로그인이 되므로 앞으로 서비스 개발할 때 거의 필수적으로 들어갈 기능이라고 생각했다. 또 backend보다는 frontend 개발자로 지원하고 싶기 때문에 백엔드의 OAuth2.0 을 사용하는 것 보다는 Javascript단에서 로그인 기능을 넣고 싶었다.

(7) 로그인4 -vue 소셜로그인
Tripllo 제작기,  리팩토링,  Vue.js

(8) vue 리팩토링1

멘토링 후 Tripllo에 꽤 많은 것을 손봐야한다는 것을 알게 되었다. 하나하나 고쳐보면서 정리한 것을 기록해보자.

(8) vue 리팩토링1
Tripllo 제작기,  리팩토링,  Vue.js

(8) vue 리팩토링1

멘토링 후 Tripllo에 꽤 많은 것을 손봐야한다는 것을 알게 되었다. 하나하나 고쳐보면서 정리한 것을 기록해보자.

(8) vue 리팩토링1
Tripllo 제작기,  리팩토링,  Vue.js

(9) vue 리팩토링2

멘토링 후 Tripllo에 꽤 많은 것을 손봐야한다는 것을 알게 되었다. 하나하나 고쳐보면서 정리한 것을 기록해보자.

(9) vue 리팩토링2
Tripllo 제작기,  리팩토링,  Vue.js

(9) vue 리팩토링2

멘토링 후 Tripllo에 꽤 많은 것을 손봐야한다는 것을 알게 되었다. 하나하나 고쳐보면서 정리한 것을 기록해보자.

(9) vue 리팩토링2
Tripllo 제작기

Tripllo 삭제 및 일상 회고

정들었던 Tripllo 어플리케이션을 삭제했다. AWS EC2, S3, RDB를 내렸다. 배포되어있는 도메인도. 씁쓸하면서 이상한 기분이었다. RDB 생성 script를 백업하고, 소개 페이지에 올려둔 gif 파일도 모두 백업해두었다.

Tripllo 삭제 및 일상 회고
Tripllo 제작기

Tripllo 삭제 및 일상 회고

정들었던 Tripllo 어플리케이션을 삭제했다. AWS EC2, S3, RDB를 내렸다. 배포되어있는 도메인도. 씁쓸하면서 이상한 기분이었다. RDB 생성 script를 백업하고, 소개 페이지에 올려둔 gif 파일도 모두 백업해두었다.

Tripllo 삭제 및 일상 회고
Tripllo 제작기

Tripllo 후기

프로젝트를 마무리했다. 두달 반 조금 안 되게 시간이 걸린 듯 하다. 프로젝트를 진행하면서 느꼈던 점을 조금 적어보려고 한다.

Tripllo 후기
Tripllo 제작기

Tripllo 후기

프로젝트를 마무리했다. 두달 반 조금 안 되게 시간이 걸린 듯 하다. 프로젝트를 진행하면서 느꼈던 점을 조금 적어보려고 한다.

Tripllo 후기
TypeScript

TypeScript의 기본개념과 환경설정

TypeScript 환경설정을 통해 웹 환경 추세를 알아보자. (feat. allowImportingTsExtensions)

TypeScript의 기본개념과 환경설정
TypeScript

TypeScript의 기본개념과 환경설정

TypeScript 환경설정을 통해 웹 환경 추세를 알아보자. (feat. allowImportingTsExtensions)

TypeScript의 기본개념과 환경설정
Vue.js

Vue2 반응성에 대해 깊이 알아보기

Vue 2.x 버전의 반응성에 대해 깊이 알아보자. Vue의 반응성을 제대로 알지 못한다면 UI 컴포넌트를 다룰 때, 혹은 data 객체를 다룰 때 문제가 생길 수 있다.

Vue2 반응성에 대해 깊이 알아보기
Vue.js

Vue2 반응성에 대해 깊이 알아보기

Vue 2.x 버전의 반응성에 대해 깊이 알아보자. Vue의 반응성을 제대로 알지 못한다면 UI 컴포넌트를 다룰 때, 혹은 data 객체를 다룰 때 문제가 생길 수 있다.

Vue2 반응성에 대해 깊이 알아보기