2013年12月27日金曜日
自分のプロフィールにも検索結果にも表示されない謎のG+投稿
見えない投稿の URL はhttps://plus.google.com/115653424494952359766/posts/YEDiDGjAkY2 です。
2013年12月21日土曜日
データ専用SIMでCell IDをわかるようにする
- アンテナピクトが立たない
- セルスタンバイが異常に電力を消費しているように見える
- セルID (携帯基地局のID)がアプリにわからなくなり位置情報が不正確になる
電話アプリから *#*#4636#*#* と入力して出てくる隠しメニューで携帯電話情報→CellInfoListRateを押すとセル情報の中にセルIDが表示されている場合、携帯電話自体はセルIDを認識しているがソフトウェアのどこかがアホなのでアプリのセルIDを伝えることが出来ていない。その場合、android 4.3の場合は
GsmCellLocation mNewCellLoc = (GsmCellLocation) getObjectField(param.thisObject, "mNewCellLoc");
List<CellInfo> mLastCellInfoList = (List<CellInfo>) getObjectField(param.thisObject, "mLastCellInfoList");
if (mLastCellInfoList.size() > 0) {
CellIdentityWcdma ci = (CellIdentityWcdma)callMethod((CellInfoWcdma)(mLastCellInfoList.get(0)), "getCellIdentity");
if (ci.getCid() != -1) {
callMethod(mNewCellLoc, "setLacAndCid", callMethod(ci, "getLac"), callMethod(ci, "getCid"));
callMethod(mNewCellLoc, "setPsc", callMethod(ci, "getPsc"));
}
}というコードをドコモSIMパッチャーに追加して、セルID情報をアプリがアクセスする変数に移してあげるとandroidアプリがセルIDをわかるようになることもある。上記の変更を施したjavaソースをここに置く。コンパイルしてAPKにしたものをここに置く。注意事項:
- 2013年12月21日にAPKを更新し、繋がっているのにcell IDが表示されないことがある問題をcom.android.internal.telephony.gsm.GSMPhone:getCellLocation()もhookすることで対応した。
- 上に置いたAPKだけインストールしても何も起きない。まずrootを取ってxposed frameworkをインストールして使えるようにしてから、上に置いたAPKをインストールしてxposed frameworkを起動してドコモSIMパッチャーを有効にして下さい。
- LTEと2G GSMにも対応しているはずだがテストする環境が無いからテストできていない。上記のコードはWCDMA決め打ちだが実際のソースコードとAPKは決め打ちしていない。
- Android 4.3でしか効果はない。Android 4.4はデータ専用SIMでもセルIDがアプリに渡されるからこのxposedモジュールは不要。Android 4.2.2以下では関数名や変数名を変更しないといけないが、テストする環境が無いのでAndroid 4.2.2以下用のコードは何もいじっていない。
- 上記のJAVAソースからAPKをコンパイルして作る場合、ドコモSIMパッチャーの2013年7月26日版のソースコードのjavaファイルを置き換えて、AndroidManifest.xmlのminSdkVersionを18に増やして下さい。
この件は作者の方に以下のようにGoogle+投稿のコメント欄にて連絡済みです。
これ以上プログラムのロジックをいじる必要は無いと思うが、ご意見ありましたら以下のコメント欄などでお知らせ下さい。
2013年12月20日金曜日
Google Mapバージョン6(Androidアプリ)
- My Mapが未だに復活していない。
- 公共交通機関を用いたナビが復活していない。知らない土地(外国含む)でバスに乗りGPS位置情報で降りるバス停が近づくと教えてくれるのが大変便利だったけど、バージョン7では公共交通機関のナビそのものが未だに復活していない。
インストール方法
端末に最初からインストールされたGoogle Mapがバージョン6以下またはインストールされていない場合
- Google Playでアプリの自動更新を禁止する
- Google Mapをアンインストールする
- 上記のGoogle Mapバージョン6APKをダウンロードしてインストールする
最初からGoogle Mapバージョン7がインストールされている場合
この場合、残念ながらGoogle Mapをアンインストールするためにroot権限を取る必要があります。- Google Playでアプリの自動更新を禁止する
- Google Mapを普通のやり方でアンインストールする
- root権限を取る(これは1の前でもよい)
- Root Uninstallerなどのアプリを用いて最初からインストールされているGoogle Mapをアンインストールする
- 上記のGoogle Mapバージョン6APKをダウンロードしてインストールする
2013年10月1日火曜日
LFGideos X1インストール記
ideos(日本通信が売っている8150Bのほうでemobileが売っているのはダメ)のメリットは
- SIMフリー
- FOMAプラスエリア対応
- 標準サイズのSIM対応
- Google Play開発者サービスをインストールできない。これは最近のGoogle製アプリの大半で必要になり、Google製アプリの最近のバージョンを起動すると自動的にGoogle Play開発者サービスをインストールしようとし、失敗してアプリが起動しない。
- Googleアプリを更新されると上記の症状で使用不可能になることがあるから、Google Playの自動更新をOFFにして勝手にアプリを更新されないようにする。特にYoutubeを更新すると使えなくなるから、更新してはいけない
- Google+やgoogle my tracksアプリは古いバージョンのapkを拾ってきてインストールする。Google+はバージョン3.5.3、my tracksは2.02をインストールできる。
- 実メモリーが少なすぎるからSwapper for Rootをインストールすると多少動作が速くなる。
2013年6月7日金曜日
ガラパゴス化のすすめ
私は以下のような背景で日本の鎖国を推薦しているのですが、誰からもまったく賛成してもらえません。なお最初の段落の外国からの投資は2011年の外国からの対日投資がマイナスだった、すなわち投資が引き上げられていた、という下記記事が背景にあります。
「米国化」が進む日本、いずれ「三つ子の赤字」に陥る外国から見て日本が投資先として魅力的にするためにどうすればいいか検討するためには、まず外国人や企業の背景や置かれている立場を理解して外国からの目線で考えないといけないけど、9割くらいの日本人はそういう外国人の立場に立って考えてみることが嫌いか、そもそも日本人以外の人間が存在することを認識していないと思います。大阪の橋下市長の発言は日本国内向けとしてはまあいいかも知れないけど、外国からどういう反応を受けるかまったく想定していないように見える。橋下さんの脳内では、日本国外には人間がそもそも存在していないとしか思えない。だけどそれは橋下さんだけが特別ではなくて、日本の外側に日本とはまったく違う背景・前提・世界観・常識で生きている人間がいるってことを実感としてまったく分かっていない日本人が9割くらいを占めていて、そういう9割の世論に沿って日本の進路が決まってくるので、外国から見てどう見えるかという観点とはまったく無関係に日本は今後も進んでいくと予想します。たまたままぐれで日本が外国から見て投資先として魅力的になる可能性はあるけど。
鎖国しちゃうと、オイルが無くて農薬と化学肥料も十分に使えるかどうか謎なのでから1日15時間くらい人力だけで畑を耕したり刈り入れしたり雑草を取ったりウンコから作った堆肥を撒きます。人力がとにかくいるので子供を生んだお母さんも子供をおんぶ紐で背負って産後1週間くらいから畑に出ます。農閑期以外は土日休日まったく無しです。それだけやって天候不作だと餓死者が出る世界を想定しています。気骨の無い人は当然死ぬし、一生のほぼ全てが労働だけで終わるので萌え萌えキュンも無いです。でもそうやれば外国人とかかわり合いにならなくて済むから生き残った日本人はハッピーだと妄想しているんだけど、まったく誰も賛成してくれないんですよねー。藤原正彦先生も、江戸時代の日本人はこの段落のような生活で幸福だったと書いています。
鎖国した場合にはオイルが無いからトラクターとかは使用不能だと思いますが、農薬と化学肥料が使えるのかどうかを今のところ判定できていません。 また、機械と農薬と化学肥料を使えない江戸時代は3000万人くらいの人口しか養えなかったので、そこからはみ出した人は餓死することを想定しています。
2013年6月5日水曜日
Google+ APIが現在バグっています
- HTTP APIのcomments list
- Javascript APIのgapi.client.plus.comments.list
この件はGoogle+ Developer Forumでも話題になっています。
$ wget -t 1 -S -O - https://www.googleapis.com/plus/v1/activities/z125jb5yhq3dyfwe5224exwiqruvtda0i/comments?key=AIzaSyA5ti-m7T8gFzR5uuMR6EJB7KygMaDr0hk
--2013-06-05 20:08:29-- https://www.googleapis.com/plus/v1/activities/z125jb5yhq3dyfwe5224exwiqruvtda0i/comments?key=AIzaSyA5ti-m7T8gFzR5uuMR6EJB7KygMaDr0hk
www.googleapis.com (www.googleapis.com) をDNSに問いあわせています... 74.125.31.95
www.googleapis.com (www.googleapis.com)|74.125.31.95|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています...
HTTP/1.1 200 OK
Expires: Wed, 05 Jun 2013 11:08:30 GMT
Date: Wed, 05 Jun 2013 11:08:30 GMT
Cache-Control: private, max-age=0, must-revalidate, no-transform
ETag: "egWOTnJQshDUW7mcQ5TTH5LK5kQ/scHVPJwUGGN-8wgFh93QhFozvKc"
Content-Type: application/json; charset=UTF-8
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE
Transfer-Encoding: chunked
長さ: 特定できません [application/json]
`STDOUT' に保存中
[<=> ] 0 --.-K/s {
"kind": "plus#commentFeed",
"etag": "\"egWOTnJQshDUW7mcQ5TTH5LK5kQ/scHVPJwUGGN-8wgFh93QhFozvKc\"",
"title": "Google+ List of Comments for an Activity",
"items": [
{
"kind": "plus#comment",
"etag": "\"egWOTnJQshDUW7mcQ5TTH5LK5kQ/mcBpYjFXrhKAFa8MJXGdw2j6DIo\"",
"verb": "post",
"id": "z125jb5yhq3dyfwe5224exwiqruvtda0i.1360594391049454",
"published": "2013-02-11T14:53:11.049Z",
"updated": "2013-02-11T14:53:11.049Z",
"actor": {
"id": "113706774556650311061",
"displayName": "Sancho Virág Attila",
"url": "https://plus.google.com/113706774556650311061",
"image": {
"url": "https://lh3.googleusercontent.com/-9AVmWRcEmwA/AAAAAAAAAAI/AAAAAAABgrM/zA_wxyVts7s/photo.jpg?sz=50"
}
},
"object": {
"objectType": "comment",
"content": "Sorry for a lot of comments, but I have a new problem. :)\u003cbr /\u003eAll page shows all posts which created for one only. What could be the problem?\u003cbr /\u003e\u003cbr /\u003eExample I shared this the test shared post which included comments: \u003ca href=\"http://goo.gl/mltze\" class=\"ot-anchor\" rel=\"nofollow\"\u003ehttp://goo.gl/mltze\u003c/a\u003e\u003cbr /\u003eBut the same G+ comments included on this page also: \u003ca href=\"http://goo.gl/BTNxV\" class=\"ot-anchor\" rel=\"nofollow\"\u003ehttp://goo.gl/BTNxV\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003e(tnx \u003cspan class=\"proflinkWrapper\"\u003e\u003cspan class=\"proflinkPrefix\"\u003e+\u003c/span\u003e\u003ca href=\"https://plus.google.com/113265892681003873244\" class=\"proflink\" oid=\"113265892681003873244\"\u003eMartin Matysiak\u003c/a\u003e\u003c/span\u003e)"
},
"selfLink": "https://www.googleapis.com/plus/v1/comments/z125jb5yhq3dyfwe5224exwiqruvtda0i#1360594391049454",
"inReplyTo": [
{
"id": "z125jb5yhq3dyfwe5224exwiqruvtda0i",
"url": "https://plus.google.com/102817283354809142195/posts/Ch1e36yt4aD"
}
],
"plusoners": {
"totalItems": 0
}
},
{
"kind": "plus#comment",
"etag": "\"egWOTnJQshDUW7mcQ5TTH5LK5kQ/8waRZoGwv8DlAa-CZPGS0-mydoQ\"",
"verb": "post",
"id": "z125jb5yhq3dyfwe5224exwiqruvtda0i.1360697414606157",
"published": "2013-02-12T19:30:14.606Z",
"updated": "2013-02-12T19:30:14.606Z",
"actor": {
"id": "102817283354809142195",
"displayName": "Jenny Murphy",
"url": "https://plus.google.com/102817283354809142195",
"image": {
"url": "https://lh4.googleusercontent.com/-yth5HLY4Qi4/AAAAAAAAAAI/AAAAAAAAPVs/fAq4PVOVBdc/photo.jpg?sz=50"
}
},
"object": {
"objectType": "comment",
"content": "\u003cspan class=\"proflinkWrapper\"\u003e\u003cspan class=\"proflinkPrefix\"\u003e+\u003c/span\u003e\u003ca href=\"https://plus.google.com/113706774556650311061\" class=\"proflink\" oid=\"113706774556650311061\"\u003eSancho Virág Attila\u003c/a\u003e\u003c/span\u003e They both contain the same ID on lines 68 and 131 respectively:\u003cbr /\u003e\u003cbr /\u003e <div class="g-comments-for z12ewluort3ygpsqo04cgrmi1y2rvrqgwlk0k"></div>\u003cbr /\u003e\u003cbr /\u003ez12ewluort3ygpsqo04cgrmi1y2rvrqgwlk0k is the value that controls where the JavaScript will pull the comment from."
},
"selfLink": "https://www.googleapis.com/plus/v1/comments/z125jb5yhq3dyfwe5224exwiqruvtda0i#1360697414606157",
"inReplyTo": [
{
"id": "z125jb5yhq3dyfwe5224exwiqruvtda0i",
"url": "https://plus.google.com/102817283354809142195/posts/Ch1e36yt4aD"
}
],
"plusoners": {
"totalItems": 0
}
}
]
}
[ <=> ] 3,532 --.-K/s 時間 0.001s
2013-06-05 20:08:30 (5.12 MB/s) - stdout へ出力しました [3532]
2013年6月1日土曜日
Google+の記事についたコメントをブログやWEBページに貼り付ける
がありますけど、上記のやり方は特定のURL(WEBページ)と関連したGoogle+コメントしか表示できません。従って、例えばNoz Oさんのブログのように、最初にGoogle+に投稿した記事をその後にブログ記事にした場合、元のGoogle+記事がブログと関係づけられていないから、Google+コメントを上記のやり方ではブログに表示できません。そういう場合に、Google+の投稿についたコメントをG+以外のWEBページやブログに貼り付けるやり方を説明します。
- APIキーというものを以下の手順で取得します
- https://code.google.com/apis/console/をクリックして下さい。
- 左側の「Service」をクリックしてから「Google+」をクリックして下さい。始めての場合は「OFF」を「ON」にする必要があります。
- 左側の「API Access」をクリックするとAPI keyが表示されます。
- 対象となるGoogle+記事の記事IDをhttp://wheresgus.com/urltoidに記事のURLを入力して取得します。リンク切れの場合はhttp://gusclass.com/blog/2012/12/18/getting-an-activity-id-from-a-google-post-url/から辿って下さい。その方法がうまく動かない場合Google+記事のHTMLソースを表示して「data-update-id」をサーチすると記事IDがわかります(2013年6月1日現在)。例としてhttps://plus.google.com/102903912989809953917/posts/dxwNTTYaBmqの記事IDはz13odvgjpw2uvvzyw04cdfcjlxnyvtzpqy40kであることがわかります。
<div class="g-comments-for 記事ID"></div>
<script type="text/javascript">
// This file was originally made by Jennifer Murphy, and
// downloaded from http://little418.com/2011/12/google-comments-on-your-static-html-blog.html
var commentr = commentr || {};
var apiKey = "APIキーをhttps://code.google.com/apis/console/をから入手して下さい";
function commentrLoad() {
gapi.client.load('plus', 'v1', commentr.go);
gapi.client.setApiKey(apiKey);
}
// search for g-comments-for classes
commentr.go = function() {
// Find the comment elements to process
var fetchElements = document.getElementsByClassName('g-comments-for');
for (var i=0; i < fetchElements.length; i++) {
var activityId = fetchElements[i].classList[1];
commentr.fetchComments(activityId);
}
}
commentr.fetchComments = function(activityId) {
var request = gapi.client.plus.comments.list({
'activityId': activityId,
'maxResults': '500'
});
request.execute(commentr.parseComments);
}
commentr.parseComments = function(responseJson) {
var activity = responseJson.items[0].inReplyTo[0];
var comments = responseJson.items;
//find element to insert into
var insertionElements =
document.getElementsByClassName('g-comments-for ' + activity.id);
var insertionElement = insertionElements[0];
var newContents = "";
for (i = 0; i < comments.length; i++) {
var actor = comments[i].actor;
var commentBody = comments[i].object.content;
//do the insertion
newContents += "<dt><a href='" + actor.url + "'><img src='" +
actor.image.url + "'> " + actor.displayName +
"</a>:</dt><dd>" + commentBody + "</dd>";
}
insertionElement.innerHTML = "<dl>" + newContents +
"</dl> <p class='g-commentlink'>コメントを追加するには <a href='" +
activity.url + "'>ここ (Google+に移動)</a> をクリックして下さい.</p>";
}
</script>
<script type="text/javascript" src="https://apis.google.com/js/client.js?onload=commentrLoad">
</script>
以下はグーグルブロガーが提供するこのブログ記事へのコメント欄です
2013年5月22日水曜日
wheezy (Debian Linux 7.0)にアップグレードしたらpukiwikiが動かなくなった
- Error: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525/suhosin.so' というエラーがerror.logに書いてある場合、wheezyでphp5-suhosinパッケージが無くなったことが原因なので、apt-get --purge remove php5-suhosin するとこのエラーは消える
- ここに書いてあるやり方でpukiwikiのソースを修正する。hex2binとhtmlspecialchars関数がphp 5.4で変わっているのが原因でそこらへんを修正すればうまく動くようになる。
2013年5月19日日曜日
Google Schemer
しかし、自分が登録したやりたいことを削除したら新しいことを登録できなくなり、まともに使えなくなった。なので自分のandroid端末からアンインストールした。
2013年5月17日金曜日
ubuntuとdebian linuxにおけるMIME補助プログラムの設定
なお、mew取説の該当部分はここ(setq mew-prog-msexcel-ext "libreoffice")(setq mew-prog-mspowerpoint-ext "libreoffice")(setq mew-prog-msword-ext "libreoffice")(setq mew-prog-ooffice "libreoffice")(setq mew-prog-pdf-ext "evince")(setq mew-prog-postscript "evince")
2013年5月13日月曜日
NFSホームディレクトリでログイン出来なくなった
- Debian/Linux 7やUbuntu Linux 13.04のクライアントから
- Debian/Linux 6で動いているNFSサーバーを
- サーバー側で kernel: lockd: cannot monitor クライアントパソコン名
- クライアント側で lockd: server サーバー名 not responding, still trying
対応策としては、なぜかNFSがtcp経由で行われているので、クライアント側の/etc/fstabにproto=udpを付け加えれば直った。proto=udpを付けると、クライアント側で「lock,local_lock=none」付けてNFS経由でのロッキングを完全に行うようにしても、今のところ問題なく動作している。なお、ロッキングがうまくいっていないときは、ここにあるサンプルプログラム がうまく動かずクライアント側で実行したときにハングアップするが、ロッキングがうまくいくようになると前述のサンプルプログラムがうまく動作するようになる。