Hatena::ブログ(Diary)

ぺっくブログミラー@peccul このページをアンテナに追加 RSSフィード

2014/09/21

= registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later.

[2014-09-21 18:18:11]

iOS8にアップデートして,自作アプリでPush通知を受信できなくなりました.


コンソールにこんなメッセージがでてました.

registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later.

Stack Overflowに解決策が.

apple - registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later - Stack Overflow

今まで application:didFinishLaunchingWithOptions: にこんな風に書いてたのですが,

  [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

このようにバージョン毎に記述を切り替えるようにしました.

  // http://stackoverflow.com/questions/24454033/registerforremotenotificationtypes-is-not-supported-in-ios-8-0-and-later
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000
  if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {
    // use registerUserNotificationSettings
    UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert) categories:nil];
    [[UIApplication sharedApplication] registerUserNotificationSettings:setting];
    [[UIApplication sharedApplication] registerForRemoteNotifications];
  } else {
    // use registerForRemoteNotifications
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
  }
#else
  // use registerForRemoteNotifications
  [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
#endif

このうち,下記の#ifの#else節はXcodeのバージョンを6だけで利用するなら不要みたいです.

他のバージョンと共存する場合は必要みたいなのですがXcode5が手元にないので確認できていません.

respondsToSelectorだけじゃだめなのかな?

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000
  // ここに書いてあった内容だけを残して,したのelse部分は削除可能だと思う
#else
  // use registerForRemoteNotifications
  [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
#endif

= 「調査可能なアプリケーションがありません」

[2014-09-21 20:02:31]

MaciPhoneをつなぐとiPhoneSafariでインスペクタ(開発者ツールみたいなの)を使えたのです.

iOS8にアップデートすると「調査可能なアプリケーションがありません」と表示されました.悲しい


ぐぐりました.webkitのnightly buildで使えました.

web inspector for ios 8 mobile safari no longer... | Apple Support Communities

OSX Yosemiteからは別の新しいインスペクタになるみたいなので,新しいwebkitを使えばとりあえず使えるよ.という事みたいです.

Yosemiteまではこれでしのぎます.

手順

ここからwebkitダウンロードします.

WebKit Nightly Builds

展開して,webkit.appを実行します.

iPhoneをつないで,iPhoneSafariで対象のページを開きます.

(必要に応じて,iPhoneの設定→Safari→Advanced→Web InspectorをONにする)

MacWebKitのメニューバーで開発→iPhoneの名前→タブの名前とたどるとインスペクタが開きます.

(必要に応じて,Safari(WebKit.app)の環境設定→詳細→メニューバーに"開発"メニューを表示にチェックを入れる)

こんな感じです.

2012/12/03

= 言語を学ぶために(how to Learn a programming Language.)

[2012-11-30 14:04:17]

これはLL/ML Advent Calendarの第二レーン三日目の記事です.

昨日は@athos0220さんの セルオートマトンプログラミングことはじめ(An Introduction to CeLLular Automaton Programming) と, @dico_lecue さんの月の塵 でした.

@athos0220 さんはkyoto.lispでお会いした(はず)のに早くも顔を忘れそうなのでまたお会いしたいです.

今日の第一レーンは@keita44_f4 さんの 2012-12-03 です.

何の話をするかというと,私の癖でいろんな言語に手を出してしまうのですが,毎回はまったり調べるのがめんどくさいなと思うのでだれかいい感じにまとめたサイトを作ってください.という要望です.

Mahcine Learningとか,Learning Lispとか考えましたが,間に合わなさそうなのでこうなりました.

最近ようやく自分の中で,言語をある程度使えるようになるまでに必要なこと,毎回調べたりはまったりすることがパターン化されてきましたので下に大雑把にまとめてみました.

自分の中ではこの辺を学べたら(まとまってたら)あとはだいたいスムースに使えてる気がしてます.

言語固有のことを学ぶ意思ゼロに見えますね.

言語を学ぶ時に知りたいこと

コメントと自分のやってる対処法を一部書いています.

解決できてないことの方が多いので,みなさんのこうやってる.みたいなアドバイスとか各言語でここがおすすめのウェブページとか教えろください.

言語処理系とかのインストール方法

大体最新の物を入れようとするけど,rvmとかめんどかった気がする.

データ構造とそれの操作関数,基本的な関数とか

だいたい プログラミング言語の比較 > 基本的な処理 とか,その親の プログラミング言語の比較 あたりからたどればよさそう.

外部ライブラリ

こいつがいつもはまる.めんどい.

gemとかpipとかquicklisp,cpanm,...どれがいいんだよっていうのがね.できるだけググる時に最近の記事に限定して参照するようにはしてるけど,新しいのが出ても追えてない.

  • 読み込み方

requireとか

  • 探し方

Gentoo Portageでeixが便利で覚えやすかったので,~/.aliasにエイリアス書いてる.

alias pix='port search'
alias cix='shly ql:system-apropos'
alias aix='apt-cache search'
alias qix='shly ql:system-apropos'

全然言語関係じゃなかった...pixとかpipの検索にすりゃいいんだろうけど,pythonよりportの方が使う頻度多いですね.

基本ググるけど,いつもドキュメントとかサンプルコード探すのに苦労してる.言語ごとにメインのサイトとかはあるんだろうけど,初学者にはその流儀がわからない.

これも毎回ググる.そんで重い腰を上げてこんなスクリプト書いた.

そのうちもうちょっとましに書き直したい.

自作ライブラリ,クラスの作り方とか

オブジェクト指向できるならやりたい.得意ちゃうしそこまで大きくないプログラムのことが多いけど.

  • パス関係

クラスを作ったはいいが,いつも読み込み方,どこに置けば読み込めるのか,パスの指定方法はどうするのかではまる.

実行時のカレントディレクトリが変わったら読み込めなくなるとかまじめんどくさい.

テストコードの書き方

書き捨てのコードでもテスト書いて安心したいが,そもそもテストとかまだ書けない.勉強不足.

おわりに

なんかとりとめも無い列挙ですがこんな感じです.

こういうのを調べやすいウェブサイトとか作りたいなと思ってる時期もあったのですが,いつもの悪い癖で考えたら満足して手を動かせてないです.

P.S.

こんなのでよかったんでしょうか...

2012/01/06

= 右クリックで辞書.appの結果をpopupする. on Emacs

[2012-01-06 16:54:04]

CarbonEmacsの取り柄が死んだ

CarbonEmacsをいまだに使い続けている理由の一つに,command-ctrl-dでカーソル上の単語を辞書引きできる機能がありました.

Safariとかで使えるこれです.

f:id:peccu:20120106171300p:image

それがMacをLionにアップデートしたくらいから動かなくなった気がしてショックを受けておりました.

ふと id:hitode909 さんのpopup.elで辞書.appの結果を表示するの(これ)を思い出して,マウスカーソルの位置にある単語で辞書を引けるようにしました.

こんな感じです.わかります?カーソルの位置とpopupの位置がずれてるんです.

f:id:peccu:20120106171301p:image

ひとでさんのgist(これ)をforkしてprovideするように書き換えました.

インストール

このgist:1569550にファイルを一通り置きました.

  • dictionary.elをload-pathの通ったところに置く.
  • init.elにこんな感じに書く.

  • dictを作る

ひとでさんのブログコメントにdict.pyをObjective-Cで書き換えたもの(これ)が参照されていたので,そっちもgistにコピペしました.

dict.mを~/binにおいて,

gcc -o dict -Wall -fobjc-gc -O2 -std=c99 dict.m -framework carbon -framework cocoa

で~/bin/dictができます.

使い方

辞書を引きたい単語を右クリック(副クリック?)すると辞書を引いた結果がpopupされると思います.

コード

一応コピペできるようにdict.mとdictionary.elも載せておきます.

2010/12/07

= Kindle用にフォントを埋め込む

[2010-12-07 13:10:23]

Kindleで日本語PDFを読むために - 日記を書く [・w・] はやみずさんみてメモがてらシェルスクリプトにした.

pdf2kindle とか言う名前で保存してchmod +xね.

#!/bin/sh
if [ $# -lt 1 ]
then
    echo Usage: pdf2kindle input.pdf [output.pdf]
else
    pdf2ps $1 tmp.ps
    ps2pdf -dSubsetFonts=true -dEmbedAllFonts=true tmp.ps tmp.pdf
    if [ "$2" != "" ]
    then
        OUT=$2
    else
        cp $1 $1~
        OUT=$1
    fi
    mv tmp.pdf $OUT
fi

でも,ghostscriptが

$ gs
GPL Ghostscript  9.00 (2010-09-14)
Copyright (C) 2010 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Unrecoverable error: syntaxerror in token
Operand stack:
    --nostringval--  --nostringval--
sfopen: gs_parse_file_name failed.
sfopen: gs_parse_file_name failed.
  ./base/gsicc_manage.c:706: gsicc_open_search(): Could not find lab.icc 
| ./psi/zusparam.c:805: set_lab_icc(): cannot find default lab icc profile

こんなエラー吐いてて動かないからアップデート待ち.まーまだKindle買ってないからまだいいんだけど.

#583738 - ghostscripts pdftoraster fails printing from gtk apps - Debian Bug report logsこれによるとアップデートされる気がするんやけどなー

% locate lab.icc
/opt/local/share/ghostscript/9.00/iccprofiles/lab.icc
/opt/local/var/macports/software/ghostscript/9.00_4/opt/local/share/ghostscript/9.00/iccprofiles/lab.icc

lab.iccそのものはあるんやけど,また別の問題?

2010/09/10

= iPhoneSDKってHDDくいすぎ

[2010-09-10 00:09:43]

>>>[iphone]

>>>[xcode]

これひどくね?

ダウンロード3.15GB
インストールに必要な空き容量 8.12GB
インストール前の空き容量16.28GB
インストール後の空き容量14.97GB
インストールで消費した容量1.31GB

iOSのアップデートの度にCD音源のデータ15GBを外付けHDDに移動させなあかんってひどすぎやろ.

ほんで終わったら戻すっていうなんかもう...

てかバージョンアップだけに1GBも使うなよー

予告通りにいかなかったのでこの記事を今日の記事とします.ごめんちょ