Windowsのコマンドプロンプトで文字化け
コマンドプロンプトでなんらかのコマンドを実行して日本語が表示される場合に、 ▯で表示されてしまう問題。
なぜかいきなりこんな現象になってしまったが、設定を修正することで回避できる。
プロパティを開いて、フォントタブを選択。 フォントの欄には「MSゴシック」と「ラスターフォント」があり、デフォルトでは「MSゴシック」が選択されている。
その状態から、一度「ラスターフォント」に切り替えて、「OK」を押下してウインドウを閉じる。 これで一応回避できる。
ラスターフォントで切り替えてもダメなら、もう一度MSゴシックに戻してみると解決されるはず。 なぜこういった現象が起きるのかわからないが、フォント設定を、一度別のに変えて戻す、ということをすればひとまず解決する。
PhpStormの立ち上げで「JVM error code -6」
プロジェクトでIDEとしてPhpStorm(バージョン10)を使用しているが、一度アプリケーションを落として、再度立ち上げようとしたら
「JVM error code -6」のエラーが出た。
エラーメッセージ的には、環境変数にJAVA_HOMEを追加して、正しいJavaを設定しろよ、というものだったのだが、 それまで普通に起動していたわけだし、しかもJDKが32bitになっていて、なぜ64bitで立ち上げていたのにいきなり32bitの話になる?とよくわからないのでいろいろぐぐる。 探したところ、vmoptions.php周りの内容も出てきて、過去にメモリサイズを大きくして変更した箇所なので何か問題でもあったのかな?と書き換えてみるも変化はなし。
PC再起動をしてみてもダメ。 言われた通りに、使用しているJavaのパスをJAVA_HOMEに追加したら64bitの方が無事に立ち上げられた。 メッセージに出てくるIDE側のJavaのパスは関係なかったのね……
と三つのファイルが存在。 環境変数の方にはバージョンAの方を設定したが、職場の有識者に確認したところ、どうにも怖いのでバージョンBも削除せずそのままにしている。 参照すべきJavaファイルがアプリケーションを閉じたところで変わってしまったのだろうか? 原因はよくわからない。
※スクショ撮り忘れました
trimを使う、strlen、substrで指定した文字数を削除する
入力チェック周りで使うメソッド二つ目。 文字列データの前後の空白を消してしまおう、というのがtrim。
特に特筆すべきものはない。
消去つながりで、指定した文字数を削除する仕方もメモしておく。
これにはsubstrとstrlenを使う。
①strlenで文字列長を求める。 ②文字列を指定した長さで切り取って返す。
手順にするとこんな感じ。
$str = "abcdefghijklmnopqrstuvwxyz";//文字列 $cut = 1;//カットしたい文字数 $replace = substr( $str , 0 , strlen($str)-$cut ); // $strの0文字目からstrlen($str)-$cutを取り除く echo $replace;//abcdefghijklmnopqrstuvwxy
文字列をいじくりまわす機会は多々あるので覚えておこう。
【参考】
str_replaceを使う
テキストボックスからの入力チェックや、DBのなんらかのString型のテキストに意図的に改行コードを入れこんで、その改行コードで分割して表示したい、なんてことがままある。 そんなときに用いる、文字の置換を行うのがstr_replace。
string(文字)をreplace(置換)する。
わかりやすい。
改行にあたる箇所に半角スペースを入れこんだ文字列Aがあるとする。
$ex = "俺のことだれだと思ってるんだ。 斎藤さんだぞ!";(斎藤さんだぞ!の前に半角スペースがある)
この半角スペースに改行コードに置換しよう。
$result = str_replace("\n", " ", $ex);
$ex = "俺のことだれだと思ってるんだ。\n斎藤さんだぞ!";
ただし、正規表現の場合にはpreg_replaceを用いよう。
また、入力チェックにはstr_replaceだけでなくstrtrも有効、とのことだが、str_replaceより汎用性が低そうなこととマイナーなために使用したことはない…… PHPプロ!TIPS+
【参考】
画面の外に飛んでしまったアプリケーションを操作できるようにする
全画面サイズではない状態で使用していたアプリケーションがタブ操作でもマウス操作でも動かせない、モニタの外側に行ってしまうことがある。
そんなときは
Alt+Spaceキー
↓
移動(Alt+M)を選択
↓
どれでもよいので矢印キーを押す
↓
マウスで動かせるようになる
覚えておくと非常に便利。
usortを使う
・報酬マスタID(PK)
・グッズID
・確率
・個数
からなる報酬エンティティの配列がある。
これは、通常確率降順になっているのだけど、開発環境下ではこれを確率昇順でソートし直したい。
usort($array_reward, function($a, $b) { if ($a確率 == $b確率) { return 0; } return ($a確率 < $b確率) ? -1 : 1; });
ここにさらに個数が1以上であるというチェックをいれたい。
usort($rewards, function($a, $b) { if ($a個数 == 0) { return 1; } elseif ($a確率 == $b確率) { return 0; } return ($a確率 < $b確率) ? -1 : 1; });
としてあげれば問題なく動く。
【参考】