ASP.NET Core MVCでSCSSを使う

 .NET CoreでSCSSを使う。Gulpを使ってSCSSのコンパイルを行う記事が多いがVisualStudioGalleryにあるWebCompilerを使う。

 まずWebCompilerのインストール。あとのちのち使うBundler & Minifierもインストールする。
 VisualStudioの「拡張機能と更新プログラム」を開いて、VisualStudioGalleryを検索ターゲットにして、それぞれの名前をキーワードとして入れれば出てくる。そのままそれらをインストール。




 インストールできたら適当なSCSSファイルをプロジェクトに追加して右クリックする。するとWebCompilerがあるのでそこからCompileFileを選択。これで以降はSCSSを書き換えればCSSへのコンパイルが自動で行われる。


 あとはコンパイルされたファイルをサーバに置く準備。SCSSがコンパイルされると、VisualStudioのソリューションのそのSCSSがツリーになっている。ツリーを開いてサーバに置きたい形式のファイルを右クリックしてBundler & Minifier。


comment: 0

雑記

 今年やったことでまとめられてなかったものをまとめるためにアドベントカレンダーを始めたが、ネタが切れた。書いておきたかったことは書き終えたのであと1、2本書いて終了。
 このブログのデザイン変えたくなってきた。あとマークダウンを取り入れるか迷っている。
comment: 0

プログラミングについてとその他と


 このブログの画像タグの挿入方法をいじってみたので無駄に画像を入れながら、ぼちぼちとプログラミングやその周辺で個人的に思うことを書いておく。画像はPixabayのものを使っているのでライセンスの心配はない。
Pixabay


・プログラミングとぼくと・・・教育と
 プログラミングが好きで仕事にしている。趣味でもプログラミングをしていて、出社前でも書くものがだいぶ固まっていれば朝食を食べながら書いているし、仕事から帰っても休日になってもそれなりの頻度でプログラムを書くかそれに付随することをしている。

 わりとプログラミングをしている頻度が高い。上司にプログラマじゃなかったらなにをしていると思うかと聞かれたが、どうにも答えようがなかった。
 プログラマを選んだのは、自分の経験の中から面白いと思うものを選び取っただけのことだったから。じゃあ他にはなにを選んでた可能性があるかと考えると、すぐには出てこない。それをちゃんと出てくるまで考えるのは、プログラマやその近辺の仕事をしながら生きていられる限りは時間の浪費だと思っている。だからどこかでレジ打ちでもしてるんじゃないかと答えた。


 家に帰ってもプログラムを書いている、プログラミングがけっこう好きなんだと言うと、「もう天性だな」と言われた。ぼくにはこの天性、とくに天という言葉がひっかかる。
 天性、要は先天的に、元から才能を持って生まれたという意味だろう。だけど実際ぼくがプログラミングをしていて、先天的なものより、母親の努力と自分を捻じ曲げたことのほうが大きく役立っている。
 ぼくは高水準なところのプログラミングを仕事にしている。だけど趣味でライブラリを作るのにバイナリを読んだりしていて、それなり数学ができなかったら危なかったなと思う。
 数学に関しては工学で修士を取った人たちの平均程度だと思う。微分や積分を学校で教わったときはなんだかよくわからなかったが、あとで自分で思いついたことを展開してみたら教科書で見た微積分の公式と一致して、どうにかこうにかでラプラスを偉大に感じるぐらいに数学を楽しめるようになった。
 修士レベルに数学をやっているというのは世間の平均でみるとそれなり高いところにいると思う。だけどぼくの数学レベルは元はかなり低いところにあった。ぼくは中学の数学の出だしで、カッコを使った計算が全然できなかった。数学の基礎の基礎である。これを母ができるようになるまで面倒を見てくれていたおかげで、中学のトップ集団の真下につけるぐらいには数学ができるようになった。中学生の頃の自分を思い出すと、クソ生意気に理屈を並べるガキで、いちいち反抗してくるそんなガキに、学校で身につけられなかったことを面倒見てくれて理解させてくれたことにはいくら感謝しても足りないぐらいだろう。
 あとは数学にしろプログラミングにしろ、それなりのことをするには集中力がいる。とくにプログラミングで目にしてきたのは、自分の思い通りに動かないことに怒って時間を大きく消費してしまうことだ。ここで感情を高ぶらせず集中して一気に片づけることができれば、いろいろ早く終えることができる。プログラミングをするには寂静の状態こそが一番理想的だと思っている。ぼくはそのために、平常心を乱すようなことをいくらか断ってきた。例えば音楽を聴くなんてのも気持ちが高ぶったりするので、断つまではいかないにしろ一日の摂取量の上限を設けてある。特にロックが好きだったのに。
 ぼくがプログラミングを続けているのは母の教育に対する努力や、自分の選択によって捨てられたものの結果である。先天的なものでプログラミングをしているつもりはない。



 プログラミングから話がそれるが、天才と呼ばれることはそんなにうれしいことだろうかと思う。ぼくは自分よりと同等のレベルの人たちのいくらからか天才だと言われてきた。だけど天才と呼ばれるような実績はまったくもってない。
 ぼくもかつては自分を天才と呼ばれるような脳みそを持ってるんじゃないかと思っていた。少ない努力で人より結果を出せるんじゃないかと勘違いをしていた。それである程度のところまでいってやっていたが、ある場所でまったく結果を出せなかった。そこで思い返すとぼくよりまだ上があった。あきらかに届いていないレベルがあった。そういう人たちとぼくは違った。持っていなかった。けどもうそんなことはどうでもいい。それなりの専門教育を受けていればなにかを作ることはできる。それでいろいろやってみることはできる。
 ぼくの心はいろいろな疑念からニヒリズムをとおってきた経緯があってわりとからっぽである。いくらかはからっぽでいいと思っている他方でそれをどうにか意味を見出したもので埋めようともがいている。ぼくにとってそれなりの結果もなしに天才と自負するのは、心をからっぽにするにも埋めるにもそぐわないことだ。だから天才だの天性だの才能なんてのはどうでもいいことだ。



・オープンソース
 プログラマ界隈ではオープンソースに参加するのは意義があるといわれている。ぼくはあるPythonライブラリに不足した機能にコミットしようとしたが、結局それを自分のオープンソースライブラリとして独立させた。そのあたりで思っていることを。
 ぼくはプログラミングを始めたとき、オープンソースに興味がなかった。なにか作ったならそれで金が欲しいと思っていたから。でも今は自分からそれをやっている。
 オープンソースはぼくにとっては金になっていない。しかし賛辞があったり良いコードを書く練習になったりするのでいいものだと思う。今あるライブラリのメンテナンスは続けていくし、またなにか必要になれば作るだろう。これはプログラミングが面白いと思いつつ、良いコードをかけるようになりたいという気持ちによる。
 ただ一つ、自分でオープンソースをやっていく上で出くわすクソな点についてうっぷんがたまっているので書いておく。それはGithubのIssueに以下の種類の人間が来たときである。
1.規格を理解していないのにバグだと思って報告してくる
→仕様書読んでから来い
2.ライブラリの名前にある規格の名前を入れているのだが、そんなライブラリに別の規格を機能として追加すべきだと進言してくる
→MITライセンスにしてるからフォークして自分でやって
3.サンプルもドキュメントもあるのに「おれが使うコード書いて」
→出直してきて。いや、もうむしろ来ないで


 ちなみに逆で、最近すごくうれしいIssueを上げてくれたケースがある。「このライブラリは処理ファイルが大きくなるとパフォーマンスが悪い。調べてみたけどここがネックになっているよ」とテスト結果付きでピンポイントで改善案とそのたたき台となるコードを上げてくれた。これはすごくうれしかった。自分のライブラリを改善する協力者が得られたのだから。
comment: 0

ASP.NET Core MVCでAzure StorageのBlobに画像をアップロードする

 Azure Storageを使うことにしたのでそこにファイル(個人的に画像を用途に考えている)をアップロードする方法。コードメモ。準備フェーズは簡単にできたので詳しいメモは残さない。

 まずAzure Storageを用意。Storage内にコンテナを一つ用意。アクセス用のアカウント名とキーをメモしておく。

 C#(.NET Core)からAzureを使う準備。Nugetコンソールで下記。
Install-Package WindowsAzure.Storage
公式のサンプルを適当に探して読んでたらもう一つパッケージを入れていたが、それはこれを書いている時点で.NET Core対応をしていないものなので入れちゃいかん。

 準備ができたのでコード。ブラウザのフォームから画像を受け取ってそれをAzure Storageに入れるという流れ。
 まずHTMLは下記のような具合に。
<form action="Images" method="POST" enctype="multipart/form-data">

<input type="file" name="images" multiple>
<button>send</button>
</form>


 ブラウザからのPOSTを受け取ってAzure Storageに入れるC#コード。
[HttpPost]

public async Task<string> SaveImagesAsync()
{
var accontName = "xxxxx";
var key = "xxxx";
var account = new CloudStorageAccount(
new Microsoft.WindowsAzure.Storage.Auth.StorageCredentials(
accontName,
key),
true);
var blobClient = account.CreateCloudBlobClient();
var blobContainer = blobClient.GetContainerReference("blog");

foreach (var file in Request.Form.Files)
{
var name = System.IO.Path.GetFileName(file.FileName);

using (var s = file.OpenReadStream())
{
var blockBlob = blobContainer.GetBlockBlobReference(name);
await blockBlob.UploadFromStreamAsync(s);
}

}
return "ok";
}
comment: 0

今日は間に合わず

 先日書いたOneDriveAPIから取得した画像サムネイルのURLがテンポラリなもので、見事に有効期限切れを起こしていた。だからOneDriveをこのブログのメインストレージに使うのはやめて、Azureのファイルストレージに切り替えるためにブログエンジン書き換え中。アドベントカレンダーネタ間に合わず。
comment: 0