본문 바로가기

반응형

IT

리눅스의 samba 공유를 외부 네트웍에서 사용하기 #1 나는 패스워드를 AIRoboform이라는 프로그램으로 관리한다. 이 프로그램에서 패스워드를 서버에 올려서 관리도 해주지만 내 패스워드가 다른 서버에 올라가 있다는게 꽤 꺼림직했다. 이런 와중에 집에 만들어 놓은 리눅스 서버의 samba를 외부네트워크에서 연결하여 사용할 수 없나하는 생각이 들었다. (참고로 samba는 내부네트워크를 위해서 만들어진 파일공유방식으로 외부네트워크에서 연결하려면 작업이 좀 필요하다.) 기본적인 개념은 다음과 같다. 1. 리눅스에서 samba 서비스가 정상적으로 작동하고 내부네트워크에서 정상적으로 파일공유가 되는 상태를 가정한다. 2. 윈도우에서 외부네트워크로 samba 서비스에 접근하는 것을 배경으로 한다. 3. 윈도우에 loopback adapter를 설치한다. 4. ssh.. 더보기
엑티비티 활성화된 동안 화면이 꺼지지 않도록 하는 방법 AndroidMenifast.xml파일에 permission을 추가한다. 엑티비티에서 onCreate() 메소드 등에서 다음과 같은 코드를 추가한다. // 엑티비티의 화면이 떠 있는 동안 화면이 꺼지지 않도록 하는 기능을 추가함 getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 더보기
byte[] contains를 간단히 구현하는 방법 종종 바이트어레이를 비교하면서 바이트어레이에 일부분에 원하는 바이트어레이가 포함되어 있는지 확인하는 방법을 간단하게 구현하여 써보도록 하겠다. 방법은 String의 index를 이용하는 방법으로 아래와 같다. /** 바이트에레이 compare 메소드 만들기 **/ byte[] data = new byte[] { 0x00, 0x01, (byte) 0xB1, 0x03, 0x03, 0x55 }; byte[] containData = new byte[] { 0x01, (byte) 0xB1, 0x03 }; int index = new String(data).indexOf(new String(containData)); System.out.println(index); index가 -1인 경우 포함되어 있지 않은 것이.. 더보기
USB2Serial 제어시 USB Permission 획득에 관한 USB기기를 제어하는 경우 USB Permission 획득을 처리하는 것이 그다지 어려운 것은 아니다. 하지만 한번에 다량(2개 이상)의 멀티 USB Device를 제어하는 경우가 발생하면 이것이 생각보다 쉬운 일이 아니다. 원론적인 부분을 먼저 이야기하면 일단 USB Permission을 획득하기에 앞서 USB연결에 대한 "android.hardware.usb.action.USB_DEVICE_ATTACHED" 액션을 처리하는 것이 우선이다. 그리고 이 액션은 Receiver, Service 등에서 직접적으로 처리하면 USB Permission에 대한 권한을 시스템기본값으로 저장하여 동일한 기기가 연결될 때 다시 Permission을 획득하라는 창이 뜨는 것을 방지할 수 있는 뛰어난(?) 기능을 사용할 .. 더보기
Service stopService() 시 onDestroy() 가 작동하지 않거나 원하는 타이밍에 작동하지 않는 경우 하드웨어 제어 서비스를 프로그래밍하면서 잘 작동하던 Service의 onDestroy() 메소드가 stopService() 실행에 바로 작동하지 않는 경우가 있어서 이를 남겨본다. 생명주기상 안드로이드의 Service는 startService 또는 bindingService로 Service를 시작할 수 있는데 이중에 bindingService시 flag를 어떤 것을 사용하는지 어디서 startService가 발현하는지에 따라서 다양한 경우가 발생했다. 이중에서 내 프로그램에서 원하는대로 (stopService실행시 onDestroy를 바로타는 것) 처리할 수 있는 것은 bindingService에서 사용하는 flag를 변경하여 원하는 결과를 얻었다. // java code private void bind.. 더보기
젤리빈기반에서 DatePickerDialog 에서 취소버튼 이벤트 처리하는 방법 젤리빈으로 롬업데이트가 활발한 요즘, 개발자들은 이전보다 더 많은 것을 신경쓰고 이벤트처리에 신경을 써야 합니다. 가장 많은 골머리를 썩는 것중에 하나가 소프트버튼 또는 하드버튼으로 입력하는 취소처리, 다이얼로그의 OutSide를 클릭하여 취소하는 경우의 이벤트 처리가 그것일 겁니다. 그중에서 DatePickerDialog는 기본적으로 Positve버튼과 Cancel버튼이 기본적으로 달려있고, Positive버튼의 이벤트 처리는 다이얼로그 생성자에서 기본적으로 입력을 받습니다. DatePickerDialog dialog = new DatePickerDialog(getActivity(), dateOnDateSetListener, year, month, day); 요런식으로 말이죠..dateOnDateSet.. 더보기
ListView에서 동적 추가시 하단으로 자동이동 또는 강제이동 리스트뷰에서 동적으로 row가 증가함에 따라 자동으로 이동하게 해주는 옵션이 존재한다.layout 의 xml 에서 ListView의 속성중에 android:transcriptMode 의 속성을 적용하면 된다. 설정할 수 있는 값은 아래와 같다. ConstantValueDescriptiondisabled0Disables transcript mode. This is the default value.normal1The list will automatically scroll to the bottom when a data set change notification is received and only if the last item is already visible on screen.alwaysScroll2The .. 더보기
안드로이드에서 마켓 연동 종종 다른 프로그램이 설치되어있는지 확인하고 없는 경우 해당 프로그램을 다운로드 하기 위해서 마켓 프로그램을 실행하여 해당 프로그램을 바로 설치할 수 있도록 해야 하는 경우가 있습니다. 그럴 때 아래 코드를 사용하여 일반적인 엑티비티를 실행하듯 프로그래밍해주시면 됩니다. // java code // 안드로이드마켓에서 Apps 검색 Uri uri = Uri.parse("market://search?q=pname:프로그램_패키지_명"); // ex) 프로그램_패키지_명 = com.google.maps Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); // 안드로이드마켓의 App 상세 화면 Uri uri = Uri.parse.. 더보기

반응형