개요회사에 파일에 저장된 text를 불러와 처리하는 프로그램이 있는데 테스트로 echo someword >> file 이런식으로 파일 하나를 만든뒤 이 파일을 읽어들였더니 에러가 발생하였다. (해당 프로그램은 공백과 개행에 민감한데 기존엔 이 처리가 되어있지 않았다.)분명 파일 저장시 공백을 추가하거나 개행처리를 하지 않았는데 왜 이럴까 의문스러웠다.찾아보니 원인은 Unix/Linux 계열 시스템에서 텍스트 에디터(vi, vim, nano 등)로 파일을 저장할 때나 echo 등 POSIX 호환 명령어들을 사용해서 저장할 때 문자열 끝에 개행이 자동으로 추가된다는 것이었다.POSIX 표준과 개행문자이는 POSIX 표준을 따르는 것으로, 텍스트 파일은 개행문자로 끝나야 한다는 규칙에 기인한다.관련 내용은 P..
IT/이것저것
Cloudflare 소개와 이점Cloudflare는 서버 호스팅 시 보안 및 최적화를 위해 많이 사용되는 리버스 프록시 서비스이고 주요 장점은 아래와 같다.DDoS 방어 등 비정상적인 트래픽 차단전역 CDN을 통한 라우팅 최적화WAF(Web Application Firewall) 제공SSL/TLS 인증서 무료 제공DNS 서비스 무료 제공한국 리전(ICN) 사용 시 주의사항Cloudflare는 전 세계 300개 이상의 데이터센터를 보유하고 있으며, 한국에는 인천(ICN)에 데이터센터가 위치해 있다. 하지만 무료 플랜 사용 시 다음과 같은 문제가 발생하는데..리전 강제 할당무료 플랜의 경우 대부분 LAX(로스앤젤레스) 리전으로 강제 할당한국에서 접속 시 물리적 거리로 인한 레이턴시 증가실제 성능 테스트 결과..
웹에서 한글 특수기호가 깨지는 현상 해결하기: '㈝' 문자를 중심으로웹 개발을 하다 보면 ㈝, ㈜, ㉾ 같은 한글 특수기호가 깨져서 표시되는 현상이 발생한다. 오늘은 ㈝ (오전) 문자를 중심으로 이 문제를 해결하는 방법을 알아보자.목차특수문자 이해하기문제 상황해결 방안구현 예시결론특수문자 이해하기문제의 특수문자 정보유니코드 코드 포인트: U+321D이름: Parenthesized Korean Character Ojeon유니코드 버전: 4.0 (2003년 4월)블록: Enclosed CJK Letters and Months (U+3200 - U+32FF)스크립트: Hangul (한글)카테고리: Other Symbol (So)문제 상황아래 글을 읽다가 특수문자가 깨진 것을 발견했다. PC마다 정상 출력되거나..
올해 1월 OpenAI 에서 GPT 스토어(GPTs)를 출시하였는데 ChatGPT 와 외부 리소스를 연동하여 ChatGPT 의 활용폭을 좀더 넓힐수 있다. 난 크롤링한 해외 뉴스 데이터를 번역하여 내용을 요약, 큐레이션을 해보고 싶었고 금전적인 이유로 OpenAI API 를 쓸지 Gpts 를 활용할지 고민이 있었다. (사실 비용이 좀 들어도 상관없다면 OpenAI API 를 활용하는게 가장 깔끔하다.) 결국 Gpts 도 경험해볼겸 api 서버와 Gpts 를 연동해보았다. (GPT Plus 이용자만 GPTs 사용이 가능하다.) 1. GPTs 생성 화면으로 이동 2. GPTs 설정 instruction 에 작업내용에 대한 지시를 할 수 있다. GPTs 는 웹 브라우징이 가능하고 DALL·E 를 활용한 이미..
사용자 메뉴얼을 위키 형태로 만들어야 할 일이 있었는데 어떻게 구축할지 고민이 있었고 요구사항은 다음과 같았다. - 버전관리가 되면 좋겠다. - 간편하게 구현, 관리 포인트를 줄이고 싶다. (static 웹 페이지) - 관리자가 에디터로 편집 (optional) - 기존 서비스 사용자 기반 접근 권한 관리 (optional) 버전 관리는 git 으로 하면될거 같다. 그리고 optional 은 되면 좋고 안되도 괜찮은 사항이라 간편하게 구현 할수있는 것을 중점으로 알아보았다. wiki.js mkdocs sphinx 알아본 바 오픈소스로 위키를 구현할수 있는 프로젝트는 위 3가지 정도가 메이저하게 쓰이는 것 같고 특징은 다음과 같다. wiki.js - 상대적으로 복잡한 구현 DB 와 호스팅이 필요하기때문에 ..
DB 스키마에 unique 키가 걸려있는 컬럼에 중복된 값이 저장되거나 검색 결과에 나와야 할 값이 누락된 경험이 있다면 유니코드를 의심해보자. 한글과 유니코드 이 문제에대해 알아보기에 앞서 한글과 유니코드의 관계를 알아야 하는데 정리가 잘 되어있는 아래 링크를 참고하자. https://gist.github.com/Pusnow/aa865fa21f9557fa58d691a8b79f8a6d 한글과 유니코드 한글과 유니코드. GitHub Gist: instantly share code, notes, and snippets. gist.github.com 전세계 문자들을 컴퓨터에 표현하기 위해 아스키코드, 유니코드라는 코드표를 만들어 이렇게 쓰기로 약속을 하였다. 그리고 이 코드표를 참고하여 여러가지 방식으로 값을..
구글링을 잘하기 위해선 키워드와 문장을 잘 조합하여 질문을 잘 해야한다. 마찬가지로 ChatGPT 를 잘 쓰기 위해선 ChatGPT 가 답변할 내용에 대해 범위를 좁혀주고 포커싱할수 있게 질문을 잘 해야 하는데 이러한것을 prompt 라고 부른다. 이 prompt 를 정형화하고 패턴화하여 ChatGPT 를 더 효율적으로 사용할수 있는 기법들이 몇가지 있는데 이에 대해 알아보자. Persona 패턴 ChatGPT 에게 Persona (역할, 모습)을 부여하여 이에 맞게 행동하도록 유도한다. ex) 당신은 xx 회사의 시니어 개발자 입니다. 다음의 코드에서 문제점이나 개선할 점이 있으면 알려주세요. 당신은 마케팅 전문가 입니다. 다음의 슬로건을 검토하고 다른 인기 있는 마케팅 캠페인이 기반하여 마케팅 전략을..
캐시란 시간이 많이 걸리는 연산을 미리 계산해놓고 빨리 가져다 쓰거나, DB 부하를 줄이기 위해 Read 가 많이 발생하는 데이터를 캐싱해놓고 빨리 가져다 쓰는 기법이다.(write 를 위한 캐시 또한 존재) 그리고 캐시를 하는 위치에 따라 로컬캐시, 분산캐시로 나눌수 있는데 로컬캐시의 경우 자바의 ehcache 가 대표적이며 속도는 로컬캐시가 가장 빠르다. 왜냐하면 분산 캐시의 경우 별도의 서버로 외부에서 작동하기 때문에 네트워크 통신같은 오버헤드가 필연적으로 발생한다. 그럼 가장 빠른 로컬 캐시가 좋으니 무조건 로컬 캐시를 사용하면 되지 않을까? 서비스의 규모가 작고 모놀리틱하게 서버 한대로만 운영한다면 초창기엔 로컬캐시만 사용해도 문제가 없을수도 있다. 하지만 서비스가 성장함과 동시에 서버 한대로는..