C#のHttpClientでPOSTしてresponse bodyを受け取る

リクエスト送信
async public Task<string> HttpPost(string url)
{
    var client = new HttpClient();
    var content = new FormUrlEncodedContent(new Dictionary<string, string>
    {
        /**
         * POSTするデータを書く
         * { "key", value }
         * のような感じで
         */
    });

    var response = await client.PostAsync(url, content);
    return await response.Content.ReadAsStringAsync();
}

responseにはStatusCodeとかHeadersも入ってる。

レスポンス取得
var url = "http://127.0.0.1:8080";
var task = Task.Run(() => {
    return HttpPost(url);
});
System.Console.WriteLine(task.Result);

ググってみたら他所のサイトのサンプルコードには

var task = await HttpPost(url);

で値が取れるかのように書いてあるところもあったけど、自分の場合は無理だった(アプリが止まった)

.NETのWEBアプリじゃなくてXamarinのスマホアプリだからだろうか。。

neovimで言語ごとのインデントとかの設定をする方法

まあマニュアル読めば書いてある話ではあるんだけど、そこらへんうまいこと日本語で解説してくれてる人がいるかと思ったらあんまりいないみたいだったので自分用にメモっておく。

1. runtimeディレクトリにftpluginディレクトリを作る

Unix系のシステムでは通常これは “~/.config/nvim” になるらしい。

mkdir -p ~/.config/nvim/ftplugin

runtimeディレクトリがわかんない場合は、vim上で

:set runtimepath?

とコマンド打てば表示される。
表示された中で一番最初に出てくるパスを普通は使うものらしい。

2. さっき作ったftpluginディレクトリに “ファイルタイプ名.vim” ファイルを作る

で、そのファイルの中身には普通にinit.vim(.vimrc)みたいにインデントとかの設定を書くわけだけど、:setじゃなくて:setlocalとしておくとそのバッファだけに設定が反映されるので他のファイルタイプに影響がないようにできるらしい。

e.g.
setlocal shiftwidth=2

同様にキーマップについてもbufferローカルな設定にしとくと良いらしい。

ftplugin/javascript.vim
let maplocalleader = ","
map <buffer> <LocalLeader>A o新しい行だよ!<ESC>

上記を設定した後に.jsのファイルを開いて",A(shift+a)“とつづけて入力すると、カーソルの下の行に「新しい行だよ!」と追加されて、ノーマルモードに戻っている。

ネットカフェで勉強することの良い点悪い点

ネットカフェで勉強することの良い点悪い点

最近土日とかにネットカフェで勉強することが増えた。家にいると勉強しないから。

でもネットカフェが勉強する場所として最適というわけではない。家にいるよりは気持ちを切り替えて勉強できるんだけど勉強を阻害する要因も同時にある。それについて感じたことをメモ。

  • 良い点

    • 気持ちを切り替えられる

      家にいると勉強してる最中であっても部屋のゴミが気になったり洗濯物を始めてしまったり本を読み始めてしまったりYouTubeを観始めてしまったりしてなかなか固まった作業の時間が取れない。

      対してネットカフェだと個室なので他に注意を向ける対象がない。MacBookに集中して向き合うことができる。

    • 金がかかっているので頑張れる

      ネットカフェの利用にはカネがかかる。そこで遊んでしまったらカネが無駄になってしまうという意識が働くため、家にいて作業するより頑張ることができる。

    • 飲み物が飲める

      これは意外に良い。所詮ネカフェで飲める飲み物なんてインスタントのコーヒーとか体に悪いジュースとかだから品質が良いというわけではないんだけど、インスタントであってもコーヒーを一杯飲んでから作業を始めると集中できる。普段カフェイン絶ちをしているのでなおさら効く。

      もちろん家にいてもコーヒーくらい沸かせば良いんだけど、ボタン一つで出てくるので意識を妨げられる度合いが少ない。

    • 腹が減ったら飯を注文できる

      これも飲み物と同じで、意識を妨げられずに食事を取れるというのが良い。家で腹が減ると、買いに行くか作るかせねばならずそこで作業が中断させられる。

      しかもネカフェの飯は安価である。栄養価スコアは悪そうだけど。

    • 休憩時の気分転換アイテムがある

      マンガは豊富に揃っているし、雑誌、新聞などある。店によってはテレビとか映画とかある。色々あるんだけどやはりマンガが一番気分転換としては良い。休憩時に読みたいマンガ4、5巻取ってブースに入るといい感じだ。

  • 悪い点

    • 時間を気にしないといけない

      多くのネカフェは3時間とか6時間のコースがある。最近は自動でプラン切り替えてくれる店も多いけど、入店時にプラン決めとかないといけない店も多い。3時間コースで入って3時間を超えてしまうと延長料がバカ高くて割高になる。

      作業始めて数時間経ってから調子が出てくるので、ちょうどいいときにもう出る時間だったりする。

    • ネットが繋がらないときがある

      MacBookにはLANケーブルを刺す穴がない。無線でネットに繋がないといけないわけだが、店によっては(というか大抵の店で)Wifiの環境が良くない。席次第でブチブチ切れたり、FreeSpotしかない店もある。せっかくはるばるやってきたのにネット環境なしでは今日日何も作業できないに等しい。ネットが繋がらなくなったりしたらあとはもうマンガを読むしかなくなり勉強できない。

    • うるさいやつがいたときに殺意が湧く

      たまにエンターキーめちゃくちゃうるさく叩くやつがいると殺意が湧く。イヤホンを必ず持ち込んだほうが良い。

      また、咳払いがうるさいやつとかいびきがうるさいやつとかもいる。店によってはカラオケルームの子供がうるさいとか、ビリヤードコーナーの高校生がうるさいとかもある。本当にイヤホン必携。

    • マンガを読んでしまう

      マンガが置いてあるのはメリットでもありデメリットでもある。休憩しようと思ってマンガを読み始めると、続きが気になって結局最後まで読んでしまい、ほとんど作業が進まなかった、という経験も何回かある。長編物のマンガには気をつけたい。

まとめ

まずは家で勉強やってみて、はかどらないというときにネットカフェとかに行くと良いのかもしれない。休日家で勉強してるとせっかくの休みなのに俺は何をやってるんだろうか、とか考えてしまうけど、ネカフェに行くと適度に出かけた感も得られて精神衛生上も良い。

勉強は孤独な作業なので、その分外に出かけたりとか人と会話したりする機会を意識して作ると良いのだと思う。

ExpressでSocket.io使うとき

そもそもSocket.ioの公式サイトにも書いてあるんだけど何回やっても覚えられないので自分への戒めとして書いておく。

ExpressでSocket.io使うとき

var express = require('express');
var app = express();
var http = require('http').Server(app);

app.get('/', () => {
    // do something.
});

var port = process.env.PORT || 3000;
http.listen(port, () => { // app.listen(port, ...) じゃない!
    console.log('Listening port' + port + '...');
});

参考

プログラマーになって良かったことと悪かったこと

二年くらい前からプログラマーになった。

始めたのは31歳の頃からだ。それまでの職歴はプログラミングと全く関係ないものだった上に、プログラミングの経験は皆無だったので年食ってからプログラミングを始めたわけだが、多分自分にはこの仕事は合っているみたいでプログラミングが辛いとか思ったことは無いというかむしろ楽しい。カネ貰って楽しいことができるのだからプログラマーとはなんていい仕事なんだ、と今は思う(SIの人たちみたいにエクセルの質疑応答表作ったり上流工程から下ってくる謎の仕様と戦ったりするのはもちろん辛い)。

とはいえプログラミングの仕事は良いことばかりというわけでもない。最近プログラマーという仕事の良い点ばかりではなくデメリット的なことも感じ始めてきたので、良かったことと悪かったことをそれぞれ書いておきたいと思う。

プログラマーになって良かったこと

プログラミングが楽しい。つまり仕事が楽しい

これはまず第一にあげられる。仕事は人間が起きてる時間の大半を費やすわけで、それが楽しい時間であるに越したことはない。仕事が楽しいと単純に得してるなと思う。

プログラミングが楽しい。新しい趣味が増えた

31年も生きてきてプログラミングがこんなに楽しいものだとは知らなかったので新しい趣味が増えて得した気分だ。

手に職がついた感じがする

これまでは割りと一般的なというか事務的なこともやれば営業的なことも多少しつつ事務所のインターネット回りの世話を(素人知識で)少しするというような中小企業の若手サラリーマンが典型的に押し付けられそうな仕事をしてきただけだったので、30をすぎると応募できそうな求人とかすげー少なくて将来どうなるんだろうとか手に職があったら良いなとか思っていた。
社会福祉士の資格をとってフリースクールの先生になろうかななどと考えていたこともあったが、思わぬところで手に職がついた感じする。JavaPHPPostgreSQLJavaScript、Node.js、.NET、C#Objective-C、Swift、AndroidVimなどを経験したので多分世の中のプログラマーの求人票にはそこそこ応募できるようにはなったと思う(もちろん年食ってるのでハネられるというのはある)。

人と喋らなくていい

地味に良い。特に自分のようにお世辞とか挨拶的な会話とか営業トーク的なのがうまくない人間にはよい。たまに打ち合わせとかするときも論理的な話をすればいいので無理して会話しないといけない感じがない。

プログラマーになって悪かったこと

疲れる

これは本当に疲れる。ずーっと頭使ってるので会社から帰ってくるとyoutubeをみるくらいしかすることのない人間になってしまう。今みたいに頭しか使わない仕事というのはやったことなかったので頭脳労働と言うか専門的な技術職の大変さが少しわかった。それまでの仕事では仕事帰りに遊んで帰ったりとかは割りと平気だった。今は頭がぼーっとしてきついことがある。

腰と肩が痛くなる

これに関しては姿勢の問題とか使ってるハードウェアの問題とかもあるんだろうけど、当然座ってばっかで一日中パソコンの画面見てるわけだから腰にも肩にも悪いわな。という感じ。忙しいときに一日あたりの残業が2時間を超えてくると結構辛くなる。まあそんなに残業することめったに無いけど。

創作活動できなくなる

なんでかというと、プログラミングそのものが創作活動なので創作欲がそっちで満たされてしまうから。自分はどっちかというと音楽作ったり小説書いたりブログ書いたりして結構創作する人だったんだけどプログラミングが仕事になってからはさっぱりそれらをやらなくなった。なんか、それらをするためのエネルギーというか衝動みたいなものが沸き起こらなくなってしまった。これは結構真剣に悩んでいる。

人と喋らないので精神的におかしくなる(ことがある)

人と喋らないというのは良い点でもあるのだけど、あまりに会話が少ないと情緒に悪影響を及ぼすみたいだ。特に俺のように独身一人暮らしだと。職場に自分と同年齢くらいで同スキルくらいの同僚がいればこの点は悩みに思わないのかもしれない。自分の場合は自分と近い立場の人が会社に一人もいないので、日常的に会話する相手がいない。

まとめ

プログラミングの話ができる友達が欲しい。

AndroidのWebViewでindexedDBを使っててUncaught SecurityErrorが出る時の対処法

AndroidでWebViewでindexedDBを使っていると

I/chromium: [INFO:CONSOLE(23)] “Uncaught SecurityError: Failed to execute ‘open’ on ‘IDBFactory’: access to the Indexed Database API is denied in this context.”, source: about:blank (23)

こういうエラーがでることがある。

何が原因か調べてもわからなかったけど、なんか怪しそうなのは

webView.loadDataWithBaseURL(null, index, "text/html", "UTF8", null);

最初の引数にnullが入ってるこれだろうとあたりをつけた。

これを

webView.loadDataWithBaseURL("http://localhost", index, "text/html", "UTF8", null);

こう書き換えたらうまくいった。

考えてみれば当たり前で、ドメイン名が無いとローカルに保存した時にファイル名がつけられないから保存もできないということなのだろう。

そう考えるとlocalhostというのは多分良くない名前なので、アプリ固有の名前とかを使うと良いのかもしれない。

webView.loadDataWithBaseURL("http://application.example.com", index, "text/html", "UTF8", null);

みたいな感じで。

それでも世界が続くならのライブを観に行った

 去る12月18日、それでも世界が続くなら(以下それせか)、というバンドが佐賀でライブをすると言うので観に行った。ONE PLUS ONEというイベントだ。ジャン・リュック・ゴダールの映画と関係あるのだろうか。だいぶ昔に観たが内容は殆ど忘れてしまった。イベント自体は2時から始まっているようなのだが、それせかの出番は9時くらいで、イベントの終了は10時だから、8時間である。流石に8時間もライブハウスでライブを観るのは肉体的に無理だろうと思ったので途中から入場した。

f:id:newnakashima:20161221212300j:plain
 会場に着いたのは5時くらいだった。もっと遅く行くつもりだったのだが、佐賀ではあまりすることがなくて早めに会場に行くことにした。

 それせか以外に幾つかのバンドをみたが、特に印象に残っているのはミナワというバンドのギターの人。初期のSUGIZOが使っていたEDWARDSの変な形のギターを使っていた。ディレイかけてのグリッサンドなどもSUGIZOっぽい。ライブ後に物販のブースに座っていたボーカルキーボードの女性に聞いてみたら、やはりあのギターの人はSUGIZOが大好きであるらしい。このイベントで唯一自分が慣れ親しんだものに出会ったような気持ちになった。

 それせかの前の so far, so closeというバンド(ライブハウスの経営者でもありイベントの主催者でもあるキハラさんという方がボーカル・ギターをしている)も渋い音楽性の上にハイトーンの爽やかなボーカルが乗る特徴的なバンドで、それせかを観に来たと思しき一人でやってきたっぽい女子たちも思わず笑顔になって手を叩いて聞き惚れているようであった。

 so far, so closeの前に一曲だけということで出てきた花火文という人も印象にのこった。「〽どうして僕たちはすぐ死にたくなってしまうんだろう」というような歌を歌っていたが、腕の切り傷の痕もあらわに登場したからかやけに説得力がある。曲もシンプルでいいものだった。あの傷跡は、冬のライブでもあるし、長袖を着て隠しても良いものである。だがあえて半袖姿で登場して、その傷もろともさらけ出して歌うという意図があったのだろうと推測する。その気持ちのありかたが良いと思う。もしかしたら全然そんなこと意図してないのかもしれないけど。

 各バンド、転換と一緒にサウンドチェックもやっていたようである。多分リハをスタート前にやると、バンドの入りが限りなく早くなってしまうからであろう。

 それせかのライブが始まる頃には腰が死ぬほど痛くなっていた。多分それせかが始まったのが9時位だったろうから、もう4時間立ちっぱなしだった。常にステージを見上げているから、微妙にそり気味の姿勢になっているのも良くなかったのだろう。やはりライブを続けて観るのは2時間くらいが適度だと思う。一バンド終わるごとにサウンドチェックをするから転換に時間がかかるようであり、その度に手持ち無沙汰になってビールを飲んだ。自分でも明らかに体臭が酒臭くなっているのがわかった。多分佐賀GEILSの売上に結構貢献したと思う。

 そしてそれせかのライブだが、照明がほぼ床に置いた電球一個だけというのが独特だったし、バンドのカラーに合っている感じだった。ステージパフォーマンスが暴力的で、殺気を感じる良いバンドだ。一曲終わるとボーカルギターの人がドラムセットにギターを投げつける様なふりをする。初めてライブハウスに来たっぽい雰囲気の女子たちが若干引いた顔をしていたが、やがて慣れたようだ。

 一曲終わるごとにギター陣がチューニングを合わせていた。激しく弾くのですぐ狂うのだろう。最前列にいるのはいずれもおとなしそうな若者たちであり、みんなほとんど直立不動で聞いていた。でもそういうライブだから良いと思う。so far, so close のキハラさんがステージ上で述べていたが、はしゃいで盛り上がるだけがライブの聴き方ではない。俺も普段そういう聴き方はしない。

 しかし、それせかが最後の一曲をやったあと、メンバーが楽器を置いて去ったのだが、幕が閉じず、アンコールがいちおう予定されているのかと思った。しかしこのイベントは(多分)ライブ慣れしていない、しかも若いお客が多い。最後の曲のあとの拍手が、なんとなく収束して消えてしまった。普通のライブならトリに出るメインのバンドは鳴り止まない拍手に応えてアンコールで1,2曲やるものだ。だが拍手が消えてしまってはいくら予定していようとも出ていきようがない。あそこで観客側は拍手を意地でも続けるべきだったのだろうか。それともバンド側は特にアンコール曲みたいなものは本当に予定していなかったのだろうか。BGMがなり始めた頃、「本当にこれで終わりなの?」という顔で最前列にずっと立っていた女子たちの顔がなんとも切なかった。俺はもうおっさんなので腰が痛く、物販を買う気力もなく、さっさとライブハウスを出ていった。

 いいイベントだったので来年もまた行きたいし、このイベントに限らず佐賀や久留米にライブ観に行ったり映画観に行ったりするのも良いなと思った。今度は車で行って帰りに温泉入ったりしたい。