ChatGPT Simple Tarot ( GPT로 타로점 보기 )

ChatGPT Explore 을 사용해 타로점을 볼 수 있는지 만들어봤습니다.  https://chat.openai.com/g/g-onek4lFk5-simple-tarot-gpt 현재 Explore 기능은 GPT 유료 사용자만 사용이 가능합니다. 질문을 입력하면 타로 카드를 세 장 뽑아서 해석해 줍니다. 미리 입력된 규칙을 사용해 질문에 답변하는 간단한 구성입니다.

안드로이드 Gmail 앱에서 Outlook 메일 연동시 삭제 안되는 문제 해결

이미지
 최근에 안드로이드 폰으로 바꾸면서 Gmail 앱을 사용하게 되었습니다.  제가 사용하는 메일에는 Outlook 메일도 있어서 외부 메일 계정으로 연동한 상태입니다.  Gmail 앱에서 Outlook 메일 확인은 잘 됩니다.  하지만, 메일을 삭제하고 목록을 새로고침하면 삭제된 메일들이 그대로 남아있는 문제가 있었습니다.  해당 문제를 확인해 보니 아래와 같은 글을 찾을 수 있었습니다.   https://support.google.com/mail/thread/3947624/my-hotmail-accound-on-my-gmail-app-will-not-delete-emails-very-annoying?hl=en  스크롤을 내려 마지막 댓글에 해결 방법이 있습니다.  Outlook 메일을 보면 "지운 편지함" 말고, "Trash" 라는 별도의 폴더가 있습니다.   이 폴더를 제거하면 됩니다.  저는 이미 지워서 "지운 편지함"에 들어가 있습니다.  이후에는 앱에서 삭제하면 잘 지워집니다.  아마도 Gmail에서 삭제를 했을 때 사용되는 휴지통인 trash 와 충돌이 나서 문제가 있었던 것 같습니다.

반올림된 금액의 총합이 증가하는 문제

 4원을 두 사람이 각각 62.5%, 37.5% 나누어 가지는 상황입니다.  받는 금액은 2.5원, 1.5원이 되는데, 이 금액을 표시하는 페이지가 있다고 했을 때, 시스템적으로 소수점을 표시하지 않는다고 하면 어떻게 해야 할까요?  버림을 하게 되면 2원, 1원 표기가 되고, 합계는 3원이 되어 이상하게 보입니다.  올림을 하게 되면 3원, 2원 표기가 되고, 합계는 4원이 되어 이 또한 이상합니다.  반올림을 하면? 둘 다 .5로 끝나기 때문에 올림을 한 것과 같은 결과가 나오게 됩니다.  이 문제를 어떻게 처리하나 찾아보니 '은행원의 반올림'이라는 것을 알게 되었습니다.  이 방식은 반올림을 할 때, 5의 경우 윗자리 가장 가까운 짝수로 처리한다는 것입니다.  즉, 5는 0, 15는 20, 25는 20, 35는 40, 이런 식으로 처리하는 것입니다.  이 방식을 사용위 위의 소수점을 처리한다면 2.5원, 1.5원은 2원, 2원으로 표기되며 총 금액이 4원으로 맞게 됩니다.  하지만 '은행원의 반올림'에도 문제가 있습니다.  일단 2.5원을 받을 사람이 자신의 금액에 2원이라고 되어 있으면 기분이 나쁘겠죠.  금액이 적어진 것도 그렇지만 누구는 버림을 하고 누구는 올림을 했으니 공평하지 않다고 생각할 겁니다.  그리고, 두 사람이 50%로 공평하게 나눈다고 하면 근본 문제가 해결되지 않습니다.  3원을 둘로 나누어 1.5원씩 나누어 가진다고 했을 때, 이 금액은 "은행원의 반올림'을 해도 2원씩 표시되어 총 금액이 원금인 3원보다 높은 4원이 표시됩니다.  결국에는 이런 부분에서는 시스템적으로 반올림 사용을 최소화 하는 게 답이 아닐까 생각하게 됩니다.

알파벳 순서 외우기 앱

이미지
 영어 단어 외우는 것과 별개로 알파벳 순서를 중간에서 바로 떠올리려고 하면 버벅댈 때가 있습니다.  특히 알파벳 오름차순이나 내림차순으로 되어있는 목록을 찾을 때(예를 들면 책으로 된 영어사전이라던가...) 바로 떠오르지 않아 답답한 경우가 있어서 앱을 하나 만들었습니다.  표시되는 알파벳을 보고 다음이나 이전 알파벳을 선택하는 단순한 게임입니다. https://play.google.com/store/apps/details?id=com.nextcharactergamenew1cm  ***아이폰 개발 환경은 갖추고 있지 않아서 안드로이드만 올라가 있습니다.***

자신을 제외한 최대 약수 구하기

 코딩테스트에서 자신을 제외한 최대 약수가 필요한 부분이 있어 구글 검색 후 만들어본 javascript 함수입니다. function getLastDivisor(num) { var divisor = 1; if (num > 1) { for (var i = 2; i <= Math.sqrt(num); i++) { if (num % i === 0) { divisor = num / i; break; } } } return divisor; }  구글 검색에서 나온 약수를 구하는 방식은 다음과 같습니다.  어떠한 수의 제곱근을 가지고 1차로 약수를 구합니다. 1차로 구한 약수로 입력한 수를 나누어 나머지 약수를 구합니다.  위 방법에서 자신을 제외한 최대 약수가 필요했기에 1차 약수에서 1을 제외하여 입력한 수 자신을 제외하고, 그 다음으로 큰 약수를 구하면 바로 반복문을 나오도록 했습니다.

띄어쓰기 간격, 영어의 자간이 크게 벌어지는 경우

이미지
 텍스트 에디터나 브라우저에서 글을 쓸 때 한글의 띄어쓰기 간격이 넓어졌거나 영어의 자간이 넓어졌다면, [ Alt ] + [ = ] 단축키를 눌러보자.

자바스크립트 초기화된 배열 만들기

 자바스크립트에서 특정한 값으로 초기화된 배열을 만드는 방법은 아래와 같습니다. const arr1 = new Array(10).fill(0); // [0,0,0,0,0,0,0,0,0,0] const arr = new Array(10).fill().map((value, index, array) => index + 1); // [1,2,3,4,5,6,7,8,9,10]  'new Array(10)'를 사용해 길이가 10인 비어있는 배열을 만들 수 있습니다.  '.fill()'을 사용하면 단일 값으로 배열 내부를 채울 수 있습니다. '.fill(0)'이나 '.fill(null)'처럼 원하는 값을 넣을 수 있습니다.  단일 값이 아니라 순차적으로 변하는 값으로 초기화를 하기 위해서는 이어서 '.map()'을 사용하면 됩니다. 인자값에 함수를 정의하면 함수의 반환 값으로 새로운 배열을 만들어 반환합니다.  주의할 점은 'new Array()'를 사용해 만들어진 빈 배열은 '.map()'이 돌아가지 않습니다. '.fill()'을 사용해 어떤 값이라도 먼저 초기화를 해야 '.map()'이 돌아갑니다.

한컴 한글 문서 작성 시 곧은 따옴표 고정하기

이미지
 한컴2020 프로그램을 사용하면 한글과 영어 입력에 따라 따옴표의 모양이 다릅니다.  한글, 영문 상관없이 모두 곧은 따옴표로 나오게 하기 위해서는 입력기 환경 설정에서 현재 글자판, 제 1 글자판, 제 2 글자판 을 '윈도우 입력기'로 설정하면 됩니다.  해당 창 단축키는 Alt + F2 입니다.

Node.js로 윈도우 바로가기 실행

 Node.js의 child_process.spawn을 사용해 외부 프로그램을 실행할 때 실행파일의 바로가기를 사용하려고 합니다.  하지만, 바로가기 파일을 그냥 호출하면 오류가 발생합니다. 그때는 아래 코드와 같이 'shell: true'옵션을 설정해야 합니다. // Node.js v14.x const { spawn } = require('child_process'); spawn('C:/Users/my/Desktop/Program.lnk', args, { shell: true });  윈도우 바로가기의 파일 확장자인 '.lnk'를 꼭 붙여야 하며, 실행시 인자값이 없는 경우는 args에 null을 넣으면 됩니다.  관련된 질문 페이지 :  https://stackoverflow.com/questions/41497183/spawning-a-lnk-windows-shortcut-with-node-js-gives-unknown-error  child_process.spawn 공식 문서 :  https://nodejs.org/dist/latest-v14.x/docs/api/child_process.html#child_process_child_process_spawn_command_args_options

브룩(Brook) 어댑터 배터리 교환

이미지
 브룩(Brook) 어댑터를 닌텐도 스위치에 사용하고 있습니다.  마이크로 5핀을 사용하는 xbox one 컨트롤러에 결합하여 사용하는 물건입니다.  오래된 물건이라 며칠 전부터 충전 선을 뽑으면 1~2분 있다가 전원이 나가버리더군요.  인터넷을 검색하니 배터리 교환이 가능한 것 같아서 저도 시도해 봤습니다.  분해는 간단해서 양옆에 나사만 돌리면 됩니다.  조심스럽게 분해를 하면, 기존 배터리가 나옵니다. 적힌 내용은 IP652540 3.7V 800mAh 2.96Wh LB  입니다.  크기를 재보니 무언가 어중간한 수치입니다. 검색하면서 보니까 이름에 있는 652540이라는 숫자가 정해진 치수 같더군요.  65는 두께로 0.1mm 단위로 6.5mm, 25는 1mm 단위로 25mm, 40은 1mm 단위로 40mm입니다.  배터리의 어디를 가로로 봐야 하는지 모르겠지만 전선이 붙어있는 기판이 있는 부분을 위로 향하고 봤을 때, 두께 6.5mm, 가로 25mm, 세로 40mm 배터리를 찾으면 됩니다.  요즘은 취미로 작은 장치를 만드는 사람들이 많아서 그런지 ‘리튬폴리머 배터리’를 검색하면 다양한 크기를 팔고 있더군요.  하지만 해외는 같은 크기가 있는 것 같은데, 국내는 찾지 못했습니다.   해외 물건은 배송 기간도 그렇고, 뭔가 불안하기도 해서 용량은 작아도 국내에서 비슷한 크기의 배터리를 찾아봤습니다.  좀 찾아보니 602540 550mAh 제품을 찾았습니다. ( https://smartstore.naver.com/powerland/products/2466362502 )    3.7V 전압은 같고,  550mAh라 기존에 있던 800mAh보다 40% 정도 용량이 작네요.  250쯤이라고 생각했는데, 지금 보니 무시할만한 수치는 아니군요. 그래도 그냥 샀습니다. 비슷한 크기에 다른 용량은 못 찾았고, 국...

PHP에서 종료 태그를 빼는 이유

 '<?php'로 시작하는 PHP 파일에서 종료 태그인 '?>'를 생략하는 것은 단순히 편하기 때문이 아닐까 생각했습니다.  문득 정확한 이유가 있을까 찾아보니, 좀 더 명확한 이유가 있었습니다.  종료 태그를 넣은 다음에 실수로 공백이나 줄 바꿈이 추가되면 뜻하지 않은 문제가 발생할 수 있기 때문에 이를 방지하기 위함이라고 합니다.

PHP에서 JSON 변환시 빈 객체 만들기

 PHP에서 JSON형식으로 '{}'값을 반환해야 하는 상황이 생겼습니다.  지금까지 연관배열을 사용해 JSON을 만들었는데, 아무것도 들어있지 않은 값은 '[]' 형태의 배열이 반환됩니다.  찾아보니 JSON으로 변환 할 때 '{}'를 만들기 위해서는 'new stdClass()'로 빈 객체를 넣어주라고 합니다. $empty = []; echo json_encode($empty); // "[]" $empty = new stdClass(); echo json_encode($empty); // "{}"

윈도우에서 권한 문제로 폴더가 삭제되지 않을 때

검색해서 찾은 페이지 링크. https://syuda.tistory.com/146