본문 바로가기
반응형

.Net46

.NET - HtmlAgilityPack SelectNodes에서 다중 클래스 찾기 contains 요즘 HTML 을 가지고 자동화를 하고자 한다면, HtmlAgilityPack이 .Net에서는 많이 사용된다. 클래스를 찾는 방법으로, 단순한 구조의 html이라면 괜찮지만 조금 복잡하게 여러개의 class가 선언 된 경우 효과적으로 사용할 수 있는 contains에 대해 짧게 정리해 본다. 먼저 HtmlAgilityPack 에서 노드를 찾는 기능은, SelectNodes로 가능하다. SelectNodes 그리고 기본적으로 검색 방법은 Xpath 방식을 이용하는데, 앞서 구분자 a, div 등 꺽쇠를 제외한 구분자와 내부 검색하고자 하는 Key와 Value를 지정해주면 된다. 기본적으로 아래와 같은 조건으로 사용할 수 있다. # body가 들어간 노드 찾기 var body = html.DocumentNo.. 2022. 11. 11.
.NET - MySqlCommand'Character set 'utf8mb3' is not supported by .Net Framework.' 오류 해결 오랫만에 .NET 코드를 사용하니 아래와 같은 오류가 발생한다. 'Character set 'utf8mb3' is not supported by .Net Framework.' 이 문제는 utf8을 현재 라이브러리에서 지원하지 않기 때문에 발생한다. 라이브러리 Update를 통해 해결하는 방법이 정석이겠지만, 가장 쉬운 방법은 Database에서 utf16_general_ci로 변경하는 것이다. MySQLCommand 구분에 다음 명령으로 Character Set을 변경할 수 있다. "SET character_set_results=utf8 "을 통해 utf8으로 문자열을 설정하도록 하자. (1회만 진행하면 유지된다.) MySqlCommand cmd = new MySqlCommand("SET characte.. 2022. 11. 11.
.NET - MAUI 6.0 서비스 배포 22년10월11일 업데이트인 Visual Studio 2022 version 17.3.6 버전 에 MAUI 6.0 버전이 배포되었다. .NET MAUI 6.0는 멀티 플랫폼을 지원하는 언어로, 안드로이드, 아이폰, 윈도우, Mac 에서 동작이 가능한 단일 프로젝트를 만들 수 있다. 마이크로소프트는 멀티 플랫폼을 지원하기 위해서 다년간 OS부터 프로그램 언어까지 노력을 아끼지 않았는데, MAUI가 오랜 시간 동안 준비한 만큼 어떤 기능을 개발할 수 있을 지 기대된다. .NET MAUI 6.0을 사용하기 위해서는 먼저 업데이트를 진행해야 한다. 이후 기능 추가를 통해서 .NET MAUI 6.0 기능을 추가하면 탬플릿에서 MAUI 템플릿을 통한 개발을 진행할 수 있다. 에뮬레이터를 통해 다른 플랫폼에서 동작하.. 2022. 10. 14.
MySQL - 해결 mysql_native_password failed with message MySQL 사용시 mysql_native_password가 발생하는 경우가 있다. 이경우는 보통 유저의 권한이 충분하지 않은 경우 발생하기 때문에, 우선 root를 이용하여 로그인이 정상적으로 되는지 확인해보고 조치해보기를 권장한다. root로 정상 접근이 된다면, 아래오 같이 특정 계정에 대해 권한을 전체로 넣어주도록 하자. 예제에서는 blueit라는 계정이다. mysql> grant all privileges on *.* to 'blueit'@'%' identified by 'password'; mysql> flush privileges; 2022. 9. 29.
C#/.NET - 프로젝트 생성과 빌드하기 + 디버깅 처음 프로그램을 다루는 사람이라면, 어떻게 저 코드를 실행할 수 있을까 하고 고민이 될 수도 있다. 한번 해보면 크게 어려운 것이 아니므로 아래와 같이 따라 해 보도록 하자(C#외에 C++도 이와 같이 프로젝트를 생성하고 빌드하면 된다). 먼저 설치한 Microsoft Visual Studio를 실행하고 새 프로젝트 만들기(Ctrl+Shift+N키)를 누르자. 그럼 아래와 같이 생성할 수 있는 프로젝트가 나타난다. 보통 윈도우 GUI(그래픽 유저 인터페이스) 기반의 프로그램인 Windows Forms 응용프로그램과 CLI 기반의 콘솔 응용 프로그램을 많이 사용하는데, 여기서는 콘솔 기반 응용프로그램이 다수이므로, “콘솔 응용 프로그램”을 선택하고 아래 확인 버튼을 누르자(프로젝트 이름은 적당히 지정한다... 2022. 6. 11.
C#/.NET - HTTP Keep-alive 사용하기 Python 기준으로 Keep-alive를 사용하는 방법을 정리하였다. Python - HTTP Keep-alive 를 통한 성능 향상 (asecurity.dev) Python - HTTP Keep-alive 를 통한 성능 향상 HTTP Keep-Alive를 이용하면, TCP 세션을 연결하는 작업을 하지 않고 추가적인 데이터를 보낼 수 있기 때문에 많은 장점을 가지게 된다. Nginx에서도 Keep-alive를 활성화 할 경우 50%이상의 성능을 더 올릴 asecurity.dev 반대로 C#/.NET에서는 HttpClient를 통해 세션을 계속적으로 사용할 수 있다. using System; using System.Net; using System.Net.Http; using System.Threading.. 2022. 4. 14.
.NET - HTML 특정 문자열 추출, DocumentNode.SelectNodes 검색하기 HTML에서 원하는 값을 가져오고 싶을때, 보통 class로 지정된 CSS기준으로 가져올 수 있다. 만약 아래와 같이 Github의 특정 문자열을 가져오고 싶다면, 브라우저의 개발자 도구(F12키) 열어서, Elements 에서 해당하는 스타일을 검색한다. 그리고 아래 그림처럼 왼쪽 말풍선에 나온 내용 참고하여, CSS 구문을 포함해서 SelectNodes 값을 지정해주면 된다. 위 div아래와 같이 코드를 작성해서 가져올 수 있다. using HtmlAgilityPack; using System; using System.Net.Http; using System.Threading.Tasks; namespace console_html { class Program { static async Task Main.. 2022. 4. 5.
.Net - naver, daum, google,kakao SMTP 메일 설정 및 보내기 Implicit SSL 포함 메일은 사용자에게 알람부터, 사용자에게 정보 전달까지 다양하게 사용할 수 있는 의사 전달 도구로써, 프로그램으로 메일을 보내는 기능을 일반적인 메일 제공 업체인 Naver, Daum, Google을 통해 어떻게 가능한 지 알아보도록 하자. 각 메일 제공 업체별로 메일을 전달하기 전에 구성해야 하는 옵션이 있는데 구글부터 알아보겠다. 업체 주소 Port 특이사항 다음 smtp.daum.net 465 IMAP/POP 활성화 카카오 smtp.kakao.com 465 IMAP/POP 활성화 네이버 smtp.naver.com 587 IMAP/POP 활성화 구글 smtp.gmail.com 587 2차인증 해제, 낮은 수준 앱 구글 - 보안 수준이 낮은 앱의 액세스 활성화 구글은 2차인증과 보안 수준이 낮은 앱(메일.. 2022. 3. 25.
WxTCmd - Windows 10 Timeline Artifact Tool 한글 깨짐 해결 Windows 10에서 부터 새롭게 추가된 TImeline Arfifact에 대해 최근에 알게 되어 정리해 본다. Windows 10의 경우 윈도우 제어판의 activity history라는 메뉴가 있는데 기본적으로 사용자의 웹 브라우저 이용이나 앱사용 기록을 저장하도록 설정이 되어 있다. 위 설정을 통해 기존에 Prefatch나 브라우저 기록 캐쉬, 이벤트 로그들을 조사하여 분석해야 했던 사용자의 사용 기록을 보다 쉽게 분석을 진행할 수 있다. 보다 자세한 내용은 아래 글을 참고 하면 좋겠다. belkasoft.com/windows-10-timeline-analysis How To Analyze Windows 10 Timeline With Belkasoft Evidence Center Temporal .. 2021. 3. 4.