일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 개발노트
- Android
- C
- error
- CPP
- Java
- plugin
- jetbrains
- rubymine
- JS
- 루비
- Vane
- OTLanguage
- OAuth
- react
- kotlin
- Python
- maven
- boj
- gnuplot
- IntelliJ
- gradle
- Spring
- GitHub
- ruby2d
- Baekjoon
- Godot
- Shell
- ruby
- RaspberryPi
- Today
- Total
목록Language (76)
PersesTitan(페르) 기술블로그
Set has set.has(); set에 값을 포함한다면 true를 반환하고 값이 존재하지 않는다면 false를 반환합니다. List includes list.includes(); list에 값을 포함한다면 true를 반환하고 값이 존재하지 않는다면 false를 반환합니다.
HALF_UP(반올림) 예시 코드 BigDecimal a1 = new BigDecimal("10"); BigDecimal a2 = new BigDecimal("3"); BigDecimal b1 = new BigDecimal("10"); BigDecimal b2 = new BigDecimal("6"); System.out.println(a1.divide(a2, 2, RoundingMode.HALF_UP)); System.out.println(b1.divide(b2, 2, RoundingMode.HALF_UP)); 출력 본래 값 1.66666666666666.... 3.33333333333333.... 3.33 1.67 초기값결과 5.5 5 2.5 2 1.6 2 1.1 1 1.0 1 -1.0 -1 -1.1 ..
전 파서와 파싱을 난해한 프로그램 언어(OTLanguage)를 만들면서 알게 되었는데요. 그래서 파싱과 파서에 대해서 설명을 간단하게 적게 되었습니다. 파싱 (Parsing) 파서를 알아보기 전에 파싱을 알아보겠습니다. 파싱은 특정 패턴이나 순서등을 추출하여 컴퓨터가 알아들을 수 있게 바꾸어주는 작업을 말합니다. 예시로 간단한 사칙연산을 사용해보았습니다. (OTLanguage 문법 입니다.) 12.34 ㅇ+ㅇ (32 ㅇ/ㅇ 34) ㅇ+ㅇ 34234 위 문법을 구문 트리로 만들면 아래와 같은 구문 트리가 만들어지게 됩니다. 이렇게 토큰으로 분리되어 각 문장을 컴퓨터가 인식할 수 있게 만드는 작업을 하는 것 입니다. 사칙연산을 위해서는 이여야 하는데 만약 와 같이 규칙에 맞지 않는 규칙이 들어가 있다면 변환..
[Ruby] 루비로 게임 제작해보기 6: 물체 통과 막기 [Ruby] 루비로 게임 제작해보기 6-1: 물체 통과 막기 지금까지 이동하는 로직을 구현했으므로 게임의 진행하고 끝나는 로직을 구현할려고 합니다. 코드 direction.rb 6-1코드 유지 start.rb require 'ruby2d' require_relative 'direction' check_in = lambda do |o1, os, x, y| os.each do |o| if Direction.check o1, o o1.x, o1.y = x, y end end end set title: "Game" @width = get :width @height = get :height @is_finish = false # 장애물 block = [] #..
[Ruby] 루비로 게임 제작해보기 6: 물체 통과 막기 (현재 입력된 방향키를 확인하기 쉽게 좌측 상단에 입력된 방향키가 보이도록 임시로 넣었습니다.) 아래와 같이 벽에 완전히 붙어있을때 움직일 수 없는데 벽에 붙어 있을때도 닿아 있는 것으로 인식되므로 움직일 수 없기 때문에 해당 부분을 해결해볼려고 합니다. 코드 이전에 사용했던 Direction모듈은 같이 사용했지만 너무 길어서 저는 따로 다른 파일로 빼서 사용하기로 했습니다. direction.rb # 방향을 정하는 모듈 module Direction LEFT = "left" RIGHT = "right" TOP = "up" UNDER = "down" def Direction.move(e, o, speed = 1) case e.key when LEF..
objdump는 C언어를 컴파일한 실행파일을 어셈블리어로 보여줄 수 있게하는 GNU 바이너리 유틸리티 입니다. 코드 간단한 예제 코드를 만들어서 실행해보았습니다. #include int main() { printf("안녕하세요."); return 0; } 실행 macos를 사용할때 objdump가 없다면 xcode를 깔아야합니다. 저는 CLion을 사용하였는데 저랑 같은 CLion이라면 cmake-build-debug/CMakeFiles/프로젝트명.dir안에 .out, .o파일이 있으니 해당 디렉토리로 이동하면 됩니다. objdump -D a.out | grep -A20 main.: 0000000100003ee8 : 100003ee8: ff 03 01 d1 sub sp, sp, #64 100003eec:..
[Ruby] 루비로 게임 제작해보기 4: 키보드로 이동 구현 [Ruby] 루비로 게임 제작해보기 5: 상대 위치로 이동 4번째 키보드로 이동 구현에서 이미 통과 막는 기능은 구현했었지만 사실 해당 기능은 문제가 1개 있는데요. 시작 좌표만 물체에 못들어가게 해두었기 때문에 아래와 같이 시작 좌표만 안 닿으면 통과를 할 수 있습니다. 코드 사실 크게 바뀐 내용은 없고, 코드가 길어져서 람다식에 넣어두었던 해당 좌표가 닿았는지 확인하는 로직을 Direction모듈을 이동시켰습니다. # 방향을 정하는 모듈 module Direction LEFT = "left" RIGHT = "right" TOP = "up" UNDER = "down" def Direction.move(e, o, speed = 1) case e..
나머지 이용 1로 나누고 나머지가 존재한다면 소수점값이 있다는 의미이므로 해당 원리를 이용하여 값이 정수값인지 확인할 수 있습니다. 코드 public boolean isInteger(double num) { return num % 1 == 0.0; } 정수 변환 값이 정수라면 정수형으로 변환하더라도 값이 같다는 원리를 이용한 방법입니다. 코드 public boolean isInteger(double num) { return num == (int) num; } 소수점 버림 이용 소수점 버림, 올림, 반올림 무엇을 사용해도 상관 없습니다. 해당 동작후 원래 값과 일치하는 여부로 해당 값이 정수인지 확인합니다. 코드 public boolean isInteger(double num) { return Math.f..
[Ruby] 루비로 게임 제작해보기 4: 키보드로 이동 구현 오프젝트를 생성할때 위치를 절대 위치로 위치를 구해야하는데 상대 위치를 이용하여 객체의 위치를 지정할 수 있게 할 수 있도록 하는 기능을 구현하였습니다. 코드 # 방향을 정하는 모듈 module Direction LEFT = "left" RIGHT = "right" TOP = "up" UNDER = "down" def Direction.move(e, o, speed = 1) case e.key when LEFT ; o.x -= speed when RIGHT ; o.x += speed when TOP ; o.y -= speed when UNDER ; o.y += speed else return end end # @o1 : 기준이 될 객체 # @o..
[Ruby] 루비로 게임 제작해보기 3: 키보드 입력 키보드 입력을 받는 법을 알았으니 다음으로는 키보드를 이용하여 이동하는 부분을 구현하였습니다. 이동하면서 벽을 통과하기도 하였으니 벽을 통과하지 못하게 막는 기능도 구현하게 되었습니다. 코드 # 방향을 정하는 모듈 module Direction LEFT = "left" RIGHT = "right" TOP = "up" UNDER = "down" def Direction.move(e, o, speed = 1) case e.key when LEFT o.x -= speed when RIGHT o.x += speed when TOP o.y -= speed when UNDER o.y += speed else return end end end require 'ru..