C#: 5개의 글

C# 셀레니움으로 구글 로그인 하기

Posted by 고 고특파원
2020. 3. 2. 15:53 프로그래밍/C#

이전에는  C# 셀레니움을 이용하여 구글 로그인이 가능했었다.

그러나 현재 구글에 로그인을 하려고 하다보면, 자동화툴로 접근하여 로그인을 허용하지 않고 있다.

 

깃허브에서도 올라온 구글 로그인이 안되는 문제에 대한 의견들.

 

https://gist.github.com/ikegami-yukino/51b247080976cb41fe93

 

Automatically Google login by selenium

Automatically Google login by selenium. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

 

자동화툴로 진정 구글 로그인을 할수는 없을까?

 

글들을 보던중 흥미로운 내용의 유튜브 영상이 공유되었다.

 

https://www.youtube.com/watch?v=HkgDRRWrZKg&feature=youtu.be

해당 영상을 보면, stack overflow사이트를 통해 구글인증을 한 후 유튜브 사이트로 가게되면 구글에 정상적으로 로그인 되는것을 발견!

 

var driverService = ChromeDriverService.CreateDefaultService();
driverService.HideCommandPromptWindow = true; //크롬 콘솔창 숨기기 

var options = new ChromeOptions();

using (IWebDriver driver = new ChromeDriver(driverService, options))
{
	string id = "구글ID";
	string pw = "구글PW";                
 
	 driver.Url = "https://stackoverflow.com/users/login?ssrc=head";
    var googleBtn = driver.FindElement(By.ClassName("s-btn__google"));
    googleBtn.Click();
    Thread.Sleep(2000);

    var emailTag = driver.FindElement(By.Name("identifier"));
    emailTag.SendKeys(id);

    var nextBtn = driver.FindElement(By.Id("identifierNext"));
    nextBtn.Click();

    Thread.Sleep(5000);

    var passwordTag = driver.FindElement(By.Name("password"));
    passwordTag.SendKeys(pw);

    //암호 입력 버튼
    var passNextBtn = driver.FindElement(By.Id("passwordNext"));
    passNextBtn.Click();

    Thread.Sleep(5000);
    
    driver.Url = "https://www.google.co.kr/;
}



 

위와 같이 스택오버플로우 사이트에서 구글인증 후, 구글사이트로 리다이렉트 하면 정상적으로 구글에 로그인이 가능하다!

이 방법이 또 막힐지 모르겠지만, 현재까지는 이상없이 로그인이 가능하다.

 

단, 프로그램을 하면서 기계적이고 반복적으로 로그인 할 경우, 캡챠가 생성될 수 있으니 너무 빈번한 로그인을 피하는게 좋다.

 

 

혹시나 로그인이 안될경우, 계정의 보안을 낮추어 해보도록 한다!

이 댓글을 비밀 댓글로

C# SqLite 사용하기 - 3편

Posted by 고 고특파원
2019. 6. 26. 23:20 프로그래밍/C#

현재 글을 보기전에 1편과 2편을 보지 않았다면 아래링크를 통해서 이전 글을 보고 오길바란다.

 

2019/06/20 - [프로그래밍/C#] - C# SQLite 사용하기 - 1편

 

C# SQLite 사용하기 - 1편

가끔씩 C#을 이용하여 프로그램을 만들 때 간단한 DB를 사용해야 하는 경우가 생긴다. MSSQL Express버전을 사용하기엔 너무 무겁고, 개인적으로 Access를 이용한 MDB를 선호하지 않는다.. 이럴 때 Sqlite를 사용..

maelife.tistory.com

 

 

2019/06/23 - [프로그래밍/C#] - C# SQLite 사용하기 - 2편

 

C# SQLite 사용하기 - 2편

2. SQLite3.exe 실행파일 다운로드 이전 기본 셋팅하는 글을 보지 않고 넘어 왔다면, 이전글 참조 후 다음 글로 넘어 오시길 바랍니다. 2019/06/20 - [프로그래밍/C#] - C# SQLite 사용하기 - 1편 SQLite3.exe를..

maelife.tistory.com

 

그럼 이제 VisualStudio를 실행하여 간단한 응용프로그램을 만들어 보도록 한다.

 

 

 

간단한 Windows 응용프로그램 프로젝트를 생성한다.

 

데이터베이스 접속 테스트를 위한 버튼을 다음과 같이 배치한다.

 

그리고 2편에서 만든 mydb.db 파일을 프로젝트에 추가하도록 한다.

 

 

솔루션탐색기에서 database라는 폴더를 생성하고 폴더안에 mydb.db 파일을 추가한다.

 

배포하기 위해 output Directory를 항상 'Copy always' 설정을 하면 된다.

 

 

다음으로 소스 부분을 보도록 한다.

 

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            this.btnConncet.Click += btnConncet_Click;
            this.btnSelect.Click += btnSelect_Click;
            this.btnInsert.Click += btnInsert_Click;
            this.btnDelete.Click += btnDelete_Click;
        }

        
        /// <summary>
        /// DB연결
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnConncet_Click(object sender, EventArgs e)
        {

            //string strConn = @"Data Source=C:\sqlite\mydb.db";
            string strConn = String.Format("Data Source={0}", Application.StartupPath + @"\database\mydb.db");
            
            using (SQLiteConnection conn = new SQLiteConnection(strConn))
            {
                conn.Open();

                //string sql = "INSERT INTO member VALUES (100, 'Tom')";
                //SQLiteCommand cmd = new SQLiteCommand(sql, conn);
                //cmd.ExecuteNonQuery();

                //cmd.CommandText = "DELETE FROM member WHERE Id=1";
                //cmd.ExecuteNonQuery();

                conn.Close();
            }

        }

        private void btnSelect_Click(object sender, EventArgs e)
        {
            DataSet ds = new DataSet();
            //string strConn = @"Data Source=C:\sqlite\mydb.db";
            string strConn = String.Format("Data Source={0}", Application.StartupPath + @"\database\mydb.db");

            //SQLiteDataAdapter 클래스를 이용 비연결 모드로 데이타 읽기
            string sql = "SELECT * FROM test1";
            var adpt = new SQLiteDataAdapter(sql, strConn);
            adpt.Fill(ds);

        }

        private void btnInsert_Click(object sender, EventArgs e)
        {
            string strConn = String.Format("Data Source={0}", Application.StartupPath + @"\database\mydb.db");

            using (SQLiteConnection conn = new SQLiteConnection(strConn))
            {
                conn.Open();
                string sql = "INSERT INTO test1 VALUES (2, '하이여')";
                SQLiteCommand cmd = new SQLiteCommand(sql, conn);
                cmd.ExecuteNonQuery();

                
            }
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            string strConn = String.Format("Data Source={0}", Application.StartupPath + @"\database\mydb.db");

            using (SQLiteConnection conn = new SQLiteConnection(strConn))
            {
                conn.Open();
                string sql = "DELETE FROM test1 WHERE id=1";
                
                SQLiteCommand cmd = new SQLiteCommand(sql, conn);
                cmd.ExecuteNonQuery();
                
            }
        }

 

C#에서 제공하는 SQLiteConnection을 이용하여 데이터베이스에 접속 하고 관리할 수있다.

 

데이터베이스 연결문자열은 실제 프로젝트가 빌드되고 난 후의 위치를 잡아야 하기 때문에

Application.StartupPath 를 이용하여 *.db 파일이 있는 위치를 잡아주었다.

 

이처럼 C# 응용프로그램을 이용하여 무언가를 만들때 간단한 DB가 필요할때 SQLite를 이용하는것도 괜찮은 방법인것 같다.

이 댓글을 비밀 댓글로

C# SQLite 사용하기 - 2편

Posted by 고 고특파원
2019. 6. 23. 21:41 프로그래밍/C#

2. SQLite3.exe 실행파일 다운로드

 

이전 기본 셋팅하는 글을 보지 않고 넘어 왔다면, 이전글 참조 후 다음 글로 넘어 오시길 바랍니다.

2019/06/20 - [프로그래밍/C#] - C# SQLite 사용하기 - 1편

 

 

SQLite3.exe를 받는 이유는 Command창으로 데이터베이스 파일을 생성하고 관리할 수 있기 때문에, 다운을 받는것이다.

 

요기 링크에서 다운로드 받으면 되니 아래 사이트에 가서 다운로드를 받도록 한다.

https://www.sqlite.org/download.html

 

SQLite Download Page

Templates (1) and (2) are used for source-code products. Template (1) is used for generic source-code products and templates (2) is used for source-code products that are generally only useful on unix-like platforms. Template (3) is used for precompiled bi

www.sqlite.org

각자 개발 환경 os에 맞는 Command line shell 프로그램을 다운로드 받는다.

나는 윈도우니깐 windows 탭에서 다운로드를 받았다.

 

 

3. DB파일 생성 작업 폴더 지정 및 커맨드 창 설정

SQLite 데이터베이스 파일을 생성 후 작업할 폴더 공간을 지정한다.

 

나는 아래와 같은 폴더 경로에다가 다운로드 받은 zip 파일을 압축 해제 하였다. (각자 임의로 설정해도됨)

 

C:\myTestSQLiteDB 

 

압축 해제한 다음에 cmd창을 열어서 sqlite3.exe 파일이 존재하는 폴더로 이동 한다.

 

모두 정확하게 했다면 위와 같은 화면이 보여질것이다.

 

 경로 이동 후 데이터베이스를 다음과 같은 명령어를 이용하여 만들어준다.

 

sqlite3 mydb.db

create table test_table
(
	id int,
    name string
);

 

위 그림처럼 *.db 파일이 생성된것을 확인 할 수 있는데, 이렇게 된다면 데이터베이스 파일 생성이 완료된것이다.

 

SQL문을 이용하여 데이터베이스를 생성 하고 조작 할 수 있다. SQL문에 대해서는 각자 찾아보시길!!

 

그럼 다음으로 c#에서 데이터베이스에 접근 하는법에 대해 알아보도록 하겠는데 이것은 다음 포스팅에서 하도록 하겠다!

이 댓글을 비밀 댓글로

C# SQLite 사용하기 - 1편

Posted by 고 고특파원
2019. 6. 20. 23:54 프로그래밍/C#

 

가끔씩 C#을 이용하여 프로그램을 만들 때 간단한 DB를 사용해야 하는 경우가 생긴다.

 

MSSQL Express버전을 사용하기엔 너무 무겁고, 개인적으로 Access를 이용한 MDB를 선호하지 않는다..

 

이럴 때 Sqlite를 사용하면 쉽고 간단하게 파일 DB를 사용할 수 있다.

 

그렇다면 Sqlite를 사용하는법에 대해 알아보도록 한다.

 

 

1. SQLite3 다운로드

Sqlite를 사용하기 위해 다운로드를 하고 설치를 하는 방법은 두 가지 방법이 있다.

 

1) http://system.data.sqlite.org << 해당 링크에 가서 .Net 버전에 맞게 바이너리를 다운로드하여 설치를 한다.

 

내 프로그램 개발 버전은 .netframwork 4.0에 64bit이므로 저걸 다운로드하여 설치하면 될 것 같다.

Sqlite 다운로드 홈페이지

물론 위의 방법처럼 직접 다운로드하려면 생각할게 많으니 나는 다르게 설치를 해보도록 하겠다. 어떻게??

 

두 번째 방법을 보도록 하겠다.

 

2) VisualSutdio의 Nuget 패키지 매니저를 활용하여 설치를 한다.

 

Package Manage Console

비주얼 스튜디오의 Tools-> NugetPackageManager -> Package Manager Console을 선택하면, 아래와 같이 

콘솔 창이 하나 열린다.

 

콘솔 창에 다음과 같은 명령어를 입력하여 Nuget패키지를 이용하여 알아서 설치하는 방법이다.

 

Install-Package System.Data.SQLite

 

개인적으로는 위 방법을 추천한다. 뭔가 필요 없는 것까지 깔리는 느낌이긴 한데, 이도 저도 아니고 헷갈리니 이렇게 해결하는 것도 좋을 것 같다..

 

 

실제 프로젝트파일이 있는 경로로 가보면 위 그림처럼, Packages라는 폴더가 자동으로 생긴다. Nuget을 이용하여 Sqlite를 설치함으로써 생기는 폴더이니 삭제하면 안된다!

 

폴더 내부에 들어가서 보면 SQLite를 사용할때 필요한 dll 파일들이 존재한다.

Nuget을 이용하여 설치하면 프로젝트참조 경로까지 알아서 잡아주므로 개발자는 소스만 신경 쓰면 된다.

 

일단 여기까지 하면 Sqlite를 사용하기 위한 개발환경 셋팅은 끝이났고, 다음 포스팅에서 Sqlite DB 생성 및 DB데이터를 조작하는 방법에 알아보도록 하겠다.

이 댓글을 비밀 댓글로

Xamarin Forms 개발환경 설정 및 기본 프로젝트 생성

Posted by 고 고특파원
2019. 3. 11. 19:16 프로그래밍/Xamarin .Forms

개발환경 설정


개발 OS : Windows7

개발 툴 : VisualStudio 2017 Community

디버깅 기기 : 갤럭시S7


VisualStudio 2017 Community은 MS 사이트에서 받으면 되므로 간단히 생략한다.





개발자 옵션에서 USB 디버깅 허용으로 체크!


이렇게 한다고 연결이 되지 않을 경우가 있는데 그럴때에는 삼성 갤럭시7 기준으로,,


[Android USB Driver for Windows]

https://developer.samsung.com/galaxy/others/android-usb-driver-for-windows



해당 링크에서 usb 드라이버를 설치해보자.



Android SDK 및 도구


Google USB Driver 도 설치해야함.


참고로 VisualStudio는 지속적으로 업데이트를 해주는것을 권장한다.

C:\Program Files (x86)\Microsoft Visual Studio\Installer 

경로 안의 vs_installer.exe


현재는 더이상 업데이트할 내용이 없는것으로 보인다.



Xamrin.Forms는 지속적으로 업데이트가 되어있으므로 안정화 되어있는 최신버전으로 업데이트를 하도록 한다. 업데이트는 Nuget 솔루션 패키지 관리에서 업데이트를 하면 된다.








프로젝트 생성


파일 -> 새로만들기 -> 프로젝트 -> Cross-Platform



플랫폼은 안드로이드 , iOS로 할것이고 UWP는 생략(윈도우10용 앱)

여기에서 코드 공유전략은 .NET Standard로 고정..!


공유 프로젝트도 있긴 하지만 차이점은 사실 잘 모르겠음. 왜 나누었을까


개발환경이 설정되었으므로 기본 생성된 템플릿으로 빌드를 해서 결과를 확인한다.






이 댓글을 비밀 댓글로