전체 글

조금씩 지식을 쌓는 중입니다.
CS 면접을 준비하기 위해 개인적으로 정리하고 있습니다. 혹시라도 내용이 잘못되거나 미흡한 것이 있다면 알려주시면 감사드리겠습니다. 비밀번호를 왜 해싱할까?만약 사용자 계정 정보가 담긴 데이터베이스가 해킹당한다면, 해커는 쉽게 사용자 아이디와 비밀번호를 탈취할 수 있다. 특히나 비밀번호가 평문(plaintext) 상태로 저장되어 있다면 큰 피해로 이어질 수 있다. 해커가 탈취한 비밀번호로 계정 탈취, 피싱, 금융 사기 등 2차 피해를 발생시키는 경우가 많기 때문이다.따라서 비밀번호는 절대 평문 상태로 데이터베이스에 저장해서는 안 되며, 해커의 탈취 시도에 대비하여 안전한 방식으로 관리해야 한다. 그 방법 중 하나가 바로 해싱(hashing)이다. 비밀번호 해싱이란?해싱은 입력된 데이터를 고정된 길이의 값..
CS 면접을 준비하기 위해 개인적으로 정리하고 있습니다. 혹시라도 내용이 잘못되거나 미흡한 것이 있다면 알려주시면 감사드리겠습니다.IPv4, IPv6 차이점IPv4, IPv6 모두 인터넷 장비의 논리적 위치를 나타내는 주소 체계이다.IPv4는 2^32 개의 주소를 제공하지만, 시간이 지나면서 점차 주소가 고갈되는 문제가 있었다.이를 해결하기 위해 IPv6가 도입되었다. IPv6는 2^128 개의 주소를 제공해 고갈 우려가 없고, IPSec과 같은 보안 기능을 기본적으로 지원한다.또한 SLAAC를 통해 DHCP 서버 없이도 IP를 자동으로 구성할 수 있으며, 브로드캐스트 대신 멀티캐스트를 사용해 네트워크 성능을 향상시킨다. 서브넷 (Subnet)IPv4 주소가 고갈 위기에 처하면서, 최대한 제한된 주소를 ..
· 개발/Cloud
학부 클라우드 컴퓨팅 수업에서 AWS Academy로 실습한 내용을 정리하였습니다. 지난 포스팅에서 S3 버킷을 생성하고, 정적 웹 호스팅 설정하는 부분을 다루었다. [Cloud] AWS S3로 정적 웹 사이트 호스팅하기학부 클라우드 컴퓨팅 수업에서 AWS Academy로 실습한 내용을 정리하였습니다. 정적 웹 사이트는 백엔드 없이 정적 콘텐츠(HTML, 이미지, CSS 등)로 구성된다. 쉽게말해, 웹 페이지에 해당하는 데이터kmicety1.tistory.com 이번 포스팅에서는 S3를 사용한 정적 웹 호스팅에 정책을 설정하고, 재해 복구(DR) 전략을 구현하는 내용을 다루려고 한다. 그 전에 먼저, AWS Well-Architected Framework에 대해 잠깐 알아보자.AWS Well-Archit..
· 개발/Cloud
학부 클라우드 컴퓨팅 수업에서 AWS Academy로 실습한 내용을 정리하였습니다. 정적 웹 사이트는 백엔드 없이 정적 콘텐츠(HTML, 이미지, CSS 등)로 구성된다. 쉽게말해, 웹 페이지에 해당하는 데이터가 변경되지 않는 한 고정된 웹 페이지를 보게 된다.AWS S3를 이용하면 백엔드 서버를 구축하지 않아도 정적 웹 사이트를 손쉽게 호스팅할 수 있다. JS를 추가해서 사용자 브라우저에서 상호작용 기능을 구현할 수도 있다. AWS S3를 활용해서 정적 웹 사이트를 호스팅하는 방법을 알아보자.1. 버킷 만들기S3 > 버킷 만들기 선택버킷 이름은 글로벌하게 고유해야 한다. 즉, 모든 리전에 거쳐서 중복되는 이름으로 설정할 수 없음.정적 웹 사이트를 호스팅하고 인터넷에 배포할 것이기 때문에 인터넷 상의 퍼..
· 개발
개발에 있어서 반복적인 작업을 자동화하는 것은 생산성을 극대화하는 중요한 기술이다. 특히, 프로젝트 설정이나 자주 반복되는 작업을 스크립트로 작성해 실행 한 번에 완료하면 굉장히 편할 것이다. Linux 환경에서는 쉘 스크립트(Shell Script, .sh), Windows 환경에서는 배치 파일(Batch File, .bat)을 사용하여 이러한 작업을 간편하게 자동화할 수 있다. 이번 글에서는 Linux와 Windows 환경에서 각각 쉘 스크립트와 배치 파일을 활용해 프로젝트 설치 및 실행하는 방법을 다루려고 한다. Github에서 프로젝트를 클론하고, 가상 환경을 설정하고, 필요한 라이브러리를 설치하는 스크립트와 최종 세팅된 프로젝트를 실행하는 스크립트를 작성해 보자.
Pyside6로 GUI 프로그래밍을 하고 있는데, 모드 ON/OFF일 때 상태를 나타내는 인디케이터를 구현해보았다. 제스처 모드는 초록색 인디케이터로, 음성 인식은 주황색 인디케이터로 지정해 모드가 켜져 있는지 확인을 쉽게 할 수 있다. 하지만, 음성 인식은 실행과 동시에 바로 시작되는게 아니라, 모델을 불러오기까지 시간이 걸리기 때문에 이를 위해 로딩 애니메이션을 넣으면 좋을 것 같았다. 1. 먼저 맘에 드는 로딩 애니메이션 GIF를 찾자. Loading GIF | TenorClick to view the GIFtenor.com나는 해당 링크에서 쉽게 필요한 GIF를 찾을 수 있었다. 2. 다운로드하고, 필요한 경우 Resize 한다.PyQt, PySide 자체적으로 setFixedSize() 를 가지..
Mediapipe을 이용해 손인식은 어느 정도 구현했고, 이제 음성 인식을 구현할 차례다. 음성 인식 기능 요구사항은 다음과 같다.- 실시간으로 동작할 것- 인터넷 연결 없이도 작동해야 할 것 실시간으로 동작하는 것은 그렇다 쳐도, 인터넷 연결 없이 온디바이스에서 음성 인식을 구현하는 것이 쉬워 보이진 않았다. 일단 음성 인식 라이브러리부터 찾아보았다.Speech Recognition여러 온오프라인 엔진과 API를 지원하는 음성 인식 라이브러리 Python으로 음성 인식을 구현할 때 가장 많이 접하게 되는 라이브러리 중 하나다. 소스코드는 여기로.  다음과 같은 엔진/API를 지원한다.- CMU Sphinx (오프라인 동작)- Google Speech Recognition- Google Cloud Spe..
현재 산학연계 현장실습을 진행하면서 맡은 과제가 되게 재미있다. 현재 기업의 비디오월 컨트롤 프로그램에 멀티모달 인터페이스를 추가하는 것이다. 즉, 마우스 또는 키보드 외에 비디오, 오디오 입력을 인식해 시스템을 제어하는 프로그램을 만드는 것이 목표! 그중 첫 번째 단계로, 웹캠을 이용해 손가락 제스처를 인식하여 마우스를 조작하는 기능을 개발하고 있다. MediaPipeMediaPipe는 실시간 멀티미디어 애플리케이션을 위한 머신 러닝 파이프라인을 구축할 수 있는 구글의 오픈소스 프레임워크이다. MediaPipe 솔루션 가이드  |  Google AI Edge  |  Google for Developers이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 MediaPi..
현장실습에서 맡은 업무로 멀티모달 인터페이스 애플리케이션 제작이 있는데, 손을 인식하는 과정에서 mediapipe이 사용된다.  GUI로 동작하는 .exe 파일이 최종 결과물이기 때문에 작성한 코드를 pyinstaller로 빌드했는데, 계속해서 다음과 같은 에러가 표시되었다.  Unhandled exception in scriptFailed to execute script 'pyi_rth_mplconfig' due to unhandled exception: DLL load failed while importing _ctypes: 지정된 모듈을 찾을 수 없습니다. 구글링을 해보니 흔히 있는 에러는 아니고, 유독 mediapipe 라이브러리를 사용한 애플리케이션을 빌드할 때 많이 발생하는 것 같았다. 이거 ..
· 개발/Cloud
학교에서 진행하는 프로젝트에서 비디오를 조회하는 기능을 넣다 보니 자연스레 썸네일을 어떻게 다룰지에 대해 생각해 보게 되었다.먼저 개발 중인 환경은 다음과 같다. - Google Cloud Platform 사용- Java 17, Spring Boot 3.2.4- next.js 14.2.3 현재 비디오는 Google Cloud Storage(AWS S3에 해당)에 저장되어 공개 URI 형태로 DB에 저장된다.Youtube처럼 비디오 검색을 했을때 각 비디오 정보와 함께 비디오 재생 전에 썸네일을 표시하고 싶었다.썸네일은 사용자 지정 썸네일이라기보다는, 특정 타임스탬프의 프레임을 쓰기로 했다. 총 세가지 경우를 생각했다.1. Spring 애플리케이션에서 처리- 백엔드 인스턴스 사양이 그리 좋지 못하고, ff..
kmicety1
켜켜이 쌓이다