2014年11月22日土曜日

自作Twitterクライアント作成の記録(30)Fragmentが想像以上に厄介だった件(解決)

AndroidでTabを使ったビューを作るときに推奨されてるFragment
一応2.2でも動くように目標を定めsupportv4ライブラリを使用して実装をし
(ちょっと古い画像だけど)
こんな感じに一応タブを作ったわけなんですよ。
ただこの後とあることでこのFragment(正確にはListFragment)が厄介なものだと知ることになりました。
そのあることとは
getLiatView()が使えない
どういうことなのかv4ライブラリにあるgetListView()メソッドはListViewを返してくれません。そのせいでListViewに項目を追加して表示を更新するたびに一番上まで戻される糞な状態に。

そしてさらに謎なのが
結構v4でgetListView()が使えるという日本語記事ばかりだったんですよね。
無論その方法で生成してみてもダメだったわけで、現在完全に止まってしまってます。

頼りの英語での記事も使えるって記述と使えないって記述が混在していてどうにもならない状態です。

おそらく3.0で追加されたものなのでそれと混じってるかどうにかしたらv4ライブラリのgetListView()でも取得できるのかもしれませんがこのままだとある意味の詰みです。
どうにかしてv4ライブラリでgetListViewが使用できる方法とかないんですかね?

追記
解決しました。
どうやらonActivityCreated()をオーバーライドしてそこでアダプターの作成とgetListViewを行うとちゃんと取得できるみたいです。
ほんとこんなややこしいのほんとありがとうございました(

2014年10月21日火曜日

自作Twitterクライアント作成の記録(29)アプリだけで連携解除がしたい

先日Twitterを何気なく見ていたら、PCを持っていない友人へ向けた連携解除の手順を示した画像が流れてきました。
そういえばアプリだけで連携解除が行えるようなものが無いなと思い、無いなら作ってしまうか

というわけでまずは完成品の画像をいくつか


2014年10月19日日曜日

26年度秋のFE午後試験のエディットグラフの生成方法を自分なりにまとめる

最初に
あくまで試験中に考えた結果なので間違いや矛盾が潜んでいる場合があります。
そんな時はそっとコメント等で教えてもらえるとうれしいです。

今回の午後必須問題でエディットグラフなるものが出現したので、それの生成方法を自分なりに、しかも試験中に考えた方法をまとめておきたいと思います。

まず、問題に書かれていたエディットグラフの生成方法をそのまま書いてみます。(なお{}内の文字は追加補足)

1.0 <= X <= Str1Len{Str1Lenは文字列1の文字数}を満たす全ての整数Xに対して点(X,0)から点(X,Str2Len){Str2Lenは文字列2の文字数}に線分を引く

2.0 <= Y <= Str2Lenを満たすすべての整数Yに対して、点(0,Y)から点(Str1Len,Y)に線分を引く。

3.0 <= X <= Str1Len, 0 <= Y <= Str2Lenを満たすすべての整数X,Yの組に対して、Str1[X]とStr[Y]が同一文字の場合、点(X,Y)から点(X+1,Y+1)に線分を引く。

とにかくややこしいですがとにかく一つ一つつぶしていきましょう。

例として
Str1[]="abcd"
Str2[]="gracd"
とし文字列のi番目の文字をi-1と表記(例 Str1のbは2番目の文字なのでStr[2-1])
としましょう
こんな風なXとYのグラフの元でも書きましょう。
そしてStr1の文字数をX
Str2の文字数をYとして考えると・・・

こんな風にこのグラフの限界値を決めることができます。
下準備が済んだところで、まず一つ目の定義をこのグラフに適用してみましょう。
0 <= X <= Str1Lenを満たす全ての整数Xに対して点(X,0)から点(X,Str2Len)に線分を引く
ということは。
今回の例の場合
0 <= X <= 4を満たす全ての整数Xに対して点(X,0)から点(X,4)に線分を引く
と書き換えれます。
つまりどういうことか図で描くと
1をグラフに描くとこうなります。
このやり方で2も同様に描いてあげると
こうなります。(線が均等じゃないのは勘弁)だいぶ近づいてきましたね。
ここまでが1と2の作業の内容になります。
ここから3を使って斜めの線を入れていくことになります。
まず3で何をやってるのか完結に言うならば

「一致する”文字”(列じゃないぞ)が”他の文字列中”に存在するかどうか」

を全文字に対してやっています。
そして一致する文字があり、それぞれStr1[X],Str2[Y]とするならば
グラフ上の点(X,Y)と点(X+1,Y+1)を線分で結んで上げるというわけです。

今回の例の場合
一致する文字の組み合わせは
Str1[0] = 'a'とStr2[2]='a'
Str1[2]='c'とStr2[3]='c'
Str1[3]='d'とStr2[4]='d'
この三つになるはずです。
これをグラフに赤い点で描いてあげると
こうなりそれぞれの点からX+1,Y+1に向けて線分を描いてあげたら
エディットグラフの完成

こんな感じでしょうかね?
え?最短経路の求め方?理解に時間が足らなかった勘弁してくれ。

2014年10月8日水曜日

どんなに読みやすい説明書を作ってもダメな気がしてきた

本日2014年10月08日は皆既月食(月蝕)の日です。

え?このタイトルからなんでその話になるのか?
まあこれを見てください、言いたいことがわかりますから
あと愚痴交じり&矛盾がある可能性があるため

決して全部鵜呑みにするようなことはしないでください。
これは当日19時53分時点でのTwitterのトレンド内容です。
もうお気づきの方もいると思いますが

はい、とても誤字とは思えないあれでフォローのしようも無いやつです。
(どうやったら間違うんだこれ)
ここで注目したいのは
「日食」という誤字(一応誤字扱いにしておく、納得出来ないが)でかなりのツイートがされていること。(多分ネタにしてるものもあるだろうが)
ニュースやTwitterの話題で見ていたから今日見ている人、その時時間に初めて知って見ている人もいるでしょうが・・・・・・

これはさすがにひどすぎね??

もうわけがわかないよ
要するに何を言いたいのか
少なくとも、宣伝等のニュースではこんな誤字は無かったはずなので
読んでる側がちゃんと理解していないorしっかり読んでない
ということが言えるのではないでしょうか?
全員が全員とは言いませんが(釣り等のネタでつぶやいてる可能性もあるため)
なんだか開発者目指してる立場からすると、自分の作った製品の説明書が読まれずに使われて事故でも起こされるんじゃないかと心配になった今日の騒動でした。

P.S.月食は綺麗だったよ、曇ってて見にくかったけど

2014年9月28日日曜日

ニコ動タグ消しツール「NicoTagClean」公開(バグで停止中)

今朝ブログに届いたコメントで思い出したんですがほぼ完成しておきながらちゃんと公開していないことに気が付いたので公開します。

説明書を同梱しているので使い方はわかると思いますが、こういう機能がほしい、こういう風な操作にしてほしい等の意見があれば、私のTwitterかブログのコメントで言ってもらえると嬉しいです。
出来る限り実装させたいと思います。

無論バグ報告もお待ちしております

ダウンロードはこちらから(Ver1.4.0しかありませんが前までの奴は欠番です)
わりとヤバいバグが今頃見つかったので公開停止中

2014年9月20日土曜日

自作Twitterクライアント作成の記録(28) リスト表示の対応

かなり前に実装していた機能ですが全くそれに関して触れていなかったことに気が付く今日この頃
完全に忘れないうちにメモとして残しておきたいと思います。


2014年7月27日日曜日

自作Twitterクライアント作成の記録(27)Twitterクライアントを作るなら最初に見るべき項目

タイトルにはこう書いてますが、こいつの存在を知ったのはつい最近です。

実は少し前にニコニコで生放送しながら開発進めていると同じようにクライアント作ってる人が来たんですよ、無論いろいろ話をしていたんですが突然「Developer Display Requirements」
という単語が飛んできたわけですよ。
今回はその「Developer Display Requirements」(この先DDRと略します)についてのお話です。

・DDRとは何ぞ?

端的にいうとTwitter社によるクライアントにおけるツイートの表示の仕方の指針。

詳しいことは
Developer Display Requirementsが更新されたので再び訳してみた
か原文の
Developer Display Requirements
を見てもらうとして、つまりはクライアント作るならこれに準じてね?ってことですはい。(一応例外もあるらしい)
守らないとアプリケーションキーが剥奪されるとか、でも全部クリアしてるクライアントあまり見ないんだが・・・・・(あるにはある)

まあそれは置いておいて、一応DDRが設定されている目的としては
「使用環境の一貫性の確保」
みたいですが
そもそも公式のUIやシステムが気に入らないからクライアントをだn(ry
って文句いっても仕方ないね。

とにかく、クライアント作るなら一度は目を通しておくと幸せになるかも(ならないかも)
ということで今回はこの辺で

2014年7月11日金曜日

自作Twitterクライアント作成の記録(26)SDKのアップデートでちょっと困った件

どうも、ここ最近またこいつの開発にはまる私ですよ。
今回はSDKのアップデートで起きたちょっとしたことの解決法をメモしておきたいと思います。


2014年7月9日水曜日

自作Twitterクライアント作成の記録(25)GooglePlayにアプリを置いてきた件

やったことはタイトル通りです、ついに一般公開してしまいました。
まだまだ機能は少ないですがこれから使える機能を増やした上にどんどん使いやすくできたらいいですね。

デベロッパコンソールからはこんな風に見えてます。
ここにDLカウンタが付く日はいつになるのやら。

と、報告はここまでにして、ちょっと公開する際に手間取ったことをいくつか忘れないうちにメモしておきます。


2014年7月6日日曜日

自作Twitterクライアント作成の記録(24)複数画像の扱いとツイート可能文字数の表示

ほんの少し前に私のフォロワーさんから複数画像の投稿に対応しないの?
というメッセージをいただいたのでさっそく実装してきました。

まず現状のライブラリで複数画像の投稿ができるのかと思い調べてみたら。

Twitter4Jで複数の画像をアップロードしてツイートする方法
という何ともドンピシャな内容が書かれたサイトにありつくことに。
これを見て思ったのは、どうやら一枚一枚アップロードしてから後でリンクを張るみたいな構造になってるんですね。こういうのも触れてみて初めてわかることなのかもね・・・
というのは置いておき、無論アップロードということなので通信の動作が入るため別のスレッド等でこの処理を書かないといけないわけですが、まあツイートを投稿する非同期のメゾットにぶち込んでおけば問題なく動くと思います。

で、このサイトで宣言されているpath1,path2という変数Fileという型ではなくStringのため
   uri= data.getData(); //選択した画像の受け取り
   ContentResolver cr = getContentResolver();
String[] columns = { MediaStore.Images.Media.DATA };
Cursor c = cr.query(uri, columns, null, null, null);

c.moveToFirst();   
            if(path1 == null){
    path1 = c.getString(0);
   }else if(path2 == null)
   {
    path2 = c.getString(0);
   }else if(path3 == null)
   {
    path3 = c.getString(0);
   }else if(path4 == null)
   {
    path4 = c.getString(0);
   }
という風にそのままpathとでも名前をつけた変数に代入しておくといいと思います。

ちなみに
             Intent intent = new Intent(Intent.ACTION_PICK);
         intent.setType("image/*");
         startActivityForResult(intent, 1);
等をボタン等のイベントに書いておくとギャラリーが開いて
   protected void onActivityResult(int requestCode, int resultCode, Intent data) {

  super.onActivityResult(requestCode, resultCode, data);
  if (resultCode != RESULT_OK) return;

  if (requestCode == 1) {
   uri= data.getData(); //選択した画像の受け取り
   ContentResolver cr = getContentResolver();
String[] columns = { MediaStore.Images.Media.DATA };
Cursor c = cr.query(uri, columns, null, null, null);

c.moveToFirst();
if(path1 == null){
path1 = c.getString(0);
}else if(path2 == null)
{
path2 = c.getString(0);
}else if(path3 == null)
{
path3 = c.getString(0);
}else if(path4 == null)
{
path4 = c.getString(0);
}
  }
  }
これでギャラリーで選択した画像が取れるみたいです。

1つ向こうのサイトで書いてることで気を付けておくこと
update.setMediaIds(new long[2]{media1.getMediaId(), media2.getMediaId()});
これの[2]の部分を[]にしないとコンパイルが通りません何故か。
配列定数は、イニシャライザーにおいてのみ使用可能です。
とか出て怒られます。
配列定数はわかるけど、イニシャライザーってなんだ?
今度調べよう。

さてタイトルにあるもう一つの項目文字数表示。
こちらも何故かドンピシャなものが
[Android] EditTextの入力文字数を動的にカウント表示する方法
こちらのソースを参考にさせていただきました。
あとは表示の仕方を自分で決めてしまうだけ。ね、簡単でしょ?(簡単じゃないフラグ)
まあとにかく、徐々にクライアントとして必要な機能はついてきているわけですよ。

そろそろGooglePlayで公開してもいいかな。
でもその前にアイコンと、アプリ名をもっとセンスのいいものに・・・・誰か案をくださいお願いしま(ry

最後に
え?DMでの画像投稿はどうしたって?
まだだよちくしょーーめ!

2014年6月26日木曜日

自作Twitterクライアント作成の記録(23)DM送信対応等

長いこと更新してませんでしたが、いろいろ忙しくてこちらまで手が回らない状況でした。
とにかく、DM送信(文字だけ)に対応させたので仕方のメモ的なものを残しておきます。

送信する際に使うもの(文字のみ)

mTwitter = TwitterUtils.getTwitterInstance(this);
mTwitter.sendDirectMessage(mentionID, params[0]);

mentionIDには相手方のUserID(Mention送信と同じでOK)paramas[0]には送信したい文字列を
あとは、返信等で使ったものを流用してDM送信機能の出来上がり。

画像送信の方は画像つきツイートと同じ要領でいけると思ってたらそうでもなく、なぜかうまく行かない・・・・うまくいったらまた書き換えておきます。

2014/07/06追記
タイトルの番号振り間違えてるorz

2014年4月28日月曜日

ニコ動でタグ荒らし用のツールがでたらしいんで

なんでも荒れるとあまりいい気はしませんよね、ということで今回の話題はこのツールに対しての私の行動をすこし


自作Twitterクライアント作成の記録(22) 環境を変えたら・・・・

どうも、おひしぶりです。
最近忙しくなってあまりプログラムを弄れない状況にいました。(主に大学)
行く日は片道1時間半かけて(この時間で講義聞ける)行ってます。関係ないですね。

さて、その大学で指定PCを買い、性能がかなり良かったので開発環境を移したのですが、その際発覚したアプリのバグについてすこし。


2014年4月20日日曜日

動画のタグに記事が出来ていた件

今回はプログラムとは全く関係ないお話をば
動画その65を投稿し終えて、一日後である今日。こんなコメントが付いていることに気がつきました。

えええええええええええええ?!(=゚ω゚)ノ
まじ?本気と書いてマジで?
マジでした。まさかこんな日が来るとは夢にも思いませんでした。
こうなると意地でも失踪なんて出来ませんな(もとよりそんな気さらさら無いんだけどさ)
動画作者としてはまだまだ未熟ですが(プログラミングもだけど)いつか来るラストミッションまで生暖かい目でもいいんで見守ってくれると嬉しいです。

2014年3月20日木曜日

自作Twitterクライアント作成の記録(21) デベロッパ登録してきた

とま、タイトルに書いてますが。
今日デベロッパ登録してきました。25ドル払ってきましたはい。

ということで

近いうちにAndroidマーケットで私のアプリがダウンロードできるかも(需要あるかしらんけど)

まあ、その時は・・・・よろしくです。

CLEOについて その3 簡単なCSを作ろう!

かなり前回から日が空いてしまいましたね。正直スマン。
さて今回は前回言いましたが、簡単なMODを組んでみましょう。

※注意今から言うことはCleo3 WikiOpecoder Wikiかなりふつう等のサイトでもでも解説されてたり、Opecoder Wikiに関してはMOD作りに必須な情報も載っているので一度見ることをお勧めします。

毎度のことだねホント


2014年3月17日月曜日

Twitterの規制条件が緩んだ?件

いやーみなさんもおそらくやっているであろうTwitterやっている人ならわかると思いますが規制というシステムがあり、これに悩まされてる廃人の方も多いはず。

しかし、つい最近とあるきっかけでこれが緩んだのではという説が浮上している。

2014年3月12日水曜日

自作Twitterクライアント作成の記録(20)ようやくストリーミング安定?

さて、久しぶりの更新。最近リアルで忙しいから仕方ないね。
まあ、今回は開発進めてるよーって報告程度なので簡潔に。

おそらくストリーミングが安定しました!

↑ここ重要なとこです。

いつもの様に例の場所(OneDriveという名の物置)にAPKファイルを置いておくので、もしデバックに協力してくれる人がいたら協力していただけると嬉しいです。
こんな糞アプリに来るのか?)←自虐ネタ

そろそろAndroidのデベロッパ登録でもしてMarket上での配信を考えた方がいいのかな?
でもそれならあのアイコン(ひらがなの「つ」)をどうにかしたいとも思ってたり、でもあれでよくね?て思ってる自分もいたり。

なにかコメントいただけると嬉しいです。

最後に、もし需要があれば今回のストリーミング部分の汚いソースを公開するかも。
役に立つかどうかは知らない。

2014年2月16日日曜日

自作Twitterクライアント作成の記録(19)β0.9.8について

最近とある理由でAndroidのソフトを触る時間を増やしているつもりである。
という前置きは置いておいて今回の更新内容を

プロフ画面からフォロー数と、フォロワー数を見れるようにし、現在設置プロフ画面に設置しているボタンのすべてが使えるように。

プロフ画面にてスクロールを可能に(小さい端末に対応したつもり)

ストリーミング有効時、リプライ、ふぁぼ、RT、フォローがあると通知をするようにした
(バックグラウンドでも一応通知する模様、ただし、いつまで持つかは未検証)

このようになっております。
ところで、一つ前でエミュレータで接続できなくなったと書きましたが、どうやら時間が大幅にずれていた為だったみたいです、タイムゾーンがずれていても日付と時間があっていれば大丈夫な模様。

また、DMの機能作ると言ったな・・・・・あれは嘘d(うわなにをするやめ・・・・

真面目にしよう

一つ重要な連絡
どうも、ストリーミングでツイートを取得していると内部的なズレが起きて選択したものと全く違うツイートが選択されるみたいです。
また、最後のツイートの位置も上手く取れないみたいです。

とにかく直そう・・・・

2014年2月12日水曜日

現在一部ユーザーでユーザータイムラインが古いのしか取れない?(追記2014年2月16日)

現在いたるところでユーザタイムラインが古い(2/10以前)ものしか取れなくなっているみたいです。
通常のタイムラインや、リプ等は正常に動いてるみたいですが、ユーザータイムラインをよく見る人は要注意されたし。

2014年2月9日日曜日

ニコ動のコメントだけをAndroidで・・・・

先日動画の編集中にとあることを思った。
画面が一つしか無いからコメント返しががが・・・・・
私のPCだと、編集する際画面いっぱいを使わないと満足に編集すらできなくなるんですが、これにコメント返しをしようと思うとさあ大変。
スマホでコメントのみを表示するものは無いし・・・・どうするか・・・・ん?
だったら作ればいいじゃん!ということで使える程度のものが完成したので少し紹介。

2014年1月26日日曜日

GTASAで車(乗り物全般)の制御をする時のお話

CLEOを作っていると一度はしたくなる車の制御
私自身、車から脱出させたり、ニトロさせたり、RPGを飛ばしたり(ほとんどⅣのインフェルノMODの逆輸nyゲフンゲフン)

まあ、それはさておき・・・・
通常ゲーム内のものを制御しようとすると、その対象が存在していないとフリーズやエラー等のバグの元になりかねません。
その際、制御対象が存在しているかを確かめる方法によっては、ほんの少し挙動が違うことがあるためここにメモしておきます。


2014年1月18日土曜日

GTASAメテオMODでプレイで使用しているMODの詳細と入手先

MOD自体はバックアップをとっているものばかりですが全部が全部というわけにもいってないので、ここいらで記録用に書いておきたいと思います。
(あと、自分のMODの仕様を変えた時に変えたところを整理しやすくするためでもある)

2016年2月6日更新

2014年1月13日月曜日

自作Twitterクライアント作成の記録(17)β0.9.5について

さて今回から、ブログの方でアプリを更新したら内容等を書いていこうと思います。
なんせまだストアになんて並べられる代物じゃないし、なによりクレカを持っていないため、デベロッパ登録ができないため(いつかはするつもり)

β0.9.5の変更点
・ストリーミング時に放置しててもツイートが流れてくるようになった。
 ただし、たまにすぐに来なかったりで、他のバグが酷いためまだまだ実用範囲じゃない、今現在はあくまで遊び用


次はこいつの実装で手をつけてないDM関連やプロフ画面からの画面移動でも実装しますかね。

自作Twitterクライアント作成の記録(16)やっぱりストリーミングがうまく動かない

あれから何度も調べていたんですが。
ArrayAdapterにアイテムを追加してそれを反映させるためにはnotifyDataSetChanged()を呼んであげるといいらしいんだけど、
確かにアイテムは追加されるんだけど、反映させるのにスクロールしたり、メニューだしたり、つまり放置しておいて、どんどんListが流れていくという理想の動きにならずに悪戦苦闘中。
(Logではちゃんと即時にツイートが流れてきている様子)

一応自己解決・・・だけどこれが正しいのかわからない。
今度自分流の対処を書いておきますはい。

2014年1月1日水曜日

自作Twitterクライアント作成の記録(15)なぜこうなった・・・・

しばらく、更新を止めてましたが、まあ、ブログの方はずっと残しておきたいことを書いてるだけだから仕方ないね。

とりあえず少し前に詰まった、というか、なぜこうなったというところを少し