전체 글 73

[Ubuntu] AWS Ec2 서버 배포하기

1. ssh키를 사용하여 ec2 인스턴스에 접속 후 java가 깔려 있지 않은 경우 java를 깔아준다. 2. 깃허브에서 깃 클론 해오기 sudo su cd /var/www git clone '클론할 주소' 3. default 파일에서 root 부분 변경 vim /etc/nginx/sites-available/default root /var/www/'파일명' 으로 변경한다. 4. 다운받은 파일로 이동해서 빌드를 진행한다. ./gradlew clean build 여기에서 빌드가 제대로 안 되어 구글링을 해 보았다. 메모리 부족 문제일 수 있다고 해서 블로그 글을 참고(https://sundries-in-myidea.tistory.com/102)하여 swap 메모리를 할당했다. 이 때 내가 빌드하려고 한 코..

AWS 2023.05.10

[Ubuntu] 리눅스 환경 구축 (Mac 기준), 도메인 연결

1. AWS EC2 서비스 접속 후 인스턴스 선택 > 연결 2. ssh -i ~ 명령어 복사 후 key가 있는 경로에서 붙여넣기, 실행 3. 혹시 이러한 에러가 뜬다면 2번 사진에 있는 chmod 400 key.pem 명령을 실행 후 다시 ssh 명령어를 실행하도록 하자. 정상적으로 접속 가능하다. 4. 이제 접속된 인스턴스에 nginx를 설치한다. sudo apt update sudo apt install nginx nginx 설치 전에 먼저 sudo apt update로 최신화 해준다. nginx -v 버전이 제대로 출력되면 정상 설치 완료된 것이다. 5. mysql 설치 sudo apt install mysql-server mysql 보안 설정을 해준다. sudo mysql_secure_instal..

AWS 2023.05.09

[Java] 한국투자증권 api 키 발급

현재 진행하고 있는 앱은 모의 투자(/구매)와 비슷한 개념의 앱인데, 주식 파트를 맡게 되어 데이터를 불러오기 위해 open api를 사용하기로 했다. open api 를 처음 써보기도 하고, 코드 개발에서도 여러모로 미숙하기 때문에 삽질하는 과정을 기록해보려고 한다. 주식 데이터를 불러오는 여러 api들이 많은데 굳이 한국투자증권 api를 선택한 이유는, 맥북에서도 호출 가능한 api이기 때문이다. 그리고 부가적인 프로그램을 다운받거나 할 필요 없이 rest api 형식으로 되어 있어 사용하기 좀 더 편할 것 같다는 이유도 있다. api 문서가 꽤 잘 되어 있어서, 아직까지는 공식 문서를 참고하고 있다. https://wikidocs.net/book/7845 파이썬을 이용한 한국/미국 주식 자동매매 이..

Java 2023.01.13

[C] 2개의 파이프를 사용한 양방향 통신 프로그램 구현하기

파이프를 이용한 양방향 통신 2개의 파이프를 이용하여 부모와 자식 프로세스 사이에 양방향 통신을 할 수 있는 프로그램을 만들어봅시다. 프로그램의 동작 부모 프로세스는 표준 입력으로 텍스트 데이터를 받는다. 자신이 받은 텍스트를 파이프로 자식에게 전송한다. 자식은 부모가 전송한 텍스트를 받아 모든 문자를 대문자로 변경한다. 부모가 보낸 파이프와 다른 파이프로 부모에게 변경한 결과를 보낸다. 부모는 자식이 반환한 문자열을 화면에 출력하고 다시 루프에서 대기한다. 실행결과 이 프로그램은 영어 문자열을 입력했을 때, 소문자를 대문자로 바꿔준다. #include #include #include #include #include #include #include #include #include #define BUF_S..

C/Linux 2023.01.03

[C] alarm 시그널을 받으면 1초 간격으로 메시지 출력하는 프로그램 구현하기

wake_up() SIGALRM을 받으면 1초 간격으로 "wake up\n"을 출력하는 프로그램을 작성하시오. SIGALRM 시그널의 핸들러가 실행되는 동안 SIGINT를 제외한 모든 시그널을 블럭하시오. #define _GNU_SOURCE #include #include #include #include #include #include #include void mywakeup(int sig) { while (1) { printf("wake up\n"); sleep(1); } } int main(void) { int pid, status, signo; time_t t; sigset_t set; static struct sigaction act; act.sa_handler = mywakeup; sigfill..

C/Linux 2023.01.03

[C] ctrl + c 로 종료되지 않는 프로그램 구현하기

Hello_Again() set이라는 이름의 시그널 세트를 생성하시오. set을 이용하여 프로그램이 ctrl + c로 종료되지 않도록 만드시오. (힌트: sigprocmask를 사용할 것) #define _GNU_SOURCE #include #include #include #include #include int main(void) { int cnt; sigset_t chkset; sigset_t set; sigemptyset(&set); sigaddset(&set, SIGINT); sigprocmask(SIG_SETMASK, &set, NULL); // do not modify cnt = 0; for (;;) { printf("hello\n"); fflush(stdout); sleep(1); cnt++;..

C/Linux 2023.01.03

[C] execve()를 사용하여 execlp() 구현하기

execlp() 구현하기 execve()를 이용하여 execlp()를 구현하시오. 기존 execlp()와 겹치지 않도록 myexeclp() 함수로 구현할 것 가변인자 함수를 사용할 것 execlp()는 인자의 길이가 가변적임 가변적 인자를 처리해주기 위해서는 stdarg(3)이 필요함 인터넷에서 사용 예제를 검색해볼 것 구현의 편의를 위해 인자의 최대 길이는 MAXARGS를 사용할 것 자체 테스트 방법 환경변수 PATH로부터 경로명을 가져와 테스트해 볼 것 파일이 있는지, 그 파일이 실행 가능한지 테스트해야 함 제일 뒤의 경로명부터 테스트해야 함 처음 실행할 수 있는 경로명에 있는 실행파일을 사용할 것 반환 값 실패 시 -1 반환 #define _XOPEN_SOURCE #include #include #..

C/Linux 2023.01.03

[C] chmod a+rX [path] 구현하기

chmod a+rX [path]의 기능모든 읽기 권한을 활성화 한다.디렉토리에는 모든 실행 권한을 활성화 한다.이미 실행 권한이 있는 파일에 대해 모든 실행 권한을 활성화 한다.요구사항chmod a+rX와 동일하게 동작하는 프로그램을 stat()과 chmod()를 이용하여 구현하라.path에는 여러 파일의 이름이 연속으로 입력될 수 있다.처리할 파일의 이름을 커맨드 라인으로부터 입력받을 수 있어야 한다.입력 파일의 이름이 변경되어도 처리할 수 있어야 한다.실행결과 예시#include #include #include #include #include int main(int argc, char **argv) { int return_stat; char *file_name; struct stat file_info..

C/Linux 2023.01.03

[C] copy_file() 구현하기

copy_file() 함수 구현하기 파일을 복사하여 사본을 생성하는 copy_file()함수를 구현하라. low level function, 즉 open(), read(), write(), close()를 이용하여 구현하라. 단, hole이 있는 경우에도 복사할 수 있어야 한다. Prototype int copy_file(const char *src, const char *dst); src는 원본 파일의 이름이다. dst는 사본 파일의 이름이다. 단계별 동작 첫 번째 파일을 개방한다. 두 번째 파일을 생성한다. 첫 번째 파일을 읽어 두 번째 파일에 쓴다. 첫 번째 파일의 끝에 도달할 때까지 3번 동작을 반복한다. 두 파일을 닫는다. #include #include #include #include #def..

C/Linux 2023.01.03