け日記

SIerから転職したWebアプリエンジニアが最近のIT技術キャッチアップに四苦八苦するブログ

Python 回帰木でセッション数を予測するモデルを作成する

前回の投稿では線形回帰を使ってセッション数を予測しましたが、今回は回帰木を使ってみます。 Python GoogleAnalyticsのデータを使って線形回帰でセッション数を予測するモデルを作る - け日記 回帰木による学習・テスト 前回の投稿では、本ブログの1日あた…

Python GoogleAnalyticsのデータを使って線形回帰でセッション数を予測するモデルを作る

前回の投稿で取得したGoogle Analytics(GA)のアクセスデータを使って、1日のセッション数を線形回帰で予測するモデルを作ります。 PythonでGoogle AnalyticsのデータをPostgreSQLへロードする - け日記 GAにおけるセッションは、ユーザの訪問によって開始さ…

PythonでGoogle AnalyticsのデータをPostgreSQLへロードする

Google Analytics(GA)のデータを機械学習の勉強用に使えないかなと思ったことがきっかけです。 まずは、Pythonで扱いやすくするために、GAのデータをローカルのPostgreSQLにロードさせてみました。 3ステップでデータを持ってきます。 GAのAPIの有効化 APIか…

Python PandasをSQLみたいに使う

PandasでSQLっぽい処理(SELECT、WHERE、JOINなど)をさせてみます。 準備 前回同様、以下で提供されていますPostgreSQLのサンプルデータベースを使います。 こちらの記事を参考にリストアしました。 PostgreSQL Sample Database 前回の記事で紹介した方法で、…

Python PostgreSQLのテーブルをPandasのDataFrameへ読み込む

PostgreSQLのテーブルをPandasのDataFrameに読み込む方法の備忘録です。 今回も以下で提供されているサンプルデータを使っています。 PostgreSQL Sample Database まずはPandasと、PostgreSQLのドライバとしてpsycopg2をインポートして、DBに接続しています…

C# HttpClientでKeep-Aliveを無効にする

C#

仕事で利用していたクラウドサービスのAPIの仕様で、リクエスト都度で認証する必要があり、ハマったので備忘録にしておきます。 当初は以下のようにHttpClientでAPIをコールしていたのですが、一度認証されるとそのセッションが使いまわされてしまいます。 H…

LINQと同じ処理をPythonのリストで行う

最近、本腰を入れてPythonを基礎から勉強し直しています。 そうした中で、「LINQならああやって書くアレは、Pythonではどうやって書くのだろう?」と調べることが増えてきましたので、一旦整理しておきたいと思います。 今回はリストです。 辞書や集合なども…

C# XmlSerializerでXMLを扱う

C#

XMLでリクエスト/レスポンスするAPIへアクセスする機会がありましたので、XmlSerializerの使い方を備忘録にしておきます。 XMLをシリアライズ/デシリアライズする まずはC#オブジェクト(ここではBook)とXML形式の文字列でシリアライズ/デシリアライズさせ…

C# HttpClientでBasic認証する

C#

今回はHttpClientでBasic認証を行います。 Basic認証するユーザ名とパスワードをコロン":“でつないでBase64形式にエンコーディングして、その値をAuthorizationヘッダに詰めればOKです。 using System; using System.Net.Http; using System.Text; using Sys…

C# HttpClientでCookieを設定する

C#

先週に引き続いて、HttpClientネタです。 WebサイトにHttpClientを使ってフォーム認証を行い、Cookieをリクエストに詰めて取り回す必要がありましたので、備忘録としておきます。 フォームでユーザ名・パスワードの情報を詰めたリクエストをPOSTして、レスポ…

C# HttpClientでタイムアウトを設定する

C#

C#でAPIのコールなどに使われるHttpClientクラス(System.Net.Http名前空間)でタイムアウトを設定・制御する方法です。 HttpClientのTimeoutプロパティ(TimeSpanクラス)にタイムアウト時間を設定する(デフォルトは100秒) タイムアウト時にTaskCanceledExcep…

「データ集計・分析のためのSQL入門」 まとめ

データ分析ソリューション事業を軸に展開されているALBERTの方々によって書かれた「データ集計・分析のためのSQL入門」を読みましたので、備忘録としてまとめておきます。 全5章で構成されており、集計・分析レポートの基本(Chapter 1)、SQLの基本(Chapter 2…

「10年戦えるデータ分析入門」第1部 まとめ

最近は生データの分析などで難しめのSQLを書くことが増えてきましたので、SQLの地力を鍛えるために、クックパッド・青木さんが著者の「10年戦えるデータ分析入門」を読みました。 本書は2部構成となっており、第1部ではSQLを使ったデータ分析のテクニック、…

C# JSON文字列から不要な要素を削除する

C#

JSONの扱いでちょっとした前処理が必要となりましたので、メモしておきます。 以下のようなフラットなJSON文字列を扱うケースがありました。 { "key1": "value1", "key2": "value2" } 任意のキーと値(文字列型)が追加されるので、Dictionary型とした方が都合…

「Pythonによる機械学習入門」 第2部 基礎編のまとめ

「Pythonによる機械学習入門」を読みましたので、第2部で得たことをまとめます。 総評すると「scikit-learnを使えば機械学習で有名な各種手法がお手軽に試せるぜ」といった感じです。 あくまで入門なので「どう使えば良いのか?」が主たる関心事で、「その方…

Kinesis FirehoseでS3にアップロードしたファイルをAthenaで検索する

AWS

前回の投稿ではLambdaからエンキューされたメッセージをKinesis FirehoseでS3までアップロードしました。 今回はAthenaを使ってこのアップロードしたファイルをSQLで検索できるようにします。 Athena S3バケットのファイルからSQLライクな構文で検索できるサ…

Kinesis Firehoseを使ってLambda(C#)からS3にファイル出力する

今回はKinesis Firehoseを使って、Lambdaから受け取ったレコードをS3に出力させてみます。 Kinesis Firehoseの作成 Kinesis Firehoseは受信したレコードをプログラミングゼロでS3/Redshift/Elasticsearchへ流し込むことができるストリームサービスで、現在は…

C# Regexクラスのインスタンスメソッドと静的メソッドの性能比較

C#

大量のURL文字列を正規表現パターンとマッチングして分類するバッチ処理をC#で開発していたところ、実装が進んで分類を増やすと、唐突に割に合わない処理時間となってしまったことがありました。 原因としては正規表現のマッチング方法が非効率的だったため…

Dictionaryのキーに複数の値を使う

C#

Dictionaryのキーに複数の値を使う方法について、考察してみます。 Dictionaryのキーに複数の値を使う方法 Dictionaryのキーに複数の変数値を使いたい場合(例えば、クラス名と出席番号をキーとして氏名を値とする、など)にいくつかの方法が考えられますが…

C#でDynamoDBをバルクで取得・更新する

DynamoDBをバッチなどでアクセスすることを想定して、今回はDynamoDBのデータをバルクで取得・更新させてみます。 BatGetとBatchWrite DynamoDBをバルクで取得・更新する場合、C#の永続性モデルではDynamoDBContextクラスで提供されるBatchGetおよびBatchWri…

NpgsqlとEntityFramework Coreを使ってPostgreSQLをCRUDする

C#で書かれた.NET CoreアプリケーションからPostgreSQLのデータを操作する機会があり、NpgsqlとEntity Framework Core(EF Core)の使い方を調べました。 Npgsql NpgsqlはPostgreSQL用のADO.NETデータプロバイダで、C#やVB.NETからPostgreSQLに接続してSQLを実…

.NET CoreアプリケーションでNLogを使う

.NET Coreアプリケーションでログ出力にはNLogが良いみたいですね。 NLog NLogは導入が容易で拡張性が高いログ出力ライブラリで、最近ではlog4netよりも人気があるようです。 github.com .NET Coreの場合は、NLog.Extensions.Loggingを使います。 github.com…

Lambda(C#)でDynamoDB Streamsを使う

DynamoDB StreamsをLambda(C#)で使ってみました。 DynamoDB Streams DynamoDBにはテーブルへの更新(作成、変更、削除)をキャプチャし、その情報(レコード)をバッファリングするストリームを作成することができる「DynamoDB Streams」という機能が提供され…

Json.NETを使って任意のクラスやDictionary・Listにデシリアライズする

C#

Json.NETを使って、JSONを任意のクラスとDictionary・Listにそれぞれデシリアライズしてみます。 www.nuget.org 任意のクラス(POCO)にデシリアライズする 例えばアプリケーションの設定ファイルのように静的な構造のJSONであれば、専用のPOCOにデシリアラ…

Go+Gin+DynamoDBでWeb APIサーバを作る

仕事でGoを使うこととなりましたので、年明けから勉強しておりました。 一つの区切りとしてナンチャッテToDo Web APIサーバを作りましたので、GitHubで公開しておきます。 github.com 参考文献 Goは↓の本を読んでました。 他の言語と比較しながらGoの考え方…

Lambda(C#)の環境変数にアクセスする

今回はLambdaの環境変数にC#からアクセスしてみます。 接続するDBを環境毎に切り替える場合などに役立ちます。 AWS Lambda の新機能 – 環境変数とサーバーレスアプリケーションモデル (SAM) | Amazon Web Services ブログ (結構最近追加された機能だったの…

Visual StudioのAWS Serverlessテンプレートを使ってLambdaの環境を作る

12月にAWS LambdaがC#でも使えるようになって、Serverlessでも1.4.0からC#用のテンプレートが提供されましたが、プロジェクトファイルは別で準備しないといけなかったり、ちょっと不便でした。 ところが、AWS SDKでServerless用のプロジェクトテンプレートが…

AWS Lambda(C#)の初回実行が遅いようなので調べました

最近の投稿でC#で書いたプログラムをLambdaで実行させていますが、初回実行が2回目以降と比較して明らかに遅いようなので簡単に調査しました。 構成 PCからJMeterでAPI Gatewayへリクエストし、API GatewayがLambdaをキックさせます。 Lambda自体は定数文字…

AWS DynamoDBをC#でCRUDする

今回はDynamoDBへのCRUD操作を、C#で書いて、Lambdaで動かしてみたいと思います。 テーブルの作成 まずはAWS ConsoleからDynamoDBへテーブルを予め作成します。 テーブル名を"Todos"とします。 パーティションキーを"Id"、ソートキーを"Due"とします。 エン…

AWS Kinesis StreamへPut/GetするLambdaをC#で書いてみる

今回はKinesis StreamへPut/GetするLambdaをC#で書いてみます。 データフローとしてはLambda→Kinesis Stream→Lambdaとなります。 Kinesis Streamの作成 Kinesis Streamは、デバイス情報やログなどの継続して生成され続けるデータを効率的に処理するためのマ…

AWS API GatewayでフックされるLambdaをC#で書いてみる

最近仕事でAWSに触っています。 また、12/1にAWSのLambdaがC#に対応したこともあり、Lambdaで色々遊んでます。 AWS Lambda Supports C# 今回の投稿では、HTTPリクエストを受けたAPI GatewayがLambdaをフックしてレスポンスを返す、ということをやってみます…

ASP.NET Core MVCでCache-Controlを設定する

ASP.NET Advent Calendar 2016 - Qiitaの21日目の投稿となります。 テーマをガラッと変えました。 ASP.NET Core MVCのコントローラから返されるHTTPレスポンスヘッダのCache-Controlを設定してみます。 Cache-Control Cache-Controlは、ブラウザ(やキャッシ…

有給消化期間の過ごし方

転職 Advent Calendar 2016 - Qiitaの14日目となります。 少しポエムも含みます。 今年11月にSIerからWebサービスの会社へ転職しました。 早くから退職することを報告していたこともあって、幸いにも有給消化として1ヶ月のお休みをいただくことができました…

Visual Studio Team ServicesでGitHub Flow

Visual Studio Advent Calendar 2016 - Qiitaの 13日目のエントリです。 (飛び入り参加で失礼します。) 個人のプロジェクト管理にVisual Studio Team Services(VSTS、かつてのVisual Studio Online)を利用しています。 今回はVSTSでGitHub Flow開発する…

DataSetの使い方を学ぶ

最近、少し前に開発されたASP.NET Web Formsのアプリケーションを仕事でメンテナンスしてます。 そこでDataSet(System.Data.DataSet)を初めて扱ったのですが、わからないことが多くて時間を費やしてしまったので、少し勉強することにしました。 DataSet=…

Visual Studio Team Servicesでチームプロジェクトをスタートする

Visual Studio Advent Calendar 2016 - Qiitaの2日目のエントリです。 個人のプロジェクト管理にVisual Studio Team Services(VSTS、かつてのVisual Studio Online)を利用しています。 これから何回かに分けて、VSTSの使い方を紹介していきたいと思います…

Visual Basicを1日で学ぶ

仕事でVisual Basicがメインのアプリケーションの開発・保守を行うことになりました。 全く未経験のVisual Basicを短期間で習得するために、Soft Skillsで紹介されている独学のための10ステップに則って学んでみました。 SOFT SKILLS ソフトウェア開発者の…

社内のQ&A対応で気をつけていること

インフラ担当者としての業務の一つに、社内のアプリケーション開発者からのQ&A対応があります。 私の場合は、自社製のライブラリやフレームワーク、導入しているソフトウェア製品などについてのQ&Aを担当しています。 サポートデスクやサポートエンジニアの…

Entity Frameworkをチーム開発で使ってみました

C#

ASP.NET Advent Calendar 2015 - Qiitaの7日目のエントリです。 最近、初めてEntity Frameworkを使ったチーム開発を行いましたので、得られた気づきを備忘録として整理しています。 Entity Frameworkの導入を考えておられる方々の一助になれば幸いです。 ど…

このブログの趣旨

はじめまして。 このブログを始めた経緯と目的を忘れないようにするために、初投稿としてメモしておきます。 経緯 私自身はいわゆるシステムインテグレータ(SIer)に勤めており、主にシステム開発、部内の開発標準・開発環境の整備を担当しています。 古き良…