2017-01-01から1年間の記事一覧
最近、本腰を入れてPythonを基礎から勉強し直しています。 そうした中で、「LINQならああやって書くアレは、Pythonではどうやって書くのだろう?」と調べることが増えてきましたので、一旦整理しておきたいと思います。 今回はリストです。 辞書や集合なども…
XMLでリクエスト/レスポンスするAPIへアクセスする機会がありましたので、XmlSerializerの使い方を備忘録にしておきます。 XMLをシリアライズ/デシリアライズする まずはC#オブジェクト(ここではBook)とXML形式の文字列でシリアライズ/デシリアライズさせ…
今回はHttpClientでBasic認証を行います。 Basic認証するユーザ名とパスワードをコロン":“でつないでBase64形式にエンコーディングして、その値をAuthorizationヘッダに詰めればOKです。 using System; using System.Net.Http; using System.Text; using Sys…
先週に引き続いて、HttpClientネタです。 WebサイトにHttpClientを使ってフォーム認証を行い、Cookieをリクエストに詰めて取り回す必要がありましたので、備忘録としておきます。 フォームでユーザ名・パスワードの情報を詰めたリクエストをPOSTして、レスポ…
C#でAPIのコールなどに使われるHttpClientクラス(System.Net.Http名前空間)でタイムアウトを設定・制御する方法です。 HttpClientのTimeoutプロパティ(TimeSpanクラス)にタイムアウト時間を設定する(デフォルトは100秒) タイムアウト時にTaskCanceledExcep…
データ分析ソリューション事業を軸に展開されているALBERTの方々によって書かれた「データ集計・分析のためのSQL入門」を読みましたので、備忘録としてまとめておきます。 全5章で構成されており、集計・分析レポートの基本(Chapter 1)、SQLの基本(Chapter 2…
最近は生データの分析などで難しめのSQLを書くことが増えてきましたので、SQLの地力を鍛えるために、クックパッド・青木さんが著者の「10年戦えるデータ分析入門」を読みました。 本書は2部構成となっており、第1部ではSQLを使ったデータ分析のテクニック、…
JSONの扱いでちょっとした前処理が必要となりましたので、メモしておきます。 以下のようなフラットなJSON文字列を扱うケースがありました。 { "key1": "value1", "key2": "value2" } 任意のキーと値(文字列型)が追加されるので、Dictionary型とした方が都合…
「Pythonによる機械学習入門」を読みましたので、第2部で得たことをまとめます。 総評すると「scikit-learnを使えば機械学習で有名な各種手法がお手軽に試せるぜ」といった感じです。 あくまで入門なので「どう使えば良いのか?」が主たる関心事で、「その方…
前回の投稿ではLambdaからエンキューされたメッセージをKinesis FirehoseでS3までアップロードしました。 今回はAthenaを使ってこのアップロードしたファイルをSQLで検索できるようにします。 Athena S3バケットのファイルからSQLライクな構文で検索できるサ…
今回はKinesis Firehoseを使って、Lambdaから受け取ったレコードをS3に出力させてみます。 Kinesis Firehoseの作成 Kinesis Firehoseは受信したレコードをプログラミングゼロでS3/Redshift/Elasticsearchへ流し込むことができるストリームサービスで、現在は…
大量のURL文字列を正規表現パターンとマッチングして分類するバッチ処理をC#で開発していたところ、実装が進んで分類を増やすと、唐突に割に合わない処理時間となってしまったことがありました。 原因としては正規表現のマッチング方法が非効率的だったため…
Dictionaryのキーに複数の値を使う方法について、考察してみます。 Dictionaryのキーに複数の値を使う方法 Dictionaryのキーに複数の変数値を使いたい場合(例えば、クラス名と出席番号をキーとして氏名を値とする、など)にいくつかの方法が考えられますが…
DynamoDBをバッチなどでアクセスすることを想定して、今回はDynamoDBのデータをバルクで取得・更新させてみます。 BatGetとBatchWrite DynamoDBをバルクで取得・更新する場合、C#の永続性モデルではDynamoDBContextクラスで提供されるBatchGetおよびBatchWri…
C#で書かれた.NET CoreアプリケーションからPostgreSQLのデータを操作する機会があり、NpgsqlとEntity Framework Core(EF Core)の使い方を調べました。 Npgsql NpgsqlはPostgreSQL用のADO.NETデータプロバイダで、C#やVB.NETからPostgreSQLに接続してSQLを実…
.NET Coreアプリケーションでログ出力にはNLogが良いみたいですね。 NLog NLogは導入が容易で拡張性が高いログ出力ライブラリで、最近ではlog4netよりも人気があるようです。 github.com .NET Coreの場合は、NLog.Extensions.Loggingを使います。 github.com…
DynamoDB StreamsをLambda(C#)で使ってみました。 DynamoDB Streams DynamoDBにはテーブルへの更新(作成、変更、削除)をキャプチャし、その情報(レコード)をバッファリングするストリームを作成することができる「DynamoDB Streams」という機能が提供され…
Json.NETを使って、JSONを任意のクラスとDictionary・Listにそれぞれデシリアライズしてみます。 www.nuget.org 任意のクラス(POCO)にデシリアライズする 例えばアプリケーションの設定ファイルのように静的な構造のJSONであれば、専用のPOCOにデシリアラ…
仕事でGoを使うこととなりましたので、年明けから勉強しておりました。 一つの区切りとしてナンチャッテToDo Web APIサーバを作りましたので、GitHubで公開しておきます。 github.com 参考文献 Goは↓の本を読んでました。 他の言語と比較しながらGoの考え方…
今回はLambdaの環境変数にC#からアクセスしてみます。 接続するDBを環境毎に切り替える場合などに役立ちます。 AWS Lambda の新機能 – 環境変数とサーバーレスアプリケーションモデル (SAM) | Amazon Web Services ブログ (結構最近追加された機能だったの…
12月にAWS LambdaがC#でも使えるようになって、Serverlessでも1.4.0からC#用のテンプレートが提供されましたが、プロジェクトファイルは別で準備しないといけなかったり、ちょっと不便でした。 ところが、AWS SDKでServerless用のプロジェクトテンプレートが…
最近の投稿でC#で書いたプログラムをLambdaで実行させていますが、初回実行が2回目以降と比較して明らかに遅いようなので簡単に調査しました。 構成 PCからJMeterでAPI Gatewayへリクエストし、API GatewayがLambdaをキックさせます。 Lambda自体は定数文字…
今回はDynamoDBへのCRUD操作を、C#で書いて、Lambdaで動かしてみたいと思います。 テーブルの作成 まずはAWS ConsoleからDynamoDBへテーブルを予め作成します。 テーブル名を"Todos"とします。 パーティションキーを"Id"、ソートキーを"Due"とします。 エン…