Google Chrome 37でウェイト名付きフォント名を指定できなくなったぽい

Windows 8 Pro 64bit版環境下での話なのですが。

@font-faceを使用してウェイト別に異なるフォントを割り当てる (太字に別フォントとか) - ymknの日記のようにして、太字の文字が引き延ばしのBoldではなく適切なウェイトの書体で描画されるようにしていたのだけど、Chrome 37からこれが効かなくなった。

ユーザスタイルに限った話ではなくて、Chrome本体のフォント設定でも、ウェイト名付きで表示されているフォント(M+とか)が効かなくなっている(リストから選んでも前の書体から変更されない)。

これって仕様変更なのかなあ。適当にChromeChromiumのリリースノートを見てみたけど、それっぽい記載は無いし・・。

2014/09/03追記:

直ったぽい。従来通りウェイト名付きで表示されているフォントも効くようになった。

Chromeのバージョンは37.0.2062.102 unknown-m (64-bit)。日本語グリフの描画周りに問題があって修正されたようなので、それがらみなのかも。

PHP 5.3 バージョンアップ対応の記録

最近すっかり完全放置状態の自サービス創作小説投稿コミュニティー - ぱろしょだが、サーバーホスティング元にてソフトウェアの一斉バージョンアップメンテナンスが行われるとのことで、影響確認テストを行った。

  • 最新版のXAMPP導入。PHPApacheのみ使用。MySQLはバージョンアップなしなので、別環境にある既存のMySQLを使用。
  • 本番データのバックアップをMySQLに投入して、各機能打鍵確認
  • (ついで)全ファイルの文字コードと改行コードを再確認し、統一した。従来はFTP時に変換をしていたが、変換忘れたりすると面倒なので。今後はバイナリ転送一本である

現新の環境はまとめるとこんな感じ。

環境 PHP Apache MySQL
現行 5.2.x 1.3 5.1.22
検証環境*1 5.5.11 2.4.9 5.1.73
新環境 5.3.x 2.4.9 5.1.73

検証環境のバージョンがやたら高いが、個別に用意するのが面倒なのと、PHP: PHP 5.4.x における変更点PHP: PHP 5.5.x における変更点を見た感じ、5.3から5.5の間に戻された仕様はなさそうなのでまあいいかと判断。でもさすがにノーチェックは怖いので、無影響確認のつもりで全画面一通り打鍵した。

で、下記のような問題を発見。対処した。

  • ereg系正規表現をpregに変更(ereg系は5.3.0で非推奨。警告出力される)
  • strlen関数に配列が渡された場合の仕様変更(従来は配列が渡ると文字列"Array"が渡されたものとして動作)により、自作関数の挙動に影響が出た。従来の仕様と同じになるようコードを修正
  • PHP開始タグが「<?」であるものを「<?php」に修正

最後のものはPHP 5.3とは関係なくphp.iniの設定の問題だが、個人的にはもとより<?phpで統一していたつもりだっただけに発見したときは驚いた。n年越しの潜在バグというやつだ。動作しているPHPファイルをそのまま食わせただけなのに構文エラーとなり、発見に苦労した。括弧の数があっているか追うために<?でソースを検索していたときに偶然見つけたのだ。いやはや。

これでとりあえずは安心と思っているが、バージョンアップから数日はチェックが必要かな。仕事が立て込んでいるので、何かあったら睡眠時間を削る羽目になる可能性が高い。ホント、ソフトウェアのバージョンアップ問題は頭が痛い。

*1:XAMPP 1.8.3

Policy-based QoS requires enabling QoS packet scheduler in network adapeter's property

Windows Server 2003以降で使用できるポリシーベースのQoSによるネットワーク通信の優先制御や帯域制御は、対象の通信に使用するネットワークアダプタのプロパティで「QoSパケットスケジューラ」が有効でないと機能しない。

ポリシーは確かに適用されているのにQoSが効かず大変悩んだのだが、原因がこれだった。直接的な警告もエラーも出ないため突き止めるのに大変苦労した。

なお、ポリシーベースのQoSを使用するためにQoSパケットスケジューラが必要な旨は下記参考サイトにて言及があるが、Windows Server 2003向けの部分に記載されていたため読み飛ばしていたのだった。

参考:The Cable Guy: Windows での QoS のサポート

どなたかの参考になれば幸いです。

リビングのBGM用に余ってたiPod(iPhone)とBluetoothスピーカーでネットラジオ環境作った

カフェ風(笑)なリビング空間を演出するために、iPod Touchを使ってTuneIn Radio(ほぼSKY.FMしか聞いてないけど)でネットラジオを流すなんてことをよくやるのだけど、出力に使っているのがただのMDコンポ(CD部故障)なので、iPod TouchからAUX INにステレオケーブル直刺しとかやってて、さらに充電用にUSBケーブル+USB-ACアダプタなんかも必要でケーブルだらけであり、見た目的に美しくなかった。

で、嫁さんから買い換え許可が下りたこともあり、MDコンポをBluetoothスピーカーにリプレースした。いろいろ調べた結果買ったのはP9|フィリップス Fidelio ワイヤレスポータブルスピーカーホワイト

フィリップス Fidelio P9 Bluetoothスピーカー ブラック P9BLK

フィリップス Fidelio P9 Bluetoothスピーカー ブラック P9BLK

これを選んだポイントは、↓な感じ。

  • 我が家のリビングにマッチする白色系のデザイン(白系はレア。AV製品って黒色系ばかり)
  • 大きすぎず、小さすぎず。棚の上に置くのに丁度いいサイズ(287(W) × 55(D) × 125(H)mm)
  • Bluetooth対応(iPod Touchとの接続ケーブルが不要に!)
  • 外部機器充電用のUSBポートあり(iPod Touch充電用のUSB-ACアダプタが不要に!)
  • そこそこに良い音が鳴る(らしい。レビューとかによれば)
  • 使用後はカバーを閉じれば電源が切れて良い

iPod用のDockがあるものを選ぼうか迷ったのだけど、Appleが規格を変えると無駄になるし、デザイン的に微妙なので、汎用的に使えるBluetoothを選んだ。スマホとかもつなげられるしね。

で、こんな感じになりました。すっきりおしゃれ。

f:id:ymkn:20140330101338j:plain

比較用の写真はないのでどれくらいすっきりしたのかはわかりづらいね。とり忘れたのだ。

その手前にある細長い白いのはApple Remote(初代)。iPodが挿さっているUniversal Dockとペアリング済み。離れたところから操作と言うより、普段はDockの目の前に置いて使ってる。Dockに挿したまま画面をタッチ操作するのが案外大変なので、Remoteのボタンをポチポチして再生/停止してる。便利。

あと、不満点とか。まあ、些細なポイントではある。

  • Fidelio P9の電源ONが長押しで微妙にめんどい
  • 再生停止状態で放っておくとFidelio P9の電源が切れるので、また聞きたいときは電源ボタンを押しに行かないといけない
  • USB給電はAC接続時のみ有効なため、この構成だと事実上AC常時接続が必要(内蔵バッテリーが劣化しそう)
  • Sky.fmがブチブチ切れる。プレミアム契約しろと言うことか・・


まあ、おすすめです。

ODBCのトレースログの出力はユーザ別かコンピュータ全体かに関わらず常にユーザ別

これに気づかずハマリにはまったのでメモ。

[すべてのユーザー ID のコンピューター全体のトレース]にチェックを入れれば[ログ ファイルのパス]に指定したファイルに全てのユーザのトレースログが出力されると思い込んでいたのですが、どうやら常にユーザ別のパスに出力されるらしい。

f:id:ymkn:20140224012532p:plain

どういうことかというと、ODBCを使ってDBアクセスを行うサービスservice_aをhoge_userというユーザで実行しているときに、メンテナンス用ユーザfuga_userでservice_aのODBCのトレースログを取得しようとして、fuga_userでODBC アドミニストレータを起動して上記画面の[すべてのユーザー ID のコンピューター全体のトレース]にチェックを入れ[トレースの開始]を押下しても、
[ログ ファイルのパス]に一切トレースが出力されない、という話。

どこにログが出ているのかというと、serivce_aを動かしているhoge_userの[ログ ファイルのパス]に指定された場所である。なんてこった。

[ログ ファイルのパス]は通常%TEMP%¥<数字>¥SQL.LOGとなっているので、そこを見に行けば良い。管理上場所を変更したい場合は、hoge_userでログインしてODBC アドミニストレータを起動し、[ログ ファイルのパス]を変更すれば良い。

hoge_userでログインできないときは・・

やっかいなのはhoge_userがサービス実行専用に設計されていて、デスクトップログインを許可していない場合。ODBCアドミニストレータの設定の実体は下記レジストリキーにある。

ユーザ別な設定: HKEY_CURRENT_USER\Software\ODBC\
グローバルな設定: HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\

[ログ ファイルのパス]はユーザ個別の設定なので、HEKY_CURRENT_USERのほうにある。ただ、HEKY_CURRENT_USERは現在ログイン中のユーザのレジストリである。今回修正したいのはログインできないhoge_userのもの。HEKY_USERSからhoge_userのツリーを探す必要があるが、面倒なことにユーザ名ではなくSIDでツリーが分けられている。つまり、hoge_userのSIDを調べる必要がある。

下記サイトのようにして、HKEY_LOCAL_MACHINE以下のキーから各ユーザのSIDを推測し、目的の値を修正すれば良い。

参考:レジストリキーのSIDからユーザアカウントを識別する方法 | Tipstour

Android開発はじめました

普段の業務ではかすりもしないジャンルだけれど、いい加減無視し続けてもいられないモバイル開発。というわけでAndroid開発の勉強がてらアプリを作ってみることに。大変ローペースだけれども三日坊主はこえたっぽいので、非公開でつけていた開発日誌を公開にしてみる。

家族ToDo(仮)開発日誌

まずは動くものができるのを最優先に、コピペプログラミング上等でゆっくりやってます。

郵便局からの荷物を宅配BOXで受け取った際の確認電話を拒否する方法

確認電話を受けた際に、今後の連絡は不要である旨を伝えたところ了解してもらえた。
(それ以降、宅配BOXで受け取るような郵便物がないので、本当に連絡しない運用になったのかは不明であるが)

宅配BOXに入れた旨記載した伝票が郵便受けに入っているので、電話までしてフォローするのは過剰と感じるが(実際、ヤマトとか佐川はやらないし)、郵便局の顧客層を考えると致したがない運用なのでしょう。

ともあれ、このような個人的に重要度が低いと思っている電話が仕事中にかかってくると大変鬱陶しいので、同じような悩みを抱えている方はぜひおためしください。