コードから文字色、背景色を変更する

単純なことなのにハマってしまったのでメモ。


SilverLightC#)で文字色を変更するには、ForegroundプロパティにSolidColorBrushをセットする。

RGBでセットするにはこんな感じ。

String color = "#FFFF00";
byte r = Byte.Parse(color.Substring(1, 2), NumberStyles.AllowHexSpecifier);
byte g = Byte.Parse(color.Substring(3, 2), NumberStyles.AllowHexSpecifier);
byte b = Byte.Parse(color.Substring(5, 2), NumberStyles.AllowHexSpecifier);
TextBox.Foreground = new SolidColorBrush(Color.FromArgb(Byte.MaxValue, r, g, b));

FromArgbの1つ目の引数はアルファ値。
0にすると透明になる。

背景色の場合はBackgroundにセットする。

CakePHPをPleiadesでデバッグする

CakePHPEclipsePleiades)のPDTでデバッグしようとしたけど、
Eclipseをバージョンアップさせるとうまく止まらなくなったのでメモ。


http://mergedoc.sourceforge.jp/にある、3.7、3.6では色々設定いじったけど、
ZENDでもXDEBUGでもデバッグポイントで止まってくれず、
結局、3.5ではデフォルト設定のZENDでうまく止まってくれました。

Mac用キーボードをWindows7 64bitで使う

Windows7 64bitでMac用キーボードを使うメモ。
【2015/11/9 追記】
Windows10へのアップグレード対応を追記しました。


↓のMac用のアルミ製キーボードが超使いやすいので、WindowsでもMac用を繋いでいます。

アップル Apple Keyboard (テンキー付き) -JIS MB110J/A

アップル Apple Keyboard (テンキー付き) -JIS MB110J/A

もちろんそのままでは使えないので、色々と設定が必要です。


やりたいことは、Mac用キーボードで以下の実現
・スペース左の「英数」で、日本語入力をOFF
・スペース右の「かな」で、日本語入力をON
・Control、Alt、Caps等をWindowsと同じ配置に。


Windows7 32bitの時は、こちらのソフトで事足りていました。
AppleKbWin
けれど64bitにすると、残念ながら「英数」キーがなぜか日本語入力ON/OFFに・・・。


そこで64bit対応の方法を探してみました。
結論から言うと、上記のやりたいことは実現できましたが、下記ができません。
・Insertが使えない。
・Fnキーやリジェクト等、Mac用キーボード独自キーが使えない。
とは言え、現状では満足しています。


以下、やり方。



1.Apple Wireless Keyboard Helper for Windowsをインストール


Apple Wireless KeyboardをWindowsで使うためのソフトです。
これをダウンロード、解凍してスタートアップに登録します。
この時点では、「英数」で日本語入力ON/OFF、「かな」で、日本語入力ONになります。



2.Apple Wireless Keyboard Helper for Windowsのカスタマイズ


AppleWirelessKeyboardHelperフォルダの中のScriptsフォルダのDefault.py.sampleをコピーして、
Default.pyを作ります。


40行目あたりの
Util.SendInput(Keys.HanjaMode) # IME on/off

Util.SendInput(Keys.IMENonconvert)
に書き換えます。
保存して、通知バーの「Apple Wireless Keyboard Helper」を右クリック、
キー設定スクリプトの再読込を行います。


これで、「英数」キーが「無変換」キーに、「かな」キーが「変換」キーになりました。



3.IMEの設定
IMEの設定(私はATOKを使っています)で、「無変換」キーを文字入力OFF、
「変換」キーを文字入力ONに設定します。


これで、
・スペース左の「英数」で、日本語入力をOFF
・スペース右の「かな」で、日本語入力をON
が実現できました。



4.Change Keyでキーを入れ替える

レジストリを書き換えて、キーを入れ替えてくれるソフトです。
こちらのソフトで、以下を設定します。
・左Win→左Alt
・左Ctrl→CapsLock英数
・左Alt→左Ctrl



これで設定完了です。
Insertキーが使えないのが微妙ですが、そもそもほとんど使えないので問題なしです。


【2015/4/1 追記】
HPのPC(Windows7 64bit)で上記の方法を試したところ、「Apple Wireless Keyboard Helper for Windows」の起動時に、「Apple Wireless Keyboardが接続されていません」とエラーが出てしまいました。

AppleKbWinもOSが対応しておらず使えないので、色々と試した結果、
今のところはAppleKProを試用しています。
試用期間1ヶ月使ってみて、良さそうなら購入するかな・・。


【2015/4/7】
Apple公式のBootcampのドライバをインストールすることで、対応できました。


やったこと。


1.AppleからBootcampのドライバをダウンロード
BootCamp5.1.5621.zip


2.解凍して、AppleKeyboardInstaller64.exeをインストール


ここまでで英数かなキー等が使えるようになったが、Fnキーを押さないと、F10キー等が使えなかった。


3.BootCamp.msiをインストール


なぜか最後のマウスインストールで固まったので、再起動。


4.コントロールパネルから、BootCampの設定画面を起動


カテゴリ表示だと表示されないので、アイコン表示に変更すると見つかります。
キーボードタブで、「F1、F2などの〜」にチェック。


もしかしたら、2か3どっちかの手順は必要なかったかも。
これで無事キーボードが不自由なく使えるようになりました。
あとはChangeKeyで調整するだけ。


【2015/11/9】
BootcampをインストールしたWindows7をWindows10にアップグレードしたところ、
キーボード設定が戻ってしまいました。

ChangeKeyで調査してみるも、「英数」「かな」は認識せず・・・。

色々やってみた結果、
前にダウンロードしたBootCamp5.1.5621の中にある、
BootCamp5.1.5621\BootCamp\Drivers\Apple\AppleKeyboardInstaller64.exe
を実行することで、「英数」「かな」が認識するようになりました。

あとはChangeKeyで調整するだけ。

Dialogスタイルのアクティビティの作り方とタイトル非表示のやり方

Dialog風のアクティビティの作り方。


AndroidManifest.xmlのactivityに以下を設定

android:theme="@android:style/Theme.Dialog"

これで普通にアクティビティを作れば、Dialog風になります。


ちなみに、タイトルを非表示にするには、ActivityのonCreateに以下を記述します。

requestWindowFeature(Window.FEATURE_NO_TITLE);

シートのコピー時に警告が出るのを回避する

Excelで書かれた仕様書とかで、シートをコピーしようとすると、以下のような警告がでることがあります。

移動またはコピーしようとしている数式またはシートには、移動またはコピー先のワークシートにすでにある名前 'hogehoge' が含まれています。この名前を使用しますか?

しかもこれが延々と出てきて困ることがよくあります。

これの消し方です。
(根本的なことが分かっていないので、消したことによって問題が起こっても責任は負えません)

以下はExcel2007での操作。

1.コピー対象のシートの中身を全選択

2.数式タブから、名前の管理をクリック。

3.一覧が出てくるので全て削除


これでもうあの警告は出てきません。


しかし、これ消して良かったのかな・・。

Flickrの短縮URLをJavaで生成

Flickr短縮URLJavaで作ろうとしたけど、妙に詰まったのでメモ。


Flickrには短縮URLが用意されています。
http://flic.kr/p/HogeHge
みたいな感じでアクセスできます。


このHogeHogeの部分は写真のIDをBase58エンコードしたものらしいです。


というわけで、Base64エンコードのコードを参考に作ったりしたけど、
どうにもうまくいかず、、最終的には以下のコードでうまくいきました。

    private static String base58Encode(String id) {
        int num = Integer.parseInt(id);

        String alphabet = "123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ";
        int base_count = alphabet.length();
        StringBuffer encode = new StringBuffer();
        while (num >= base_count) {
            int div = num / base_count;
            int mod = num % base_count;
            encode.insert(0, alphabet.charAt(mod));
            num = div;
        }

        if (num != 0) {
            encode.insert(0, alphabet.charAt(num));
        }
        return encode.toString();
    }


IDを数字としてそのまま使うのがポイントだったんだろうか・・。
色々試しすぎて、何が悪かったのかよくわかりませんが、とりあえずできました。

アプリ購入でサーバーエラー

アプリを公開したので、試しにダウンロードしてみようかと、
マーケットから購入しようとしてみると・・・

!注意
サーバーエラーが発生しました。再試行するか、キャンセルして前の画面に戻ってください。

と表示される・・・。


どうやらアプリを公開したアカウントでは、購入できないらしいです。
他のアカウントからはダウンロードできました。


ちなみに公開したアプリはこれ。
https://market.android.com/details?id=jp.nekolabo.catwall

無料版も今日アップ予定なので、よければ落としてみてください!