tag:blogger.com,1999:blog-16146768737377805142024-03-05T17:14:21.981+09:00visible trueちょいAndroid。Typescriptいいよ。JenkinsとかGradleとか。APTもいいなー。yagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.comBlogger76125tag:blogger.com,1999:blog-1614676873737780514.post-3721641000069960312014-01-08T01:39:00.002+09:002014-01-08T01:39:49.597+09:00Github Pagesに移行しました。やっぱmarkdownで書けないのはだるいのでhttp://sys1yagi.github.io/に移行しました。yagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.com0tag:blogger.com,1999:blog-1614676873737780514.post-43224306219979029592014-01-01T21:04:00.001+09:002014-01-01T21:05:59.648+09:002013年振り返り、2014年目標
2013年振り返り
2012年振り返り&2013年の目標を元に振り返る。
仕事
Jenkins氏を仕事で使う
使ってる。けど管理はまだ人任せな感じあるので色々やっていきたいなー。
TDDやる
ギリギリ。個人開発のアプリとかでは概ねやってる感じはある。もっと色々やっていきたい。
時間管理まじ頑張る
まずまず。もっとがんばらんといかん気はしている。
「エンジニアのための時間管理術」
を読んで色々。後輩に貸したままなのでもう一冊買おう。
手帳を持つ
もった。捗る様になったけどまだWebサービスとの使い分けとかがまだまだなので「エンジニアのための時間管理術」読みなおして自分のスタイルを色々あれしたい。
技術
AOSPに貢献する
むりだった。
本を書く
書いた。能動的に動いた結果機会に恵まれ、色々と大変だったけど無事年内に発売できた。執筆がだいたい半年かかったのでほぼyagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.com0tag:blogger.com,1999:blog-1614676873737780514.post-9937449681012809932013-12-21T23:51:00.001+09:002013-12-22T00:04:27.838+09:00POJOをActivityにしちゃうDIコンテナ「Transfuse」の話。 こんにちは。Androidライブラリおじさんです。Android Advent Calendar 2013 21日目の担当です。TransfuseというAndroid向けの凶悪なDIコンテナがあったので人柱がてら触ってみました。使い方や出来る事などを簡単にまとめます。
サンプルコードはhttps://github.com/sys1yagi/TransfuseSampleで公開してます。Android Studio用です。
宣伝
本出たり出そうだったりしてます。どっちもいい感じです。年末年始に是非!
Androidオープンソースライブラリ徹底活用
Effective Android
結論
TransfuseはPOJOにアノテーションベースでDIするので設計がだいぶ縛られるけど、これこそDIの正しい設計なのかもしれないと思いました。yagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.com0tag:blogger.com,1999:blog-1614676873737780514.post-9406615511608569292013-12-12T00:22:00.001+09:002013-12-13T14:43:51.783+09:00ViewStickerを作りました。 ViewStickerというセクションヘッダ固定のような事をScrollView上で出来るライブラリを作りました。ついでにGithubで公開しました。-> コチラ
大体以下の様な動きをします。
potatotips (iOS/Android開発Tips共有会) 第2回
で発表してきました。potatotips2とは
Potato02 ViewSticker作りました from Toshihiro Yagi
使い方
まずはレイアウトXMLを作ります。ViewStickerを使うにはFragmeLayoutとScrollViewが必要です。以下の様な感じでScrolViewをFrameLayoutでくるんで、ScrollViewに具を詰めます。
<FrameLayout
xmlns:android="http://yagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.com0tag:blogger.com,1999:blog-1614676873737780514.post-50433040243706469212013-11-17T23:12:00.000+09:002013-11-17T23:17:26.118+09:00Android 4.4 詳解 Printing Framework 後編 1週間ってアッという間ですね。「Android 4.4 KitKat 冬コミ原稿リレーを開催」の11/9担当のsys1yagiです。
Printing Frameworkの後編という事で、PrintServiceについて解説します。印刷の出力部分を実装する話は「Android 4.4 詳解 Printing Framework 前編」を参照して下さい。
サンプルコードとしてDropboxにPDFをアップロードするDropboxPrintServiceを作りました。ソースはコチラ→DropboxPrintService
PrintServiceとは
PrintServiceはプリンタの検出と、印刷ジョブの処理を行うサービスです。ネットワークプリンタのドライバの様な役割をする他、PDFを任意の場所に出力するサービスとしても実装できます。
PrintServiceの追加や設定
yagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.com1tag:blogger.com,1999:blog-1614676873737780514.post-14548439785400642502013-11-10T00:54:00.000+09:002013-11-17T15:55:34.183+09:00Android 4.4 詳解 Printing Framework 前編 俺がPrinting Frameworkだ!という事で、「Android 4.4 KitKat 冬コミ原稿リレーを開催」の11/9担当のsys1yagiです。
本記事では、Android 4.4で追加されたPrinting Frameworkで出来ることや、アプリケーションでPrinting Frameworkを使う方法などを解説します。内容はPrinting Contentをベースにしています。のちほどPrinting Contentの日本語訳も公開する予定です。
今回の解説に登場するコードはGithubで公開しています。→PrintingFrameworkSample
エミュレータとGalaxy Nexusに焼いたAndroid 4.4で動作確認しています。N5マジほしい。
Printing Frameworkの概要
Printing Frameworkは、yagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.com1tag:blogger.com,1999:blog-1614676873737780514.post-40423362510081488842013-09-18T10:39:00.001+09:002013-09-18T10:39:41.743+09:00Android SDK tools 22.2で新しいプロジェクトが作成できない問題を直す 昨日Android SDKがアップデートされたようです。Android SDK tools 22.2。すると新規プロジェクト作成の際ウィザードで以下のエラーが出て進めなくなるそうです。
このエラー最近みたなーCode Template触ってるときになー。あー。template.xmlだろうかねー、という事で色々見たら動く様に出来たのでメモっておきます。Code Templateってなにという方は「Using Code Templates」を読むといいんじゃないでしょうか。
※Issueにもあがってるしすぐ直ったバージョンが降ってくると思いますが、緊急の場合はまーやったらいいと思います。
Eclipse+ADTの場合
結論から言うとCode Templateのtemplate.xmlが腐っています(正確にはCode TemplateのアップデートにADT plugin側が追い付yagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.com0tag:blogger.com,1999:blog-1614676873737780514.post-45645111113510786922013-09-16T00:49:00.002+09:002013-09-16T00:49:24.655+09:00Genymotionのエミュレータはマルチタッチをサポートしていた Genymotionはサックサクでいいなー、でも今のところ4.1.1以上のエミュしかないっぽいので、古いの試す時めんどいなー、とか思いつつGenymotionの公式をちらほら見ていたら「マルチタッチ出来るぜ!」みたいな事が書いてあって驚いたので試したらマジで動いたので書く。
Multi-touch Gestures
Android SDKの「Android Virtual Device Manager」で作って動かすAndroidのエミュレータはいまだにマルチタッチのサポートをしていない!→だから辛い!→iOSのシミュなら出来るのに!→でもまーエミュ使わないしいいか!→Genymotionはエミュのくせに早い!→マルチタッチやっぱほしい!→「出来るで」→(^q^)
User Guideの"Genymotion Application"の所に"Multi-touch yagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.com1tag:blogger.com,1999:blog-1614676873737780514.post-90769865741175236842013-09-11T00:20:00.001+09:002013-09-11T00:21:06.548+09:00Android Studio 0.2.7をビルドしてみた(Macで) Android Studioをキッチリ触っていこうかなーと思っていたら、なんかこの辺り(http://tools.android.com/build/studio)に「Android Studioのソースはここやで」、とか書いてあったので早速ソース落としてビルドしたら簡単だったのでメモっておきます。
ソースを取得する
ソースはrepo initでリポジトリの設定してrepo syncするだけです。もしrepoが無い場合は以下を参照して入れて下さい。
Downloading the Source :
http://source.android.com/source/downloading.html
Android Studioのソースをダウンロードする為のディレクトリを作り、そこで以下のようにrepo initします。そしてrepo sync。
mkdir aosp; cdyagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.com0tag:blogger.com,1999:blog-1614676873737780514.post-75234254225062063792013-08-06T17:45:00.000+09:002013-08-06T17:45:57.354+09:00ディーペスト問題の星間直行便のソーシャルグラフをarbor.jsで描いたよ
先日CodeIQで結城 浩さんが出題していた星間飛行ルートを作ろう!に挑戦したのでその解答をポストします。あとついでに今回の問題で使われたデータをarbor.jsを使って可視化したのでそれも載せておきます。
結果は満点の5点でした。わーい。
問題の概要
今回の問題は、特定のポイントを経由し、目的地までたどり着くルートを算出するというものでした。ルートはWeb APIから1件ずつしか取得出来ない仕様となっており、また取得出来るデータはA->Bという一方向のルートとなります。解き方としては、startの星から行ける星のデータをWeb APIから取得して、その星から行ける星のデータを取得して…という操作を繰り返して特定のポイントを経由して目的地にたどり着く形となります。
利用言語、環境について
今回は普段使ってない言語でやろう、という事でRubyを使いました。問題を解くのにyagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.com0tag:blogger.com,1999:blog-1614676873737780514.post-85242783202920996762013-06-26T09:00:00.000+09:002013-06-26T09:00:00.833+09:00自分用Google ReaderをNode.js+MongoDBで作成。オープンソースだよ。はじめに
なんかGoogle Readerが6末に終わるらしいんであー代替ねー。めんどいなー。自分で作るかー。という感じです。完全に俺得です。せっかくなんでNode.jsとか使うかーと。でDB周りはMongoDBでええかーとか適当に。勉強がてら。粛々と。のんびりと。
紹介
Google Readerの代替という事でどういう名前にしようかと思ったんですけどまぁ"やぎ"だし
Goat Readerでいいやという事にしました。とりあえず触れる環境があるんで、メンドイ方は以下を見て下さい。モバイルにはまだ対応してません。Twitterでログインして使ったりも出来ます。ログインしていない状態でアクセスするとAnonymouseモードとなります。
Goat Reader
できること
繰り返しになりますが適当に作った上自分用なので完全に俺得機能しか乗せる気がありません。更に別に完成してないyagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.com0tag:blogger.com,1999:blog-1614676873737780514.post-7375104348339213682013-06-07T18:00:00.000+09:002013-06-07T18:00:00.929+09:00シャフラーズ問題の回答 @sys1yagi編
CodeIQで結城 浩さんが出題していた断片情報からデータを復元しよう!に挑戦したので解答をポストします。結果は満点でした。よかつた。今回はすごく簡単でした。30分程度で書き散らかしたのでソースは汚いです。
問題
問題は以下の様なデータから、 aa = 10とかいった風にペアのデータを突き止めろ、というモノでした。てっきりデータ数が膨大だったりするのかと思ってたら1000件程度。サクーッといけました。
10 22 24 = aa bb cc
53 33 10 = dd ee aa
24 33 53 = bb ee dd
解答ソース
上記フォーマットのデータファイルを食わすと、ペアを解析してprintlnする感じのソースです。最初データを見たとき、「連立方程式っぽいな」と思ったんでそういう感じで解くようにしました。
10 22 24 = aa bb cc
53 yagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.com0tag:blogger.com,1999:blog-1614676873737780514.post-49679788064006871412013-05-24T18:00:00.000+09:002013-05-24T18:00:02.214+09:00ピッグデータ問題の解答 @sys1yagi編 先日CodeIQで結城 浩さんが出題していた《ピッグデータ》に負けないで! に挑戦したのでその解答をポストします。以下の内容はほぼ提出した解答そのままです。4/30の夜中に挑戦を開始して、翌日5/1の夕方辺りに解答を提出しました。
結果は正解!「評価5 ベスト・ピッグデータ賞(結果が正しく技術メモも十分な解答)」だそうです。わーい。結城さんの解答も同じ考え方だったので二度わーい。
はじめに
本書は、「ピッグデータ問題」のドキュメントである「problem.txt」、「pigdata.pdf」を読み、ピッグデータの仕様について理解している事を前提とした技術メモです。「ピッグデータ問題」の詳細については「《ピッグデータ》に負けないで! https://codeiq.jp/ace/yuki_hiroshi/q303」を参照して下さい。
利用言語、環境について
言語はjavaをyagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.com0tag:blogger.com,1999:blog-1614676873737780514.post-61392983709595675722013-05-03T18:38:00.000+09:002013-05-03T18:38:04.506+09:00OnActivityForResultCallbackFragmentというモノを作ってみました どうもActivityだのFragmentだのの、startActivityForResult()とonActivityResult()の流れがすげーめんどいので何とかしたいと思いつつまぁいいかーと思っていたのだけど、やっぱだるいので何とかしようかなと。で、丁度Fragment触っていたのでFragmentを先にサポートしてみました。
仕組み
OnActivityForResultCallbackFragmentはFragmentを継承しており、内部にOnActivityResultListenerインタフェースを定義してます。メンバ変数にSparseArrayを持ち、startActivityForResult()の第三引数にOnActivityResultListenerを取る様にしています。渡されたOnActivityResultListenerをrequestCodeをキーyagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.com0tag:blogger.com,1999:blog-1614676873737780514.post-88832668042727548092013-04-28T23:39:00.000+09:002013-04-28T23:44:57.348+09:00Strokesというストロークを再生出来るお絵描きWebアプリ的なのを作りましたはじめに
2日ほど前の夜中に@kojiraと@hamatzらが
絵描きさんに描いてもらった絵を、1ストロークずつ再生して絵が完成するまでの過程を鑑賞するだけのコンテンツとかボク個人的には結構欲しいす (*´ω`*)— hamatzさん (@hamatz) 2013年4月26日
といった感じで語らっていたので、
@hamatz @kojira とりあえず作るわー— 八木さん (@sys1yagi) 2013年4月26日
という事で作りました。ものはこちらです。HTML5的なWebアプリです。
Strokes
できる事
大体以下の事が出来ます。メインはトレースモードでしょうか。書いた絵を1ストロークずつ再生し、それをなぞる感じです。
線画を書くアンドゥ・リドゥ絵を保存する(localStorage)保存した絵の再編集保存した絵の削除書いた絵のストロークを再生絵yagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.com0tag:blogger.com,1999:blog-1614676873737780514.post-80068825657389182322013-04-05T18:13:00.000+09:002013-04-05T18:13:34.091+09:00tweets.zipをMongoDBに突っ込んでNoSQLを学ぶ(導入編) インスパイアされたので。MongoDBで同じような事やってみよーーーーかなーーーーーーーーーと。まぁあんまりMongoDB知らないですけど。
tweets.zipをMySQLに突っ込んでSQLを学ぶ(導入編)
なにはともあれアーカイブをダウンロード
これはtweets.zipをMySQLに突っ込んでSQLを学ぶ(導入編)に書かれているのでそちらを参考にして下さい。サーセン
tweets.csvを探す
実はtweets/data/js/tweets配下に月ごとのつぶやきのJSONデータがあるのでそれ使ったらええんちゃう、と思ったんですけど、ファイル分かれてるしめんどーなんでtweets.csvでいいです。tweets.csvはtweetsの直下にあります。
MongoDBでcsvをインポートする
csvのインポートはMongoDBに付属している"mongoimport"yagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.com0tag:blogger.com,1999:blog-1614676873737780514.post-22092229545381150492013-01-13T12:10:00.000+09:002013-01-13T12:10:28.012+09:00第三回 Typescriptでデザインパターン: Composite Pattern第三回はComposite Patternを実装してみます。
Composite Patternとは
Composite Patternは木構造を伴う再帰的なデータ構造を表すことができます。同じインタフェースを持つ枝と葉が、再帰的な木構造を実現するんですねー。ファイルとディレクトリの関係がまさにComposite Patternです。
Composite パターン Wikipedia
Composite Patternを実装するには
TypescriptでのComposite Patternの実装はinterfaceがあれば実現出来ます。登場人物はComponentとLeafとCompositeです。各要素をクラス図にしてみました。LeafとCompositeはComponentインタフェースを実現しています。CompositeはComponentを集約しています。
yagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.com0tag:blogger.com,1999:blog-1614676873737780514.post-35736549176721850822013-01-10T01:03:00.000+09:002013-01-10T01:08:47.263+09:00第二回 Typescriptでデザインパターン: Bridge Pattern第二回はBridge Patternを実装してみます。
Bridge Patternとは
Bridge Patternは機能と実装を分け、それらを「橋渡し」する事で設計の柔軟性を確保する為のパターンです。
Bridge パターン Wikipedia
Bridge Patternを実装するには
TypescriptでのBridge Patternの実装はinterfaceと抽象クラスが必要となります。Typescriptでは抽象クラスがありません。今回は以下の様な実装にして擬似的に抽象クラス的なものを実現しています。
class Pattern{
//略
draw(canvas:HTMLCanvasElement){
throw new Error("not yet implemented.");
}
}
Patternをインスタンス化してdrawを呼ぶと死にyagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.com0tag:blogger.com,1999:blog-1614676873737780514.post-53756395491181538732013-01-08T13:24:00.000+09:002013-01-08T13:31:36.804+09:002012年振り返り&2013年の目標2012年も色々あったなぁーと。かいつまんで自分用に整頓。2013年の目標も。
2012年振り返り
はじめて確定申告した
大変だつた。
別に儲かってないです。
デブサミ2012出た
登壇させて頂いた。恐縮だす。大変だつた。
スライド
http://www.slideshare.net/hyoromo/201216d7ios-android-windows-phone
http://www.slideshare.net/hyoromo/201216d7ios-android-windows-phone-11631786
本書いた
まさかAmazonに自分の名前が載るとは本当に人生ってよくわかりません・・・。皆様のおかげ。大変だつた。
ソーシャルゲームの開発した
PHP,Ruby,Capistrano,Python,java,Smarty,MySQLとか使った。
独自Webyagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.com0tag:blogger.com,1999:blog-1614676873737780514.post-39815990452960033082013-01-06T14:49:00.000+09:002013-01-09T13:19:43.883+09:00第一回 Typescriptでデザインパターン: Adapter Pattern
Typescriptでデザインパターンをやる。
どうせなのでGoF網羅しよう。interpreter patternはちょっと無理かもしれませんが。
Adapter Patternとは?
Adapter パターン
Adapter パターンを用いると、既存のクラスに対して修正を加えることなく、インタフェースを変更することができる。Adapter パターンを実現するための手法として継承を利用した手法と委譲を利用した手法が存在する。
だそうです。
Adapter Patternを実装するには?
Adapter Patternはinterfaceがあればやれるはず、Typescriptにinterfaceはあるか?
ある。
interface Logger{
log(msg: string): void;
}
こういう感じで書ける。interfaceはtscでコンパイルするyagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.com0tag:blogger.com,1999:blog-1614676873737780514.post-5875769707801691462013-01-04T23:35:00.000+09:002013-01-04T23:35:49.540+09:00Androidでjava1.7をどうしても使いたい場合はこうしたらええでAndroidでjava1.7は使えないらしい、けど、何とかする方法はありました。
結論からいうと別においしくない。
何故Androidでjava1.7が使えないか
javaをコンパイルして生成されるclassファイルの中には、「オレ、このバージョンでコンパイルされてるんでヨロ」という情報が入ってます。んでjavaの実行環境側でclassファイルをロードする時にサポートしているバージョンでコンパイルされたclassファイルかどうかをチェックして、もしサポート外ならエラーを投げる様になってます。
Androidだとclassを生成後、dexファイルに変換する所で以下の様に怒られます。
bad class file magic (cafebabe) or version (0033.0000)
「このきたならしい阿呆がァーッ!!」
classファイルのversionが間違ってると言われてyagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.com1tag:blogger.com,1999:blog-1614676873737780514.post-84961157676759393922012-12-23T20:00:00.000+09:002012-12-23T20:00:34.955+09:00Typescriptでライフゲーム
jsdo.itで動くのがこれ。ソースは下
あんまりぽくない気もするけど書きやすかった感がある。
/**
* ライフゲームの世界。ボード
*/
class World{
interval: number = 10;
canvas: HTMLCanvasElement;
ctx: CanvasRenderingContext2D;
cells: Cell[][];
constructor(public width:number, public height:number){
this.canvas = document.createElement("canvas");
this.canvas.width=width*Cell.cellSize;
this.canvas.height=height*Cell.cellSize;
this.ctx = yagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.com0tag:blogger.com,1999:blog-1614676873737780514.post-75182646254803937662012-12-20T00:00:00.000+09:002012-12-21T01:27:02.812+09:00Bing Translator APIを使ったSublime Text 2の翻訳プラグインが無かったので作った話
http://www.flickr.com/photos/89031137@N00/5612615769/
Sublime Text 2 Advent Calendar 2012の12/20(木)担当の@sys1yagiです。最近Sublime Text 2に入門しました。
はじめに
Sublime Text 2をちらーっと触って、へーいいんじゃね、と思ってしばらく放置して
また触って、プラグイン入れて、あーいいじゃん、と思ってしばらく放置して
C言語とか触る事になって「SublimeClang」とか「CTags」とか入れてたら前回エントリっつーかAndroid Advent Calendarネタの「aaptを修正してres配下でディレクトリ階層を構築できるようにして、AOSPにrepo uploadした話」でSublime Text 2が活躍しちゃってすっかり離れられなくなっyagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.com1tag:blogger.com,1999:blog-1614676873737780514.post-18550194426967392972012-12-15T00:00:00.000+09:002012-12-17T12:37:10.437+09:00aaptを修正してres配下でディレクトリ階層を構築できるようにして、AOSPにrepo uploadした話
photo by statuelibrtynps
Android Advent Calendar 2012 12/15(土)担当の@sys1yagiです。
どうしてもAOSPにコントリビュートしたいと日々悶々としていましたがどうコントリビュったらいいのか思いつかず今まで放置してきました。やはり最初に「コントリビュートしたい」があるともうコントリビュるのが目的になってしまってダメですね。なので現状自分が開発の中で感じた不便を改善するという方向性で考えてみました。
はじめに
resの下が全部フラットなのがすげーめんどいじゃないですか。例えば、layoutとか特定画面で数個使ったりする場合もあるし、そもそも機能単位で分けたいじゃないすか。例えばアプリ内課金の画面フローがあったとしたらそれに関連するレイアウトをディレクトリに切って管理したいじゃないですか。一人でやっててもあのlayoutyagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.com0tag:blogger.com,1999:blog-1614676873737780514.post-61606718503839009272012-12-05T00:25:00.000+09:002012-12-05T00:25:20.098+09:00Sublime Text 2のステータスバー上で素数を数えるだけの画期的なプラグインを作りました。
http://www.flickr.com/photos/whitepebble/1381373166/
Sublime Text 2が面白いのでプラグインを作ろうと思い立ち、
API ReferenceとかHow to Create a Sublime Text 2 Pluginとかをチラ見しつつ作成しました。
凄いです。こんな画期的なプラグインが1日もかからず作れました。
プラグインの概要
タイトルにある通り、今回作成した「PrimeCounter」はステータスバーで素数を数えるだけです。
世界中で使われているSublime Text 2ですのでメッセージはもちろん英語。
"Let's calm down and count the prime..."
(素数を数えて落ち着こう・・・)
このメッセージの後に素数が表示されます!
このプラグインは以下の様な様々なシーンでごyagihttp://www.blogger.com/profile/05778158728612488384noreply@blogger.com0