LNK1561 entry point must be defined + LinkFileDir
해결방법 : Property > Configuration Properties > Configuration Type > .dll 로 변경
LNK1561 entry point must be defined + LinkFileDir
해결방법 : Property > Configuration Properties > Configuration Type > .dll 로 변경
LNK2019 unresolved external symbol _main referenced in function "int __cdecl invoke_main(void)"
원인 : 프로젝트에서 메인 함수를 찾지 못함!
main 이라는 이름을 가진 함수가 없음
해결방법 : Properties > Linker > system > SubSystem > delete Contents
C/C++ : Cannot find or open the PDB file. (0) | 2022.06.08 |
---|---|
C/C++ : LNK1561 entry point must be defined + LinkFileDir (0) | 2022.03.17 |
UiPath : If : Arithmetic operation resulted in an overflow (0) | 2020.07.24 |
UiPath : Excel Application Scope: Exception from HRESULT: 0x800A03EC (0) | 2020.07.24 |
UiPath : Kill Process : Encounter errors while trying to kill a process (0) | 2020.07.21 |
행벡터 열벡터 너무 오랜만이당 다신 안볼줄 알았는데... 아쉽...
(1) 행렬과 배열 생성
>> 입력
% tutorial_02.m
%-------------------------------------------------------
% 행렬과 배열 생성
% 행렬 생성
a = [1 2 3 4]; % 1행 4열 << 행벡터
b = [1 2 3 4; 5 6 7 8]; % 2행 4열
% 함수를 이용한 행렬 생성
c = zeros(5,1); % 5행 1열, 영행렬 << 열벡터
d = ones(3,3); % 3행 3열, 1로 구성된 행렬
e = rand(2,3); % 2행 3열, 숫자 랜덤 발생
f = randi(10,2,3); % 2행 3열, 정수 랜덤 발생
% randi(최대정수,행,열)
% 그냥 출력은 disp()사용!!
% 행렬 출력
disp("행렬 'A'를 출력합니다."),disp(a);
disp("행렬 'B'를 출력합니다."),disp(b);
disp("행렬 'C'를 출력합니다."),disp(c);
disp("행렬 'D'를 출력합니다."),disp(d);
disp("행렬 'E'를 출력합니다."),disp(e);
disp("행렬 'F'를 출력합니다."),disp(f);
%-------------------------------------------------------
>> 출력
>> tt02
행렬 'A'를 출력합니다.
1 2 3 4
행렬 'B'를 출력합니다.
1 2 3 4
5 6 7 8
행렬 'C'를 출력합니다.
0
0
0
0
0
행렬 'D'를 출력합니다.
1 1 1
1 1 1
1 1 1
행렬 'E'를 출력합니다.
0.3371 0.7943 0.5285
0.1622 0.3112 0.1656
행렬 'F'를 출력합니다.
7 7 8
3 7 5
(2) 행렬의 연산
>>입력
% 행렬의 연산
% 그냥 단순히 연산만 해버리면 컴퓨터에서 처리할 수 있는 범위를 벗어남
% 관련 에러
% Index exceeds the number of array elements. Index must not exceed 1036.
format long;
f_ad = f + 10; % 행렬의 모든 값 + 10
f_sn = sin(f); % 행렬의 모든 값을 sin 처리
f_tp = f'; % 전치행렬
f_inv = pinv(f); % 의사역행렬 << 정방이 아니니까 의사역행렬 사용
% 행렬의 복소수 표현
% 실수부 + 허수부i/허수부j
g = [3+4i, 4+3j; -i, 10j];
% 행렬 출력
disp("행렬 f에 10을 추가합니다."),disp(f_ad);
disp("행렬 f를 sin 처리합니다."),disp(f_sn);
disp("행렬 f의 전치행렬"),disp(f_tp);
disp("행렬 f의 의사역행렬"),disp(f_inv);
disp("행렬의 복소수 표현"),disp(g);
disp("행렬 f는 정방행렬이 아니라서 역행렬처리 불가 !! ㅋㅋㅋㅋ ");
>> 출력
행렬 f에 10을 추가합니다.
20 12 15
15 13 16
행렬 f를 sin 처리합니다.
-0.544021110889370 0.909297426825682 -0.958924274663138
-0.958924274663138 0.141120008059867 -0.279415498198926
행렬 f의 전치행렬
10 5
2 3
5 6
행렬 f의 의사역행렬
0.165238678090575 -0.131578947368421
-0.072215422276622 0.131578947368421
-0.101591187270502 0.210526315789474
행렬의 복소수 표현
1번 열
3.000000000000000 + 4.000000000000000i
0.000000000000000 - 1.000000000000000i
2번 열
4.000000000000000 + 3.000000000000000i
0.000000000000000 +10.000000000000000i
행렬 f는 정방행렬이 아니라서 역행렬처리 불가 !! ㅋㅋㅋㅋ
의사역행렬 참조 : https://bskyvision.com/256
MATLAB : Array (0) | 2022.04.08 |
---|---|
MATLAB : Introduction & Basics (2) | 2022.04.08 |
MATLAB : 설치 및 튜토리얼 01-데스크탑 기본 사항 (0) | 2022.02.19 |
학교에서 MATLAB을 이용해서 과제를 주신다고 하시길래 간단하게 예습을 해보고자 한다.
-----------
https://kr.mathworks.com/?s_tid=gn_logo
매트랩 홈페이지에 접속해서 트라이얼 버전을 다운받았다.
역시나 다운로드 받기까지 나의 여러 가지 개인 정보를 제공했..
MATLAB 실행파일을 받고 다운로드 할 때는 별 다른 설정이 필요하지 않으면 next next next next >>>>
설치 도중에 물어보는 MATLAB 추가 기능에 대해서는 나는 그냥 전체 선택하고 넘어갔음.
MATLAB 예습을 위해서 구글링을 하면서 도움이 될만한 포스팅이나 유튜브 강의를 찾아보았는데
유튜브 강의는 대학에서 강의용도로 제공하는 영상들이 대부분으로 있었음.
나는 그냥 쓰는 방법 정도만 익히고 싶기 때문에 강의까지는 너무 어렵고 초록색 부분의 시작하기를 눌러서
MATLAB에서 제공해주는 기본 튜토리얼을 성실하게 따라가 보려 함 ^^
초록색으로 표시된 튜토리얼을 잘 따라가 보자.
1) 글씨 크기 바꾸깅
도 있지만 그냥 crrl 누르고 마우스 휠 도르륵...
2) 파일 저장 및 명명 규칙
"ctrl+N"' 누르니까 스크립트창이 생겼고 커맨트창은 따로 있음. 파일을 저장하면 .m 으로 저장됨.
대충 01.m 으로 저장하려고 했는데 이런 알림 창이 뜸.
다른 언어도 파일을 생성할 때 이름을 규정하는데 제한이 있었는데 MATLAB도 그런가보다.
https://kr.mathworks.com/help/matlab/matlab_env/specify-file-names.html
요건 파일 명명 규칙 관련된 가이드
>> 입력
% tutorial_01.m
% 변수 설정 및 간단한 연산 ^^
% 변수 설정
% 변수명 = 값
a = 10;
b = 20;
c = a + b;
% % 출력
disp('A + B = '),disp(c);
disp(sprintf('A + B = %d ',c));
fprintf('A + B = %d \n',c);
% 함수 사용
d = sin(c);
e = cos(c);
f = tan(c);
% 함수 값을 문자로 변환 후 출력
fprintf('sin(A+B) = %d \n',d);
fprintf('cos(A+B) = %d \n',e);
fprintf('tan(A+B) = %d \n',f);
>>출력
>> tt01
A + B =
30
A + B = 30
A + B = 30
sin(A+B) = -9.880316e-01
cos(A+B) = 1.542514e-01
tan(A+B) = -6.405331e+00
>>
* 정리 *
- % : 한 줄 주석, 주석 단축키 ctrl+R
- 출력
1) disp('출력 할 문자열'); /// disp('출력'),disp('할')disp('문자열'); >> 구분자에 따라서 \n가 적용 됨.
2) disp(sprintf('출력 할 문자열 %d', 변수));
3) fprintf('출력 할 문자열 %d', 변수); >> 한번에 처리해서 간편하지만, 한 줄 안바꿔주니까 필요시에 \n 표기 필수.
1) fprintf(변수명); 은 에러가 났음. 그냥 문자열 포함 없이 출력하고 싶을땐 어떻게 해야함?
2) 예전에 py로 데이터 활용하는 과제하다가 썻던 lib가 math 뭐시기였는데 기억이 안남
3) 참고 url
https://kr.mathworks.com/help/matlab/ref/run.html
https://blog.naver.com/PostView.nhn?blogId=smssky88&logNo=220278466794
https://aigong.tistory.com/205
요건 sin, cos, tan 결과값 이해하려고......
https://seulcode.tistory.com/461
MATLAB : Array (0) | 2022.04.08 |
---|---|
MATLAB : Introduction & Basics (2) | 2022.04.08 |
MATLAB : 튜토리얼 02 - 행렬과 배열 (0) | 2022.02.21 |
이전에 컴활 1급을 공부해본 경험이 있어서, 2급 공부하는데 문제 없었음.
특히나 실기를 공부하면서 1급 실기시험과의 차이를 실감할 수 있었음.
실제로 공부한 기간은 하루? 가 아니라 솔직히 적으면 4시간도 안되는 것 같음.....
* 공부 방법 (기록용)
1. 기출 문제 풀었음
2. 엑셀 함수 오답노트 만들어서 연습해봄
(약간 이런 느낌으로 엮어서...)
1. 컴퓨터 활용능력 실기시험 관련 블로그
m.blog.naver.com/PostList.nhn?blogId=won2520179
www.youtube.com/channel/UCC5fndmoxrdNHJG6XGdT4KQ
ㅋㅋㅋㅋ 뭔가 광고같은 의도는 없었지만 공부하면서 많은 도움이 되어서 올림..
좀 돌아다녀 보니까, 이 블로그나 학원에서 도움을 받은 사람들이 기풍쌤한테 그날 본 시험 기출을 알려주고
그걸 엮어서 문제를 만드는 것 같았음. 이렇게 실기 대비해도 훌륭하다고 봄.
2. 기출 문제 자료
자료를 원래 .zip 파일로 묶어서 가지고 있긴 한데...
위 블로그에서 자료를 모두 받아온거라서, 그냥 올리긴 그렇고 비번 걸어서 올리겠음.
Python 기초 프로그래밍 과외 자료 백업 (0) | 2022.03.18 |
---|---|
20.10.10 ~ 20.10.12 : 컴퓨터활용능력 2급 필기 (0) | 2020.10.14 |
* 공부 방법 (기록용)
1. 한 2시간 동안 요점 정리를 읽고 대충 이해하고 넘어감
2. 기출 문제 뺑뺑이
3. 시험 보는 날 틀린 것만 다시 뺑뺑이
1. 도움되었던 사이트 CBT : www.comcbt.com/
자격증 공부할때마다 이용하는 것 같다. ㅎㅎ
저어기 노란색으로 표시한데에 아이디나 이름 같은걸 넣어서 내가 풀었던 문제나 오답들을 관리할 수 있다.
그럼 나중에 틀린것만 모아서 시험볼때 좋다.
2. 2020년도 컴퓨터활용 2급 필기 요약 자료
Python 기초 프로그래밍 과외 자료 백업 (0) | 2022.03.18 |
---|---|
20.10.15 ~ 20.10.17 : 컴퓨터활용능력 2급 실기 (0) | 2020.12.29 |
Attended Robot과 Unattended Robot은 무인인점과, 아닌 점이 차이점.
방법은 작업 스케줄을 이용한다.
다른 방법들을 찾아봐도, forum이나 Stackoverflow 등등 에서도 다 똑같은 솔루션을 제시했다.
정말 그 작업 스케줄러일까? 했는데, 생각했던 그게 맞았다. (충격)
작업 스케줄러를 실행하면 이런 화면이 나옴. 당황하지 말고 우측에 있는 [작업 만들기] 를 누름.
오케스트레이터를 사용해본 사람들은 대충 탭 이름만봐도 뭘 설정하는지 감이 옴 ㅎㅎ
트리거는 등록해놓을 작업을 어느 일시에 돌게 할 것인지 설정하는 탭일테고,
동작은 그 일시에 어떤 작업을 실행시킬지에 대한 탭일것이다.
나머지, 일반/조건/설정 탭에서는 동작시키려는 '작업'에 대한 권한 조정 등 세부적으로 조정할 수 있다.
먼저, 트리거를 들어가보자.
왼쪽 화면의 [새로 만들기] 버튼을 클릭하면 오른쪽 화면의 [새 트리거 만들기] 화면이 나온다.
오른쪽 [새 트리거 만들기] 에서 작업을 수행시키고자 하는 일시를 설정하여 저장하면, 왼쪽의 [트리거] 탭의 목록에 만들어진다.
이런식으로 다양하게 일자를 조정할 수 있다.
아래 사진처럼, 매월 단위에 일자별로도 선택해서 설정해줄수도 있다.
... 뭐, 그래서 일단 트리거는 이런식으로 설정하면, 시기에 맞춰 작업이 수행된다.
그럼 일시는 설정해두었다치고, 작업을 등록해서 사용해야하는 경우는 어떻게 해야할까?
[동작] 탭에 들어가서 설정해야한다.
오호 이때부터 얼탔다. 뭐 어떻게 해야하는걸까 싶었는데, 사실 간단하다.
왼쪽의 화면에서 [새로 만들기] 버튼을 누르면 오른쪽 화면이 나온다.
[동작] 이라는 설정 옆에 드롭다운 형식으로 있는데, "프로그램 시작"은 말 그대로, 설정해둔 작업을 시작한다는 의미이다. (당연한 얘기를 당연하게 하는 이유는 역시 내가 친절보스이기 때문이다. ^^7)
중간에 보면, [프로그램/스크립트(p)] 라는 설정이 있는데, 보니까 파일을 등록하라고 한다.
여기에서는 2가지 방법이 있다. (나는 2가지만 알고 있기때문임)
1. .bat 파일 등록
2. Robot.exe 실행파일 등록 후 Main 파일 인수 설정
* 배치 파일 : 명령 인터프리터에서 실행되게끔 코딩되어있는 파일
배치 파일을 만드는 방법은 심플하다. 그냥 우리가 평소에 코딩할때랑 똑같이하면 됨.
메모장을 사용해도 괜찮고, 그냥 에디터 하나 켜서 코드를 넣고 빨간색 박스와 같이 .bat 확장자로 저장하면 된다.
배치 파일 내에 사용한 코드는 다 비슷하기 때문에 아주 잘 설명되어있는 아래 URL을 참고하자. ^^7
forum.uipath.com/t/bat/198585/5
저렇게 만들어진 .bat 파일을 등록하면 된다.
위의 참고글을 봐서 알겠지만, -file 인수까지 코딩해서 .bat 파일에 포함되기 때문에,
[새 동작 만들기] 에 인수나 추가적인 옵션을 입력하지 않아도 된다.
이 방법은, UiPath Robot.exe 실행 파일을 등록하여
패키지로 추출한 Main 파일이나 Package를 인수로 설정하여 동작시키는 방법이다.
위 사진에 있는 대로, Ui Robot.exe 실행 파일을 프로그램으로 등록한 후,
-file "살행하려는 .main 파일의 경로를 입력" 하면 된다.
프로그램 파일로 Ui Robot 을 등록하는 이유는
RPA를 실행하는 녀석은 Main.xaml이 아니라, UiProbot.exe 이기 때문이다.
Main.xaml은 그냥 RPA 스크립트일 뿐이고 실제 로봇이 동작하는것은 UiRobot이라는 것 !!
실제 입력해야하는 프로그램 경로나 인수에 대한 값 정보는 아래의 포스팅에 잘 기록되어있다.
참고 URL : charmingtree.tistory.com/5
Image를 이용한 Activity (0) | 2020.08.05 |
---|---|
"", Empty, Nothing, Null, vbNullChar, vbNullString, Missing 차이점 (0) | 2020.06.22 |
Exception의 종류와 발생조건 (2) | 2020.06.05 |
백그라운드 프로세스 체크하기 (0) | 2020.06.02 |
Write data horizontal 셀 한개씩 가로로 쓰기 / 엑셀 컬럼 인덱스 구하기 (0) | 2020.06.01 |
특수한 환경에서 개발해야하는 경우가 반드시 생긴다.
셀렉터도 안먹고, 그렇다고 해서 DT 스크래핑도, OCR도 정상적으로 돌아가는 것도 아니다.
다른 경우의 수가 다 먹히지 않는다면, Image를 이용해서 개발해야한다.
하지만, 예외 상황에 대한 경우의 수가 많아질 수 있고, 머신의 해상도나 배율이 개발PC 환경과 달라지면
............작동이 전혀 안될 수 있다................... ㅠㅠ ......................
그런 점을 유의해서 여러가지 상황에 대한 예외처리도 잘 하고 한다면 문제 없이 사용 할 수 있을 것 같다.
액티비티 이름만 봐도, 사용용도가 무엇인지, 어떻게 사용해야하는지 감이 오는.. ㅋㅋ
위 Image 관련 액티비티들을 보면 기존의 액티비티에서 사용하고 있는 것들이 많아서 사용용도는 똑같다고 보면 된다.
이러한 Image 액티비티를 사용하기 위해서는 속성 값을 잘 파악해두면 좋다.
Image에 관련된 속성들을 보면 Input은 공통으로 가지고 있는 속성이다.
속성 이름 | 설명 |
Accuracy | 이미지를 찾는데 정확성을 나타낸다. 속성 값의 범위는 0~1 1 로 작업할 경우, 잡아둔 이미지가 완전히 동일하지 않으면 인식하지 못한다 !! 기본값은 0.8이어서, 더 정확도를 높이고자 한다면 0.9 정도가 적당할 수 있다. |
Image | 이미지 값을 설정하는 속성이다. 이미지 변수만 지원한다. InArgument<Image> |
Profile | ImageFindProfile.Basic ImageFindProfile.Enhanced 이 속성에 대한 두가지 설정값이 있는데, Basic 은 기본 값으로 설정되어있다. Basic을 사용하면 그냥 기본만큼 한다고 생각하면 되겠고, Enhanced를 사용하면 리소스를 더 잡아먹으면서 디테일하게 잡는다..고... UiPath Document에 나와있지만 써보면 그닥... 그냥 똑같던데 내가써서그런가 |
위의 속성값과 timeout 값을 잘 조절하다보면, 하나도 못잡던 것도 더 정확하고 빠르게 잡을 수 있게 된다.
예를 들어서, 정확도를 약간 높이면서 timeout 시간을 짧게 설정하고 retryscope를 돌리면서 말이다.
그러면 실행하는 동안에 여러번 수행을 하면서 보다 정확하게 에러가 나지 않고 잡을 수 있게 된다.
저건 내가 잡아오려는 Image를 찾을 범위를 설정해준다.
최대한 이미지를 잘 잡을 수 있도록 범위를 설정해두고 그 안에서 찾는다면, 더 효과적으로 엘리먼트를 찾을 수 있다.
그래도.. 되도록이면 Image 안쓰는 방향으로...!
** 참조 URL
https://docs.uipath.com/activities/docs/ui-automation-ui-automation
Window Schedule, 작업 스케줄을 이용한 UiPath Robot 실행 (0) | 2020.10.12 |
---|---|
"", Empty, Nothing, Null, vbNullChar, vbNullString, Missing 차이점 (0) | 2020.06.22 |
Exception의 종류와 발생조건 (2) | 2020.06.05 |
백그라운드 프로세스 체크하기 (0) | 2020.06.02 |
Write data horizontal 셀 한개씩 가로로 쓰기 / 엑셀 컬럼 인덱스 구하기 (0) | 2020.06.01 |