未だにiPhoneアプリを開発できていない

超絶久しぶりにブログ更新。

かれこれ10年ほど前にリリースしたAndroidアプリと並行して、

iPhone版もリリースします!みたいのこと宣言してたけど、未だに達成できていない。。。

まぁ当時からMacは高かったし、買う気になれなかった&年間1万も払うのバカバカしかった。。。(今はもちろんMacBookPro持ってますよ!iMacも!こっちは全然使ってないけどw)

 

なんでブログ更新する気になったかと言うと、TOPの広告がうざかったので消したかっただけです。てかブログのアクセス解析みたら、10年前から合計6000PVくらいしかないやん。。(´・ω・`)

 

更新が滞りがちな家計簿アプリでも1日数万PVあるのに!w

プログラマーが食べてはいけない食材をまとめてみた

シリコンバレー式自分を変える最強の食事法」を読みました!


日本人なら、普段から何気なく摂っているであろう食材が多く含まれていたので、危険度別にまとめてみた。


※独断でカテゴライズしました。
危険度A:普段は絶対食べないほうが良い食材。食べたとしても週末の、それも連休前にしたほうが良い。
危険度B:できれば食べないほうが良い。どうしても食べたいなら仕事終わりの夕食にするべき食材。
危険度C:朝食、昼食には避けたほうが良い食材。夕食に摂るのは問題なし。
危険度D:即座に影響は出ないが、できれば摂取を控えたほうが良い食材。



危険度A

にんにく
一度食べたら、3日は集中力が落ちる食材。
精がつく代わりに脳波が乱れ、判断力が鈍る。
落ち着きがなくなる。
(同書202P:にんにくを食べた翌日は瞑想に集中できなくなる)



危険度B

玉ねぎ
ニンニクに似た作用を及ぼす。
(同書98P)
ゼロカロリー飲料



危険度C

果物全般
果糖が食欲を促進させる。
集中力とエネルギーを奪う。
(同書98P)

炭水化物



危険度D

トマト
(同書202P)

アイスクリーム
ビール
マーガリン(笑)



感想

全編でやたらとバターを推している。
猛烈にマーガリンをDisってる。
なんか読んでるうちにマーガリンの歴史スレを思い出した笑
http://2chnokakera.blog.fc2.com/blog-entry-770.html

CheckBoxをタッチすると、Clickイベントが発生して必ずチェックされます。

一瞬でもチェックさせない様にするには、
CheckBoxを継承した派生クラスでperformClickをオーバーライドするしか方法はありません。

public class LimitedCheckBox extends CheckBox {
	
	public interface OnLimitCheckEvent {
		
		boolean isLimited();
	}
	
	OnLimitCheckEvent mLimitCheck = null;
	
	public void setOnPerformClick(OnLimitCheckEvent onLimit) {
		
		mLimitCheck = onLimit;
	}
	
	public LimitedCheckBox(Context context) {
		super(context);
	}
	
	public LimitedCheckBox(Context context, AttributeSet attrs) {
		super(context, attrs);
	}
	
	public LimitedCheckBox(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
	}

	@Override
	public boolean performClick() {
		
		if ( isChecked() || (mLimitCheck != null && mLimitCheck.isLimited() == false)) {
			
			return super.performClick();
		}
		
		// don't toggle
		return false;
	}
}

悲報!無線LANをタダ乗りされました!

日曜日の昼下がり、僕はスマートフォンのパケットを調べるため、ARPSpoofingソフトを立ち上げてぼんやり眺めていた。。。

「???・・・・なんだこれは?」

表示されたHTC社製のスマートフォンに違和感を覚えた。
なぜなら我が家にあるHTC社製のスマートフォンは、遠い過去の遺物HT03Aしか存在しない。


手元にある全てのスマートフォンとパソコンのMACアドレスと照合したがどれも違う。


「え?まさか?・・・タダ乗りされている?」


僕は焦りながらルーターのログを確認した。
すると、タダ乗り野郎はどうやら12:00過ぎ頃からアクセスしているようだった。


しかし、我が家のルーターはWPA/WPA2の暗号化と16文字のパスワードで守られている。
このセキュリティを突破できるものなのか?
ふとAOSSの管理ページに見ると、タダ乗り野郎のMACアドレスがそこにあった!


その日はAOSS機能を使っていないにも関わらず、被疑者はAOSSを使いログインしていたのである。
物理的にも不可能だと思われるが、僕らが知らないだけで何かしら手段があるのかもしれない。
もしくは、AOSS機能が故障して24時間どなたもおいでやすな感じだったのかな。。。


どちらにせよ、AOSSは危険なのでもう使わないことにした。
念のためMACアドレスフィルタリングも実施した。この人が言うには意味ないらしいけど。


ちなみに犯罪者のMACアドレスのキャプチャと、不正アクセスされた時のパケットも全てキャプチャしておいたので、
何かあっても身の潔白を証明できると思う。



知恵袋で同じ疑問が投稿されていたけど、この人の予感はまさに的中ですね。



つまりアパートやマンションでのAOSSは危険なので使うのはやめましょう!!

css display:table要素でスペースを確保する方法*[WEBプログラミング]

css&htmlで少しだけハマったのでメモ。

cssでdivタグにdisplay:tableとして、子の要素にdisplay:table-cellとすれば要素を、他の子要素の高さに合わせて伸縮させることが出来ます。
display:table-cellだとmarginが効かない(T_T)

僕の思いついた解決策

スペースを必要とする要素間にdivタグを挟んで、width: ?%とすればいいんじゃない?


div style="display:table"
div style="display:table-cell; width:45%"
/div
div style="display:table-cell; width:10%"
/div
div style="display:table-cell; width:45%"
/div
/div

こんな感じ。
これはつまり

これが
■■
こうなるわけですね。
■ ■

要素が3つなら


div style="display:table"
div style="display:table-cell; width:30%"
/div
div style="display:table-cell; width:5%"
/div
div style="display:table-cell; width:30%"
/div
div style="display:table-cell; width:5%"
/div
div style="display:table-cell; width:30%"
/div
/div

これもつまり

これが
■■■
こうなるわけですね。
■ ■ ■

wordpressのメニューを画像付きメニューに変える

WordPressって...

素人でも簡単に扱えると聞いたけど、ぶっとんで難しいですね。
特にBizVektor...全然分かりません。
市販の書籍では全力で推してたけど、カスタマイズしづらいと思う。
わざとカスタマイズしずらくしてる?とても素人には手が出せないテーマやと思う。
おすすめしない。。。

僕が今使ってるテーマは、「simone」です。
Wordpressのテーマ検索で適当に探してきました。


メニュー毎に画像を表示

ワードプレスの管理画面です。
メニュー管理画面で個別メニューにラベルを入力できます。
ラベルを入力する箇所にHTMLのdivタグを書いて下さい。

例:
 普通:ホーム
 改善後:<div class="hoge"></div>ホーム

テーマ編集からstyle.cssを編集

.hogeクラスを作って任意の画像を表示してみましょう。

.hoge {
width: 32px;
height: 32px;
margin: 0 auto;
background-repeat: no-repeat;
background-position: center;
background : url(./images/hoge_icon.png);
}

このようにすればurlで参照している画像を表示できます。
画像は予めサーバー側にアップロードしておきましょう!
width,heigthは画像サイズに合わせて調整して下さい。

admobのメディエーションを使ってみる




かなり久しぶりのブログ更新です。
半年ぶりぐらいですかね・・・


今回はAdmobのメディエーションを使って、どんな事ができるのかまとめてみました。

メディエーションって何?

一つのアプリケーションに対して、複数の広告ネットワークを配信する仕組み。
例えば、AdmobとNendとMedibaを交互に配信することもできます。
場合によっては、自社広告だけ100%表示するなんてことも可能です。

メリット

AdmobのSDKを使うだけで、各社の広告を配信することができます。
フィルレートが悪い時は配信率を変えて、別の広告ネットワークだけ表示するなんてことも可能です。
只、NendやMedibaなどは事前に各社で登録する必要あり。
この様にチェックを入れるだけですぐに配信できます


デメリット

Admob一社に依存することになるので、サーバーがダウンした時(無いと思うけど)や混雑すると、まったく広告が配信できなくなる恐れあり。
またGoogleアカウントを使ってログインするので、アカウント停止やアカバンされた場合は最悪です。
最新のAdmobSDKだとAndroid API Levelが8以上でないと使えない。つまりXperia2.1やHTCMagicは切り捨てる必要があります。
僕はマルチAPKで暫定対応しましたが…

導入してみる

こちらを参考にしてください。
https://support.google.com/admob/bin/answer.py?hl=ja&answer=2423720


こんな感じですね…

private AdView mAd;
LinearLayout  l = (LinearLayout)this.findViewById(R.id.AdView);
if (l != null) {
    
        mAd = new AdView(this, AdSize.BANNER, MY_ADCODE2);
        l.addView(mAd);
        mAd.loadAd(new AdRequest()); 
}


    <LinearLayout
        android:id="@+id/AdView" 
        android:gravity="center"
        android:background="#00000000"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content">
    </LinearLayout>

ハマリポイント

コンフィグチェンジとSDKLevelをマニフェストに追加しなければいけない
<activity android:name="com.google.ads.AdActivity"
          android:configChanges="keyboard|keyboardHidden|screenLayout|uiMode|orientation|screenSize|smallestScreenSize"/>
<uses-sdk android:minSdkVersion="8"
          android:maxSdkVersion="17"
          android:targetSdkVersion="14">
カスタムイベントに要注意


Labelはなんでも良いんですが、ClassNameはパッケージ名を含む必要があります。
Parameterはオプションです。必須ではないです。
CustomEventBannerを実装したクラスをプロジェクトに作ってください。
詳しくは調べてください!

一つのアプリに複数のメディエーションを使える!

そんなことしても意味ないのでは…と思った人も居るでしょう。
でも複数のアクティビティを持つアプリだと表示している画面によっては、広告ネットワークを固定したい場合もあると思います。
メインで表示している画面には自社広告を表示して、それ以外の画面ではAdmob広告を表示したりする場合です。

やり方

予めメディエーションを必要なだけ作成しておきます。

後はアクティビティでメディエーションのIDを変えてあげればOKです。
Activity1

private AdView mAd;
LinearLayout  l = (LinearLayout)this.findViewById(R.id.AdView);
if (l != null) {
    
        mAd = new AdView(this, AdSize.BANNER, "admob_id_1");
        l.addView(mAd);
        mAd.loadAd(new AdRequest()); 
}



Activity2

private AdView mAd;
LinearLayout  l = (LinearLayout)this.findViewById(R.id.AdView);
if (l != null) {
    
        mAd = new AdView(this, AdSize.BANNER, "admob_id_2");
        l.addView(mAd);
        mAd.loadAd(new AdRequest()); 
}



ざっくりとしたまとめでしたが、これからアプリを作る人の一助になれば幸いです。
しかし、今後は広告ネットワークだけで稼ぐのは非常に難しいでしょうね。
あ、それとメディエーションを使えば、粘土やメディヴァのimpとかクリックがどれぐらい削られているのか一目瞭然です。
誤クリックがどのくらいあるのか確かめるのにも有効ですね。
メディエーションでカスタムイベントのクリック数はカウントできません。
Admobの担当者に確認したので間違いないです…
※カスタムイベントでなければ、インプとクリック数もカウントされます。