ホーム » コンピュータ (ページ 50)

コンピュータ」カテゴリーアーカイブ

システム

最近の投稿

アーカイブ

カテゴリー

pychromecastを使ってgoogle homeにキャスト

Google Homeを活用を模索するなか、Google Home は chromecast のスピーカーでもあるので、パソコンからchromecastの制御の記事を探してみた。
すると、pychromecast の記事を発見。

$ sudo aptitude install python-pychromecast

記事を参考に python script をコピペしたけど開発がすすんで関数名などが変更となっているようで、github 側の記事をみてちょっとだけ修正。pythonをいつも使っていないので、chromecast の試行錯誤の前に、漢字コードの扱いの方で四苦八苦。

#!/usr/bin/python2                                                                                                  
# -*- coding: utf-8 -*-                                                                                             
from __future__ import print_function
import sys
import re
import time
import pychromecast
#------                                                                                                             
ddev = ""
#------                                                                                                             
args = sys.argv
args.pop(0)

dev = ""    # device                                                                                                
url = ""    # chromecast URL                                                                                        
mtype = ""  # media type                                                                                            

# コマンドライン引数からキャスト内容を取得                                                                          
if len( args ) == 3 :
    dev, url, mtype = args
elif len( args ) == 2 :
    dev, url, mtype = [ ddev ] + args
elif len( args ) == 1 :
    dev = ddev
    url = args[0]
    if re.match( r'\.mp4$' , url ) :
        mtype = 'video/mp4'
    elif re.match( r'\.mp4$' , url ) :
        mtype = 'audio/mp3'
    elif re.match( r'\.jpg$' , url ) :
        mtype = 'image/jpeg'
    elif re.match( r'\.png$' , url ) :
        mtype = 'image/png'

# デバイス一覧を取得                                                                                                
chromecasts = pychromecast.get_chromecasts()
# 指定したデバイスを見つける                                                                                        
cast = next( cc for cc in chromecasts if cc.device.friendly_name.encode( 'utf-8' ) == dev )
cast.wait()
# キャスト開始                                                                                                      
mc = cast.media_controller
mc.play_media( url , mtype )
mc.block_until_active()

Symbol’s value as variable is void: last-command-char

Emacs25 の anthy.el で、”Symbol’s value as variable is void: last-command-char”のエラーがでるようになった。

他の方の記事をみて、$HOME/.emacs.d/init.el に以下を書き加える。

(define-obsolete-variable-alias
   'last-command-char
   'last-command-event
   "at least 19.34") 

High Sierraのrootパスワード

High Sierra でユーザ名に root を入れたら、パスワード無しで root になれる件、対策で root のパスワード設定するだけでいいらしい。だけど、その方法の紹介記事が、root を有効にして…とか面倒な方法が書いてある。

$ sudo passwd root

でいいんじゃね?って思ったけど、やっぱそれで充分だよね。

JetPack Photonにビビる

自宅サイトは、pet カテゴリーに投稿した写真をランダムに選び、トップページに時々表示するようにしているけど、最近その写真を選ぶ処理がエラーとなっている。

原因を調べようと、WordPressによって生成されているソースを眺めると、画像ファイルの URL に、http://i0.wp.com とか、http://i1.wp.com とかが付加されている。一瞬、クラッキングされてマルウェアを誘導する外部サイトへのリンクが埋められたかとビビった。

これは、JetPack の Photon をインストールすると、画像のキャッシングを外部サイトと連動して行うために埋め込まれるらしい。JetPack の公式な機能だけど、処理がややこしくなるので、この機能は Off とした。

丹南ケーブルの新DNS

丹南ケーブルさんから、ネットワークの安定対策でDNSサーバの更新と、古いDNSを2018/01/16に停止するとの書類が送付されてきた。

- 202.127.80.1 プライマリ # 2018/01/16に停止予定
- 202.127.80.2 セカンダリ # 2018/01/16に停止予定
+ 202.127.80.3 プライマリ
+ 202.88.193.82 セカンダリ

停止するDNSサーバは、IPアドレスが連番で、DNS 所属する上流ネットワークで機器トラブルが発生したら、サービス全体に影響してしまう。このため、セカンダリは別ネットワークに構成するのが定番なので、そういった対策なんだろう。

ただ、最近は DNS に、Google の 8.8.8.8 を指定するのがデフォルトな環境も増えている。んで、我が家は先日、Cisco の OpenDNS に切り替えているので、特に影響はない。

トラブル時の DNS 設定を探すために、/etc/bind/named.conf.options の fowardars 欄に、コメントで情報書き込んでおいた。

鶴亀算とプログラミングと人工知能

子どもに「プログラミングと人工知能の違いって何?」と聞かれたので、説明。

鶴亀算

鶴亀算とは、「鶴と亀がそれぞれ何匹かいます。頭が h 個、足が f 本だとする。この時、鶴が x 匹、亀が y 匹か答えよ。」という問題。

この問題をどうやって解くか?

(a)普通のプログラミング

この問題であれば、

h = x + y ;
f = 2*x + 4*y ;

の関係が成り立つけど、コンピュータは自動的に連立方程式を解いてくれるわけではない。このため、問題から

h = x + y ;    // アルゴリズムを考える作業...
f/2 = x + 2*y ;
よって
y = f/2 - h ;  // 解き方 = アルゴリズム
x = 2*h - f/2 ;

こういう問題を解く考え方・手順をアルゴリズムという。
これを実際のコンピュータで動かすために、例えば C 言語で書いてみる。

#include <stdio.h>
void main() {
    double h , f , x , y ;
    scanf( "%lf%lf" , &h , &f ) ; // 頭と足の数を入力
    x = 2 * h - f / 2 ;
    y = f / 2 - h ;
    printf( "鶴=%lf\n" , x ) ;
    printf( "亀=%lf\n" , y ) ;
}

このように、アルゴリズムを実際のプログラム言語で書くことが、プログラミング(コーディング)。プログラマーは、アルゴリズムを考えプログラムを作る人。あえてプログラマの仕事を分類するなら、アルゴリズムをや、どうプログラムを動かすのか設計するのがシステムエンジニア、その設計に沿ってプログラムを書くのがコーダ

人工知能

最近は、碁の世界で、プロ棋士を人工知能のコンピュータが勝ったと、ニュースになって「人工知能」という言葉がもてはやされているけど、20年ほど前に研究されていた人工知能と、最近のディープラーニングとか機械学習といったキーワードで説明されている「人工知能」はまるっきり違うものである。例え話で言うなら、昔の人工知能は「論理的思考の左脳」を作ることを目指していた。一方、最近の機械学習の人工知能は「直観的思考の右脳」とみなすことができる。

(b)論理的思考の人工知能(左脳的人工知能)

鶴亀算でいうならば、問題から以下の方程式が与えられたら

h = x + y ;
f = 2*x + 4*y ;

既知変数が、h , f で、未知変数が x , y だから、連立方程式を自動的に解いて、x , y を答えてくれるようなシステム。

(c)直観的思考の人工知能(右脳的人工知能)

最近の機械学習とかを、極端に簡単な表現をすると…

脳の神経細胞(ニューロン)の動きを真似する神経細胞網(ニューラルネットワーク)を作っておき、

h=2,f=6,x=1,y=2...間違い
h=2,f=6,x=1,y=1...正解
h=3,f=8,x=1,y=1...間違い
h=3,f=8,x=2,y=1...正解
:

というような、正解や間違いを大量に与えることで、x,yの関係を覚えていくのが機械学習。連立方程式を解く訳ではないので、学習が不十分だと、ほとんど正しい答えを答えるけど、たまに間違えるという状態の時もある。

最近の碁のシステムは、これらの組み合わせ

最近の碁などでの人工知能の活躍は、これらのプログラミングがうまく組み合わせることができるようになったから。例えば、石を打つ時に、石の配置を管理するのが(a)普通のプログラミング。石を打つ時に「ここはもっと深く先読みが必要かな?」、「ここは石の配置からいい手かな?」といった判断(静的評価)に(c)機械学習による人工知能を使う。さらに先読みすべきかの点数が高いものを選んで、その先の手を打った場合の石の配置の点数を集計して、先読みした場合の評価(動的評価)を行うのが、(b)論理的思考の人工知能のテクニック。

aptitude purge nano

Linux で vipw とか visudo とかのコマンドを実行する時に、”vi”という名前のくせに、エディタ nano が起動して相変わらず使い方が判らない。

“export EDITOR=vi”とかをやりながら使っていたけど、よく考えたら nano なんて使ってないし、消せば alternative 機能が vim.tiny に切り替えてくれる。 だったら素直に “sudo aptitude purge nano” でいいじゃん。

インドネシアでの接続許可

自宅サーバは、IPアドレスのgeoip情報を調べて 怪しい国からは接続拒否などをするようにしてあるけど、 インドネシアへの出張を控え、接続許可設定を行う。
# 出張終わったら、また接続拒否するだろうな…

WordPress 4.9-ja 更新

数日前から、wordpress 4.9-en が公開されていたけど、緊急性のあるbugfixでもなかったから、*-ja が公開されるまで待ってて、ようやく更新。職場サーバもあわせて更新する。

ギガぎりぎり

最近、プランをギリギリの3GBにしていたら、最終日はこんな結果。 {CAPTION}

Google 検索

My Google   Yahoo

Microsoft

ファンサイト

メタ情報