지식메모

반응형

깜빡 하면서 실행되지 않는다

최신 버전의 이클립스를 사용하다가 플러그인이 지원을 하지 않아 구 버전(Neon) 이클립스를 받아서 실행하였다

그런데 실행이 되지 않는다. 또 한참을 삽질을 했다.

이 현상을 해결하기 위해 구글링을 해보면 eclipse.ini 파일 수정하라는 얘기가 제일 많이 나온다

-vm 에 자바 경로를 추가해라..

java.se.ee 였나 이거 추가해라.. 등등이 있는데 전혀 해결되지 않았다

결론은 자바 버전이 문제였다

자바를 11.0.2 최신 버전을 설치했었는데 이게 이클립스 구버전에서 지원이 안되는 것이었나보다.

자바를 지우고 구버전 JDK 1.8.0을 설치하였따

그랬더니 단번에 해결..

오늘도 역시나 최신 업데이트는 함부로 하는게 아니라는 진리를 깨달았다..

반응형
반응형

String 배열을 사용해서 콤보박스에 값들을 보여줬었는데

ArrayList를 사용해서 콤보박스에 보여주고 싶었따.

스트링 배열은 String[] account1 = { id,id1,id2}

이런식으로 콤마로 이루어진 값이었는데 ArrayList는 배열마다 각 값을 가지고 있기 때문에 나중에 관리하기 편할 것 같았다.

기존 String 배열(account1)을 콤보박스에 넣었을 때 코드

JComboBox<?> comboBox = new JComboBox<Object>(account1);

ArrayList(account1)를 콤보박스에 넣을 때 코드

JComboBox<?> comboBox = new JComboBox(account1.toArray(new String[account1.size()]));

이렇게 하면 account1 배열의 사이즈만큼 알아서 콤보박스에 값이 노출되었다

반응형
반응형

 

 

 

언제나 그랬듯이 오랜만에 건드리는 것들은 어김없이 에러를 내뱉는다

갤럭시 노트9 안드로이드 9.0 으로 올리고 uiautomatorviewer 를 실행시켜서 화면 캡쳐를 하려 했더니만..

Error taking device screenshot: EOF

얜 또 뭘까..?? EOF 뭔가 DJ 페스티벌 이름 같다.

 

해결책

결론적으로는 희한하게 노트북에서는 uiautomator가 정상적으로 동작했는데 노트북에 설치되어있는 adb.exe 파일을 복사해서 데스크탑에 붙여넣기 했더니 해결되었다.

uiautomator가 동작했던 노트북의 sdk 설치현황

 

 

 

경로는 SDK가 설치된 폴더로 가서 sdk\platform-tools 이 경로에 붙여넣기 해야한다.

단 혹시 모르니 기존 adb.exe 파일은 백업해놓고 하는 것이 좋다

 

바로 이 26.0.2 버전의 adb 파일을 붙여 넣어 해결이 되었다.. 확장자를 바꾼거라 압축을 풀지 않고 .zip > .exe 로 바꿔주어야 한다. 귀중한 파일이기에 첨부

 

adb.zip
1.47MB

 

추정원인

adb 버전이 문제인 것 같다. 구글링 했을 때도 adb 버전을 낮추라는 의견이 있었는데 "귀찮아서" 다른 해결책들만 주구장창 해봤는데 결국 adb 이놈이 문제인 것 같다.

 

노트북의 Android SDK PlatformTools 버전은 26.0.2
데스크탑의 Android SDK PlatformTools 버전은 28.0.2

데스크탑의 Android SDK PlatformTools 버전이 더 높았다. 결국 버전을 낮추는게 해결책이었던 것 같다.

 

현재 데스크탑 SDK 설치 현황

 

이 방법 말곤 해결책이 없는걸까? 그럴리가 없을 것 같은데 아직 패치가 안된건가... 아무튼 해결됐으니..

혹시나 같은 문제를 겪고 있는 외국 유저들을 위해

Replace adb.exe! to Android SDK Platform-Tools 26.0.2 version of adb.exe!


 

 

시도해본 해결책들 - 참고할 필요 없으나 삽질 방지용 기록

구글링을 해봤는데 뭐 uiautomatorviewer.bat 파일을 편집하기도 하고 adb버전을 낮추라는 둥? 답변이 있었는데 그것까진 너무 귀찮았고(이걸 진작에 해봤어야 했는데..)

고민해본 결과 아무래도 안드로이드 9.0 파이에 대한 무언가가 설치가 안됐을 거라는 결론에 도달

안드로이드 스튜디오를 켜고 SDK 매니저를 열어서, 일단 안드로이드 9가 API 28버전이기 때문에 SDK 플랫폼에서 28버전을 설치해보았다

Android API 28 체크 후 Apply
설치

설치가 끝나고 다시 uiautomatorviewer를 실행 후 디바이스 스크린샷을 시도했지만 실.패.

(지금 생각해보니 이 때 안드로이드 스튜디오를 끄지 않았었는데 이것 때문일까 라는 생각이 든다)

그래서 뭐 또 설치 안한게 있나 살펴보다가 SDK Tools 탭에서 Android SDK Build-Tools 29-rc2 라는 놈이 있었는데

Android SDK Build-Tools 29-rc2 업데이트가 가능하다고 떠있다

 

 

Show Package Details를 클릭해보니 좌르륵 뜬다

여기서 살펴보니 28 버전 설치되어 있는게 아무 것도 없었다

 

그래서 가장 최신 28.0.3을 설치해주었다

28.0.3 체크 후 Apply

 

중간에 뭐 이런게 떴는데 걍 Next 해서 설치 완료

 

그리고 다시 해보니 스크린 샷이 떴다..?? 뭐지 그런데 다시 재시도 하니까 재발..

 

 

이건 아니다 싶어 다시 검색해본 결과  HXAM 얘가 유력한 원인인 것 같았다.

 

Hyper-V를 끄라는 답변이 많았다

그래서 끄려고 봤는데 없다..? 윈도우7이라 그런가 데스크탑에 뜨질 않는다. 아무래도 내 컴이 해킹을 당한건가... 온갖 문제는 다 생기는 것 같다.

 

그래서 저걸 끄는 방법을 또 구글링...

https://github.com/intel/haxm/wiki/Installation-Instructions-on-Windows

 

intel/haxm

Intel® Hardware Accelerated Execution Manager (Intel® HAXM) - intel/haxm

github.com

여기 들어가보니 커맨드 라인으로 끄는 법이 있었다

To verify that Intel HAXM is running, open a Command Prompt window with administrator privileges (Run as Administrator) and execute the following command:

sc query intelhaxm

If Intel HAXM is working, the command will show a status message indicating that the state is: "4 RUNNING".

To stop or start Intel HAXM, use these commands:

Stop:

sc stop intelhaxm

Start:

sc start intelhaxm

따라해보니 성공적으로 되었다.

 

이젠 되겠지..? 다시 uiautomatorviewer를 실행해서 캡쳐를 해보았는데 또 실패...

 

하....

이후로 sdk 재설치.. 안드로이드 스튜디오 재설치... SDK Tools 에서 intelHXAM intaller 재설치...

이걸로 이틀을 날렸다.. 그러다 3일 째 adb 버전 낮추라는 말이 번뜩 생각나서 노트북에 있는 adb.exe 파일 복사해서 데스크탑에 붙여넣었더니 해결...

 

증말...

 

반응형
반응형



보통 파티션은 컴퓨터 관리에서 가능한데

윈도우7에서 하드디스크 파티션 나누기 합치기

https://yonoo88.tistory.com/187


왠걸 SSD 포맷을 하려고 디스크 관리에서 볼륨을 삭제하고 합치려고 했는데 아래와 같은 복구파티션이라는 부분이 삭제가 안됐다

우클릭을 해도 도움말 메뉴만 나오는 상황



이걸 해결하기 위해 CMD를 관리자 권한으로 실행

아래와 같은 명령어를 입력해준다

디스크 0, 디스크 1 구분은 컴퓨터 관리 > 디스크 관리 메뉴에 나오는 걸로 확인하면 된다.


이 과정이 끝나면 복구파티션도 삭제 및 생성 등  파티션 관리가 가능해진다.

반응형
반응형




다수의 영상이 존재할 때 한번에 영상의 길이를 동일하게 맞추는 방법

다빈치 리졸브 15.2.4 기준





단축키로 공백을 한방에 없애는 꿀팁이 있었따.



반응형
반응형





영상을 보다보면 종종 아래 사진과 같이 영상과 똑같은 영상을 배경으로 집어넣은 영상이 있다.


다빈치 리졸브 15.2.4 에서 이 기능이 추가되었다









핵심은 Blanking Fill 이라는 효과로 Effect Library 에서 사용할 수 있다. 

Blanking Fill을 끌어다 타임라인에 가져다 놓으면 배경이 삽입되고




우측 상단 OpenFx에서 Blur Background 수치를 조절하여 배경의 흐릿함을 조절할 수 있다



특히 세로영상인 경우 가로영상일 때 양쪽 빈 공간이 생기는데 그럴 때 사용하기 딱 좋은 기능이다.



반응형
반응형




자동화를 하면 항상 새 크롬창을 띄웠는데 현재 실행 중인 크롬 창에서 실행할 수는 없을까해서 검색해본 결과


무조건 한번은 새로 크롬을 새로 띄워야 한다는 결론에 도달.


그리고 그 크롬에서 적용 할 수 있었다.


첫번째 해야할 것은 (크롬드라이버 다운은 필수)


cmd에서 디버그용? 크롬을 실행시켜야 한다


chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenum\AutomationProfile" 


이걸 cmd에서 실행해보면 크롬이 실행된다.


안된다면 C:\Program Files (x86)\Google\Chrome\Application\ 이 경로로 이동해서 실행해보거나


환경변수에 위 경로를 추가해준다.



이 크롬으로 계속 재활용할 수 있다.


이제 이걸 자바 코드 내에 cmd 실행을 시킨다음 실행해주면 된다.


참고로 코드 내에서 실행할 때는 완전한 경로로 해주어야 실행이 된다.


 Runtime.getRuntime().exec("C:/Program Files (x86)/Google/Chrome/Application/chrome.exe --remote-debugging-port=9222 --user-data-dir=\"C:/selenum/AutomationProfile\"");


위 코드를 먼저 실행해 준 다음


ChromeOptions options = new ChromeOptions();

options.setExperimentalOption("debuggerAddress", "127.0.0.1:9222");

driver = new ChromeDriver(options); 


크롬 옵션을 추가해주어 실행된 크롬창을 사용하도록 지정해준다.(9222포트는 위 실행명령어 포트와 동일)



전체적인 코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Automation {
 
    private static WebDriver driver;
 
    @BeforeClass 
    public static void setUp() throws Exception { 
        System.setProperty("webdriver.chrome.driver""C:\\chromedriver.exe");
            
        Runtime.getRuntime().exec("C:/Program Files (x86)/Google/Chrome/Application/chrome.exe --remote-debugging-port=9222 --user-data-dir=\"C:/selenum/AutomationProfile\"");
 
        ChromeOptions options = new ChromeOptions();
        options.setExperimentalOption("debuggerAddress""127.0.0.1:9222");
        driver = new ChromeDriver(options);
        
        System.out.println(driver.getTitle());
        driver.manage().window().maximize();
        driver.get("https://www.naver.com");
        
    }
}
cs



 자동화 실행 후 현재 실행중인 크롬에서 확인해보려면  Runtime.getRuntime().exec 코드를 주석처리하고 실행하면 확인해볼 수 있다


주석처리를 안하면 실행할 때마다 새로운 크롬이 생성된다.



반응형
반응형




셀레니움으로 자동화를 하다보면 작업관리자에 chromedriver.exe가 수두룩하게 누적되어 있는 걸 볼 수 있다


이게 쌓이다보면 메모리를 상당히 잡아먹고 있는데 그래서 자동화가 한번 끝나면 프로세스를 종료하도록 하였다.

셀레니움에서 프로레스를 죽이는 기능이 있다고 하는데 이제 사용하지 않는 기능이라고 문서에 나와있었다




그렇다면 다른 방법으로 메소드를 다시 만들었을 것 같은데 아직 찾지 못했고 일단 급한대로 프로세스 죽이는 코드를 적용했다.



python 파이썬

- cmd에서 pip install psutil 로 설치 필수
1
2
3
4
5
6
7
import psutil 
 
for proc in psutil.process_iter():
    # check whether the process name matches
    if proc.name() == PROCNAME:
        proc.kill()
 
cs



java 자바에서 사용


1
Runtime.getRuntime().exec("taskkill /F /IM chromedriver.exe /T");
cs



자동화 코드 이후에 추가해주면 chromedriver.exe가 없어지는 걸 볼 수 있었다.

반응형

+ Recent posts