SierraからはKarabinerが使えない。JISのまま」というところ。今回は、完璧にキーボード配列を書き換えられるSierra対応ソフトを見つけたため、その設定ファイルを公開したいと思う。Macで実現するために作成されたものなのだが、かなり細かくキーボードレイアウトをカスタマイズすることができるのが特徴。KarabinerのUS配列を移植した。US配列に置き換えることができる。ドライブこのUS配列の特徴は、単純にキーボードレイアウトをUS配列にした時に入力できない「`」「~」などの文字を「¥」キーの位置に割り当てていること。完璧なUS配列ライフがおくれそう。過去記事で紹介したBashOnWindows(WSL)環境において、UbuntuのバージョンをTrustyからXenialへアップデートしたメモ。以下のコマンドを実行するだけ。do-release-upgradeその後、いくつかのアプリケーションに問題が起こった。Mechanisms」的なエラーを吐いて起動しない。“/etc/dbus-1/session.conf"を以下のように編集することで対応可能。<auth>EXTERNAL</auth>を<!--<auth>EXTERNAL</auth>-->とする。GnomeTerminalがすぐ終了するなんでか知らんけど、GnomeTerminalが子プロセス作って自分は勝手に終了しちゃう。以下のように–disable-factoryを追加することで対応可能。--disable-factoryそんなぐらい。Qiitaなどを参考にまとめたメモ。14:58オブジェクト指向とはTweet広告を非表示にするコメントを書くもっと読む2017-01-23FuelPHPのemailで日本語メールを送る際に気を付けることマルチバイト環境でFuelPHPのemailを使う際、いくつか気を付けなければいけない問題がある。今回想定している環境は、以下。1.8UTF8でメールを送りたいHTMLメールを送りたい自動改行処理を止める(あるいは、改善する)FuelPHPのemailパッケージには、自動改行処理を行う部分がある。デフォルトでは76文字で改行を行ってくれるのだが、この際に使用している関数がPHP標準のwordwrap関数。この関数はマルチバイト文字に対応していないため、改行付近で文字化けするという痛い問題が発生する。false,と書き換える。自動改行処理は有効にしたいけど、文字化けを解消したいという方は、emailクラスを編集して、マルチバイトに対応させる必要がある。Qiitaこういったものに置き換える必要がある。代替テキストの生成を止めるHTMLメールを送る際、emailパッケージは親切にプレーンテキスト版を自動生成し、一緒に送信してくれる。受信したクライアントは、HTML版、プレーンテキスト版の二つから好きな方を表示することができる便利な機能である。メールの見た目を統一したいなどの理由で、代替テキストが表示されてほしくない場面もある。日本語を送る関係で'encoding'に"quoted-printable"や"base64"を指定している場合、正常に表示ができなくなる。これは、何故かemailパッケージが"Content-Transfer-Encoding"のヘッダーを出力しないためであり、/fuel/packages/email/classes/email/driver.phpの以下の箇所を編集することで対応が可能。'Content-Type');となっている部分を、以下のように変更する。追加したこれで、正常に表示ができるようになる。sierraにアップデートしてから様々な問題にぶち当たり、Macが少しだけ嫌いになったのと、もともとメモリ4GBしかなかったため流石にしんどくなってきたので、新しいPCを買うことに。安いgearbestで購入したのだが、記事執筆時の値段は$809.99=「9.17万円」。スペックは後述するが、この性能でこの値段はなかなかない。Homeの中国語版がプリインストールされている。日本語版をクリーンインストールすることでアクティベーション可能。開封の儀これまたMacBookAirっぽい箱の中に、フィルムにくるまった状態で入っていた。付属品は簡単な説明書と充電用アダプタだけだった。Type-Cの形状をしており、幅広い機器に使えるもののようだ。手に持った感じ、MacBookAirと重さは変わらなかった。NotebookAirの方が小さかった。最後まで開封してみた。ファンはCPU用とGPU用の二つ。SSDスロットは拡張用含めて二つ。スピーカーも二つ確認できた。以下、使ってみての感想。スピーカーが良い一番感動しているのがココ。AKG製のスピーカーが背面に2つ入っているのだが、Dolbyのサラウンド対応ということで音がヤバイ。語彙力がないのでヤバイしか言えないのだが、映画などを観るとその凄さがよくわかる。目の前のパソコンから音が出ているとは思えない...。このPCを購入してから、イヤホンをほとんど使わなくなってしまった。Airはパタパタという感じ。打鍵音は大きめ、またキーの打鍵感も大きいので少し指がつかれるかも。それでも打鍵感がかなり良く、打っていて楽しい。デザインはほぼほぼMacBookAir背面にリンゴがいない以外、ほぼほぼMacBookAir。アルミ感満載なところ、キーにLEDがついてるところ、トラックパッドに関してはまったく同じ見た目。軽いしバッテリーのもちもいいし性能もいいし安いし、大満足。Windows)環境のために最近、Macを捨ててWindowsに乗り換えた。その際に、Macで使用していたCUIにより開発環境をできるだけWindowsに移植できないかと考えた。Windows)BoWは、Windows10よりベータ版として提供された、Windows上でLinuxバイナリを実行することができる仕組み。仮想環境よりもっとミニマルで、内部的にはWindows上で動作するUbuntu互換のAPIを実装している模様。Linuxのマシン語をネイティブに実行することができるということ。(しっかりとWindowsのプロセスとして立ち上がる)このBoW環境が思ったよりもしっかりとしていたため、開発環境を整えてみた。どんな見た目?デスクトップにおいたリンクから端末を起動することができる。逆にどこに不満がある?ってレベル。2016年11月27日X11に対応しているので、GUIも使える。2016年11月27日インストールすべきものまず、BoWのインストールが済んでいることが前提。qiita.comこちらを参考に。次に、VcXsrvをインストールする。これは、X11互換のサーバであり、GUIを表示するために必要。(Xmingをおススメしているサイトが多いが、こちらのほうが安定している)sourceforge.netインストールが終わったら、スタートアップとして登録しておこう。BoWにてまず、Win+Rボタンを押し「cmd」と入力しエンターを押す。コマンドプロンプトが立ち上がるので、ここに「bash」と入力する。これでBoW環境に入ることができる。ここで、以下のコマンドを実行しよう。gnome-terminalこれで、gnome-terminalというターミナルエミュレータが入った。bash上で、「gnome-terminal」と入力することで、新しい端末が立ち上がる。日本語入力ができるよう、以下のコマンドも実行しよう。uim-anthyそして~/.uimを作成し、以下の内容を記述しよう。キーバインドなどは自由でおk。"))次に、zshを入れよう。zshあとは好みに応じて、各自のdotfilesを入れるといいと思う。使いやすくこの時点で、~/.bashrcを編集し、以下のように書き足そう。zshfiこれにより、bashコマンドを叩くとすぐにgnome-terminal上でuim-fep、zshを起動することができるようになる。以下のようなファイルを作成することで、cmdを非表示にしたまま、gnome-terminalだけを起動することができる。vbhideあとは煮るなり焼くなり、好きなように環境設定をしよう。mysql、apacheなどの個人的に必要なソフトウェアも、serviceコマンドから実行できるようなので、逆に他に何がほしいの?というレベル。MacからWindowsに乗り換えるタイミングとしては最適だったように思える。Androidに載っけてみたmjhd.hatenablog.comの記事にて、BMPからUNIRASTへの変換が完了した。AndroidからAirPrintができるはず。いうことで実装してみた。BonjourBonjourは、ネットワーク上のデバイスを探すためのプロトコルのよう。NuGetにPCLでも使えるBonjourライブラリがあったため、今回はこれを使用する。www.nuget.org例えば、ネットワーク上にあるプリンタを列挙したい場合、以下のようなコードを書くことで可能になる。Console.WriteLine(printer);IPPAirPrintは実際はIPPを使用して印刷している。IPPはHTTP上に実装された印刷を制御するためのプロトコル。HTTP上でやりとりが行われているため、プロクシやらSSLやら何やら、HTTPで使用できる技術の恩恵が受けられる点が強みらしい。遠隔地からの印刷なども、HTTPさえ繋がれば可能になる。今回は、以下のプロジェクトを参考に、IPPをある程度実装した。github.comIPPは以下のような書式になっている。1byteGroupは、Attributeの集合。操作に関するIDや、ジョブに関するIDなど、Attributeの種類に応じてグループが存在する。Attributeは、実際の値の集合となっている。この辺からかなり複雑になってくるので、割愛。IDとしてセットし、詳しい設定をAttributeとしてセット、そして送信する。CodeがSuccessなどだったら、Attributeを読み込み、結果を取得する。今回は、プリンタの情報を取得するGet-Printer-Attributes操作と、ジョブの有効性を判定するValidate-Job操作、実際に印刷をするPrint-Job操作、印刷の状況を取得するGet-Job-Attribute操作を実装した。すべてのソースコードがPCL上で完結しているため、Xamarin上で使用することができる。AndroidからAirPrint対応プリンタを通して印刷が行えた。これにより何が嬉しいかというと、Android標準の印刷ダイアログを表示せずに印刷を行うことができる。Android標準の印刷機能を使うと、どうしてもユーザに印刷ボタンを押す操作をしてもらう必要が出てしまうため、回避するためにはこう言った工夫が必要なのだと思う。今現在は多くの印刷に関する設定を、プリンタのデフォルト値にしているため、プリンタによって印刷結果が変わってしまうことがある。この辺どうにかしたい。テストできるプリンタがない...。追記:実は、AirPrintはBonjourを使うとも限らないようで、自分が探した中にも、Bonjour以外の方法でしか探すことのできないプリンタがあった。いった方法で探索しているかは、ベンダしか知らないようなので、今回の方法ではすべてのプリンタを探索できるわけではないということが分かった。探索できない場合は、手動でIPアドレスを指定するようにした。<p>引用をストックできませんでした。<p>限定公開記事のため引用できません。