본문 바로가기

C#40

[C#] 웹 크롤링을 이용하여 자동 출석체크 하는 방법 배경 서점에 매주 가서 책을 사다보니 할인 받는 방법을 알게 되었고, 그 중 하나가 바로 출석체크였다. 얼마전까지만 해도 해당 서점에 가야만 출석체크가 되는 줄 알았다... 하지만 그건 체크인이었다. 어쨌든 어디서든 하루에 한번 출석체크를 할 수 있다는 사실을 알고, 크롤링을 만들어야겠다고 생각했다. 알아보니 크롤링을 하는 라이브러리인 Selenium을 Python이 아닌 C# 등 많은 다른 언어에서 쓸 수 있었다. 구현 그래서 아래와 같은 4개의 Nuget Package들을 깔았고, 또 아래와 같은 간단한 코드로 늦은 밤에 하나 하고 자려고 한다. using System; using System.Threading; using OpenQA.Selenium; using OpenQA.Selenium.Chro.. 2022. 2. 17.
[C#] 달(월)의 마지막 날 구하기 매월 마지막 날, 보고서를 보내줘야 하는 일이 생겼습니다. DateTime에 LastDay 같은 함수가 있을거라 생각하여 찾아보았는데 그런건 없고, 값은 똑같지만 의미가 약간 다른 함수를 찾았습니다. 그 달의 날짜 개수 구하기. DateTime.DaysInMonth(year, month) year, month에 int 값을 넣으면 그 해의, 그 달의 날짜 개수를 구해줍니다. 마지막 날짜와 같아서 유용하게 사용할 수 있습니다. 2022. 2. 15.
[C#] List Insert, List 앞에 더하기 프로그래밍을 하다 보면 가끔 순서를 맞춰줘야 할 때가 있어서 리스트의 제일 앞에 값을 더해야 할 때가 있다. 이럴 때 나는 새로운 List를 만들어서 해결하곤 했다. var list = new List() {"b", "c", "d"}; var newList = new List(); newList.Add("a"); newList.AddRange(list); return newList; 가끔이지만, 매번 하면서도 이렇게 비효율적일 수 있나... 싶으면서도 찾지 못해 그대로 사용하고 있었다. 하지만 오늘 회사에서 코드 리뷰를 할 때 Insert 메소드를 배웠다. var list = new List() {"b", "c", "d"}; list.Add(0, "a"); return list; 0번째에 "a" 넣기.... 2022. 1. 4.
[C#] Class to ExpandoObject / dynamic class로 정의된 데이터에 하나의 정보를 더 넣을 일이 생겼는데, 하나하나 연결해주자니 코드의 양도 많아지고, 따라서 오류가 생길수도 있었다. 찾아보니 좋은 방법이 있어서 기록한다. var person = new Person { Id = 1, Name = "John Doe" }; var expando = new ExpandoObject(); var dictionary = (IDictionary)expando; foreach (var property in person.GetType().GetProperties()) dictionary.Add(property.Name, property.GetValue(person)); 이후 dictionary에 값을 추가해주면 된다. 참조: https://stackover.. 2021. 11. 9.
[C#] VM 원격 접속하기 및 파일 수정 빅데이터 과제 중, 또 한번 벽에 부딪혔다. 모든 CSV 파일을 수정해주어야 하는데 다운받아서 수정하고, 다시 업로드하기엔 너무 오래걸린다. 그래서 직접 연결하여 VM안에서 파일을 수정해주려고 했다. 다행히 C# 스터디에서 찾을 수 있었다. 댓글을 남기는 곳이 없어 남기지 못했지만 주소로 출처를 남긴다. 출처: http://www.csharpstudy.com/net/article/18-SFTP-%ED%8C%8C%EC%9D%BC-%EC%A0%84%EC%86%A1 SFTP 파일 전송 - C# 프로그래밍 배우기 (Learn C# Programming) SFTP 파일 전송 SFTP (SSH FTP) SFTP는 SSH File Transfer Protocol을 일컫는 것으로, SSH를 사용하여 서버에 파일을 전송.. 2021. 10. 6.
[C#] JSON, beautify 하기, 들여쓰기 var x = JsonConvert.SerializeObject(jsonString, Formatting.Indented); 위와 같이 시리얼라이즈 할 때, Formatting.Indented를 두번째 인자로 넣어주면 된다. 보통은 사용할 일이 없지만, 나는 파일의 크기를 늘려주기 위해 사용했다. 2021. 9. 7.
[C#] Azure DownloadToStream 오류 Blob type of the blob reference doesn't match blob type of the blob. 이라는 오류가 나와서 한참을 찾았다. 내가 만든 Blob이 아닌, 다른 개발자분께서 만드신 Blob이라서 Blob간의 종류 차이가 있었다. 해당 사항은 아래에서 볼 수 있다. https://docs.microsoft.com/ko-kr/rest/api/storageservices/understanding-block-blobs--append-blobs--and-page-blobs 블록 blob, 추가 blob 및 페이지 blob 이해 - Azure Storage 블록 blob, 추가 blob 및 페이지 blob에 대 한 개요입니다. docs.microsoft.com Blob에는 총 3가.. 2021. 8. 23.
[C#] 대소문자 구분 없이 Contains 확인 개발 중, 에러를 잡아내는 부분에서 TEST가 들어가는 항목에 대해서는 에러를 잡아내지 않기로 했다. 따라서 모두 비교해줘야 하는데, 테스트 선박인 만큼 TEST를 쓸 수도 있고, test로 쓸수도 있고, Test로 쓸 수도 있다. 모두 ||로 처리하기엔 너무 많은 상황. 간단히 StringComparer.OrdinalIgnoreCase 속성으로 비교할 수 있다. if(data.Contains("TEST", StringComparison.OrdinalIgnoreCase)) { // 내용 } 2021. 7. 7.
[C#] string: startsWith, endsWith 시작, 끝 글자 여부 startsWith 이 글자로 시작하는지를 판단하는 메소드 https://docs.microsoft.com/ko-kr/dotnet/api/system.string.startswith?view=net-5.0 String.StartsWith 메서드 (System) 이 문자열 인스턴스가 지정한 문자로 시작하는지를 확인합니다.Determines whether this string instance starts with the specified character. docs.microsoft.com endsWith 이 글자로 끝나는지 판단하는 메소드 프로그램 확장자를 이름으로 판단하기에 좋다. (.zip, .xlsx...) https://docs.microsoft.com/ko-kr/dotnet/api/system.s.. 2021. 7. 5.