본문 바로가기

Computer Science32

[Open Source] ChatGPT Chat GPT Chat GPT는 OpenAI 재단에서 GPT-3.5 모델로 만든 인공지능 챗봇이다. 기존 3.0 버전도 성능이 좋았지만 ChatGPT는 직접 사용 해보고 꽤 충격을 받았다. 공식적으로는 해당 모델이 인터넷에 연결되어있지 않고, 2021년까지의 데이터를 기반으로 학습되었기 때문에 아래처럼 정확하지 않은 정보를 진실처럼 전달해주기도 한다. 하지만 공식 또는 지식과 같은 내용을 질문한다면 문맥 파악 능력과 정확하고 방대한 지식에 큰 충격을 받을 것이다. 개인적으로 웹 서비스를 만들면서 생겼던 문제를 Chat GPT에게 물어보면서 해결하는 과정을 글로 작성해보았다. 해당 모델에 대한 좀 더 자세한 내용은 아래 기사를 참고하자. 오픈AI, 'GPT-3.5' 모델 공개 - AI타임스 오픈AI가 대.. 2022. 12. 4.
[SE] SDLC (Software Development Life Cycle) ** 아래 글은 개인의 조사를 바탕으로 주관적으로 작성되었습니다. 잘못된 부분은 댓글로 남겨주시면 수정하겠습니다. 소프트웨어 생명 주기 (Software Development Life Cycle, SDLC) 소프트웨어의 계획부터 배포에 이르기까지 시간적인 경과를 의미하며, 명확하게 나눠진 여러 단계를 통해 시스템의 품질을 올려 고객의 만족도를 높이는 것이 목적이다. 이런 목적의 달성을 위해 구조적, 정보공학적, 객체지향, CBD(Component-Based Development), Agile, DevOps 와 같은 방법론들과 여러 모델들이 발생하게 되었다. 아래 이미지는 SDLC의 각 과정을 나타낸 그림이다. 구조적 방법론 1970년 발생한 기능 중심의 전통적인 방법론이다. 자세한 내용은 아래에 정리해보.. 2022. 9. 12.
[SE] XP (eXtreme Programming) ** 아래 글은 개인의 조사를 바탕으로 주관적으로 작성되었습니다. 잘못된 부분은 댓글로 남겨주시면 수정하겠습니다. XP ? XP(익스트림 프로그래밍)은 애자일 방법론의 유형 중 하나로 미국의 소프트웨어 엔지니어인 캔트 벡이 제안한 소프트웨어 개발 방법론이다. 비즈니스 상의 요구사항이 계속해서 바뀌는 경우에 사용하면 효율적인 개발 방법이며, XP라는 약칭으로 불린다. XP는 5가지의 가치와 12개의 기본 원리(또는 실천 방법)와 1~3주 정도의 반복 주기(Iteration)가 존재하며, 개발 문서 보다는 소스 코드를 조직적인 개발의 움직임 보다는 개개인의 책임과 용기에 중점을 둔다. 또한 12가지 기본 원리 중 하나인 테스트 기반 개발(TDD; Test Driven Develop)를 통해 프로그래머들이 코.. 2022. 7. 10.
[SE] MSA (Micro Service Architecture) ** 아래 글은 개인의 조사를 바탕으로 주관적으로 작성되었습니다. 잘못된 부분은 댓글로 남겨주시면 수정하겠습니다. MSA (Micro Service Architecture) ? DevOps를 공부하면서 MSA라는 단어를 많이 듣게 되었다. 처음 단어를 들었을 때는 별로 깊게 생각하지 않았었기 때문에 (다시 생각해보면 조금 부끄럽지만) AWS와 GCP와 같은 클라우드 플랫폼을 말하는 거라고 생각했었다. 하지만 우연히 다시 검색해본 MSA의 설명은 충격적이었다. MSA : Micro Service Architecture 기존의 MA(Monorithic Architecture)는 모든 모듈이 하나의 서비스 내에 종속되어 있다. 이런 구조는 프로젝트의 개발과 빌드, 배포 등의 작업에 장점이 있지만, 만약 출시된.. 2022. 6. 26.
[SE] DevOps ** 아래 글은 개인의 조사를 바탕으로 주관적으로 작성되었습니다. 잘못된 부분은 댓글로 남겨주시면 수정하겠습니다. DevOps ? 최초 데브옵스의 개념은 2009년 O'Reilly에서 주회한 Velocity 컨퍼런스에서 등장했다고 한다. 당시 루디코프 사의 엔지니어 2명이 '10+ Deploys per Day : Dev and Ops Cooperation at Flickr' 라는 이름으로 프레젠테이션했다. 이 발표에선 전통적인 조직의 개발과 운용 부서는 서로 대립되는 구도에 놓인다고 했다. 가장 큰 이유는 각 부서의 입장 차이인데 개발 부서는 변화를 원하지만 운용 부서에서는 서비스의 안정을 위해 시스템의 큰 변화를 원치 않기 때문이다. 하지만 이런 대립 관계가 심화되면 아래의 과정을 거쳐 음의 무한반복 .. 2022. 4. 12.
[서버] ssh 서비스 포트 변경 및 접속 방법 SSH 포트 변경이 필요한 이유 SSH 서비스의 기본 포트는 22번이다. 하지만 인터넷에 서버를 공개하게 되면 네트워크 공간에 떠돌고 있는 수많은 자동 프로그램들이 로그인 시도를 한다. 이때 기본 포트를 사용하면 보안에 취약하기 때문에 포트를 변경해주는 것이 좋다. (물론 nmap 등의 툴을 통해 포트 스캔하면 다 나온다.) 아래 사진은 최근 Django 웹서버 구축을 위해 잠시 열어둔 서버를 누군가 접속 시도한 기록이다. 초 단위로 여러 아이피에서 root로 로그인 시도한 걸 볼 수 있다. 만약 방금 설치한 서버에서 별다른 조치없이 ssh 서비스부터 열었다면, 서버는 순식간에 특정 국가 해커들의 채굴 도구나 C&C 서버 역할을 할 것이다. 로그인 시도 기록을 보려면 아래 명령어를 사용한다. '접속 시도.. 2022. 3. 23.
[프로토콜] TCP ** 추가 내용이 있을 경우 지속적으로 업데이트 되는 게시글입니다. TCP ? Transmission Control Protocol RFC 793 RFC 793 - Transmission Control Protocol datatracker.ietf.org 등장 배경 참조 자료 링크 http://wiki.hash.kr/index.php/TCP/IP 2022. 3. 19.
[서버] scp 명령어 사용 목적 Linux -> Linux, Linux -> Windows, Windows -> Linux등 여러 운영체제(서버) 간의 파일 전송 윈도우에서 OpenSSH 설치 확인하기 OpenSSH Client 기능 활성화 확인 1. 윈도우 키 -> 앱 및 기능 검색 후 엔터 -> 선택적 기능 클릭 2. openssh 검색 ** 설치되지 않았을 경우 아래 링크 참조 https://docs.microsoft.com/ko-kr/windows-server/administration/openssh/openssh_install_firstuse OpenSSH 설치 Windows용 OpenSSH 클라이언트 및 서버를 설치합니다. docs.microsoft.com 리눅스에서 SCP 설치 확인하기 scp 설치 확인 : scp 명.. 2022. 3. 19.
[서버] Django 홈 서버 구축하기 개요 Dorker와 Django를 사용하여 Web 서버를 구축한다. 집에 있는 장비를 활용하여 서버를 구축하고 Django 공부한다. 만들어진 Docker 이미지를 AWS에 이식하고 남는 장비는 포맷 후 보관한다. 구성 OS : 우분투 20.04 LTS 도메인 : iptime 공유기 도메인 등록 후 사용 장비 : 남는 노트북 활용 집에서 로컬 웹 서버 구축하기 각 항목들은 아래 링크의 글에 설명되어 있다. Ubuntu 20.04 LTS 설치 및 설정 리눅스 서버 설치 및 설정 : Docker 설치하고 사용하기 도커 설치 : https://hwan001.tistory.com/180 도커 사용 : https://hwan001.tistory.com/184 Django 설치 Django 설치 : https://.. 2022. 3. 17.
[프로토콜] FTP ** 추가 내용이 있을 경우 지속적으로 업데이트 되는 게시글입니다. FTP ? File Transfer Protocol 약어 TCP/IP 기반의 응용 프로토콜로 서버와 클라이언트 간의 파일 전송을 위해 고안됨 크게 2개의 연결 종류가 있음 (명령 연결, 데이터 전송용 연결) 위키피디아 링크 RFC 114 (1971년 4월) : 최초의 FTP (CNP 기반?) RFC 765 (1980년 6월) : TCP/IP 버전 RFC 765 - File Transfer Protocol specification datatracker.ietf.org RFC 959 (1985년 10월) : 현재 사양의 FTP RFC 959 - File Transfer Protocol datatracker.ietf.org RFC 1579 (.. 2022. 3. 11.
[서버] MariaDB 서버 구축 - 작성 중 목적 Maria DB를 구축하고 Sql 연습하는데 사용함 나중에 개발할 크롤러 및 RPA 봇과 연계하여 정보를 수집하고 REST API 서버를 통해 Post, Get 할 예정임 구성 OS : CentOS 7 Minimals DB : Maria DB 장비 : 남는 노트북 활용 서버 설치 서버 설정 시간 동기화 네트워크 설정 유저 생성 SSH 설치 및 설정 SELinux 해제 Firewall 해제 net-tools, iptables 설치 mariadb 설치 DB, User 생성 및 권한 부여 라즈베리파이와 다이렉트 연결 원격 접속 테스트 https://ksr930.tistory.com/42 centos, c++ MariaDB 연동 테스트 해보기 (Makefile) 회사에서 진행중인 프로젝트에서 오라클 DB .. 2022. 3. 9.
[서버] Cent OS-7 설치 및 초기 설정 1. 구분 DVD ISO 파일 Everything ISO Minimal ISO 2. 네트워크 설정 vi /etc/sysconfig/network-scripts/ifcfg-enpXXX -> ONBOOT=YES, gateway, dns, ... systemctl restart network or service network-manager restart ip addr 3. 네트워크 관련 설치 yum -y install net-tools bind-tools nmap 4. 시간 동기화 yum -y install rdate rdate -s time.bora.net timedatectl set-ntp y date 4. 유저 생성 adduser -m -u 10001 hwan passwd hwan 5. ssh 설정 yu.. 2022. 3. 3.
[라즈베리파이] 라즈비안 img 설치 (2022년 2월) 1. 개요 - 라즈베리파이 재설치를 위해 공식 홈페이지에 접속했지만 iso 파일이 아닌 RaspberryPi OS Imager(exe)를 제공 - 해당 툴을 사용하여 진행했지만 너무 느린 속도로 인해 설치가 제한됨 - 직접 이미지 파일을 다운로드하여 Rufus를 이용하여 설치하기로함 - 해당 방식으로 설치 시 ssh 활성화, wifi 연결 등의 작업을 미리해둘 수 없으므로, 별도의 인터페이스가 필요함 - 2020-02-13 버전 이후로 파일이 없음 (최신버전 필요 시 Imager 활용) - 공식 홈페이지(https://www.raspberrypi.com/software/raspberry-pi-desktop/)에서 설치 시 iso 파일 다운로드 가능 2. 라즈베리 파이 OS 이미지 파일 다운로드 라즈비안 .. 2022. 2. 20.
[UiPath] 데이터 테이블 1. 데이터 테이블 (이하 DT) https://docs.microsoft.com/ko-kr/dotnet/api/system.data.datatable?view=net-5.0 DataTable 클래스 (System.Data) 메모리 내 데이터의 한 테이블을 나타냅니다.Represents one table of in-memory data. docs.microsoft.com - 윈도우의 DataTable 클래스와 동일 (C#, .Net VBA) - C# 형태의 DataTable 사용법은 위 링크의 MS 공식문서 참조 2. UiPath 기본 지원 엑티비티 (Studio 설치 시 바로 사용가능) - 이미지의 기능을 다 사용하지는 않지만 다른 엑티비티와 조합해서 사용하면 빠르고 간편함. 3. 사용 예제 Q1) T.. 2021. 7. 11.
[UiPath] Invoke Code (C#) 1. Volume Lable로 디스크 문자 얻기 (네크워크 디스크 식별 시에도 가능) // input : in_str_VolumeLavle (String) // output : out_str_name (String) // ex) 로컬 -> C:\ // ex) 디스크 -> C:\ // ex) 로컬 디스크 -> C:\ froeach (DriveInfo d in DriveInfo.GetDrives()){ if(d.volumeLabel.Contains(in_str_VolumeLable)){ out_str_name = d.Name; } } 2021. 7. 4.
[UiPath] StandAlone 라이선스 관리하기 1. 개요 오케스트레이터 없이 단독으로 라이선스 키를 등록할 경우, UiPath.LisenceTool.exe를 사용 라이선스 활성화, 비활성화, 조회 기능을 배치 파일로 제작하여 라이선스 변경 작업을 단순화함 아래 경로는 UiPath 설치 기본 경로에 따라 다를 수 있음 아래 코드를 메모장에 적고 .bat 확장자로 저장해서 배치파일로 활용 가능 2. 라이선스 활성화 @echo off cd C:\Program Files (x86)\UiPath\Studio UiPath.LicenseTool.exe activate -l ****-****-****-**** pause 3. 라이선스 비활성화 @echo off cd C:\Program Files (x86)\UiPath\Studio UiPath.LicenseTool.. 2021. 7. 4.
[UiPath] Custom Activity 1. 개요 - 기본적으로 제공되는 기능이 아닌 특정 기능을 가진 Activity를 제작할 때 사용 - C#을 기반으로 하며 패키지를 만드는 방법 중 간편한 방법을 사용할 예정임 - Visual Studio 2019 Community, UiPath Stdio 2021.4.4 버전 사용 2. nupkg 생성 3. Activity 사용 4. 결과 2021. 6. 6.
[UiPath] 윈도우 스케줄러 사용 및 로컬에서 배포/ 삭제 하기 1. 로봇 배포하기 - 오케스트레이터가 없이 로컬에서 작동하는 AR StandAlone 로봇이라고 가정 - 스튜디오가 설치되어 있고 라이선스의 변경이 가능하다고 가정 - 스튜디오에서 스크립트 작성 후 Publish 클릭 (Studio 라이선스 활용) - Assistant에서 내려받기 버튼 클릭 - 배포시 로봇은 %HomePath%\.nuget\Package\, %ProgramData%\UiPath\Package\ 폴더에 해당 프로젝트 이름으로 생성됨 2. 스케줄 걸어두기 - 윈도우 작업 스케줄러 실행 ** 프로그램/스크립트(P) : ‪C:\Program Files (x86)\UiPath\Studio\UiRobot.exe ** 인수 추가(옵션)(A) : execute -p 배포된로봇이름 Q1 ) UiRob.. 2021. 2. 7.
FFMPEG 관련 자료 H.264, MPEG, FFmpeg 관련 설명https://beankhan.tistory.com/212 FFmpeg Visual Studio 빌드https://sinsisao.tistory.com/2 avframe 자료형 관련 매뉴얼https://ffmpeg.org/doxygen/2.7/structAVFrame.html 디코딩/ 인코딩 관련 예제http://wiki.gurubee.net/pages/viewpage.action?pageId=30966295 멀티미디어 관련 글 외 다양한 글들이 잘 정리되어 있음 (구루비)http://wiki.gurubee.net/display/SWDEV/Home vp9 관련https://namu.wiki/w/VP9(%EB%B9%84%EB%94%94%EC%98%A4%20%EC.. 2020. 12. 25.
[UiPath] Invoke Code (.Net VBA) ** 주석처리 문자열은 VBA의 경우 ' 이지만, Tistory 코드블럭 기능에는 VBA 하이라이팅 기능이 없으므로 C# 주석인 //를 사용함. 1. 디렉토리 검사 후 없으면 생성 // 디렉토리 경로 검사해서 없으면 생성 If Directory.Exists("directory_path") = False Then Directory.CreateDirectory("directory_path") End If // 특정 경로 내부의 특정 키워드를 가진 파일 찾기 // input : keyword // output : str_result ( 키워드를 가진 Full Path의 파일명과 확장자) for each str_file as String in Directory.getFiles() If str_file.conta.. 2020. 11. 16.