- 投稿日:2020-04-09T19:29:50+09:00
お手軽Linux Guiアプリ開発 初級 前編
お手軽Linux Guiアプリ開発 初級 前編
- Sqlite3の利用
- Dapperの導入 Dapperについてまとめてみた
- Dapper Extensionの導入 Dapperの拡張ライブラリ 比較検討
- Swaggerを使う Stoplight Studioなどを使う 本当に使ってよかったOpenAPI (Swagger) ツール
- C#からPythonを実行する C#からPythonスクリプトを呼び出す
- DataGrideViewとModelのバインディングの実現 URL treeView
- RazurebyPiへのデプロイの仕方
前編は5まで
プロジェクトはGtk#を選択する
Nugetからパッケージをダウンロードする
ダウンロードするパッケージ
Dapper
DapperExtensions
Mono.Data.Sqliteをダウンロードします。Gtk2#の場合はSystem.Data.Sqliteは読み込めません。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) ツール
開発にあたってのポイント
- Gtk2#はMono.Data.Sqliteを使う。Dapperと併用できた
- gtkのサンプルを探すのに苦労した。C# gtk hotexamples 調べたいメソッド名で調べるとgitに上がっているサンプルを一覧できるサイトが見つけることができた。
- モデルにDataMemerを追加し、Dbのカラム名と変数名を紐づける(マッピング)
後編に続く
- 投稿日:2020-04-09T19:29:50+09:00
お手軽Raspberry Pi GUIアプリ開発 初級 前編
お手軽Raspberry Pi GUIアプリ開発 初級 前編
- Sqlite3の利用
- Dapperの導入 Dapperについてまとめてみた
- Dapper Extensionの導入 Dapperの拡張ライブラリ 比較検討
- Swaggerを使う Stoplight Studioなどを使う 本当に使ってよかったOpenAPI (Swagger) ツール
- C#からPythonを実行する C#からPythonスクリプトを呼び出す
- DataGridViewとModelのバインディングの実現 URL treeView
- RaspberryPiへのデプロイの仕方
開発はMac上のVisualSudioMacで行います
前編は5まで
プロジェクトはGtk#を選択する
Nugetからパッケージをダウンロードする
ダウンロードするパッケージ
Dapper
DapperExtensions
Mono.Data.Sqliteをダウンロードします。Gtk2#の場合はSystem.Data.Sqliteは読み込めません。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 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文の形式を変更します
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モデル
- モデルにはGetter Setterを必ず書くこと
public class testTable { public int test_id { get; set; } public string name { get; set; } }Swaggerを自動生成にさせる
Stoplight Studioを使います。APIURLとパラメータを登録していき、Swaggerを自動生成します。
本当に使ってよかったOpenAPI (Swagger) ツール
Swagger CodegenでAPIクライアント、スタブサーバ、HTML定義書を自動生成する
Swagger Codegenをインストールし、APIクライアントとモデルファイルを指定した言語で書き出します。
テンプレートをカスタマイズしておくと便利です。OpenAPI GeneratorでRESTful APIの定義書から色々自動生成する
Swagger Codegen
Swagger Codegen Git開発にあたってのポイント
- Gtk2#はMono.Data.Sqliteを使う。Dapperと併用できた
- gtkのサンプルを探すのに苦労した。C# gtk hotexamples 調べたいメソッド名で調べるとgitに上がっているサンプルを一覧できるサイトが見つけることができた。
- モデルにはgetter setterを必ず書くこと
- 投稿日:2020-04-09T19:29:50+09:00
お手軽Linux GUIアプリ開発 初級 前編
お手軽Linux GUIアプリ開発 初級 前編
- Sqlite3の利用
- Dapperの導入 Dapperについてまとめてみた
- Dapper Extensionの導入 Dapperの拡張ライブラリ 比較検討
- Swaggerを使う Stoplight Studioなどを使う 本当に使ってよかったOpenAPI (Swagger) ツール
- C#からPythonを実行する C#からPythonスクリプトを呼び出す
- DataGridViewとModelのバインディングの実現 URL treeView
- RaspberryPiへのデプロイの仕方
前編は5まで
プロジェクトはGtk#を選択する
Nugetからパッケージをダウンロードする
ダウンロードするパッケージ
Dapper
DapperExtensions
Mono.Data.Sqliteをダウンロードします。Gtk2#の場合はSystem.Data.Sqliteは読み込めません。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 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文を生成を変更します
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モデル
- モデルにはGetter Setterを必ず書くこと
public class testTable { public int test_id { get; set; } public string name { get; set; } }Swaggerを自動生成にさせる
Stoplight Studioを使います。
本当に使ってよかったOpenAPI (Swagger) ツール
開発にあたってのポイント
- Gtk2#はMono.Data.Sqliteを使う。Dapperと併用できた
- gtkのサンプルを探すのに苦労した。C# gtk hotexamples 調べたいメソッド名で調べるとgitに上がっているサンプルを一覧できるサイトが見つけることができた。
- モデルにはgetter setterを必ず書くこと
- 投稿日:2020-04-09T17:43:44+09:00
【画像あり】neofetchをいろんなOSで使ってみた!
- 投稿日:2020-04-09T13:48:18+09:00
お手軽Linux Guiアプリ開発 初級 前半
お手軽Linux Guiアプリ開発 初級 前半
開発内容
- GtkGUIでSqlite3を使う
- Dapperの導入 Dapperについてまとめてみた
- Dapper Extensionの導入 Dapperの拡張ライブラリ 比較検討
- Swaggerを使う Stoplight Studioなどを使う 使ってよかったOpenAPI (Swagger) ツール
- C#からPythonを実行する C#からPythonスクリプトを呼び出す
- DataGrideViewとModelのバインディングの実現 treeView
- RazurebyPiへのデプロイ
前半は5まで
開発環境
Mac
VisualStudioMac 2019
C#
Sqlite3VisualStudioMacにSqlite3の導入
NugetからSystem.Data.SQlite.Coreをインストールします
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についてまとめてみた
model.cspublic 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
test.pyimport 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) ツール
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-09T06:52:04+09:00
Fedora31 で RDP する方法
Fedora31 で RDP する方法です。
# dnf install freerdpコマンドの一例
$ xfreerdp -g 1600x1000 -u administrator
1 セッションしか張れないみたいですね。