正月、バレンタイン、パジャマパーティ、母上京と初公演の話。たしかアニメはこの辺までだっけか。アニメと違って母はセグウェイで爆走しない常識人だった。
すっかり1頁4コマ漫画1本の形式が定着したので序盤の1頁4コマ漫画2本から半分の速度である。
ちなみに扉絵はネコミミ全裸でさすがきらら勢とは格が違った。
2017年09月
量子力学の哲学 非実在性・非局所性・粒子と波の二重性 (講談社現代新書)
成程、わからん。様々な学説を平易な文章で次々紹介しているんだが、いかんせん、分からん。後でまた読もう。
でも、原子どころか分子でも干渉実験が成功して次はウィルスでやるぞと意気込んでいたり、量子ゼノン効果なる無駄に名前が格好良い現象が実際に実験で確かめられてたり、マイナス1の確率なるハーディのパラドクスも実験成功してたり、世の中には不思議な事があるものだ…。
スクストとバトガ、どうして差がついたのか…。慢心、環境の違い。
コミカルな変身ヒロインアニメが大好きなのでバトルガールハイスクールって駄アニメを毎週欠かさず見ていたんだが終わってしまった…。まったく深夜アニメは始まったと思ったらすぐ終わるな。
しかしアレだな、微妙だったな。美少女動物園モノの常とは言え登場人物が多過ぎて誰が何という名でどんな奴だかいまいち分からんというのが。まぁ全12話なのに美少女キャラが17名というのが元々数学的に無理があるんだけど。
ところで、ほぼ同じような内容、スペクトルマンとミラーマンほどに似ている、これまた駄アニメたるスクールガールストライカーズという作品がありこれも毎週欠かさず見ていたのだが何と美少女キャラの総勢25名程。
しかし分かり易い。
というのもチーム分けされており焦点はチームアルタイル・トルテのみ、個体識別すべきは5名だけ、赤は真面目、青はお調子者、白は不思議ちゃん、と何とか覚えられ、他はチーム単位で一塊に、気の良い姉貴分、威張りん坊のエース、その他賑やかし、と整理整頓、ユニフォームも身分もはっきり違っていて「やや!これはココナッツ・ベガのパイセン方、ちっす!」みたいなやりとりもあり寧ろ「美少女キャラはみんなほんわか仲良し」を越えた人間関係の起伏までが感じられ、やはり階層構造での情報整理は重要なのであったなぁ。まぁ一番重要な点はスクストはスカートの中が見える事だけどな。レオタードとは言え、見える見えないでは大違い。バトガは飛んでも撥ねても見えない!むきー。
ちなみにバトガって、「遠い未来、イロウス怪獣軍団に襲われ人類は滅亡。宇宙へ逃げ延びた僅かな人々が今、再び地球を取り戻す為、地上に降り立った。イロウスを倒せるのは神樹の力を身に着けたわずか15人の少女だけだ!」という機甲創世記モスピーダもかくやという酷く重苦しい状況の話なんだけど、作品に切迫した感は皆無だったり。つかまずそもそも未来世界に見えん。ところでどっちもタイトルだけ聞くと武闘派JKが総番長の座を巡って殴り合うスケバンものに聞こえるのな。
九月後半、蚊の猛威
ActiveMQにSSHトンネルで接続できず
teratermを使ってlocalhostの9801と鯖の61616を転送設定してアクセスすると何故かエラー。
Exception in thread "main" javax.jms.JMSException: Cannot send, channel has already failed: tcp://127.0.0.1:9801 at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:72) at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1413) at org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1478) at org.apache.activemq.ActiveMQConnection.createSession(ActiveMQConnection.java:329) at org.apache.activemq.ActiveMQConnection.createQueueSession(ActiveMQConnection.java:1275) at nekora.jms.JMSQueueSendTestText.init(JMSQueueSendTestText.java:58) at nekora.jms.JMSQueueSendTestText.main(JMSQueueSendTestText.java:97) Caused by: org.apache.activemq.transport.InactivityIOException: Cannot send, channel has already failed: tcp://127.0.0.1:9801 at org.apache.activemq.transport.AbstractInactivityMonitor.doOnewaySend(AbstractInactivityMonitor.java:328) at org.apache.activemq.transport.AbstractInactivityMonitor.oneway(AbstractInactivityMonitor.java:317) at org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:94) at org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:116) at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68) at org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:81) at org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:86) at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1388) ... 5 more
同一ホスト上にクライアントを置いての通信は当然できる https://twitter.com/nekora2199/status/908727144003411968
ためしに、鯖側でApache起動してlocalhostの8801と鯖の80を転送設定してブラウザでアクセスすると何の問題も無くアクセスできるんだが…。
インターネット経由ということで何か接続タイムアウト的なパラメータを弄る必要があるのだろうか?それにしては一瞬でエラーになった。
tcp 0 0 localhost:61616 *:* LISTEN tcp 0 0 localhost:59538 localhost:61616 ESTABLISHED tcp 0 0 localhost:61616 localhost:59538 ESTABLISHED
リスンはしてるな。
activemq.logには特にエラーや警告は見つからない。途中の経路で何かが起きているのかしら。しかしSSHではちゃんと通信できているので…。
https://serverfault.com/questions/550735/activemq-cannot-send-channel-has-already-failed-every-2-seconds
実用化成功、エロ同人誌ソムリエボットmk-IV Xネブラ対応型 レッドパワー フルアーマータイプ
以下の記事を読んで「確かそんなエロ漫画が結構あったよな…」と思ってソムリエボットに探させた。
中学2年の少女(13)に現金を渡す約束をして淫らな行為をしたとして、警視庁神田署は14日までに、児童買春・ポルノ禁止法違反(買春)の疑いで、埼玉県志木市の自営業の男(48)を逮捕した。
「やる気スイッチマン」買春逮捕 中2少女に現金渡す約束
神田署によると、男は「思春期専門カウンセラー」「やる気スイッチマン」と自称し、子供向けの講演などをしていたという。
(略)
男のホームページによると、思春期の子供との関わり方などを親にレクチャーした著書のほか、講演を行っていた。
結果がこれだ↓
https://twitter.com/nekora2520/status/908634347678208000
うむ、中々的確ではないか。しかしリプライは逆順にした方が後から見易いな。
ところでこの事件、
逮捕容疑は7月23日、東京都荒川区のホテルで、都内に住む少女が18歳未満と知りながら、現金4000円を渡す約束をして淫らな行為をした疑い。
http://www.sponichi.co.jp/society/news/2017/09/15/kiji/20170914s00042000436000c.html
件の思春期専門カウンセラー、埼玉県志木市本町の大塚隆司(48)、全く怪しからん奴だが、確かに思春期のJCの扱いには長けているようだな…。4千円に値切るとは只者ではない…。
総合法令出版
売り上げランキング: 20,158
故郷から10000光年 (ハヤカワ文庫SF)
短編集。たしかこれにもトレッキーの話があったな、と言われ気になって。あった、あった。思い出した。「ビームしておくれ、ふるさとへ。(Beam Us Home)」だ。
♪光の速さで明日へ〜ダッシュさー(Beam!!Beam!Beam Beam!…。)の、ビームである。
「電送」か、あるいはTVに合わせて「転送」と訳してくれれば分かり易かったのに。そういえばこの作品、強姦を「レープ」、家政婦を「メード」と外来語の表記が独特なんだけど昔はそういう表記に決まってたのかしら。JISではそうなってたような気がする。
まぁジェイムズ・ティプトリー・ジュニアは左程好きではないのでどれも面白くない、いや逆か。有名な作家だからと嘗て読んだがどれもつまらんので余り好きでない。
同じような話でも、一発屋トム・ゴドウィンの「冷たい方程式」は「可哀想になぁ、オイオイオイオイオイ…」なんだけど、このジェイムズ・ティプトリー・ジュニアの「たったひとつの冴えたやりかた」は「何だこの馬鹿女、ペッ」ってなもので。
ちなみにVOYは故郷まで7万5千光年だったらしい。
2017年の9月、Lombok抜きのJavaBeanを見て「Java言語は冗長だが〇〇言語は…」と語るのは如何なものか。
いやこのJavaとKotlinのコード比較なんだけど。
Kotlin言語は知らないけれど、後発である以上は、恐らくJava言語に比べて何かと素晴らしく改良されているに違いない。コンパイル速度以外は。
だがしかし、Java言語の例が
public class Friendship { /** ユーザーID */ private int userId; /** 相手のユーザーID */ private int targetId; /** 親友フラグ */ private boolean goodFriend; /** 友だちになった日時 */ private long time; @SomeAnnotation public int getUserId() { return userId; } @SomeAnnotation public int getTargetId() { return targetId; } @SomeAnnotation public boolean isGoodFriend() { return goodFriend; } @SomeAnnotation public long getTime() { return time; } public Date getTimeAsDate(){ return new Date(time); } public void setGoodFriend(boolean goodFriend) { this.goodFriend = goodFriend; } public void setTime(long time) { this.time = time; } public void setTargetId(int targetId) { this.targetId = targetId; } public void setUserId(int userId) { this.userId = userId; } }
またそれか。
今は…というか結構前から、大概のJavaプログラマはこう書くのである。
import lombok.Data; @Data public class Friendship { /** ユーザーID */ private int userId; /** 相手のユーザーID */ private int targetId; /** 親友フラグ */ private boolean goodFriend; /** 友だちになった日時 */ private long time; public Date getTimeAsDate(){ return new Date(time); } }
ネットでは何故かこの手の記法を取り入れないと語られがちなエンタープライズ系のPGもこう書く。というか書かされる筈。アクセサへの無駄なテストケースが減ってカバレッジや進捗管理が微妙に楽だからな。進捗会議前日に下請けがアクセサのUTどかっと行って進捗誤魔化す技はもう使えない。
今時、JavaBeanを長々書くのは多分サイバーエージェント社のJavaコーダ位じゃないかな。Eclipseで自動生成でも手間は大して変わらないし、その方がメンバ名を変えたい時のリファクタリングがEclipseに全部任せられるので良い、という判断なのかもしれない。実際それはそれで妥当なのでサイバーエージェント社のJavaコーダ諸兄のやり方も充分ありだ。ただ、コードゴルフには少々不利。
んで、ロジック部分のJavaだが
public List<Friendship> findGoodFriendship(int userId) { List<Friendship> friendshipList = getAllFriendship(userId); List<Friendship> goodFriendList = new ArrayList<>(); for (Friendship friendship : friendshipList) { if (friendship.isGoodFriend()) { goodFriendList.add(friendship); } } return goodFriendList; }
今 時 そ れ か 。
いやサイバーエージェント社のJavaコーダ諸兄は実際そう書いているのだろうし、上記は決して間違っているわけでも悪い訳でもない。Java5と互換性が必要な時もあろう。
ただ、今は、来週にはJava9が出る今時は、特にコードゴルフの時はこう書く。
public List<Friendship> findGoodFriendship(int userId) { List<Friendship> friendshipList = getAllFriendship(userId); return friendshipList.parallelStream().filter(f -> f.isGoodFriend()).collect(Collectors.toList()); }
ちなみに、コードプロゴルファーの場合は更にGS Collection改めEclipse Collectionを使ってこう書くらしいが、Eclipse CollectionはLombok程には普及していない。
import org.eclipse.collections.api.list.MutableList; import org.eclipse.collections.impl.list.mutable.FastList; (略) public List<Friendship> findGoodFriendship(int userId) { MutableList<Friendship> friendshipList = getAllFriendship(userId); return friendshipList.select(f -> f.isGoodFriend() ); }
一応、元記事にもStream版も書いてはあるんだが…。いかんせんサイバーエージェント社のJavaコーダ諸兄は普段決して使った事が無いだろうに、見栄を張ったのか、Streamを突然使ったものだから間違えている。
おそらくf.isStrong()はf.isGoodFriend()のTypoだろう。これではコンパイル時にエラーになる。
で、改めて眺めみよう。
Javaの例
@Data public class Friendship { /** ユーザーID */ private int userId; /** 相手のユーザーID */ private int targetId; /** 親友フラグ */ private boolean goodFriend; /** 友だちになった日時 */ private long time; public Date getTimeAsDate(){ return new Date(time); } }
Kotlinの例
open class Friendship { /** ユーザのユーザーID */ @get: SomeAnnotation var userId: Int? = null /** 相手のユーザーID */ @get: SomeAnnotation var targetId: Int? = null /** 親友フラグ */ @get: SomeAnnotation var goodFriend: Boolean? = null /** 友だちになった日時 */ @get: SomeAnnotation var time: Long? = null fun getTimeAsDate(): Date { return Date(time!!) } }
そして、
Javaの例
public List<Friendship> findGoodFriendship(int userId) { MutableList<Friendship> friendshipList = getAllFriendship(userId); return friendshipList.select(f -> f.isGoodFriend() ); }
Kotlinの例
fun findGoodFriendship(userId: Int): List<Friendship> { val friendshipList = getAllFriendship(userId) return friendshipList.filter { it.goodFriend } }
…Java言語版、別に冗長でも無いよな。
この程度の事(これが、一番完結に記述できる代表例なんだよね?)、Javaプログラマなら皆知っている有名ライブラリで解決できることのために勉強会を5か月、導入に1か月、そして何より、今後、異動するか退職するかシステムを廃止あるいは全部一新するまで、ずーっと、JavaあるいはKotlinのコンパイラやランタイムを新しくする度にJavaとKotlinの相互呼び出しの検証を毎回毎回行い続ける修羅の道を歩むのか…。恐るべし。よりによって来週、10年に1度クラスの大幅変更が入ったJava9が出る上、リリースサイクルを半年にしようかとか言い出したこの時期に。
やっぱ今時、Lombok抜きのJavaBeanを見て「Java言語は冗長だが〇〇言語は…」と判断するのって危険だな。
まぁもし私がKotlinの良さを語るなら「ぬるぽが無い」という噂に着目するけどな。なんでBeanの行数の話なんかするんだろう。
Google Compute Engine面倒臭げ
この辺を読んだところ何か無料でマトモに使うには面倒臭そうなので、WebKeepersでメモリ1GBプランをズバット申し込み。Twitter広告に釣られてしまったが、1か月だけお試し880円をケチる私ではない。
インターネット越しにActiveMQアクセスするの初めてなので、今の私ではいきなりGoogle Compute Engineの怪しい無料技だとトラブル時の切り分けができる気がしないのである。二日続けてメモリ不足で処理が失敗しておりグダグダやってる暇はない。
セキュリティは昨日はTCPSだのJAASだの壮大な構想を語ったが、とりあえずteratermでSSHトンネルにしよう。teratermならそんなにメモリ喰わんであろう。あとで探せばきっとSSHトンネル専用の何かもありそうだし。アプリ側もlocalhost:のままで済むし。
とか言ってる間にVM出来たというお知らせが。速い。さすが専門業者だ。我が社だと手続きに2Wは掛かる。しかも利用料金は月額数千円から数万円は行く。
OSはCentOS 6.8だ。7は私も使い方が分からんからな。RHELは7から変わり過ぎである。
早速設定せねば。それにしても
論理プロセッサ数が48個とは豪気だな。我がPCのCore2Duoの24倍だ。
Intel(R) Xeon(R) CPU E5-2628L v4 @ 1.90GHzというCPUらしい。
速そうな名前である。VPSだからクロック全速で使える訳ではないとは思うがマルチスレッド処理には強そうだ。なので、メモリが許せばエロ同人誌ソムリエボットmk-IV Xネブラ対応型 レッドパワー フルアーマーのエンジンをWebサービスにしてhttp://nekora.main.jp/comic/thumb/nekora/all/に検索機能を設けることもいずれは出来よう。
体調不良
腰が痛い上に昨夜は腹痛で徹夜したというのに、こんな時に限って今日も明日も明後日も午後から外出の上(少々だが)残業である。そして腹痛のため朝昼晩抜き。ちびちびとゼリー飲料を飲んだが。まぁ食欲無いからいいけど。
腰痛は土日、家でゴロゴロしている分にはまぁまぁだったんだが、やはり出勤し、あまつさえ外出して歩くと大変痛い。
そして不本意ながら徹夜するすると翌日の夕方6時頃から頭痛が。
さすがに今からちょっとお粥食べてお風呂で腰を温めてもう寝る。また翌朝が腰から首から強張って痛いんだよな。
本当は家に帰ったらWebKeepersのVMのメモリ枯渇問題のため、殆どの時間寝ているだけなのに常駐はしているActiveMQをGoogle Compute Engine無料プランのショボいショボいVMにオフロードするため通信ポート番号を443にしてJAAS認証入れる調査をしようと思ったんだがそれどころではない。気になるのはGoogleのVMってまさかFWでプロトコル判定していないだろうな?という点。まぁやれば分かるだろう。
売り上げランキング: 5,730