空文字をカンマでパースすると0件か1件か?
こちらが気になったので色々と
投票とってみるか。
— いわた (@wonderful_panda) 2021年6月21日
「与えられた文字列をカンマでsplitした結果を配列で返す」というメソッドがあるとして、空文字列を指定した結果は
話の前後の事から多分この日に話題に上がったCSVの件からかと思いますが、なんでCSVなんて話題に上がるのかなとか思ってたのですが、そういえば数日前にCSVをパースするツールを発表した方がいたなぁって。
あぁ、、CSVなんてあんなもん業務でパースするにしても項目はダブルクオートする、値にカンマは入らない、改行なんてもってのほか、、、とか色々と制限を付けた上で仕事を進めるようなもんで(それでも想定外の値が入ってきて歯ぎしりするわけです。エクセルだと?今エクセルで出力したって言った?みたいな・・・)ましてや汎用的なCSVツールなんて作る気力は無いなぁ、、、とか思っていたわけです。ライブラリがあるならそちらを使うよねとか。
でもこういう誰もやんないような所で提供するのが大事なのだろうなぁとか色々思いながら発表した方にはただ凄いなぁという感想だったのです。
その中で興味があったのが上記のアンケート。
例えばCSVを読み込んで返すようなメソッドとかそういうのがここでは想定されているのかなとか。その中で読み込んだ1行をカンマでパースした場合に空文字だった場合どうなるか?という問題かと。
CSVの1行が空文字だったとしてその行をどういう仕様とするかはその業務により異なるので、仕様によりとしか言えなくなるのですが、自分が汎用的なものを作るとしたらこの場合は0件の配列を返すが自然ではないかと。
ツイ元の方としては結果を受けて以外だったというのが感想みたいで、わずかに0件の配列を返す派が優勢だったみたいですね。色々とリプとかを見てると1件以外ありえないだろうとか強めの意見が散見されて、、い、、いやぁ、、0件は変か?とか思いながら読んでましたが。
正直CSVの1行でもいいけど空文字送って1件帰ってきたら使いづらくね?って思ってたのですがその疑問に自分にリプをくださったのがこの方で。
あり得ないとまでは言わないですけど 1 派です。どう扱うのかの答えになっているのかはわからないですけど、ぼくは
— bouzuya (@bouzuya) 2021年6月22日
"abc".split(",") == ["abc"] になってほしくて、区切り文字がマッチしない場合に元の文字列が残るのであれば "".split(",") == [""] が一貫しているように思いました。
なるほどそれもそうだよなぁと。1件返ってきてもなんらおかしくない。
議論の中であぁなるほどって思わされたのがこちら。
「与えられた文字列をカンマでsplitした結果を配列で返す」という仕様だけに従うなら0になることはないよね。空文字列とかの条件でもう一つ追加仕様が入ってることになる。 https://t.co/3ZXHCMeQGn
— KOIZUKA, Akihiko (@koizuka) 2021年6月22日
自分は初めの設問から、与えられたCSVのレコードを返す際に使う側が利用しやすい形態は何か?(俺仕様と言ってもいい)を追加した上で設問に答えていたのだなと。
で、ここで自分はこのツイートを読んで重大な誤読?をしていたことに気づくのです。
「長さ0の文字列の配列」と読み間違えた人が仮に400人いたとしても得票率4:6なんですよね。それでもけっこう意外。
— いわた (@wonderful_panda) 2021年6月22日
たしかに [] [""] って書いたほうがよかったかなとは思いましたが。 https://t.co/QzUiZZLTz8
空文字とは、、、色々ツイを見てるとこういうケースを言ってる方がいました。
- ”” 長さ0の文字列
- "," 内容が長さ0の文字列が入った文字列
- " " スペース
- [""] 長さ0の文字列の配列
- いろいろ
自分は空文字って1の長さ0の文字列なのかなと思ってました。なのでCSVレコードとしては何も返らない方が後続処理としては自然かなと。でもJavaで "".split(",") を試したら1件なんですよね。こういう事からも自分は設問に対し、言語から離れて仕様を追加して解答している事が分かるのです。
ただ、2のケースは2件返ってほしいよねぇとか3のケースは当然1件とか自分の頭の仕様がなんだか破綻してるのに気づくのであった。(おわり)
ちなみにJava(11.0.1 2018-10-16 LTS)で色々ためしたら以下の結果でした。split()の第二引数により変わりますがとりあえず設問では指定が無かったので指定なしで。
ケース | 結果 | 備考 |
---|---|---|
”” | 1件 | 長さ0の文字列 |
” ” | 1件 | 長さ0の文字列 |
"," | 0件 | 長さ0を含む文字列 |
" , " | 2件 | スペースのカンマ区切り |
" ," | 1件 | 第二レコードが長さ0の文字列 |
", " | 2件 | 第一レコードが長さ0の文字列 |
コード
public class Test {
public static void main(String[] args) {
System.out.println("".split(","));
}
}
亡命ロシア料理、帰れ鶏肉へ、作ってみました
米国に亡命した二人のロシア人、ピョートル・ワイリ、アレクサンドル・ゲニスの名著「亡命ロシア料理」より。「帰れ、鶏肉へ!」。鶏肉の大きなかたまりとタマネギを用意する(鶏肉400gにつきタマネギ中2個)。鍋の底にバターに小さなかけら、月桂樹の葉、粒胡椒、鶏肉、タマネギを入れて→ pic.twitter.com/tGa8EEpl92
— おぐにあやこ (@ayaoguni) 2021年6月12日
ツイッターで流れてきたこの料理、簡単だなと思いやってみました。カミさんのお義母さんもよく、トマトの水分だけで作ったカレーを作ってくれたりしてそれが絶品なんですよね、なるほど、玉ねぎの水分でスープを作るのだ、、、
オリジナルのレシピでは、
- 鍋の底にバターに小さなかけら
- 月桂樹の葉
- 粒胡椒
- 鶏肉、
- 玉ねぎ(鶏肉400gにつきタマネギ中2個)
とこれを塩ふって弱火でコトコトと1時間ほど煮込むそうですね。夜の料理には材料が足りないなぁと思い、月桂樹はにんにくに、人参を追加、ぐらいして煮込んでみました。写真の下の方に大きめの玉ねぎ2つが入っています。
正直この時点では、一人用で実験してから家族分作ったらいいんじゃ、、、って怖かったですが煮込んで見るとこんな感じに。
これをよそってご飯にします。
玉ねぎの甘いスープに鶏肉のホロホロに煮込んだのが美味しいです。
実は作る際思ったのですが、、これ、、、カレー粉入れたらカレーに、、、おおっと誰か来ました、、では、、、
千の風になって、吹いてみました
こちらの演奏が気にいって練習してましたが動画として出してみたいと思い吹いてみました。以下の動画ではキーがDで吹いてますが、同じようにDで出してる伴奏が見つからずやっと見つかったのが上記でした。
事由にアドリブでもかましたいのですが自分にはそのような技術はありませんでした・・・orz...時間があったら譜面にでも起こしてもうちょっとカッコよく吹きたいですね。
しかし動画を撮り始めるといつも間違うはずがない所で間違うのに名前を付けたい
GWの一仕事。きりたんのキーホルダー磨き
以前作ったきりたん、レジンの扱いが下手で微妙だったけど手をかけて綺麗にしたいな。ヤスリと磨き pic.twitter.com/lB7zDRTe2G
— あるかなむJP・おっさん (@arcanum_jp) 2021年5月1日
以前レーザーカッターで切って貼ってレジンで固めてみたんだけど、レジンの扱いが微妙で(下手すぎて)表面に気泡ができてしまって満足できずそのままお蔵入りしてた作品です。
久々にお蔵から出してみると何か訴えかけるものがあるのですよ。他にもお蔵入りしてる作品はたくさんあるのですが、この2つがデキが良い割に気泡だけで損をしてるんだよなぁと。
杜コミでレジンを使う方からこうなった作品ってどうすれば?って聞いたところ、必死になって磨きます!って回答をもらってて、あぁ自分ではそこまで手をかけられないなぁと諦めていたものです。
時代は引きこもりGW、今回のGEWは仕事だらけと言うこともあり、空き時間にこいつらもうちょっと手をかけてやるか?となり、 今回の作業となりました。
こんな感じに紙ヤスリで思いっきり削っていきます。周りの白い粉はレジンが削れたものです。もう後戻りできません。ヤスリは#100、#240と細かさをあげていきます。(手元にあったのがこれってだけ)
これは#240のヤスリですが絵柄がぼんやりしてますね。これはこれでなんだか味があります。ぼやんたん
これを近くのDIYセンターで買ってきた#1500、#2000と精度を上げてヤスリをかけていき、最後はアクリル磨き用のドロドロの液体状の研磨剤で磨きます。白いドロっとした臭いのをきりたんの顔にビュルルルっとぶっかけて、、おっと自己規制
で、できたのがこちら。だいたい1時間ぐらい研磨剤かけて布でこすってを繰り返してました。リューターなりバフがけできる機械欲しいですね。
一見みるとつるんとするまで磨けました。ただ白い方をよく見るとわかるのですが、微妙な凹凸(傷)が気になります。
多分ですが、今回ヤスリを#240からいきなり#1500に上げたのが原因かと思います。そこはもっと段階を踏んで#500あたり、#1000あたりを途中に噛ませるべきなのでしょうね。あと右側のきりたん、あまりにも大きな気泡はもう削るの無理で、ちょっと残ってます。
調子に乗って他に持っていたものを研磨してみます。これはずん子さん。スワロフスキーの部分に研磨の時についた亀裂ができてしまいました。こちらはもうおしまい。
ちょっと雑に研磨してしまいましたがスワロフスキー入りのきりたんです。
各種きりたん勢揃い。左から、スワロフスキー入りきりたん。反転した鬼きりたん、鏡アクリル入りきりたん。
これでよろしければ欲しいかたはBOOTHで格安で販売しています。(3つ合わせて600円)
追記:嫁ぎ先が決まりました。ありがとうございます。末長く可愛がってください。
スプラトゥーン物語3
クラゲたちは自我が無いようにモソモソと動いている。あぁ確かに楽しんでいるようなときもある。旗持ってぴょんぴょん飛び跳ねて。でも彼ら自身には自我はない。
そう思われていた。
この前アタリメ爺さんが言った言葉、覚えているかい?
ワシが若い頃働いていた場所が試合を管理する場所でな、試合には8人出る。8人は試合開始前に会場近くの部屋に移動させられるんじゃ。
この時移動するのは試合をするイカたちかな?そう思っていた。違うんだ、違う。僕たちは大きな勘違いをしていた。
試合会場にはたくさんのクラゲたちが外から見ていたり、スメーシーでは遊んでいたりもする。じつはここは、、、彼らの世界なのだ。
試合をするのも実はクラゲたち。クラゲたちがVR機器を付けて体の自由が利かなくなったイカたちを操って試合をする。
ま、まさか・・・この世界は実はクラゲたちの世界で僕らは単に操られていると?
確かに彼らは1つ1つの個体では意思はないように見える。彼らは多く集まり、意思のようなものを持つ。今は2つ群生になっているようだ。
その2つの群生通しが争っていたところ、自分達で争うバカらしさに気づき、イカでゲームをして決着をするのを思いついたようだ。スプラトゥーンである。
そこへ何故かピーンときた。例の以心伝心というか、、テレパシーみたいなものだ。
ワシらイカは以心伝心と言うか、、、テレパシーみたいなもんがあるじゃろ。ほら、、フレンドが遊び始めるとなぜかピーンっとくるじゃろ?頭の左上?あたりにフレンドが来た!って感じるのじゃ。あの仕組みを使っているらしい。
と同時に四方から武装したイカたちに囲まれた。ガチホコを持っている。と思った瞬間その武器は光り、自分たちのあたり一面に雨を降らせるようにインクが飛び散る。
一瞬の出来事で何も感じることはないまま・・・
遠くからブヨブヨした液体のような男たちがこちらをうかがっていた。
フランス在住の原型師、夏坂眞一郎氏のクラファンリターン
同級生の同氏、初めてのクラウドファンディングするってんで自分も支援していたのですね。蛮十郎 〜龍神の眼〜です。
夏坂氏は日本では自分が知る限りジョジョのフィギュアなんかが有名でしょうか?そのほか色々とあるのでしょうけども。同級生の活躍を聞くというのは良いものですね。
文化庁メディア芸術祭で受賞した作品でバンドスキュルテ プラネット・サムライの蛮十郎が主人公の紙の漫画です。当然ながらセリフはフランス語、、、まぁ、わからないけど、、、ま、、いいか、、同級生の支援になればね、、、と思いDonate!
夏坂氏がユーチューブで支援の仕方を書いていたこともあり、フランス語のページでもなんとか支援するまでこぎつけました。
その後、すっかり忘れていたのですが、どうやらコロナの件があり印刷所が動かないなど色々どうしようもない理由で発送が遅れていたようです。まぁしょうがないよね。つか忘れていたし☺️☺️☺️。
フランス語で分からんだろうなぁと思っていましたが、実際には日本語訳の冊子も付いてきたのが嬉しいですね。
より一層のご活躍を願って。
夏坂氏のサイトはこちら。