글쓴이: wano

요르단 출장

두바이행 대한항공 비행기에는 예상 외로 빈 자리가 많았음. 두 좌석당 1명씩 앉아서 갔음. 두바이 공항은 매우 넓음. 멀리있는 게이트 까지는 버스로 이동하는데 버스 배차 간격이 짧지 않으므로 탑승 시간에 늦지 않으려면 다소 서둘러야함. 배터리 등의 위험물 반입 규정은 공항마다 다름. 배터리 등에 대한 운송 규정은 아직 단일하게 확립된 것이 없고 인천공항을 비롯한 각 공항의 수하물

MFnNurbsCurve Error with OpenMP

Non-threadsafe functionality in Maya 2014 MFnNurbsCurve evaluation, for example, point on curve computation MFnNurbsSurface evaluation, for example, point on surface computation MFnSubd evaluation MFnNurbsCurve::closestPoint() is not thread-safe. But, it is thread-safe in Maya 2016.

DJI Inspire 1 Firmware Update

  DJI Inspire 1의 최신 펌웨어는 다음 링크에서 다운로드 받을 수 있다. http://.dji.com/product/inspire-1/info#downloads   최신의 .zip 파일을 받아서 압축을 풀면 .bin 파일이 생성되는데, 이 .bin 파일을 마이크로 SD 카드의 root 위치에 복사한 후에 카메라에 삽입하고 기체의 전원을 켜면 자동적으로 펌웨어 업데이트가 시작된다. 펌웨어 업데이트는 대략 10분 정도 소요된다. 한 번 길고 두 번 짧게 계속 “띠-띠띠”

아우디 초보자를 위한 FAQ 및 팁

<아우디 브랜드>  한국에서는 벤츠, BMW, 아우디가 독일 3사로 분류되지만 TOP 2 브랜드로 벤츠와 BMW를 꼽고, 그 다음 아우디라는 인식이 있음. 한국에서의 브랜드 인지도는 벤츠>BMW>아우디 순. 심지어 벤츠>BMW>>아우디라고 하는 사람들도 꽤 있음. 한국에서는 벤츠, BMW가 먼저 들어와서 프리미엄 브랜드로 확고히 자리를 잡은 후에 아우디가 들어왔기 때문에 아무래도 후발 주자라는 이미지가 있음. 하지만, 유럽에서는 아우디에 대한 인식이

안드로이드 스튜디오 예제 8 – 가로, 세로 고정

“화면 회전” 설정이 켜져 있을 때, 안드로이드 스튜디오로 생성한 앱은 디바이스의 방향에 따라서 회전한다. 회전이 되지 않고 가로 또는 세로로 고정이 되려면 main activity의 java 파일의 onCreate() 함수 안에 다음과 같은 내용을 추가해주면 된다. 가로 고정: setRequestedOrientation( ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE ); 세로 고정: setRequestedOrientation( ActivityInfo.SCREEN_ORIENTATION_PORTRAIT );

안드로이드 스튜디오 예제 7 – 타이틀 바, 이메일 버튼 없애기

안드로이드 스튜디오를 이용해서 안드로이드 앱을 만들면 상단에 타이틀 바와 하단에 이메일 버튼이 자동 생성되는데 굉장히 꼴보기 싫다. 이번 예제에서는 이렇게 자동 생성되는 타이틀 바(Title Bar)를 삭제하는 내용을 다루려고 한다. ——————————————————————————————————– 1. 안드로이드 스튜디오를 실행하고, Start a new Android Studio project를 선택한다. 2. New Project 창이 나타나면, Application name에 BlankApplication을 입력하고 Next 버튼을 클릭한다. 3. Target

워드프레스 미디어 버튼 또는 텍스트 모드 문제

문제점) 워드프레스(WordPress) 4.4.2에서 글 편집기에서 “미디어 추가” 버튼을 눌러도 “미디어 삽입”이 뜨지 않거나, “비주얼” 모드에서 “텍스트”로 전환이 안되는 문제가 발생하였다.   해결방법) wp-config.php 파일에 다음과 같은 내용을 추가해준다. (굵은 글씨 부분) /** MySQL hostname */ define('DB_HOST', 'localhost'); /** Disable Javascript Concatenation */ define('CONCATENATE_SCRIPTS', false ); /** Database Charset to use in creating database tables. */

워드프레스 수동 재설치

워드프레스(WordPress)로 작성한 모든 글의 제목 및 텍스트는 서버에 DB로 저장되어 있고, 글을 작성하면서 업로드하여 첨부한 이미지들은 모두 wp-content/uploads에 저장되어 있다. 따라서, DB가 손상되지 않았고, wp-content/uploads만 백업이 되어 있다면 얼마든지 워드프레스를 지우고 다시 설치해도 복구가 가능하다. 1. 우선 wp-content 디렉토리를 ftp로 다운받아 저장해둔다. (가장 중요!) 2. wp-content 디렉토리 외에도 필요한 디렉토리들이 있다면 백업해둔다. 3. 그 다음

안드로이드 스튜디오 예제 6 – 프래그먼트 간 통신

예제 5에서 설명했듯이 서로 다른 프래그먼트들 끼리는 직접적으로 정보를 주고 받을 수 없다. 아마도 프래그먼트는 재사용성에 중점을 두고 설계된 요소이기 때문에 이러한 정책을 취하고 있는 것 같다. 만약 A라는 프래그먼트에서 B라는 프래그먼트의 setData()라는 함수를 호출하는 식으로 개발했을 때 , 다른 프래그먼트들에는 setData()라는 함수의 존재 여부가 보장되지 않기 때문에 재사용성에 문제가 발생할 수 있기 때문이다. 따라서,

안드로이드 스튜디오 예제 5 – 프래그먼트 간 통신

서로 다른 fragment들 끼리는 직접적으로 정보를 주고 받을 수 없다. Fragment끼리의 통신은 반드시 host activity(프래그먼트들이 바인딩되어 있는 activity)를 거쳐서 이루어져야 한다. 본 예제에서는 하나의 main activity와 두 개의 fragments를 생성할 것이다. 첫 번째 fragment에는 두 개의 Buttons를, 두 번째 fragment에는 하나의 TextView를 만들 것이다. 첫 번째 fragment의 버튼 중 하나를 클릭하면, main activity에서 버튼 클릭으로 발생한

안드로이드 스튜디오 예제 4 – 프래그먼트 교체

본 예제에서는 두 개의 프래그먼트를 생성하고 하나의 프래그먼트만 액티비티 상에 배치할 것이다. 그리고, 액티비티의 버튼을 누르면 다른 프래그먼트로 교체되도록 하는 내용에 대해서 살펴볼 것이다. ——————————————————————————————————– 안드로이드 스튜디오를 실행한다. “Start a new Android Studio project”를 선택한다. “Application name”에 “FragmentTestApplication”을 입력하고 Next 버튼을 클릭한다. “Phone and Table”, “Minimum SDK = API 22″를 선택하고 Next 버튼을 클릭한다. “Blank

View, Activity, 그리고 Fragment

안드로이드에서는 기본적인 UI 요소를 View라고 부르며, 모든 UI 요소들은 View 클래스(android.view.View)의 서브 클래스들이다. View는 크게 Widget과 Layout으로 구분할 수 있다. Button, TextView, CheckBox와 같은 시각적인 UI 요소들을 Widget(또는 Component)이라고 하고, 화면에서 보이지는 않지만 다른 View들을 담는 container 역할을 하는 것을 Layout이라고 한다. 따라서, View는 계층 구조로 생성하여 사용할 수 있으며, 이 때 계층상의 상위 View를 부모

activity_?.xml vs content_?.xml

“핵심만 골라 배우는 안드로이드 스튜디오” 책의 예제를 따라하다 보면 최신 버전(1.5.1)과는 약간 다른 내용이 나온다. 기본적으로 생성되는 “Hello World!”가 적혀있는 TextView를 선택해서 삭제하라는 내용이 나오는데, activity_?.xml이 선택되어 있을 때에는 이것이 불가능하다. content_?.xml을 선택한 상태에서만 편집이 가능한데 책 어디에서도 content_?.xml에 대한 내용은 나와있지 않다. 안드로이드 스튜디오 1.4 버전부터 디자인 방식이 변경되었다. 예전 버전에서는 activity_?.xml만 있었지만, 1.4

안드로이드 스튜디오 예제 3 – 이벤트 처리 4가지 방법

예제 1에서 버튼을 클릭했을 때의 이벤트를 처리하는 방법을 살펴보았다. 이벤트 리스너(event listener)를 이용한 방식이었는데, 이 외에도 다양한 방식으로 이벤트 처리를 할 수 있다. 본 예제에서는 예제 1에서와 동일한 방식을 포함해서 총 4가지 종류의 이벤트 처리 방법에 대해서 살표볼 것이다. ——————————————————————————————————– 안드로이드 스튜디오를 실행한다. “Start a new Android Studio project”를 선택한다. “Application name”에 “EventHandlingApplication”을 입력하고 Next

안드로이드 스튜디오 예제 2 – 구글맵

본 예제에서는 구글 맵(Google map)을 사용하는 방법을 살펴볼 것이다.안드로이드 스튜디오에서 Google Maps Activity로 설정하여 프로젝트를 생성하면 필요한 기본 코드들을 자동생성해준다.  구글 맵 API를 사용하려면 키(key)를 발급받아야 하는데, 이 역시 안드로이스 스튜디오에서 제공하는 간단한 방법을 이용하게 될 것이다. 또한, 구글 맵 API를 이용해서 지도상에서 새로운 마커와 위치도 설정해보도록 하겠다. ——————————————————————————————————– 안드로이드 스튜디오를 실행한다. “Start a new

안드로이드 스튜디오 예제 1 – 프로젝트 생성, 클래스 추가, 이벤트 처리

첫 번째 안드로이드 스튜디오 예제이다. 안드로이드 앱을 개발하려면 안드로이드 스튜디오(Android Studio)라는 프로그램을 사용해야 하는데, 안드로이드 스튜디오는 비쥬얼 스튜디오의 마법사(wizard)와 같은 기능을 제공한다. 안드로이드 스튜디오를 실행시키고 일련의 설정들을 입력해 주면 쉽게 기본적인 프로젝트를 자동으로 생성해준다. 본 예제에서는 텅 비어 있는 화면(empty activity)를 하나 생성할 것이다. 그리고, 텍스트뷰(TextView)와 버튼(Button)을 하나씩 배치하고, 버튼을 누르면 텍스트뷰의 내용이 변하도록 할

Handler, Looper, and Thread

프로그램(program)을 실행하게 되면 프로그램의 인스턴스(instance)가 생성되는데 이를 프로세스(process)라고 한다. 프로세스는 운영체제(OS)로부터 필요한 메모리 등의 리소스(resource)를 할당받고 이를 이용하여 특정 기능을 수행한다. 현존하는 대부분의 운영체제들은 동시에 여러 개의 프로로세스를 실행할 수 있는 멀티 프로세싱(multi-processing) 운영체제들이다. 하지만, 동시에 실행중인 프로세스들은 서로 리소스를 공유하지 않는다. 각각의 프로세스는 자신만의 고유한 리소스를 운영체제로부터 할당받아 독립적으로 실행되며, 프로세스 종료시 할당받은 리소스를 다시

android-22 Error

Android Studio에서 새로운 Import Module 등을 수행할 때 Error: Cause: failed to target with hash string ‘android-22’와 같은 에러가 발생할 때가 있는데, 해당 모듈에서 사용한 낮은 버선의 SDK가 설치되어 있지 않을 때 발생하는 에러이다. 에러 메시지 하단에 파란색으로 표시되어 있는 Open Android SDK Manager 문구를 클릭하여 SDK Manager를 띄운다음 필요한 이전 버전의 SDK를 체크하여 설치해주면

맥에서 안드로이드 개발 환경 설정하는 방법

Android Stduio는 Android App. 개발을 위한 통합 개발 환경(IDE)이다. Android Stduio는 Windows, Mac, Linux에서 모두 사용이 가능하지만 여기에서는 Mac에서의 개발 환경 설정에 대해서만 설명한다. Android SDK는 Java 언어를 사용하기 때문에 Android App.을 개발하기 위해서는 우선 Java JDK를 설치해야 한다. Java JDK는 다음 경로에서 구할 수 있다. 이곳에서 가장 최신 버전의 Java JDK를 다운받아서 설치하면 된다. http://www.oracle.com/technetwork/java/javase/downloads/index.html 만약 이미

C++11 Move Constructor

#include <iostream> #include <vector> using namespace std; class A { public: float x; public: A() : x(0.f) { cout<<"Default Constructor"<<endl; } A( const A& a ) : x(a.x) { cout<<"Copy Constructor"<<endl; } A( const A&& a ) : x(a.x) { cout<<"Move Constructor"<<endl; } A( float _x ) : x( _x ) { cout<<"Class Constructor"<<endl; }

Maya Context에 대하여…

Context란 마우스의 이벤트에 반응하여 어떠한 특정 작업 수행이 가능한 Maya의 특수 모드를 말한다. Maya에서 context는 tool과 동일한 개념으로 사용된다. 다만, graphical user interface 기준에서는 tool이라고 부르고, programming interface 기준에서는 context라고 부른다. setToolTo [context name]으로 특정 컨텍스트 모드로 들어갈 수 있다. currentCtx: 현재 어떠한 컨텍스트 모드에 있는지 알 수 있는 명령어. 다음과 같은 세 가지 API

How does Maya treat UV tweaks?

// Create a poly plane mesh; polyPlane -ch 1 -w 10 -h 10 -sx 10 -sy 10; // Create a empty mesh to be used as an output. createNode mesh; // Connect pPlaneShape1 to polySurfaceShape1. connectAttr pPlaneShape1.w polySurfaceShape1.inMesh; 위의 MEL script를 실행하면 다음과 같은 DG graph가 형성된다. 이 때, output mesh인 polySurfaceShape1의 uv는 다음과 같다.

Tweak data stored in mesh shape node

// create a unit plane mesh polyPlane -sw 1 -sh 1 -w 1 -h 1; // move the 1st vertex to (0,1,0) move -r 0 1 0 pPlane1.vtx[0]; // world position of the 1st vertex: (-0.5,1,0.5) pointPosition pPlane1.pnts[0]; // tweak vector of the 1st vertex: (0,1,0) getAttr pPlane1.pnts[0]; // reset the tweak vector of the

When compute() of a custom node isn’t called right after loading scene file

Custom node가 있는 Maya scene file을 save한 후 다시 open했을 때, auto-update가 되지 않는 문제가 발생하는 경우가 있다. ASCII 형식(.ma) 파일로 저장한 후 내용을 보면 custom node의 output attribute가 이상한 값으로 저장되어 있는 경우에 이러한 문제가 발생한다. 예) setAttr “.output” 1.4012984643248171e-44 이러한 문구를 없애주면 정상적으로 load되는 것을 확인할 수 있다. 해결 방법은 output attribute는 저장되지

How to install BLAS and LAPACK using source codes

1. Download lapack-3.5.0.tgz (http://www.netlib.org/lapack/#_lapack_version_3_5_0_2) 2. tar xvf lapack-3.5.0.tgz 3. cd lapack-3.5.0/BLAS/SRC 4. gfortran -c -o3 *.f 5. ar rv libblas.a *.o 6. cp libblas.a /usr/local/lib 7. cd ../../SRC 8. gfortran -c -o3 *.f 9. ar rv liblapack.a *.o 6. cp liblapack.a /usr/local/lib

Heap Memory Size for Cuda

#include <iostream> using namespace std; #include <cuda.h> #include <cuda_runtime.h> int main( void ) { cudaError_t stat = cudaSuccess; int devCount = 0; cudaGetDeviceCount( &devCount ); if( !devCount ) { cout << "No Cuda Device." << endl; return 0; } cudaDeviceProp devProp; cudaGetDeviceProperties( &devProp, 0 ); cout << "Global Memory size: " << devProp.totalGlobalMem << "

Screen Video Capture on CentOS

[설치] yum install gtk-recordmydesktop mencoder [실행] gtk-recordMyDesktop [사용법] 영역 (또는 윈도우) 지정 Save As로 저장될 파일 지정 (.ogv) Record로 녹화 시작 Alt + Ctrl + S로 녹화 종료 [ogv -> avi 변환] mencoder -idx input.ogv -ovc lavc -oac mp3lame -o output.avi [ogv -> mp4 변환] mencoder input.ogv -of lavf -lavfopts format=mp4 -oac mp3lame -lameopts cbr:br=128

Git 설정 및 사용법

1. git 설치 및 계정 생성 (client->server) ssh root@11.22.33.44 #ssh로 원격 서버(여기서는 IP주소가 11.22.33.44라고 가정)에 접속 root@11.22.33.44’s password:  [server의 root 암호 입력] yum install git #git 설치 adduser git #git 계정 생성 (git이 아닌 다른 이름도 상관없음) passwd git #git 암호 변경 Changing password for user git. New password:  [dexter 입력] (dexter가 아닌 다른 암호도 상관없음) BAD PASSWORD: The password is shorter than 8

How to exchange rotation matrix between Zelos and Maya

[pre-multiplied system with row-major ordering] (ex) Zelos X: rotation matrix about x-axis Y: rotation matrix about y-axis Z: rotation matrix about z-axis R: rotation matrix in x->y->z axis order. q=(ZYX)p Therefore, R = ZYX [post-multiplied system with column-major ordering] (ex) Maya qt = pt ( (Xt) (Yt) (Zt) )=pt (ZYX)t (t: transpose) Therefore, R =