chatGPT의 신세계를 요즘 경험하고 있는데 

 

이거 믿을만한 정보를 알려주는 건지 의심이 들더군요. 

 

그리고 역사적 사실을 어떻게 말해줄지도 의문이었습니다. 

 

분명 AI 학습은 인터넷상 공개된 자료를 바탕으로 하였을테니 잘못된 정보들도

 

학습에 사용될 것 같았거든요. 

 

그래서 오늘 임진왜란에 대해 물어봤더니 좀 충격적인 답변을 얻었습니다. 

 

 

년도는 맞추었지만 모든 내용이 소설입니다. 이거 어떻게 이럴수가...ㄷㄷ

 

역사왜곡이라고 하니까 말하는 소리도 어이...

 

 

일본이 침략한 전쟁이라고 알려줬지만 아니라는 우리 chatGPT.... 

 

내란이라니 일본이 무슨짓을 한건지ㅋㅋㅋ

그래서 위키백과에 있는 내용을 복사해서 알려줬습니다. 

 

이제서야 인정하네요. 

 

임진왜란뿐만 아니라 잘못된 정보를 통해 사람들에게 알려주는게 많을 것 같습니다. 

 

앞으로는 최대한 과학적인 사실이나, 코딩, 번역 등에 활용하는 점이 좋겠네요.

React로 만든 예제 파일을 GitHub를 통해 배포하려고 하니 404에러가 발생하였다. 

 

1. 프로젝트  Private 

build파일이 private으로 설정되어 있으면 접근이 불가능 하니 Public으로 변경해주어야 한다. 

Private으로 설정된 프로젝트를 Public으로 변경하자. 

 

우측 상단의 settings를 클릭하고 가장 아랫쪽으로 스크롤하면 Danger Zone이 있다. 

여기서 Change visibility를 클릭해 Public 으로 변경하자.

2. GitHub Pages 설정 

GitHub 프로젝트에서 우측 상단에 있는 Settings를 클릭하고  사이드바의 Pages를 클릭하면 GitHub Pages가 나온다. 

 

 

여기서 Source는 Deploy from a branch 

Branch는 gh-pages로 설정해주자. 

 

여기까지 설정 후 

$ npm run deploy로 재배포 해주니 예제 페이지가 잘 배포 되었다. 

 

다만, 링크 클릭 시 컴포넌트에 대한 접근이 이루어지지 않았다. 

이를 해결하기 위해서는 

 

3. PUBLIC_URL 추가 

Router에 아래와 같이 basename 요소를 추가

설정 후 재배포를 한다. 

 

아래 링크와 같이 정상 작동함을 확인할 수 있다. 

 

https://sungyun-develop.github.io/React_dev/

 

React App

 

sungyun-develop.github.io

 

'개발 > WEB(프론트엔드)' 카테고리의 다른 글

[React#1] 리액트란?  (0) 2023.01.05
React 공부를 시작하며  (0) 2023.01.05

SSH를 통해 Linux 상에서는 편리하게 원격 접속을 할 수 있다.

SSH는 Secure Shell의 줄임말로 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜을 말한다. SSH는 다른 원격 접속 프로토콜보다 안전하다는 장점이 있는데 암호화된 방식으로 접근하기 때문이다.

SSH 접근은 기본적으로 22번 포트를 사용하고 Root 접근이 가능하다. (Centos 9 stream을 사용해보니 9은 Root 접근을 기본적으로 차단하는 것 같다)

따라서 기본 포트를 사용하는 것과 Root 접근을 허용하면 보안에 취약하니 변경해주도록 하자.

우선 Root접근을 막으면 user 계정으로 접근해야하니 변경전에 user 계정의 password를 확인해두고 접속을 확인한 후 아래 내용을 따라가자.

$ vi /etc/ssh/sshd_config

#Port 22 → Port <사용하고자 하는 포트번호>

#PermitRootLogin yes → PermitRootLogin no

두줄을 #을 풀고 위처럼 바꾸자.

바꾸고 난 뒤에 sshd 서비스를 재시작 하자.

$ systemctl restart sshd

주의해야할 점은 방화벽을 사용중이라면 새로 추가한 포트를 방화벽에서 접속가능한 포트로 열어줘야 한다.

$ systemctl status firewalld

방화벽 가동 여부 확인 후

$ firewall-cmd --list-ports

사용하고자 하는 포트가 열려있는지 확인한다.

열려있지 않다면

$ firewall-cmd --permanent --zone=public --add-port=[port number]/tcp

$ firewall-cmd --reload

포트를 추가하고 재시작을 한다.

$ firewall-cmd --list-ports

실제 포트가 열렸는지 확인한다.

이제 실제로 SSH 접속이 Root로 그리고 기본 포트로 접속이 안되는지 그리고 바뀐 포트로 접속이 되는지 확인해보자.

잘 설정하였다면 Root 접속이 불가한 것을 알 수 있다. 포트도 기본 포트로 접근 시 접근이 거절되는 것을 볼 수 있다.

'개발 > Linux' 카테고리의 다른 글

[Centos9] YUM 저장소 구축  (2) 2023.01.06
[Centos9] NTP 시간 동기화  (0) 2023.01.06
[Centos7] local YUM 저장소 구축 및 원격 접속  (0) 2023.01.05

https://sungyun7295.tistory.com/124

 

[Centos7] local YUM 저장소 구축 및 원격 접속

네트워크시스템이 폐쇄망으로 구성되어 시스템을 새로 구축하거나 업그레이드를 해야할 때 혹은 특정 패키지가 필요할때 폐쇄망에서는 작업하기가 까다롭습니다. rpm을 다운받아서 usb를 통해

sungyun7295.tistory.com

일전에 Centos7 YUM 저장소를 구축하는 포스팅을 하였다. 

 

Centos stream 9도 동일하게 YUM 저장소를 구축하고자 작업을 하였다. 


※ 저장소 추가와 관련해서

Centos stream 9을 설치하고 /etc/yum.repo.d 에 들어가보면 두개의 저장소뿐 epel 등의 저장소는 없다. 

그럼 많은 Package들이 제외되기 때문에 추가로 다운로드 받아준다.

$ dnf config-manager --set-enabled crb
$ dnf install epel-release epel-next-release

$ dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

저장소가 추가된 것을 확인하고 --downloadonly를 사용해 저장소에 넣어주고 혹시 이미 createrepo로 저장소를 만들었다면 다음 명령어로 저장소를 업데이트해주자. 

$ yum upgrade --downloadonly --downloaddir=<저장소 path>

$ createrepo --update <저장소 path>

 

- EPEL은 Extra Packages for Enterprise Linux의 약자로 RHEL/Centos에 포함되지 않은 여러 패키지를 설치할 수 있는 커뮤니티 기반의 저장소

- REMI는 LAMP (Linux, Apache, MySQL, PHP) 관련 최신버전을 포함한 저장소


 

Centos7가 대부분 동일한 방법으로 작업하지만 조금 달랐던 부분들을 소개한다. 

 

Centos7 구축 방법을 참고해 잘 따라하면 문제없이 로컬에서 WEB에 IP를 치면 아래화면을 얻을 수 있다. 

 

※그런데 /repo 경로로 들어가지지 않는다면 저장소에 대한 접근 권한에 문제가 있거나 httpd.conf의 설정이 잘못된것이니 한번더 확인해보자

 

여기까지 잘 따라왔으면 아마도 다른 client에서 web으로 접속을 시도해보면 접근금지 화면이 출력될 것이다.

 

Centos7 Apache 버전과 달리 9의 Apache 버전은 IPV6를 우선적으로 지원해주는? 듯 하였다. 

 

apache http를 가동하고 보니 

 

$ netstat -nao | grep LISTEN 

 

수행하면 http에서 사용하는 포트의 tcp가 tcp6로 되어 있는것을 볼 수 있었다. 

 

이를 수정하기 위해서는 httpd.conf에서 

 

LISTEN 80 을 

LISTEN 0.0.0.0:80으로 변경하자

 

변경 후 

$ systemctl restart httpd

 실행 후 

 

$ netstat -nao | grep LISTEN 

 

tcp6가 다시 tcp로 변경된 것을 확인할 수 있다.

 

이렇게 하면 이제 원격으로 저장소가 설치된 서버로 접속이 가능하다.

 

 

 

'개발 > Linux' 카테고리의 다른 글

SSH 설정  (0) 2023.01.11
[Centos9] NTP 시간 동기화  (0) 2023.01.06
[Centos7] local YUM 저장소 구축 및 원격 접속  (0) 2023.01.05

서버의 NTP 시간을 동기화하기 위해 Centos7에서는 rdate 명령어와 crontab을 통해 스케쥴링을 하여 주기적인 시간동기화를 해주었다. 

 

그런데 이번에 Centos Stream 9을 새롭게 다루고 있는데 시간 동기화를 위해 rdate 명령을 사용하려고 하니 없다고 한다. 

설치불가...

조금 찾아보니 Centos 8 버전 이상부터는 chronyd를 사용한다고 한다. 

 

Chrony는 Network Time Protocol (NTP) 서버로부터 시스템 시간을 동기화하는 기능을 지원한다. 

 

사용방법은 매우간단하였다. 

 

우선, 설치가 되어 있지 않다면 설치부터 하자. 

 

$ yum install chrony

 

설치 후 서비스를 시작한다. 

 

$ systemctl enable chronyd

$ systemctl start chronyd

 

enable을 통해 부팅시에도 자동 서비스를 구동한다.

 

$ vi /etc/chrony.conf

 

기존의 서버 정보 (디폴터 설정)을 #처리하고 NTP서버를 추가한다. 

 

server <NTP SERVER IP OR DOMAIN> iburst

 

변경 후 

$ systemctl restart chronyd 

 

$ timedatectl 

명령을 통해 Local time이 제대로 바뀌어 있는지 확인하자.

'개발 > Linux' 카테고리의 다른 글

SSH 설정  (0) 2023.01.11
[Centos9] YUM 저장소 구축  (2) 2023.01.06
[Centos7] local YUM 저장소 구축 및 원격 접속  (0) 2023.01.05

Do it! 리액트 프로그래밍 정석 책을 보고 공부를 시작하며 지금부터의 내용은 책을 바탕으로 요약 및 정리 그리고 추가한 내용들을 주로 다룰 예정이다. 


 

 

리액트는 프런트엔드 프레임워크 중 하나로 여러 프레임워크중에 하나이다. 

 

주목받는 프런트엔드 프레임워크는 리액트를 포함하여 앵귤러, 뷰제이에스가 있는데 아래 그림처럼 리액트가 꾸준한 사랑을 받고 있음을 알 수 있다. 

https://npmtrends.com/@angular/core-vs-angular-vs-react-vs-vue

 

@angular/core vs angular vs react vs vue | npm trends

Comparing trends for @angular/core 15.0.4 which has 2,052,676 weekly downloads and 85,717 GitHub stars vs. angular 1.8.3 which has 401,788 weekly downloads and 59,316 GitHub stars vs. react 18.2.0 which has 11,823,219 weekly downloads and 199,982 GitHub st

npmtrends.com

 

리액트는 페이스북에서 개발하고 공개한 오픈소스 소프트웨어이다. 

 

리액트의 특징은 화면 출력에 특화된 프런트엔드 프레임워크라는 것인데 특징을 나열하면 다음과 같다. 

 

- 컴포넌트로 화면 구성

→ 컴포넌트는 작고 독립적인 코드 블록이며 이를 조합하여 효율적이며 빠르게 화면을 구성합니다. 

 

- 게임 엔진 원리 도입

→ 화면 출력 속도가 빠름 

자바스크립트는 제이쿼리와 핸들바 라이브러리를 사용해 화면을 구성하는데 이 라이브러리는 매우 간결하다는 특징이 있지만 화면이 커질수록 화면을 그리는 시간도 길어진다. 그 이유는 화면의 일부만 바뀌어도 화면 전체를 다시 그리기 때문.

특정 노드를 수정하면 관련된 모든 노드를 다시 그려야 하니 코드가 길어질수록 화면을 띄우는 시간은 길어집니다. 이런 문제를 해결하기 위해 게임 엔진 원리를 도입했다고 합니다.

 

게임엔진 원리는 다음 장면에 필요한 화면을 미리 그려두어 화면을 빠르게 전환하는 방법을 말합니다. 

 

Virtual DOM

 

 

'개발 > WEB(프론트엔드)' 카테고리의 다른 글

GitHub Pages 배포시에 만난 404에러  (0) 2023.01.27
React 공부를 시작하며  (0) 2023.01.05

웹 프로그래밍이 전문적인 업무는 아니나 관심이 많아 공부를 시작하려고 한다. 

 

블로그에 정리하면서 공부를 한다면 꾸준히 할 수 있지 않을까...? 

 

올해 2023년 12월이 왔을 때 이글이 저멀리 보이지 않기를 기원하며... 

 

React 공부를 시작하도록 하겠다. 

 

'개발 > WEB(프론트엔드)' 카테고리의 다른 글

GitHub Pages 배포시에 만난 404에러  (0) 2023.01.27
[React#1] 리액트란?  (0) 2023.01.05

앞으로 Django에 대해 공부한 내용을 포스팅으로 남겨놓고자 한다. 

 

Django는 Python기반의 웹 프레임워크이다. 

 

프레임워크는 빠르게 구현할 수 있도록 미리 만들어진 뼈대와 같다. 

 

다양한 기능들과 틀이 미리 만들어져 있으므로 편리하고 빠르게 개발이 가능하다. 

 

이런 프레임워크는 여러개가 있으나 필자는 Python 사용에 익숙하여 Django를 사용해 웹개발에 한발짝 다가서려한다. 

 

 공부는 Django 서적 " Django 한그릇 뚝딱" 문범우 지음 을 참고하여 진행하며 내용을 다시 정리하고 따라한 프로젝트를 수행하며 발생하는 에러에 대한 디버깅을 정리하도록 하겠다. 

 

http://www.yes24.com/Product/Goods/83568594

 

네트워크시스템이 폐쇄망으로 구성되어 시스템을 새로 구축하거나 업그레이드를 해야할 때 혹은 특정 패키지가 필요할때 폐쇄망에서는 작업하기가 까다롭습니다. 

rpm을 다운받아서 usb를 통해 넣거나 (의존성 지옥에 빠질지도...) 

망분리를 해서 업데이트 후 다시 연결하거나 등 귀찮은 작업들이 필요하죠. 

 

YUM 명령을 사용하면 필요한 rpm과 의존된 rpm들을 모두 다운받아주는데 이 기능을 사용하기 위해 로컬 환경에 YUM 저장소를 설치하고자 하였습니다. 

 

여기 정리한 내용은 제가 사용한 환경에서 실제로 사용하기 위해 구축하였고 추후 또 만들어야할 경우 참고하기 위해 정리합니다. 

 

우선, 아무 설정을 하지 않고 외부 네트워크에 연결되어 있지 않은 상태에서 

$ yum repolist 

를 실행해보면 에러가 발생합니다. 

 

mirror ~~ 찾을 수 없다고 합니다. 당연하죠. 네트워크가 연결이 되어 있지 않으니 말이죠. 

이것을 우리가 로컬에 설치한 저장소를 바라보게 만들면 끝입니다. 

자, 하나씩 해봅시다. 

 

1. 로컬 저장소 만들기

우선, 로컬에 저장소를 설치해야 합니다. 

 

http://isoredirect.centos.org/centos/7/isos/x86_64/

 

CentOS Mirrors List

 

isoredirect.centos.org

위 경로로 들어가서 최신 Centos7파일 중에 Everything-2009.iso 파일을 받아줍니다.

용량이 9.5G 정도이니 조금 시간이 걸릴겁니다. 

Everything을 받아야 모든 rpm들이 들어있습니다. 

 

받은 iso파일을 Centos7 OS가 설치된 PC로 옮기고 복사를 위해 마운트를 합니다. 

저는 /root/tmp/mnt 경로로 디렉토리를 만들고 해당 디렉토리에 마운트 하였습니다. 경로는 지정하시면 됩니다. 

 

$ mount -o loop <Centos7-iso 파일 경로> <마운트할 디렉토리>

ex 

$ mount -o loop /home/Centos7-x86_64-Everything-1708.iso /root/tmp/mnt

 

마운트에 성공하면 Packages 폴더를 확인할 수 있습니다. Packages 폴더안에 rpm 정보들이 있습니다. 

이 rpm들을 저장소로 사용할 경로로 복사해줍니다. 

$ cp -rf <마운트된 경로> <저장소 경로>

 

복사는 시간이 조금 걸립니다. 완료되면 마운트를 해제하고 이 PC를 외부 네트워크와 연결해줍니다. 

$ umount <마운트된 경로>

 

이때, 외부 네트워크와 연결이 필요한 이유는 다운로드받은 패키지들을 업데이트를 하기 위해서 입니다. 

우선, 업데이트를 하고자 한다면 저장소가 설치된 OS도 가장 최신 버전인게 좋겠죠?

 

네트워크 연결 후 복사한 저장소 경로로 아래 명령어를 수행합니다. 

$ yum update -y --downloadonly --downloaddir=<path>

 

update를 수행하며 rpm들을 최신 파일로 다운로드 받습니다. 

 

자 그럼 이제 로컬 저장소를 생성합니다. 

 

$ createrepo <저장소 경로> 

 

이러면 로컬 저장소는 준비끝입니다. 

 

2. 로컬 저장소 접근 

$ cd /etc/yum.repo.d

경로로 들어가면 Base, epel 등 여러 repo들이 설정되어 있습니다. 우린 네트워크가 차단된 환경이므로 사용이 불가하니 모두 삭제하거나 backup폴더를 만들어서 옮겨줍니다. 

$ mkdir backup 

$ mv *.repo /backup

 

이후 vi 편집기를 열어서 repo에 대한 지정을 합니다. 

$ vi <reponame>.repo

 

[yum7-repo] #repo 호출시 노출되는 name
name=Local Repository
baseurl=file:///home/repo  # 저장소 경로
gpgcheck=0 
enabled=1 #저장소 활성화

 

$ yum clean all 

$ yum repolist

호출하면 지정한 저장소가 보이는지 확인할 수 있다. 

 

$ yum install telnet 

과 같은 명령을 통해 실제 설치가 되는지 확인하자.

 

3. 원격 접속

로컬 저장소에 접속은 가능하나 구축된 폐쇄망안에서 다른 서버를 통해 접속이 가능하려면 추가 설정이 필요하다. 

여기서는 httpd를 사용하고자 한다. 

 

$ vi /etc/httpd/conf/httpd.conf

접속해서 아래에 해당하는 부분만 수정한다. 

 

 

- DocumentRoot 안의 경로는 저장소의 경로이다. 

 

http로 접속할 때 package에 대한 접근이 가능하도록 alias를 지정한다. 

$ vi /etc/httpd/conf.d/repo.conf

$ systemctl start httpd

$ systemctl enable httpd

httpd 서비스를 시작한다. 

 

처음에 접속을 해보면 위와 같이 apache 서비스가 가동중인것을 확인할 수 있다. 

우리는 /repo로 alias를 하였기 때문에 IP 뒤에 /repo를 붙여서 호출을 하면 repo 경로에 접근할 수 있다. 

 

 

이제 로컬에서 설정한 repo 파일안에 baseurl은 

http://<ip-address> 로 변경하고 

동일한 방식으로 client단의 repo도 변경 후 yum 명령어 사용이 가능한지 확인해보자.

'개발 > Linux' 카테고리의 다른 글

SSH 설정  (0) 2023.01.11
[Centos9] YUM 저장소 구축  (2) 2023.01.06
[Centos9] NTP 시간 동기화  (0) 2023.01.06

+ Recent posts