2019년 4월 15일 월요일

매일프로그래밍 - 코딩테스트 문제 30

매일프로그래밍 - 코딩테스트 문제 30

Given an integer, count number of 1s in binary representation of an integer.

시간 복잡도: O(log n)

input: 6 // 110
output: 2

input: 13 // 1101
output: 3

----------------------------------------------------------------------------

  1 #include <stdio.h>
  2 #include <string.h>
  3 #include <stdlib.h>
  4
  5 void getCount(int input)
  6 {
  7     int count = 0;
  8
  9     fprintf(stdout, "input[%5d]\t[0x%04x]\t", input, input);
 10     while (input > 0) {
 11         if ( (input % 2) == 1 )
 12             count++;
 13         input = input/2 ;
 14     }
 15     fprintf(stdout, "Count[%d]\n",count);
 16 }
 17
 18 int main(int argc, char** argv)
 19 {
 20 #ifdef __TBD__
 21     int loopCnt = 0;
 22
 23     for (loopCnt = 1; loopCnt < argc; loopCnt++) {
 24         getCount(atoi(argv[loopCnt]));
 25     }
 26 #else
 27
 28     while (argc > 1) {
 29         *argv++;
 30         argc--;
 31         getCount(atoi(*argv));
 32     }
 33 #endif
 34
 35     return 0;
 36 }


2019년 3월 28일 목요일

[TIP] Source Insight 3.x 한글(utf-8)주석처리

Source Insight 사용 시 한글 주석이 깨져 보이는 경우에 대한 처리방법에 대해 기술합니다.
( Ref : https://embeddedaroma.tistory.com/31 )

아래 경로에서 파일을 다운로드 받은 후,
http://www.cnblogs.com/Red_angelX/p/3713935.htm 
source insight 가 설치되어 있는 경로 (ex. C:\Program Files (x86)\Source Insight 3)에 압축해제하여 적용합니다.


압축해제 파일 중 siutf8.dll 만 적용해도 한글깨지는 현상은 개선이 됩니다.
- sihook.dll 파일을 적용하면 상단 파일탭에 추가로 오픈된 파일리스트가 나와서 적용하지 않음. (개인적인 취향에 맞지 않으므로... :) )


2019년 3월 25일 월요일

Google+ 자료 백업을 완료하며...

2014년 부터 사용해 왔던 google+ 서비스 종료로 인해 과거의 글들을 모두 Blogger로 옮겨왔다.

"기술관련 검색의 기록과 관심사들의 변화를 다시 돌아보는 기회가 되는 것 같다" 라는 말로 애써 위안을 삼아본다.

사라져 버린 링크, 기록을 하다가 마무리 하지 못하고 남겨둔 글들...

오랜 흔적들을 다시 정리했으니 새로운 내용들로 채워보자~!!!

[Kernel] CONFIG_USB_CDC_PHONET

Kernel   CONFIG_USB_CDC_PHONET: CDC Phonet support


General informations
- The Linux kernel configuration item CONFIG_USB_CDC_PHONET:

* prompt: CDC Phonet support
* type: tristate
* depends on: CONFIG_PHONET
* defined in drivers/net/usb/Kconfig
* found in Linux kernels: 2.6.31–2.6.39, 3.0–3.16, 3.17-rc+HEAD
* modules built: cdc-phonet

* Help text : Choose this option to support the Phonet interface to a Nokia cellular modem, as found on most Nokia handsets with the "PC suite" USB profile.

- https://cateee.net/lkddb/web-lkddb/USB_CDC_PHONET.html

[Kernel] usb 3G USB Dongle 사용을 위한 kernel configs

Kernel   #usb  3G USB Dongle bug fix


1. Bug  : "unable to enumerate USB device on port "
2. Resolve : enable below kernel configs
+ CONFIG_USB_ARCH_HAS_EHCI=y
+ CONFIG_USB_ACM=y
+ CONFIG_USB_SERIAL_QUALCOMM=y

[Kernel] CONFIG_USB_HWA_HCD

Kernel   - CONFIG_USB_HWA_HCD

Host Wire Adapter (HWA) driver (EXPERIMENTAL) found in drivers/usb/host/Kconfig

The configuration item CONFIG_USB_HWA_HCD:

* prompt: Host Wire Adapter (HWA) driver (EXPERIMENTAL)
* type: tristate
* depends on: ( CONFIG_EXPERIMENTAL ) && ( CONFIG_USB && CONFIG_UWB )
* defined in drivers/usb/host/Kconfig
* found in Linux kernels: 2.6.28–2.6.39, 3.0–3.6
* modules built: wusb-wa
* Help text
 - This driver enables you to connect Wireless USB devices to your system using a Host Wire Adaptor USB dongle. This is an UWB Radio Controller and WUSB Host Controller connected to your machine via USB (specified in WUSB1.0).

To compile this driver a module, choose M here: the module will be called "hwa-hc".

- https://cateee.net/lkddb/web-lkddb/USB_HWA_HCD.html

[Kenrel] CONFIG_USB_EHCI_HCD

Kenrel   - CONFIG_USB_EHCI_HCD

General informations

The Linux kernel configuration item CONFIG_USB_EHCI_HCD:

* prompt: EHCI HCD (USB 2.0) support
* type: tristate
* depends on: (none)
* defined in drivers/usb/host/Kconfig
* found in Linux kernels: 2.6.0–2.6.39, 3.0–3.16, 3.17-rc+HEAD
* modules built: ehci-hcd
* Help text
 - The Enhanced Host Controller Interface (EHCI) is standard for USB 2.0 "high speed" (480 Mbit/sec, 60 Mbyte/sec) host controller hardware. If your USB host controller supports USB 2.0, you will likely want to configure this Host Controller Driver.

EHCI controllers are packaged with "companion" host controllers (OHCI or UHCI) to handle USB 1.1 devices connected to root hub ports. Ports will connect to EHCI if the device is high speed, otherwise they connect to a companion controller. If you configure EHCI, you should probably configure the OHCI (for NEC and some other vendors) USB Host Controller Driver or UHCI (for Via motherboards) Host Controller Driver too.

You may want to read Documentation/usb/ehci.txt.

To compile this driver as a module, choose M here: the module will be called ehci-hcd.

[Kernel] CONFIG_USB_SERIAL_QUALCOMM

kernel - CONFIG_USB_SERIAL_QUALCOMM: USB Qualcomm Serial modem


General informations

The Linux kernel configuration item CONFIG_USB_SERIAL_QUALCOMM:

* prompt: USB Qualcomm Serial modem
* type: tristate
* depends on: (none)
* defined in drivers/usb/serial/Kconfig
* found in Linux kernels: 2.6.30–2.6.39, 3.0–3.16, 3.17-rc+HEAD
* modules built: qcserial
* Help text
 - Say Y here if you have a Qualcomm USB modem device. These are usually wireless cellular modems.
To compile this driver as a module, choose M here: the module will be called qcserial.

- https://cateee.net/lkddb/web-lkddb/USB_SERIAL_QUALCOMM.html

[Kernel] CONFIG_USB_NET_CDC_NCM

Kernel - CONFIG_USB_NET_CDC_NCM: CDC NCM support


General informations
The Linux kernel configuration item CONFIG_USB_NET_CDC_NCM:

* prompt: CDC NCM support
* type: tristate
* depends on: CONFIG_USB_USBNET
* defined in drivers/net/usb/Kconfig
* found in Linux kernels: 2.6.38–2.6.39, 3.0–3.16, 3.17-rc+HEAD
modules built: cdc_ncm

Help text
* This driver provides support for CDC NCM (Network Control Model Device USB Class Specification). The CDC NCM specification is available from http://www.usb.org/.

Say "y" to link the driver statically, or "m" to build a dynamically linked module.

This driver should work with at least the following devices: * ST-Ericsson M700 LTE FDD/TDD Mobile Broadband Modem (ref. design) * ST-Ericsson M5730 HSPA+ Mobile Broadband Modem (reference design) * ST-Ericsson M570 HSPA+ Mobile Broadband Modem (reference design) * ST-Ericsson M343 HSPA Mobile Broadband Modem (reference design) * Ericsson F5521gw Mobile Broadband Module

Apple Airplay 관련 링크

Apple Airplay 관련 링크


Apple AirPlay 간략히 알아보기

- https://sannhan.wordpress.com/2011/03/28/apple-airplay-at-a-glance/

Unofficial AirPlay Protocol Specification

- http://nto.github.io/AirPlay.html

A collection of libraries for Apple's AirPlay protocol

- https://github.com/jamesdlow/open-airplay

오토모티브 용어(CKD and SDK )

오토모티브 용어(CKD and SDK )


CKD

- Completely Knock down의 약어
- 해체할 수 있는데까지 해체를 하고 수송하는 방법
- 수송된 부붐은 목적지에서 조립에 되어 완성품으로 변신
- CDK (Car Knock Down)으로 사용되기도 한다.

SDK

- Semi Knock Down down의 약어
- CKD보다는 조금 더 조립된 형태의 반제품 형태로 수송된다.

[Kernel] System Reboot from device driver - programmable

System Reboot from device driver - programmable


#include <linux/reboot.h>
#ifdef CONFIG_MACH_RK3066_R306
        kernel_restart(LINUX_REBOOT_CMD_RESTART);
#endif

[ path : kernel/include/linux/reboot.h ]
 15 /*
 16  * Commands accepted by the _reboot() system call.
 17  *
 18  * RESTART     Restart system using default command and mode.
 19  * HALT        Stop OS and give system control to ROM monitor, if any.
 20  * CAD_ON      Ctrl-Alt-Del sequence causes RESTART command.
 21  * CAD_OFF     Ctrl-Alt-Del sequence sends SIGINT to init task.
 22  * POWER_OFF   Stop OS and remove all power from system, if possible.
 23  * RESTART2    Restart system using given command string.
 24  * SW_SUSPEND  Suspend system using software suspend if compiled in.
 25  * KEXEC       Restart system using a previously loaded Linux kernel
 26  */
 27
 28  #define  LINUX_REBOOT_CMD_RESTART    0x01234567
 29  #define  LINUX_REBOOT_CMD_HALT       0xCDEF0123
 30  #define  LINUX_REBOOT_CMD_CAD_ON     0x89ABCDEF
 31  #define  LINUX_REBOOT_CMD_CAD_OFF    0x00000000
 32  #define  LINUX_REBOOT_CMD_POWER_OFF  0x4321FEDC
 33  #define  LINUX_REBOOT_CMD_RESTART2   0xA1B2C3D4
 34  #define  LINUX_REBOOT_CMD_SW_SUSPEND 0xD000FCE2
 35  #define  LINUX_REBOOT_CMD_KEXEC      0x45584543

[ path : kernel/kernel/sys.c ]
 338 /**
 339  *  kernel_restart - reboot the system
 340  *  @cmd: pointer to buffer containing command to execute for restart
 341  *      or %NULL
 342  *
 343  *  Shutdown everything and perform a clean reboot.
 344  *  This is not safe to call in interrupt context.
 345  */
 346 void kernel_restart(char *cmd)
 347 {
 348     /*
 349     *  debug trace
 350     */
 351     restart_dbg("%s->%d->cmd=%s",__FUNCTION__,__LINE__,cmd);
 352
 353     kernel_restart_prepare(cmd);
 354     disable_nonboot_cpus();
 355     if (!cmd)
 356         printk(KERN_EMERG "Restarting system.\n");
 357     else
 358         printk(KERN_EMERG "Restarting system with command '%s'.\n", cmd);
 359     kmsg_dump(KMSG_DUMP_RESTART);
 360     machine_restart(cmd);
 361 }
 362 EXPORT_SYMBOL_GPL(kernel_restart);

[Java] SHA-1 암호화 - MessageDigest Class

JAVA  SHA-1 암호화 - MessageDigest Class


public String sha1(String s) {
    try {
        // Create MD5 Hash
        MessageDigest digest = MessageDigest.getInstance("SHA-1");
        digest.update(s.getBytes());
        byte messageDigest[] = digest.digest();

        // Create Hex String
        StringBuffer hexString = new StringBuffer();
        for (int i = 0; i < messageDigest.length; i++)
            hexString.append(Integer.toHexString(0xFF & messageDigest[i]));
        return hexString.toString();

    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
    return "";
}

PC용 Power Supply 전선의 Color를 통한 Voltage 구분

PC용 Power Supply 전선의 Color를 통한 Voltage 구분


ref from : http://kkomp.com/wp-content/uploads/2009/04/screenhunter-01apr092208.gif




[Kernel] make menuconfig command error


Kernel / make menuconfig error 발생에 대한 처리사항


OS : ubuntun 12.04 LTS

Resolve 
$ sudo apt-get install lib32ncurses5-dev

Error Log
$ make menuconfig [enter]
scripts/kconfig/lxdialog/menubox.o: In function `do_scroll':
menubox.c:(.text+0x55): undefined reference to `wrefresh'
scripts/kconfig/lxdialog/menubox.o: In function `print_arrows':
menubox.c:(.text+0x1a4): undefined reference to `wrefresh'
scripts/kconfig/lxdialog/menubox.o: In function `do_print_item':
menubox.c:(.text+0x3a9): undefined reference to `wrefresh'
scripts/kconfig/lxdialog/menubox.o: In function `print_buttons':
menubox.c:(.text+0x4b1): undefined reference to `wrefresh'
collect2: ld returned 1 exit status
make[1]: * [scripts/kconfig/mconf] Error 1
make: * [menuconfig] Error 2

[android] SharedPreferences 사용하기

Android  SharedPreferences 사용하기


import android.content.SharedPreferences;

private static SharedPreferences mSharedPref;
private static SharedPreferences.Editor mEditor;

private static final String PREF_PDCUI = "PdcUIPrefs" ;

Override
    protected void onCreate(Bundle savedInstanceState) {
        mSharedPref = getSharedPreferences(PREF_PDCUI, Context.MODE_PRIVATE);
        if ( mSharedPref != null )
            mEditor = mSharedPref.edit();
    }

---------------------------------------------------------------------

1. Write Data to Preferneces
mEditor.putInt(PREF_OPSWIDGET, ((arg1==true)?1:0));
mEditor.commit();

2. Read Data from Preferences
mOpsWidgetShow = mSharedPref.getBoolean(PREF_OPSWIDGET, true);

[칼럼] 매끄러운 ‘코드 리뷰’를 돕는 10가지 방법 (link)

매끄러운 ‘코드 리뷰’를 돕는 10가지 방법

9월14일 ‘데뷰 2015‘ 발표에서 팀 페터슨 개발자 프로바커터가 알려준 코드 리뷰를 좀 더 효율적으로 적용할 수 있는 10가지 팁

기회가 된다면 적용해 보자..
- http://www.bloter.net/archives/238819

[Webl] IFTTT

What is IFTTT

If This Then That 의 약자로 인테넷과 컴퓨터에 에 존재하는 여러 별개의 서비스와 어플들을 임의로 연동시켜주는 서비스

IFTTT 를 사용하는 방법

- 첫째로 내가 직접 필요한 Recipe 를 만드는 방법
- 둘째로 다른 사용자들이 이미 만들고 공유한 Recipe 를 사용하는 방법

- 참조링크 : https://sonsofaureus.wordpress.com/2014/05/29/ifttt-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC/

- https://ifttt.com/

[칼럼] 개발자의 의사소통능력 (link)

개발자의 의사소통능력


오래전에 읽었던 개발자의 의사소통 능력에 대한 칼럼 중 개발자가 좋은 의사소통을 하기 위해서 기억해야 하는 내용에 대해 정리한다.

1. 어머니에게 말한다고 생각하라
2. 구현과 인터페이스, 구체와 추상, 디테일과 개념을 분리하라
3. 자기방어는 독약이다
4. 듣는 힘을 키워라
5. 웅얼거리지 마라
6. 추상과 구체의 변증법
7. 브리또의 역설

- http://www.zdnet.co.kr/view/?no=20160718075808

[C++] REST Sample (link)

C++ REST Sample (link)


- https://cdecl.tistory.com/299

[DB] sqlite3 명령어 (link)

sqlite3를 이용한 작업시 참고할 링크  

- https://objectbuilder.tistory.com/8

ONVIF와 관련된 참고 사이트 (link)

회사에서 진행중인 FULL IP Project의 주요 기능 중 하나인 ONVIF와 관련된 링크

- https://m.blog.naver.com/PostView.nhn?blogId=msnayana&logNo=80155230549&proxyReferer=http%3A%2F%2Fplus.url.google.com%2Furl%3Fsa%3Dj%26url%3Dhttp%253A%252F%252Fm.blog.naver.com%252Fmsnayana%252F80155230549%26uct%3D1467616437%26usg%3D_biRbC1RgiIJW73TxKtmREQ5qyo.

[android] 안드로이드 인터페이스 정의 언어 (AIDL)

안드로이드 인터페이스 정의 언어 (AIDL)

- https://developer.android.com/guide/components/aidl.html?hl=ko#Calling
- https://android-kr.tistory.com/m/284

[android] Native RTL support in Android 4.2

[android] Native RTL support in Android 4.2


1. add android:supportsRtl="true" to the <application> element in your manifest file.
2. Change all of your app's "left/right" layout properties to new "start/end" equivalents.

- https://android-developers.googleblog.com/2013/03/native-rtl-support-in-android-42.html

[android] signing key 적용 APK Release하기 (link)

signing key 적용 APK Release하기

- https://appsnuri.tistory.com/20

[Linux/Android] OpenCV 설치 및 Androdi 연동하기 (link)

[Linux/Ubuntu][OpenCV - 3.1.0] 설치

- http://m.cafe.daum.net/AllAboutZynq/GwjT/9?q=opencv&re=1

Android 연동하기

- https://nealbaek.tistory.com/11

Kotlin Extensions (link)

Kotlin Extensions (link)

- https://harrytylenol.github.io/2017/Kotlin-Extensions/

C++ 스타일 캐스팅 (link)

C++ 스타일 캐스팅 (link)


# static_cast : C언어 스타일의 캐스팅과 같은 기본적인 형변환 연산자입니다.
# const_cast : 표현식의 상수성이나 휘발성(volatileness)을 없애는 용도로만 사용됩니다.
# dynamic_cast : 상속 계층 구조를 변환하는 용도로만 사용됩니다.
# reinterpret_cast : 포인터 타입을 바꾸는 용도로만 사용됩니다.

- https://whitesnake.uzoo.in/m/30?category=307452

[android] How to disable Lock Screen via property system

Android   Disable Lock Screen via property system


add below line at init.rc or build.prop
# Set LockScreen Disable
    setprop ro.lockscreen.disable.default true

[android] How to get Default Launcher Package Name

Android  How to get Default Launcher Package Name


import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.content.pm.PackageManager;

private String getHomeScreenAppName() {
String homePkgName;
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
ResolveInfo resolveInfo = mContext.getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);

homePkgName = resolveInfo.activityInfo.packageName;
//Toast.makeText(this.getApplicationContext(), currentHomePackage, Toast.LENGTH_LONG).show();
Log.d(TAG, "Home Screen Package : " + homePkgName);

return homePkgName;
}

[android] Audio System 관련 링크

Android Audio System


Linux Sound Device와 안드로이드 사운드 시스템
- https://www.oss.kr/info_techtip/show/d6d8e645-5a73-43b1-8c4b-4acf38f79553

ASoc Codec Class driver
- https://www.kernel.org/doc/html/v4.14/sound/soc/codec.html

오디오 용어정리
- http://www.audiojournal.co.kr/lecture/aud_15_1.php

Android Auto 관련 link 모음

Android Auto
- https://www.slideshare.net/dhiraj007/android-auto-43273422
- http://linuxgizmos.com/google-posts-android-auto-guidelines/
- https://www.slideshare.net/godfreynolan/android-auto

[U-Boot] arm: dra7xx: Define Android partition table (link)

[U-Boot] arm: dra7xx: Define Android partition table
- https://patchwork.ozlabs.org/patch/589258/

[VCS] SVN branch copy - CLI

SVN branch copy - CLI

svn copy svn://${SVNPATH}/trunk/ svn://${SVNPATH}/branches/$1 -m "Create $1 branch"

ex )
svn copy svn://192.168.1.90/core/branches/crewbox_rev02 svn://192.168.1.90/core/branches/sp100 -m "Create sp100 branch - from crewbox_rev02 CL1631"

svn copy svn://192.168.1.90/core/branches/crewbox_rev02 svn://192.168.1.90/core/tags/SP100-BRANCH-OUT

[android] Recent App list에 application 등록하지 않기

Android - Recent App list에 application 등록하지 않기.

AndroidManifest 파일에 아래와 같이 설정하자.

        <activity
            ......
            android:excludeFromRecents="true"
            ......
            >

[VCS] SVN switch 명령어 error

SVN switch command error

원인 : build.sh 실행시 locale 에러가 발생되어 svn switch 처리가 안되는 현상 발생.

그동안 대충 사용했던 것을 이제서야 고친다..
그런데 왜.... ko 가 없다고 처리가 안되는 것인지......

sudo apt-get install locales

$ sudo vi /var/lib/locales/ko
$ sudo vi /var/lib/locales/supported.d/ko
ko_KR.UTF-8 UTF-8
ko_KR.EUC-KR EUC-KR

$  sudo locale-gen

[android] Telephony Framework (link)

Android Telephony Framework 개요
- https://victor8481.tistory.com/m/262

[android] 디자인패턴 (link)

Android 디자인패턴
- https://tosslab.github.io/android/2015/03/01/01.Android-mvc-mvvm-mvp.html

Android MVP 무작정 따라하기
- https://thdev.tech/androiddev/2017/02/20/Android-MVP-Package-Structure/

[android] Binder 소개 (link)

Android Binder 소개
- http://www.flowdas.com/introduction-to-android-binder/

Windows 명령어 모음

Win7 Administrator계정 활성화 하기
시작 -> cmd -> 관리자 권한으로 실행하기
$ net user administrator /active:yes

-----------------------------------------------------------------------------------------------------------------------
네트워크 드라이브 연결 오류 발생 시 기존 네트워크 드라이버 연결 모두 삭제 시작 - 실행 - cmd > net use * /delete

What's the difference between an RFI, an RFP, and an RFQ

What's the difference between an RFI, an RFP, and an RFQ?

Printer-friendly versionSend to friendPDF version
A Request for Information (RFI) is used when you think you know what you want but need more information from the vendors. It will typically be followed by an RFQ or RFP.


A Request for Quote (RFQ) is commonly used when you know what you want but need information on how vendors would meet your requirements and/or how much it will cost.


A Request for Proposal (RFP) is used when you know you have a problem but don’t know how you want to solve it. This is the most formal of the “Request for” processes and has strict procurement rules for content, timeline and vendor responses. The appendices in the Guide to Successful Software Acquisition <link> provide templates for this approach.

[Android] ExoPlayer (link)

ExoPlayer is an application level media player for Android.
- http://google.github.io/ExoPlayer/

모두를 위한 머신러닝/딥러닝 강의 (link)

모두를 위한 머신러닝/딥러닝 강의
- http://hunkim.github.io/ml/

How to Install OpenSIPS Server on Ubuntu 15.04 (link)

How to Install OpenSIPS Server on Ubuntu 15.04
- https://linoxide.com/ubuntu-how-to/install-opensips-server-ubuntu-15-04/

CMake and ndk-build support in Android Studio 2.2 (link)

CMake and ndk-build support in Android Studio 2.2
- https://android-developers.googleblog.com/2016/11/make-and-ndk-build-support-in-android.html?m=1

[OS] google/fuchsia 관련 링크

관련 기사 :
https://www.zdnet.com/article/google-waves-goodbye-to-linux-for-new-iot-os-fuchsia-coming-soon-to-raspberry-pi/

Fuchsia OS: What you need to know
- https://itsfoss.com/fuchsia-os-what-you-need-to-know/

[SVN] How to import binary files (kinds of .a .so )

How to import binary files (kinds of  .a .so )

최초 임포트 할 때 --no-ignore 옵션을 주어서 import
$ svn import --no-ignore [SRC] [svn://XXXXXX] --username AAA --password PASSWD

- https://stackoverflow.com/questions/2394363/svn-wont-import-a-library

[rockchip] RK3066- Linux


RK3066- Linux 

Features
  • Based on Ubuntu Qantal 12.10
  • Minimal download - only 170Mb. Picuntu-da-server package, will download more packages, depending on your selection.
  • Comprehensive menu driven configuration - no more command lines - even in text mode.
  • Full HD - 1920 x 1080p resolution
  • CPUFREQ - Dynamic clocking upto 1.6Ghz
  • Internal Wifi is working - UG802, MK808. Balance to follow
  • Configure the following using menu mode
    • Network: Wifi, LAN, dhcp, static, gateway, routes, name server
    • Sound card
    • System performance
    • Network tools
    • Play flash on web pages
  • Manage services
    • Start, stop, status, restart running services
  • Can install PicUntu on SD Card, USB thumb drive OR USB Harddisk (Tested on 1TB Seagate Expansion Drive)
  • Once the base is installed - you can choose from to select some or all of the following packages
    1. Apache, mysql: apache2 php5 mysql-server-5.5 phpmyadmin
    2. Mail/Bind package: sendmail mailutils dnsutils bind9 fetchmail
    3. Windows network file server - samba
    4. Content manager: Joomla. Install and configure
    5. Media server
    6. Webmin: Install and configure
    7. xfce
    8. List for Gnome
    9. List for libreoffice: libreoffice
    10. Flash: browser-plugin-gnash gnash gnash-common gnash-cygnal gnash-dev gnash-tools
    11. Remote Desktop Server: tightvncserver xrdp
    12. Java: openjdk-7-jre-headless openjdk-7-jre-lib openjdk-7-jre
    13. Gcompiler: gcc gdb gcc-4.7 cpp cpp-4.7 binutils-gold libgcc1-dbg autoconf automake cpp-doc autotools-dev
    14. Editors: bluefish geany
    15. Kernel source: Yes, the kernel source can now be selected during install

- https://code.google.com/archive/p/rk3066-linux/

[EFM32] CapSenseSlider documents & sample src

EFM32_CapSenseSlider - Documents

- https://os.mbed.com/teams/SiliconLabs/code/EFM32_CapSenseSlider/docs/tip/files.html

Bluetooth low energy SDK for efm32

https://github.com/NordicPlayground/ble-sdk-efm32/blob/master/demos_efm/efm_common_libs/common_inc/config/caplesenseconfig.h

스마트폰(iOS, Android)의 이어마이크폰 단자를 이용한 data 통신(link)

스마트폰(iOS, Android)의 이어마이크폰 단자를 이용한 data 통신
- https://rullru.tistory.com/m/306

스마트카드의 구분과 종류별 특징

스마트카드의 구분과 종류별 특징


REST wikipedia

REST wikipedia
https://ko.wikipedia.org/wiki/REST

Facebook 메신저와 MQTT (link)

Facebook 메신저와 MQTT
- https://d2.naver.com/helloworld/1846

Fuchsia OS: What you need to know (link)

Fuchsia OS: What you need to know
- https://itsfoss.com/fuchsia-os-what-you-need-to-know/

[VCS] Git과 Subversion 연동 (git svn)

Git과 Subversion 연동 (git svn)
- https://git-scm.com/book/ko/v1/Git%EC%9C%BC%EB%A1%9C-%EC%9D%B4%EC%A0%84%ED%95%98%EA%B8%B0-Git%EA%B3%BC-Subversion

C++ REST SDK 관련 자료 모음

C++ REST SDK 관련 자료 모음
- https://m.blog.naver.com/PostView.nhn?blogId=corinet&logNo=220386835598&proxyReferer=http%3A%2F%2Fplus.url.google.com%2Furl%3Fsa%3Dj%26url%3Dhttp%253A%252F%252Fm.blog.naver.com%252Fcorinet%252F220386835598%26uct%3D1467616437%26usg%3Dzb3Fq2yAgOcURopkqecMrpF3Hqs.

Awesome Deep Vision - github link

Awesome Deep Vision
- https://github.com/kjw0612/awesome-deep-vision

오픈소스SW 라이선스 (GPL·AGPL·MPL…)

오픈소스SW 라이선스 (GPL·AGPL·MPL…)
- http://www.bloter.net/archives/209318

[기타] 도어클로저 속도 조절방법

도어클로저 속도 조절방법 / 현관문 압력조절
- https://lastzone.com/m/404

[STM32] IAR option 설정

STM32 / IAR  Option Config

1. Out Put 파일명 변경.
Output Converter
- Output
    - Output file
        v Override default
            CrewRk3066.bin
            sp100.ci100n.stm32f105.bin

Linker
- Output
    - Output filename :
        CrewRK3066.out
        sp100.ci100n.stm32f105.out

2. Preprocessor Feature 추가
Option -> C/C++ Compiler
 - Preprocessor
   - Defined symbols

[ Android] Wakelock을 이용한 Back Light AlwaysOn


Back Light AlwaysOn via Wakelock

import android.os.PowerManager;

private PowerManager mPM;
private PowerManager.WakeLock mAlwyasOnWakeLock;

    mPM = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
    mAlwyasOnWakeLock = mPM.newWakeLock(PowerManager.FULL_WAKE_LOCK, "AlwaysOn_BL");
    mAlwyasOnWakeLock.acquire();

[Android] KeyEvent.KEYCODE_NOTIFICATION 을 Application으로 전달하지 않기

 #Android   KeyEvent.KEYCODE_NOTIFICATION 을 Application으로 전달하지 않기

1. 특정 KeyCode에 대해 POLICY_FLAG_PASS_TO_USER  flag 제거

1.1 Flag 정의
path : frameworks/native/include/input/input.h
    // Indicates that the event should be dispatched to applications.
    // The input event should still be sent to the InputDispatcher so that it can see all
    // input events received include those that it will not deliver.
    POLICY_FLAG_PASS_TO_USER = 0x40000000,


1.2 수정사항
path : rk3066/frameworks/base/services/jni/com_android_server_input_InputManagerService.cpp
void NativeInputManager::interceptKeyBeforeQueueing(const KeyEvent* keyEvent, uint32_t& policyFlags) {
    ......
        handleInterceptActions(wmActions, when, /byref/ policyFlags);
    ......
    if (keyEvent->getKeyCode() == /KeyEvent.KEYCODE_NOTIFICATION/83 )
        policyFlags &= ~POLICY_FLAG_PASS_TO_USER;
}

void NativeInputManager::handleInterceptActions(jint wmActions, nsecs_t when,
        uint32_t& policyFlags) {
    if (wmActions & WM_ACTION_GO_TO_SLEEP) {
#if DEBUG_INPUT_DISPATCHER_POLICY
        ALOGD("handleInterceptActions: Going to sleep.");
#endif
        android_server_PowerManagerService_goToSleep(when);
    }

    if (wmActions & WM_ACTION_WAKE_UP) {
#if DEBUG_INPUT_DISPATCHER_POLICY
        ALOGD("handleInterceptActions: Waking up.");
#endif
        android_server_PowerManagerService_wakeUp(when);
    }

    if (wmActions & WM_ACTION_PASS_TO_USER) {
        policyFlags |= POLICY_FLAG_PASS_TO_USER;
    } else {
#if DEBUG_INPUT_DISPATCHER_POLICY
        ALOGD("handleInterceptActions: Not passing key to user.");
#endif
    }
}

2. Error case
- 현상 : KeyEvent 제거 -> Wakeup 불가.

path : rk3066/frameworks/base/core/jni/android_view_KeyEvent.cpp
jobject android_view_KeyEvent_fromNative(JNIEnv* env, const KeyEvent* event) {
    if ( event->getKeyCode() == XXX )
        return NULL;
}

[Android] seekbar control sample

android seekbar control
- https://mindfiremobile.wordpress.com/2014/05/20/seekbar-customization-for-android-development/

[Android] Switch widget control

android   Switch widget control sample


import android.widget.Switch;

private Switch mySwitch;

@Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  mySwitch = (Switch) findViewById(R.id.mySwitch);

  //set the switch to ON
  mySwitch.setChecked(true);
  //attach a listener to check for changes in state
  mySwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() {

   @Override
   public void onCheckedChanged(CompoundButton buttonView,
     boolean isChecked) {

    if(isChecked){
      // switch on
    }else{
      // switch off
    }
   }
  });
 }

[Android] App widget 만들기

Android App widget 만들기
- https://arabiannight.tistory.com/m/239

[Android] app performance oprimization

android app performance oprimization
- http://blog.udinic.com/2015/09/15/speed-up-your-app/

[Android] system 시간 관련 함수

android   system 시간 관련 함수.

System.currentTimeMillis()
The wall clock can be set by the user or the phone
 *     network (see {@link#setCurrentTimeMillis}), so the time may jump
 *     backwards or forwards unpredictably.  This clock should only be used
 *     when correspondence with real-world dates and times is important, such
 *     as in a calendar or alarm clock application.
 *     {@link android.content.Intent#ACTION_TIME_TICK ACTION_TIME_TICK},
 *     {@link android.content.Intent#ACTION_TIME_CHANGED ACTION_TIME_CHANGED}
 *     and {@link android.content.Intent#ACTION_TIMEZONE_CHANGED
 *     ACTION_TIMEZONE_CHANGED} {@link android.content.Intent Intent}
 *     broadcasts to find out when the time changes.
 *

System.uptimeMillis()
counted in milliseconds since the
 *     system was booted.  This clock stops when the system enters deep
 *     sleep (CPU off, display dark, device waiting for external input),
 *     but is not affected by clock scaling, idle, or other power saving
 *     mechanisms.

System.elapsedRealtime() / System.elapsedRealtimeNanos()
 *     <li> <p> {@link#elapsedRealtime} and {@link#elapsedRealtimeNanos}
 *     return the time since the system was booted, and include deep sleep.
 *     This clock is guaranteed to be monotonic, and continues to tick even
 *     when the CPU is in power saving modes, so is the recommend basis
 *     for general purpose interval timing.

[Android] NDK standalone toolchain을 생성하기

#android #ndk #standalon #toolchain

Android 7.x 기준으로 NDK standalone toolchain을 생성하는 방법을 정리한다.

1. Android NDK 다운로드 후 압축
 : 문서를 작성중인 현재 stable 버전은 r16b이다.
- https://developer.android.com/ndk/downloads/

2. standalone toolchain 생성
$ cd android-ndk
$ make-standalone-toolchain.sh --verbose --toolchain=arm-linux-androideabi-4.9  --package-dir=/home/sisbsoma/toolchain --platform=android-26 --arch=arm

HOST_OS=linux
HOST_EXE=
HOST_ARCH=x86_64
HOST_TAG=linux-x86_64
HOST_NUM_CPUS=8
BUILD_NUM_CPUS=16
## COMMAND: python /opt/android-sdk/ndk-bundle/build/tools/make_standalone_toolchain.py --arch arm --api 26 --stl gnustl --package-dir=/home/sisbsoma/toolchain

정상적으로 생성된 경우 아래와 같은 로그가 출력된다.
Package installed to /home/sisbsoma/toolchain.

생성된 이미지는 tar.bz2 형태로 압축되어 있다.
$ cd /home/sisbsoma/toolchain && ls
arm-linux-androideabi.tar.bz2

-----------------------------------------------------------------------------------------------------------------------
ex) FFTW-3.3.3 을 standalone toolchain 을 사용하여 컴파일 하는 방법

configure -> make -> make install

$ ./configure CC=$HOME/ndk-toolchain-gingerbread/bin/arm-linux-androideabi-gcc CXX=$HOME/ndk-toolchain-gingerbread/bin/arm-linux-androideabi-g++ CPPFLAGS=-I$HOME/ndk-toolchain-gingerbread/include LDFLAGS="-Wl,-rpath-link=$HOME/ndk-toolchain/lib -L$HOME/ndk-toolchain-gingerbread/lib" --host=arm-eabi --disable-fortran --prefix=$HOME/Downloads/fftw-3.3.3/lib-out
$make
$make install

-ref : https://plus.google.com/109848742745880085168/posts/QHawrqbfMFA

Radio Stations in Vietnam by Location

Android Navigation 제작 시 참조했던 베트남 라디오 주파수 관련 링크.

Radio Stations in Vietnam by Location
- https://www.asiawaves.net/vietnam-radio.htm#vietnam-radio-locations

Bluetooth 관련 링크

Bluetooth - Android Bluetooth stack A2DP

- https://blog.csdn.net/wendell_gong/article/details/29841967

-------------------------------------------------------------------------------

Bluetooth - profile list

- https://en.m.wikipedia.org/wiki/List_of_Bluetooth_profiles

-------------------------------------------------------------------------------

Bluetooth - profiles that iOS supports

- https://support.apple.com/en-us/HT204387

-------------------------------------------------------------------------------

Bluetooth - Message Access Profile (MAP)

https://www.bluetooth.com/ko-kr/specifications/profiles-overview/legacy-profiles

Apple Accessory Protocol

Apple Accessory Protocol
- https://nuxx.net/wiki/Apple_Accessory_Protocol

Barcode Detection in Google Play services

Barcode Detection in Google Play services
- https://android-developers.googleblog.com/2015/08/barcode-detection-in-google-play.html?linkId=16316033&m=1

[GPS] GPRMC & GPVTG

GPS  Informations

GPRMC   - Recommended minimum specific GPS/Transit data

eg3. $GPRMC,220516,A,5133.82,N,00042.24,W,173.8,231.8,130694,004.2,W*70
              1    2    3    4    5     6    7    8      9     10  11 12

      1   220516     Time Stamp
      2   A          validity - A-ok, V-invalid
      3   5133.82    current Latitude
      4   N          North/South
      5   00042.24   current Longitude
      6   W          East/West
      7   173.8      Speed in knots
      8   231.8      True course
      9   130694     Date Stamp
      10  004.2      Variation
      11  W          East/West
      12  *70        checksum
$GPRMC,123129.00,A,3726.15204,N,12710.31215,E,1.343,83.20,100414,     ,  ,A*5B

--------------------------------------------------------------------------------------------

GPVTG  - Track made good and ground speed

GPVTG,360.0, T,348.7,M,000.0 ,N,000.0  ,K*43
GPVTG,054.7, T,034.4,M,005.5 ,N,010.2  ,K
GPVTG,223.29,T,       ,M,17.229,N,31.907,K,A*36

[rockchip] Rockchip Batch Tool V1.5 실행오류 관련 정리

rockchip Binary Download Tool 설정

1. 현상
- Rockchip Batch Tool V1.5.exe 실행시 장치 인식 안됨

2. 수정사항
- config.ini 수정
- SUPPORTLOWUSB=TRUE 추가

#选择工具语言:Selected=1(中文);Selected=2(英文)
[Language]
Kinds=2
Selected=2
LangPath=Language\

Lang1File=Chinese.ini
Lang1FontName=宋体
Lang1FontSize=9
Lang1Tag=CHN
Lang1CHNTitle=中文
Lang1ENGTitle=English

Lang2File=English.ini
Lang2FontName=Arial
Lang2FontSize=9
Lang2Tag=ENG
Lang2CHNTitle=英文
Lang2ENGTitle=English

[System]
#下面是设备rockusb设备和msc设备的vendor id和product id,一般情况下这些ID不用设置可以使用默#认的,由于msc设备的VID和PID是可以修改定制的,设置例子如下:
#MSC_VID=0x0BB4,MSC_PID=0x0C01
RKUSB_VID=2207
RKUSB_PID=300A
MSC_VID=
MSC_PID=

FORCEFLAG=FALSE
#设置用户盘操作,
#FORMATFLAG=TRUE时,在升级后会对用户盘格式化,磁盘卷标可以通过设置DISKVOLUME项来指定
FORMATFLAG=
DISKVOLUME=USER_DISK
#COPYFLAG=TRUE时,在升级后会将DEFAULT_COPYPATH指定的目录或者文件拷贝到用户盘根目录
COPYFLAG=
DEFAULT_COPYPATH=

FORMATDATADISKFLAG=
DATADISKVOLUME=DATA_DISK
COPYDATADISKFLAG=
DEFAULT_DATADISK_COPYPATH=

LOGFLAG=TRUE
#SUPPORTLOWUSB=TRUE时,扫描支持full speed usb设备,默认只支持high speed usb设备
SUPPORTLOWUSB=TRUE

#通过设置CHECK_MACHINE_MODEL项,可以在升级前校验固件是否允许升级,允许的条件是设备中的值要跟#固件中parameter文件里MACHINE_MODEL的值匹配
CHECK_MACHINE_MODEL=

#QUICK_CHECK_MODE=TRUE时,开启快速校验模式,可以提高校验速度,但是也存在一些校验不完全的风险
QUICK_CHECK_MODE=

#通过设置DEFAULT_FIRMWARE项,等于默认加载固件的路径,可以在程序启动时自动打开此位置的固件
DEFAULT_FIRMWARE=


UID_STRING=ROCKCHIP
FW_VERSION_MODE=

#Android固件,可以通过指定MISC_MODIFY_MODE为WIPE_DATA和WIPE_ALL来修改misc分区数据,#WIPE_DATA时不擦除用户空间数据,WIPE_ALL则全部擦除
MISC_MODIFY_MODE=

MSC_WAITTIME=30
RKUSB_WAITTIME=30

[S/W] 디자인패턴

디자인패턴 관련 검색 중...

- https://gogorchg.tistory.com/m/entry/Design-Pattern-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4

[영어] 개발자 영문이력서 작성하기

개발자 영문이력서 작성법에 대한 검색 내용
- https://brunch.co.kr/@imagineer/215

SMT 공정에 대한 소개

SMT공정에 대한 소개
- https://solder.tistory.com/m/5

[영어] 비지니스 영어패턴

비지니스 영어패턴 500플러스
- http://www.go4english.co.kr/xe/page_LIRe17/2205

자동차 전장품을 위한 전자파적합성 (EMC) 시험 서비스

자동차 전장품을 위한 전자파적합성 (EMC) 시험 서비스
- http://www.dtnc.co.kr/industrial/electromagnetic2.php

오토모티브 관련 용어 (NVH)

#오토모티브 #NVH
소음진동이라 불리는 NVH(Noise, vibration, and harshness)는 무엇일까?
- https://blog.gm-korea.co.kr/301

D-BUS

D-Bus란?

D-Bus는 프로세스간 통신 (IPC)을 위한 시스템이다.
오픈 소스 소프트웨어로써 리눅스 데스크톱의 프로세스 통신을 위한 수단으로 널리 사용되고 있다.
특히 KDE와 Gnome같은 데스크탑 환경에서 중요하게 사용한다. 구조적으로는 몇 가지 계층 이 있다

• libdbus: Libdbus는 응용 프로그램간의 통신을 가능하게 하는 라이브러리이다.
• message bus daemon: DBUS데몬은 실행 파일이며 libdbus를 기반으로 하여 제작되었으며 여러 개의 응용프로그램에서 연결이 가능하다. 데몬은 버스에 연결된 하나 이상의 프로세스에 라우팅 및 루트 메시지를 처리한다.
• wrapper library 또는 binding: libdbus-glib, libdbus-qt 등 특정 어플리케이션 프레임워크 혹은 파이썬과 같은 언어에 wrapping/binding 가능하다. D-Bus 프로그래밍을 쉽게 할 수 있도록 도와준다. 즉 libdbus는 high-level binding을 위해 low-level backend로 다루어진다고 볼 수 있다. 많은 libdbus api가 binding을 위해 만들어졌다.

- https://www.freedesktop.org/wiki/Software/dbus/

------------------------------------------------------------------------------------

#dbus
Ref : http://sarangnamu.net/basic/basic_view.php?no=5800&page=8&sCategory=0

#DCOP : #KED에 의해 생성, QT외 다른 환경에서의 적용 어려움
#Bonobo : #GNOME에 의해 생성, #GNOME외 다른 환경에서 적용 어려움

D-Bus란?
- D-Bus는 RPC 프로토콜 혹은 IPC(inter-process communication)시스템으로 설명
- 데스크탑 응용프로그램과 운영체제의 통신을 위해 만들어졌다.

- 구조적 레이어
-> libdbus: 두 응용프로그램 간의 연결 및 메세지 교환을 할 수 있도록 한다.
-> message bus daemon 실행 파일: libdbus를 기반으로 하여 제작되었으며 여러개의 응용프로그램에서 연결이 가능하다. 데몬은 응용프로그램으로부터 메세지를 전송받아 다른 응용프로그램으로 전송한다.
-> wrapper library or binding: libdbus-glib, libdbus-qt 등 특정 어플리케이션 프레임워크 혹은 파이썬과 같은 언어에 wrapping/binding 가능하다. D-Bus 프로그래밍을 쉽게 할 수 있도록 도와준다. 즉 libdbus는 high-level binding을 위해 low-level backend로 다루어진다고 볼 수 있다. 많은 libdbus api가 binding을 위해 만들어졌다.

libdbus는 오직 one-to-one 연결만 지원하지만 라우터 역할을 하는 message bus daemon과 message를 이용한다면 제약을 극복할 수 있다.

MQTT에 대해..

#IoT #MQTT

Broker / Publishing / Subscribing
예전에 다루었던 ZeroMQ 의 연결 방식과 비슷하다.

- https://www.joinc.co.kr/w/man/12/MQTT/Tutorial
- https://bcho.tistory.com/m/864

[DB] Mysql ALTER Table 구문 정리

Mysql ALTER Table 구문 정리
테이블명 수정, 컬럼 추가,변경,삭제,컬럼먕 변경, 타입변경, ...
- https://linuxism.tistory.com/425

멀티바이트 관련 (stackoverflow)

Multibyte - stackoverflow
- https://stackoverflow.com/questions/1543613/how-does-utf-8-variable-width-encoding-work

OpenCV강좌

OpenCV강좌
- https://sijoo.tistory.com/m/178?category=508578

Android 스튜디오 App 만들기 강좌

Android 스튜디오 Applicaion 만들기 강좌
- https://www.inflearn.com/course/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%8A%A4%ED%8A%9C%EB%94%94%EC%98%A4-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%95%B1-%EB%A7%8C%EB%93%A4%EA%B8%B0/

[Android] FCM Client application 설정

Android에서 Firebase 클라우드 메시징 클라이언트 앱 설정
- https://firebase.google.com/docs/cloud-messaging/android/client?hl=ko

[Java] MD5 와 SHA-256 예제

Java / MD5 & SHA-256 method 예제.

MD5

public String testMD5(String str){
String MD5 = "";
try{
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(str.getBytes());
byte byteData[] = md.digest();
StringBuffer sb = new StringBuffer();
for(int i = 0 ; i < byteData.length ; i++){
sb.append(Integer.toString((byteData[i]&0xff) + 0x100, 16).substring(1));
}
MD5 = sb.toString();

}catch(NoSuchAlgorithmException e){
e.printStackTrace();
MD5 = null;
}
return MD5;
}

-------------------------------------------------------------------------------------------------
SHA-256

public String testSHA256(String str){
String SHA = "";
try{
MessageDigest sh = MessageDigest.getInstance("SHA-256");
sh.update(str.getBytes());
byte byteData[] = sh.digest();
StringBuffer sb = new StringBuffer();
for(int i = 0 ; i < byteData.length ; i++){
sb.append(Integer.toString((byteData[i]&0xff) + 0x100, 16).substring(1));
}
SHA = sb.toString();

}catch(NoSuchAlgorithmException e){
e.printStackTrace();
SHA = null;
}
return SHA;
}

[Android] TimeZone 확인

Android system의 timezone을 읽어오는 예제.

private byte verifyTimeZoneCode() {
    byte retVal = 0;
    TimeZone z = TimeZone.getDefault();
    String tZName = z.getDisplayName();
    String tZId = z.getID();

    Log.d(TAG,"[TimeZone:"+tZName+"] [GetID:"+tZId+"]");

    if ( tZId.toUpperCase().indexOf("TAIPEI") != -1 ) {
        retVal = 0;
    } else if ( tZId.toUpperCase().indexOf("SEOUL") != -1 ) {
        retVal = 1;
    } else {
        retVal = 2;
    }

    return retVal;
}

[Android] 시스템 언어설정 확인

android system 언어설정 값을 읽어오는 예제.

private byte verifyLanguageCode() {
    byte retVal = 0;
    Locale locale = mContext.getResources().getConfiguration().locale;
    String language = locale.getLanguage();
    String country = locale.getCountry();
    String displayCountry = locale.getDisplayCountry();

    Log.d(TAG,"[language:"+language+"] [country:"+country+"] [displayCountry:"+displayCountry+"]");

    if ( language.toUpperCase().indexOf("ZH") != -1 ) {
        retVal = 0;
    } else if ( language.toUpperCase().indexOf("KO") != -1 ) {
        retVal = 1;
    } else {
        retVal = 2;
    }

    return retVal;
}

[Android] Socket 예제

Android 에서의 socket class 사용에 대한 예제 및 google reference link 정리

Android reference link 
- https://developer.android.com/reference/java/net/Socket.html

Android Socket Example
- https://examples.javacodegeeks.com/android/core/socket-core/android-socket-example/

[Linux] How to Control RTC Alarm ( linux & android)

How to Control RTC Alarm at  #linux  /  #android

1. Using sysfc

1.1 Once Scheduled
$ sudo bash -c "echo $(date +'%s' -d '20 minutes') > /sys/class/rtc/rtc0/wakealarm"
$ cat /proc/driver/rtc
rtc_time        : 13:25:55
rtc_date        : 2013-01-07
alrm_time       : 19:45:54
alrm_date       : 2013-01-07
alarm_IRQ       : yes          # Alarm is now on
alrm_pending    : no

1.2 Disable Alarm
$ sudo bash -c "echo 0 > /sys/class/rtc/rtc0/wakealarm"
$ cat /proc/driver/rtc
rtc_time        : 13:28:09
rtc_date        : 2013-01-07
alrm_time       : 13:33:07
alrm_date       : 2013-01-07
alarm_IRQ       : no          # Alarm is now off
alrm_pending    : no

2. Using  #android   Alarm Service

Path : ./frameworks/base/services/java/com/android/server/AlarmManagerService.java

 880                     if ((result & RTC_WAKEUP_MASK) != 0)
 881                         triggerAlarmsLocked(mRtcWakeupAlarms, triggerList, nowRTC);

3. Using  #kernel   alarm device driver
Path : kernel/drivers/rtc/alarm.c

static int alarm_suspend(struct platform_device *pdev, pm_message_t state)

/* CREW - R306 do not need rtc alarm in suspend */
#ifdef CONFIG_MACH_RK3066_R306
rtc_alarm.enabled = 0;
#else
rtc_alarm.enabled = 1;
#endif

웹서비스 관련 용어 정리 (WSDL, UDDI, SOAP)

WSDL( Web Service Description  Language )


어떤 등록처나 저장소에  자료를 저장하려면  어떤자료가 어디에  어떤형식으로 저장되는 알아야 사용이 가능한데, 이런 특정서비스의 설명과 접근방법같은 것은 전자적으로 접근하는 방법을 XML언어기반으로 제공하는 기술이다.

UDDI( Universal Description, Descovery Intergration )


기업이나 단체, 개인이  자신들의 서비스내용을  인터넷상에  등록할수 있게하는 XLML 기반의 등록처이다.  이 등록처에  WSDL을 사용하여 수행한다.

SOAP ( Simple Object Access Protocol )


SOAP(Simple Object Access Protocol)은 일반적으로 널리 알려진 HTTP, HTTPS, SMTP 등을 통해 XML기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜이다. SOAP은 웹 서비스에서 기본적인 메시지를 전달하는 기반이 된다. SOAP에는 몇가지 형태의 메시지 패턴이 있지만, 보통의 경우 원격 프로시져 호출(Remote Procedure Call:RPC) 패턴으로, 네트워크 노드(클라이언트)에서 다른 쪽 노드(서버)쪽으로 메시지를 요청 하고, 서버는 메시지를 즉시 응답하게 된다. SOAP는 XML-RPC와 WDDX에서 envelope/header/body로 이루어진 구조와 전송(transport)과 상호 중립성(interaction neutrality)의 개념을 가져왔다.
SOAP은 XML을 근간으로 헤더와 바디를 조합하는 디자인 패턴으로 설계되어 있다. 「헤더」는 선택사항으로 반복이나 보안 및 트랜잭션을 정보로 하는 메타 정보를 가지고 있다. 「바디」부분은 주요한 정보인 정보를 가지고 있다.
- https://ko.m.wikipedia.org/wiki/SOAP