平田弘史→細雪→KITTE

東京に行ってきた。
というのは、弥生美術館でやっている「平田弘史に刮目せよ!」に途轍もなく心惹かれた所為だった。
せっかく東京に行くのだから、ついでに何かやりたいもんだ!と思っていたら、そういえば東京と博多でしか上演しない「細雪」の舞台があるではないか。
早速いくことにした。他にいろいろ美術館の特別展示なんかを確認してみたのだが、スケジュール的に移動だけで結構時間が喰ってしまうため、とりあえず、あとは東京駅のあたりで旨いモノでも食べられたらいいなぁ~的な感じで東京へ出発したのである。

弥生美術館「平田弘史に刮目せよ!」

刮目しにきたぞ!!と入って、ぐるりと1周。

凄いよ!とにかく凄いよ!!!

迫力とか、いやそもそもパターンなんてない時代に、自分で全部やっちゃってるのね。
(途中アシをいれたり、奥さんにさせたりしていたようだけど)

サイン入りの画集を買おうか迷ったのだけど、結局漫画が読みたいから、ちょっとクールダウンして買うのを見合わせたのだが、「嗚呼、どうして大阪には来てくれないのだ!」と心の中でため息をついた。

明治座『細雪』

あの、有名なお芝居である。
船場や芦屋・神戸、といった、まぁ馴染みのあるっていえばあるし、ないっちゅうったらない場所が舞台になっている、かつ大阪弁(船場ことば)なので、久しぶりに、昔の大阪を懐かしむ、そんな芝居をみてみたいって思ったのですよ、私。
芝居は、まぁ3時間にまとめるために、端折るは、入替えるは、つなぎ合わせるは、もう原作アレンジしまくりな感じで、結局、

美しい人が、美しい桜の下に立ってたら、もうそんでかましませんねん!!!

みたいに終わった。いや、それで満足するんだから、これが!

<1幕目>
大阪弁がうん?ってところもあったのだが、2幕目以降はほぼほぼすんなり。
(太川陽介さんの大阪弁が意外にイマイチだったな。)
こいさんが、いきなり赤いワンピースで登場したら、客席が「うぉっ」って感じに。
<2幕目>
なんでか、ここでこいさんが啓坊と駆け落ちした話に・・・
いや、あれは若気の至りなので、もっと早く出さないと意味がないんちゃうの?
<3幕目>
橋爪淳さんが相変わらず男前(声もええねぇ)で安心。
雪子は結婚がきまって、心の中ではしゃぎまくり!みたいな感じだが、原作ではマリッジブルーみたいになって、下痢ピーで終わるんだよねぇ・・・
こいさんは原作では、本家が東京に移ってから絶縁されたはず。
なのに、大阪に家がある状態で絶縁されたこいさんが大阪の家に戻ってきてエンディング。

という、まぁ原作読んでたら、????みたいな話なんですけど、最後はゴージャスに4姉妹揃って見得?きっておしまい。

いいんです、もう。いいんですよ、これで!

ということで、この日はアフタートークショー付。
だったのだが、埼玉から来た団体さんは「バスが来てますので~~~」といわれて、トークショーの前に名残惜しそうに退散。
川崎麻世さんに「帰っちゃうの?」とか言われてたけど、「帰りたくないぃ~」って後ろ髪ひかれてた・・・
かわいそうに、2,30分ぐらいええやん!と思うのだけど、バスの出発が遅れると家に帰れないんだろうね。
そこらへんは容赦のない添乗員。

トークショーは川崎麻世、紫吹淳、壮一帆のお三方。川崎さんがMCになって話を進めていく。

女性2人とも宝塚出身の人で、「細雪」には宝塚の人がいっぱい出てますねぇ・・・みたいな話に。
で、「細雪」出演については、壮さんは「本当に感謝している」みたいなことをおっしゃり、紫吹さんは、宝塚時代、東京での舞台があったとき、同じ時期に細雪をやっていて、「今それに出られるというのは非常に感慨深い」、みたいなことをおっしゃった。

あとは、男であった時間の方がまだ長いって話。
壮さんは、「TVでも言ったのだが、座っているときに気が緩むと脚が開いちゃって、水野さんにバチっ修正とされる」ということで、なにぶん「女に戻ってる最中」なので、ガサツなのはご容赦を・・・みたいに言ってはった。
そうすると、紫吹さんも「私もまだ男だった時間の方が長い」って。

ん~~、宝塚恐るべし!
ってか、2人とも、「男役」ってのを「男」って、省略しすぎてやしませんか?

さて、話は進み、「細雪」をベースに芝居を作るとしたら?と聞かれ、壮さんは「ミュージカル版細雪」もしくは「井谷さんを主人公にしたスピンオフ」といってはった。

もともと芝居の最後あたりで、鶴子さんが坊さんの唄を歌っているのだが、そのときに坊さんが踊って出てくるってのはどうか?という話で、周りがあんまり飛びつかないので、「えぇ!面白くないですか?!」と紫吹さんに詰め寄る壮さん。

いや、たしかに坊さんが、1人ずつ白鳥の湖みたいに出てきたら面白いやろうけど・・・
その後、あの芝居できるの?と思ってしまった。(残像が強烈すぎひん?)

あと覚えている範囲だと、壮さんは2回化粧替えをしていて、1回目は雪を踊るとき白塗りと、2回目は前述の赤いワンピースを着て出てくるところ。
雪を踊り終わって暗転した後、猛スピードで舞台をはけるのだが、そのスピードが歴代最速だと言われたそう。(あんな走ってる人初めて・・・みたいに言われたそうな)

まぁ、後は川崎さんMCがぐだぐだなので、なかなか思うようには盛り上がらなかったのかもしれないが、紫吹さんのカイヤさん真似突っ込みとか聞けて、面白かった。
公演後お疲れのところ、トークショーしてくれてありがとう。

KITTE 東京駅前

さて、次の日は朝ごはんを探して東京駅へ。
六厘舎にいって朝ラーメンを食べたのだが、昔食べたときほどおいしさを感じず、ガッカリ。
そうしてプラプラすると、ソラノイロも朝ラーメンをしているので、すかさず入る。
ラーメン2杯目。甘いスープに初めは「甘すぎるわ、コレ」と思ったが、それにもまして麺がスープと合っているのか?という疑問に。
食べ進めていくと、スープの甘さには慣れてきたものの、麺の違和感は消えずじまいで終了。
(残ったスープにピラフとチーズ入れて、炙って食べたい・・・)

ソラノイロ朝ラーメン

そうして、さらに丸ビルあたりでプラプラして、茶して、KITTEに到着。
郵便局のイベントをやっていて、ハンコを集めてまわりながら、ちょこちょことお店にはいってみる。
店に入ったり出たりして、ぐるっと廻ろうとしていると、下でなんかかわいい子がウジャウジャしてるではないか!

ぽすくま集団

なんだっけ、名前。ってかこんなにいたのかキャラクター。(1人しか知らんかった)
最近の私の一押し、関電「はぴ太」君と遜色なくカワイイ。(はぴ太は声がかわいいんだよ)
いや、もともと君たちがかわいいのは既に知っていたし、キーホルダーも持ってたよ。
しかし、揃ってワイのワイのやってると、さらにかわいく見えてしまうなぁ。
あぁ、なんていい日だ。

ということで、この2日間は、おなかも心も満たされて東京を後にした。
これからしばらくは東京土産でさらにおなかも膨らむことだろう。

ExcelVBA覚書 VBAPのパスワード忘れた?

略すとPPAPみたいになってるけど、ExcelのVBAプロジェクトのパスワードがわからないとき(忘れたとき)は、それを外すやり方がある。

何だっけ・・・

と思って調べた。

ここでは詳細は書かないけど、検索ワード的には
 Excel, VBA, DPB=
といったところか。

DPB=のダブルクォーテーションで括られた中身が暗号化?されたPWで、それをうまいこと置換えるわけなんだけど、バイト数が合わないとVBA関連のファイルが潰れちゃうので注意しなくてはならない。
なので、バイト数のきっちり合った置換文字を作成するため、新規ExcelファイルにVBAパスを付けて保存した後バイナリファイルの中身を確認する。
(パスワードの桁数からDPBの中身の桁数が容易にわかるわけではないので、色々作って合致した!ってなパスワードが見つかってから置換えるわけ。ちょいと面倒なのだが、熱さ過ぎればチョメチョメチョメと。)

あらら、結構書いてしまったぞい。
忘れたときのためなので、悪用するべからず!

レンタルサーバを変えた件

@PagesからXdomainにサーバを変えようかと思って作業中。

<追記:03/01>
FFFTPでFTP接続しようとして、うまくいかなかったが、
 (1) PASVモードにしない
 (2) 暗号化ナシの接続許可にチェック
で、うまくいくようになった。

ここまで書いてくれてないマニュアルって何?
ってか暗号化ナシって・・・

Java覚書 サーバ名からMACアドレスを取得

Windows上で動いている場合にしか利用できない方法だけど、メモ。

JavaでサーバのMACアドレスを簡単に取得する方法を漁ってみたのだが、結局は「ARPコマンドを実行する」ぐらいしかないようである。
なので、ちょっとガックシきてしまった。

1) target に サーバ名を設定。
2) Windowsコマンド arp に、targetサーバのIPアドレスを設定して実行。
3) コマンドプロンプトの出力からtargetサーバのIPアドレスのMACアドレスを取得

    String target = "ここにサーバ名を設定";
    String adr= "";
    try {
      // 1)
      InetAddress ip = InetAddress.getByName(target);
      // 2)
      ProcessBuilder pb = new ProcessBuilder("arp", "-a", ip.getHostAddress());
      pb.redirectErrorStream(true);
      Process proc = pb.start();
      proc.waitFor();
      // 3)
      InputStream is = proc.getInputStream();
      BufferedReader br = new BufferedReader(new InputStreamReader(is));
      try {
        for (;;) {
          String line= br.readLine();
          if (line == null) break;
          if (line.indexOf(ip.getHostAddress()) >= 0) {
            adr = buf.substring(23,45).trim();
          }
        }
      } finally {
        br.close();
      }
      if (res.length() > 0) {
        System.out.println("Server ["+ target+ "] , IP [" + ip.getHostAddress() + "] , MAC [" + adr + "]");
      }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
    }

参考URL
きしだのはてな「JavaでMACアドレスを取得する」
ひしだま’s 技術メモページ「Java > 外部プロセス起動」

宅配サービスで嫌なもの

ここのところ、散財中。

Dr.AIRのマッサージ機を買ってみた。
9千円ぐらいだけど、百貨店で試しに使ってみたらメッチャ強力!だったので、思わず買ってしまった。
買ってすぐ家で使ってみたら、やっぱしメッチャ強力!
って、まだ弱レベルだった・・・
さらに強力にしてずーーっとブルブルさせてたら、突然電池切れ。
弱ーくなっていってプチっとかじゃなく、突然あっけなくなところが笑ってしまった。
で、早速充電。持ち歩けそうだし便利だな。(壊れなければ)

他にも色々買ってみたけど、それは別のお話。

で、宅配便のお世話になっているわけだが、迷惑な宅配業者(あるいは宅配担当者)を列挙してみん!

・人がいないときに来る
  まぁ、これはしょうがないじゃん、って思うんだけど、
  ヤマトだとあらかじめ宅配するけど大丈夫?メールがやってくるんだよね。
  これ、ホントありがたい。
  再配達してもらうのってやっぱしもうしわけないからね。
・時間どおりに来ない
  これもまぁしょうがないね。いっぱい運ばせてるのこっちだし。
・何度もやってくる
  1回できてね。その方が楽でしょ?って思う。

んで、こっからが本番!
・Web再配達受付の仕組みがない
  これはつらい。もういい加減電話なしで生活できるようにしてほしい。
・荷物がたばこ臭い
  論外。客のモノ(他人のモノ)って認識あるのか?
  下請け使ってるところは、もう本当にひどいときがあって、
  この間なんて、段ボールの外側だけじゃなくって内側にまでたばこ臭がついていた。

と、愚痴ってみたが、基本的に世話になっている身なので、一番下以外は文句は言わない。
一番下のやつは、もう、ホント勘弁してくれ。迷惑。部屋ん中まで臭なるわ・・・

謹賀新年2017

新しい年が幕を明けた。
だからといって、大して何も変わらないので12月に見た面白い芝居について。

「繻子の靴」

京都の大学内にある春秋座というところで8.5時間かけて行われた芝居。
いやぁ~、長いのなんのって!
観てるほうが疲れるんだから、やってるほうはどうなんだろうか。

8.5時間の芝居って、台詞を覚えるのはどうすんのかなぁ?と考えたのだが、実際みてみると、半分は朗読なので、覚えるところはそんなに多くはなかったようだ。
が、それでも、膨大な量だなぁ。
と、裏っ側のことを気にしながら観てしまった。

舞台は3段になっていて、それに似非プロジェクションマッピングを合わせて、面白い構造になっていた。これをうまく画面転換や人物の距離を表すように使っていて、うん、うまい使い方だなぁ、などと思った。

ただ、いつも思うんだが、蜷川氏といい、この演出家といい、日本人がやると、妙に日本エッセンスを出そうとするところが、ちょっと「?」。
いい効果もあると思うのだが、例えば台詞を言っている最中に笛吹かれても、うるさいだけなんですけど。いや、風が吹いていることを表現したいのはわかるんだが、五月蝿いのよ、これが。
音響ってこういうことじゃないし、どうして狂言師をここまで配置する必要があるのか、雅楽?をこういうところ使われてもねぇ、とか、まぁとにかく音楽はいまいちだったなぁ・・・
(日本エッセンスも使いようなんだよね。いい使いかただなぁ、と思うところもあったのだけれど、必要ないよなぁ、と思うところやら、どうせだったらここで使ったらどうかなぁ?と思うところやら、いろいろあった。)

ただ、総合的に見て今までみた芝居の中でも、上位に入るすばらしい舞台だったなぁ、と思う。よくここまで作り上げたなぁ・・・と感心した。
また、機会があったら観てみたいな。

4日目まで見続けた人も、役者さんもお疲れ様でした。
これぐらいの芝居が7千円弱で観られるってのが凄いな。
企画してくれた人ありがとう。

ということで、これが12月のお話。
さて、今年は何を観ようか。

SQLite覚書 副クエリを使ったUPDATE

世の中には、ありがた迷惑とか、小さな親切大きなお世話とか、そういうことがわからない人が一杯いるようだ。
そういう人は、「やるな!」「やらないでくれ!」っていっても、「やる」のだなぁ。
人のやること横取りするんじゃないよ!と、叫びたかった、今日の朝。

それはそうと、SQLiteでSELECT文を使ってUPDATEしたい!というのがあって、
そうすると、まぁ、

 UPDATE table1 SET
  col1 = (SELECT col1 FROM table2 WHERE .... )

みたいにすればできるぜ!みたいなことはいっぱい書いてあるんだけど・・・

 そうじゃないんです!
 JOINで連結させて、ホゲホゲホゲ・・・とやりたいんです!

という要求は満たされないわけ。

で、調べた。

SQLiteはWITH句が使えるらしい。
んで、WITH句をうまく活用して、UPDATEできるらしい。

他のDBのSQL文を

UPDATE table1 SET
    col1 = a.col1
  , col2 = a.col2
 FROM (SELECT .... FROM .... INNER JOIN ....) a
 WHERE table1.id = a.id

とすると、
WITH句を使ったSQL文は

WITH a AS (
  SELECT .... FROM .... INNER JOIN ....
)
UPDATE table1 SET
    col1 = (SELECT col1 FROM a WHERE table1.id = a.id)
  , col2 = (SELECT col2 FROM a WHERE table1.id = a.id)

みたいな感じ。

で、これを私が愛用する「A5:SQL Mk-2」(SQL開発ツール)で実行したのだが、うまくいかずに、「あれ?できないの?」とか思って悩んだのだが、ツール上ではうまくいかないだけで、SQLiteのコマンド実行では、ちゃんと動いた。

ホント、統一させてほしいんですけど。

2か月もほったらかしてしまったから観劇感想

ブログをほったらかして、そろそろ2か月。
ちょっとは更新しておこう。

何もなかったわけではないのだが、「貧乏暇無し!」これに尽きる。

この2か月の間に、宝塚星組「桜華に舞え!/ロマンス」と梅芸「スカーレットピンパーネル」は観劇した。

前者は、週末の、しかも、トップのさよなら公演であったので、けっこう混んでいたが、さほど悪くない席が取れた。

で、まぁ、最終的に北翔さんという人は私は好きだったけど、トップになってみたら、

 さしたるトップではなかったなぁ・・・

と、ファンには申し訳ないのだが、そんなことを思った。
どちらかというと、割と自由にやれる脇役ってのがピッタリくる。
バウとかのメリーウィドウ等々がよかったから、トップでも十二分にやってくれそうな感じはしたのだが、トップになるといろいろなところでボロが出るもんだな・・・と感じた。
(誰も何も言わないんだろうか?)

一方、紅さんは品性に欠ける点があまり好きではないのだが、とはいっても、なんとかトップとしてやれそう?やれるかな?的な雰囲気が出ていたのが印象的だった。
(でも、金払って行くかと言われれば行かないかな。)

続いて、「スカーレットピンパーネル

石丸さん好きですよ、私。
石井さんも好きですよ、私。
平方くん頑張ってますな、はい。

やっぱり男前が時代感たっぷりな衣装を着ていると、「目の保養」でありますな。
衣装が素晴らしく格好良くって、いや、衣装だけでも充分なのに、男前!という、ジュルジュル感たっぷりでございましたよ。

そこへ行くと、安蘭はイマイチ。なんというか品がないんだな。
立ち姿は悪くないし衣装が綺麗だし、静止画としてはいいのだが、動くと商店街のおばちゃんみたいな感じ。
前に観た「サンセット大通り」はよかったし、「スカーレットピンパーネル」の宝塚の初演は彼女が主役で、しかもとても面白い舞台だった。
私はこの宝塚初演版のDVDまで買ってしまったほどだったので、いつも以上に期待をしていたのだが、今回はガックシきてしまった。

内容は、といえば、宝塚版とは構成が違って、どちらかというと中身に重点を置いていて重厚感がある。
だけど、少々歯切れが悪く、どちらかと言えば、宝塚版のほうがライトで楽しめる感じ。
宝塚は人数が多いからそれだけで舞踏会の場面とかも迫力があるというのも、宝塚版のほうがいいと感じている理由の1つだ。
(小池修一郎の演出力を改めて見直してしまった。)

で、1つ愚痴っとこ。

私はスタンディングオベーションが大嫌い!なのだ。

ってかさ、そんなこと欧米のまねしなくてもよくない?
演者はスタンディングオベーションされて嬉しいんだろうけどさ、そもそも、

前の人が立った所為で舞台が見えなくなるから、仕方なく立ってるんです!

っていう人間がどれだけいると思ってる?
もうちょっと、他人に対する気配りしようよ、ホント。
(ってか拍手するだけじゃ、満足せんのか?)

私はレスリー・チャンが好きだったのだが、レスリーのファンというのが、
「映画を見終わったら、スタンディングオベーションしよう!」
みたいなことをやってて、実際にやってるひとがいたんだけど、あれもホント迷惑。
本人いないし。
もう、自己満足をひけらかしてる。
後ろからケリ入れたい気分だったが、良くも悪くも足が届かんかった。

あぁ~~~、悪魔の私が出てきてひっこまないぞぉ~~ということで、今日はこの辺に。

Processing覚書 SQLite接続

Processing開発。
BezierSQLibライブラリを使ってSQLiteのDBにつないでいるのだが、1つ問題が。

というのも、エラーになったときExceptionが発生しない。
ライブラリ内部で例外処理までしてるのは兎も角、結果がエラーになってもエラーを判別できるフラグがない。
DBにLockがかかってる時にUPDATEしても、コンソールにエラーメッセージは出るが、それだけ・・・
Rollbackするタイミングがつかめない。
このままではマズイ。困った。

こうなったら、直接jdbcライブラリを利用しよう!となった。

プログラムソースのpdeファイルが入っているフォルダの下に「data」フォルダを作って、その中にDBファイルの「test.db」を入れる。
「data」フォルダと同じ並びに「code」フォルダを作って、その中にライブラリ「sqlite-jdbc-***.jar」ファイルを入れておく。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

// ------------------- ( 略 ) -------------------

void getData() {
  Connection con = null;
  Statement stmt = null;
  try {
    Class.forName("org.sqlite.JDBC");
    con = DriverManager.getConnection("jdbc:sqlite:"+ dataPath("test.db"));
    println("Opened database successfully");
    
    stmt = con.createStatement();
    stmt.executeUpdate("INSERT INTO m_users (user_cd ,user_name) VALUES ('1010101', 'Lily');");
    stmt.close();
    con.close();
  } catch ( Exception e ) {
    println( e.getClass().getName() + ":" + e.getMessage());
  }
}

Macでいけたから、あとはWindowsでも確認しよう。

SQLite覚書 速度の向上

データが1万→2万になったところで、急激にUPDATEの速度が遅くなってしまった。
SQLiteって速いって聞くんだけど・・・
ということで、チューニングについて調べてみた。
INSERTが遅いってのがあったけど、Transactionは入れてるし。
UPDATEが遅いっていわれても、そこを変えるのは・・・と思ったので、以下のサイトを参考に、コマンドプロンプト上でDBの設定をかえた。
パフォーマンスを追求するためのSQLite設定 | ITハンドブック
SQLite「PRAGMA statement」

sqlite> PRAGMA main.journal_mode = PERSIST;
sqlite> PRAGMA main.synchronous=0;

mainはスキーマ名。
で、どうなったかというと、設定を変更後、一回VACUUMをしてから確認したら、劇的に速度向上?

<追記>
あぁ・・・勘違いしてた。
どうやら、DBを開いているときだけ設定した状態が保持される様子。

SQLite が認識できる SQL

閉じちゃったら元のDefault設定に戻るようだ。
たしかに、開き直したら設定が消えちゃってたよ。

開いた直後だな。設定するのは。

<追記2 2016/09/14>
さて、さて、いろいろ試した結果。

結果的に設定を変えて高速化したか?といえば、さほどな気はした。
やはり、他のSQLと同様、INDEXをはるってのが1番で、あとはなるべく実行しない方法を探すのがよいようで。
次に、TRANSACTION。これはかなり大きかった。1,2万行を順にINSERTしていく手前でBEGIN→終了時COMMITとするだけだが、これも速度がだいぶん速くなったように感じた。
DELETE&INSERTよりREPLACEを使うのがいいと書いている人もいるが、
目からウロコだったのは、INSERT文のVALUES部にUNION ALLしたSELECT文を用いるやり方。

SQLiteで最も速く複数行INSERTする方法 | transhumanist note
要は、複数行の実行をお纏めしちゃうわけで、これはなかなか面白いやり方だと思った。

まぁ、あとできることはVACUUMしてゴミを減らすことかな・・・

ExcelVBA覚書 コマンド実行

Dir関数でファイルがないってときに、
 ただファイルがないのか、ネットワークにつながってないのかわかんないの?
 Ping飛ばしてネットワークにつながってるのか調べたらいいじゃない?
みたいな要件があって、まぁ、正直、「そこまでやるか?」って思ったけど、そういう環境で動いている人は、そういう発想になるんだろうなぁ・・・と思って、教えてもらったPing送信術をアレンジしてExcelに埋め込んでみた。

Public Function CheckNetwork(ip As String) As Boolean
    
  Dim wsh As Object
  Dim buf As String
    
  On Error GoTo ErrCheck

  Set wsh = CreateObject("WScript.Shell")
  wsh.Run "%ComSpec% /c ping -n 1 " & ip & " | clip ", 0, True
  buf = GetObject("\" _
               , "htmlfile").ParentWindow.ClipboardData.GetData("text")
  If InStr(buf, "ラウンド トリップの概算時間") > 0 Then
      CheckNetwork = True
  End If
  Exit Function
ErrCheck:
  err.clear
End Function

ちなみに、「%ComSpec%」は、「%SystemRoot%\system32\cmd.exe」のことらしい。
「 | clip」でクリップボードに入れて、それをbufに読み込むようにした。
また、Shellは、Execで動かす方法とRunで動かす方法があるが、Runのほうが、コマンドの窓が表示されないようにできるので、こちらを採用。
面倒な要件は、解決できると嬉しい。
解決しないと、逆恨みしそうだけど。

ExcelVBA覚書 シートロック、でもフィルターは使いたい

あるよねぇ~~~~
ってことで、

Sub ProtectSheet
    With ws
        If Not .ProtectContents Then         'ロックされていないときだけロック処理
            .Protect Password:="password"
                   , DrawingObjects:=True
                   , Contents:=True
                   , Scenarios:=True _
                   , AllowFiltering:=True     'ここでフィルターOKにする
        End If
    End With
End Sub

以下は試していないけれど、これでもOKらしい。

Sub ProtectSheet2
    With ws
        If Not .ProtectContents Then         'ロックされていないときだけロック処理
            .Protect Password:="password"
                   , DrawingObjects:=True
                   , Contents:=True
                   , Scenarios:=True _
                   , userInterfaceOnly:=True
        End If
        .EnableAutoFilter = True
    End With
End Sub

ExcelVBA覚書 Application.Goto

セル選択&移動させる方法はいろいろあるけど、一番手っ取り早いのはApplication.Gotoのようだ。

Sub ActivateRange(rng as Range)
    On Error Resume Next
    Application.Goto rng, True
    err.clear
End Sub

1つ目の引数は選択セル、2つ目の引数はスクロールして移動するかどうか、らしい。
選択だけだったら、rng.selectでもいいように思うけど。

これを使わずに選択させようとなると、

Sub ActivateRange(rng as Range)
    On Error Resume Next
    rng.parent.parent.Activate
    rng.parent.Activate
    rng.select
    err.clear
End Sub

みたいなかんじで、ブック→シート→セルをアクティブにしないといけないわけで、これは面倒。
(親がアクティブになっていないに、子をアクティブにはできないのだ)
楽にできる関数があるということで、メモ。

ExcelVBA覚書 このパスどこ?

このパスはローカルなのかネットワークサーバなのか・・・
とりあえず判定ロジックを作ってみた。

'ローカルならTrue、ネットワークならFalse
Public Function CheckLocal(filepath as String) As Boolean
    
    Dim cap As String
    Dim fso As Object
    Dim obj As Object
    
    '先頭が\なら確実にネットワーク
    cap = Left(filepath, 1)
    If cap = "\" Then
        Exit Function
    End If

    'ドライブ割当のローカル/サーバ確認
    Set fso = CreateObject("Scripting.FileSystemObject")
    For Each obj In fso.Drives
        If obj.DriveLetter = cap Then
            If obj.DriveType = 3 Then
            Else
                CheckLocal = True
            End If
            Exit Function
         End If
    Next
    'ここまで来たらどこかは不明
End Function

物欲主義! Tabletを買ってしまった件

iPod Touchを持っているのだが、最近、Amazonのプライムビデオで『弱虫ペダル』をiPodで観ていてふと思ったことが、

観ている間ゲームできないんですけど・・・

ってな話。
「いや、観ている間ゲームはしないっしょ」と突っ込まれそうだけど、例えば、ちょっとメールを確認したいとかね、わざわざ画面切替えないといけないわけ。
面倒ですな、と思って、早速Amazonでタブレットを漁ってみた。
Amazonの動画を観るだけだったら、とKindleタブレットも候補に挙げてみたが、さらにふと思ったのは、ポケモンGOのこと。
iPodだとブチブチ切れちゃう(最終的にGPSの感度でなく、メモリかなぁとも思い始めてきた。)ので、んじゃ、GPS付いてるタブレットにしてはどうかと調べてみた。

で、一目散。Sony Xperia Tシリーズ
サイズによって値段が違うものの、5万円かぁ・・・きついなぁ。
ASUSなんてどうかなぁ・・・どうかなぁ・・・。

購入。。。

5万円超のタブレットを買ってしまった。PCより高いやないか!とか気がついたのは購入後。
GPS付いている2万円台のタブレットがあるやろ!と、気がついたのは製品が届いた後。

いやぁ、Xperiaが欲しかったんです!!

そう、ただそれだけだった。
いや、それだけじゃない。
一応ハイレゾ対応してるから、音楽だってmicroSDにいれて聴ける!とか考えたし、
デザインもまるまるしてなくって自分好みだし、
し・・・・・・・

えっと、
それぐらいかな。

まぁ、でもめっちゃ気に入ってて、常時私とともにある感じ。
いやぁ、いい買い物したよ。
5万円分使いまくってやる!(潰れない程度に)

Java覚書 ExcelのSLOPE関数をJava化してみる

回帰直線の傾きを求めるExcelのSLOPE関数をJavaで作成してみる。

public class Main {
    public static void main(String[] args) throws Exception {
        // y値のみで、かつ、int型
        int y[] = new int[]{70,80,30,40,50,20};
        slope(y);
        // x,y値で、かつ、float型
        float[][] xy = { {2.5F,10.3F}
                        , {3.0F,24.3F}
                        , {3.2F,30.5F}
                        , {5.0F,42.5F}
                        , {6.1F,53.4F}
                        , {8.9F,48.8F}
                       };
        slope(xy);
    }
    
    // 回帰直線の傾きを算出(int型 y値のみ渡す)
    static float slope(int val[]) {
        float[][] f = new float[val.length][2];
        int i = 0;
        for(int v : val) {
            f[i][0] = (float)i;
            f[i][1] = (float)v;
            i++;
        }
        return slope(f);
    }
    
    // 回帰直線の傾きを算出(float型 x, y値を渡す)
    static float slope(float[][] val) {
    float sumX = 0;
    float sumY = 0;
    float sumXX = 0;
    float sumXY = 0;
    float n = val.length;
    for(int i = 0; i < val.length; i++){
       float x = (float)val[i][0];
       float y = (float)val[i][1];
       sumX += x;
       sumY += y;
       sumXX += x*x;
       sumXY += x*y;
     }
     System.out.println("a : " + (float) (n*sumXY-sumX*sumY)  / (float) (n*sumXX-sumX*sumX));
     System.out.println("b : " + (float) (sumXX*sumY - sumXY*sumX) / (float) (n*sumXX - sumX*sumX));
     return (float) (n*sumXY-sumX*sumY)  / (float) (n*sumXX-sumX*sumX);
    }
}

ポケモンGOをやってみた

というかやってます。
自分の周りの自分より年上の人がやってるって聞いて、「いや、そんなおっさんまでやってたら、そりゃアクセスできませんわ・・・」とか思ってたんだけど、えぇ、齢40過ぎたおばはんもやってます。

自分はiPod Touch(第5世代)で、Y’MobileのポケットWifiでインターネット接続してやってるんだが、もうプチプチ切れて、私の血管も切れそうな勢い。
はじめはGPSを探してます・・・って表示されてプチっと切れるから、GPS関係かな?とか思っていたんだが、京都の山奥(ってほど奥でもないけど)で使ったら、結構落ちないで動いてくれていたので、結局は、

周りに人が多いとプチプチ切れる!

って結論に達した。
なので、例えば早朝とか深夜とかなら、そんなに切れずに使えるんかなぁ・・・と思ったけど、朝起きれません。夜中徘徊する気もありません。

ということで、使い勝手の悪い状態で当分は遊ぶことになりそう。

下手をしてしまったこの1週間

いやぁ、参った。
自分が基本的なことを怠った所為なのだけど。

DBとかのバックアップはとってたのに、WordPress関連ファイルのバックアップをしないまま、WordPressのバージョンアップをしてしまった。
というのも、ここ最近は、エラーもなくバージョンアップできていたからなのだけど。

で、バージョンアップに失敗し、メンテナンスモードから戻らず、挙げ句の果て、FFFTPでバージョンアップしたファイルをアップロードしようとして、サーバに容量が足りないんだぜ!エラー「552 STOR denied: quota exceeded」が発生し、どうにもならん状態で1週間がすぎた。

で、もうダメかなぁ・・・などとブルーになっていたら、wp-content/upgradeのなかに、古いバージョンのファイルがすべてバックアップされているのを発見。
で、そこからファイルを戻して復旧させることに成功した。

おそらくだけど、バックアップとって、バージョンアップさせたら容量が足りなくなったんだろうな。

ということで、アクセスできなかった方々、申し訳ございませんでした。

クーラーをつけた日 2016

今年も、とうとうこの季節がやってきた。

もう、ムンムンしすぎて、気持ち悪くって、寝られない!

ってなことで、クーラーを掃除。
全力で冷やしてもらったが、30分ぐらいしないと、ムンムンが消えなかった。

30分経って、空気はまぁ良くなったが、なんだかやっぱり寝られない・・・

って、あれ?、単なる食べ過ぎだったかも。
(懲りないね・・・)