Xcode 4.1 getlineでmallocエラーが起きる問題

ラボのマックにインストールされていたXcode 4.1でC++のコードをコンパイルして走らせてみると、

malloc: *** error for object xxxxxxxx: pointer being freed was not allocated error

というからデバッグしてたら・・、どうやらgetlineを呼ぶところでこのエラーが発生してる模様。
でもコードに問題はなさそうで頭抱えた末に調べてみたら、何だい、Xcode 4.1のバグなのかい^^;

The solution is to double-click on the target to open its Info window, go to the Build tab, and scroll down to the "GCC 4.2 - Preprocessing" section. In this section is a setting named "Preprocessor Macros" that by default has two entries, "_GLIBCXX_DEBUG=1" and "_GLIBCXX_DEBUG_PEDANTIC=1". Remove these entries.

http://stackoverflow.com/questions/1743590/string-c-in-xcode

というわけで、解決しました。というメモ。

Androidのアップデート後のGoogle Map(V7.7)で地図をキャッシュする方法

Android機でGoogle mapをアップデートしたらGoogle Mapの地図をオフラインでも見れるようにダウンロードする機能が見つからなくなってしまった??
・・と思ったけど、隠し機能(?)として残ってました。

1. Google Map上でオフラインで使用したい地図を画面に表示。
2. 検索画面で「OK maps」と入力して検索。
3. 自動でダウンロード開始。

表示している地図の範囲が大きすぎると「範囲がひろすぎます」と言われるので、文句言われないサイズまで拡大してダウンロード。
ロンドンを丸々カバーする位がギリギリでした。

でも、何でこんなにわかりづらくしたんでしょうね。



Sony Xperia Z1 Compact D5503 (Black ブラック 黒)SIMフリー 海外携帯 並行輸入品


Sony Xperia Z1 Compact D5503 (Pink ピンク)SIMフリー 海外携帯 並行輸入品


Sony Xperia Z1 Compact D5503 (White ホワイト 白)SIMフリー 海外携帯 並行輸入品


Sony Xperia Z1 Compact D5503 (Lime ライム)SIMフリー 海外携帯 並行輸入品


→関連記事:Xperia z1 compactのルート化

Xperia z1 compactのルート化

Xperia Z1 compact (D5503)を入手して3日。


Sony Xperia Z1 Compact D5503 (Black ブラック 黒)SIMフリー 海外携帯 並行輸入品


Sony Xperia Z1 Compact D5503 (Pink ピンク)SIMフリー 海外携帯 並行輸入品


Sony Xperia Z1 Compact D5503 (White ホワイト 白)SIMフリー 海外携帯 並行輸入品


Sony Xperia Z1 Compact D5503 (Lime ライム)SIMフリー 海外携帯 並行輸入品

Xperia mini proからの乗り換えだったんですが、予想以上に満足しています。笑
レスポンスの良さはもちろんのこと、手袋しててもタッチできる機能や防水機能もすごく便利です。

早速ルート化をしたのでそのメモ。
これを見てルート化して何か問題あった場合の責任は取れませんので自己責任で。

Bootloaderのunlock準備

  • 端末のIMEIコードの取得: ダイアル画面で、「*#06#」と入力。出てきた番号をメモ
    • 重要:Windows 8を使っている場合は、ドライバーをインストールするためにいくつかやらなくてはいけないことがある→詳細
  • 最新のFlashTool Xperia Driver Packをダウンロードして実行。リストからXperia z1 compactのfastboot drivers (common) & adb driversを選択してインストール
  • パソコンに端末をUSBケーブルで接続
  • ボリュームアップボタンを押しながら電源OFFに。端末がFASTBOOTモードで再起動し、パソコン上でドライバーのインストールが始まる。
  • ドライバーインストールが完了したら、ケーブルを抜いて端末の電源を入れる。

Bootloaderアンロック手順

  • このページに行って一番下の'Start Unlocking the Bootloader'をクリック
  • 端末のブートローダーのアンロックが許可されているかの確認:ダイアル画面で「*#*#7378423#*#*」と入力し、「Service info」 > 「Configuration」 の「Rooting Status」を確認。「Yes」なら問題なし。ウェブページの一番下の"Continue"ボタンをクリック
  • 出てくる文章を読んで良ければ"Accept"/"OK"/"Proceed"。すると"Create Unlock request"ページになるので最初にメモったIMEIの最初の14桁、名前、メールアドレスを入力。そして送信するとメールで解除キーが送られてくる。
  • fastboot パッケージをダウンロードし解凍。フォルダを開く
  • フォルダの空白部分でSHIFTを押しながら右クリックし、'Open command window here'でコマンドプロンプトを開く
  • 端末の設定画面から"About Phone"を開き、Buid numberを7回連続でタップ。そうすると開発者オプションが表示されるようになる。設定画面に戻って開発者オプションを開き、USBデバッギングをオンにして電源を切る。
  • ボリュームアップのボタンを押しながらパソコンに接続→FASTBOOTモードで起動
  • コマンドプロンプトの画面で"fastboot.exe -i 0x0fce getvar version"とタイプし、端末がきちんと認識されているかを確認。0.5が帰っているようならOK
  • "fastboot.exe -i 0x0fce oem unlock 0xKEY"を入力・実行(KEYの部分はメールで送られてきたアンロックキー)
  • これでブートローダーアンロック完了

カーネルをフラッシュ

  • カーネルイメージをダウンロード(Advance Stock Kernel with Recovery v01 (FW:14.2.A.1.114} )*リンク切れてたらここから最新版をダウンロード
  • ダウンロードしたイメージを"boot.img"にリネームして、 fastbootと同じフォルダに移動
  • コマンドライン上で"fastboot flash boot boot.img"を実行して流して"fastboot reboot"でリブート

ルート化

  • SuperSU update.zipをhttp://download.chainfire.eu/supersuからダウンロード
  • 端末上か端末のSDカードに保存
  • リカバリーモードで起動。(電源を入れる時にボリュームアップボタンを連打)
  • zipからインストールだったかなんかのメニューで、ダウンロードしたSuperSU update.zipをインストール
  • reboot
  • ルート化完了


Sony Xperia Z1 Compact D5503 (Black ブラック 黒)SIMフリー 海外携帯 並行輸入品


Sony Xperia Z1 Compact D5503 (Pink ピンク)SIMフリー 海外携帯 並行輸入品


Sony Xperia Z1 Compact D5503 (White ホワイト 白)SIMフリー 海外携帯 並行輸入品


Sony Xperia Z1 Compact D5503 (Lime ライム)SIMフリー 海外携帯 並行輸入品

Brotherプリンターを、Lenovo ideapadが認識しない場合

実家のプリンターが古くなったから買い換えるということで色々調べた結果、CanonでもEpsonでもHPでもなくBrotherの「プリビオ DCP-J552N」を購入。

他社のと最新のと比べたら値段は半分ほど。カラーの数を比べると他社に劣ることは確かだけれど、色々調べてみるとコストパフォーマンスが圧倒的だとか。
どのサイトでも比較的好感度の高いレビューばかり。なんでこんなに良いことばっかりなのかと聞いてみると、ブラザーは今シェア拡大を狙っていて頑張ってるんだとか。だからチャンス!

そういうわけで購入して1週間ほど年賀状、写真、書類印刷などで色々使ってみたのですが、嬉しいことにどれをとっても期待通り。
特に気に入っているのは

  • スマフォから直接印刷何でも印刷できる機能
  • PicasaやDropboxなどネット上に保存した写真の印刷機能
  • インク節約モード

の3つ。

プリンターを無線LANで接続さえしてしまえば、同じネットワーク内のスマフォから写真でもウェブサイトでもpdfでも何でも印刷できてしまう。
自分はデジカメで撮った写真は全部Picasaにバックアップをとっているのですが、プリンターのメニュー画面からそのどの写真も印刷できてしまう。
以前まで使っていたプリンターはもう10年近く前のHPのプリンターだったからその進化に驚かされる。

そして驚くべきもう一つはインク節約モード。プリンターは普通、本体を安く売ってインクで儲けるというのに、そのインクを「節約」させる機能を載せているのだから。

価格ドットコムのレビューを見てると、はがきが詰まりやすい。というのがあったけれど、おそらくその人は説明書をよく読んでないんじゃないかと。
なぜなら、はがきやL版を印刷する時は、A4や2Lの用紙を印刷するようのトレイとは別の上段のトレイを使うことが推奨される。
自分もはじめ、はがきを下段のトレイに設置して紙詰まりになってしまったけれど、上段を使うようになってから一度も問題は起きていない。


とながい前置きはここまでにして、今回記事を書いた目的は、自分の持っているLenovoのIdeaPadがすんなりとはBrotherのこのプリンター、プリビオ DCP-J552Nを認識しなかったのでその解決法。
最初付属CDを使ってユティリティをインストールしたのですがエラーが出て失敗。
仕方がなくコントロールパネルから手動でプリンターの追加をしようにもネットワーク上にプリンターを発見できない。
プリンターが接続されているIPアドレスも打ってプリンターを選んで登録しても接続を完了できない。

どうしたらいいものか、と思っていたんだけどびっくりするほど簡単。
公式サイトからドライバー(「プリンタードライバー、スキャナードライバー (USB)」)をダウンロードして解凍。その中にある
32bit版の場合: 「dpinstx86.exe」
64bit版の場合: 「dpinstx64.exe」
を環境に応じてダブルクリックしてインストール(何もウィンドウは出てきませんでした。)

そうして改めてコントロールパネルのプリンター設定画面から、あたらしプリンターを追加でネットワーク上のプリンタを検索。
するとすぐに見つかりました。
あとはそれを選んで次へ、次へとやるだけ。

年賀状作成ツールは思いっきり期待はずれでしたけど、とってもいいプリンターだともいます。
買い替えを考えている人がいればオススメ!


BROTHER A4インクジェット複合機 PRIVIO DCP-J552N-ECO

新Googleアナリティクスで参照元URLを調べる方法

Googleアナリティクス便利だけれど、自分のページへの参照元リンクの一覧を表示する機能はデフォルトでは用意されていない。
やり方調べてみたら

こんなかんじに色々出てきたけど、どうやらどれも古いバージョンのGoogleアナリティクスの場合のやり方みたい。
一番上のサイトのコメント欄見てたら、「新バージョンのGoogle analyticsではできない!」というのばっかり。

(追記:上記の方法でやっても出来ました。設定をした時点では(not set)とだけ表示されてますが、その時点からの集計結果はきちんと表示されました。)

なのでそうじゃなくてカスタムレポートを使ったやり方を。

上のタブから"Customization"(カスタマイズ)を選択。そして"+ New Custom Report"(新しいカスタムレポート)をクリック

  • 「Metric Groups」(指標グループ)に"Visits" "Hits" (訪問数)
  • 「Dimension Drilldowns」(ディメンションの詳細)に"Full Referrer"(完全なリファラー)

これだけでもいいんだけど、リストにdirectとかフルパスじゃないのが表示されるのが嫌なら

  • 「Filters」(フィルタ)でinclude - "Traffic type"(一致 - トラフィックの種類)で"referral"

これで保存。

こうすることで「Customization(カスタマイズ)」のタブからいつでも参照元リンクを見れるようになれます。

"perl^M: bad interpreter"とかいうやつの簡単な対処法

perlのスクリプトをMacで実行する時にたまに

-bash: ./scriptName.pl: /usr/bin/perl^M: bad interpreter: No such file or directory

と怒られて、調べるのも面倒なので直接pathもコマンドでうってたんだけど、
ふと思い立って調べてみたのでメモ。

どうやら問題は、windowsでコード書いて、Macで実行してたこと。
改行コードが違うことが原因なのだと。

簡単な対処法は、コードの最初の

#!/usr/bin/perl

の、perlの後に、下のようにそのあとを無視する"--"サインをつける方法。

#!/usr/bin/perl --

PerlMagick(ImageMagick)を使ってみた。

最近実験のために、大量の単純図形の入力刺激が必要だったため、PerlMagickを使ってみた。
便利な時代だの。

Windows 7でのインストール時に気をつけることは、PerlMagickのバージョンとActivePerlのバージョン。
最初ActivePerlの5.16をいれててうまくいかず、5.14にする必要があった。
PerlMagick: http://www.imagemagick.org/script/binary-releases.php#windows
ActivePerl: http://www.activestate.com/activeperl/downloads
ImageMagickインストール時に、ActivePerlのライブラリもインストールにチェックすれば、すんなり動くようになる。

例えば下記のようなコードを書いてみて、ファイルが出力されればOK

use Image::Magick;

$img = Image::Magick->new;
$img->Set(size=>'128x128');	
$img->ReadImage('canvas:rgb(128, 128, 128)');
$img->Draw(primitive=>'rectangle', stroke=>'black', fill=>'none', points=>'20,20 5,50');
binmode(STDOUT);
$img->Write("PNG24:img.png");
undef $img;	

他の例は公式サイト(http://www.imagemagick.org/script/perl-magick.php#example)とかを参照


今回の目的は、背景色が灰色(#808080 / RGB(128,128,128))で、
n角形で各辺がp通りの曲度を持つという、計n^p個の入力刺激の生成。
色々方法はあるけど、計算量が馬鹿でかくなっては嫌だし、かといって頭をつかうのも嫌だということで、その中間をとってこうすることに。

  1. 中央から頂点までの長さsを定める
  2. for(i が n^p まで)
    1. for(j が 頂点数まで)
      1. 長さsと頂点数から一辺の長さを求め、キャンバスの適切な位置にその長さの水平線を(int(i/(p^j)))%p)番目の曲度で引く。(説明は省略)
      2. 360/頂点数 の角度回転
    2. ColorFloodfillで図形内を塗りつぶし
    3. 回転したせいでキャンバスがでかくなってるから、最初のキャンバスサイズにクロップして出力。

という中途半端な感じで。

このプログラムは実はどうでもよくて、
このファイルをフィルターかけるためにMatLabで読み込んでみると、背景色が128ではなくなんか巨大な数であるという。
確かに、RGB(128,128,128)の色よりも濃く表示されてる。

本当はこの色にしたい↓
■■■

ディスプレーに映ってる色をプログラムで出力して、映される色が128になるようにmanuallyにコードを書き換えてみても当然うまく行かず。


で、気づいたんだけど、png出力の形式を指定し忘れてた。
PerlMagickで出力できるpngにはPNG8, PNG24, PNG32の3種類がある。

binmode(STDOUT);
$img->Write("PNG:img.png");

とかすると、プログラムが勝手に最も効率的そうな形式を上記の3つから選んでくるのだそうだ。
どうやら今回の場合は、ただのグレースケールの画像なのに、素敵なことに勝手にPNG32を選んで出力してくれていた模様。

といわけで、

binmode(STDOUT);
$img->Write("PNG24:img.png");

と指定することで、無事それっぽい色となり、

無事背景がmatlabで128と認識されましたとさ。

みなさんもこんな馬鹿な見落としで時間を無駄にしないようにしましょう。笑