20200409のLinuxに関する記事は6件です。

お手軽Linux Guiアプリ開発 初級 前編

お手軽Linux Guiアプリ開発 初級 前編

  1. Sqlite3の利用
  2. Dapperの導入 Dapperについてまとめてみた
  3. Dapper Extensionの導入 Dapperの拡張ライブラリ 比較検討
  4. Swaggerを使う Stoplight Studioなどを使う  本当に使ってよかったOpenAPI (Swagger) ツール
  5. C#からPythonを実行する C#からPythonスクリプトを呼び出す
  6. DataGrideViewとModelのバインディングの実現 URL treeView
  7. RazurebyPiへのデプロイの仕方

前編は5まで

Sample File

プロジェクトはGtk#を選択する

スクリーンショット 2020-04-09 19.34.07.png

Nugetからパッケージをダウンロードする

スクリーンショット 2020-04-09 19.36.00.png

ダウンロードするパッケージ

Dapper
DapperExtensions
Mono.Data.Sqliteをダウンロードします。Gtk2#の場合はSystem.Data.Sqliteは読み込めません。

スクリーンショット 2020-04-09 19.10.43.png

Dapperを使ったQuery

Queryの結果を自動でモデルに入れることができます。またInsert時Update時に引数代わりにModelを使えます。

        static public void _dapperTest() {

            Mono.Data.Sqlite.SqliteConnection connection = new Mono.Data.Sqlite.SqliteConnection();

            connection.ConnectionString = @"Data Source=パス/test.sqlite";
            connection.Open();

            var qurey = "select * from testTable;";

            var result = connection.Query<testTable>(qurey);
            foreach(var p in result) {
                Console.WriteLine("ID:" + p.test_id + " 名称:" + p.name);
            }

            connection.Close();
        }

DapperExtensionを使ったInsertUpdate処理

ModelからInsert文やUpdate文を自動生成し、処理できます

Sql文を生成を変更します
DapperExtensions.DapperExtensions.SqlDialect = new DapperExtensions.Sql.SqliteDialect();

        static public void _dapperExtensionTest() {

            //Sql文を [testTable].[test_id]から [test_id]に変更する
            DapperExtensions.DapperExtensions.SqlDialect = new DapperExtensions.Sql.SqliteDialect();

            Mono.Data.Sqlite.SqliteConnection connection = new Mono.Data.Sqlite.SqliteConnection();

            connection.ConnectionString = @"Data Source=パス/test.sqlite";
            connection.Open();

            //DapperExtensionを使った処理
            testTable testTable1 = new testTable();
            testTable1.name = "aaaaaa111";
            connection.Insert<testTable>(testTable1);

            var qurey = "select * from testTable;";
            var result = connection.QueryFirst<testTable>(qurey);

            //DapperExtensionを使った処理
            result.name += "qqqq111";
            connection.Update<testTable>(result);

            connection.Close();

        }

Swaggerを自動生成にさせる

SpotlitStudioを使います。

本当に使ってよかったOpenAPI (Swagger) ツール

スクリーンショット 2020-04-07 21.53.05.png

開発にあたってのポイント

  1. Gtk2#はMono.Data.Sqliteを使う。Dapperと併用できた
  2. gtkのサンプルを探すのに苦労した。C# gtk hotexamples 調べたいメソッド名で調べるとgitに上がっているサンプルを一覧できるサイトが見つけることができた。
  3. モデルにDataMemerを追加し、Dbのカラム名と変数名を紐づける(マッピング)

スクリーンショット 2020-04-09 13.42.35.png

後編に続く

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

お手軽Raspberry Pi GUIアプリ開発 初級 前編

お手軽Raspberry Pi GUIアプリ開発 初級 前編

  1. Sqlite3の利用
  2. Dapperの導入 Dapperについてまとめてみた
  3. Dapper Extensionの導入 Dapperの拡張ライブラリ 比較検討
  4. Swaggerを使う Stoplight Studioなどを使う  本当に使ってよかったOpenAPI (Swagger) ツール
  5. C#からPythonを実行する C#からPythonスクリプトを呼び出す
  6. DataGridViewとModelのバインディングの実現 URL treeView
  7. RaspberryPiへのデプロイの仕方

開発はMac上のVisualSudioMacで行います

前編は5まで

Sample File

プロジェクトはGtk#を選択する

GTK#について

スクリーンショット 2020-04-09 19.34.07.png

Nugetからパッケージをダウンロードする

スクリーンショット 2020-04-09 19.36.00.png

ダウンロードするパッケージ

Dapper
DapperExtensions
Mono.Data.Sqliteをダウンロードします。Gtk2#の場合はSystem.Data.Sqliteは読み込めません。

スクリーンショット 2020-04-09 19.10.43.png

Dapperを使ったQuery

Dapper Tutorial

Queryの結果を自動でモデルに入れることができます。またInsert時Update時に引数代わりにModelを使えます。

        static public void _dapperTest() {

            Mono.Data.Sqlite.SqliteConnection connection = new Mono.Data.Sqlite.SqliteConnection();

            connection.ConnectionString = @"Data Source=パス/test.sqlite";
            connection.Open();

            var query = "select * from testTable;";

            var result = connection.Query<testTable>(query);
            foreach(var p in result) {
                Console.WriteLine("ID:" + p.test_id + " 名称:" + p.name);
            }

            connection.Close();
        }

DapperExtensionを使ったInsertUpdate処理

ModelからInsert文やUpdate文を自動生成し、処理できます

DapperExtensionについて

書き出されるSql文の形式を変更します

DapperExtensions.DapperExtensions.SqlDialect = new DapperExtensions.Sql.SqliteDialect();
        static public void _dapperExtensionTest() {

            //Sql文を [testTable].[test_id]から [test_id]に変更する
            DapperExtensions.DapperExtensions.SqlDialect = new DapperExtensions.Sql.SqliteDialect();

            Mono.Data.Sqlite.SqliteConnection connection = new Mono.Data.Sqlite.SqliteConnection();

            connection.ConnectionString = @"Data Source=パス/test.sqlite";
            connection.Open();

            //DapperExtensionを使った処理
            testTable testTable1 = new testTable();
            testTable1.name = "aaaaaa111";
            connection.Insert<testTable>(testTable1);

            var query = "select * from testTable;";
            var result = connection.QueryFirst<testTable>(query);

            //DapperExtensionを使った処理
            result.name += "qqqq111";
            connection.Update<testTable>(result);

            connection.Close();

        }

testTableモデル

  1. モデルにはGetter Setterを必ず書くこと
 public class testTable {

    public int test_id { get; set; }

    public string name { get; set; }
 }

Swaggerを自動生成にさせる

Stoplight Studioを使います。APIURLとパラメータを登録していき、Swaggerを自動生成します。

本当に使ってよかったOpenAPI (Swagger) ツール

スクリーンショット 2020-04-07 21.53.05.png

Swagger CodegenでAPIクライアント、スタブサーバ、HTML定義書を自動生成する

Swagger Codegenをインストールし、APIクライアントとモデルファイルを指定した言語で書き出します。
テンプレートをカスタマイズしておくと便利です。

OpenAPI GeneratorでRESTful APIの定義書から色々自動生成する
Swagger Codegen
Swagger Codegen Git

開発にあたってのポイント

  1. Gtk2#はMono.Data.Sqliteを使う。Dapperと併用できた
  2. gtkのサンプルを探すのに苦労した。C# gtk hotexamples 調べたいメソッド名で調べるとgitに上がっているサンプルを一覧できるサイトが見つけることができた。
  3. モデルにはgetter setterを必ず書くこと

DataMapping

スクリーンショット 2020-04-09 13.42.35.png

後編に続く
お手軽Raspberry Pi Guiアプリ開発 入門

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

お手軽Linux GUIアプリ開発 初級 前編

お手軽Linux GUIアプリ開発 初級 前編

  1. Sqlite3の利用
  2. Dapperの導入 Dapperについてまとめてみた
  3. Dapper Extensionの導入 Dapperの拡張ライブラリ 比較検討
  4. Swaggerを使う Stoplight Studioなどを使う  本当に使ってよかったOpenAPI (Swagger) ツール
  5. C#からPythonを実行する C#からPythonスクリプトを呼び出す
  6. DataGridViewとModelのバインディングの実現 URL treeView
  7. RaspberryPiへのデプロイの仕方

前編は5まで

Sample File

プロジェクトはGtk#を選択する

GTK#について

スクリーンショット 2020-04-09 19.34.07.png

Nugetからパッケージをダウンロードする

スクリーンショット 2020-04-09 19.36.00.png

ダウンロードするパッケージ

Dapper
DapperExtensions
Mono.Data.Sqliteをダウンロードします。Gtk2#の場合はSystem.Data.Sqliteは読み込めません。

スクリーンショット 2020-04-09 19.10.43.png

Dapperを使ったQuery

Dapper Tutorial

Queryの結果を自動でモデルに入れることができます。またInsert時Update時に引数代わりにModelを使えます。

        static public void _dapperTest() {

            Mono.Data.Sqlite.SqliteConnection connection = new Mono.Data.Sqlite.SqliteConnection();

            connection.ConnectionString = @"Data Source=パス/test.sqlite";
            connection.Open();

            var query = "select * from testTable;";

            var result = connection.Query<testTable>(query);
            foreach(var p in result) {
                Console.WriteLine("ID:" + p.test_id + " 名称:" + p.name);
            }

            connection.Close();
        }

DapperExtensionを使ったInsertUpdate処理

ModelからInsert文やUpdate文を自動生成し、処理できます

Sql文を生成を変更します

DapperExtensionについて

DapperExtensions.DapperExtensions.SqlDialect = new DapperExtensions.Sql.SqliteDialect();
        static public void _dapperExtensionTest() {

            //Sql文を [testTable].[test_id]から [test_id]に変更する
            DapperExtensions.DapperExtensions.SqlDialect = new DapperExtensions.Sql.SqliteDialect();

            Mono.Data.Sqlite.SqliteConnection connection = new Mono.Data.Sqlite.SqliteConnection();

            connection.ConnectionString = @"Data Source=パス/test.sqlite";
            connection.Open();

            //DapperExtensionを使った処理
            testTable testTable1 = new testTable();
            testTable1.name = "aaaaaa111";
            connection.Insert<testTable>(testTable1);

            var query = "select * from testTable;";
            var result = connection.QueryFirst<testTable>(query);

            //DapperExtensionを使った処理
            result.name += "qqqq111";
            connection.Update<testTable>(result);

            connection.Close();

        }

testTableモデル

  1. モデルにはGetter Setterを必ず書くこと
 public class testTable {

    public int test_id { get; set; }

    public string name { get; set; }
 }

Swaggerを自動生成にさせる

Stoplight Studioを使います。

本当に使ってよかったOpenAPI (Swagger) ツール

スクリーンショット 2020-04-07 21.53.05.png

開発にあたってのポイント

  1. Gtk2#はMono.Data.Sqliteを使う。Dapperと併用できた
  2. gtkのサンプルを探すのに苦労した。C# gtk hotexamples 調べたいメソッド名で調べるとgitに上がっているサンプルを一覧できるサイトが見つけることができた。
  3. モデルにはgetter setterを必ず書くこと

DataMapping

スクリーンショット 2020-04-09 13.42.35.png

後編に続く
お手軽Linux Guiアプリ開発 入門

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【画像あり】neofetchをいろんなOSで使ってみた!

neofetchという使用中OSのロゴを表示するコマンドを見つけました。
気になって様々なOSで試してみました!

Ubuntu

ホワイト版
ubuntu_white.png
ダーク版
ubuntu_dark.png

Centos

ホワイト版
centos_white.png
ダーク版
centos_dark.png

Fedora

ホワイト版
fedora_white.png
ダーク版
fedora_Dark.png

Alpine

ホワイト版
alpine_white.png
ダーク版
alpine_dark.png

ArchLinux

ホワイト版
arch_white.png
ダーク版
arch_dark.png

Debian

ホワイト版
debian_white.png
ダーク版
debian_Dark.png

openSUSE

ホワイト版
opensuse_white.png
ダーク版
opensuse_dark.png

まとめ

neofetchを様々なOSで試してみました。
次回は検証に使用したソースなどを説明した記事を作りたいと思います。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

お手軽Linux Guiアプリ開発 初級 前半

お手軽Linux Guiアプリ開発 初級 前半

開発内容

  1. GtkGUIでSqlite3を使う
  2. Dapperの導入 Dapperについてまとめてみた
  3. Dapper Extensionの導入 Dapperの拡張ライブラリ 比較検討
  4. Swaggerを使う Stoplight Studioなどを使う  使ってよかったOpenAPI (Swagger) ツール
  5. C#からPythonを実行する C#からPythonスクリプトを呼び出す
  6. DataGrideViewとModelのバインディングの実現 treeView
  7. RazurebyPiへのデプロイ

前半は5まで

Git URL

開発環境

Mac
VisualStudioMac 2019
C#
Sqlite3

VisualStudioMacにSqlite3の導入

NugetからSystem.Data.SQlite.Coreをインストールします
スクリーンショット 2020-04-07 14.39.40.png
スクリーンショット 2020-04-07 20.36.05.png

C#でSQLite3を使ってみる

Sqliteを実行する

using System;
using System.Data.SQLite;

namespace sqliteTest {
    class Program {

    static void Main(string[] args) {

            SQLiteConnection connection = new SQLiteConnection();
            SQLiteCommand command = new SQLiteCommand();

            connection.ConnectionString = @"Data Source=パス";
            connection.Open();

            command.CommandText = "select * from testTable;";
            command.Connection = connection;

            // SQLを実行します。
            SQLiteDataReader reader = command.ExecuteReader();

            while(reader.Read()) {
                var id = reader.GetValue(0);
                var name = reader.GetValue(1);
                Console.WriteLine("ID:" + id + " 名称:" + name );
            }
            connection.Close();
        }
    }
 }

Dapperの導入

クエリーの結果をモデルにフェッチできたり、insert,Update時に値をmodelで渡して処理できます

NugetからDapperを導入します

Dapperの導入 Dapperについてまとめてみた

スクリーンショット 2020-04-07 15.22.42.png

model.cs
public class testTable {
    public int test_id { get; set; }
    public string name { get; set; }
}
using System;
using System.Data.SQLite;
using Dapper;

namespace sqliteTest {
    class Program {

    static void Main(string[] args) {
            SQLiteConnection connection = new SQLiteConnection();

            connection.ConnectionString = @"Data Source=パス/test.sqlite";
            connection.Open();

            var qurey = "select * from testTable;";

            var result = connection.Query<testTable>(qurey);
            foreach(var p in result) {
                Console.WriteLine("ID:" + p.test_id + " 名称:" + p.name);
            }       
            connection.Close();
        }

    }
}

Dapper Extensionの導入

ModelからInsert文、Update文、Delete文を自動生成でき、実行できます

NugetからDapperExtensions.NetCoreを導入します

必須 Sql文を[testTable].[test_id]から [test_id]に変更します
DapperExtensions.DapperExtensions.SqlDialect = new DapperExtensions.Sql.SqliteDialect();

Dapper Extensionの導入 Dapperの拡張ライブラリ 比較検討

using System;
using System.Data.SQLite;
using Dapper;
using DapperExtensions;

namespace sqliteTest {
    class Program {

    static void Main(string[] args) {

            //Sql文を [testTable].[test_id]から [test_id]に変更する
            DapperExtensions.DapperExtensions.SqlDialect = new DapperExtensions.Sql.SqliteDialect();

            SQLiteConnection connection = new SQLiteConnection();
            connection.ConnectionString = @"Data Source=パス";
            connection.Open();

           //insert
            testTable testTable1 = new testTable();
            testTable1.name = "aaaaaa";
            connection.Insert<testTable>(testTable1);

            //Modelのフェッチ
            var qurey = "select * from testTable;";
            var result = connection.QueryFirst<testTable>(qurey);

            //update
            result.name += "testtest";
            connection.Update<testTable>(result);

            connection.Close();
        }

    }
}

C#からPythonを実行する

Pythonのパスを取得する

$ which python

/usr/local/bin/python

C#からPythonスクリプトを呼び出す

test.py
import sys

if len(sys.argv) == 3:
    firstArgument = int(sys.argv[1]) 
    secondArgument = int(sys.argv[2])
    print(firstArgument + secondArgument)
else:
    print('ArgumentException...')
using System;
using System.Collections.Generic;
using System.Diagnostics;

namespace sqliteTest {
    class Program {

    static void Main(string[] args) {

            var pythonInterpreterPath = @"パス/python";

            var pythonScriptPath = @"パス/test.py";

            var arguments = new List<string>
            {
            pythonScriptPath ,
            "20",   //第1引数
            "30"    //第2引数
        };

            var process = new Process() {
                StartInfo = new ProcessStartInfo(pythonInterpreterPath) {
                    UseShellExecute = false,
                    RedirectStandardOutput = true,
                    Arguments = string.Join(" ", arguments),
                },
            };

            process.Start();

            //python側でprintした内容を取得
            var sr = process.StandardOutput;
            var result = sr.ReadLine();

            process.WaitForExit();
            process.Close();
            Console.WriteLine("Result is ... " + result);
        }    
    }
}

Swaggerの生成

Swaggerを作り。SwaggerCodegenでC#で書かれたAPIクライアントプログラムを生成します。

Stoplight Studioを使います

本当に使ってよかったOpenAPI (Swagger) ツール

Swaggerの概要をまとめてみた。

スクリーンショット 2020-04-07 21.53.05.png

DataGrideViewとModelのバインディンで表示

DataGrideViewとModelのバインディングの実現 treeView

簡単なデータベースアプリのプロト開発

https://www.monodevelop.com/documentation/
https://www.monodevelop.com/documentation/stetic-gui-designer/
https://ja.coder.work/so/gtktreeview
よい
https://www.mono-project.com/docs/gui/gtksharp/widgets/treeview-tutorial/

GTK C# hotexamples 調べたいメソッド名で検索するとかなりよい

スクリーンショット 2020-04-09 13.42.35.png

後半へ続く

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Fedora31 で RDP する方法

Fedora31 で RDP する方法です。

# dnf install freerdp

コマンドの一例

$ xfreerdp -g 1600x1000 -u administrator

1 セッションしか張れないみたいですね。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む