Personal notes on Implementing autoPublishing mechanism to custom DB table within modx3.

A need. Pre-requisite and assumptions.1. MODX3 installation2. Custom database table inside the MODX installation, which is created from modx database schema. I used migx’s package manager to create/modify one.3. Let’s say that the class name of this dbtable is /MyDB/Model/Mydb3. A custom table schema for modx to construct the table and associated code structure needs the following fields added to the schema. Note the data type for those date fields are all datetime. and not int(20) like original siteContent table fields for page resource. The difference will be dealt in the implementation code. 4. The auto-publish mechanism will mimic the existing code for modResource autopublishing mechanism. This reference code lives …

TV Japan から JMEへ

北米に住んで、長年にわたり親しんできたTVJapanがサービスを2024年3月31日で終了した。 NHKの番組をメインに、民放の番組もちりばめ、NHKの番組の合間にコマーシャルが入るという不思議な環境ではあったが、日本のニュースを見る時など、それなりに重宝していたし、日本のドラマなども楽しめていた。 時の流れというのは止められないもので、NetFlixやPrimeなどで日本のコンテンツもかなりの量が米国からみられるようになり、さらにNordVPNやら、ExpressVPNなどのVPNサービスを使ってあたかも日本からのアクセスしているように見せかければ、本来は海外からは見られないようなコンテンツもこれらのサービスで視聴可能。こういう術に長けたものにとっては従来のTVサービスの重要性は失われていくものなのだろう。 TVJAPANの場合、終了のお知らせは多分2か月くらい前からはじまり、かなり急な話ではあった。 それに代わるサービスとしてJMEというストリーミングサービスが新たに始まった。 3つの24時間チャンネル。 さらに人気ドラマやバラエティなど選ばれたメディアソフトの配信サービスということで、かなり充実しているはずなのだが、TVJapanを見なれてきたものからするとかなり不便に感じる。 何故か。 録画予約ができないんである。 考えてみれば当たり前のことで、今までも録画予約機能はTVJapanが提供していたわけではなく、 TVJapanのチャンネルを供給していたケーブルサービスのDVR機能を使っていたわけだ。 だからJME自体に録画機能がないと文句をいうのはお門違いなわけだが、やっぱり不便である。 もちろんいいこともあって、月額の料金は5ドル下がったし、そもそもTVJapanを入れるためにはケーブルサービスのTVバンドルでのプレミアパッケージを購入しなければいけなかったので、これを解約してベーシックパッケージにしたら、ケーブル局への支払いも60ドル下がったんである。 よって、TAX入れれば月70ドル近い節約になり、なんでこんな金額を今まで払っていたのか、と思わなくもないわけだ。 チャンネルの一つNHKワールドプレミアムは日本のNHKの配信をそのまま流している。もう一つのNHKワールドは外国人向けのNHK放送なので英語が主体。 三つ目のチャンネルはJMEセレクトで、今のところ、同じ番組の組み合わせを6時間ごとに毎日4回放映している。JMEセレクトはニュース7以外のニュースは番組表に入っていないので、ワールドプレミアムを見るしかないのだが何せニュース番組なので見るチャンスが一回しかない。 以前は録画して後でも見れたのだが、今は時間を合わせてみるしかない。 AmazonのFireStickをTVに差し込んでみている場合はFireStickの8GBのメモリーを使って同時録画は可能。 PCやアンドロイド、あるいはIOSデバイスでのストリーミングサービスの録画というのは検索すればいくらでも出てくるが基本的には画面キャプチャーの機能だから、その場での”録画”はいくらでもできる。 ただし、録画予約ということになると、デバイスは最初からオンにして放映しっぱなしの状態での時間を指定してそこからの録画というのはできるとして、JMEアプリを起動してチャンネルを合わせ、キャプチャー開始となると、そんな機能のアプリってあったっけ、という話になる。 やろうと思えば、自分でも作れなくはないという気はするが、APIのとか認証のやり取りの解析の手間を考えるとそこまでのモチベーションはない。 一番良いのは例えばHULUのliveTV で用意されているCloud DVR on HULUなどのような機能をJMEが追加してくれることだと思うが、そういう風に進化してくれないかな? 大昔、まだVCRなんてものが無かった時代は6時から始まる「○○○○○○」が見たくて、大急ぎで部活を切り上げ自宅に戻っていたなんてことがあったようななかったような。 そんな時代に逆戻りしたような感覚。 一方、On demandの部分、見始めて話が面白いと「不適切にもほどがある」をまとめて全話みてしまう(BINGE Watchというらしい)という暴挙をついやってしまうという健康上非常に不適切な行為におよんでしまい、 配信サービスに対する距離感を決めておかないと非常にまずい、と思い始めた今日この頃です。

array_reduceの話

PHPでプログラミングするとき、例えば、以下のようなアレィがあったとする この内容をキーとともにリストアップしたいとき、まず思いつくのがforeachを使ってこう書く方法 ただ、このアレィの複数エレメントを一つの値(この場合は一つの文字列)にまとめるという風に考えるとarray_reduceという関数を使っても同じことができる この関数、単純なArray処理は問題ないとして、Associative Arrayを処理するとなると、はたと困るが、渡すArrayを値ではなく、キーを渡すことで可能となる。これは一つ目の因数にarray_keysを使うことで実現できる。コールバックには因数が二つ付くが、慣習として$curry と$itemという変数名を使う。for 文に$iをつかっているのと同様で、もちろんほかの変数名としても問題ない。$curryは結果を集積していく入れ物。$itemはアレィの各エレメント。上の例ではコールバック関数はアローファンクションを使ってインラインの書き込み。 三つ目の因数($output)は初期値 このarray_reduceの使いかたをネットの検索などで探すと、数字を加算していくような例がよく紹介されているが、上のように文字列アレィの加工にも有効。 さらに、このアレィは関数のアレィでもよいわけで、例えば、複数の関数で同じ文字列の処理を繰り返すような場合、例えば、文字列をトリムしあとhtmlにエンコードしたい場合など、つまり同じ文字列に何度もパスをかけて加工したい場合など のかわりに と書いてしまう技がある。関数が二つなら最初のアプローチのほうがよさそうだが、かかわる関数が増えてくると、コードのメンテナンスは下のパターンのほうがすっきりするよ、とFunctional Programmingの推進者たちはいっているが、さてどうする。

“Why did I not think of this?” moment in MODX 3 snippet development with PHPStorm

This is one of those ‘Aha!’ moments. MODX is one of CMSs (content management system) that I have been using for a long time to maintain my shogi site. Market penetration of this CMS is said to be 0.1%. As of this writing, 43% of of Web sites uses WordPress and no other CMS reach even 10% of market share. (source, w3techs.com . I actually think MODX penetration is much greater than this number, MODX does not leave big footprint to show it’s identity in front of web crawlers. -Many sites I know powered by MODX, including mine – were identified as non-CMS site by w3tech’s tool.— Nevertheless, there is …

Creating a Blog page inside MODX version 3 web site

MODX comes clean slate so there is no ‘ready to use’ provisions for creating Blog style site. One has to set it up using tools available in the CMS. I took an easy way out for my production site by creating blog site using free wordPress service and then feed content to MODX page. with this, the only extra you will need is Spiefeed to handle rss feed from WordPress.  But for purist approach it is certainly possible to setup blog section within MODX using few extras. There are several articles available for creating Blog sites using MODX.  The one shown in the modx official site is somewhat dated, but …

factory function?

JavaScriptやPHPで、Function Factoryという言葉を見るのだが、これは共通するパターンのFunctionを生成するためのFunctionということで、例えば なんてのは、三つのfunctionを定義していても、よく見ると、2,3,4とかける数字が違うだけで、あとはまったく同じパターン。 このようなfunctionの記述を効率よく行うために というような書き方をするテクニック。肝心な部分の記述は一回で済むためコードの管理も簡単になる。 上のコードは返すコードのなかで、$xを認識させるため、 use ( $x )というクローズをいれているが、PHP7.4 からPHPでもアローファンクションが使えるようになり、これだとuse というkeyword無しで、外側で設定されている変数を認識するようになる。ので、 と、ファクトリーの部分の記述がすっきりする。 さらにこの上位のファンクションもアローファンクションで書いてしまうと となり、 プロのコーディングでアローが二つも三つもかさなるような記述が時々でてくるのだが、そろそろ読解がしんどくなってくるので、後で読み返してわかる記述方法としては、よし悪しかなあ。

Week number confusion

Just encountered this problem when I was talking with my colleague.  He thought this week was week 43 but it actually was 42 on my calendar.  Turned out, there are two ways to look at week number. First one is to simply take January first as a start of week one.  In case of 2021, January 1 is Friday.   depending of what you think as a first day of week, this year’s week 1 is only 2 days long or 3 days long, then Week 2 will start on either January 3rd(Sunday) or January 4th (Monday) Excel function =WeekNum()  uses this approach. Then there is a week number definition by …

Hyperbolic function on Casio fx-991EX

There is no dedicated HYP key to call up cosh() or sinh() function in Casio fx-991EX.   This is a stern contrast to Casio fx-115ES keyboard.  It does not mean you cant use the hyperbolic funtction on fx-991EX Hit “OPTNOption” key then select “Hyperbolic Func” You need to be in “Calculate” mode to see this option, so for repeatability, Hit menu, select 1.   Hit OPTNOption, select 1. This calculator is obviously not RPN.  The calculator uses “natural notation” format.  It basically let you create equation and then evaluate the answer.  No concern on intermediate calculation.  Just answers, and it is really a wonder that you can get those devices for less …