파일 경로를 입력하면 해당 파일의 MD5 Hash를 스트링으로 반환해준다.


스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Imports System.Security.Cryptography
Public Function GetMD5Hash(ByVal sFilePath As String) As String
     Dim RD As FileStream = New FileStream(sFilePath, FileMode.Open, FileAccess.Read, FileShare.Read)
     RD = New FileStream(sFilePath, FileMode.Open, FileAccess.Read, FileShare.Read)
     Dim md5 As MD5CryptoServiceProvider = New MD5CryptoServiceProvider
     md5.ComputeHash(RD)
     RD.Close()
     Dim hash As Byte() = md5.Hash
     Dim SB As StringBuilder = New StringBuilder
     Dim HB As Byte
     For Each HB In hash
          SB.Append(String.Format("{0:X1}", HB))
     Next
     Return SB.ToString
End Function


사용예제

1
2
Dim sHash as String
sHash = GetMD5Hash("C:\Test.txt")


컨트롤 이름으로 컨트롤 객체를 반환 받을 수 있다.


소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
Public Module ControlSelectorExtension
    <System.Runtime.CompilerServices.Extension()>
    Public Function FindByName(Of T)(targetClass As Object, name As String) As T
        Dim info As Reflection.PropertyInfo = targetClass.GetType().GetProperty(name, Reflection.BindingFlags.Instance Or Reflection.BindingFlags.NonPublic)
        Return DirectCast(info.GetValue(targetClass, Nothing), T)
    End Function
    <System.Runtime.CompilerServices.Extension()>
    Public Function FindByName(Of T)(name As String, targetClass As Object) As T
        Dim info As Reflection.PropertyInfo = targetClass.GetType().GetProperty(name, Reflection.BindingFlags.Instance Or Reflection.BindingFlags.NonPublic)
        Return DirectCast(info.GetValue(targetClass, Nothing), T)
    End Function
End Module

출처 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=45&MAEULNO=18&no=509&page=1

'프로그래밍 > VB.net' 카테고리의 다른 글

VB.net - 파일의 MD5 Hash 값 추출  (0) 2015.05.11
VB.net - 문자열로 Form 객체 반환 받기  (0) 2015.05.11

문자열로 해당 문자열을 name으로 가지고 있는 FORM 객체를 반환해준다.


소스코드

1
2
3
4
5
6
7
8
9
Public Class ObjectFinder
    Public Shared Function GetFormByName(ByVal formName As String) As Form
            Dim assemblyName As String = _
            [Assembly].GetEntryAssembly().GetName.Name.Replace(" ", "_")
            Dim myType As Type = _
                Type.GetType(assemblyName & "." & formName)
            Return CType(Activator.CreateInstance(myType), Form)
    End Function
End Class


사용예제 (Form1의 객체를 받아오기)

1
2
dim frmTEST as Form
frmTEST = ObjectFinder.GetFormByName("Form1")



'프로그래밍 > VB.net' 카테고리의 다른 글

VB.net - 파일의 MD5 Hash 값 추출  (0) 2015.05.11
VB.net - 컨트롤 이름으로 컨트롤 접근  (0) 2015.05.11

라즈베리파이 - KODI 설치


모든 작업은 앞전 포스팅에서 다루웠던 Putty를 이용한 SSH 접속 환경에서 작업한다.


Raspmc , Openelec 등의 OS가 아닌 Rasbian OS에 KODI를 설치 해보도록 하겠다.


1. SSH 접속 및 슈퍼유저 로그인

매번 sudo 를 사용하기 귀찮으니 슈퍼유저 권한으로 변경

pi@raspberrypi ~ $ sudo su


2. 소스리스트 추가

root@raspberrypi:~# nano /ect/apt/sources.list

아래 내용 추가
deb http://archive.mene.za.net/raspbian wheezy contrib


3. Update 및 KODI 설치

root@raspberrypi:~# apt-key adv --keyserver keyserver.ubuntu.com --recv-key 5243CDED
root@raspberrypi:~# apt-get update
root@raspberrypi:~# apt-get install kodi


4. KODI 자동 실행 옵션 설정 (선택사항)

root@raspberrypi:~# nano /etc/default/kodi

ENABLED=1 (0:자동실행안함, 1: 자동실행)

5. Group 설정 변경

root@raspberrypi:~# nano /etc/group

Input 에 kodi 추가


6. GPU RAM 할당

root@raspberrypi:~# nano /boot/config.txt

이전 포스팅을 계속 따라 왔다면 안해도 됨.

gpu_mem = 320       << 256~384 사이에 적당히 할당.


7. Reboot

root@raspberrypi:~# reboot


8. 실행

자동 실행 옵션을 주었다면, 자동으로 실행 될것이지만 
자동 실행 옵션을 주지 않았다면, 실행을 해주어야 한다.

로그인 후 다음과 같이 실행

root@raspberrypi:~# nohup kodi &

그냥 kodi라고 해도 되지만 백그라운드에서 돌아 가게끔 하는 것이다.

문제 없이 실행 된다면 이것저것 설정해서 사용 하면 끝.

Kodi에 대한 세세한 내용은 KODI 홈페이지를 참고하라 (http://kodi.tv)

위 KODI는 한글 설정까지 마친 화면이다. 


이 포스팅을 끝으로 대략적인 토렌트 머신 + KODI 의 세팅이 끝이 났다.

당분간 이 라즈베리파이는 TV뒤에서 토렌트머신과 KODI의 역활을 해줄 것이다.


라즈베리파이 - 오버클럭 (1.0Ghz)



라즈베리파이2는 기본적으로 900Mhz 의 ARM Cortex-A7 Quad-core를 사용하고 있다.

평상시에는 900Mhz로 작동하지 않으며, 기본 설정인 600Mhz로 작동한다.

CPU에 부하가 걸릴 경우 900Mhz로 작동하게 설계 된것이다.


이번 포스팅에서는 1Ghz(1000Mhz)의 고정 속도로 동작할 수 있게 해보도록 하겠다.

오버클럭으로 인한 여러가지 문제 점이 발생할 수 있다.

선택은 당신의 몫이다.


1. 라즈베리파이 설정파일 수정하기

pi@raspberrypi ~ $ sudo su

root@raspberrypi:~# nano /boot/config.txt

      

하단에 값들을 다음과 같이 추가 한다.

force_turbo=1      << 항상 Turbo 모드로 작동한다. 이 옵션으로 인한 문제 시 warranty를 받을 수 없다.
arm_freq=1000    << ARM 코어 클럭
sdram_freq=500   << Ram 클럭
core_freq=500     << GPU 코어 클럭
over_voltage=2    << 전압을 2만큼 더 준다는 의미 인데.. 2가 얼만큼인지는.....
temp_limit=80     << 쓰로틀링 온도 설정 : 해당 온도가 되면 기본 클럭으로 동작하게 된다.
gpu_mem=320    << KODI를 설치하여 사용할 목적이므로 gpu 메모리를 320만큼 할당한다.
disable_splash=1  << 부팅시 스플래시 화면을 끈다.


2. 하드웨어 정보 확인하기.

온도 확인하기

pi@raspberrypi ~ $ vcgencmd measure_temp

cpu0번의 현재 동작 클럭 값 확인하기

pi@raspberrypi ~ $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq



위 2가지만 확인하여도 정상적으로 작동하는지 확인 할 수 있다.


3. 주의 사항

오버클럭을 하게 되면 CPU 온도에 신경을 써주어야 한다.
방열판 부착은 기본이며, 필요시 FAN을 설치 해주어도 된다.


4. 마치며..

오버클럭은 선택사항이며, 그 선택은 사용자가 하는 것이다. 




라즈베리파이 - minidlna 설치



모든 작업은 앞전 포스팅에서 다루웠던 Putty를 이용한 SSH 접속 환경에서 작업한다.


라즈베리파이 트랜스미션(토렌트)를 사용해서 다운 받은 각종 미디어들을
집안에서 여러 기기들로 스트리밍 플레이 할 수 있는 DLNA 서버를 설치하려 한다.


1.1.3 버전 이상부터 .smi 자막 파일을 지원하게 되는데.. 
자동을 설치 하는 방법으로는 해당 버전이 설치 되지 않는다.

소스코드를 다운받아 컴파일 하는 방식으로 1.1.4 버전을 설치해 보도록 하겠다.



pi@raspberrypi ~ $ sudo su

root@raspberrypi:~# wget http://sourceforge.net/projects/minidlna/files/minidlna/1.1.4/minidlna-1.1.4.tar.gz

root@raspberrypi:~# tar xvfz minidlna-1.1.4.tar.gz

root@raspberrypi:~# cd minidlna-1.1.4

root@raspberrypi:~# apt-get -y install debhelper libavformat-dev libavutil-dev libavcodec-dev libflac-dev

root@raspberrypi:~# apt-get -y install libvorbis-dev libid3tag0-dev libexif-dev libjpeg-dev libsqlite3-dev libogg-dev

root@raspberrypi:~# ./configure

root@raspberrypi:~# ./autogen.sh

root@raspberrypi:~# make

root@raspberrypi:~# apt-get install checkinstall

root@raspberrypi:~# cp linux/minidlna.init.d.script /etc/init.d/minidlna

root@raspberrypi:~# chmod +x /etc/init.d/minidlna

root@raspberrypi:~# update-rc.d minidlna defaults

root@raspberrypi:~# cp minidlna.conf /etc

root@raspberrypi:~# nano /etc/minidlna.conf           
                         변경할 아이템 : media_dir="/Download"

root@raspberrypi:~# service minidlna restart 

root@raspberrypi:~# service minidlna force-reload

     

다소 시간이 걸렸지만. 어렵지 않게 설치가 되었음을 확인 할 수 있다.

이제 dlna을 지원하는 어플 혹은 기기에서 검색 및 접근이 될것이다.


다음 포스팅에서는 라즈베리파이 미디어센터의 대명사 KODI를 설치 해보도록 하겠다.


라즈베리파이 - 토렌트 머신 세팅


모든 작업은 앞전 포스팅에서 다루웠던 Putty를 이용한 SSH 접속 환경에서 작업한다.



Pushbullet을 사용하면 모바일 및 데스크탑 환경에서 알림을 받을 수 있다.

이를 라즈베리파이에 적용해보도록 하자.

토렌트 다운로드가 완료 되면 시딩이 자동 삭제 되고, 모바일 및 데스크탑 환경에서 알림을 받아보도록 하자.


기본 적인 세팅은 이전 포스팅을 참고하도록 하자.
[라즈베리파이] 토렌트 머신 - 8. 다운 완료 시 토렌트 시딩 자동 삭제


1. SSH 접속 및 슈퍼유저 로그인

매번 sudo 를 사용하기 귀찮으니 슈퍼유저 권한으로 변경

pi@raspberrypi ~ $ sudo su


2. Pushbullet 가입 및 인증키 받기

홈페이지 주소 : https://www.pushbullet.com/

홈페이지 가입 후 Account Settings 에 가보면 아래와 같이 인증 토큰을 발급 받을 수 있다.
설정에 필요한 값이니 복사해 두자


4. 시딩 삭제 스크립트 수정

root@raspberrypi:~# nano /Download/Scripts/AutoDelete.sh


AutoDelete.sh

#!/bin/sh
SERVER="포트번호 --auth 아이디:비번"
TORRENTLIST=`transmission-remote $SERVER --list | sed -e '1d;$d;s/^ *//' | cut --only-delimited --delimiter=" " --fields=1`
sComplete="" sVal=0 sIng=""

for TORRENTID in $TORRENTLIST
do
    DL_COMPLETED=`transmission-remote $SERVER --torrent $TORRENTID --info | grep "Percent Done: 100%"`
    STATE_STOPPED=`transmission-remote $SERVER --torrent $TORRENTID --info | grep "State: Seeding\|Stopped\|Finished\|Idle"`
    if [ "$DL_COMPLETED" ] && [ "$STATE_STOPPED" ]; then
        sComplete=$TR_TORRENT_NAME
        transmission-remote $SERVER --torrent $TORRENTID --remove
    else
        sVal=`expr $sVal + 1`
        sIng="$sIng
`transmission-remote $SERVER --torrent $TORRENTID --info | grep "Name" | cut --only-delimited --delimiter=":" --fields=2`"
    fi
done

curl -u "Pushbullet에서 받은 토큰값 ": https://api.pushbullet.com/v2/pushes -d type=note -d title="$sComplete" -d body="완료:$sComplete
다운중:$sVal개$sIng" --insecure


수정 해야 하는 부분 : 포트번호, 아이디, 비번, 토큰값


5. 모바일 APP을 기준으로 확인하기.

iOS AppStore 에서 Pushbullet으로 검색 후 설치 한 후 토렌트를 다운로드 해보자.
다음과 같이 확인 할 수 있다.
      

완료된 파일 이름과 현재 다운중인 파일들의 이름을 모두 확인 할 수 있다.

문제가 있거나 수정이 필요하다면 스크립트를 수정하여 사용하기 바란다.


다음 포스팅에서는 DLNA 서버를 설치해보록 하겠다.


라즈베리파이 - 토렌트 머신 세팅


모든 작업은 앞전 포스팅에서 다루웠던 Putty를 이용한 SSH 접속 환경에서 작업한다.


토렌트 파일이 다운로드가 완료되면 자동으로 시딩을 중지하고 삭제 하는 것을 다뤄보도록 하겠다.

Transmission-daemon에 옵션을 수정하여

다운로드가 완료 되면 자동으로 쉘 스크립트를 실행하도록 하는 것이다.


1. SSH 접속 및 슈퍼유저 로그인

매번 sudo 를 사용하기 귀찮으니 슈퍼유저 권한으로 변경

pi@raspberrypi ~ $ sudo su


2. Scripts 폴더 생성 및 소유자 변경

root@raspberrypi:~# mkdir /Download/Scripts
root@raspberrypi:~# chmod 777 /Download/Scripts
root@raspberrypi:~# chown -R 사용계정 /Download/Scripts


3. 시딩 삭제 스크립트 작성

root@raspberrypi:~# nano /Download/Scripts/AutoDelete.sh


AutoDelete.sh

#!/bin/sh
SERVER="포트번호 --auth 아이디:비번"
TORRENTLIST=`transmission-remote $SERVER --list | sed -e '1d;$d;s/^ *//' | cut --only-delimited --delimiter=" " --fields=1`
for TORRENTID in $TORRENTLIST
do
    DL_COMPLETED=`transmission-remote $SERVER --torrent $TORRENTID --info | grep "Percent Done: 100%"`
    STATE_STOPPED=`transmission-remote $SERVER --torrent $TORRENTID --info | grep "State: Seeding\|Stopped\|Finished\|Idle"`
    if [ "$DL_COMPLETED" ] && [ "$STATE_STOPPED" ]; then
        transmission-remote $SERVER --torrent $TORRENTID --remove
    fi
done 

Transmission에 설정하였던 포트번호, 아이디, 비번을 정확하게 입력하도록 주의.


4. 스크립트 실행 권한 추가

root@raspberrypi:~# chmod +x /Download/Scripts/AutoDelete.sh


5. Transmission-daemon 서비스 중지

root@raspberrypi:~# /etc/init.d/transmission-daemon stop


6. Transmission-daemon 설정 변경

root@raspberrypi:~# nano /etc/transmission-daemon/settings.json


7. 설정이 필요한 아이템

"script-torrent-done-enabled": true,
"script-torrent-done-filename": "/Download/Scripts/AutoDelete.sh",

Ctrl + O 저장
Ctrl + X 나가기

8. Transmission-daemon 서비스 시작

root@raspberrypi:~# /etc/init.d/transmission-daemon start


모든 설정은 이것이 끝이다.

이전 포스팅에서 테스트한데로 토렌트 파일을 다운로드 하고

자동으로 토렌트 시딩이 중지/삭제 되는지 확인해보자.

만약 문제가 생긴다면 실행 권한에는 문제가 없는지도 확인하여 보자.


시딩 삭제에 대해 여러 견해가 있다. 선택은 사용자 몫이라고 생각한다.
먹튀? 공유정신에 위배된다?
강요할 필요 없다. 선택은 당신이 하라.

라즈베리파이 - 토렌트 머신 세팅


Transmission-daemon 을 설치하고 세팅할 때 추가 입력하였던 watch-dir 기능을 써보도록 하자.

watch-dir 에 입력한 디렉토리에 토렌트 파일을 넣을 경우 자동으로 다운로드를 시작할 수 있다.

다운로드가 시작되면 토렌트 파일은 자동으로 삭제 된다.


1. FTP

FileZilla를 이용해서 토렌트 파일을 해당 디렉토리에 넣어주면 끝이다.
Transmission 확인은 웹에서 가능하다. (http://라즈베리파이IP:트랜스미션PORT)


Transmission Web 에서 확인 가능하다.


2. SAMBA

윈도우 상에서 파일 복사하듯이 토렌트 파일을 복사하여주면 된다.
마찬가지로 Transmission-Web에서 확인 가능하다.


3. MOBILE FTP APP (iOS 기준.. 안드폰은 없..)

FTP 프로그램은 FTP정령을 사용한다. 
기본적인 어플 사용법은 넘어가도록 한다.

토렌트 사이트는 애용중인 TOGOON 사이트를 기준으로 설명한다. (http://www.togoon.org)


1. FTP정령에 서버 정보 입력 후 서버 접속                 2. 사파리 웹에서 토군 사이트로 이동 후 원하는 토렌트 파일 클릭
 


3. 열기를 클릭                                               4. FTP 정령에서 열기 클릭
 


5. FTP 정령의 파일 클릭                                    6. 해당 파일을 업로드.. 끝.
 


이로써 PC 환경, 모바일 환경에서도 토렌트 파일 추가가 가능한 것을 알아보았다.

다음 포스팅에서는 다운로드 완료 후 시딩 종료 에 대해서 알아보도록 하겠다.


라즈베리파이 - SAMBA 설치



모든 작업은 앞전 포스팅에서 다루웠던 Putty를 이용한 SSH 접속 환경에서 작업한다.


1. SSH 접속 및 슈퍼유저 로그인

매번 sudo 를 사용하기 귀찮으니 슈퍼유저 권한으로 변경

pi@raspberrypi ~ $ sudo su


2. samba 설치

root@raspberrypi:~# apt-get install samba && apt-get install samba-common-bin


3. samba 계정 생성

root@raspberrypi:~# smbpasswd -a '사용할아이디'


4. samba 서비스 정지

root@raspberrypi:~# /etc/init.d/samba stop


5. samba 설정

root@raspberrypi:~# nano /etc/samba/smb.conf


6. 설정이 필요한 아이템

[global]
workgroup=[윈도우 작업 그룹명]  <<  따로 설정한게 없다면 WORKGROUP
dos charset = CP949
display charset = UTF8
unix charset = UTF8

#======================= Share Definitions =======================
이하 모든 부분 주석 or 삭제 후 아래 추가

[RaspberryPI]              << 윈도우 상에 표시 되는 명칭
comment = RaspberryPI   
valid users = vvchunvv     << 생성하였던 samba ID
path = /Download          << samba로 연결시 기본 디렉토리
guest ok = no             
writable = yes
browseable = yes
create mask = 0777
directory mask = 0777


7. samba 서비스 재시작

root@raspberrypi:~# /etc/init.d/samba start


8. 윈도우 네트워크 상에서 확인

아래와 같이 문제 없이 접속 됨을 확인 할 수 있다.


다음 포스팅에서는 vsftp, smaba, 등을 이용하여 토렌트 파일 추가를 해보도록 하자.

+ Recent posts