2016年12月31日土曜日

google news RSS feedを google feed APIを用いて JSONデータとして取得するJavaScript

2017 Jan. 08.
2016 Dec. 31.

URL書式

https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=件数&q=GOOGLE-NEWS-RSS-URL
  "q=GOOGLE-NEWS-RSS-URL"を最後に記述する。"num=件数"よりも前に"q=GOOGLE-NEWS-RSS-URL"を記述すると失敗する。
  GOOGLE-NEWS-RSS-URL の部分の文字は HTML URL Encoding に置き換える。
    & -> %26
    : -> %3A
    = -> %3D
    ? -> %3F

JSONデータ構造

( http://www.ctrlshift.net/jsonprettyprinter/ を利用 )
{
    "responseData": {
        "feed": {
            "author": "",
            "description": "News",
            "entries": [
                {
                    "author": "",
                    "categories": [
                        "Top Stories"
                    ],
                    "content": "<table border="0" ><xxx>",
                    "contentSnippet": "新聞の ...",
                    "link": "http://xxx.html",
                    "publishedDate": "Fri, 30 Dec 2016 22:59:17 -0800",
                    "title": "xxxのニュース"
            },
               [
                {
                    "author": "",
                    "categories": [
                        "Stories"
                    ],
                    "content": "<table border="0" ><yyy>",
                    "contentSnippet": "新の ...",
                    "link": "http://yyy.html",
                    "publishedDate": "Fri, 30 Dec 2016 23:00:17 -0800",
                    "title": "yyyのニュース"
                }

            ],
            "feedUrl": "https://news.google.com/news?ned=us&hl=ja&output=rss",
            "link": "http://news.google.com/news?hl=ja&amp;ned=us",
            "title": "Top Stories - Google News",
            "type": "rss20"
        }
    },
    "responseDetails": null,
    "responseStatus": 200
}

JavaScript サンプル


function fetchGoogleNewsJson() {
  var url = 'https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&q=https%3A//news.google.com/news%3Fned%3Dus%26hl%3Dja%26output%3Drss';
    // HTML URL Encoding
    //   q=https%3A//news.google.com/news%3Fned%3Dus%26hl%3Dja%26output%3Drss
    //    ↑
    //   q=https://news.google.com/news?ned=us&hl=ja&output=rss

  var response = UrlFetchApp.fetch(url);
  var json = response.getContentText();
  var data = JSON.parse(json);
  var fetchText = "";
  if (data.responseData.feed.entries) {
    for( var i=0 ; i < data.responseData.feed.entries.length; i++){
      fetchText = fetchText + data.responseData.feed.entries[i].title + "\n" + data.responseData.feed.entries[i].publishedDate.slice(5,-9) + "\n\n";
    }
  }
  return fetchText;
}

2016年12月29日木曜日

WEB API、Google Custom Search、Google Apps Scriptを使ってニュースを定期収集

2016 Dec. 30.
2016 Dec. 29.

googleアカウントにログインする。
 console.cloud.google.com にて
  プロジェクトを作成する。
   プロジェクト名、プロジェクトIDは与えられたものをそのまま使った。

  "API Manager"画面にて
   認証情報画面で(OAuthではない)APIキーを作成する。
   APIキーは後で利用するので控えておく。
   ダッシュボード画面あたりでCustom Search APIを割り当て、
   https://cse.google.com/cse/setup/ や https://cse.google.co.jp/cse/all で
   Google Custom Searchを作成する。Custom SearchのIDは後で使うので控えておく。
   検索対象サイトは  www.47news.jp にした。
   ( ryutamaki.hatenablog.com/entry/2014/01/18/171640 参照)

 googleドライブにて
  スプレッドシートを新規作成し、開く。
  ツール→スクリプトエディタにてgoogle apps scriptを記述する。( osak.in/web/271 参照 )
      function urlfetch(){
        var url = 'https://www.googleapis.com/customsearch/v1?key=xxx&cx=yyy&num=10&hl=ja&dateRestrict=d2&q=主要%20OR%20新着';
   // xxxはAPIキー、yyyはCustom Search ID
        var response = UrlFetchApp.fetch(url);
        var json = response.getContentText();
        var data = JSON.parse(json);
        // Logger.log(response);//ログに取得したデータを表示
        //ひとつめのタイトルの場合こんな感じ→ Logger.log(data.items[0].title);
        var fetchText = "";
        if (data.items) {
          for( var i=0 ; i < data.items.length; i++){
            fetchText = fetchText + data.items[i].title + "\n" + data.items[i].snippet + "\n\n";
          }
        }
      }

2016年12月25日日曜日

rsyslog ログファイル記録設定


2016 Jan. 04.
2016 Dec. 25.

/var/log内のログファイルに、サイズがゼロで所有権がroot:rootのものが多数あり。

/etc/rsyslog.conf に次の記述があり。
# Set the default permissions for all log files.
#
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog


ファイル所有権を変更して再起動し、ファイルサイズを確認するとsyslog, kern.logあたりは書き込まれるようになっていた。
# chown syslog:adm syslog kern.log user.log messages mail.warn mail.log mail.info mail.err lpr.log dpkg.log dmesg debug daemon.log bootstrap.log boot auth.log aptitude apport.log alternatives.log
# reboot
 $ ls -l syslog kern.log user.log messages mail.warn mail.log mail.info mail.err lpr.log dpkg.log dmesg debug daemon.log bootstrap.log boot auth.log aptitude apport.log alternatives.log
-rw-r--r-- 1 syslog adm      0  1月  1 06:07 alternatives.log
-rw-r----- 1 syslog adm      0 12月 19 05:08 apport.log
-rw-r--r-- 1 syslog adm      0  1月  1 06:07 aptitude
-rw-r--r-- 1 syslog adm   6347  1月  4 09:50 auth.log
-rw-r--r-- 1 syslog adm      0  4月 25  2016 boot
-rw-r--r-- 1 syslog adm      0  4月 25  2016 bootstrap.log
-rw-r--r-- 1 syslog adm      0  4月 25  2016 daemon.log
-rw-r--r-- 1 syslog adm      0  4月 25  2016 debug
-rw-r--r-- 1 syslog adm      0  4月 25  2016 dmesg
-rw-r--r-- 1 syslog adm      0  1月  1 06:07 dpkg.log
-rw-r--r-- 1 syslog adm 807528  1月  4 09:43 kern.log
-rw-r--r-- 1 syslog adm      0  4月 25  2016 lpr.log
-rw-r--r-- 1 syslog adm      0  4月 25  2016 mail.err
-rw-r--r-- 1 syslog adm      0  4月 25  2016 mail.info
-rw-r--r-- 1 syslog adm      0  4月 25  2016 mail.log
-rw-r--r-- 1 syslog adm      0  4月 25  2016 mail.warn
-rw-r--r-- 1 syslog adm      0  4月 25  2016 messages
-rw-r--r-- 1 syslog adm 355086  1月  4 09:50 syslog
-rw-r--r-- 1 syslog adm      0  4月 25  2016 user.log


/etc/rsyslog.d/50-default.conf でのログ記録設定
     kern.*               -/var/log/kern.log
     auth,authpriv.*  /var/log/auth.log

    ( http://vogel.at.webry.info/201311/article_4.html より)
      出力先ファイル名の先頭の - は、ログ出力時のディスクとの同期の抑制を指示します。
     通常、ログは出力されるとすぐにディスクと同期(ディスクに書き出される)しますが、大量にログを  出力する場合などでは書き込みに時間がかかってしまいます。
     ディスクとの同期を抑制すると、ログ書き出しで毎回ディスクと同期しないので、ログの出力速度は上がります。ただし、ディスクと同期する前に、電源が落ちたりするとログが消失する危険もあります。

2016年12月12日月曜日

LXDE起動時コマンド自動実行

basix3.0 64bit ubuntu16.04派生 linux
2016 Dec. 12.

${HOME}/.config/lxsession/LXDE/autostart に
@COMMAND (コマンドの直前に@を付ける)
の形式でコマンドを記述する。
 例) @recpt1 --b25 --strip --sid hd --http 8888 - /dev/null

NumLockを起動時に自動的にオンにする

basix3.0 64bit ubuntu16.04派生 linux lxde
2016 Dec. 11.

# aptitude install numlockx



2016年12月10日土曜日

SSHで1度入れたパスフレーズをその後は尋ねられないようにする

2016 Dec. 10.

qiita.com/naoki_mochizuki/items/93ee2643a4c6ab0a20f5
webos-goodies.jp/archives/50672669.html より


$ ssh-add (パスフレーズを尋ねられるので入力する)
$ ssh SERVER

SSH "Are you sure you want to continue connecting"表示をなくす


2016 Dec. 10.

d.hatena.ne.jp/yohei-a/20100214/1266112027 より

sshクライアント側の /etc/ssh/ssh_config のStrictHostKeyChecking設定をnoにする。(ask/yes/noを設定できる)
  StrictHostKeyChecking no

$ man ssh_config
...
     StrictHostKeyChecking
             If this flag is set to ``yes'', ssh(1) will never automatically
             add host keys to the ~/.ssh/known_hosts file, and refuses to con-
             nect to hosts whose host key has changed.  This provides maximum
             protection against trojan horse attacks, though it can be annoy-
             ing when the /etc/ssh_known_hosts file is poorly maintained or
             when connections to new hosts are frequently made.  This option
             forces the user to manually add all new hosts.  If this flag is
             set to ``no'', ssh will automatically add new host keys to the
             user known hosts files.  If this flag is set to ``ask'', new host
             keys will be added to the user known host files only after the
             user has confirmed that is what they really want to do, and ssh
             will refuse to connect to hosts whose host key has changed.  The
             host keys of known hosts will be verified automatically in all
             cases.  The argument must be ``yes'', ``no'', or ``ask''.  The
             default is ``ask''.

LXDEのパネルにアプリケーションを追加

LXDEのパネルにアプリケーションを追加

basix3.0 64bit ubuntu16.04派生 linux プログラムのlaunchパネルへの追加 アプリケーション起動ショートカット
2016 Dec. 10.


sites.google.com/site/hymd3a/linux/lxde より
パネルを右クリックして、「パネルのアイテムの追加・削除」をクリックする。(パネルの設定画面が表示される)
アプリケーション・ランチャーをダブルクリックする。あるいは、アプリケーション・ランチャーを選択し「設定」をクリックする。(アプリケーション・ランチャーが表示される)
右側の「インストールされているアプリケーション」欄から希望のアプリを左側の「ランチャ」欄に移す。

2016年12月3日土曜日

sshサーバ インストール


2019 Oct. 12.
2018 Sep. 01.
2017 Feb. 12.
2017 Feb. 11.
2016 Dec. 03.

鍵ファイルについて

公開鍵

ファイルパス SERVER: ~/.ssh/id_rsa.pub

サーバーの authorized_keys に追記したら以後不要なので削除する。

秘密鍵

ファイルパス CLEINT: ~/.ssh/id_rsa
 このファイル名を変更した場合は、ssh接続時に
  $ ssh –i ~/.ssh/CLIENT-FILE
 と -i オプションを付ける。

 known_hostsファイル

ファイル名  CLEINT: ~/.ssh/known_hosts
接続したことのあるSSHサーバ証明書が格納されるファイル。

暗号種類

現時点の高強度順
edf25519
ecdsa 521bit
ecdsa 384bit
ecdsa 256bit
rsa 4096bit

DSA  SSH2で使える。 鍵長が1024bit。
RSA1 非推奨。脆弱性があるSSH1で使える。

クライアントが利用できる暗号にする。

時とともに古い方式となるので、時々見直す。

鍵生成

$ ssh-keygen -t 暗号方式 -b bit長 -C "コメント" -f ファイル名 -P "パスフレーズ"
  -f:ファイル名には拡張子を付けない。秘密鍵と公開鍵のペアが作られる。

(例)
$ ssh-keygen -t ed25519
$ ssh-keygen -t ecdsa -b 521
$ ssh-keygen -t ecdsa -b 384
$ ssh-keygen -t ecdsa -b 256

$ ssh-keygen -t rsa -b 4096

失くした公開鍵復元
$ ssh-keygen -yf 秘密鍵名



インストール

# apt install ssh


/etc/ssh/sshd_config を編集
    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile      %h/.ssh/authorized_keys
    AllowUsers USER
    PermitRootLogin no
    PermitEmptyPasswords no
    PasswordAuthentication no

/etc/hosts.allow を編集
    sshd: ALL

# ufw enable
# ufw allow 22/tcp
# ufw allow 22/udp
# ufw reload

サーバーの ~/.ssh 内に公開鍵を配置する。
  $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  $ rm ~/.ssh/id_rsa.pub
  $ chmod 750 ~/
  $ chmod 700 ~/.ssh
  $ chmod 600 id_rsa authorized_keys

id_rsa をクライアントの各ソフトに合致する場所に置く。
 linuxならば ~/.ssh/ に。
  クライアント設定
   /etc/ssh/ssh_config
    RSAAuthentication yes
    IdentityFile ~/.ssh/id_rsa

 connect botならばSDカード内の任意のフォルダに。
  connect botの鍵設定は fnya.cocolog-nifty.com/blog/2012/03/connectbot-andr.html を参照。

# systemctl restart sshd