rubyでsparqlエンドポイントを叩く。

( ´_ゝ`)ノシ

yoshitiaです。

よく参加してるrails勉強会が

人気ありすぎて抽選制になったので

外れた時の勉強会も探そうかと考えている今日このごろです。

startup-technology.connpass.com

 

本題。

こういうの見つけた。

sparql.crssnky.xyz

im@sparql is 何

sparqlっていうクエリを指定のURLに投げたら

jsonim@sのアイドル情報の検索結果を返してくれるすごいやつ。

サイトのサンプルクエリ。

アイドルの身長一覧を昇順で出力してる。

 

何が良いの?

  • アイマスのアイドル情報扱うサイト作る時に上手く使えばDB作らなくてもイケる?
  • アイドルの楽曲リスト情報等が欲しい時にgoogle検索でいくつもサイト開いたり本漁ったりしなくてもsparqlクエリ打てば終わる
    (im@sparqlに使われてる技術の活用例が薬剤がどういう症状に対して使われたかって記録、特に実はこういう症状に対しても使ってる、みたいな探しにくい情報をいくつものDBサイト閲覧の手間かけずにカタカタカタッターン!で済ませたい、だったりする) 
  • im@sparqlでは随時データ追加・修正してくれる人募集中

 

実際にrubyで叩く

使用バージョン等

OS: mac OS X 10.13.6

ruby -v : 2.4.1p111

 

httpのgetを使う

なければ追加しておくgem

gem install activesupport

 コード

あとがき

sparqlクエリ自体が正しく動くかどうかはim@sparqlのサイトの

Input Queryで確認できます。

 

TODO

気が向いたらPOSTメソッドのコードも書く。

 

 

 

 

 

 

 

Javaのメソッドメモ: compareTo (java.lang.String)

2018.05.30 更新 激しくcompareTo()の使い方間違えてた。

( ´_ゝ`)ノシ

Javaの現場で知った便利そうなメソッドをメモ。

多分JavaSE1.6。

 

www.sejuku.net

このリンク先にあるcompareToメソッド。

文字列比較に使う。

比較結果を大、小、同値別に数値で返すので

str1 == str2, str1 < str2 など書かずに

 

result = str1.compareTo(str2); 

while(true) {

    switch (result) {

    case -1:

        // 処理1

        break;

    case  0:

        // 処理2

        break;

    case  1:

        // 処理3  

        break;

    }

}

とswitch文が使いやすくなり便利。

そう、思ってました。

 

どうもstr1 < str2 と str1 > str2の返り値を激しく勘違いしてて

str1 < str2 の場合× -1 ◎「負の値(変動)」

str1 > str2 の場合×  1 ◎「正の値(変動)」

勘違いしたままswitch文使ったのでめちゃくちゃ無限ループした。

次のコードなら狙ったように動く

result = str1.compareTo(str2); 

while(true) {

 

    if ( result < 0 ) {

        // 処理1

        break;

    }

    if ( result == 0 ) {

        // 処理2

        break;

    }

 

    if ( result < 0 ) {

        // 処理3

        break;

    }

 

}

 

Railsもくもく会に参加してきたメモ

( ´_ゝ`)ノシ

@yoshitiaです。

スタートアップテクノロジーさん主催のRails勉強会に参加したりしています。

今回はキャンセル待ちが出るくらいの盛況だったようです。

startup-technology.connpass.com

twitterでは #rubymokmok タグでツイート検索できます。

 

ここの勉強会は実際に仕事でRailsを使っているエンジニアに

技術的な質問ができたりします。

html・rubyは初めて、プログラミング環境構築もよくわからない方でも

望月さんが居るので必要なのは自前のPCと参加する度胸くらいです。

twitter.com

それはそれですごいのですが

もくもく会の後にある懇親会も楽しみの一つです。

参加者は現役エンジニア・学生・他業種からエンジニアへの転身を考えている方など

色々な方がいらっしゃいます。

スタートアップテクノロジーの社長さんが懇親会に参加することもあるので

起業やスタートアップへの就職考えてる人であれば

面白い話が色々聞けると思います。

この記事は今回の参加者の方からちょっとメモを残しておきたい話があったので書いてます。

 

開発でAlipay(中国のアリババが運営しているモバイル決済サービス)との

連携機能を実装した方の話です。

 

懇親会で聞けた話

yoshitiaはモバイル決済サービスの事はよく知らないんですが

Alipayは支払い時に店舗等で決済を行う機械に読み込ませてから完了するまでが爆速らしいです(読み込み時の電子音が鳴って数秒もたたずに完了する)。

本屋等にあるような外付けのカードリーダー(暗証番号入力できるやつ)で

その速度だそうで。

仕組みを軽く聞かせてもらいましたがびっくりしました。

 

決済の仕組み上、

お客から決済情報を取得→決済システムに接続→決済処理

→結果を決済情報取得元に返す、の流れが必要で

決済システムに接続→決済処理のあたりが時間がかかる部分です。

 

Alipayの場合は時間がかかる処理の部分を非同期処理にして

お客から決済情報取得→情報を基にした結果を決済情報取得元に返す、を

決済システムに接続しない段階で先に完了、

決済システムに接続→決済処理の2つを後でやる事で実現してるようです。

 

個人で気軽に光回線の契約ができる程の通信インフラがあるのは日本くらいで

他の国はADSLレベルが普通らしいです。

そういった環境で決済を行うお客が不満に感じない速度を稼ぐ場合、

こういう実装になるんじゃないかなぁと。

ただ、この仕組みだとリアルタイムで決済が完了しないので万が一取得した決済情報に問題があったりした場合、実際の決済処理がエラーになって決済が失敗するリスクがあります。

なのでアリババみたいにリスクを取っても利益が取れるくらい大きい会社じゃないと

無茶だよなぁ、という話でした。

 

あとがき

スタートアップテクノロジーではRUNTEQという

エンジニアリングスクール事業を運営してるようです。

説明会はあるようですが一度もくもく会に参加して聞いてみるのもアリだと思います。

runteq.jp

VimConf準備会がいつの間にか法人化してた。

( ´_ゝ`)ノシ

yoshitiaです。

2018年初の記事になります。

 

もう4月なことに驚愕している(((((((( ;゚Д゚))))))))ガクガクブルブルガタガタブルブル

 

本題。VimConf2017で準備会が一般社団法人になってて

ファッ!?っとなったので準備会のvim-jpの人にその辺聞いてみた。

 

Q. Vimの事じゃなくて気にするのそっち?

A. 雑魚Vimmerなので仕方ない。

 

Q. vim-jpの人にどうやって話聞いたの?

A. slackに入って聞いた。

vim-jp や emacs-jp にログインしてみる話 - yoshitia’s diary

 

2016からの変更点

準備会の一般社団法人


なんで法人化を?

ぶっちゃけるとBram Moolenaar 氏(Vimの作者)を招待するのが目標。

そのためには本格的な国際カンファレンスにしたい。

課題

 

2016年までの規模ではBram氏招待実現が難しい
規模を拡大するにあたり法人化しないと難しい問題が出てきた

 

    会場の確保

        本格的なカンファレンス向け設備がある会場を

        個人の名前だけで確保するのは難しい

    参加費収入変動リスク軽減


        2016年までは参加費現地払
        当日参加キャンセルの場合徴収不可、収入変動リスクがあった。

        対策としてはチケット販売形式への変更する事だが

        チケットの代金を取り扱う口座が個人名義だと

        トラブルの元になる。


    企業スポンサー募集


        参加費を抑えつつ運営費用を確保するには避けては通れない
        諭吉さんがサッカーチーム組める以上の予算を出してもらうには

        有志が集まったコミュニティでなく

        法的な手続きで設立された組織で協賛(スポンサー)のお願いをしないと厳しい

 

    運営のコアスタッフの引継ぎが生じた場合への対応

 

        VimConf 2016 を超える規模になると

        継続でも中止でも関連して動くものが大きくなるので

        運営に必要なあれこれを個人名義にしておくと引継ぎが生じた場合大変

 

一般社団法人化するとどうなるの?

    会場の確保

        VimConf準備会の名義でOK

 

    参加費収入変動リスク軽減

       参加費をpeatixを利用したチケット販売形式に変更
       VimConf準備会名義の口座でやりとり

 

    企業スポンサー募集

       VimConf準備会の名前で協賛提案書作ってGo

       今回は準備会のメンバーがとても頑張ってくれました(@kaoriya さん談)

       ※今までの開催実績がないと門前払いだったかも

       ※スポンサー企業にVimmerが在籍してるからその伝手からたどったらしい

 

    運営のコアスタッフの引継ぎが生じた場合への対応

       VimConf準備会の役職者変更と印鑑とか通帳とかの引継ぎでOK
       他にもあると思うけど個人名義の引継ぎよりは楽なんじゃないかと

 

   あとがき?

       VimConf 2017は 10名前後のコアスタッフで運営という荒行だったようです。
       多分スタッフは随時募集中。
       大学生ならVimの経験なくてもイベント運営の経験を積めるチャンス?
       社会人のエンジニアでも普通に仕事してたら

       なかなか出会えない技術者と面識を持てる機会がワンチャンある。

 

windowsでroswellする。

yoshitiaです。

なんかもう年の瀬ですね。

 

小ネタにcommon lispのroswellをwindowsでセットアップしたときの話を。

 

roswellって何よ

github.com

common lispっていくつも処理系(スクリプト実行とかコンパイルしてくれるやつ)

がありまして、時々顔を出す処理系ごとの差分がつらいんだとか。

そのあたりの差分を気にせずに使うためのもの。

quicklisp等の便利なツールの設定もやってくれるっぽい

 

windowsでのインストール

windows7とwindows10で確認した。

roswellのページにwindows用のバイナリのリンクがあるので

32bitか64bitか選んでダウンロード、パスを通す

次にコマンドプロンプトからコマンドを実行する

ros setup

 これで最低限の設定ができる。

デフォルトの処理系はsbclと呼ばれるものがセットされる

 

エラーが出た場合

大抵はros setupで終わるはずですがエラーが出てしまう事も。

common lispはエラー吐くときはちょっとしたものでも

エライ量出るので一旦テキストファイルに吐き出して対処する

ros setup > err.txt 2>&1

よくわからない場合は

標準出力 標準エラー出力 リダイレクトでググれば幸せになれます。

 

日本語対応(sbcl前提)

homeに.sbclrc置いてもrosで起動する時はロードしてくれないっぽいので

ros -L sbcl-bin +R -l ~/.sbclrc

 と書いてから後ろにrunや実行ファイル名やらを書く。

毎回これ書くのはやってられないのでbatファイルを作る。

@echo off
@rem ros.bat - roswell起動用batファイル

call C:\roswell\ros.exe -L sbcl-bin +R -l ~/.sbclrc %*

これをbatファイルに実行すると.sbclrcの設定を読み込んで実行してくれる。

.sbclrcの中身はこれを参照。

it-memorandum.seesaa.net

問題としては使用する処理系の種類がbatファイルに書いたもの固定になってしまうのでroswellの利点、気軽に処理系切り替えができなくなる。

今のところ他にやり方がわからないのでこれでやってみる。

いっそroswell使うときは日本語扱わないほうが面倒減るかも。

使い方

common lispではスクリプトファイルを作るとき、

処理系ごとに書き方やコマンドオプションが異なることがありまして。

渡したい相手の処理系に合わせて書く、見たいな事が起きたり起きなかったり。

roswellを使うと

ros init hello

これでhello.rosファイルができる。

できたファイルに実行したい処理を追加で書き込めばスクリプトファイルが作れる。

処理系の差分はroswellが吸収してくれるので気にしなくていい。

Unix系OSならrosファイル単体で実行できるように書かれているのですが

windowsではその部分が動かないので

ros hello.ros

のようにしてスクリプトを実行します。

 

実行ファイル作成

common lispの処理系はスクリプトコンパイルしてexeファイルを生成できます。

実行ファイルの作成方法は処理系ごとに(ry

roswellの場合は

row build hello.ros

 でexeファイルを作成できます。

 

REPL

 lisp系言語だと当たり前の様についてくるアイツです。

roswellだと

ros run

 で現在セットしている処理系のREPLが起動します。

 

処理系の追加

ros install

これで追加可能な処理系一覧を確認可能です。

ros install clisp

のように指定してインストールします。

ros use clisp

使用する処理系を変更するときはros useです。

 

参考

takoeight0821.hatenablog.jp

Comments on VimConf2017 speaker from participant

VimConf 2017 - An international Vim Conference

note: I'm sorry if it comes to strange expression because it is machine translation.
to @haya14busa

It's amazing that incsearch will be a built-in feature of Vim!

to @fatih

Because vim-go is too amazing, I also agree that Vim will become the share top of the golang development editor.

 
to @mattn_jp, @kaoriya, @k_takata

 It was interesting content but why are there so many Windows countermeasures?

 

to @cocopon

I'm using it right away but it's better to see than default!

f:id:yoshitia:20171105175100j:plain

 

 to @t9md

vim-mode-plus is really amazing!
I would like to convert it to atom if there is no problem with large files.

 

to @senopen

It may be desirable to protect POSIX, but I'd like to hold back POSIXism. Is not it hard to work hard without using new and useful things?

 

to @ShogoMatsu

Shogoware is beautiful!

 

to @dice_zu

I think it's wonderful, but
Are not you doing too much Vim build everyday?

 

to @p_ck_

I really agree that regular expressions are too early for humanity. That is difficult.

 

to @lambdalisue

I also saw last year's announcement!
Why are you so much to give presentations even though you are not native English speakers?

 

to All

Happy Vim Life!

 

Vimかサクラエディタで固定長フォーマットを相手にする

( ´_ゝ`)ノシ

yoshitiaです。

VimConf 2017 は例年と違うようなのでちょっと期待してます。

 

固定長フォーマットって? 

以下のリンク参照で。

http://www.ipc.tohoku-gakuin.ac.jp/simlab/comlec/comop/prog05b.html

 

面倒な点

・行の左端から何番目かが重要

・改行コード無しの1行の場合、pagedownキー・pageupキーは無力。

 

Vimの場合

大体基本機能でok。

・フォーマット頭部分にカーソル移動

    固定長フォーマットは大体頭部分にどのフォーマットか判別するための値があるので

   それを指定して検索。

    nまたはNで前後の検索結果にカーソル移動。

 

・指定の桁数に移動

例: フォーマット開始桁から101桁目の場合。

Vimのノーマルモードのコマンドは使うコマンドの前に数字を入力すると

数字の回数だけ操作を繰り返す。

100hと入力するとカーソルが100桁分移動する。

サクラエディタの場合

・フォーマット頭部分にカーソル移動

    検索でやる。

    一度検索したらF3キーまたはShift+F3キーで

    前後の検索結果に移動できるので便利

 

・指定の桁数に移動

例: フォーマット開始桁から101桁目の場合。

基本のショートカットにはなさげなので

 マクロを用意する。※サクラエディタにはマクロ機能があります。

今回はカーソル移動をまとまった回数移動できるマクロを使います。

固定長フォーマットのファイルでカーソル移動するには

左右にカーソルキー100回分を1回のキー操作で移動できたら便利。(1000回分もありかも)

S_Right(0); // カーソル右移動
S_Left(0); // カーソル左移動

拡張子macのテキストファイルを右移動用、左移動用を作って

一回のキーで移動させたい回数コピペする。

サクラエディタのマクロでループさせる方法見つけられなかったので

詳しい人記事とか書いてくれないかなぁ。

nagoya-neko.com

あとはショートカットキーにマクロを割り当てて

ショートカット一回で100文字分移動とか1000文字分移動できるようにする。

その他、サクラエディタのマクロは以下のページ内にあるリンク先にマクロ構文があります。

http://sakura-editor.sourceforge.net/htmlhelp/HLP000107.html

マクロは今回の様に何回も同じキーボードショートカットを繰り返すときに力を発揮します。

例えば特定の単語の頭に余分に1文字ついていて、コピー&ペーストをしてたから

何箇所も修正する必要がある場合、

マクロの記録でF3, Deleteの操作を記録、

後は1回だけ特定の単語を検索してからマクロ実行を繰り返せばokです。

如何に繰り返しの操作になる所を見つけるかがポイントです。

あとがき

私がVimのtips記事を書くときに

サクラエディタでの操作方法を併記することがあるのは

「特定のエディタの機能を覚える」ではなく、

テキストエディタの機能を覚える」ことを意識しているからです。

新しいエディタを使う必要がある時役に立ちます。