본문 바로가기

프로그래밍

Node.js agar.io 서버 열기 예전에 한창 유행했던 게임인 Agar.io를 아시나요? 국내에서는 '세포키우기' 라고 불리며 많은 사람들의 사랑을 받았는데요. 그걸 보고, 저도 한번 세포키우기 서버를 열어볼까 하는 마음에 찾아봤습니다. 역시나, 찾아보니까 agar.io를 똑같이 복제해둔 프로젝트들과 여러 문서들이 나오더군요. 그중에 가장 기본이 되는 프로젝트는 Ogar였습니다. Node.js 로 이루어진 서버 프로그램이었는데, 이 Ogar라는 프로젝트가 가장 쉽고 간단하고 빠르고 원래의 agar.io 서버에 가까운 것 같더군요.하지만, 우리는 이제 저런 것에 계속 매달릴 필요는 없습니다. 왜냐하면 게임은 그저 재미있고 빠르고 우리에게 편리하면 되기 때문이죠. 기존에 있던 것들을 무조건 고집할 필요는 없다고 생각했기에, 저는 조금 더 찾.. 더보기
Bitnami WAMP 비트나미 설치하기 PHP 서버를 운영하기 위해서는 어떤 과정이 필요할까요? 대표적으로 Apache가 필요하겠고.. MySQL 같은 데이터베이스도 깔아야 되고.. 두개를 또 연동시켜야되고.. 그저 간단한 과정 같지만 다시 생각해 보면 상당히 귀찮은 것 같기도 합니다. 이거저거 깔아야 되지, 연결시켜야되지.그래서 제가 오늘은 이런 귀찮음을 날려 버릴 수 있는 프로그램인 Bitnami를 가져왔습니다. Bitnami는 Mysql과 Apache 모두를 한번에 깔수도 있고 관리도 편리하게 할 수 있는 프로그램입니다. 그럼, 설치해봅시다. Bitnami WAMP stack 사이트https://bitnami.com/stack/wamp위 사이트에 들어간 후, 오른쪽에 있는 설치파일을 받아 주면 됩니다. 누른 뒤에 무슨 창이 뜬다면, 그냥.. 더보기
JAVA 디스코드 봇 챗봇 만들기 - 2. 개발하기 저번 글에 이어서 이번에는, 디스코드 봇을 직접 만드는 법에 대해 알려드리려 합니다. 혹시라도 이전 글을 안보신 분들은 여기를 먼저 읽으신 후 다시 오시길 바랍니다.그럼, 시작해 보죠.JAVA로 디스코드 봇 만들기 어떤 JAVA 프로젝트던, 자바의 모든 것을 이루는 '클래스'는 필요합니다. 먼저 기본 클래스(메인 클래스)를 생성합시다. 현재 우리가 해야 되는 일은 특별한 뭔가를 상속받거나 한 class를 만드는 것은 아니고, 그냥 코드가 실행되게 하기 위한 클래스를 만드는 것이기 때문에 그냥 아무것도 없는 클래스를 만들거나 main 함수가 있게 해 주는 기능이 있다면, 그걸로 만들어 주면 됩니다. 그럼, 간단한 예제와 함께 시작해볼까요? API 사용하기 1234567891011121314151617181.. 더보기
JAVA 디스코드 봇 챗봇 만들기 - 1, 라이브러리 설치 ( Node.js로 디스코드 만들기 링크 )안녕하세요! 저번에는 디스코드 봇을 Node.js 로 만드는 법애 대해 이야기해 보았는데요. 이번에는, JAVA를 이용해서 디스코드 챗봇을 만드는 방법에 대해 알려드리려 합니다.Node.js처럼 그냥 뭐뭐 깔고 바로 끝나는 수준의 간단함 까지는 아니어도, 생각보다 편리한 라이브러리 덕에 작업을 빠르게 할 수 있었답니다. 그럼, 보시죠! Maven 프로젝트 만들기Node.js 에는 npm 이라는 모듈 네트워크가 있듯이, JAVA에는 Maven 이라는 라이브러리 네트워크가 있습니다. 우리가 사용할 javacord 라는 라이브러리도 이 기능을 통해 불러올 것인데요.그런 네트워크를 사용하기 위해선, Maven 프로젝트를 먼저 만들어주어야 됩니다. Eclipse 기준으로.. 더보기
Node.js 디스코드 봇 챗봇 만들기 디스코드 봇이라고 들어보셨나요? 디스코드 봇은 특정 디스코드 채팅방에 관리자가 초대를 해, 그 채팅방에서 특정 기능을 도와주거나 하는데요. 이런 봇들을 만들기 위해서는 Discord API 페이지를 세심히 읽어보고 여러가지를 해 주어야 하는데요. 처음 접할 때에는 많이 힘들 것입니다. 하지만, 확장성이 뛰어나고 변화가 빠르고, 잠깐 동안 몇십개의 모듈이 생산되는 'Node.js'를 사용하는 분들은, 그렇게 힘든 삽질을 하지 않아도 될 것 같습니다. 벌써 디스코드 봇 모듈이 나왔거든요!그럼, 이 모듈을 어떻게 사용하는지 알아봅시다. discord.js 모듈 사용하기! Discord.js 모듈을 사용하기 전, 이 모듈을 설치해주어야 됩니다. package.json의 dependencies 항목에 추가를 하거.. 더보기
디스코드 봇 만드는법, 등록하기 최근에 새로운 통신 앱으로 뜨고 있는 디스코드에도 봇을 만들 수 있다는 것을 아시나요? 자동으로 응답을 해 주고, 사용자가 하기 힘든 무언가를 대신해서 해 주곤 하는데요.이런 봇을 제작하기 위해서는 먼저 디스코드에 '봇을 만들겠다'는 요청을 남겨 주어야 됩니다. 그럼, 어떻게 하는지 알아볼까요? Discord 개발자 페이지접속하기 개발자 페이지위 링크를 타고 들어가면, 디스코드 개발자 페이지가 나오게 됩니다. 로그인을 안 한 상태에서 들어갔다면 먼저 로그인을 해 준 후 다시 들어가면 됩니다. 들어가 보면 위처럼 My Apps라는 타이틀이 달려있는 페이지가 뜹니다. 이제 여기에서 우리가 해 주어야 될 것은, 새로운 앱을 만들기 위해 New App을 클릭하는것입니다. 클릭해 주세요. 이제, 여러분이 만들고 .. 더보기
Node.js 입력받기 Node.js에서 콘솔로 입력을 받을 일은 별로 많지 않겠지만, 각종 사이트들에서 알고리즘 문제를 풀거나 가끔 사용될 일이 있다는걸 충분히 저도 느끼기에, Node.js에서 입력을 받는 방법을 올려보려 합니다.간단히 모듈을 이용해서 구현할 수 있습니다. 그럼 알아보시죠. process.std는 그만!readline 모듈 사용하기 123456789101112131415const readline=require("readline"); const rl=readline.createInterface({ input:process.stdin, output:process.stdout}); rl.setPrompt("## "); rl.prompt();rl.on("line",(data)=>{ console.log(data);.. 더보기
자바스크립트 Infinity 바로 앞의 크기 구하기 자바스크립트에는 숫자 형식의 값에 한계가 있습니다. 그 한계를 넘어서 더 값을 많이 저장하려고 할 경우에는 값이 변형되거나 손실 또는 Infinity로 취급되어 버리는데요. (Infinity로 취급될 경우에는 값을 완전히 잃어버리는 것이죠. 값의 한계에 대해서는 여기) 그래서 제가 궁금증이 하나 생겼습니다. Infinity로 취급되기 '바로 전' 한계의 값은 몇일까 이죠. 사실 저기 위에 링크를 걸어둔 글에 들어가 보면, Number.MAX_VALUE라는 최대값을 나타내주는 상수가 있습니다. 하지만 이 값은 e가 붙었고, JS에서 정한 최대 안전값을 넘었기에 값이 변형되거나 했을 수 있기에 정확하지 못하다는 판단이 들어, 직접 프로그램을 간단히 짜 보았습니다. Infinity 바로 앞의 수 구하기 123.. 더보기
자바스크립트 Number.MAX_SAFE_INTEGER Number.MAX_VALUE 자바스크립트는 아주 편리한 언어입니다. 복잡한 실제 프로그램이 아닌 '비교적' 단순한 웹을 위해 만들어졌기에 빠르고 편리하게 이용할수 있습니다. 하지만 이렇게 편리하다는 장점 뒤에는 약간의 단점이 숨어 있는데요. 바로 '정확성'이 떨어지는 상당히 치명적인 단점입니다. 이중 가장 대표적인 것을 소개하자면, 너무나 큰 수가 들어오면 그냥 Infinity가 되버리곤 하는 것입니다.그래서 자바스크립트에는 수의 최대 한도 이상으로 값을 저장해 값이 손실되는 것을 방지하기 위해서 두가지의 상수가 존재하는데요. 첫번째는 MAX_SAFE_INTEGER이고, 두번째로는 MAX_VALUE가 있습니다. 둘이 어떤 차이점이 있고 어떻게 사용해야 하는지 알아봅시다. Number.MAX_SAFE_INTEGER MAX_SAFE_I.. 더보기
유니티 충돌 처리 방법 Collision Collider 유니티에서 오브젝트간의 충돌을 처리하는 방법에는 두 가지가 있다. 첫번째는 trigger에 의한 방법, 그리고 collision을 이용한 방법이 있다. 둘은 비슷한 용도로 쓰이지만 알고 보면 전혀 다름 개념인데, 이 글에서는 그중 collision을 이용한 방식을 소개하려 한다. 그럼, 유니티에서는 어떻게 충돌에 대한 이벤트를 처리하는지 알아보도록 하자. Collision을 이용한 충돌판정 일반적으로 생각하는 '충돌'에 관한 판정을 Collision이라는 기능이 해준다. 충돌 하면 두개의 오브젝트가 서로 부딪쳐서 튕기고.. 움직이고 그런 것을 생각할 것이다. 맞다. Collision은 물리적인 계산들을 모두 진행한다. 그 상태에서 충돌판정을 하는 것이다. 하지만 이런 특징 때문에 약간의 제한이 있는데, .. 더보기