개발/기술
-
jupyter notebook 소개개발/기술 2018. 8. 4. 11:58
파이썬은 라이브러리가 많다는 것이 무궁무진한 장점인데 정작 개발할 때는 어떤 함수가 있고 그 함수를 사용하려면 어떤 인자가 필요한 건지 알지 못해 난감한 경우가 있다. 물론 구글 검색을 통해서 알 수 있지만 궁금한 함수가 한 두개가 아닌 경우에는 매번 검색으로 알아보는 것도 꽤 일이다. 이럴 때는 jupyter-notebook을 사용하면 편리하다. jupyter notebook은 C를 처음 배울때 사용했던 비주얼 스튜디오처럼 객체에서 사용가능한 함수들을 쭉 나열해주고 함수가 어떤 역할을 하며 사용할 때 필요한 인자는 무엇인지 뽑아준다. 매번 선언이 안된 함수를 사용해서 (나처럼) 붉은 에러 메시지를 뿜어내는 사람에게는 필수 소프트웨어 툴이다. pandas 모듈에서 사용가능한 함수들을 출력하고 필요한 인자..
-
URI (Uniform Resource Identifier)개발/기술 2018. 7. 2. 22:34
URI (Uniform Resource Identifier) 현재 URI을 간략하게 소개하는 글을 쓰기 위해 접속한 티스토리 에디터의 주소는 이렇다. http://kwony91.tistory.com/admin/entry/post/?type=post&returnURL=/manage/posts/ 위 주소를 가지고 URI을 이루는 요소에 대해서 간단히 알아보자 1. 스키마(Scheme) 주소 맨 앞에 있는 "http://" 은 많이들 봤을 것이다. 이것 말고도 https도 있고 개발하는 사람들은 ftp, ssh도 봤을 것이다. 일할 때는 특별한 명칭 없이 "http에요? https에요?"라고 말하곤 했는데 전문적인 용어로 스키라(Scheme)라고 부른다. 스키마의 역할은 웹브라우저나 스마트폰 같은 일종의 클라..
-
libgdx - Viewport개발/기술 2018. 6. 22. 21:49
Viewport 정의/종류 Renderer 클래스를 통해 화면에 그려진 결과물을 게임 스크린의 크기에 맞춰 비율을 조정할 수 있는 객체다. 여러 가지 종류가 있는데 이번 포스트에서는 대표적인 세개만 다루고자 한다. 1. StretchViewport 렌더링 결과물을 화면 크기에 맞춰 재조정 해주는 객체다. 주로 윈도우 그림 파일의 가로/세로 크기를 임의 조정할 때 볼 수 있는데 글로 설명하는 것보다는 그림을 보는게 훨씬 이해하기 쉬울 것 같다. 코드상에서는 화면 중앙에 동그란 원을 그렸는데 게임 스크린의 가로 길이가 세로보다 길어 화면 비율에 맞추다보니 원이 타원형으로 보여지고있다. 사각형도 정사각형을 그렸는데 실제로 보이는건 가로가 더 긴 직사각형이다. 2. FitViewport 화면 비율에 따른 재조정..
-
libgdx - Renderer개발/기술 2018. 6. 22. 21:12
ShapeRenderer 컴퓨터 그래픽 소프트웨어에서 '렌더링'은 이진화된 데이터를 컴퓨터 내에 영상을 만들어내는 과정을 뜻한다. 게임 엔진인 libgdx에서도 렌더링 개념을 사용하며 객체 지향적인 관점으로 활용하기 위해 ShapeRenderer라는 클래스를 만들었다. ShapeRenderer 는 화면을 그리기 위한 객체로 개발자가 만들어둔 데이터를 다양한 API를 이용해화면에 출력해주는데 사용된다. ShapeRenderer renderer; @Override public void create() { renderer = new ShapeRenderer(); 실제 클래스의 내부를 보면 public으로 선언된 함수가 많은데 이중 대부분이 화면에 그리기 위해 사용 할 수 있는 API 들이다. 목적에 따라서 함..
-
Libgdx - 소개 및 주요함수 정리개발/기술 2018. 6. 20. 20:52
Libgdx는 오픈소스로 운영되는 게임엔진이다. 주로 2D용 게임을 개발하는데 사용하며 Mac과 Windows에서만 사용할 수 있는 Unity와는 다르게 Ubuntu 환경에서도 사용할 수 있어 개발하기 편리하고 개발한 코드가 Android, IOS, Desktop 환경에서도 동시에 사용 할 수 있는 cross platform 툴이다. 다만 Unity처럼 강력한 GUI 기능을 제공하지는 않고 직접 코드를 이용해서 일일이 그리는 원시적인 방법을 채택해 초심자들에겐 어려울 수 있으나 반대로 생각하면 무거운 기능을 줄이고 가능한 가볍게 만들었기 때문에 성능이 좋고 새로운 기능을 자신의 입맛에 맞게 추가 할 수 있어 능숙한 개발자들에겐 높은 자유도를 주기도 한다. 공식 홈페이지에 올라온 libgdx 게임은 아래와..
-
objdump 를 이용한 바이너리 깨보기개발/기술 2018. 5. 29. 23:02
개발하다보면 보안이나 라이센스의 이유로 코드는 없고 빌드된 바이너리만 가지고 있는 경우가 간혹 있다. 그런데 이 바이너리의 의사코드도(pseudo code)나 사용한 API 문서도 없고 바이너리를 만든 사람으로부터 어떠한 지원도 받을 수 없는 극한의 상황에서 반드시 바이너리에 포함된 API를 이용해서 무언가를 만들어야 한다면 개발자로선 참 난감한 상황일 것이다. 이런 개발자를 위해서(?) 컴파일러에서는 objdump라는 옵션이 있다. 바이너리에서 원래 코드를 볼 수 있는 환상적인 옵션은 아니고, 바이너리에 있는 기계어를 어셈블리 코드로 변환해주는 옵션이다. 어셈블리 코드는 컴퓨터를 처음 배웠을 때 다들 경험 했을 것이다. 프로그래밍 언어와 기계어 사이의 중간 언어이며, 바이너리를 수행하려는 아키텍처(x8..
-
그래픽 소프트웨어, 라이브러리 정리개발/기술 2018. 5. 6. 10:27
내가 일하는 곳 옆 소파트가 그래픽 관련된 일을 하는 곳이라서 같이 회의할 때마다 wayland, opengl, surface flinger과 같은 그래픽 라이브러리 용어를 자연스럽게 흘려 듣게 된다. 처음에는 생소했지만 어느정도 시간이 지나면 이들의 역할과 각각의 상관관계를 파악하게 될 줄 알았는데 만 2년이 지나도 용어 자체만 익숙해질뿐 이해 수준은 그대로인걸 보니 의도적인 노력 없이는 안되는 것 같다. 그래서 이번 포스트를 통해 이제껏 귀동냥으로 들은 용어와 그래픽의 기초적인 동작을 정리해보려고한다. 그래픽을 공부하기전에 잠깐 화가가돼서 그림을 그린다고 생각해보자. 지금처럼 태블릿을 이용해서 웹툰을 그리는 화가가 아니라 10년전 팔레트와 붓을 이용해서 그리는 화가 말이다. 그림을 그리기 위해선 어떤..
-
Yocto 내부 파일 분석개발/기술 2016. 10. 2. 15:50
Yocto 프로젝트를 다운 받고 나면 c 코드는 하나도 없고 대부분 .bb, .inc로 이뤄진 스크립트 파일들이 대부분인 것을 확인 할 수 있다. 소스코드 하나 없이 위 파일들만 있으면 설정한 보드에서 동작하는 이미지가 나온다는 것이 신기하기도 하다. 눈치를 챈 사람들도 있겠지만 이 .bb, .inc 파일들은 스크립트이다. 이미지를 만들 때 필요한 소스 코드들을, 어디서 읽어올 것인지 (do_fetch)어떤 설정을 줄 것인지 (do_configure)어떤 컴파일 명령을 줄 것인지 (do_compile)어디에 설치 할 것인지(do_install)에 대한 정보들을 담고 있다. 잘 생각해보면 위의 작업들은 우리가 특정 파일들을 다운받고 빌드 할 때까지 이뤄지는 작업들과 굉장히 유사하다. 예를 들면 linux ..