조회수가 많아요 🫢
-
키크론 키보드 fn + f1~12 키 기본 설정
개요감사하게도 지인분께 키크론 k8 pro 키보드를 선물 받아 사용하던 중 키크론 키보드는 f1키를 입력하면 자동으로 fn + f1키가 입력 되고 fn + f1키를 입력해야 f1키가 입력되는 것을 알게 되었다.개발자로써 f1 ~ 12까지의 키를 쓸 일이 많아 그때마다 fn키까지 같이 눌러줘야하는게 굉장히 불편했는데 맥 자체의 설정으로도 키를 돌릴 수 없는 것을 알게 되었고 열심히 찾아보아도 기능키를 기본 맥 키보드처럼 쓸 수 있는 방법은 찾지 못했다... 하InteliJ에서 파일 리팩토링 단축키가 shift + f6인데 리팩토링을 하기위해 shift + f6 + fn 이렇게 세 키를 누를 때마다 참을 수 없는 분노가 올라와서 결국 키크론 키보드 런처에 접속해 직접 부딪혀서 설정하게 되었다.설정 방법유선으..
-
Python - SSL: CERTIFICATE_VERIFY_FAILED 에러
개요python으로 외부 사이트를 긁어오는 작업 진행 중 아래와 같은 오류를 만났다.Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/urllib/request.py", line 1348, in do_open h.request(req.get_method(), req.selector, req.data, headers, File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/http/client.py", line 1286, in request self._send_request(met..
-
Linux - ls -al 명령어 각 항목별 설명
개요linux를 사용하다 보면 자주 사용하게 되는 ls -al 명령어에서 각 항목이 무슨 의미인지 생각이 안 날 때가 있어 글로 정리 하려한다.각 항목별 설명항목예시설명권한-rw-r--r--파일 유형 및 접근 권한- 첫 글자는 파일 유형(-: 파일, d: 디렉토리 등), 다음 9글자는 소유자, 그룹, 기타 사용자의 권한링크 수1해당 파일이나 디렉토리에 연결된 하드 링크의 수소유자user파일이나 디렉토리의 소유자 이름그룹staff파일이나 디렉토리가 속한 그룹 이름크기1024파일의 크기(바이트 단위) 디렉토리의 경우 메타데이터 크기수정 날짜 및 시간Oct 5 12:34마지막으로 파일이나 디렉토리가 수정된 날짜와 시간파일명example.txt파일이나 디렉토리의 이름예시권한 | 링크 수 | 소유자 | 그룹 | ..
-
Spring - 랜덤 닉네임 생성기
개요프로젝트를 진행하던 중 랜덤으로 닉네임을 생성해주는 프로세스가 필요해 작성해보았다.코드import lombok.AllArgsConstructor;import org.springframework.stereotype.Component;import java.text.MessageFormat;import java.util.Random;@Component@AllArgsConstructorpublic class RandomNickname { // 형용사 배열 private final String[] ADJECTIVES = { "행복한", "똑똑한", "즐거운", "강한", "빠른", "재치있는", "충성스러운", "멋진", "훌륭한", "즐거운", "아름다운", "기쁜", "사랑스..
-
Ubuntu - java 21 설치
명령어# apt 리스트 업데이트sudo apt update# java 21 버전 다운로드sudo apt install openjdk-21-jdk-headless# 설치 가능한 java 버전 확인# sudo apt list openjdk*
-
⚙ 임베디드와 펌웨어의 차이
임베디드란정의- 기계장치를 사용하기 위해 기계 내부에 탑재된 컴퓨터를 뜻한다.- 범용 컴퓨터(일반 pc)의 반대 개념- 특정 목적을 가지고 만들어진 프로그래밍 가능한 컴퓨터예시세탁기나 냉장고 등 가전제품에 들어가는 단일목적 컴퓨터특징- 프로그램 최적화 - 임베디드 시스템의 하드웨어는 성능이 열악하기 때문에 코드를 최대한 압축시켜 최고의 효율을 내야한다.- 복잡한 알고리즘 - 마이크로프로세서에 의해 수행되는 명령이 고도의 정교함을 요할때가 있다.- GUI, 실시간 처리 지원, 멀티레이트, 하드웨어 지식 등등펌웨어란정의- 임베디드 시스템에서 구현되는 소프트웨어- 전자기기 등의 기본적인 제어 및 구동을 맡는 소프트웨어- 하드웨어와 소프트웨어의 중간 개념이라고도 한다.예시세탁기나 냉장고 등 컴퓨터 기반으로 동작..
-
tailwind - important
tailwind class에 !important 적용 시키는 법 클래스 명 앞에 느낌표를 붙이면 된다. 클래스 명 앞에 느낌표를 붙이면 된다.
-
Docker - Nginx Proxy Manager(npm) Docker로 실행하기
개요아....... 글 80% 작성 완료했는데 날아가서 새로 써야하네요.... 정말 속상합니다....한 서버에서 여러 프로젝트를 돌려야 하는데 각 서브 도메인마다 ssl 인증 관리를 해주어야 해서 열심히 삽질을 한 결과Nginx Proxy Manager(이하 npm, js 패키지 매니저 아님)를 사용하는게 가장 쉽고 편하다는 것을 깨닫게 되었다.그리하여 docker compose를 사용하여 npm을 컨테이너로 실행하고 서브도메인별로 ssl 인증을 받는 과정을 정리해본다.서버 디렉토리 구조.ssh├── nginx│ └── docker-compose.yml├── project1│ └── docker-compose.yml└── project2 └── index.jsnginx/docker-co..
-
Github - 디스코드 깃허브 알림 action(Discord Github Notification) 설명서
프로젝트 개요프로젝트 이름: 🛎️ Discord Github NotificationGithub repository urlGithub marketplace url프로젝트 설명이 프로젝트는 GitHub Action을 통해 GitHub에서 발생하는 다양한 이벤트(예: Pull Request 생성, 이슈 생성 등)를 Discord 채널 알림으로 전송하는 프로세스를 단순화해주는 서비스입니다.이 Action을 사용하면 중요한 개발 이벤트를 놓치지 않고 바로 Discord에서 확인할 수 있습니다!이 Action은 커스텀 알림 메시지를 지원하며, 한국어 🇰🇷와 영어 🇬🇧 중 원하는 언어로 알림을 받을 수 있습니다.👤 개발자: 김채민(Aleph Kim)🔧 주요 기능📝 PR 알림Pull Request 생성,..
-
js - 새로고침 시 스크롤 최상단으로 이동
코드 // 새로고침 시 스크롤 최상단으로 이동
최근에 올렸어요💡
-
Go - 이미지 리사이즈 기능(/h2non/bimg)
개요Go로 이미지 호스팅 서버를 개발하던 중, 이미지 리사이즈 기능을 구현하는 과정에서 고민했던 점들을 정리해보았다.go 주요 이미지 리사이즈 라이브러리 비교라이브러리장점단점bimg- libvips 기반으로 매우 빠른 처리 속도 - 메모리 사용량이 적음 - 다양한 이미지 포맷 지원- C 바인딩으로 인한 설치 복잡도 증가 - libvips 의존성 필요 - Windows 환경에서 설정이 까다로움imaging- 순수 Go로 작성되어 설치가 간단 - 크로스 플랫폼 지원이 용이 - API가 직관적이고 사용하기 쉬움- 처리 속도가 상대적으로 느림 - 메모리 사용량이 많음 - 일부 고급 이미지 처리 기능 부재nfnt/resize- 가볍고 단순한 구현 - 순수 Go로 작성되어 의존성이 ..
-
PHP - 클로저(Closure, 익명 함수)
개요개발을 하다보면 변수를 넣어야하는 문자열을 또 변수로 사용하게 될때가 있는데 매번 문자열을 불러와서 변수를 .으로 붙여주거나 복잡하게 넣어주게 돼서 간단한 방법이 없나 찾아보다 클로저 함수라는 것을 사용하게 되었다.사용 예시// 문자열에 변수 추가$exam_url = fn($id) => "https://example.com/user/$id";echo $exam_url(123); // "https://example.com/user/123"// 문자열에 변수 여러 개 추가$profile = fn($name, $age) => "이름: $name, 나이: $age";echo $profile("aleph", 26); // "이름: aleph, 나이: 26"// 문자열에 삼항연산자로 변수 추가$status = ..
-
PHP - html 태그 추출기
개요웹개발을 할때 svg 아이콘이 필요하면 유튜브에서 사용하는 svg 태그를 가져다 사용하고 있는데 유튜브에 존재하는 모든 svg를 미리 분류해두고 싶어 php를 사용해 유튜브 페이지의 전체 html에서 svg 태그만 추출하기 위해 php로 태그 추출기를 만들어보았다.코드(.*?)/is";preg_match_all($pattern, $html, $matches);// 결과 처리$output = implode("\n", $matches[0]);// 파일로 저장file_put_contents('output.html', $output);echo "태그 추출이 완료되었습니다.";사용 예시input.html 위 html을 php 파일과 같은 경로에 input.html로 저장하..
-
HTML, CSS - 별점 선택(Star Rating)
See the Pen Star Rating by 김채민 (@aleph-kim) on CodePen.
-
PHP - Docker-Compose 환경 PHP 프로젝트 빌드 시 Composer 설치
개요php, docker compose로 프로젝트를 진행하면서 composer를 설치하려는데 뭐 컨테이너를 따로 만들고 어쩌구 볼륨을 설정하고 어쩌구 이상하리만치 복잡하길래 간단한 방법을 만들어보았다.파일docker-compose.yml기본 compose 파일로 composer를 쓰나 안 쓰나 차이는 없다.version: '3.8'services: web: build: . ports: - "8080:80" volumes: - .:/var/www/htmlDockerfileDockerfile에서 직접 composer를 설치하고, 라이브러리도 설치한다.# PHP 7.4와 Apache 이미지 사용FROM php:7.4-apache# Composer 설치에 필요한 패키지 설치 ..
-
Go - 파일 호스팅 서버 프로젝트 기술 설명서
🌟 프로젝트 기술 설명서 🌟이 프로젝트는 파일 호스팅를 위한 RESTful API 서버입니다. Go 언어로 작성되었으며, Docker를 이용해 배포할 수 있도록 구성되었습니다. 🚀 서버는 사용자가 인증된 상태에서 파일을 업로드하고 관리할 수 있도록 기능을 제공합니다.관련 링크 📑아래는 프로젝트와 관련된 다양한 링크 정보입니다.서버 url: https://img.aleph.kr/api 명세서 url: https://github.com/Aleph-Kim/img-host-server/wiki깃허브: https://github.com/Aleph-Kim/img-host-server 🧑💻 주요 기능 🧑💻파일 업로드: 인증된 사용자만 파일을 업로드할 수 있습니다. 파일은 사용자별로 구분된 폴더에 저..
-
Docker - sudo 없이 docker 명령어 사용하기
개요현재 인스턴스 서버에서 docker 명령어를 실행할 때마다 sudo를 붙여야 하는 불편함이 있어 이를 해결하기 위해 방법을 찾아보았다.1. 현재 사용자 Docker 그룹에 추가하기# 현재 사용자를 docker 그룹에 추가하는 명령어sudo usermod -aG docker $USER2. 세션 재시작 또는 로그아웃 후 다시 로그인그룹 변경 사항이 적용되기 위해 로그아웃 후 다시 로그인하거나 터미널을 재시작3. 권한 확인# 현재 사용자의 그룹 리스트 출력groups출력 결과에 docker 그룹이 포함되어 있다면 성공적으로 추가된 것이다.
-
Docker - Debian 서버에 docker, docker compose 설치하기
Docker 설치# 필수 패키지 설치sudo apt-get updatesudo apt-get install apt-transport-https ca-certificates curl software-properties-common# Docker GPG key 추가curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg# Docker 저장소 추가echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https..
-
Go - error strings should not end with punctuation or newlines (ST1005)
개요Go로 새로운 프로젝트를 진행하던 중 vscode에서 errors.New("에러가 발생했습니다.") 부분에 노란색 밑줄이 생겼다.그냥 냅둬도 서버 굴리는 데에 아무런 영향 없이 잘 돌아가지만 저 노란색 밑줄을 용납할 수 없어 조금 찾아보았다.원인오류 메시지의 문자열 첫 번째 글자가 대문자인 경우오류 메시지의 문자열 끝에 마침표, 느낌표, 물음표 등의 구두점이나 개행 문자가 포함될 경우해결방법원인에 따라 첫 번째 글자를 소문자로 바꾸거나 끝에 특수문자가 들어가지 않도록 수정하면 된다.하지만하지만 한국인의 에러 메시지가 마침표로 끝나는 것은 일어날 수 있는 일이 아닌가? 나는 에러가 발생했습니다 라며 마침표 없이 끝나는 에러 메시지를 보고 싶지 않다.고로 노란색 밑줄이 뜨지 않도록 vscode의 설정을 ..
-
Git - 특정 파일의 변경 사항 추적 제어 (올라간 파일 업데이트 안 하는 방법)
명령어설명예시git update-index --skip-worktree [파일명]지정한 파일에 대해 skip-worktree 플래그를 설정합니다. 로컬 변경 사항을 Git이 무시하도록 합니다.git update-index --skip-worktree config.txtgit update-index --no-skip-worktree [파일명]설정된 skip-worktree 플래그를 해제하여, 해당 파일의 변경 사항을 다시 추적하도록 합니다.git update-index --no-skip-worktree config.txtgit ls-files -v현재 추적 중인 파일들의 상태를 보여줍니다. 대문자는 일반 상태, 소문자는 skip-worktree가 설정된 파일입니다.git ls-files -v
-
PHP - 내장 함수만으로 .env 파일 사용하기
개요다른 라이브러리를 사용하지 않고 php 내장 함수만으로 .env 파일을 사용하는 방법에 관한 포스팅이다.코드loadEnv 함수사용 예시후기사랑해 php야 망하지만 말아줘...
-
HTML, CSS - song card slide
개요프로젝트를 진행하며 flickity 라이브러리를 사용하여 만든 노래 슬라이드를 코드펜에 정리해보았다.codepen See the Pen song card slide by 김채민 (@aleph-kim) on CodePen.
-
CSS - 노멀라이즈 / 리셋
비교특징CSS 리셋 (Reset)CSS 노멀라이즈 (Normalize)기본 스타일 처리브라우저 기본 스타일을 모두 제거하여 모든 요소를 초기화합니다.브라우저 간 기본 스타일 차이를 보완하면서 유용한 기본 스타일은 그대로 유지합니다.접근 방식모든 요소의 스타일을 제거한 후, 개발자가 전부 직접 스타일을 정의합니다.기본 스타일의 일관성을 높여 브라우저 차이를 줄이고 접근성을 개선합니다.대표 라이브러리Elad Shechter’s CSS Resetnormalize.css장점- 초기 상태에서 스타일링을 시작하여 예측 가능성이 높습니다. - 모든 요소를 동일한 상태로 만듭니다.- 기본 스타일의 장점을 유지하면서 일관성을 제공합니다. - 접근성과 사용성을 개선합니다.단점- 기본 스타일을 모두 제거하므로 추가적..
-
PHP - include, include_once, require, require_once 차이
함수에러 처리중복 포함사용 용도사용 용도 예시include()파일이 없으면 경고(E_WARNING) 발생, 실행 계속중복 포함 가능선택적 파일 포함디자인 레이아웃 파일, 광고 배너, 언어 팩 파일include_once()파일이 없으면 경고(E_WARNING) 발생, 실행 계속 (단, 중복 방지)중복 방지선택적 파일 포함플러그인 파일, 서브 기능 모듈, 임시 설정 파일require()파일이 없으면 치명적 오류(E_COMPILE_ERROR) 발생, 실행 중단중복 포함 가능필수 파일 포함데이터베이스 연결 파일, 구성 파일, 핵심 라이브러리require_once()파일이 없으면 치명적 오류(E_COMPILE_ERROR) 발생, 실행 중단 (단, 중복 방지)중복 방지필수 파일 포함프레임워크 초기화 파일, 핵심 모..
-
docker - docker compose networks 옵션과 드라이버 종류
개요프로젝트를 진행하던 중 나의 작고 소중한 php 서버가 mysql 서버를 접근하지 못하여 찾아보니 컨테이너간 네트워크가 연결되어있지 않아 발생한 해프닝이었다.딸깍만 하면 모든게 자동으로 되는 환경을 원하기 때문에 docker compose의 networks 옵션에 대해서 찾아보았다.Docker Compose 네트워크 옵션옵션설명예시external이미 만들어진 네트워크를 사용한다.(새로 만들지 않음)external: truename네트워크의 이름을 정한다.name: my_custom_networkdriver컨테이너들이 서로 연결되는 방식을 정한다.(default: bridge)driver: overlaydriver_opts드라이버가 필요로 하는 추가 설정한다.driver_opts: com.docker...
-
한글명언 OPEN API 기술 설명서
🌟 한글명언 OPEN API 기술설명서본 문서는 한글명언 OPEN API 프로젝트의 전반적인 시스템 구성, 사용 기술(버전 포함), 모듈별 역할, 실행 방법, 배포 환경, 관련 링크 정보 및 CI/CD 파이프라인 설정에 관한 설명서입니다.1. 개요api key나 복잡한 인증 필요없이 한글로 번역한 명언을 받아볼 수 있는 OPEN API 서비스 구현2. 관련 링크 📑아래는 프로젝트와 관련된 다양한 링크 정보입니다.API 문서: https://quote.aleph.kr/api-docs/(API 문서 페이지)관리자 페이지: https://quote.aleph.kr/admin(관리자 전용 명언 관리 페이지)깃허브: https://github.com/Aleph-Kim/korean-quote(프로젝트 소스 코드..
-
PostgreSQL - 한글 정렬
개요PostgreSQL db로 프로젝트를 진행하던 중 한글 컬럼을 기준으로 정렬을 했더니 정렬이 이상하게 되는걸 발견했다. 이를 해결하는 방법을 정리해본다.방법 1 - pg_database 업데이트첫 번째 방법은 데이터베이스의 collate 값을 업데이트하는 방식으로 간단하게 데이터베이스 전체에 로케일 변경이 가능하다.이 방법은 시스템에 ko_KR.utf8 로케일이 미설치된 경우 실패하므로, 해당 로케일이 설치되어 있는지 확인(명령어: locale -a | grep ko_)해야한다.select datname, datdba, encoding, datcollate, datctype from pg_database; -- 현재 데이터베이스 로케일 확인UPDATE pg_database SET datcollate ..
-
git - 커밋 메시지 수정
개요정리하고 싶지 않았지만 자꾸 찾아보게 되고... 안 찾고 기억을 더듬어 마음대로 하다가 하루종일 작업한 내용을 날릴 뻔하여 부랴부랴 정리하게 된 커밋 메시지 수정 방법에 관한 글이다.방법현재 브랜치의 마지막 커밋 메시지를 수정하기git commit --amend위 명령을 입력하면 마지막 커밋 메시지를 수정할 수 있다.메시지를 원하는 대로 수정한 후 저장하고 종료(:wq!)하면 커밋 메시지가 변경된다.이전 커밋 메시지 수정하기 (예: 마지막 3개의 커밋)git rebase -i HEAD~3위 명령을 실행하면 아래와 같은 목록이 열린다.pick abcdef1 커밋 메시지 1pick bcdefg2 커밋 메시지 2pick cdefgh3 커밋 메시지 3여기서 수정하고 싶은 커밋 앞의 pick을 reword(또..
-
express - apiDoc 라이브러리로 api 문서 만들기
개요open api 프로젝트를 진행하던 중 api 문서를 만들 차례가 다가왔고, swagger의 끔찍한 ui를 피하기 위해 어떤 라이브러리를 사용할까 고민하다 apiDoc이라는 간단한 api 문서 생성 라이브러리를 찾아 사용하게 되었다.apiDoc 공식 Live Demo프로젝트 구조project/├── doc/│ ├── assets/│ └── index.html├── src/│ ├── controllers/│ │ └── userController.js│ └── routes/│ └── userRoutes.js├── app.js├── .gitignore├── apidoc.json└── package.jsonapiDoc 사용법1. 라이브러리 설치npm install --save..
-
laravel, vue - laravel8 vue bootstrap 프로젝트 시작
필요한 선행 작업php 설치composer 설치npm 설치1. 프로젝트 생성composer create-project --prefer-dist laravel/laravel:^8 my-laravel-project # laravel 프로젝트 생성cd my-laravel-project # 프로젝트로 이동composer require laravel/ui # ui 설정 패키지 설치php artisan ui vue # vue를 기본 프론트엔드 설정2. laravel 서버 실행php artisan serve3. 정상 작동 확인http://127.0.0.1:8000/4. vue 실행npm install && npm run dev # npm 설치 및 최초 webpack 컴파일npm run watch # vue 변경사항 ..
- 방문자수
전체 방문자
오늘 방문자
어제 방문자