【HTML/CSS】axiosでAPIを叩く【JavaScript】

ソースコード

axiosでGitHub APIを叩くサンプルです。自分(k163377)のリポジトリ情報を取得し、その名前を書き出します。
一瞬詰まった点としては、取得成功時に呼ばれる関数内でエラーを出した場合、処理はそこで中断されてエラー処理関数が呼び出されることがあります。まあaxiosの呼び出しがtry-catch文だと見れば自然ですね。
処理の規模がここまで小さいならラムダ式使ってもよさそうです。

<!DOCTYPE html>
<html>
  <meta charset="UTF-8";>
  <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  <script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>


  <script>
    let baseUrl="https://api.github.com/users/"

    function main(){
      let url = baseUrl + "k163377" + "/repos"
      console.log(url)
      axios
        .get(url)
        .then(getReposSuccess)
        .catch(getReposFailure)
    }

    /* 取得成功時 */
    function getReposSuccess(response) {
      console.log(response.data)
      for(let repo of response.data) {
        console.log(repo.name)
      }
    }

    /* 取得失敗か成功時関数でのエラー時 */
    function getReposFailure(error) {
      /* エラー処理 */
    }

    window.onload = main
  </script>
</html>
実行結果

f:id:wrongwrongwrongwrong163377:20180822202951p:plain

【Android】入力欄にヒントを出す【HTML/CSS】

テキスト入力欄に何を入力して欲しいかを表す灰色の文字列を表示している例は多々有りますが、どう調べればよいか分からず手をつけていませんでした。

Android

Androidの場合はxmlandroid:hint="someText"を書けば出せるようです(今環境が無いので後で試して追記します)。
stackoverflow.com

HTML/CSS

HTML5ではplaceholder属性を指定することでできます。

<html>
  <body>
    <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8";>
    <input type="text" placeholder="some text">
  </body>
</html>
サンプルを動かした様子

【日記】MRI検査を受けた

東京へ向かう新幹線の中で荷物を下ろすときに背骨をやってしまい、診察を受けたところ「圧迫骨折ワンチャン、MRI撮って再度診察ね」と言われたので、MRI検査を受けてきました。

初めてのMRI体験

ぶっちゃけ結構怖かったです。

金歯大丈夫?

自分は奥歯が金歯なので、それがどうにかなるんじゃないかと思いました。検査場で「一応聞くけど外れないよね?」と言われたときには「多分……」としか答えられなかったです。

結論から言うと大丈夫でした。

立体感がねえ

中に完全に入ると、外装と銀色の太線しか見えなかったのですが、これの立体感が無くて気持ち悪かったです。圧迫感を与えないためなのかな?

うるせえ

入る前にヘッドホンをつけてもらい、そこから音楽も流れるのですが、そんなんじゃどうにもならないぐらいうるさかったです。後不定期にでかめの音や質の違う音が入ってその度ビクッとなってました。

少し楽しかったのは、音がn回遠ざかってn-1回近付いてを10回以上繰り返すシーンで、「あー輪切られてるわ俺」と思いながら(本当にそうかな?)音を数えてました。

起こさないで……

慣れたせいか3/4位まで寝たところで起こされました。眠いし体起こすとき背中痛いしで最悪の気分でした。

診察結果

骨には異常ありませんでした。とはいえ今でも結構痛むのでできるだけ安静にしようと思います。

ところでMRI画像の入ったCDが手元に有るんですが、これ自分でも見れるんですかね?見れるなら見てみたいです。

【日記】秋葉原に行った

東京に来たその日にノートPC=サンのOSが吹っ飛んだので、これを機にノートPCの買い替えをしようと秋葉原へ出ました。

店頭で買うことはできませんでしたが、とりあえず欲しい製品は見繕えたので良しとします。

ノートPC

主にMSIのノートを触ってましたが、どれもキーボードが固いなと感じました。もうちょっとふんわりしてる方が好みなんですが……。後、右側にキー増やすのは誤爆率が上がるのでやめて欲しいです。外見やコンパクトさではMSIのノートが好きなので、そういった点が改善して欲しいなと感じます。

GS65

以前上げた比較記事でも取り上げた製品です。やっぱり小さくていいですね。

さわった感じ、やはり小型さと重量の軽さは15インチノートとして最強クラスという感じでした。

気になったのは、展示でベンチ回しっぱなしだったとはいえものすごく熱かったことです。膝の上に乗せてゲーム辛そうですね。

f:id:wrongwrongwrongwrong163377:20180821082930j:plain

GS63

 GS65の廉価版ってことでいいんですかね?とりあえずこのサイズでは特にテンキーが余計だと感じます。

f:id:wrongwrongwrongwrong163377:20180821082949j:plain

 GT75

カニカルキーボード搭載ノートとか狂ってる(褒め言葉)。ただ、個人的にはキーが重めに感じたので、もっと軽いやつが欲しかったです。

f:id:wrongwrongwrongwrong163377:20180821083007j:plain

GF63

(写真どっかやってしまった……。)実物を見て、これとPS42のどちらにしようか迷いました。PS42で色々増設した値段で比較すると、値段は同じでこっちの方がグラボ強いんですよね。

ただ、次は持ち運びを重視して買いたいと思っているので、残念ですがこちらは諦めようと思います。

PS42

ノートPCの買い替え先にする製品です。コンパクトさが最高で、これなら持ち運びが非常に楽になるでしょう。

本当は上位GPU版を待ちたいんですが、まだ発表もされていない状況で、今困ってる以上しょうがないですね……。

f:id:wrongwrongwrongwrong163377:20180821083144j:plain

その他

 BATTLE DRAGON 104-KEY ABS KEYCAP SET

透明キートップというと以前TSUKUMOで販売されていたロープロファイルのものしか知りませんでしたが、こんな製品も有るんですね。

RGBキーボードでどんな感じに見えるのかは少し気になります。LEDの反射率を上げるためかスイッチの面が白い場合があり、そういったキーボードではダサくなりかねないかなーと。後こういった製品はスイッチの軸の色も重要だと思います。銀軸なんかは映えるかと思いますが、茶軸はちょっとダサく感じてしまいます。そういった意味で、実は使いこなすのが難しい製品だよなと改めて思いました。

f:id:wrongwrongwrongwrong163377:20180821082910j:plain

 Strimer 24pin

噂のRGB電源ケーブルです。かなりキレイでした。電源ケーブルがダサい電源は沢山あるので、こういう選択肢が増えるのはとてもよいと感じます。

f:id:wrongwrongwrongwrong163377:20180821083027j:plain

 MasterAir G100M

こちらも噂のクラマスキノコです。残念ながら光ってませんでした。

f:id:wrongwrongwrongwrong163377:20180821083047j:plain

昼食 

暖手で牛焼き肉丼(だったっけ?)を頂きました。

f:id:wrongwrongwrongwrong163377:20180821083106j:plain

 ツクモたん

ちょっと目の辺りが消えてしまってました。。。

f:id:wrongwrongwrongwrong163377:20180821083125j:plain

 

 

 

【レビュー】東プレ REALFORCE RGB / AEAX02 レビュー

先日当てたREALFORCE RGB / AEAX02をレビューしていきます。

開封

f:id:wrongwrongwrongwrong163377:20180818071935j:plain

f:id:wrongwrongwrongwrong163377:20180818072055j:plain

f:id:wrongwrongwrongwrong163377:20180818072143j:plain

f:id:wrongwrongwrongwrong163377:20180818072338j:plain

光らせてみた

初期状態でもショートカットキーで様々な光らせ方を楽しむことができます。個人的には光が動くと集中できなかったので、画像のグラデーションで固定を入れて使っています。ソフトウェア的にライティングを操作することで、より柔軟に楽しむこともできます。

画像ではキートップをteratail4周年キャンペーンの限定品に換装しています。

f:id:wrongwrongwrongwrong163377:20180821072123j:plain

 使ってみた感想

打ち心地は「不思議」の一言でした。いつも使っているスピードシルバー軸のキーボードと比べると重いような軽いような……この製品でそうなのかは確認できませんでしたが、キーごとに加重が調整されているためでしょうか?(荷重調整は無かったです。)。一応キー荷重は45±15gで同一なのですが、感触は全く異なりました。

日常的に利用しているのがメカニカルなこともあり、使用し始めは違和感が有りましたが、利用していくと癖になりそうです。

RGBに光るのも割とテンションが上がりました。(ただ、自分から買おうとは思わないかな……。)

最近はゲームから離れているため試してはいませんが、キーのOn位置の調整(APC)が可能であったり、割り当てを行うことで複数のキーを同時にロックできたりと、機能面でも充実しています。

不満な点

折角RGB LEDを搭載しているのにAURA SYNCといったLED SYNCには対応表記が見られず、そこは残念だと感じます。AURA SYNCはSKDが公開されていますし、REALFORCE向けのSDKを公開すれば作ってくれる人は居そうなんですが……*1

不満な点はそれだけで、内容としてはとても充実しており、流石のREALFORCEだと感じました。

後、個人的にはテンキーレス製品が欲しいです。

2019/2/9追記

自分は手癖でスペースキーの左側を偏って押していますが、この押し方だとスペースキーの右側の固定が外れるようです。
打っている時に外れられると非常に面倒くさいので、この点は評価-1ですね。

 蛇足

記事は以上ですが、気になった点を書きます。REALFORCE RGBにはAPCに加え、スペーサーでストロークが調整できることが書かれていました。

これ、ロープロファイルキーボードにはできないんでしょうか?

個人的にはキー荷重30gでテンキーレスロープロファイルREALFORCEが欲しいです。

*1:作りたいともいう

【日記】teratail4周年キャンペーンに当たった

teratail4周年キャンペーンに当たりました。こんなツイートで当たってしまって大変申し訳無いんですが、恐縮&驚愕です……。

最初はキートップだけ当たればいいなと思ってましたが、REALFORCE RGB(!!)も当選内容だったようで……感情がオーバーフローしそうです。本当にありがとうございます。

teratailさん、レバレジーズさん、本当にありがとうございます。リアフォは高くて手を出せずにいましたが、こんな形で手に入るとは思いませんでした。本当に嬉しいです。

雑な写真ですが開封していきます。

f:id:wrongwrongwrongwrong163377:20180818070433j:plain

開封

開けると手紙が入っていました。

f:id:wrongwrongwrongwrong163377:20180818070531j:plain

f:id:wrongwrongwrongwrong163377:20180818070730j:plain

キーキャップ

f:id:wrongwrongwrongwrong163377:20180818070846j:plain

装着

f:id:wrongwrongwrongwrong163377:20180818071102j:plain

終わりに

リアフォ本体のレビューを書きました。

wrongwrong163377.hatenablog.com

【VB】関数ポインタっぽいことをする【.Net】

cやc++の関数ポインタは、相手に処理を渡したいというときに非常に便利なので、別言語でもそれっぽいことがしたいです。
以前の記事ではJavaでFunctionを使ってこれを実現しました。
今回は.NetのFuncを使い、VBで同じようなことを実現します。

参考記事

@Ryota Murohoshi様による、より詳細な(Funcを含めた)Delegateに関する解説記事です。
qiita.com

やり方

受け取って使う

以下は簡単なクイックソートのコードです。Comp As Func(Of Tuple(Of T, T), Boolean)の部分が関数を受け取る部分です。
c++のsort関数では比較処理をラムダで渡したりしますが、あれと同じです。

Function QSort(Of T)(ByVal Array As T(), ByRef Comp As Func(Of Tuple(Of T, T), Boolean)) As T()
    If (Array.Length < 3) Then
        If (Array.Length = 2 AndAlso Not Comp(New Tuple(Of T, T)(Array(0), Array(1)))) Then SWAP(Array(0), Array(1))
        Return Array
    End If

    Dim big As New List(Of T)
    Dim small As New List(Of T)

    For i = 1 To Array.Length - 1
        If Comp(New Tuple(Of T, T)(Array(0), Array(i))) Then
            big.Add(Array(i))
        Else
            small.Add(Array(i))
        End If
    Next

    Dim result As New List(Of T)(QSort(small.ToArray, Comp)) From {
        Array(0)
    }
    result.AddRange(QSort(big.ToArray, Comp))
    Return result.ToArray
End Function
渡す

関数を渡す方法としては、ラムダを渡すか、関数を定義してAdressOfで渡すかの2通りあります。オマケとして、関数を用意しておけば反転はラムダで簡単に書けますね。

Sub Main()
    Dim array = {"dd", "aaa", "eee", "cccc", "b"}

    '長さソート
    Console.WriteLine("Length")
    For Each str As String In QSort(array,
                                    Function(ByVal t As Tuple(Of String, String)) As Boolean
                                        Return (t.Item1.Length < t.Item2.Length)
                                    End Function)
        Console.WriteLine(str)
    Next

    '1文字目ソート
    Console.WriteLine("First Char")
    For Each str As String In QSort(array,
                                    AddressOf CompFirst_LT)
        Console.WriteLine(str)
    Next

    '1文字目逆順
    Console.WriteLine("First Char(reverse)")
    For Each str As String In QSort(array,
                                    Function(ByVal t As Tuple(Of String, String)) As Boolean
                                        Return Not CompFirst_LT(t)
                                    End Function)
        Console.WriteLine(str)
    Next

    Console.ReadKey()
End Sub

雑感

それでも関数ポインタのが便利だと思います……。

オマケ

コード全文
Module Module1
    Sub SWAP(Of T)(ByRef p1 As T, ByRef p2 As T)
        Dim temp = p1
        p1 = p2
        p2 = temp
    End Sub

    Function QSort(Of T)(ByVal Array As T(), ByRef Comp As Func(Of Tuple(Of T, T), Boolean)) As T()
        If (Array.Length < 3) Then
            If (Array.Length = 2 AndAlso Not Comp(New Tuple(Of T, T)(Array(0), Array(1)))) Then SWAP(Array(0), Array(1))
            Return Array
        End If

        Dim big As New List(Of T)
        Dim small As New List(Of T)

        For i = 1 To Array.Length - 1
            If Comp(New Tuple(Of T, T)(Array(0), Array(i))) Then
                big.Add(Array(i))
            Else
                small.Add(Array(i))
            End If
        Next

        Dim result As New List(Of T)(QSort(small.ToArray, Comp)) From {
            Array(0)
        }
        result.AddRange(QSort(big.ToArray, Comp))
        Return result.ToArray
    End Function

    Function CompFirst_LT(ByVal t As Tuple(Of String, String)) As Boolean
        Return t.Item1(0) < t.Item2(0)
    End Function

    Sub Main()
        Dim array = {"dd", "aaa", "eee", "cccc", "b"}

        '長さソート
        Console.WriteLine("Length")
        For Each str As String In QSort(array,
                                        Function(ByVal t As Tuple(Of String, String)) As Boolean
                                            Return (t.Item1.Length < t.Item2.Length)
                                        End Function)
            Console.WriteLine(str)
        Next

        '1文字目ソート
        Console.WriteLine("First Char")
        For Each str As String In QSort(array,
                                        AddressOf CompFirst_LT)
            Console.WriteLine(str)
        Next

        '1文字目逆順
        Console.WriteLine("First Char(reverse)")
        For Each str As String In QSort(array,
                                        Function(ByVal t As Tuple(Of String, String)) As Boolean
                                            Return Not CompFirst_LT(t)
                                        End Function)
            Console.WriteLine(str)
        Next

        Console.ReadKey()
    End Sub
End Module
実行結果
Length
b
dd
eee
aaa
cccc
First Char
aaa
b
cccc
dd
eee
First Char(reverse)
eee
dd
cccc
b
aaa