脳みその中身

Inside of My Brain

脳みその中身 - Inside of My Brain

FileMaker でソート順フィールドを見せずにソートされた値一覧を作る方法(応用)

はじめに

「FileMaker でソート順フィールドを見せずにソートされた値一覧を作る方法(基本)」というエントリで言及した手法には、ソートされるレコード数が100を越えないこと…という制限があります。
※ テキストフィールドの索引は最初の100文字という FileMaker の仕様上の制限に因ります。

その対策案としてこのエントリをアップします。

なお、「なにがうれしいのか?」「目的は?」といったことについては、「FileMaker でソート順フィールドを見せずにソートされた値一覧を作る方法(基本)」をご覧下さい。

基本の考え方

上記の基本編での解法の考え方は…

(値一覧に表示される)ソートしたいフィールドの頭に、「見えない(けれど存在する)文字」を(ソート順フィールドの値で指定された個数分)つけるように設定されたフィールドを、値一覧設定の [2番目のフィールド]として指定し、([2番目のフィールドの値のみを表示] にチェックをつけて)2番目のフィールドでソートしてやることで、任意のソート順フィールドの値で指定された順番で、値一覧をソート表示する

…というものです。

値一覧の設定

問題点の確認

ただし、この方法ですと、ソートしたいレコード数が100を越えると…
イコール、ソート順フィールドで指定されている値が100を越えると…
つまり、「見えない(けれど存在する)文字」の数が100を越えると…

「テキストフィールドの索引は最初の100文字まで」という FileMaker の仕様に因って、破綻してしまいます。

解決法の理屈

そこで、最初の100文字を使って、より多くのレコード数に対応するために…

最初の100文字を2進数にしてしまうことで解決します。

二進法では通常 0 と 1 という2種類の文字で表されますが、0/1の代わりに別のふたつの文字を使って代用します。

使える文字の条件は…

  • 見えない文字であること
  • 文字コード(Unicode)的に(見える)通常の文字より大きなコードであること
  • (二進法の)0 の代わりに使われる文字は、1 の代わりに使われる文字よりUnicode 的に小さい値で表される文字であること

ここいらあたりを、社本さん(Facebook) と話していたら、社本さんがデモファイルのUpdateまでしてくれました。

了承を頂いたのでコチラにアップしておきます。

社本氏版デモファイル

社本氏のデモファイルの説明

すでに基本編で使っている「見えない文字」は 通常 BOM と呼ばれる [ZERO WIDTH NO-BREAK SPACE] というもので、Unicode の 65,279番目の文字なので、FileMaker 的には… Char (65279) と表すことができます。

デモファイルでは、[ZERO WIDTH NO-BREAK SPACE] を 1 の代わりにし、 [ZERO WIDTH SPACE](Char (8203))を 0 の代わりにした…二進法表現を、ソートしたいフィールドの値の頭にくっつけています。

このことにより、索引の制限文字数100文字を使って、2の100乗(1.2676506e+30)つまり論理的には、126穰7650秭6002垓2822京9401兆4967億320万5375 までを表すことが可能となりますから、実使用上、無制限と同じような話になります。

ここいらのことをデモファイルでは、ZeroWidthCharAsBinaryNumeral というカスタム関数に集約しているので、自分のソリューションに簡単に転用できます。

ZeroWidthCharAsBinaryNumeral

 

FileMaker Go v14.0.1 においての問題

追記(2015/06/17 23:21:52)

FileMaker Go 14.0.1(現行)では以下の条件で値一覧が開いたときに頭の文字が切れる現象が確認されました。

再現確認条件:

  • FileMaker Go v14.0.1(v12.0.8 / v13.0.9 では再現せず…つまり問題なし)
  • iOS 8.3(他バージョン未確認)
  • iOSデバイス > [設定] > [画面表示と明るさ] > [文字サイズを変更]で、中央より右にスライダーを設定
    ※ 下図は中央にスライダーがある状態

設定 > 画面表示と明るさ > 文字サイズを変更

 

問題の内容:値一覧を開いたときに、選択肢テキストの頭が切れる。
※ 下図は、スライダーを右いっぱいに設定した場合

対処方法:上述の [文字サイズを変更] のスライダーを中央より右にしない

当該問題発覚についての詳細経緯は、当該Facebookエントリ のコメント欄をご覧下さい。

Thanks to 若林さん / 社本さん

BiND for WebLIFE というアプリ

BiND for WebLIFE(長いので、以後、BiND と呼ぶ)というアプリケーションがある。Mac 版 Windows 版 の両方がリリースされている。
バージョンは版を重ね、2014/10/02 現在 BiND for WebLIFE 7 が販売されている。

いわゆる、Webサイト作成ツールである。
HTML だの CSS だのがわからなくても、(用意されているテンプレートによって)ある程度そこそこのサイトが手軽に作成できる。

サイトコンテンツ…つまり、伝えたいことはあるもののサイトを作成するのに必要とされる小難しい HTML/CSS/FTP などの知識がない…という方にピッタリのツールである。

かくいう僕も、(予算的な問題から)それで事足りる場合のみ、顧問先に BiND を勧めることもある。

コンセプトは良いのよ。
目の付け所はね。
しかし、コンセプトモデルの域を脱していない。

(バージョンアップに伴う良化は一部認められるものの、予期せぬデアクティベーション問題や、コピペが不安定・マウスでの選択中にエリア外にマウスがでるだけで選択が解除される…などの致命的な問題は改善が見られない。

BiND の悪口を言うのももういい加減飽きたので、かつて、僕が Facebook に投稿した BiND 関連のポスト画像の一部(2012 – 2013年分)を以下にまとめる。
※ 各々の画像のクリックで、Facebook の 当該ポストが開く。
※ 今年になってからの分は事情により割愛。


 

2012/04/18 投稿

2012/04/18

 


Continue reading

wkpdf on Mavericks

ココで言及したように、wkpdf を使って、指定した URL のレンダリングイメージを出力させるっつーのをよく使うですよ。

んで、今更ながらメインマシンを Mavericks にアップデートしたわけ。
したっけ、使えなくなったん。

結論として、色々と複合的な問題が介在したわけですが、根源的な問題は…

Cannot load RubyCocoa library
wkpdf requires that RubyCocoa is installed, which is shipped by default since
Mac OS X 10.5. If you use Mac OS X 10.4, you have to install RubyCocoa
yourself from http://rubycocoa.sourceforge.net/HomePage

という話。

RubyCocoa library が読めねーよ!ボケ!入ってないんじゃね?

とおっしゃってるので、調べてみた。

…でみつけたページがコレ↓
MacOSXでwkpdfを使ってみた | IT Office Nishimiyahara
「wkpdfはsystemのrubyを使え」っちうことだ!と断言してます。

ただこれは、Mavericks な情報ではないので、もーちと探すと…

Support for Mac OS 10.9 Mavericks · Issue #45 · plessl/wkpdf · GitHub

↓ここから Mavericks 用の RubyCocoa 落としてきてやってみたっつー人がいる。
RubyCocoa – Browse /RubyCocoa/1.1.0 at SourceForge.net
結果 NGだと。

すると、おっさんその1が…

  1. Install RubyCocoa
  2. sudo /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/gem install wkpdf
  3. Edit the first line of /Library/Ruby/Gems/1.8/gems/wkpdf-0.6.11-universal-darwin/bin/wkpdf to point to/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
  4. Use /Library/Ruby/Gems/1.8/gems/wkpdf-0.6.11-universal-darwin/bin/wkpdf

という解決策を提示して「うまくいった!」というヤツも出てきた。
でもさ、Mavericks の システムの Ruby のバージョンって…

$ ruby -v
ruby 2.0.0p451 (2014-02-24 revision 45167) [universal.x86_64-darwin13]

なんだよなー…まいっか。…で、動いた。

直接 /Library/Ruby/Gems/1.8/gems/wkpdf-0.6.11-universal-darwin/bin/wkpdf を指定して使う分にはかえって良いかも。
wkpdf だけ フルパスで明示的にシステムの 1.8 使うっちうことで。

/Library/Ruby/Gems/1.8/gems/wkpdf-0.6.11-universal-darwin/bin/wkpdf --source 'http://foo.com/' --output '/private/var/folders/hs/w0gjf27167q2y39xls1m8nsm0000gn/T/S10/140801_111827_bison.pdf'

とかクソ長くなるけど、スクリプトに埋めるからこれでいいや!

参考URL

ときには また逢う約束もせずに情報にサヨナラしてみよう

情報の豪雨

スゴい勢いで降る雨を “rain cats and dogs” というらしいが、目一杯蛇口を捻ったシャワーのよう恐ろしい量の情報が降り注いでいる。
八月の夕立ならすぐに止むだろうし、都会のゲリラ豪雨のなら電車で2ー3駅も移動すれば逃れることができるだろうが、そうはいかない。
友人とよく “wikiの旅” なんてふざけるけれど、調べ物で WikiPedia に行くと、芋づる式の知識欲に身体が乗っ取られる。

検索の為の記憶

「あとで必要になるかもしれない」「有益な情報満載のサイトだから」そういって『お気に入りにブックマーク』というのを覚えたのは90年代初頭。
Evernote や はてな を使って蓄積したり整理したり。
強迫観念的だね。
「忘れちゃ大変!」とか思うのね。ググって1発でみつけたページなのに。
そのうち「なくなっちゃ大変!」とページのキャッシュコピーをストアし出した。
必要になったときに検索できるように。
便利な手段を乗り換え乗り換えしながら。
今度は「どこに何を記憶させたか」を記憶させないと。

そもそも本物の脳みそって

でもね。
忘れるじゃない?
本物の脳みそは。

そうコンピュータだのITだのって人間の脳みそに見立てた機械なんだからさ。
本物は忘れる。
いや、待ってくれ。コンピュータは、忘れないから素晴らしい?
コンピュータって何するもの?
記憶?思考?発想?作業?仕事?
これらの中で、人間がするエリアのもので代表的なのは…発想、そして思考。

ねえ、ものを考えるのにどれだけの材料が必要?

システムの本当の役割

僕らは、コンピュータに日頃僕らがしている仕事をさせるためにコーディングする。
上手にサルに仕事をさせられるように仕込む。
でも、それってそれ自体には価値はないよね?
それのお陰で浮いた時間で人間が脳みそを使って何かを生み出さないと。
できあがったシステムがあるから、ふだんと違う景色で情報を見ることができて、ドラスティックなアイデアが湧いた…とかまでいってはじめて意味がある。

何が言いたいのかというと…
本末転倒じゃないのかな?ってこと。
思考や発想の為の脳みその空き領域を、記憶し続けるという作業のために逼迫されてしまうことってさ。
やっぱ本末転倒な感じがする。

フローの変更

「これって大事かも」「あとできっと必要になる気がする」
そんなとき、たまには、サヨナラしてみよう。
名前もメアドやケータイも聞かないで。
もう意図的に「サヨナラする」というプロセスを明示的に入れていかないと、僕ら、もう末期なのかもしれない。

そう。思ったんだ。
知りたがりも大概にしろ!って。

やってみたら分かったこと(結論)

だから少し前からそうしてみている。
メモらなきゃ!って思ったとき…その多くの場合、いったんサヨナラを呟いて⌘W。

そしてほんの短い間でわかったこと。
・いったん忘れても良い情報が存在する(縁があればまた出会える)
・むしろ忘れるべき情報が存在する(検討段階では必要な情報は、フェーズが変わって 実行段階になると不要どころか邪魔になる)
・情報を記憶蓄積しているつもりで忘れてたってこと。(Evernoteには溜まっていくけど脳には出会った記憶すら残らない)
・覚えるためには、それ相応の手間と時間が必要だってこと。(手間なくメモると間違いなく忘れる)
・歳をとると「覚えるための手間や時間」の効率がやたら悪くなるってこと。
・逆に歳をとって良かったのは、たいがいの情報「は脳内で予見できるもの」と大差がないってこと。
・その情報がなければこんな発想や思考出来なかった!なんて情報は記憶しようとしなくても覚えているということ(すこぶる効率が良い)
・そしてその情報によって脳内で起きた化学反応こそが大切であり、その情報それ自体には何の価値もないこと。
・メモるなら、自分の脳内の化学反応の方

Mavericks に上書きアップデートで、FileMaker Server 13 の Webサーバが起動しなくなった件

表題通りです。
以下時系列に…。
メインマシン(Mac Pro 2009 Early)を Mountain Lion から Mavericks にアップデートしました。
山ライオンのときには問題なく動いていた FileMaker Server 13 の Webサーバが動作していません
※ Database Server や Admin Console は無事

おまけに、認証エラーが出ています。(FileMaker のクライアントでは、ID/Password も間違えなく入力され、かつ、何のエラーもなくアクセスできています)
wpid-140704-0002-2014-07-4-13-04.png

で、Facebook で実況&グチ
https://www.facebook.com/stbison/posts/10203949157307430

(結局は、上記の FBエントリのコメントで降臨してくださった新居さんの有益なアドバイスで解決しました。)

では、以下にその経緯を…。
――――――――――――――――――
まずは… lsof で httpd 関連プロセスと使用ポートを確認。

$ sudo lsof -i | grep httpd
Password:
httpd       271           root    4u  IPv6 0xxxxxxxxxxxxxxxxx      0t0    TCP *:ddi-tcp-1 (LISTEN)
httpd       271           root    5u  IPv4 0xyyyyyyyyyyyyyyyy      0t0    TCP *:* (CLOSED)
httpd       289           _www    5u  IPv4 0xyyyyyyyyyyyyyyyy      0t0    TCP *:* (CLOSED)
httpd       610           _www    4u  IPv6 0xxxxxxxxxxxxxxxxx      0t0    TCP *:ddi-tcp-1 (LISTEN)
httpd       610           _www    5u  IPv4 0xyyyyyyyyyyyyyyyy      0t0    TCP *:* (CLOSED)
httpd       611           _www    4u  IPv6 0xxxxxxxxxxxxxxxxx      0t0    TCP *:ddi-tcp-1 (LISTEN)
httpd       611           _www    5u  IPv4 0xyyyyyyyyyyyyyyyy      0t0    TCP *:* (CLOSED)
httpd       612           _www    4u  IPv6 0xxxxxxxxxxxxxxxxx      0t0    TCP *:ddi-tcp-1 (LISTEN)
httpd       612           _www    5u  IPv4 0xyyyyyyyyyyyyyyyy      0t0    TCP *:* (CLOSED)
httpd       613           _www    4u  IPv6 0xxxxxxxxxxxxxxxxx      0t0    TCP *:ddi-tcp-1 (LISTEN)
httpd       613           _www    5u  IPv4 0xyyyyyyyyyyyyyyyy      0t0    TCP *:* (CLOSED)
httpd       614           _www    4u  IPv6 0xxxxxxxxxxxxxxxxx      0t0    TCP *:ddi-tcp-1 (LISTEN)
httpd       614           _www    5u  IPv4 0xyyyyyyyyyyyyyyyy      0t0    TCP *:* (CLOSED)

(一部 伏せ字)

_www がやたらいますが、僕の環境では、FileMaker Server 系のプロセスは、bison(今のログインユーザ = 自分)が稼働実行するように設定していますので、_www のところは bison となるプロセスでなければおかしいわけです。つまりこれらは、FileMaker Server の Apache ではないということ。
とりあえず、こいつらを片っ端から殺します。
Activity Monitor.app で、httpd がらみでフィルタした結果とほぼ同じプロセスのはずですので、そっちから終了させてもいいでしょう。

再度、sudo lsof -i | grep httpd を見ると、全てのプロセスが消えたことが確認できました。
――――――――――――――――――
新居さんのブログエントリ『FileMaker Server 13とOS X ServerのWeb | Blog by msyk』によると、

FMSのhttpdのスタート、ストップ、そして設定の反映は、次のようなコマンドを打ち込みます。

sudo touch /Library/FileMaker\ Server/HTTPServer/start
sudo touch /Library/FileMaker\ Server/HTTPServer/stop
sudo touch /Library/FileMaker\ Server/HTTPServer/graceful

とのことなので…

$ cd /Library/FileMaker\ Server/HTTPServer/
$ sudo touch stop
$ sudo touch start

してみましたが、相変わらず http://localhost/ でアクセスできず。
――――――――――――――――――
次回からログイン時に load しないように、launchd のリストで unable にしとこう…と、
httpd な plist を検索。

  • /System/Library/LaunchDaemons/org.apache.httpd.plist
    /Library/LaunchDaemons/com.filemaker.httpd/start.plist
    /Library/LaunchDaemons/com.filemaker.httpd/stop.plist
    /Library/LaunchDaemons/com.filemaker.httpd/gracful.plist
  • それっぽいのは、1行目。
    ※ こいつは、/usr/sbin/httpd -D FOREGROUND を叩いてたみたいです。
    (他は FileMaker 系)

    $ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

    を実行。
    ――――――――――――――――――
    ここで、新居さん降臨。

    $ /usr/sbin/apachectl configtest
    httpd: Could not reliably determine the server's fully qualified domain name, using bisonSSD.local for ServerName
    Syntax OK

    を試したあと、「 HTTPServerの下のlogsにログは残っていないのかな?」と宣う。

    あーそっか…と
    /Library/FileMaker Server/HTTPServer/logs/
    で、最も更新時期の新しいエラーログ “ httpdctl.err”
    を見てみると…

    Syntax error on line 56 of /Library/FileMaker Server/HTTPServer/conf/extra/httpd-ssl.conf:
    SSLPassPhraseDialog: file ‘/usr/bin/fmsgetpasskey’ does not exist

    のオンパレード…(;´∀`)

    “/usr/bin/fmsgetpasskey” というファイルは確かに存在していません。
    Mavericks で FileMaker Server 13 がつつがなく動いてる MacBook Air の同階層を覗いてみると…当該ファイルは確かに存在しているのですが、どうやら Symbolic Link の模様。
    ということで… 実体ファイル: /Library/FileMaker Server/Database Server/bin/fmsgetpasskey から /usr/bin/fmsgetpasskey という Symbolic Link を作りました。

    そして改めて、

    $ sudo touch /Library/FileMaker\ Server/HTTPServer/stop
    $ sudo touch /Library/FileMaker\ Server/HTTPServer/start

    FileMaker Server の Apache が無事動き、http://localhost にアクセスできました。
    ――――――――――――――――――
    こう考えてみると、fmsgetpasskey という認証鍵ファイルがみつからないという立派な “認証エラー” ですから、やたらと出ていた認証エラーも首肯できます。

    教訓:ログ見ろバカ。
    新居さん、ありがとうございましたん。m(_”_)m

    …にしても、OS のアップデート(アップグレード)で Symbolick Link が消えるとか…どなの?ありなの?
    q( ゚д゚)pブーブーブー

    mixi プレミアム会員 解約方法(最新)

    mixi ついぞ入ってないからプレミアム登録してたの忘れてた。登録時のえびす顔・解約時の閻魔顔…解約画面がなかなか出てこない。なんとか解約完了したので、プレミアム登録解約したい方は、キャプチャをごらん下さい。(2014/03/30 20:02:45現在の方法)

    何故か「登録する」を選ぶ…(解約したいのに…です。故意?

    How To Register DNS Server in NetworkSolutions.com

    networksolutions.com で、ドメインの DNS を変更しようとすると、does not exist とか叱られました。
    随分前ですが、登録した憶えがあるのですが…。
    まあしようがないので、再度登録しようとすったもんだしたときの覚え書きです。
    ※ 自分が Networksolutions.com で管理しているドメイン外の DNS は登録できません

    1. Click “MANAGE ACCOUNT”

    “MANAGE ACCOUNT” をクリック

    https://www.networksolutions.com/ に行く

    2. Log in

    ログイン情報を入力してログイン

    3. Click “My Domain Names”

    “My Products & Services” タブが選択されていることを確認し、

    “My Domain Names” をクリック

    4. Click “Manage Name Servers”

    ページ下部の “Manage Name Servers” をクリック

    5. Enter the name server you want to create or edit and click GO

    “Enter the name server you want to create or edit” の下にあるテキストエリアに追加もしくは修正したいネームサーバ名を入力し、Goボタンをクリック

    ※ その下 “Select from the options below to manage your name servers” の下にあるリストが現在登録されているネームサーバ

    6. Enter the IP address for your new name server, once this is entered click GO

    テキストエリアに当該ネームサーバの IPアドレスを入力して、Goボタンをクリック

    7. Click “Save Changes”

    確認して、”Save Changes” をクリック

    FileMaker でソート順フィールドを見せずにソートされた値一覧を作る方法(基本)

    — 2015/06/16 09:41:05 追記—

    このエントリは、「FileMaker でソート順フィールドを見せずにソートされた値一覧を作る方法(基本)」です。

    この方法ですと、ソートされるレコードの数が100を越えた場合(テキストフィールドの索引は最初の100文字という FileMaker の仕様上の制限のため)破綻します。

    この問題の対策済みの方法を「FileMaker でソート順フィールドを見せずにソートされた値一覧を作る方法(応用)」にアップしました。
    あわせてご覧下さい。

    — 2015/06/16 09:41:05 追記おわり —

    すでに、バージョン 13 だというのに、FileMaker において値一覧だけは洗練されないままです。
    値一覧の候補値を動的に扱うためには、[フィールドの値を使用] を選ばざるを得ませんが、値一覧として表示させたときのソート順(並び順)をコントロールするためには、2番目のフィールド(ソート順フィールド) を表示させないことは、FileMaker 標準のオプションではありません。

    ソートされた値一覧の標準例

    標準の値一覧(ソート順フィールド値が表示されしまっている)

    ソート順フィールドの値が表示されず、かつ、正しいソートで並んだ値一覧

    ソート順フィールドの値が表示されず、かつ、正しいソートで並んだ値一覧

    このニーズは、BOM(Byte Order Mark)をソート順の数分だけ繰り返したものを、表示させたいフィールドの頭に付けた値が入るような計算フィールドを作成し、その計算フィールドを、値一覧の2番目のフィールドとして定義してやることで解決します。

    ※ 先日(2013/12/21)の FM-Tokyo の LT 、先週(2013/12/28)の FM関西などで言及したものです。

    サンプルファイル と、具体的な手順をアニメGIFにしたものを置いておきます。(下の画像をクリックすると、Animation GIF が開かれ、手順が動画で見られます)

    サンプルファイルのカスタム関数ふたつを自分のソリューションファイルにコピペします

    サンプルファイルのカスタム関数ふたつを自分のソリューションファイルにコピペします

    ご自分のソリューションファイルの、値一覧用テーブルにソート用の計算フィールドを作成します。

    ご自分のソリューションファイルの、値一覧用テーブルにソート用の計算フィールドを作成します。

    ご自分のソリューションファイルに値一覧を定義します。

    ご自分のソリューションファイルに値一覧を定義します。

    値一覧をセットしたいフィールドのあるレイアウトで、そのフィールドに値一覧をセットします。

    値一覧をセットしたいフィールドのあるレイアウトで、そのフィールドに値一覧をセットします。