윈도우에서 콘솔을 열면 파워셸(power shell)이 기본으로 실행됩니다. 그러다 보니 비주얼 스튜디오(Visual Studio)에서도 터미널을 열면 파워셸입니다. 그런데 가끔 파워셸에서 문제가 발생할 때가 있는데..... (거의 경로 문제나 권한 문제인 경우가 많다.) 이럴 때 이게 배시(bash)에서도 같은 오류가 나는지 확인하고 진행하고 싶을 때가 있습니다. 비주얼 스튜디오에 'Git Bash'를 설정하여 사용해 봅시다. 1. 비주얼 스튜디오에서 터미널 열기 비주얼 스튜디오에서 솔루션 탐색기 > 해당 위치에서 오른쪽 클릭 > 터미널에서 열기 를 선택하여 터미널을 열면 자동으로 해당 경로에서부터 터미널이 시작됩니다. 2. 터미널에 '깃 배시(Git bash)' 추가하기 윈도우에서 '배시'를 사용하기..
우분투에서 부팅시 스크립트 실행하는 기능에 대한 글은 많습니다. 몇가지 빼고는 우분투 마테에서도 동작합니다. 저는 UI로 설정하는 방법을 정리했습니다. 1. 시작 프로그램(Startup Applications) 위치 아래 메뉴를 선택합니다. Menu > Preferences > Startup Applications 2. 시작 프로그램 추가하기 'Add'버튼을 누릅니다. 'Name'에 표시할 이름을 넣어줍니다. 'Command'란에 원하는 명령어를 작성합니다. 재부팅을 해보면 명령어가 실행된걸 확인 할 수 있습니다. 마무리 저는 명령어 사용하는 것보다 GUI를 이용하는게 더 직관적이라고 생각되는데 말이죠 ㅎㅎㅎㅎ 각자 취향아니겠습니까?
예전부터 정규식 개체(Regexp)를 사용할 때 값이 제대로 일치하다 말다 한다는 생각을 많이 했습니다. 그래서 가급적 정규식 개체를 사용하지 않았는데...... 의외로 원인은 쉬운 곳에 있었습니다. 1. 문제의 발견 아래와 같이 정규식 개체를 만들고 /** 정규식 개체 */ reg = /\{\{[a-zA-Z0-9]+:[a-zA-Z0-9]+\}\}|\{\{[a-zA-Z0-9]+\}\}/g /** 테스트 문자열 */ testString = "{{test001}}, {{test001:test1}}, {{test001:a}}, {{aa}}"; 아래와 같이 정규식 개체를 사용하는 함수를 만들어 줍니다. private F1(): void { console.log("F1 : " + this.reg.exec(this..
오드로이드(Odroid)용 리눅스는 우분트 마테(Ubuntu MATE)가 제공됩니다. 우분트 마테는 처음 써보는 데다 'ARM64'버전이라 신경 써야 할 것이 좀 있습니다. 내용 자체는 오드로이드 기준입니다만.... 'ARM64'를 쓰는 기계라면 동일할 것입니다. 1. 'ARM64'용 팀뷰어 다운로드 리눅스용 'ARM64'버전을 다운로드받아야 합니다. 다운로드 - TeamViewer - Download Linux page 우분투(Ubuntu) > arm64-64bit 을 다운받습니다. 1. 설치 다운로드받은 파일의 경로로 가서 아래 명령어로 설치를 시작합니다. dpkg -i teamviewer-host_15.40.8_arm64.deb 슈퍼유저(superuser) 권한이 없다고 에러가 나면 'sudo'를 ..
.NET 4.x에서 'SocketAsyncEventArgs'를 쓰다가 그대로 .NET 5로 업그레이드하면 'Completed'이벤트가 오지 않는 현상이 있습니다. (참고 : github - DGSocketAssist/DGSocketAssist1/) 아래 스크린 샷은 .NET 4에서 만든 'SocketAsyncEventArgs'를 .NET 5에서 사용한 경우입니다. 'SaeaSend_Completed'이벤트가 오지 않은 걸 확인할 수 있습니다. 아래 스크린 샷은 .NET 4에서 정상 작동한 경우입니다. 이것은 .NET 5부터 'ReceiveAsync', 'SendAsync'가 동기로 동작하기 때문입니다. 이 포스팅은 'ReceiveAsync'을 기준으로 설명합니다. ('SendAsync'도 똑같기 때문) ..
우분투 메타의 종료 지연시간은 60초입니다. 이게 일반 PC용이면 큰 문제가 없겠지만 산업용 보드에서 이렇게 길게 대기를 할 수 없으므로 시간을 줄여봅시다. 1. 세션(Session) 타임아웃(Timeout) 지정 아래 명령어를 통해 세션 타임아웃을 지정해 줍니다. gsettings set org.mate.session logout-timeout [시간(초)] # 예 - 10초 gsettings set org.mate.session logout-timeout 10 2. 파일 수정(안됨) '/etc/systemd/sysyem.conf' 파일의 'DefaultTimeoutStopSec'를 수정해도 된다는데.... OS 버전 문제인지 저는 되지 않았습니다. (참고 : learnubuntumate.weebly...
부팅 시 실행시킬 셸 스크립트를 만들었는데...... 이게 창이 안 열리고 실행됩니다. 로그에는 실행됐다고 나오는데 이게 잘 돌아가고 있는 건지 만건지;;;; 그래서 새 터미널 창을 열어서 실행시키는 방법을 정리했습니다. 1. 기본 사용 방법 우분투 마테에서는 새 터미널 창을 여는 명령은 다음과 같습니다. mate-terminal -e [실행할 명령] # 예제 mate-terminal -e /home/odroid/CronTest.sh 2. 옵션 추가 옵션을 넣어 실행하려면 따옴표(')로 묶어야 합니다. mate-terminal -e '[실행할 명령]' # 예제 mate-terminal -e 'bash /CronTest.sh' 마무리 왜 리눅스 버전마다 터미널 여는 명령어가 약간씩 다른 걸까요...?
'Serial.read()'로 읽어서 쓸 때는 이런 현상이 없습니다. 그런데 'Serial.readBytesUntil()'를 사용하여 데이터를 읽었더니 1초 정도 반응이 느린 듯한 느낌을 받았습니다. 아래 스크린샷을 보면 연속으로 명령을 보냈는데 묘하게 다음 요청의 응답이 오는데 1초가량의 텀이 있는 것 처럼 보입니다. 문제없는 스크린샷을 보면 좀 더 명확해집니다. 이건 각 명령어의 텀이 없습니다. 1. 원인 문서를 확인해 보았습니다. arduino reference - Serial.readBytesUntil() 문서에 보니 1) 결정된 길이를 읽거나(지정된 버퍼를 채울 때까지) 2) 지정된 시간이 초과하거거나( Serial.setTimeout() ) 3) 지정된 종결 문자가 올 때(함수별로 차이 있음)..
우분투(Ubuntu) 자동로그인 설정이 안 먹어서 오드로이드(Odroid)로 검색했더니 바로 나오네요...... 참고 : Odroid 영문 포럼 - Activating Autologin 우분투와 설정이 다른데... 우분투 마테(Ubuntu MATE)의 설정이 다른 거 같습니다. 1. 15.10 이전 버전 확인된 건 15.10 버전이지만 18버전 이전까지는 똑같지 않았을까 생각됩니다. 아래 파일을 열어 /usr/share/lightdm/lightdm.conf.d/60-lightdm-gtk-greeter.conf 아래 코드를 추가해 줍니다. autologin-user=odroid 2. 18.04 이후 버전 18.04 버전부터는 /usr/share/lightdm/lightdm.conf.d/50-ubuntu-m..
원인이 다양한 에러 중의 하나가 500.30 에러입니다. 500에러가 대부분 그렇지만 일단 '이벤트 뷰어'로 상세한 정보가 있는지 확인해야 합니다. 이 포스팅은 다른 원인을 발견할 때마다 추가하고 있습니다. 1. 디렉터리 없음 루트 디렉터리를 찾지 못해 발생하는 오류입니다. exception code = '0xe0434352'. System.IO.DirectoryNotFoundException ASP.NET의 경우 'wwwroot'가 기본 폴더인데 이게 없을 때 주로 발생합니다. (만약 루트 디렉터리를 변경했다면 변경한 디렉터리가 없으면 에러가 납니다.) 위 스크린샷의 경우 루트디렉터리가 'wwwroot\production-home'인데 이것을 안 만들어서 이 에러가 발생했습니다. 2. SQL 서버 연결..