AB型技術系 主に備忘録

ほぼプログラム関連の備忘録

MOTO Z バッテリー異常?

購入して8ヶ月、MOTO Zの調子が悪い・・・

バッテリーが70%くらい残っている状態でいきなりスマホの電源が落ちる

再起動するとバッテリー不足で起動できず

少し時間をあけてモバイルバッテリーを接続し起動してみると

f:id:freelancer13:20170814235320j:plain

70%からいっきに減ってしまいました

ここ数週間この現象が数回発生してます

電源落ちるのがバッテリ残量50%だったり30%だったり

さらに朝フル充電して何もしないで夕方確認すると

f:id:freelancer13:20170814235330j:plain

1%で数時間起動し続けていたのか?

表示されている残量と実際の残量にズレが生じたと思われます


moto 360 sport のバンドが裂けてしまった時の対応方法

moto360 sportのバンドが裂けてしまいました・・・

f:id:freelancer13:20170719002326j:plain

moto360 sportはバンドと ディスプレイが一体型です。

なのでバンドを交換することはできません。

なんとかしてくっつけたいと思います。

バンドはシリコン製なのでシリコンに対応した接着剤が必要ですが。

手持ちの接着剤はシリコンに対応していなかったのでシリコン対応の接着剤を購入することにしました。

f:id:freelancer13:20170719002343j:plain

購入したのはこちらの接着剤。

ヨドバシ.comで990円で購入。

近くにヨドバシカメラがあるおかげなのか注文した翌日には届きました。

ヨドバシ.comは1品からでも 配達料金無料・日時指定無料なのが良いですね。

ネットで注文して店舗で受け取れるのもよいです。

ヨドバシ.comをヨイショするのはこれくらいにして早速修理を始めます。

付属のペン型プライマーを接着した部分に塗布した後に接着剤をつけます。

f:id:freelancer13:20170719002333j:plain

1分ほどでくっつきましたが、マニュアルには30分ほど放置するように記載されているので30分放置。

避けてたのはまるわかりですね・・・

f:id:freelancer13:20170719004316j:plain

30分後、おそるおそる装着

数時間外出しましたが途中で裂けることはありませんでした。

ただ、強く引っ張ったりすると再び裂けるかもしれないので優しく取り扱うのがよいと思いました。

セメダイン:PPXセット 6g ca-522

セメダイン:PPXセット 6g ca-522



ブログの更新情報をPINGZONE経由でPingサーバーに送信

先日構築中のサイトにRSS2.0とAtomのフィードを生成する機能を追加しました

freelancer.hatenablog.jp

何故この機能を追加したか?

理由はPINGサーバーにPING送信するためです

通常PING送信はPINGサーバーのアドレスに対して個別に送信します

有名なPINGサーバーというとGoogleブログ検索でしょうか

他にもいろいろありますが、突然無効になったりすることもあり、
個別に送信しているとメンテナンスが非常に面倒です

この問題を解決するために利用しているのが「PINGZONE」です

http://www.pingzone.jp

利用手順(会員登録していない場合)

  1. トップページでURLを入力
  2. PING送信ボタンクリック
  3. PING送信先一覧に掲載されているPINGサーバーにPING送信される
  4. ページ下部の最新更新ブログ一覧にブログ情報が追加される

これで複数のPIGNサーバーに一斉にPING送信できます

注意点は以下の記述を内に記述すること

<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="http://otaku.kansai-fan.com/rss2.xml" />
<link rel="alternate" type="application/atom+xml" title="Atom" href="http://otaku.kansai-fan.com/atom.xml" />

この記述がないと最新更新ブログ一覧にブログ情報が追加されません
PING送信も恐らく失敗している
ちなみにAtomに対応していないのか以下の記述だと同様の現象が発生します

<link rel="alternate" type="application/atom+xml" title="Atom" href="http://otaku.kansai-fan.com/atom.xml" />

hrefを相対パスで指定した場合も同様の現象が発生します

私は最初相対パスで記述しており気付くまで数時間費やしてしまいました・・・

PINGZONEは会員登録するとPINGZONEにPING送信するだけで上記の一連の処理を行ってくれます

自サイトにはまだPINGZONEにPING送信する機能は実装していません

次実装するのはフィードの作成後にPINGZONEにPING送信する機能になりそうです


意外と簡単にphpでRSS2.0とAtomのフィードを生成できた

自前で構築中のサイトの記事作成時にRSS2.0とAtomのフィードを生成する機能を追加してみました。

使ったのはPHP Universal Feed Generatorというライブラリ

github.com

記事データ
実際はデータベース等から取得して連想配列に格納します

<?php

$item1 = array();
$item2 = array();

$item1["title"] = "タイトル2";
$item1["link"] = "http://otaku.kansai-fan.com/content/20170502";
$item1["date"] = strtotime(date('Y-m-d G:i:s', time()));
$item1["author"] = "投稿者2";
$item1["description"] = "投稿内容2";

$item2["title"] = "タイトル1";
$item2["link"] = "http://otaku.kansai-fan.com/content/20170501";
$item2["date"] = strtotime(date('Y-m-d G:i:s', time()));
$item2["author"] = "投稿者1";
$item2["description"] = "投稿内容1";

$list = array();
$list["20170502100000"] = $item1;
$list["20170502090000"] = $item2;

?>

RSS2.0

<?php

// ライブラリの読み込み
use \FeedWriter\RSS2;

// チャンネル情報の登録
$feed = new RSS2;
$feed->setTitle("とあるオタクの備忘録");
$feed->setLink("http://otaku.kansai-fan.com/");
$feed->setDate(new DateTime());
$feed->setDescription("プレイ中のゲームのプレイ日記等");
$feed->setImage("http://otaku.kansai-fan.com/" , "とあるオタクの備忘録", "http://otaku.kansai-fan.com/image/logo.png" );
$feed->setChannelElement( "language" , "ja-JP" );
$feed->setChannelElement( "pubDate" , date(\DATE_RSS , time()));
$feed->setChannelElement( "category" , "Blog" );

// 記事の分だけ、フィードのアイテムを追加する
foreach ($list as $key => $value){
    $data = $value;
    $item = $feed->createNewItem();
    $item->setTitle($data["title"]);
    $item->setLink($data["link"]);
    $item->setDate($data["date"]);
    $item->setAuthor($data["author"]);
    $item->setDescription($data["description"]);
    $item->setId($data["link"], true) ;
    $feed->addItem($item);
}

// xml形式の文字列を出力
$xml = $feed->generateFeed();

// ファイルの保存場所を設定
$file = "/home/aaa/bbb/rss2.xml";

// ファイルの保存を実行
@file_put_contents($file, $xml);

?>

Atom

<?php

// ライブラリの読み込み
use \FeedWriter\ATOM;

// チャンネル情報を登録
$feed = new ATOM;
$feed->setTitle("とあるオタクの備忘録");
$feed->setLink("http://otaku.kansai-fan.com/");
$feed->setDate(new DateTime());

// 記事の分だけ、フィードのアイテムを追加する
foreach ($list as $key => $value){
    $data = $value;
    $item = $feed->createNewItem();
    $item->setTitle($data["title"]);
    $item->setLink($data["link"]);
    $item->setDate($data["date"]);
    $item->setAuthor($data["author"]);
    $item->setDescription($data["description"]);
    $feed->addItem($item);
}

// xml形式の文字列を出力
$xml = $feed->generateFeed();

// ファイルの保存場所を設定
$file = "/home/aaa/bbb/atom.xml";

// ファイルの保存を実行
@file_put_contents($file, $xml) ;

?>

RSS2.0とAtomで設定する項目が少し異なるくらいで処理はほぼ変わりません。
RSS1.0は今回作成してませんが、ほぼ同じ流れで簡単に作成できそうです。

気を付けないといけないのは日付関連の項目
値が不正だとgenerateFeedメソッドでエラーが発生します

実際に出力したものがこちら

RSS2.0

ATOM


PHPのfile関数でcsvを読み込んだ時に改行コードが含まれていた

下記のようなcsvファイルを読み込んでweb上に表示させる画面を作りました

20170410,タイトル1
20170411,タイトル2
20170412,タイトル3
20170413,タイトル4
20170414,タイトル5

まずfile関数で1行ずつ配列に格納しました

<?php

$array = file("/history.csv");

// $array[0]は"20170410,タイトル1"
// $array[1]は"20170411,タイトル2"

?>

後はこの配列をループさせて画面に表示するだけ

<?php

$array = file("/history.csv");

$content .= "<ul>";

for($i = 0;$i < count($array);$i++){
    $str = split(",", $array[$i]);
    $dt = date('Y&#47;m&#47;d',  strtotime($str[0]));
    $content .= "<li>".$dt."&nbsp;".$str[1]."</li>";	
}

$content .= "</ul>";

echo $content;

?>

画面で表示した結果

2017/04/10 タイトル1
2017/04/11 タイトル2
2017/04/12 タイトル3
2017/04/13 タイトル4
2017/04/14 タイトル5

ここまではよかったのですが、この配列にデータを追加してその内容でcsvファイルを更新ようとした時問題が発生しました。

<?php

$array = file("/history.csv");

array_push($array, "20170415,タイトル6");

$file = fopen("/history.csv", "w");

for($i = 0;$i < count($array);$i++){
    @fwrite($file, $array[$i]."\r\n");
}

fclose($file);

?>

出力したcsvファイル

2017/04/10 タイトル1

2017/04/11 タイトル2

2017/04/12 タイトル3

2017/04/13 タイトル4

2017/04/14 タイトル5

2017/04/15 タイトル6

何故か改行が増えてる・・・
改行コードは1個だけしか付加してないのに

原因はfile関数でcsvファイルを読み込む時に改行コードまで読み込んでいたから
読み込んだ時に下記のようになっていたということです

<?php

$array = file("/history.csv");

// $array[0]は"20170410,タイトル1\r\r"
// $array[1]は"20170411,タイトル2\r\r"

?>

file関数オプションにFILE_IGNORE_NEW_LINESを追加することで改行コードは付加されずに読み込まれます

<?php

$array = file("/history.csv", FILE_IGNORE_NEW_LINES);

// $array[0]は"20170410,タイトル1"
// $array[1]は"20170411,タイトル2"

?>

修正後に出力したcsvファイル

2017/04/10 タイトル1
2017/04/11 タイトル2
2017/04/12 タイトル3
2017/04/13 タイトル4
2017/04/14 タイトル5
2017/04/15 タイトル6