일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Ajax
- 비트코인
- model1
- tiles.xml
- JavaScript
- autowired
- 웹소켓
- HTML
- 웹게임
- RDS
- websocket
- JSP
- Cookie
- 알고리즘
- Spring
- node.js
- docker
- EC2
- SQL
- CSS
- Servlet
- PL/SQL
- AWS
- 배포
- 도커
- 암호화
- express
- 블록체인
- phaser
- jQuery
- Today
- Total
목록전체 (390)
記錄
헬스를 꾸준히 했으나 기록을 다시 시작할 필요성을 느꼈다. 일단 각 운동에 대해서 조금 더 깊어졌고 그만큼 기록으로 남기면서 곱씹을 부분이 많아졌다. 또 출전 목표로 하는 만큼 조금 더 확실한 관리가 필요하고 기록의 힘을 빌리는 것이 좋다고 판단된다.
회사에서 처음으로 mina를 활용하여 배포를 해보았다. 하면서 막힌 것이 조금 많았고 기계적으로는 가능한데 무슨 내용인지도 모르고 하는 것은 의미가 없어서 이것저것 뒤져서 총 정리를 해보았다. 코드를 풀기 전 간략하게 설명하자면 mina라는 gem은 코드의 배포를 수월하게 해주는 툴이다. mina를 이용해서 mina가 요구하는 설정대로 내용을 채워준다음 시동어로 명령하면 알아서 서버에 들어가서 쉘스크립트를 순차적으로 실행해서 모든 것을 해준다. 더 자세히 풀어서 설명하자면 서버 컴퓨터에 직접 ssh를 통해 접속하여 깃으로부터 클론하고, 이것저것 공유 폴더 설정하고 관련한 서버 설정하고 루비 설정하고 등등 할 일을 mina를 통해서 로컬에서 한 파일 내에 다 설정하여 순차적으로 실행시키는 것이다. 하나의 ..
- 외국어는 절대 머리로 하는 공부가 아니다. - 불가능한 것을 손에 넣으려면 불가능한 것을 시도해야 한다. - 나의 능력을 펼칠 기회는 국경 밖에 더 많다. - 용기란 두려움이 없는 것이 아니다. 두려움에 맞서고 저항하는 것이다. - 우수한 젊은이들이 밤에는 천 가지 길을 상상하다가도 아침에 일어나면 아무 생각 없이 원래 가던 길로 되돌아가는 것을 많이 보았습니다. 행동을 통해 자신의 꿈에 실천의 기회를 주지 않는다면 영원히 기회는 없습니다. - 외국어는 학문이 아닙니다. 원하는 것을 얻고, 꿈을 이루기 위해 가장 먼저 가져야 하는 능력입니다. - 누구나 영어를 잘할 수 있습니다. 영어를 어렵게 만드는 잘못된 공부법을 고수하면서 좌절하지 마세요. - 자연스럽게 연주하기 위해 한 마디 한 마디를 수십 수..
https://github.com/devjang/developer-roadmap
사실 docker를 먼저 공부하게 된 이유는 회사에서 도커 용량 초과시 로그가 기록되지 않는 이슈가 발생했을 때 이를 맡아서 해결해야 하는 포지션이 서버 개발자이기 때문이다. 더 정확히는 기존에 그걸 하고 계시던 분이 휴가를 가셔서 혹시나 그 사이에 내가 해야할 일이 발생할 까봐 미리 준비하는 차에 찾아보다 보니 재밌어서 그냥 포스팅으로 남길 생각이 들었다. 그래서 앞서 포스팅에서 쓴 로컬에서 개발 -> 도커 이미지 생성 -> 도커 허브 및 레지스트리에 이미지 업로드 -> aws 인스턴스 생성 및 aws 상에 배포 의 흐름대로 가는 것이 가장 기본적이긴 한데, 그 전에 회사에서 찾아본 내용을 정리하고 넘어가겠다. 이슈는 끊임없이 발생되는 도커 상의 로그가 꽉 차서 더 이상 로그를 볼 수 없을 때 이를 해..
docker는 원래 '부두 노동자' 라는 뜻으로 항구에 정박한 배에 실려있는 물자를 내려서 육지로 옮기거나 혹은 육지에서 어디론가로 수송할 화물을 배에 싣는 노동자를 뜻하는 단어이다. 처음 docker에 대해서 공부할 때에는 그냥 그런가보다 하고 지나갔던 뜻인데 공부하면 할 수록 이 '부두 노동자'로서의 기능이 더욱 뚜렷해보여서 네이밍을 굉장히 잘했다는 생각이 든다. 하지만 단순히 '부두 노동자'라고 해서 물건 싫어 나르는 '사람'을 생각하면 docker에 대해 직관적으로 이해하기 힘든 것 같다. docker에 대해 직관적으로 이해하려면 내가 생각하기에는 아래의 사진이 도움이 될 것 같다. 이 사진에서의 포인트는 '컨테이너'이다. 컨테이너에는 옮기고자 하는, 혹은 당장 옮기진 않더라도 보관해뒀다가 나중에..
그간 꾸준히 운동은 했으나 기록을 잠시 쉬었다. 다시 시작한다. 가볍게 D-21로 기록하는 습관을 다시 들여본다.
[스프링 시큐리티] 스프링 시큐리티란 스프링에서 '보안 기능'을 위해 사용하는 프레임워크이다. 여기서 말하는 '보안 기능' 이란 '인증'과 '인가'로 나눌 수 있다. '인증'은 접속 자체에서부터 해당 접속을 허락해줘도 될지, 해당 접근을 인증하는 것이다. 쉽게 말해 비밀번호와 아이디를 제대로 쳤는지 확인하는 로그인 기능으로 볼 수 있다. '인가'는 애플리케이션 내 리소스에 대한 접근을 제어하는 것을 의미한다. 회원 내에도 등급이 나뉘어져 있어 이를 세세하게 분류하여 특정 페이지에 따라 특정한 사용자에게만 허락해 준다던가 하는 것을 예로 들 수 있다. [스프링 시큐리티 설정] 1. 라이브러리 설정(pom.xml) org.springframework.security spring-security-web 4.0..
의미> 특정한 값을 기준으로 배열을 해당 값보다 작은 쪽, 큰 쪽으로 가른다. 그렇게 가르면 하나의 배열이 두 개의 조각이 되는데 각 조각에서 또 특정 값을 기준으로 잡아 해당 값보다 작은 쪽, 큰 쪽으로 배열을 나눈다. 이런 행위를 재귀적으로 반복하여 결국 처음 타겟이었던 배열 본체를 정렬하는 정렬 방법이다. 지금까지 했던 어떤 배열보다도 시간복잡도가 낮다. 이유는 반복을 두 번 중복으로 사용하지 않고 한 번만 사용하기 때문이다. 코드예시> #include int number = 10; int array[10] = {5, 7, 8, 9, 4, 6, 1, 3, 2, 10}; int show(int* array){ for(int i = 0; i < 10; i ++){ printf("%d ", arr..
의미> 선택정렬은 한 번 반복 할 때에 타겟이 되는 대상들을 모두 비교하여 min인 경우 무조건 min 값을 챙겨놨다가 인덱스를 하나 하나 움직이면서 챙겨둔 min 값을 넣는 것. 버블정렬은 인접한 원소와 비교하여 조건절이 만족하면 무조건 이를 위치를 바꾸어서 배열의 끝 혹은 맨 앞에 적재 하는 것. 삽입정렬은 버블정렬과 유사한 측면이 있지만 "필요할 때에만" 위치를 바꾼다는 점에서 조금 다르다. 즉, 버블정렬은 인접한 두 원소를 인덱스를 증가시키면서 계속 비교하고 계속 가져가던 원소가 조건에 부합하면 그거때문에 위치를 바꾸고 새로 만난 원소가 더 적절하면 그것을 다시 가지고 가면서 위치를 바꾼다. 반면, 삽입정렬은 기존의 정렬이 "이미 되어있다"고 가정을 한 상태에서 인덱스를 증가시키기 때문에 조건절..
의미> 인접한 두 원소를 비교하여 우측의 것이 크면 위치를 바꾸고 다시 바꾼 것을 가지고 그 다음 원소와 비교. 계속 이런 식으로 비교해가며 가장 큰 값을 가장 우측에 적재. 반복이 한 번 돌 때마다 반복 대상 원소들 중 가장 값이 큰 것은 맨 우측으로 적재되며 쌓인다. 쉽게 말해서 둘이 비교해서 원하는 것이 나오면 바로 취하고 그렇게 취한 것을 가지고 또 비교해서 필요없으면 바로 갈아치워서 결국 가장 값이 큰 것을 끝까지 위치를 바꿔가며 오른쪽까지 가져가는 것. 코드예시> #include int main(void){ int array[10] = {9, 5, 6, 8, 3, 7, 10, 2, 4, 1}; int i, j, temp; for(i = 0; i < 10; i++){ //for(j = 0..
의미> 1부터 10까지의 배열이 무작위로 있을 때 10개를 대상으로 가장 작은 것을 골라 맨 앞과 위치 스위칭. 그리고 맨 앞에 간 가장 작은 것은 제쳐두고 나머지 9개를 대상으로 전체 검색을 하여 그 중 가장 작은 것을 맨 앞으로 스위칭. 이런 식으로 "비교-> 특정-> 위치 스위칭 -> 제껴두고 나머지들을 대상으로 다시 비교-> 특정-> 스위칭" 하는 것을 선택정렬이라고 함. '선택'인 이유는 대상을 특정해서 이를 선택하여 위치를 바꾸는데에서 '선택'이라는 명칭이 발생. 코드예시> #include int main(void){ int array[10] = {9, 5, 6, 8, 3, 7, 10, 2, 4, 1}; int i, j, index, min, temp; for(i = 0; i < 10; i++..
desc table_name;-- table 정보 보기 select ename, comm, nvl(comm,0)from emp;-- nvl(a, b) => a가 null 이라면 b로 처리 select 95.456789, round(95.9), trunc(95.9)from dual;-- round(a,b) => a를 b+1 째자리에서 반올림-- trunc(a,b) => a를 b+1 부터 버림 select mod(10,3)from dual;-- mod(a,b) => a를 b로 나눈 나머지를 반환 select ename, deptno, decode(deptno, 10, 'a', 20, 'b', 30, 'c', 40, 'd') from emp;-- decode(a, var1, var2, var3, var4) =..
엄청 간단하고 사소한 팁이지만 나름 잘 활용했었기에 포스팅으로 남긴다.소스트리를 쓰면 완전 텅 빈 새폴더에만 새로운 리파지토리를 만들 수 있다. 그래서 기존에 내가 사용중인 프로젝트를 소스트리를 통해 형상관리를 하고 싶을 때에 문제가 발생한다. 해결 방법으로는 소스트리 말고 git Bash를 이용하여 해당 프로젝트 폴더에서 git init 명령어를 통해 직접 .git을 만드는 것이 있다.
이전 포스팅(http://kimjungkwon.co.kr/534?category=794190)에 이은 포스팅으로 AWS 실습의 기록이다. 이전 두 개의 포스팅을 통해 AWS에서 EC2인스턴스, RDS인스턴스를 생성하고 이를 연결하는 것까지 모든 설정 과정을 기록했다. 이제부터는 실제로 코드로 구현한 나의 프로젝트를 어떻게 DB와 연동하고 또 배포 할 것인지 그 과정을 기록한다. 따라서 이번 포스팅부터는 코드가 조금씩 포함될 예정이다. 7) Spring - MySQL(RDS 인스턴스) 연동먼저 지금까지 애써 만든 RDS인스턴스에 실제로 java코드로 접근이 가능한지 테스트 해보겠다. 아주 잘 정리된 다른 포스팅들이 많았는데 그만큼 자세하고 길어서 나는 정말정말 단순하게 짧게 시도하려고 노력했다. 왜냐면 긴..
이 포스팅은 '실습_AWS) Spring AWS 배포 (A to Z) -1'(http://kimjungkwon.co.kr/530?category=794190)에 이은 두 번째 포스팅이다. 이전 포스팅에서 EC2와 RDS의 인스턴스를 생성하고 연결하는 작업까지 끝을 냈다. 따라서 이번 포스팅에서는 EC2 인스턴스에 내게 필요한 java, tomcat 등을 설치하는 과정을 기록한다.이전 포스팅에서 1) EC2에서 인스턴스 생성 / 2) 인스턴스 제어(연결) / 3) EC2 - RDS 연결 을 끝냈으므로 이번 포스팅은 4)부터 시작한다. 4) EC2에 Java 설치xShell에서 EC2인스턴스에 연결한 후 다음 명령어를 실행하여 JDK8 설치[1] 'sudo add-apt-repository ppa:webup..
이번 포스팅은 실제로 사이트를 구축한 뒤 AWS를 통해 어떻게 배포하는지 정리를 할 목적으로 작성한다. 기본적인 것들은 건너 뛸 것이지만 주의해야 할 것이라고 판단되는 부분은 세세하게 짚어가며 정리할 생각이다. 먼저 이 포스팅은 localhost 환경에서 원하는 웹 애플리케이션이 완성되었다는 전제 하에 이 웹 애플리케이션을 배포하려는 시점이라고 가정한다. 학습을 위한 실습이므로 모두 프리티어 기준으로 만들었다.절차는 다음과 같다. 1) EC2에서 인스턴스 생성인스턴스를 생성하는데 주의 할 점은 '보안 그룹 구성'이다. '보안 그룹 구성'에서는 해당 인스턴스에 대한 트래픽의 접근을 제어하는 규칙을 정하는 곳이다. 즉, 특정한 방식으로 접근하는 트래픽에 대해 어떤 규칙을 부여 할 지(=접근하게 할 지, 막을..
이번 수업(https://opentutorials.org/course/2717/11807) 관계형 데이터베이스 서비스(RDS)에 대해서 배웠다. 내가 로컬 호스트 환경에서 깔아서 하던 그 DB를 클라우드 상에서 제공하는 것이 핵심이다. 앞서 배운 S3는 파일 서비스를 클라우드화 한 것이고 지금 배운 RDS는 DB를 클라우드화 한 것이다. S3나 RDS나 모두 클라우드화 한다는 것에서 이점이 발생하기 때문에 상품성이 있는 것 같다. 클라우드화 하면서 여러가지 이점이 발생하고 관리상 용이함이 더 높아지기 때문이다. 아래는 aws에서 공식적으로 내놓은 RDS에 대한 설명 영상이다. 생성하는 방법은 너무 간단해서 따로 포스팅 하지 않는다. 절차대로 따라가기만 하면 된다. 이건 다중 AZ배포를 yes 옵션으로 하..
이번 수업(https://opentutorials.org/course/2717/11379)에서는 aws의 s3에 대해 배웠다. 진도가 s3에 다다랐다는 표현이 더 적절한 것 같다. 다음 영상은 aws에서 공식적으로 내놓은 s3 설명 영상이다. S3(Simple Storage Service)란 간단히 말해서 클라우드 환경으로 파일을 업로드하고 다운로드 할 수 있도록 해주는 서비스이다. 데이터 유실을 고려하여 중복 저장을 하기 때문에 내구성이 높고 ec2 특성인 종량제와 같은 특성이 s3에도 있어서 비용도 저렴하다. 그리고 IAM(Identity and Access Management)를 통해 보안성을 높혔다.S3를 이해하기 위해서는 몇 가지 알아야 할 개념들이 있다. 1) 버킷가장 큰 단위의 컨테이너. 모..
이번 수업(https://opentutorials.org/course/2717/11336) 에서는 AutoScaling을 배웠다. 컴퓨터를 자동으로 생성해서 해당 컴퓨터가 자동으로 서비스를 시작하게 했다가 트래픽이 줄어들면 과금이 발생하지 않도록 자동으로 컴퓨터를 없애주는 기능이다. 클라우드 컴퓨팅의 이점인 탄력성을 제대로 보여주는 서비스이다.EC2 탭에 보면 AUTO SCALING이 있는데 여기서 설정을 시작한다. Launch Configurations와 Auto Scaling Groups가 있는데 Configurations 탭에서는 말 그대로 설정을 하는 탭이고 그런 설정을 기반으로 Auto Scaling Groups에서 Auto Scaling을 시작한다.먼저 Launch Configurations를..
Scale-Up은 요구되는 컴퓨팅 파워에 따라서 컴퓨터 성능을 업그레이드 하는 것이었다. Scale-Out은 여러 대의 컴퓨터가 협력하여 공동의 목표를 이루는 것으로 Scale-Up과는 다른 내용이다. 강의에서는 복잡도가 증가하면 예상치 못한 문제가 생길 수 있기 때문에 가급적 Scale-Up을 권장하고 있다. 하지만 Scale-Up 만으로 처리할 수 없는 정도의 트래픽이 발생하면 Scale-Out으로 처리하라고 가르친다.Scale-Out의 핵심은 '분업'에 있다. 클라이언트의 요청에 응답하기 위한 여러가지 절차를 쪼개어서 하나의 컴퓨터가 할 일을 두 대 이상의 컴퓨터가 분할해서 맡아 처리 속도를 높이는 것이다. 아래 그림을 참고하자. 그림에서 보듯 하나의 과정을 컴퓨터 한 대가 처리했다면 이를 세 대의..
이번 강의에서는 서버 컴퓨터의 확장성에 대해서 배웠다. 확장성이 왜 필요하고 어떻게 하는지에 대해서 배웠다. 확장성이 필요한 이유는 서버 컴퓨터가 감당해야 할 트래픽의 크기가 일정하지 않고 변화한다는 것이 근본적인 이유다. 증가하는 트래픽을 감당하기 위해서는 서버 컴퓨터의 성능을 높혀주어야 하기 때문이다. 또, 여기서 한 걸음 더 나아가자면 줄어드는 트래픽에 대응하기 위해서도 탄력적인 서버 성능의 변화가 필요하다. 트래픽보다 고 성능의 서버를 유지하면 서버 유지 비용이 많이 들기 때문이다. 아래 표는 수업에서 나온 수업 자료인데 이런 부분을 선 그래프로 잘 나타내고 있다.Scale Up, Scale Out 을 통한 탄력적인 서버 성능 관리 트래픽과 성능간의 격차가 좁을 수록 비용관리 측면에서 가장 효율적..
이번 강의에서는 내가 쓰고 있는 윈도우에서 인스턴스를 원격으로 제어하기 위해서 접속하는 것을 배웠다. 접속하는 환경이 윈도우이기 때문에 SSH방식으로 OS에 접근할 프로그램이 필요하지만 내가 만약 맥이나 리눅스를 이용하고 있다면 SSH프로그램이 필요하지 않다고 한다. SSH [secure shell]secure shell의 약어. PGP와 마찬가지로 공개 키 방식의 암호 방식을 사용하여 원격지 시스템에 접근하여 암호화된 메시지를 전송할 수 있는 시스템. 따라서 LAN 상에서 다른 시스템에 로그인할 때 스니퍼에 의해서 도청당하는 것을 막을 수 있다.[네이버 지식백과] SSH [secure shell] (컴퓨터인터넷IT용어대사전, 2011. 1. 20., 일진사) 절차1) EC2 상에서 인스턴스를 우클릭하고..
아침 : 바나나 1개 + 토마토 2개점심 : 일반식 정량저녁 : 닭갈비 운동사이클 35분유산소 1시간레그 컬 5케이블 프레스 다운 로프 드롭 5 1시간
인스턴스 생성시 Key, Value 형식으로 태그를 추가할 수 있는데 용도는 해당 인스턴스에 대한 설명 및 정보를 위해 사용된다. 보안은 일종의 방화벽과 같은 역할을 한다. 보안 규칙을 정해서 어떤 인스턴스가 어떤 보안 규칙을 따르도록 할 것인지를 설정할 수 있게 된다. 아래는 보안 그룹에 대한 내용 발췌.."보안 그룹은 하나 이상의 인스턴스에 대한 트래픽을 제어하는 가상 방화벽 역할을 합니다. 인스턴스를 시작할 때 하나 이상의 보안 그룹을 인스턴스와 연결합니다. 연결된 인스턴스와 트래픽을 주고받을 수 있게 하는 규칙을 각 보안 그룹에 추가합니다. 언제든지 보안 그룹에 대한 규칙을 수정할 수 있습니다. 새 규칙은 잠시 후 보안 그룹에 연결된 모든 인스턴스에 자동으로 적용됩니다. 트래픽이 인스턴스에 도달하..
이번 강의에서는 인스턴스의 개념과 인스턴스의 생성에 대해 배웠다. 인스턴스란 내가 기존에 알고 있던 객체의 개념과 유사하였다. AWS 상에서 인스턴스는 컴퓨터와 동일한 의미를 갖는다. 즉, 내가 서버로 사용할 인스턴스를 3개 임대한다면 나는 아마존으로부터 컴퓨터를 세 대 임대하는 것과 같다는 의미이다. 인스턴스의 생성과 삭제 방법은 무척 쉽다. 1. AWS 콘솔에 로그인 후2. EC2 서비스를 클릭 하고3. 왼쪽 메뉴에 있는 '인스턴스'를 클릭해서4. '인스턴스 시작' 을 누르고5. 원하는 조건으로 설정 후 인스턴스를 생성하면 된다 왼쪽 메뉴의 '인스턴스'를 누르면 현재 내가 해당 계정으로 임대중인 인스턴스들의 목록이 나온다. 이 중 삭제를 원하는 인스턴스가 있으면 탐색기에서 우측 클릭을 하듯이 해당 인..
Amazon Elastic Compute Cloud(EC2)는 서버 인스턴스를 클라우드 환경에서 제공하는 서비스이다. 뚜렷한 특징은 제공하는 서비스의 규모 및 성능 조절이 탄력적으로 조정 가능하다는 것이다. 빠른 서버 구축이 가능하고 필요에 따라 성능을 늘리거나 줄이는 일이 가능하다.(물론 계속 성능이 좋으면 좋겠지만 종량제 같은 개념으로 쓰는 만큼 돈을 내기 때문에 원하는대로 늘리고 줄이는 것이 필요) 즉, 서버 유지 비용에 대한 경제성의 이점을 얻을 수 있다는 것이다. 탄력성 외에도 안정성, 보안, 유연한 클라우드 호스팅 등이 장점이다.아래 유투브는 간략히 EC2의 컨셉에 대해 소개하고 있는데 괜찮아서 가져왔다.
d
아침 : 잡곡밥 + 닭가슴살 200g + 참치 한 캔점심 : 일반식 정량저녁 : 치맥 운동휴식