본문 바로가기

전체 글

(85)
24년까지 하루가 남았습니다 : 2023년 회고록 어느덧 24년이 하루 남았습니다. 매번 느끼지만 23년 역시 빠르게 지나간 것 같습니다. 글을 쓰고 있는 지금은 30일인데, 글이 올라가는 시점은 31일이 되지 않을까 싶어서 제목을 저렇게 정해봤습니다. 🖥️ 고등학교 그리고 대학교에서도 이어집니다 2년 전, 고등학교에서 학과 인트라넷을 만드는 프로젝트를 진행했습니다. 학교와 함께 클라우드 서버와 도메인을 지원받고 정식 동아리로 발전시켜 서비스 오픈까지 했었습니다. 이번에는 대학교입니다. IT동아리에 들어가서 백엔드 파트로 프로젝트를 진행하게 됐습니다. 어쩌다 보니 다른 과를 지원하게 됐는데, 학과 졸업인증 관리 서비스입니다. 기존 졸업인증(졸업 신청 및 심사)은 엑셀과 수기로 관리하고 있고 자료가 파편화돼 있는데 이를 합치고 웹으로 관리할 수 있게 만드..
졸업 그리고 입학 : 2021~2022 회고록 졸업 그리고 입학 매년 쓰던 글인 회고록을 작년에는 건너뛰었습니다.(큰 이유는 없고 그냥 깜빡했습니다) 2021년은 짧게 다루고 2022년으로 넘어가 보겠습니다. 🐂2021년부터 출발해 봅시다 🖥️수정과와 수프트를 되돌아보면... 2021년, 고등학교를 다니면서 수프트(수프트 개발기)와 수정과(수정과 개발기)라는 이름으로 실서비스 프로젝트를 했었습니다. 각각 CBT(문제은행) 서비스와 교내 인트라넷입니다. 수프트는 시험기간에 공부하려고 간단하게 만든 프로젝트였습니다. 졸업하면서 서서히 잊혔고 지금은 제 테스트베드로 사용하고 있습니다. 수정과는 교내 인트라넷으로 급식 확인, 우산 대여, 고교학점제 수강신청 등의 기능을 제공합니다. 첫번째 목표가 학교의 대부분 사람들이 서비스를 이용하게 하는 것이고, 두번째..
pfSense 와 함께 인터넷 사용하기 📡 pfSense 알아보기 pfSense는 오픈소스 방화벽 소프트웨어입니다. 데스크톱이 될 수도 있고, 서버 또는 VM 등 컴퓨터에 설치해서 사용하는 방화벽입니다. pfSense의 모든 기능을 쓰지는 않지만.. DHCP 서버, NAT 등 가정에서 쓰는 공유기 이상의 기능을 지원합니다. 제 경우 미니 PC를 구입하여(알리익스프레스에서 구매) pfSense를 올린 후 사용하고 있습니다. [pfSense는 공식 문서]가 존재하고, 영어만 가능하다면 최고의 설명서입니다. 다만, 한국어 자료는 부족했고 2021년 5월부터 지금까지 겪었던 시행착오를 정리하고자 합니다. 보안 또는 네트워크와 관련된 전문적 지식을 가지고 쓰는 글이 아닙니다. 더 나은 방법이나 잘못된 지식이 있다면 댓글로 알려주세요! 🤣 시작하기 전에..
랜덤 한글 단어 만들기 서론 학교에서 진행 중인 프로젝트 '주다'는 온·오프라인 학습에서 쓸 수 있는 보조 플랫폼입니다. 방에 입장하기 위한 초대 코드와 출석체크에 필요한 출석 코드를 만들어야 하는데 흔히 쓰이는 알파벳 코드가 아닌 한글 단어로 이루어진 코드를 만들어 보기로 했습니다. 이런 느낌으로요! 🅰 알파벳은 알겠는데... 한글? 알파벳으로만 이루어진 코드는 예전에도 해봤었고, 구글링을 통해 쉽게 자료를 얻을 수 있었습니다. 알파벳을 담은(A-Z, a-z) 문자열 변수를 만들어주고 랜덤 한 인덱스를 뽑은 뒤 이에 매칭 되는 알파벳을 골라주면 됩니다. const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; const generateCode = (..
학교 인트라넷 프로젝트: 수정과 개발기 갑자기 인트라넷? 각 학교마다 여러 가지 행사들이 있습니다. 저희 학교의 경우 '우산대여제'라는 사업(행사)이 있습니다. 아래와 같은 프로세스로 굴러가는데, 비가 오거나 눈이 오는 등으로 우산이 필요할 때 시행합니다. 학생회에게 보증금을 2천원을 먼저 주고 우산을 받습니다. 우산을 반납하면 보증금을 돌려받습니다. 우산 반납이 연체되면 보증금을 돌려받을 수 없습니다. 또한 3일 이내에 반납이 이루어지지 않으면 블랙리스트에 등록되며 영구적으로 이용할 수 없습니다. 간단하지만 사람이 많다면 복잡한 과정이라고 생각합니다. 우산 대여자가 많아지면 학생회의 일이 커지게 되는데 이를 자동화할 수 없을까? 라는 생각에서 출발했습니다. 코로나19로 인해 원격 수업이 잦아지면서 구글 클래스룸, Zoom 등 수업 링크를 기..
벌써 2021년? 2020년은 2019년보다 더 빠르게 지나간 것 같습니다. 많은 일들이 있었지만 가장 생산력 있는 해였습니다. 아무리 블로그 글은 안 올려도 회고글은 항상 올렸기에 2020년에도 한 해를 회고해보려고 합니다. SW마에스트로 합격 SW마에스트로가 뭔지 알고만 있었는데, 주변 지인을 통해 11기 모집한다는 소식을 듣고 지원해봤습니다. 매우 감사하게도 11기에 최종 합격했습니다! 🎉 SW마에스트로는 오프라인 행사로 이루어져 있었으나... 코로나로 인해 대부분 행사가 온라인으로 바뀌었고 프로젝트 또한 온라인으로 진행하게 되었습니다. 사람들은 많이 못 만난 건 아쉽지만 고등학생이기 때문에 편하게 참여하기는 했습니다 😀 코딩 테스트 또한 오프라인 테스트에서 온라인 코테 2번으로 변경되었습니다. 10기에서는 모든 문..
GitHub Actions와 SFTP로 React 프로젝트 배포하기 예전에는 Jenkins, Travis CI와 같은 써드파티를 이용하여 배포를 했다면 요즘에는 GitHub Actions으로 이전보다 쉽게 배포를 할 수 있게 되었습니다. 개인적으로 React 프로젝트를 배포하기 가장 쉬운 방법은 아마존 S3라고 생각합니다 S3를 썼으면 좋겠지만.. 여러 사정으로 인해 진행하는 프로젝트에서는 S3를 이용할 수가 없었기 때문에 SFTP를 이용해서 React 프로젝트를 배포해보겠습니다. Workflow 작성하기 SFTP를 쓸 수 있는 Action입니다. https://github.com/SamKirkland/FTP-Deploy-Action SamKirkland/FTP-Deploy-Action Deploys a GitHub project to a FTP server using ..
Git 사용시 한글 깨지는 오류 해결하기 Git을 이용해 commit을 확인하려고 하니까 한글이 깨지는 이슈가 발생하였습니다. (똑같지는 않았는데 비슷한 문구였다) 혹시 clone을 잘못한 게 아닌가 싶어 다시 해봤고 재부팅도 해봤으나 결국은 인코딩 문제였습니다. 해결 방법은 두 가지인데, 1. Git Bash를 사용하자 2. 환경변수로 인코딩을 바꿔주자 입니다. 1번은 금방 해결되고 여기서는 2번을 다뤄보겠습니다. 환경변수 LC_ALL 을(를) 추가해주고 값에 ko_KR.UTF-8 을(를) 넣어주면 됩니다. 이후 저장해주고 터미널을 재시작해주면 해결됩니다.
공적마스크 재고 & 온라인 개학 시간표 알림 챗봇 개발기 공적 마스크 재고 조회 한참 공적 마스크 구매가 유행일 때 마스크 재고 조회 API가 등장하였고 저희 반 디스코드 방에 있던 챗봇에 기능을 추가하게 되었습니다. 해당 봇은 원래 시간표, 급식 정보를 알려주는 봇입니다. 주의! 아래 기능들은 하루 만에 개발을 끝낸 거라 코드가 많이 더럽습니다. 😂 처음에는 React를 이용하여 웹으로 개발하려 했으나 복잡하기도 하고 시간문제가 있어 챗봇에 넣게 되었습니다. 웹 환경에서는 사용자의 위치를 가져올 수 있기 때문에 해당 기준으로 마스크 조회가 가능하지만, 디스코드에서는 현재 위치를 조회하기 어렵습니다. (개발 당시에는 방법을 몰랐는 데 있을지도 모른다) 끝내 결정한 방법은 주소를 받으면 주소 주변의 마스크 판매점을 알려주기로 했습니다. 주소 기준 판매점 조회는 ..
백준 #6581 HTML 오로지 , 태그와 그 외 평문으로만 주어지는 HTML 문서가 있을 때, 그 결과를 보여주는 코드를 작성하시오. 한 줄에는 80자보다 많은 글자가 출력되어서는 안 된다. https://www.acmicpc.net/problem/6581 정답 뜨자마자 정리하는 따끈한 글! 해당 문제는 입력으로 HTML 코드가 들어오면 파싱해서 결과를 출력해주면 되는 문제이다. 단, 조건이 있는데 한 줄에는 80자 이상을 출력할 수 없고 80줄이 넘으면 줄바꿈 후 출력한다. 태그가 주어지면 줄바꿈을 한다. 태그가 주어지면 줄바꿈 후 라면 - 문자 80개를 출력하고 아니라면 줄바꿈 후 출력한다. 위 조건에 맞게 구현을 해주면 된다. 처음 접근 방식은 vector에 \n (newline) 기호를 넣어주고 출력해보면 되지 않을까 ..
🌐 HTTP Status Code, 301 vs 302 301과 302의 차이점 웹 개발을 하다보면 페이지 리다이렉트를 할 일이 생기는데 그 때마다 항상 찾아보는 코드이다. (어떻게 볼 때마다 까먹는지 지금은 기억함.. ㅎ) 301 (Permanent redirect) 페이지가 영구적으로 이동했다는 의미를 갖고있습니다. foo.com에서 bar.com으로 이동했다면 검색엔진은 영구적으로 페이지가 변경되었다 판단하고 검색 결과를 bar.com으로 표기합니다. 주로 도메인 이전으로 foo.com에서 bar.com으로 변경되거나 www.bar.com으로 접속했을 때 bar.com으로 리다이렉트 되는 경우에 쓰입니다. 302 (Temporary redirect) 페이지가 임시적으로 이동했다는 의미를 갖고있습니다. 301 코드와 달리 foo.com`에서 bar.com..
백준 #8979 올림픽 올림픽은 참가에 의의가 있기에 공식적으로는 국가간 순위를 정하지 않는다. 그러나, 많은 사람들이 자신의 국가가 얼마나 잘 하는지에 관심이 많기 때문에 비공식적으로는 국가간 순위를 정하고 있다. 두 나라가 각각 얻은 금, 은, 동메달 수가 주어지면, 보통 다음 규칙을 따라 어느 나라가 더 잘했는지 결정한다. 금메달 수가 더 많은 나라 금메달 수가 같으면, 은메달 수가 더 많은 나라 금, 은메달 수가 모두 같으면, 동메달 수가 더 많은 나라 각 국가는 1부터 N 사이의 정수로 표현된다. 한 국가의 등수는 (자신보다 더 잘한 나라 수) + 1로 정의된다. 만약 두 나라가 금, 은, 동메달 수가 모두 같다면 두 나라의 등수는 같다. 예를 들어, 1번 국가가 금메달 1개, 은메달 1개를 얻었고, 2번 국가와 3번..
백준 #2688 줄어들지 않아 어떤 숫자가 줄어들지 않는다는 것은 그 숫자의 각 자리 수보다 그 왼쪽 자리 수가 작거나 같을 때 이다. 예를 들어, 1234는 줄어들지 않는다. 줄어들지 않는 4자리 수를 예를 들어 보면 0011, 1111, 1112, 1122, 2223이 있다. 줄어들지 않는 4자리수는 총 715개가 있다. 이 문제에서는 숫자의 앞에 0(leading zero)이 있어도 된다. 0000, 0001, 0002는 올바른 줄어들지 않는 4자리수이다. n이 주어졌을 때, 줄어들지 않는 n자리 수의 개수를 구하는 프로그램을 작성하시오. https://www.acmicpc.net/problem/2688 DP문제입니다! 문제를 풀면서 알았는데 문제의 특징을 뽑아 점화식을 설계하면 편리한거 같습니다. 자릿수 n이 주어지고 줄어들지..
Rust toolchain 설치 시 액세스 거부 해결하기 Rust toolchain 설치 시 아래와 같은 오류가 발생하곤 합니다. error: could not rename component file from '경로\rust-docs\share/doc/rust/html' to '경로\share/doc/rust/html' info: caused by: 액세스가 거부되었습니다. (os error 5) 관리자 권한으로도 실행 해보고 직접 파일 이름을 바꾸기도(??) 해봤는데 아쉽게도 이 방법은 아니였고 백신 사용 시 백신을 모두 끄고 설치하시면 해결됩니다.
코틀린 Kotlin 다루기 (7) - 조건식 조건식 조건식은 조건에 따라 코드 실행을 하기 위한 문법입니다. Java, C 등 다른 언어와 매우 흡사하며 다른 언어에서 써본 적이 있다면 쉽게 다룰 수 있습니다. 숫자를 입력 받으면 짝수, 홀수에 따라 다른 코드를 실행하거나 특정 퀘스트를 완료하면 작동하는 코드 등 모두 조건식으로 해결 할 수 있습니다. If if는 조건을 확인 할 수 있는 기초적인 문법입니다. val a = 6 val b = 5 if(a > b) { println("변수 a가 변수 b보다 큽니다.") } a와 b를 비교하여 a가 b보다 큰 경우(a > b) 문구를 출력하는 코드입니다. if 괄호 안에 조건을 쓸 수 있으며 해당 조건 만족 시 중괄호( {} ) 안에 포함된 코드가 작동됩니다. 이번에는 입출력까지 응용하여 입력받은 수가..

반응형