deezus blog

.Net Core、Typescriptを中心に技術的ノウハウを公開しています

クラウド型会計ソフトで経理処理を楽にする方法

はじめに フリーランスで仕事をする場合、避けて通れないのが税金の計算です 月々の売上や経費を正しく記録し、確定申告しなければなりません 入出金が少なければ、最悪エクセルなどでの管理でもなんとかなると思いますが、本格的に事業を行う場合は会計ソフ…

Mapbox-glで地図を画像にする際に注意すべき点

はじめに mapbox-glで表示した地図を印刷用に画像ファイルにする必要がありました let image = map.getCanvas().toDataURL(); 上記コードでcanvasからdataurlを取得できるかと思いました が、結果は失敗 。。。 白紙の画像が出来ただけでした preserveDrawin…

google mapへのリンクURLで経路を表示する

はじめに google mapはURLにパラメータを付与することで、ある地点からある地点までの経路を表示させることができます 指定例 https://www.google.com/maps/dir/?api=1&origin=[from]&destination=[to] [from]と[to]に様々なものが指定できます 地点名で指定…

IT関連のイベントを地図で検索できるサービスをリリースしました

ITイベントマップとは ITイベントマップとは開催月、都道府県、キーワードなどでconnpassやdoorkeeperやATNDに掲載されているイベントを検索し、結果を地図で表示するWebサービスです event.deezus.net 使い方 トップページの「イベントマップを起動する」ボ…

DockerのMySQL、PostgreSQL、SQLServerにタイムゾーンを設定する方法

デフォルトはUTC 特に指定しない場合、UTCとなります 日時を保存するカラムにNOW()やGETDATE()を使用する場合、日本時間から9時間ずれることになります MySQLとSQLServerの場合 MySQLとSQLServerの場合、コンテナのタイムゾーンと同じになります コンテナの…

.NetCore3.0で単一バイナリを生成する方法

はじめに .NetCoreでプラットフォームを指定して発行すると、関連dllも大量に含まれます 関連dllが含まれていても実用上問題ありませんが、不特定多数のユーザーに配布する場合、どのファイルを実行すれば良いか分かりにくいかもしれません .NetCore3.0以降…

SQLServerのgeography型をポリゴンで検索する場合は左回りである必要があります

はじめに SQLServerのgeography型をポリゴンで空間検索する際、座標が左回りでなければうまく検索できません NetTopologySuiteを使用し、座標を左回り(時計回り)に修正する方法です SQL geography型のlocationを持つ、customersテーブルを空間検索するとしま…

ASP.NETCore3.0でViewの変更をリアルタイムに反映させる

はじめに .NETCore3.0になりrazorのViewがプリコンパイルされるようになりました 発行時にはパフォーマンス向上などメリットもあるのですが、開発時はViewを変更するたびに再起動しなければ反映されないので非常に面倒です 2.2以前のようにViewのcshtmlの更…

.NETCoreでYAMLを扱う

はじめに システムの設定ファイルなどをYAMLで記載し、ファイルを読み込みオブジェクトにデシリアライズする方法のメモです YamlDotNet インストール nugetでインストールします dotnet add package YamlDotNet 基本的な使い方 下記のようなsetting.yamlを下…

Mapbox GL JSの基本的な使い方

はじめに 以前ご紹介したleafle同様、独自に地図を構築できるMapbox GL JSの基本的な使い方のご紹介です 今回はWebpack+Typescript+scssで作成します blog.deezus.net パッケージインストール まずは必要なパッケージをインストールします npm install mapbo…

IOSではbodyにoverflow:hiddenが効きません

はじめに 現在開発中のSPAのWebシステムでは画面外にトーストのようなdivを配置し、メッセージを表示する際には座標を移動させ、画面に表示されるようにしています Androidでは問題なく動作しますが、iPadで動作確認した際、画面外のトーストが表示されてし…

Newtonsoft.Jsonの使い方

はじめに ASP.NETなどではAPIコントローラーでjsonを返す際にNewtonsoft.Jsonが使用されています あまり意識せずに使用していましたが、jsonのパースや値の取得など様々な使い方ができます 基本的な使い方 通常はシリアライズとデシリアライズで事足りるでし…

.NETCore2.2と3.0のHttpClientの挙動の違い

はじめに 先日.NETCore3.0がリリースされました それに伴い、.NETCore2.2で作成したWEBアプリを3.0にアップグレードしましたが、HttpClientで別サイトからデータを取得する部分でエラーが発生するようになりました。 var httpClient = new HttpClient(httpCl…

EntityFrameworkCoreで接続文字列を動的に変更する方法

はじめに ASP.NET Core + EntityFrameworkCore製マルチテナントのシステムで顧客ごとにデータベースが分かれており、動的に接続文字列を切り替える必要がある場合の対処法 構成 下記のようなデータベース構造を想定します 共通データベース 顧客一覧テーブル…

leafletの基本的な使い方

はじめに Google マップのような地図を独自に構築できるleafletの基本的な使い方をご紹介します とりあえず地図を表示する 下記の例ではOpenStreetMapを使用し、東京駅周辺を表示するサンプルです <html lang="jp"> <head> <meta charset="UTF-8"> <title>leaflet</title> <link rel="stylesheet" href="https://unpkg.com/leaflet@1.5.1/dist/leaflet.css" /> </link></meta></head></html>

EntityFrameworkCoreでSQLServerの空間情報を扱う方法

はじめに SQLServerでGeography型のカラムを扱う方法です 必要なパッケージ Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite テーブル構造 例として店舗の座標を保存するだけのテーブルとします create table stores ( id int identity constrain…

PostgreSQLでテーブル一覧を取得する方法

PostgreSQLでテーブル一覧を取得する場合は下記のクエリを実行すれば取得できます SELECT relname FROM "pg_stat_user_tables" WHERE schemaname='public' なお、PostGISを使用する場合はWHERE schemaname='public'を付けないとPostGIS関連ものが含まれてし…

DockerでMySQL8を使う場合、パスワード認証をmysql_native_passwordにする方法

Node.jsでMySQLに接続できない MySQL8はパスワードでの認証方法(caching_sha2_password)が5.7以前(mysql_native_password)と変わりました そのため対応するドライバでない場合、うまく認証ができずMySQLに接続できません 例えばNode.jsでmysqlを使用して接続…

dacでWordPressのDBをextractしてみる

dacを使えばデータベース構造をyamlにすることができます インストール直後の状態でextractすると以下のようになりました tables: wp_commentmeta: columns: meta_id: id: true comment_id: type: bigint unsigned length: 20 notNull: true default: '0' me…

C#でWebAssemblyが開発できるBlazorを試してみる

はじめに 現時点(2018/10/21)ではプレビュー段階ですがC#でWebAssemblyを開発することができるBlazorというものがあります https://blazor.net/ これを使うことでWebシステムにおいてサーバサイドとクライアントサイドの両方をC#で開発することができます 現…

yamlでデータベースを管理するツールを作りました

はじめに 開発中のデータベースのテーブル構造変更が簡単にできるようなツールを作成しています npmで公開しました @deezus/dac データベースに特化したAnsibleのようなものを目指しています インストール方法 npmでインストールします npm install @deezus/…

テーブルのカラムにチェック制約を追加する方法

はじめに 例えば年齢制限のあるシステムなどデータベースに登録できる値に制限をかけたい場合があります そのようなカラムにチェック制約を追加すれば、条件に合わない値を登録しようとした場合エラーにすることができます クエリ例 以下の例ではusers.ageに…

郵便番号を取得する方法

はじめに 郵便番号検索を作りたい場合、zipcloudなど既存のAPIを使えば簡単にできます ただ状況によっては完全に自前で実装したい場合もあると思います そういう場合は郵便番号の一覧は郵便局のサイトで公開されているcsvを使用します csvの入手 全国の郵便…

ジェネリック型制約

はじめに C#では関数に型引数を指定することができます public void TestFunction<T>(){ // 何かしらの処理 } ジェネリック制約 型引数は便利なのですが、どんな型でも許容するため状況によっては使いにくい場合もあります 指定可能な型を制限したい場合、関数</t>…

node.jsでMySQLに接続する

はじめに typescript+node.jsでMySQLに接続するにはpromise-mysqlを使用します インストール方法 npmでインストールします npm install promise-mysql --save typescriptを使用するので型定義もインストールします npm install @types/mysql --save 使い方 …

node.jsでSQLServerに接続する

はじめに typescript+node.jsでSQLServerに接続するにはmssqlを使用します インストール方法 npmでインストールします npm install mssql --save typescriptを使用するので型定義もインストールします npm install @types/mssql --save-dev 使い方 データベ…

node.jsでpostgresqlに接続する

はじめに typescript+node.jsでpostgresqlに接続するにはpgを使用します インストール方法 npmでインストールします npm install pg --save typescriptを使用するので型定義もインストールします npm install @types/pg --save-dev 使い方 データベースへの…

FileResultでメディアファイルを返す場合の注意点

サーバの処理を通じてcsvなどをダウンロードする際、FileResultを使用します この場合のActionは例えば以下のようなコードになります public IActionResult Csv() { return File(System.IO.File.OpenRead("xxx.csv"), "text/csv"); } 非常に簡単ですが多くの…

DockerHubでautomated buildする場合のタグのつけ方

GitHubと連携してDockerHubでコンテナをビルドする DockerHubにはGitHubのリポジトリと連携して自動でコンテナをビルドする機能があります 特に指定しなければ自動でlatestのタグが付けられます 例えば以下はmasterブランチにpushされるとlatestタグのコンテ…

dockerでwordpressを構築する

概要 dockerでwordpressを構築し、ホストのnginxをリバースプロキシとして使用します docker-compose 使用するコンテナはwordpressとmysqlです docker-compose.ymlは下記のようにしました wp-contentはボリュームとしてマウントしています version: "2" serv…