반응형

보통 웹 크롤링 또는 자동화를 하면 파이썬으로 많이 하는데 나는 C#으로 개발을 했다.

Selenium이라는 것을 많이 쓰기는 하는데, 윈도우에 있는 크롬의 버전과 개발프로그램의 selenium, chromedriver 버전 맞춰주는 것이 귀찮아서 ChromiumWebBrowser 이라는 nuget 패키지를 사용했다.

 

ChromiumWebBrowser 을 form에 추가해주고 자동으로 컨트롤을 조작할 때는 javascript를 바인딩하여 사용하는데,

주로 EvaluateScriptAsync 함수를 사용한다.

 

그런데 PC가 느리거나 버벅대는 등의 지연이 발생하면 컨트롤 조작 흐름이 깨져서 원하는 작업을 못 하는 경우가 많았다.

그래서 EvaluateScriptAsync 의 작업이 다 끝났는지를 확인하는 작업이 꼭 필요한 것 같다.

 

bool bCheck2 = false;
while (!bCheck2)
{
     var task2 = chrome.EvaluateScriptAsync("document.getElementsByName('form_input_1')[0].value = '" + m_strID[iNo] + "';");
     var result2 = await task2;

     while (task2.Status != TaskStatus.RanToCompletion)
          Thread.Sleep(100);

     bCheck2 = result2.Success;
     Thread.Sleep(50);
}

 

위 코드는 EvaluateScriptAsync 으로 컨트롤을 조작해주고, 완료될 때까지 기다렸다가 완료가 된 이후 성공했는지 확인해서 실패하면 성공할 때까지 재시도 하는 무식한 방법이다.

 

무식한데, 나름 성과는 있어서 이유모를 자동화 실패를 상당히 잡아냈다.

무식하면 용감하다. ㅎ

반응형
반응형

회사에서 관리하는 Windows를 쓰다보면 로그인하기 전에 각종 경고글로 도배된 무서운 법적 안내(Legal Notice)가 뜨는 경우가 있다.

 

로그온하면서 마우스 클릭 한 번이면 없어지긴 하지만 자동 로그온을 사용하는 사용자에게는 열받는 일이다.

 

업무시간 시작 시 자동으로 켜지는 모니터 등의 PC에도 이런 정책이 걸려 있으면

PC하나 키자고 매일 PC를 키러 가던가 아니면 원격으로 조치를 해줘야 한다. 고작 클릭 한 번 때문에.

 

그래서 이런 보안 경고 메시지를 없앨 수 없을까 하고 구글링을 해봤지만 원하는 정답은 없었지만

해당 메시지 들이 legalnoticecaption, legalnoticetext라는 레지스트리를 통해 관리된다는 것을 알게 되었다.

 

레지스트리를 만져서 해당 키 값을 삭제해줬지만 보안 정책이 업데이트 될 때마다 또는 주기적으로? 이 값이 새로 써져서 매번 번거로움이 있어서 C#을 이용해 이 번거로움을 없애주고자 프로그램을 짰다.

 

프로그램은 간단하게 로그온하면 10분에 한 번 씩 레지스트리의 legalnotice 부분의 값을 날려주는 것인데, 키 값을 삭제해도 결과는 같은 것 같았다.

 

RegistryKey rkey, rkey2;

 

//운영체제가 32비트냐 64비트냐에 따라 위치가 달라진다.
if (Environment.Is64BitOperatingSystem == true)
{
    rkey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", true);
    rkey2 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon", true);
}
else
{
    rkey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", true);
    rkey2 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon", true);
}

rkey.SetValue("legalnoticecaption", string.Empty);
rkey.SetValue("legalnoticetext", string.Empty);
rkey.Dispose();

rkey2.SetValue("legalnoticecaption", string.Empty);
rkey2.SetValue("legalnoticetext", string.Empty);

 

//여기서부터는 자동 로그온 부분

rkey2.SetValue("AutoAdminLogon", "1");
rkey2.SetValue("DefaultUserName", "로그인 아이디를 넣어주세요.");
rkey2.SetValue("DefaultPassword", "로그인 패스워드를 넣어주세요.");
rkey2.SetValue("DefaultDomainName", "전사 디렉토리를 넣어주세요. 없으면 skip");
rkey2.Dispose();

반응형
반응형

제가 평소에도 코막힘이 자주 생기는데, 신기하게도 코를 풀어도 코는 거의 안 나옵니다.

그래서 큰맘 먹고 이비인후과를 갔더니 비후성 비염이라고 하더라고요.

 

코 안에 조직이 비대해져서 숨구멍을 막는 것이라고 하는데, 비중격이라고 하는 콧 속 벽이 휜 경우 비중격 만곡증이라고 하는데 저는 약간 휜 정도이고 그냥 비후성 비염 수술만 하면 된다고 했습니다.

 

비중격만곡증과 비후성비염 (출처 : 지앤지 병원)

 

처음 비염 수술을 결정하게 되면 다음과 같은 절차를 밟습니다.

 

1. 사전 검사

- 냄새 검사 (특정 냄새를 못 맡는지는 않는지 검사), 알레르기 검사 등 몇 가지 사전 검사를 합니다.

- 수면, 비수면 국소마취 중 하나를 고르게 되는데 이에 따라 비용이 달라집니다.

  (제가 방문한 병원의 경우 수면은 100, 비수면 국소마취는 50, 입원할 경우 60이었습니다.)

 

2. 수술 전 날

- 콧 속 털을 최대한 짧게 깎고 6시간 전부터 금식을 합니다.

 

3. 수술 당일 (국소마취, 입원 치료)

- 몇 시간 전에 방문해서 진정제를 먹고 거즈에 마취약을 뿌린 후 콧 속에 거즈를 집어넣어 코를 마비시킵니다.

- 시간이 지나고 수술실로 가서 링거를 꽂고 콧 속에 마취제를 주사한 후 수술에 들어갑니다.

- 수술은 약 2~30분 정도 걸리는데 수면으로 할 걸 하고 매우 후회했습니다.

- 통증은 주사 맞을 때, 가끔 마취가 제대로 안 된 곳을 지질 때(초음파로 지집니다.) 아픕니다만,

  콧 속을 태우는 느낌과 냄새 그리고 기도로 코피 등이 넘어가는 느낌은 매우 불쾌합니다.

- 수술을 마치고 회복실에 있다가 소독을 하고 퇴원합니다.

 

4. 수술 이후

- 약 2주간 주기적으로 방문해서 소독과 상태 확인을 합니다.

- 처음 1~2일은 코피와 진물이 제법 나오는데 그 이후에는 별로 안 나옵니다.   (처음에는 가끔씩 주르륵 흐를 정도)

- 옛날처럼 콧 속에 거즈 한 뭉탱이를 넣고 그런 거는 아니라서 견딜만합니다.

- 2~3일 정도는 코에 거즈를 대고 혹시나 코피 나 진물이 흘러나올 것을 대비합니다.

- 코 막혀서 입으로 숨 쉬는 것은 1~2일 정도? 그때 목이 아프니 가습을 잘해주면 좋습니다.

 

5. 비용

- 병원마다 다르지만 위에서 언급한 대로 수면은 100, 비수면 통원은 50, 비수면 입원은 60이었습니다.

- 보험은 사람마다 다른데 거의 보험 처리된다고 하더군요. 저는 입원의 경우에만 보험금이 나왔는데 다행히 처리되었습니다. 개인마다 보험 약관을 확인해봐야 할 것 같습니다.

반응형

+ Recent posts