JavaScriptのmatchの結果を必ず配列にする


正規表現便利ですよね。JavaScriptにもあって、matchとかよく使ってます。

(速度はお察し)

matchでヒットした数を調べたいことって、よくありますよね。

で、こうやって書いたり。

var matchNum = "hogehogahuga".match(/fuga/g).length;

そして死ぬ

見つからなかったらnull返してくるんだよね。しかたないね。

だからといって

var matches = "hogehogahuga".match(/fuga/g);
var matchNum = 0;
if (matches !== null) {
    matchNum = matches.length;
}

長くて手が疲れるしメンドイし変数増えるし、わざわざnullチェックしなきゃならんとか

とりあえずダサい。真面目君的な何か。

で、モノグサな私はなんとか短くできねーか?と調べて

var matchNum = ("hogehogehuga".match(/fuga/g) || []).length;

短くなりました。

他の言語的には「なにこれ?booleanじゃねーの?」と思うんですけど、

JavaScriptだと、これでオッケーなんですよ。

ちなみに裏技でもなんでもなくて

論理積と論理和で代入する値を選択する

で解説されているようにECMAで規定されてる動作なんですよね。

素直に書いた方が何してるか判り易いんですけど、ショートコーディングする技術の一つとして

覚えておいて損は無いかと。

CakePHPを業務で使用した感想


とりあえず、CakePHPを使って製作した物が無事に納品。(納品自体は先々月ぐらいに終ってた)

ただいま絶賛、現地試験中。今のところ問題ないのか使ってないのかは知らない。

ちなみに実製作期間は私一人で約3週間。画面数は10画面程度で帳票が3つありといった感じ。

UI周りはjQueryUI。(出来る人ならもっと早いのかな?)

それにしても、製作開始時点での最新バージョンが2.3.6だったのに既に2.4.2とか、

バージョンアップ早すぎぃ!

続きを読む

読書記録


Amazon Kindleが便利すぎる。さくっと購入で好きなときに読めるって最高。

ってことで、読書記録。

読了

  1. 開発ツール 徹底攻略(WEB+DB PRESS plus)
    • 一応、全部読んだ。個人的にはVim派
    • GitとGitHubにはお世話になってます。
    • Jenkinsは未だに有効な使いどころが見つかってない。
  2. 博士の愛した数式
    • 映画をHuluで見たので、小説も。
    • 想像力が十分な人は小説だけ読めば良いかも。
    • 映画の出来は悪くないけど、小説を読むと物足りないと思われる。
    • 個人的には映画でイメージ補強して、小説読むといい感じ。
    • 全編通して大きな山も谷も無いのに、読み応えがありほっこりする小説。
  3. その日のまえに
    • 癌と死がテーマの短編集だけど重くはない。
    • 涙腺弱い人は注意。
    • 短編集だけど、最後まで繋がってる。
    • 逆に繋げるために、少し無理してるかな?と思う部分も・・・。
  4. 高熱隧道
    • 実際にあった隧道工事を元にしたフィクション小説。
    • とにかく泥臭い。史実を元にしてるだけに余計に。
    • 自然も怖いが人も怖い。
    • ブラック企業に近い何かが垣間見えたり。
    • インフラに少しだけ関わってる端くれとしては、人ごとではなかったりもする内容。
  5. ふわふわの泉
    • 某動画サイトで有名な人の作品
    • 話の展開は結構速い。
    • 下地がしっかりしてるので、展開に無茶があるはずなのに、そこまで違和感はなかったり。
    • さらっと読めるので暇つぶしに読むには丁度いい軽さ。
  6. 新世界より
    • 後で知ったけど、この人の作品である「黒い家」は映画で見て、「青の炎」はハードカバーで読んだことがあった。
    • 文庫版は上中下の3巻構成。とても長い。
    • 長いけど、一度嵌ればグイグイと引き込まれる。
    • 展開の速度も適度で、テンポが良いので読んでても疲れない。
    • いい具合にダークな世界観。
    • 根っこはボーイミーツガールなんだけど、それを取り巻く環境が・・・。
    • 漫画もアニメもあるので小説は苦手って人はそちらの方がいいかも。
    • 小説だとモロな描写は漫画とアニメではどうしたんだろ・・・。
    • ただいま2周目。2周目だと細かな描写に伏線があることに気づく。

読書中

  1. 達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ
    • まだ全然読めず。
  2. ずっと受けたかったソフトウェア設計の授業
    • こちらも全然読めず。
  3. SoftwareDesign 総集編 2001-2012
    • 少しは読もうとしよう。俺。

積読

  1. ANDROID HACKS
  2. スカイ・クロラ
  3. ナ・バ・テア

すでに積読のは読む気すら起きない。最近、技術書を読んでないので少し興味がある技術を仕入れよう。

FL StudioのMac OS X Betaが出たので試してみた。


ちょうど先日、FL StudioのMac OS X Betaが出たので入れてみた。

FL Studio Mac OS X beta

動画の手順通りに、やってもしばらくインストールが上手くいかず。

結局、Control押しながらクリックで開いたら上手くいった。

その後のRegKeyとかは特に問題なし。

RegKeyの登録については、プログレスバーが動きっぱなしになるけど、

待たずに消してFL Studioを再起動でOK。

試した限り、最初から入ってる、HarmorとかDrumaxxとかは問題なく動作。

RegKeyの登録できればちゃんと試用制限も解除されてる。

Groove Machineは手順通りにインストーラーで入れてみたものの、一覧に出てこなくて駄目っぽい。

スタンドアローン型は現状、無理なのかな?

Slayer2のVSTについては、インストールして一覧に出たものの、動かそうとすると駄目。

動画では、WindowsのVSTをダウンロードなので、その通りにしたはずなんだけど・・・。

後、最大化によるフルウィンドウ化が出来なかった。これは、やり方ありそう。

(デモビデオではフルウィンドウになってるっぽい)

VSTに関しては、素直にMac版の方を使えるようになって欲しいんだけど、

ラップして動かしてる以上難しいか・・・。

オーディオI/FとかMIDIキーボードは、繋げるの面倒だったので試してません。そのうち試す。

SQLで、行内容をコピーしながらINSERT


お仕事で、テーブル上に行追加を行う必要があったのですが、追加する数にゲンナリしつつ、

何とか楽チンに出来ないものかと考えてました。

一部情報を変更した既存行をコピーしたかったので、ちょろっと探してそれを参考に作ってみました。

なお、MySQL 5.5で動作確認してます。(仕事の方はPostgreSQLなので、ちょっとだけ違う)

こんな感じのテーブルがあって

table

カラムのip_adrとuser_nameだけ変えて追加したい場合(idはオートインクリメント)

INSERT INTO test 
SELECT NULL AS id, '255.255.255.255' AS ip_adr, 
'myname' AS user_name, mail_adr, group_id 
FROM test WHERE ip_adr='127.0.0.1';

こんな感じ。で、次のように追加される。

table2

で、更にip_adrの一部を変更して登録したいって場合。

INSERT INTO test 
SELECT NULL AS id, 
REPLACE(ip_adr, '255.255.255.', '255.255.254.') AS ip_adr, 
user_name, mail_adr, group_id 
FROM test WHERE ip_adr LIKE '255.255.255.%';

で、最終的にこんな感じ。

table3

これだと、行数少ないので威力が分かりにくいですが、カラムの大部分をコピーしたくて、

微妙に違う行を沢山作りたい場合は役立つかなと。

頭の体操に手でゴリゴリと書くのも悪くないもんです。

PHP5.5のインストールで何故か嵌る


今日はほぼ1日、実機に環境構築を励んでいました。

普段ならIISをインストール後にチョチョイと弄って、対象フォルダにIUSRとIIS_IUSRSの権限を

与えて、必要なアプリをインストールだけで済むんですが、今回の実機は

Windows Server 2012!(ドンドンパフパフ)

ま、まぁ、サーバOSだからMetro UIじゃないよね。はははは・・・。

 

 

 

Metro UIでした orz

(今はModern UIって言うみたい。)

最後の方には慣れましたが。

 

サーバ管理については割りと使いやすくなったように思います。

地味に有り難かったのが、ODBCの設定。7とか2008だと、32bitのODBC登録はSysWOW64まで

探しにいく必要があったのですが2012は管理ツールに2つとも登録済み!

しかも、32bitで登録した分を64bitのODBC管理画面でも確認できる!(削除等は出来ませんが)

IIS8はWebMatrixと連携とる形になってるようです。ネットに繋げる事が出来ないので試せませんが。

全体的にサーバOSとしては良い感じです。(ただ、Metro UI、お前はだm)

 

で、本題。

続きを読む

続・悪戦苦闘CakePHP


引き続き悪戦苦闘中です。はい。

恐らく、作り方が悪いだけなんでしょうが、直近で嵌った事が一つ。

 

elementでJsHelperを使って、inline=>falseにしてもfetchしてるところに

展開してくれない。

 

してくれないんです。

これ、なんでなんですかね?バージョンのせい?(確か2.3.6ぐらい?)

レイアウト中に仕込んだエレメントだから、Controllerに対するViewが対象のfetchでは展開かからない?

そもそも、使い方が間違ってる?

ためしに、scripts_for_layoutも入れてみましたけど効果なし。

inline=>trueで展開かければ良いだけの話なんですが、どうにもHTMLソース見たときに

 

うげげ

 

ってなってしまって、もんにょりしています。

試した限りではレイアウトも同様の感じでした。

ViewにJsHelper部分を仕込むとかすれば回避できそうなんですが、それはそれで、実働部分とコードが

切り離されて、もんにょりしちゃうんです。

他にはjsファイルで外に吐き出すって手もあるんですけど、それだと要素idの変更時に

自動追従してくれないのが、やはり嬉しくないのです

何か良い方法があれば知りたいです。

作りを変えるべきなんですかね?

悪戦苦闘CakePHP


仕事でCakePHPを使い始めたのですが、中々に難しい。

規約に沿って作れば楽なんでしょうけど、なにぶん規約ガン無視で作ってるので。

本来なら、規約に合わせて設計して使う物とは理解してるんですけど、他との絡みが。

(それを抜きにしても、オレオレMVCになってるのは自覚してます。多分。)

後、使い始めて思ったのが、Viewの仕組みが便利。

ある程度、レイアウトとかエレメントを準備して構造が固まれば、残りのViewは使いまわしで

ガンガン作っていけるのが嬉しい。

ヘルパーとか駆使出来るようになると、開発スピードもっと上がるんでしょうけど、使いどころが

イマイチ掴めず。

まぁ、それ以上にCSSや配色で七転八倒してるんですが。

そして、「センスが無い」とか、また言われるんだろうなぁ。…( =ω=)

CakePHPで接続先のDBをテーブルの内容を見てから変更(邪道)


環境に合わせて、DBの接続先を変えたいことはよくある話で、方法とかも検索すればサクサクと

ヒットします。

仕事で必要になったので、情報漁ってみたところ、環境変数、IP、直書きと色々見つかったのですが、

自分の探し方が悪いのか、どうしても見つからなかったのが、DBの内容見てから接続先を変える方法。

色々、試行錯誤したらなんとか出来ましたが、方法としては恐らく邪道も邪道かと。

(過去の資産や様々なシガラミ関係でこうなったので、本当なら環境変数使いたかった)

ってことで、ざっくりとサンプル。

続きを読む

気になる技術


個人的に気になってる技術。情報古い?知らんがな(´・ω・`)

Polymer

http://www.polymer-project.org/

乱暴に説明するとHTML5で採用予定のWeb Componentsを現行のモダンブラウザ上でも使えるように

しちゃうぜ!ってライブラリ。

(実際はplatform.jsがWeb Componentsを擬似的に実装して、その上にPolymerライブラリが居るらすぃ)

Web Componentsとかの詳しい解説は次の記事が詳しいのでそちらを参照してください。

個人的にはJava BeansのHTML版かな?って印象です。こと、Web開発に関しては

フレームワークやライブラリが乱立して、まさに群雄割拠の状態なのでWeb Componentsによって

フロントエンドだけでも記述が統一されれば、開発者も利用者も嬉しいことになりそうです。

(まぁ、バックエンドはまだまだ各言語の殴り合い、つーか共存が続きそうですが・・・)

フロントエンドからバックエンドまで面倒見てるので、覚える事が増える一方で泣ける。

 

SVG

http://www.w3.org/Graphics/SVG/

仕事柄、機能実現に必要だったので使ってますが、個人的には

もっと流行れ!

と思ってます。まぁ、レガシーブラウザが生き残ってる限り、一般的に普及するのは

まだ先でしょうけど・・・。

一応、レガシーブラウザ(ってか主にIE9以前)に対応するライブラリとしてRapaёlという

ライブラリがあります。

http://raphaeljs.com/

そこそこ使い勝手も良いんですが、Visioで引いた図面をSVG変換して、GitHubとかにある

既存の変換ライブラリ使ってRapaёlの形式で表示しようとすると、大変なことになります。

ってか、なりました。

結局、あちこち参考にしながら自分で変換処理をシコシコ書きました・・・(´ノω;`)

後は、VMLの制限(ってかバグだよね・・・)受けたりとか、処理速度的な問題

(チューニングである程度は改善できるけど)なんかもあるので、ションボリすることは多いです。

ってか、レガシーブラウザ(むしろIE9以前)なんて滅びれば良いのに。