본문 바로가기

분류 전체보기

Node.js 디스코드 봇 만들기 # 음성봇 - 이 강좌는 Node.js와 npm이 컴퓨터에 깔려있다는 전제 하에 작성되었습니다.전에 썼던 디스코드 챗봇 만들기에 이어서 이번에는 자바스크립트를 이용해 음성을 출력할수 있는 봇을 만들어보려 합니다. discord.js의 사용법을 모르는 분들은 여기를 먼저 읽으시면 됩니다. 모듈 설치하기 음성 기능을 이용하기 위해서는 음성관련 처리를 해주는 새로운 모듈이 필요한데요, node-opus 입니다. node-opus 말고 opusscript라는 모듈을 대신 사용할 수 있지만, 처리 효율성으로 봤을때 node-opus가 훨씬 좋습니다.package.json의 dependencies에 추가한 뒤 cmd를 켜서 npm install이라고 명령하거나, npm install node-opus를 쳐 주시면 됩니다. 다.. 더보기
자바스크립트 sleep 함수 다른 언어들에는 sleep함수가 있는데 어째서인지 자바스크립트엔 없습니다. 그 이유는, 자바스크립트가 단일 스레드(한번에 한 작업만 처리)언어이기 때문입니다. 진짜로 자바스크립트에 다른 언어같은 sleep 함수가 생긴다면, sleep하는 시간동안 다른 작업을 전혀 처리하지 못하겠죠. 페이지도 멈추고 때때로는 브라우저가 응답없음이 되기도 합니다.그렇기에 우리는 우리가 원하는대로 작동할 수 있는 sleep 함수를 만들어줄 필요가 있습니다. * 이 글을 읽을때 async function에 대해 알면 더 편합니다. 자바스크립트의 sleep 함수 만들기먼저, 자바스크립트의 비동기 함수(async function)의 await 라는 키워드에서 이용하는 Promise 객체를 만들어주는 함수여야 합니다. 그 Promi.. 더보기
C++ 람다식 익명함수 각종 라이브러리들에서 리스너, 특정 작업이 실행되었을때 발동되는 함수를 직접 하나하나 정의하지는 않고, 그대로 익명함수로 쓰는 표기법이 있어서 찾아 보았습니다. C++에서도 익명함수를 사용할 수 있더군요. 바로 "람다식" 이라는 표기법이었습니다. 람다식의 가장 쉽고 간단한 표기법C++ 람다식은 다른 언어의 람다식과 다르게 특이한 것들이 많습니다. 다른 언어들이 편하게 함수를 만들고 이용하는 데에 초점을 뒀다면, 여기서는 그저 "익명 함수"를 만들기 위한 방법인듯 합니다.이런 람다식에서 간단하게 필요한 부분만 뽑아내면 다음과 같습니다. [](매개변수) -> 리턴타입 { 실행내용 }여기서 매개변수는 함수를 정의할때 인수로 들어갈 수 있는 것들과 같은 의미이고, 리턴타입은 리턴값의 타입(int, string .. 더보기
구글 애드센스 호스팅된 계정 구글 애드센스에 메일도 오지 않았는데, 웬일인지 애드센스 수익 센터가 열려 있었습니다. 제 계정은 아니고 다른 분의 계정이었는데, 오른쪽 위에 있는 계정 선택 메뉴를 열어 보니 빨간 글씨로 다음과 같이 써있더군요. "호스팅된 계정입니다."어떤 이유로 저런 메시지가 뜨는지 인터넷을 조금 찾아보니, 구글 애드센스를 구글 블로그 같은 전용 서비스에서만 사용할 수 있는 그런 계정에 저런 문구가 뜬다고 하더라구요. 어째 광고가 다 계속 하얀색이다 했는데, 그런 이유에서였습니다.이걸 없애거나 바로 잡는 법 까지는 찾지 못했으나, 그냥 애드센스에서 호스팅된 계정이라는 문구가 뜨지 않는 계정을 사용하는 것이 가장 간단해 보이는 방법인 것 같네요. 더보기
마인크래프트 산업모드 2 다운로드 마인크래프트 산업모드 2는 1.7.10 부터, 아주 오래된 모드입니다. 플레이어가 귀찮게 해야할 일을 편리하게 자동화 해줄수 있는 기능이 아주 많고 즐길것도 많은 멋진 모드입니다. 기존 산업모드보다 훨씬 더 섬세해졌으며, 최신버전도 지원합니다.산업모드 라는 이름답게 자동화, 기존 마인크래프트의 기능에서 더 효율을 높여준 여러 기계, 원자력발전소 등을 건설/제작할수 있습니다. 전기를 저장할 수 있으며 타 모드에서 사용되는 전기와 호환되기도 합니다. 우주모드, 이머시브 엔지니어링에서 사용하는 전기와 호환되어 다른 모드의 기계까지 사용할 수 있습니다. 빌드크래프트 같은 자동화 모드들을 더 넣고 플레이할시 완전 자동화가 가능하게 됩니다. 위 사진처럼, 다른곳에서 온 아이템들을 기계에 넣어서 처리하도록 만들 수도.. 더보기
티스토리 네이버 이미지 누락 대처법 내 블로그가 네이버에 잘 노출되는지 네이버에 검색을 해 봤다.그런데, 포스트 앞에 대표이미지와 프로필이미지가 어디갔는지, 이미지들은 모두 검색에서 제외되었다. 내 티스토리 블로그에 있는 이미지가 네이버에서 누락된 것이었다.그래서 방법을 찾아보았더니.. 블로그 관리페이지에 들어간 다음, 관리 - 블로그에 들어가준다. 그리고 "기타 설정" 에서 RSS 공개방식을 "전체 공개"로 바꿔준다. 이런 간단한 방법임에도 불구하고 나처럼 잘 모르는 사람이 있을 것 같아 이 글을 올린다. 앞으로는 이런문제로 고민하는 분들이 적어졌으면. 한다. 더보기
자바스크립트 ES class 자바스크립트 자체에는 Class 가 없다. 대신 prototype을 이용한 클래스 흉내내기가 있는 것이다. prototype은 확실히 다른 객체지향 언어인 JAVA같은 것과는 다르다. 그런데 뻘짓을 하며 찾아보다 보니.. 자바스크립트 class도 존재한다는것을 알게됬다. 정말 자바스크립트 안에 완전하게 있는 건 아니고, ECMAScript라는 자바스크립트 문법 추가버전에서 사용이 가능한 기능이다.(이런거 IE가 반영할 일은 없으니 IE 쓸 생각은 때려치워라.) 자바스크립트 Classclass 클래스명 { 내용 }위와 같이 쓰면 class 생성이 끝난다. ES에는 class 라는 키워드 자체가 추가되어서, 저런식으로 정확하게 "이것이 클래스다" 라고 말해줄 수 있다.그리고 일반적으로 JS에서 만드는 fun.. 더보기
자바스크립트 eval 함수 안녕하세요! 쨈입니다!이번 포스트에서는, 제가 자바스크립트를 한창 처음 접했었을 때 정말 구원자 같았던 eval 함수에 대해 이야기를 하려고 합니다.eval 함수의 사용과 남용에 대해서도 다룰것이니, 천천히 읽어보시면 좋겠습니다. (그냥 제 블로그 사진) 제가 객체({})의 요소들을 하나하나 document 요소들에게 입력해주어야 했을 때의 일입니다. 특정 이벤트가 발생했을 때 그 객체 안에 있는 특정 요소를 딱 집어서 뭔가를 하는게 문제였는데요.그때 제가 자바스크립트 외에 다른 언어도 사실상 거의 사용하지 못하는 수준이었기에, 이해도 제대로 되지 않은 상태었기에 그저 다음과 같은 생각만 했습니다."코드 자체를 동적으로 만들자"이었는데.. 알고보니 그런 상상은 상상만이 아니라 실제 함수로 존재한다는 것을.. 더보기
마인크래프트 기차 모드 ( RTM Real Train Mod ) 마인크래프트에 기차가 있다면.. 상상해 보셨나요? 지금까지 마인크래프트에 레일을 이용한 운송수단 하면, "마인카트" 밖에 생각이 나시지 않았을 겁니다. 하지만 이 기차 모드에서는 각종 기차들을 추가해주고 덤으로 다른 운송수단까지 추가해 준답니다. 마인크래프트 안에서 기차라.. 어떨지 한번 보시죠. 기차모드 설치하기모드를 설치하는 것은 간단합니다. ( 포지를 깐 뒤 마인크래프트를 한 번 실행한 상태여야 진행할 수 있습니다. )먼저 %appdata%\.minecraft\mods 를 쳐서 모드들이 있는 폴더에 들어가 줍니다. 그리고, 다운받은 두 개의 모드 파일들을 압축해제 하지 말고 그대로 넣어 줍니다. 실행이 잘 됩니다. 그리고 맵에 들어가 보면, 이런식으로 위에 주의 문구가 하나 뜰 겁니다. "Pleas.. 더보기
JAVA 접근 제한자 JAVA에는 접근 제한자, 또는 접근 제어자 라고 불리곤 하는 특별한 요소들이 있습니다. 이들은 프로그램에서 실제로 작동되는 코드가 아니면서도, class 안에서나 외부에서 영향을 많이 끼치는 녀석들입니다. 접근 제한자는 말그대로 무언가를 어디까지 접근할 수 있게 하겠냐를 정의해주는데요. 각각 접근 제한자의 사용법과, 어디까지 제한하는지 그리고 어떤 것들을 제한해줄수 있는지 알아봅시다. JAVA 접근 제한자 사용법 접근 제한자들을 알아보기 전에, 각종 접근 제한자를 실제로 사용하는 법에 대해 알아 봅시다. 접근 제한자들은 final 혹은 static 처럼 변수 또는 함수명 앞에 붙어서 사용됩니다.12345678910 public class classOne { public classOne() { } pri.. 더보기