Amazon Linux 2 OS์ EC2์์ nginx ์ค์นํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. Amazon Linux 2์์๋ yum์ ํตํ nginx ์ค์น๊ฐ ์ง์๋์ง ์์ต๋๋ค. ์ผ๋ฐ์ ์ธ yum ์ ํตํ ์ค์น ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. sudo yum install nginx yum์ผ๋ก๋ nginx ํจํค์ง๋ฅผ ์ฐพ์ง ๋ชปํฉ๋๋ค. To use, run ์ ๋์์๋ amazon-linux-extras install : topic ๋ฅผ ์ด์ฉํ์ฌ nginx ์ค์น๋ฅผ ์งํํ๋๋ก ํ๊ฒ ์ต๋๋ค. amazon-linux-extras list ๋ช ๋ น์ด๋ฅผ ํตํด ์ค์นํ nginx๋ฅผ ์ฐพ์๋ณด๊ฒ ์ต๋๋ค. amazon-linux-extras list | grep nginx ์กฐํ๋ nginx1์ ๋ํด์ ์ค์น๋ฅผ ์งํํด ๋ณด๊ฒ ์ต๋๋ค. ..
์๋ฐ์์ ๋ณ์๋ช ์ผ๋ก ํด๋์ค๋ฅผ ์ธ์คํด์คํ ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๋ฐฉ๋ฒ 1-์ธ์๋ ์๊ณ ์์ฑ์๋ง ์๋ ํด๋์ค์๋ง ํด๋น ํด๋์ค์ ์ธ์๊ฐ์๋ ์์ฑ์๊ฐ์๋ ๊ฒฝ์ฐ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ Class๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์คํด์ค๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. Class domainClass = Class.forName("com.femarket.domain." + domainName); Object domain = domainClass.newInstance(); ๋ฐฉ๋ฒ 2 ํด๋์ค์ ์ธ์๊ฐ์๋ ์์ฑ์๊ฐ์๋ ๊ฒฝ์ฐ์๋ ์๋ํ๋ ๋ ์์ ํ ๋ฐฉ๋ฒ์ ํด๋์ค ๊ฐ์ฒด๋ฅผ ์ฟผ๋ฆฌํ์ฌ ํด๋น Constructor๊ฐ์ฒด ๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ด ๊ฐ์ฒด์ ๋ํ newInstance()๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๊ฒ์ ๋๋ค. Class clazz = Class.forName("..
kube config์์ eks ์ ๋ณด๊ฐ ์์ด์ผํด์ ์์ปค๋ ธ๋ ์์ฑ ์ ์๋ ์ ๊ทผ๊ฐ๋ฅํด์ ๋ง์คํฐ๋ ์ด์ฐจํผ aws์์ ๊ด๋ฆฌํด์ aws sts get-caller-identity ์ด๊ฑธ๋ก ๋ณธ์ธ local ์ปดํจํฐ์์ access key, secret key ์ค์ ํ๋์ง ํ์ธํ์๊ณ aws eks --region ${region_name} update-kubeconfig --name ${cluster_name} ์ด๊ฑธ๋ก kube config ํ์ผ ์ ๋ฐ์ดํธํ์ธ์ https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/managing-auth.html ํด๋ฌ์คํฐ ์ธ์ฆ - Amazon EKS ์ด ํ์ด์ง์ ์์ ์ด ํ์ํ๋ค๋ ์ ์ ์๋ ค ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ค๋ง์์ผ ๋๋ ค ์ฃ์กํฉ๋๋ค. ์ ๊น ์๊ฐ..
์๋ฐ์คํฌ๋ฆฝํธ์์ ํ์ฌ ๋ ์ง ๋ฐ ์๊ฐ์ ๊ตฌํ๊ธฐ ์ํด์๋ Date ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. Date ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ์ ๋ ์ง๋ฅผ ์ถ๋ ฅํ๋ฉด YYYY-MM-DD์ ๊ฐ์ ํ์์ ๋ ์ง ํฌ๋งท์ผ๋ก ์ถ๋ ฅ๋์ง ์๊ธฐ ๋๋ฌธ์, Date ๊ฐ์ฒด์์ ์ ๊ณตํ๋ ์ถ์ถ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ ์ง ํฌ๋งท์ ๋ณํํ๋ ์์ ์ด ์ถ๊ฐ์ ์ผ๋ก ํ์ํ๋ค. ํ์ฌ ๋ ์ง, ์๊ฐ ๊ตฌํ๊ธฐ var today = new Date(); console.log(today); // ๊ฒฐ๊ณผ : Sun May 30 2021 15:47:29 GMT+0900 (๋ํ๋ฏผ๊ตญ ํ์ค์) // ๊ฒฐ๊ณผ : Sun May 30 2021 15:47:29 GMT+0900 (๋ํ๋ฏผ๊ตญ ํ์ค์) Date ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ ์์คํ ์ ๋ ์ง๋ฅผ ๊ฐ์ ธ์์ ์ถ๋ ฅํ๋ฉด, ํ์์์ ์ฌ์ฉํ๋ ๋ ์ง ํฌ๋งท(YYYY-MM-DD ..
ajax ์ฌ์ฉํ๋ ์ค ํ๊ฐ์ง ์๋ฌธ์ด ์๊ฒผ์ต๋๋ค. ์ JSON.stringify๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ฉด ์ ์คํ๋ง @RequestBody์์ ๋ฐ์ง ๋ชปํ๋์ง ๋ง์ ๋๋ค. ๊ทธ๋์ data : {test : "test"} ์ data : JSON.stringify์ ํ์ ๋ค์ ์ฝ์๋ก ์ฐ์ด๋ณธ ๊ฒฐ๊ณผ ์ ์๋ object์ด๊ณ ํ์๋ string์ด์์ต๋๋ค. ์ฌ๊ธฐ์ ์ํ! ํ์ต๋๋ค. ๋ด๊ฐ ํํ ๋งํ๋ json๊ณผ js์์ ์ฌ์ฉํ๋ javacscript Object๋ ๋ค๋ฅธ๊ฑฐ๊ตฌ๋! ๊ทธ๋์ ์ด๊ฑฐ์ ๋ํด ๊ธ์ ์ฐพ์๋ณธ ํ ์ ๋ง ์ ์ค๋ช ํด์ฃผ์ ๊ธ์ด ์์ด์ ๊ฐ์ ธ์๋ดค์ต๋๋ค. ์ด๊ธ์ yongseong.log ๋์ ๊ธ์ ๋๋ค. [๊ฐ๋ฐ์์] JSON๊ณผ JavaScript Object์ ์ฐจ์ด์ ์๋ ํ์ธ์. ๊น์ฉ์ฑ์ ๋๋ค.์ ๋ง ๋น์ทํ๊ฒ ์๊ฒจ๋จน์..
var data = {"name":"John Doe"} $.ajax({ type : "post", url : "/test", dataType : "json", //์๋ฒ์์ ๋ฐ์ ๋ฐ์ดํฐ ํ์ contentType: "application/json; charset=utf-8", //์๋ฒ๋ก ๋ณด๋ด๋ ๋ฐ์ดํฐ ํ์ data : JSON.stringify(data), success : function(result) { alert(result.success); }, error: function(e){ alert("fail"); } }); ๋งจ๋ ๊น๋จน์ด์ ์ ๊ฐ ๋ณด๊ธฐ ์ํด ์๋๋ค. $.ajax({ type : `http method type`, url : `url`, data : `์๋ฒ์ ์ ์กํ ๋ฐ์ดํฐ`, contentTy..
CIDR? AWS, GCP, Azure ๋ฑ ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋ ๋ฑ์ ์ฌ์ฉํ ๋ ๋คํธ์ํฌ ์ค์ ์์ VPC ๋ฐ Subnet ์ ์์ฑํ์ฌ ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ฑํ๊ฒ ๋ฉ๋๋ค. ์ด ๋ CIDR(Classless Inter-Domain Routing) ๋ธ๋ก์ ์ด์ฉํ์ฌ 10.10.1.0/24 ๋ฑ๊ณผ ๊ฐ์ด ํ์ํ๊ฒ ๋๋๋ฐ ์ฃผ๋์ด ๊ฐ๋ฐ์ ๊ผฌ๊ผฌ๋ง ์์ ์๋ AWS ์ฝ์์์ ๋คํธ์ํฌ, ์ํ๋ฆฌํฐ๊ทธ๋ฃน ๋ฑ์์ ๋ง์ด ๋ด ์์ง๋ง ์ ๋ฐฐ๋ค์ด ์๋ ค์ค ๋๋ก ๊ทธ๋ฅ Cํด๋์ค์ผ๋๋ /24, ํน์ IP๋ง ์ง์ ํ ๋๋ /32 ๋ก ์๊ณ ์ด์์์๊ณ , ์์ง๋ ๊ทธ๋ ๊ฒ ์๊ณ ์๋ ์ฌ๋๋ค์ด ๋ถ๋ช ํ ์์ ๊ฒ ๊ฐ์์ ๊ฐ๋จํ์ง๋ง ์ ํํ๊ฒ! ํฌ์คํธ๋ฅผ ์์ฑ ํด ๋ณด๋ ค ํฉ๋๋ค. ์ฐธ๊ณ ๋ก CIDR๋ ์ฌ์ด๋ ๋ผ๊ณ ์ฝ์ผ๋ฉด ๋๊ณ , ์ ํฝ์์ ๋ฏธ๊ตญ์ธ ๊ฐ๋ฐ์๊ฐ ๋ฐ์ํ๋๊ฑธ ๋ค์ด๋ณด๋ ์ธ์ด๋ ์ ๋๋ก ๋ฐ์ ํฉ..
๋๋ฏธ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๋ ํ๋ก์์ ์์ฑ ํ์ด์ง ํ ์คํธ์ ๊ฐ์ด ๋ง์ ์์ ๋๋ฏธ๋ฐ์ดํฐ(dummy data)๊ฐ ํ์ํ ๊ฒฝ์ฐ, ํ๋ก์์ ๋ฅผ ์์ฑํด์ ๋๋ฏธ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ ์ ์๋ค. Workbench์์ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฅํ๋ค. DELIMITER $$ DROP PROCEDURE IF EXISTS loopInsert$$ CREATE PROCEDURE loopInsert() BEGIN DECLARE i INT DEFAULT 1; WHILE i
๋ก๋๋ฐธ๋ฐ์๋? ๋ก๋๋ฐธ๋ฐ์๋ ์๋ฒ์ ๊ฐํด์ง๋ ๋ถํ(=๋ก๋)๋ฅผ ๋ถ์ฐ(=๋ฐธ๋ฐ์ฑ)ํด์ฃผ๋ ์ฅ์น ๋๋ ๊ธฐ์ ์ ํต์นญํ๋ค. ํด๋ผ์ด์ธํธ์ ์๋ฒํ(Server Pool, ๋ถ์ฐ ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ฑํ๋ ์๋ฒ๋ค์ ๊ทธ๋ฃน) ์ฌ์ด์ ์์นํ๋ฉฐ, ํ ๋์ ์๋ฒ๋ก ๋ถํ๊ฐ ์ง์ค๋์ง ์๋๋ก ํธ๋ํฝ์ ๊ด๋ฆฌํด ๊ฐ๊ฐ์ ์๋ฒ๊ฐ ์ต์ ์ ํผํฌ๋จผ์ค๋ฅผ ๋ณด์ผ ์ ์๋๋ก ํ๋ค. ๋ง์ฝ Scale-out์ ๋ฐฉ์์ผ๋ก ์๋ฒ๋ฅผ ์ฆ์คํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค๋ฉด ์ฌ๋ฌ ๋์ ์๋ฒ๋ก ํธ๋ํฝ์ ๊ท ๋ฑํ๊ฒ ๋ถ์ฐํด์ฃผ๋ ๋ก๋๋ฐธ๋ฐ์ฑ์ด ๋ฐ๋์ ํ์ํ๋ค. OSI 7 ๊ณ์ธต์ด๋? ๋คํธ์ํฌ ํต์ ์์คํ ์ ํฌ๊ฒ ์ผ๊ณฑ ๊ฐ์ง์ ๊ณ์ธต(OSI 7 layers, ๊ฐ๋ฐฉํ ํต์ ์ ์ํ ๊ตญ์ ํ์ค ๋ชจ๋ธ)์ผ๋ก ๋๋๋ค. ๊ฐ๊ฐ์ ๊ณ์ธต(Layer)์ด L1/L2/L3โฅโฅL7์ ํด๋นํ๋ค. ์์ ๊ณ์ธต์์ ์ฌ์ฉ๋๋ ์ฅ๋น๋ ํ์ ๊ณ์ธต์ ์ฅ..
S3 S3๋ AWS๊ฐ ์ ๊ณตํ๋ ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง ์๋น์ค์ ๋๋ค. 99.999999%๋ผ๋ ๋์ ๋ด๊ตฌ์ฑ์ด ํน์ง์ธ ์คํ ๋ฆฌ์ง๋ก ๋ฏธ๋ฆฌ ์คํ ๋ฆฌ์ง ์ฉ๋ ๋ฑ์ ์ ์ํ์ง ์๊ณ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ ๊ณต๊ฐ ์ ์ฑ , ๋ฐ์ดํฐ ์ํธํ, ๋น์ฉ ํจ์จ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฅ๊ธฐ ๋ณด๊ดํ๊ธฐ ์ํ ๋ผ์ดํ์ฌ์ดํด ์ ์ฑ ๋ฑ์ ๋ง์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ ์ฉํ ์๋น์ค์ ๋๋ค. S3์์๋ ์คํ ๋ฆฌ์ง์ ๊ธฐ๋ณธ ๋จ์๋ก '๋ฒํท'์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ์์ญ์ ์์ฑํ๊ณ ๊ทธ ์์ ํ์ผ์ ์ ์ฅํฉ๋๋ค. CloudFront CloudFront๋ AWS๊ฐ ์ ๊ณตํ๋ ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(Content Delivery Network, CDN) ์๋น์ค์ ๋๋ค. CDN์ ์ธํฐ๋ท์์ ์น ์ฝํ ์ธ , ์ด๋ฏธ์ง, ๋์์, ์ ํ๋ฆฌ์ผ์ด์ ๋ฑ์ ๋น ๋ฅด๊ฒ ์ ์กํ๊ธฐ ์ํ ๊ตฌ์กฐ๋ก ๋์ด ์์ต๋๋ค. CloudFront๋ ์ ..
ํค๋ฐ๋์์ ์๋ ์ฝ๋๋ก ์์ฒญ์ ๋ณด๋ด๋ฉด ์๋์ ๊ฐ์ ์๋ต์ ๋ฐ์ ์ ์์ต๋๋ค. analyzer๋ ์ปค์คํ analyzer ์ฌ์ฉํ์ต๋๋ค. tokenizer๋ nori๋ฅผ ์ฌ์ฉํ์๊ณ , filter๋ shingle๋ฅผ ์ฌ์ฉํ์์ต๋๋ค. ์ด ๊ฐ์ ์๋ฐ์์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด ์๋์ ๊ฐ์ ์ฝ๋๋ฅผ ์์ฑํด์ฃผ์๋ฉด ๋ฉ๋๋ค. AnalyzeRequest request = AnalyzeRequest.withIndexAnalyzer("st_pdt", "nori_discard_1", pdt.getS_name()); AnalyzeResponse response = client.indices().analyze(request, RequestOptions.DEFAULT); List tokens = response.getTokens(); for(An..
๋ฌดํ ์คํฌ๋กค์ ์ด์ปค๋จธ์ค ๊ด๋ จ๋ ์น์ด๋ ์ฑ์ ์ฌ์ฉํ๋ฉด ์ฝ๊ฒ ์ ํ ์ ์๋ ๊ธฐ๋ฅ์ ๋๋ค. ์คํฌ๋กค์ ์์น๊ฐ ์ด๋ ํ ์กฐ๊ฑด์ ์ถฉ์กฑํ๊ฒ ๋๋ฉด ์ถ๊ฐ์ ์ผ๋ก ์ํ๋ค์ ๋ถ๋ฌ์ต๋๋ค. [JavaScript] ๋ฌดํ ์คํฌ๋กค ์ ์ํ ์์น ์ ์ง ๋ฌดํ ์คํฌ๋กค ๊ธฐ๋ฅ์ ๊ตฌํํ๋๋ฐ ์์ด ๋ฐ๋์ ๋ณํ๋์ด์ผ ํ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ๋ฐ๋ก ๋ฌดํ ์คํฌ๋กค๋ก ๋ ๋๋ง๋ ์ํ์ ๋๋ฅด๊ณ ๋ค์ [๋ค๋ก๊ฐ๊ธฐ]๋ฅผ ํ์ ์ ์ฌ์ ํ ๊ทธ ์ํ์ ์์น๋ก ์์ผ ํ๋ค๋ ๊ฒ kingofbackend.tistory.com ๊ทธ๋ผ ์ด๋ป๊ฒ ๊ตฌํํ๋์ง ๋ฐ๋ก ์์๋ณด๊ฒ ์ต๋๋ค. ๋ฌดํ ์คํฌ๋กค ์ฝ๋์ ๋๋ค. var stopping = false; var end = false; $(window).scroll(function () { var cst = $(window).scrollTop(); var ..
๋ฌดํ ์คํฌ๋กค ๊ธฐ๋ฅ์ ๊ตฌํํ๋๋ฐ ์์ด ๋ฐ๋์ ๋ณํ๋์ด์ผ ํ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ๋ฐ๋ก ๋ฌดํ ์คํฌ๋กค๋ก ๋ ๋๋ง๋ ์ํ์ ๋๋ฅด๊ณ ๋ค์ [๋ค๋ก๊ฐ๊ธฐ]๋ฅผ ํ์ ์ ์ฌ์ ํ ๊ทธ ์ํ์ ์์น๋ก ์์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. [JavaScript] ๋ฌดํ ์คํฌ๋กค ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ ๋ฌดํ ์คํฌ๋กค์ ์ด์ปค๋จธ์ค ๊ด๋ จ๋ ์น์ด๋ ์ฑ์ ์ฌ์ฉํ๋ฉด ์ฝ๊ฒ ์ ํ ์ ์๋ ๊ธฐ๋ฅ์ ๋๋ค. ์คํฌ๋กค์ ์์น๊ฐ ์ด๋ ํ ์กฐ๊ฑด์ ์ถฉ์กฑํ๊ฒ ๋๋ฉด ์ถ๊ฐ์ ์ผ๋ก ์ํ๋ค์ ๋ถ๋ฌ์ต๋๋ค. ๊ทธ๋ผ ์ด๋ป๊ฒ ๊ตฌํํ๋์ง kingofbackend.tistory.com ๋ง์ฝ, ์ด ๊ธฐ๋ฅ์ด ๊ตฌํ๋์ด ์์ง ์์ผ๋ฉด ์ํ์ ๋๋ฅด๊ณ ๋ง์ ๋ค์ง ์์ [๋ค๋ก๊ฐ๊ธฐ]๋ฅผ ๋๋ ์ ๋ ๋ค์ ์ด ์ํ์ด ๋์๋ ๊ณณ๊น์ง ์คํฌ๋กค์ ๋ด๋ ค์ผ ํฉ๋๋ค. ์ค๋์ ์ง, ์์ด๋์ด์ค์ ์ด๋ป๊ฒ ๋์ด์๋ ์ง ํ๋ฒ ๋ณด๊ฒ ์ต๋๋ค. [์ค๋์ ์ง] ์ค๋์ ์ง..
function setSessionStorage(key, value){ sessionStorage.setItem(key, value); } function getSessionStorage(key){ return sessionStorage.getItem(key); } function setJSONSessionStorage(key, value){ sessionStorage.setItem(key, JSON.stringify(value)); } function getJSONSessionStorage(key){ return JSON.parse(sessionStorage.getItem(key)); } function removeSessionStorage(key){ sessionStorage.removeItem(ke..