분류 전체보기158 OS 알아보기 Linux OS 확인 C#은 윈도우즈와 리눅스에 모두 동작합니다. 그런데 어떤 OS인지에 따라 사용하는 리소스에 접근하는 방법이 다릅니다. 특히 통신이나 데이터 베이스 접근을 다르게 해야 합니다. 그래서 C#이 동작할때 어떤 OS 상태인지 알 필요가 있습니다. 다음 코드는 동작 OS가 리눅스이면 true를 반환합니다. private static bool isLinux(){ bool ret=false; try{ int p=(int)Environment.OSVersion.Platform; ret=(p==4)||(p==6)||(p==128); } catch(Exception){ ret = false; } return ret; } 광고좀 꾹 눌러주시면 고맙겠습니다. 2021. 8. 14. 프로그램 중복 실행 방지하기 같은 응용 프로그램을 두 개 이상 실행을 방지할 필요가 있습니다. 특히 통신 포트 등을 사용할 때는 중복 실행을 방지할 필요가 있습니다. 다음과 같이해서 현재 프로그램을 가져옵니다. string current_prog = System.Diagnostics.Process.GetCurrentProcess().ProcessName.ToUpper(); GetProcessesByName()을 이용해서 현재 프로그램이 몇 개 동작하는지 p에 기록합니다. 즉 p의 수량이 1이 아니면 중복으로 프로그램이 동작중임을 알 수 있습니다. System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName(current_prog); c#의 Prgram의.. 2021. 8. 14. 로그(Log) 를 남기고, 오래된 로그 파일 자동 삭제 로그 남기기 프로그램 운영 관리를 위해서는 로그(Log) 파일을 생성하고, 프로그램 진행 상태를 로그로 남기도록 만들기도 합니다. 로그 파일은 일간, 주간, 월간으로 새로운 파일을 만들고 기록하면 관리하게 가 편리합니다. 그런데 로그 파일을 무작정 기록하면, 누적된 파일의 크기가 문제가 됩니다. 특히 용량이 제한된 임베디드와 같은 소형 장비에서는 기록장치의 용량이 제한되어 있기 때문에 더욱 문제가 되기 때문이다. 그래서 누적 가능한 일자를 제한하여, 파일을 삭제하는 방법을 로그 파일에 함께 사용합니다. MonoDevelop.TaskForce.Utilities의 LogUtil로 로그 파일 만들기 다음은 LOG 디렉터리에 날자별로 로그파일을 Text 내용으로 기록하고, 60일 간격으로 오래된 파일을 삭제하는.. 2021. 8. 14. c#에서 ssh scp로 bash 명령어 실행 및 파일 전송 C#에서 ssh 실행 c#에서 ssh를 실행해서 Raspberry Pi를 조정할 수 있습니다. 또 ssh의 scp를 이용해서 파일 복사도 가능합니다. 먼저 Nuget 패키지 관리자를 이용해서 다음의 내용을 추가합니다. Renci.ssh.net과 WinSCP의 두 가지 방법으로 실행 방법을 선택해서 적용이 가능합니다. Renci.ssh.net을 이용한 bash 명령어 사용 다음 코드는 ssh로 Raspberry PI로 접근해서 ls -la이라는 명령어를 실행하고 결과를 PC의 콘솔로 출력하는 내용입니다. 다른 명령어를 사용해도 됩니다. using Renci.SshNet; using Renci.SshNet.Sftp; using Renci.SshNet.Common; SshClient client = new S.. 2021. 8. 11. c#과 Python의 연동 C#과 Python 연결 Linux에서 Python의 입지는 매우 큽니다. 특히 머신 러닝(machine learing) 관련된 내용은 Python으로 작성된 결과가 많아, 이를 c#에서 직접 사용하고 싶은 욕망이 큽니다. 이 글에서는 Python의 코드 내용을 실행하고 결과를 얻는 방법을 알아보겠습니다. C#에서 Python 설치 먼저 VisualStuio에서 c# 프로젝트를 만들고 Nuget 패키지 관리로 IronPython을 참조로 추가합니다. 그러면 c#에서 python으로 접근할 수 있게 됩니다. Python class의 함수로 접근 먼저 python에서 Calculator.py의 class를 만들고 덧셈을 실행하는 함수를 선언합니다. class Calculator(object): def add.. 2021. 8. 11. Enum의 정보 변환 하기 C#의 Enum c#에서 Enum의 유용성은 말할 나위가 없습니다. 이글에서는 더욱 유용하게 Enum을 사용하는 방법을 다뤄보겠습니다. 먼저 다음과 같이 Test란 이름으로 Enum을 정의하겠습니다. public enum Test{ abc = 1, efg = 0 }; Enum의 멤버 이름을 문장형 리스트로 변환 이때 리스트는 Enum을 정의할 때 함께 정의한 숫자 순서로 만들어집니다. var Test_List = Enum.GetNames(typeof(Test)); Enum 멤버를 문장으로 직접 반환 var str0 = Test.abc.ToString(); 또는 다음과 같은 방법으로도 가능합니다. var str1 = Enum.GetName(typeof(Test),Test.abc); Enum 멤버에 할당된 .. 2021. 8. 11. 문장 변환 정리(1) 숫자형 문자를 정수로 반환 숫자만 포함된 문자를 정소로 변환하는것은 매우 쉽습니다. 다만 문자에 숫자만 있다고 확실히 보장해야 합니다. int value = Convert.ToInt32(str); hexString을 정수로 변환 int n = Int32.Parsse(string,System.Globalization.NumberStyles.HexNumber); 문장이 숫자를 표현하는지 확인 str = "1234"; int num = 0; bool is_num = int.TryParse(str,out num); if(is_num==true){ //- 숫자형 문장입니다. //- num에 숫자가 기록된다. } 원하는 문자들만 출력, 특수문자를 제외하는 방법 using System.Text.RegularExpre.. 2021. 8. 11. RaspberryPi-한글 설정 Raspberry Pi를 한글로 설정해서 설치하면, 처음에 한글 부분이 모두 보이지 않습니다. 이는 터미널에서도 동일합니다. 다음과 같은 내용을 설치하고 reboot 하면 한글 부분이 잘 보입니다. sudo apt-get install ibus -y sudo apt-get install ibus-hangul -y sudo apt-get install fonts-unfonts-core -y 2021. 8. 11. MobaXterm, WinSCP의 설치와 활용 ssh 접속을 위한 MobaXterm ssh를 통해 Raspberry Pi에 접속해서 원격 작업을 많이 수행하게 됩니다. 가장 많이 사용하는 방법은 Putty를 이용하는 거겠죠. 그러나 Putty는 다중 모니터 환경을 제공하고 있지 않기 때문에 아주 조금 불편합니다. 'MobaXter은 4개의 다중 모니터 환경을 제공합니다. 즉 4개의 Raspberr Pi에 동시에 접속하거나, 한 개의 Raspberry Pi에 다른 4개의 경로에 접속해서 사용해도 됩니다. MobaXterm은 https://mobaxterm.mobatek.net/download.html에서 구할 수 있는데, 가정에서 사용하는 조건이면 무료입니다. 그러니 사무실에서 사용하려면 구매를 해야 합니다. 설치된 MobaXterm에서 4개의 모니터.. 2021. 8. 11. RaspberryPi- sysv-rc-conf로 부팅 프로그램 관리 그리고 런 레벨 Raspberry Pi에서 부팅을 통해 동작하는 프로그램을 설정할 수 있습니다. 이를 관리하는 간단한 프로그램이 sysv-rc-conf로 다음과 같이 설치합니다. 이 프로그램은 sudo와 함께 사용해야 합니다. sudo apt-get install sysv-rc-conf 그러면 다음과 같이 리눅스의 런 레벨에 따라 동작할 프로그램을 지정할 수 있습니다. 사용 방법은 스크린 맨 위에 표시됩니다. 부팅 시, 동작하고자 하는 프로그램과 런 레벨을 x 표시로 묶어서 활성화하면 됩니다. 대부분의 프로그램이 적합한 런 레벨을 설정해 줍니다. 또한 프로그램의 실행 여부를 결정할 수도 있습니다. (service 명령어와 동일합니다.) 런 레벨(run level)은 어떤 내용으로 리눅스를 실행할 것인지 설정하는 방식입니.. 2021. 8. 11. mplayer 설치와 활용방법(1) mplayer는 command로 제어하기 편리한 오디오 재생 프로그램입니다. 특히 slave mode를 통해서 제어가 가능합니다. mplayer의 설치 sudo apt-get install mplayer mplayer의 간단한 재생 기본 출력으로 선정된 사운드 카드로 재생하는 방법입니다. mplayer test.mp3 특정 사운드 카드를 선정해서 재생할 수도 있습니다. 사운드 카드 번호는 aplay -l 을 통해 확인할 수 있습니다. mplayer -ao alsa:devie=hw=0.0 test.mp3 만약 -ao를 사용하지 않고 지속적으로 사운드 카드를 지정하고 싶다면 다음이 파일 내용을 조정합니다. sudo nano ~/.mplayer/config 원하는 사운드 카드 번호를 입력합니다. ao=alsa.. 2021. 8. 11. Linux-DOS format 파일의 사용 windows에서 생성된 파일을 linux에서 사용하려면 오류가 발생할 때가 있습니다. 이는 window에서 생성된 파일은 기보적으로 DOS format으로 기록되기 때문입니다. 이를 linu에서 사용하려면 다음의 파일을 설치하면 됩니다. sudo apt-install dos2unix 그리고 변환고자 하는 파일을 선택하여 실행하면 됩니다. sudo dos2unix test.txt 2021. 8. 11. Linux- Shell 명령어에서 외부 변수 사용하기 shell를 사용할 때 가끔 외부 변수를 조건으로 사용하고 싶을 때가 있습니다. 다음과 같이 test.sh의 shell을 작성하면 두 개의 입력 변수를 받아서 화면에 출력하게 됩니다. #!/bin/Bash echo "> $1" echo ">> $2" 다음과 같이 실행해 보겠습니다. sh test.sh abc 1234 그러면 다음과 같이 출력됩니다. > abc >> 1234 shell에서 $0인자는 자기 자신을 의미합니다. c 언어에서 arg []의 첫 번째 내용이 자신의 이름을 표시하는 것과 같습니다. 그러므로 사용하고자 하는 인자는 $1부터 시작합니다. 2021. 8. 11. alsamixer의 조정 명령어 amixer로 사운드 카드 상태 알아보기 alsa의 mixer를 명령어로 조정이 가능합니다. 이를 프로그램에서 응용해서 실행할 수도 있습니다. 실행 명령어는 다음과 같고, 조정 가능한 내용이 출력됩니다. 조정 가능한 내용은 사운드 카드마다 다르기 때문에 출력 내용을 잘 봐야 합니다. 여기서 -c 0는 알아보고자 하는 사운드 카드의 번호인데, usb 사운드 카드 한 개만 조정하도록 설정했기 때문에 0번 사운드 카드만 적용할 수 있습니다. 다른 사운드 카드의 번호는 aplay -l로 확인해서 적용하면 됩니다. amixer -c 0 Simple mixer control 'Speaker',0 Capabilities: pvolume pswitch pswitch-joined Playback channels: Fro.. 2021. 8. 11. alsa의 믹서 조정 alsa는 믹서를 유틸리티로 포함하고 있습니다. 다음과 같은 명령어를 사용해서 믹서를 조정할 수 있습니다. alsamixer 그러면 조정 가능한 오디오 채널과 볼륨 조정 상태를 보여줍니다. 여기서 F5를 눌러서 사운드 카드를 선택합니다. 그리고 F5를 눌러 모든 오디오 채널을 표시하도록 유도합니다. 사운드 카드의 종류에 따라 보이는 내용이 다릅니다. 원하는 볼륨으로 조정 후에 esc 버튼을 눌러 종료합니다. 결과를 기록하고 싶으면 다음과 같이 실행합니다. sudo alsactl store 그런데 가끔 ssh로 위의 명령어를 실행하면 기록이 되지 않는 문제가 발생합니다. 이때는 vnc로 접근해서 터미널에서 실행하면 잘 됩니다. 위의 내용을 참조용으로만 사용해주세요. 무단 도용이나 무단 복제는 불허합니다. .. 2021. 8. 10. alsa와 usb 사운드 카드 설치 alsa의 설치 alsa는 Advanced Linux Sound Architecture의 줄인 말로, 리눅스의 표준 오디오 인터페이스입니다. alsa는 라이브러리와 유틸리티를 포함하며 다음과 같이 설치합니다. sudo apt-get install libasound2-dev -y; sudo apt-get install alsa-utils -y 그리고 pi 사용자를 audio 사용자로 등록해 줍니다. (이 부분을 생략해도 됩니다) sudo adduser pi audio USB 사운드 카드 확인 Raspberry Pi의 내장 오디오 장치는 음질도 좋지 않지만 오디오 입력이 없는 단점이 있습니다. 그래서 일반적으로 usb 사운드 카드를 추가 설치합니다. 그리도 다음 명령어로 설치 상태를 확인할 수 있습니다. a.. 2021. 8. 10. SQlite SQlite는 소형 데이터베이스를 구현하는데 매우 유용한 방식입니다. 기능도 소형 장치를 위해 적합한 수준입니다. Linux에서는 다음과 같이 SQlite를 설치하고 데이터베이를 생성하고 관리하는 브라우저도 함께 설치합니다. 이 브라우저는 Windows용도 있어 사용이 편리합니다. sudo apt-get install sqlite3 sudo apt-get install sqlitebrowser 다음과 같이 vnc로 접근해서 개발 부분을 보면 DB Browser for SQLite를 실행하면 데이터베이스 접근 및 생성이 가능합니다. 또는 ssh에서 sqlitebrower를 쓴 다음에 실행해도 아래의 화면을 볼 수 있습니다. 2021. 8. 10. RaspberryPi- 바탕화면 바로가기 아이콘 Raspberry Pi의 바탕화면에 아이콘을 만들어 사용하는 방법입니다. 바탕화면의 아이콘은 /home/pi/Desktop/test.desktop 형식으로 기록됩니다. 여기서 test.desktop은 실험용 아이콘 이름입니다. 그러므로 다음과 같은 명령어로 아이콘을 생성합니다. sudo nano ~/home/pi/Desktop/test.desktop 그리고 다음 내용을 입력합니다. [Desktop Entry] Type=Application Encoding=UTF-8 Name=test Path=~/home/pi/test Exec=sh test.sh Terminal=true Icon=~/home/pi/test/test.png 그러면 바탕화면에 test 아이콘이 생성됩니다. Terminal=false로 하면 .. 2021. 8. 10. Linux- netstat, nmap. ufw로 네트워크 접근 관리 hr contenteditable="false" data-ke-type="horizontalRule" data-ke-style="style5" /> netstat netstat -a 명령어로 모든 network의 동작 상태를 볼 수 있습니다. netstat -l은 리스닝 상태만 보여줍니다. netstat -lnpt로 tcp의 리스닝 상태의 포트만 볼 수 있습니다. Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:8084 0.0.0.0:* LISTEN 556/mono tcp 0 0 0.0.0.0:22 0.0.0.0:* L.. 2021. 8. 10. Linux- 네트워크 통신 속도 알아보기 네트워크의 송신 수신 속도를 알아보려면 다음과 같은 내용을 먼저 설치합니다. sudo apt=get install ifstat -y ifstat를 실행하면 사용 중인 모든 네트워크 카드의 통신 상태가 1초 간격으로 계속 출력됩니다. ^C를 눌러서 진행을 멈출 수 있습니다. eth0 wlan0 KB/s in KB/s out KB/s in KB/s out 0.00 0.00 0.04 0.13 0.00 0.00 0.04 0.13 0.00 0.00 0.04 0.11 0.00 0.00 0.04 0.11 이번엔 무선랠카드의 상태를 1초 간격으로 3번만 출력하겠습니다. ifstate -i wlan0 1 3 wlan0 KB/s in KB/s out 0.04 0.11 0.04 0.11 0.04 0.11 무선랜 상태를 한번.. 2021. 8. 10. 이전 1 ··· 4 5 6 7 8 다음