분류 전체보기354 EC2 Instance 에 HTTPS 적용 / HTTPS Redirect / Let's Encrypt / Certbot Let's Encrypt Let's Encrypt 는 SSL 인증서를 무료로 발급해주는 CA(Certificate Authorities)이다. Certbot Let’s Encrypt의 SSL인증서는 ACME 프로토콜을 준수하는 프로그램을 이용해 발급을 받을 수 있는데 Let’s Encyrpt는 Cerbot 사용을 권장하고 있다. 우분투 에서 제공하는 Certbot 패키지가 이미 존재하지만, 오래된 버전이다. 따라서 레포지토리를 이용해 설치를 할 것이다. $ sudo add-apt-repository ppa:certbot/certbot Certbot의 Nginx 패키지 설치 $ sudo apt install python-certbot-nginx SSL 인증서 Certbot은 다양한 플러그인을 통해 SSL .. 서버개발 SpringBoot 2022. 4. 7. EC2 서버 환경 구축 / 도메인 접속 / 서브 도메인 연결 / Redirection nginx 설치 $ sudo apt install nginx MYSQL 설치 및 접속 $ sudo apt install mysql-server $ sudo mysql -u root -p PHP 설치 $ sudo apt install php-fpm php-mysql PHP 와 nginx 연동 $ cd etc/nginx/sites-available $ sudo vi default location ~ \.php$ {} 이 블록의 주석을 해제한 후, include 부분도 주석을 해제한다. 또한 php 의 버전에 맞게 수정한다. 다음으로 아래의 명령어들을 실행한 후 $ cd /etc/nginx $ sudo vi nginx.conf nginx.conf 에서 커서가 위치해있는 저 줄 ( server_names_has.. 서버개발 SpringBoot 2022. 4. 6. 서버 클라이언트 통신 / OSI 7 계층 / TCP / IP(패킷 헤더, IPv4, IPv6, 도메인) / Port(포트번호, 포트리스닝, 인바운드/아웃바운드) / 포트포워딩(외부IP/내부IP, 외부Port/내부Port) / AWS EC2 서버와 클라이언트 통신 방법 http 통신 - client의 요청(Request)이 있을 때만 서버가 응답(response)하여 해당 정보를 전송하고 곧바로 연결을 종료하는 방식이다. 이는 단방향적 통신으로 서버가 클라이언트 쪽으로 요청을 보낼수는 없다. - 실시간 연결이 아니고, 필요한 경우에만 Server로 요청을 보내는 상황에 주로 사용된다. socket 통신 - 서버와 클라이언트가 특정 port를 통해 연결하여 실시간 양방향 통신을 하는 방식이다. http통신과 달리 socket통신은 서버 역시 클라이언트로 요청을 보낼 수 있고, 실시간으로 연결이 유지된다. - 실시간 동영상 Streaming이나 온라인 게임 등과 같은 경우에 자주 사용된다. 네트워크 계층 OSI 7 계층 - 물리계층 전기, 기계.. 서버개발 SpringBoot 2022. 4. 1. 공유기 포트포워딩 / AWS EC2 Instance 생성 우리집 공유기인 tp-link 의 관리자 페이지에 접속해 포트포워딩을 설정하였다. 이제 외부에서 내 컴퓨터로 접속이 가능해졌다. 이제 다른 컴퓨터(외부)를 이용해서 192.168.0.145 인 내 컴퓨터 IP 에 접속을 해보자. 나는 아이폰 사파리에서 접속을 해보았는데, 잘 접속이 되는 걸 확인해 볼 수 있다. 다음은 아이폰에서 내 노트북의 phpinfo.php 에 접속한 결과이다. 이제 포트포워딩 설정을 완료했으니, AWS 에서 가상 컴퓨터를 만들어보자. AWS EC2 인스턴스를 생성해주었다. 인스턴스 하나를 생성하는 것은 컴퓨터 한 대를 조립한 것과 같다. 다음으로는 탄력적 IP 를 연결해주어야 한다. EC2 인스턴스를 생성하여 서버를 실행시키면, 고정 IP 가 아닌 동적 IP 를 할당받는다. 그래서.. 서버개발 SpringBoot 2022. 4. 1. 부자 아빠 가난한 아빠 - 로버트 기요사키 많은 사람들이 인생 경제책으로 꼽는 '부자 아빠 가난한 아빠' 를 드디어 읽게 되었다. 확실히 한 챕터 한 챕터를 끝낼때마다 과연 그 명성에 걸맞는 책임을 실감하게 되었다. 이 책을 사회생활을 시작하기 전인 지금 읽게 되어 정말 다행이라고 생각한다. 어릴 때부터 후계자 교육을 받으며 경제, 경영에 일찍 눈을 뜬 사람이 아니고서야 대부분의 중산층들은 '돈'에 대한 정의를 서로 별반 다르지 않게 생각하고 있을 것이다. 왜냐하면, 항상 학교에서 사회에서 가르쳐주는 '돈'은 가난한 자들의 시각에서 바라본 개념이였기 때문이다. 우리는 평생을 저축의 중요성, 좋은 직장에서 더 높은 연봉을 받는 근로 소득의 중요성, 집이 엄청난 자산이다 등과 같은 말들을 들으며 살아왔다. 그리고 이 모든 것들이 정확하게 가난한 아빠.. 독서 2022. 4. 1. 자식 컴포넌트에서 부모 컴포넌트로 데이터 전달하기 / useState, useEffect 로 관리하기 다음과 같이 헤더 컴포넌트 / 탭 컴포넌트 / 페이지 컴포넌트로 구성된 페이지를 구성 중이였다. App.js 에서 작성한 컴포넌트의 구조는 다음과 같다. // 라우터 생략 4개의 탭을 클릭했을 때 각 탭이 active 되는 것은 탭 컴포넌트에서 잘 구현하였는데, 헤더에서 타이틀과 로그인을 클릭했을 때, 타이틀의 경우 첫 번째 탭이 활성화되도록, 로그인의 경우 모든 탭이 비활성화되도록 구현하고 싶었다. 그러기 위해서 App.js 에서 탭을 관리할 수 있는 변수를 따로 만들고 App.js 로 전달 -> 탭 컴포넌트로 전달 > 의 로직을 짜야할 것 같았다. 아직 리액트 hook 에 대한 개념이 부족한지라, 우여곡절이 정말 많았다.😂🤣 먼저, 부모 컴포넌트인 App.js 에서 tab 메뉴가 변경되었을 때 리렌더.. React 2022. 3. 31. 로컬 서버 구축 / 서버 구조 / 서버와 클라이언트 비트나미 이용해서 local환경에 WAMP 설치 WAMP 는 윈도우 환경에서 amp 서버를 구동할 수 있게 해준다. 즉, amp 를 각각 설치하지 않아도 wamp 을 사용하면 한 번에 구성할 수 있도록 도와주는 것이다. AMP 란? apache, mysql, php 의 약자이다. apache : http통신을 이용해서 내 컴퓨터 자원에 접근할 수 있도록 만들어주는 http 웹서버 프로그램 mysql : 데이터베이스 프로그램 php : 웹 개발 언어 local에서 웹서버 작동 확인(비트나미 화면, phpinfo) WAMP 를 실행하면 다음과 같은 창이 뜨고, Manage Servers 탭에서 웹 서버에 연결이 되었음을 확인할 수 있다. 웹서버가 실행되고 있는지 확인하기 위해 localhost/phpinfo.. 서버개발 SpringBoot 2022. 3. 29. 스물다섯 스물하나 14화를 보고 드는 생각들... 너무너무너무너무 몰입한 14화... 뇌과부하 올정도로 떠오르는 생각이 많은데... 지금의 생각들을 간직하고 싶기도 하고, 미래의 내가 또 보았으면 하는 마음으로 어떻게든 기록해야지 이번화에서는 유림이랑 백이진의 삶을 간접체험한 기분이다. 드라마와 영화같은 매체가 좋은 이유가 현실반영이 너무 잘 되서 타인의 삶을 간접적으로 경험해볼 수 있다는 것이다. 허구임을 잊을 정도로 과몰입을 하게 된다. 주인공들에 몰입해서 나에게 일어난 일인마냥 한없이 아파하고 많은 생각을 하는게 일종의 감정낭비일 수도 있지만, 덕분에 다양한 상황에 처해있는 타인들을 조금 더 이해할 수 있게 된다. 또 실제로 경험해보지 못한 상황을 간접경험함으로써 무의식적으로 튀어나오는 나의 가치관이나 생각들을 새롭게 마주칠 수도 있다. 이처럼 나.. 주절주절 2022. 3. 28. 다크호스 - 토드로즈/오기오가스 다크호스들은 공통적으로 충족감을 느끼며 산다. 표준화 시대는 우수성을 얻기 위해 힘쓰면 충족감이 뒤따라온다는 식의 좌우명을 강요해왔지만, 개인화 시대가 부상하면서 다크호스들은 그 좌우명을 버리기 시작했다. 이들은 충족감을 추구하면서 그 결과로 우수한 경지에 이르게 되었다는 공통점을 가진다. 진심으로 나의 개개인성을 중요시하고 싶다면 나의 진실된 열망과 바람을 존중하면 된다. 그러한 진정한 동기와 일치하는 활동을 하면 나의 인생은 흥미롭고 만족스러워질 것이다. 그러나 진정한 동기는 생각보다 둘러보기 어렵다. 사회 구성인으로 뼛속까지 빼어있는 표준화 계약이 자꾸만 나의 시야를 가리기 때문이다. 누군가를 비판할 때 일어나는 감정을 반사적으로 살펴봐라. 그 반응이 긍정적이든 부정적이든, 칭찬이든 비난이든 중요하.. 독서 2022. 3. 21. useEffect, useMemo, useState, useCallback, React.Memo() 개념 및 차이점 useState const [inputs, setInputs] = useState({ username: '', email: '' }); 첫 번째 배열인자인 inputs 는 실제로 데이터를 저장하는 변수이다. 그리고 두 번째 배열 인자는 변수를 변경하기 위한 함수이다. inputs 값을 변경하기 위해선 setInputs 를 이용해야만 한다. useState 괄호 안에 들어가는 값은 inputs 의 초기값이다. setInputs({ ...inputs, [name]: value }); inputs 값을 변경하기 위해서는 다음과 같이 setInputs 함수만을 이용해야 한다. 위 코드에서는 inputs 의 배열 원소들을 그대로 가져온 후, name(username 혹은 email) 에 해당하는 값을 value .. React 2022. 3. 18. 우울할 땐 뇌 과학 - 앨릭스 코브 우울할땐 뇌과학 - 앨릭스 코브 우울함을 느낄 때 어떻게 그 기분에서 빨리 벗어날 수 있는지를 알고 싶어 읽게 된 심리책이다. 어떻게 보면 뻔한 자기개발서에 있을 법한 구절들이라고 생각할 수도 있을 텐데, 나에게는 한 마디 한 마디가 크게 와닿았다. 어쨌든 우울함이라는 것이 내 뇌의 부산물이고, 내가 잘 알 수록 통제할 수 있는 힘이 생길 것이다. 우울증이란 내가 뭔가 잘못되거나, 통제력이 부족해서 생긴 것이 아니라는 것이다. 모든 사람의 뇌 구조는 다르며, 사람마다 뇌의 활성화되는 정도와 부위가 모두 다르다. 우울함을 느낀다면 지금은 잠시 잘못된 기류를 탄 것 뿐이다. 우울함을 느끼는 이 하강나선은 충분히 내가 멈출 수 있고, 심지어 상승 나선으로 변할 수도 있다. 내가 행동하고 말하고 생각하는 것을 .. 독서 2022. 3. 11. [Kotlin] ViewModel, Livedata 로 Fragment 끼리 통신하기 구현할 Fragment 및 화면 구조 내가 구성한 화면은 친구목록이라는 Fragment 안에 Tablayout 을 사용하고, 내부는 Viewpager2 를 이용해 찜한 친구와 지난 추천 친구라는 Fragment 를 배치한 구조이다. 친구목록[Fragment] 찜한 친구[Fragment] 지난 추천 친구[Fragment] 로 구성된 구조이다. 찜한 친구는 recyclerview 로 구현했는데, 친구를 삭제할 때마다 (adapter listener 를 통해) 친구 목록 Fragment 의 Tab text [ -> 찜한 친구(8) ]가 동적으로 변하는 것을 구현해야 했다. 원래 구현하려 했던 방법 (기본 방법) 찜한 친구 Fragment 에서 adapter listener 를 통해 친구목록에 변화가 감지되면,.. 안드로이드개발 2022. 1. 21. 이전 1 ··· 15 16 17 18 19 20 21 ··· 30 다음