개발
-
Virtio Block 성능 세부 분석개발/가상화 2019. 5. 20. 20:28
예전 포스트에서는 iozone을 이용해 Virtio block 드라이버의 성능을 간단하게 측정해봤다면 이번 글에는 범용적으로 사용되는 스토리지 벤치마크인 fio를 이용해 Virtio Block의 성능을 좀더 디테일하게 분석해보려고 한다. 실험의 큰 단위를 Sequential, Random으로 나누고 각각의 I/O size를 바꿔봤을 때 Host와 VM의 성능 차이가 어느 정도 나오는지를 분석 해봤다. 1. Seq 512K, Rand 4K Host VM Ratio Random Read 7705MB/s 5184MB/s 67% Random Write 120MB/s 69.9MB/s 58% Sequential Read 13.5GB/s 12.4GB/s 91% Sequential Write 501MB/s 346MB/..
-
SDN과 NFV개발/클라우드컴퓨팅 2019. 4. 21. 13:28
SDN (Software Defined Network)SDN은 "네트워크 자원을 소프트웨어적으로 가상화해서 운영하는 기술이다" 라고 한줄만 가지고 이해하기 모호하니 딱 정의하기에 앞서 이 기술이 나오게 된 배경부터 주목해보자. 지금과 같이 인터넷이 크게 발달하기 전에는 트래픽의 양이 많지 않았고 트래픽의 패턴도 서버와 클라이언트에게 주고받는 데이터 정도로 단순했다. 그런데 스마트폰의 시대가 시작되면서 트래픽의 양이 급격히 증가하기 시작했고 패턴도 단순히 클라이언트와 주고 받는 것이 아니라 다른 서버의 데이터베이스에 접근하는 경우가 생기기 시작했다. 이전보다 네트워크 관리 하는 것이 훨씬 복잡해졌다.과거에는 네트워크 장비들이 모두 하드웨어로만 조작 할 수 있었다. 트래픽이 감당 할 수 없을 정도로 많아진 ..
-
JAVA의 static개발/안드로이드 2019. 4. 3. 21:50
0. JAVA Static절차 지향인 C언어에서 static 변수는 함수 또는 변수를 작성 중인 파일 내에서만 사용하고 싶을 때만 사용하기 때문에 사용법이 비교적 간단했는데 JAVA에서는 객체지향 개념과 연관되어 있어 사용 시 다소 주의가 필요하다. 이번 포스트에서는 JAVA 언어에서 static의 쓰임새에 대해서 정리를 해본다. 1. Static/Non-static 멤버자바에서는 클래스 내의 함수 또는 변수를 멤버(Member)라고 통칭해서 부르며 앞에 static 변수를 붙이면 static 멤버, 붙이지 않으면 Non-static 멤버로 분류한다. public class MainActivity extends AppCompatActivity { static int staticVar = 0; // sta..
-
안드로이드 Service개발/안드로이드 2019. 3. 19. 21:42
0. 소개 Service 클래스는 안드로이드 앱에서 백그라운드 작업을 수행할 때 대표적으로 사용하는 라이브러리다. 앞서 설명한 AsyncTask와는 사용법이 완전히 다른데 2~3초 이내로 짧게 끝내야하는 AsyncTask와는 달리 Service는 오래도록 실행 할 수 있으며 AsyncTask처럼 UI 쓰레드와 Interaction 할 수 있는 기능은 없다. 그래서 화면과 무관한 작업인 네트워크 트랜잭션 처리나 음악을 재생할 때 사용된다. 1. 생성주기 액티비티와 독립된 생성주기를 가지고 있으며 별도의 컴포넌트로 동작하기 때문에 애플리케이션을 사용하지 않은 상태(UI가 화면에 있지 않은 상태) 여도 백그라운드에서 실행 될 수 있다. 폰 게임을 하는 중에도 카카오톡 메시지가 오고 쿠팡에서 쇼핑을 하는 도중에..
-
AsyncTask개발/안드로이드 2019. 3. 13. 23:57
0. 소개 AsyncTask는 파일 다운로드 완료후 사용자에게 완료됐다는 Toast 메시지를 보내는 유스케이스처럼 특정 백그라운드 작업이 종료되고 사용자에게 화면으로 알림을 전달해야하는 경우 유용한 클래스다. 코드가 직관적이고 응용하기 쉬워 자주 사용되는 라이브러리지만 몇초 이내에 종료될 수 있는 작업인 경우에만 사용이 가능하며 그것보다 긴 작업은 다른 클래스를 사용해야 한다. 안드로이드 공식문서의 예제 코드를 통해 사용 방법을 익혀보자. private class DownloadFilesTask extends AsyncTask { protected void onPreExecute(Integer... progress) { /* do nothing */ } protected Long doInBackgroun..
-
ViewPager와 PageAdapter개발/안드로이드 2019. 3. 5. 23:38
0. ViewPager와 PagerAdapter ViewPager와 PagerAdapter는 아래 네이버 앱의 뉴스, 연애 스포츠 탭처럼 큰 화면 안에서 여러 개의 작은 화면을 좌우로 움직이는 UI를 구성할 때 사용하는 안드로이드 라이브러리다. ViewPager는 TextView, Button과 같이 화면의 인터페이스로 사용자가 조작할 수 있는 컴포넌트고 PagerAdapter는 ViewPager가 생성한 공간을 채우는 데이터 공간으로 보면 된다. 특별히 화면에 이펙트를 넣을 생각이 없으면 ViewPager는 안드로이드에서 제공하는 라이브러리를 그대로 쓰고 내가 넣고 싶은 화면을 담은 별도의 PagerAdapter를 만들어서 ViewPager에 연결 시키면 된다. 네이버의 뉴스, 연예, 스포츠 탭은 Vi..
-
px, dp, sp 개념 정리개발/안드로이드 2019. 2. 16. 16:04
XML 파일 안에서 UI 컴포넌트의 크기를 정할 때 dp, sp, px 단위의 원리를 제대로 알지 않고 사용하는 경우가 있는데 이렇게 막 사용하다 보면 디바이스 해상도가 변경 될 때 화면이 깨지는 경우가 생긴다. 이번 포스트에서는 지금까지 막무가내로 사용해온(?) dp, sp, px 단위를 총 정리 해보려고 한다. 0. px (Pixel) 주소화 할 수 있는 화면의 가장 작은 단위. 점을 찍을 수 있는 가장 작은 단위라고 생각하면 된다. 화면 해상도와 관계 없이 컴포넌트의 크기를 절대값으로 세팅할 수 있으며 위의 그림으로 알 수 있듯이 오른쪽으로 갈 수록 폰의 해상도가 높아지면서 텍스트 상자와 이미지 아이콘이 작아진 것을 알 수 있는데 값을 픽셀 단위로 설정했기 때문에 그렇다. 이런 단위로는 여러 디바이..
-
Device screen dpi 값에 따라 처리하기개발/안드로이드 2019. 2. 16. 14:46
안드로이드 앱을 만들때면 무수히 많은 종류의 화면과 모두 호환 할 수 있는 UI를 만드는 일이 꽤나 골칫 거리다. 아이폰과 달리 안드로이드 폰은 제조사가 한군데만 있는 것도 아니고 또 같은 회사에서 만든 폰이라도 디스플레이 스펙이 제각각이라 이에대한 고려 없이 막만들었다간 화면이 깨져버리는 참사가 벌어지고 만다. Android에서는 UI 개발자들이 이런 점들에 대해서 유연하게 대처 할 수 있도록 여러가지 API를 제공하는데 이번 포스트에서는 getResources().getDisplayMetrics().density 에 대해서 알아보려고 한다. 이 값은 디바이스의 160dpi 대비 디바이스의 screen density (dpi) 의 비율을 나타내며 실행되고 있는 디바이스 화면 스펙별로 값이 다르다. 디바..