スキップしてメイン コンテンツに移動

投稿

5月, 2019の投稿を表示しています

デジタルサイネージを作りたいので、そのためのメモ

ラズパイでデジタルサイネージを作りたい。 ネット検索すると大まかには次の2パターンが多く見つかった。 静止画を表示する ・・・ デジタルフォトフレームを作る 動画を表示する ・・・ vlc で再生 ラズパイは負荷が大きくなると発熱が増えるし電力も必要になるため、 省エネな感じで株価や天気、ニュースなどを表示したい。 思いついたのは次のような方法。 スクリーンセイバーでRSSを表示 ブラウザでRSSを表示 テキストを出力するインタフェースを準備する スクリーンセイバーを使う場合は Xscreensaver にRSSやテキストを表示するオプションがあったので テキストが表示できるスクリーンセイバーを作ればいい。 C言語使って作る必要があるみたい。 ブラウザでRSSを表示する場合は、 CGIでRSSを拾ってきて表示する。 インタフェースを自前で準備するなら、 GUIツールキット(Xt、GTK+、Qt、Tk等)で作る。 ダッシュボードを構築する方法もある。 これが一番現実的。   smashing https://github.com/Smashing/smashing   SINATRA http://sinatrarb.com/intro-ja.html Rubyの軽量フレームワークを用いて構築できるようなので機会があれば試してみる。 === 追記 eog でスライドショーが流せるらしいので、 デジタルフォトフレームとして必要な情報を画像にして表示できる模様。 [参考] Raspberry Pi 3で17.3インチのデジタルフォトフレームを作った! https://lab.sonicmoov.com/development/raspberry-pi-3-digital-photo-frame/ ラズパイと高精細IGZO液晶で作る高機能フォトフレーム https://xn--p8jqu4215bemxd.com/archives/6894 デジタルサイネージとRaspberry Pi https://raspida.com/digital-signage Raspberry Piでデジタルサイネージを作る https://qiita.com/nanbuwks/ite

Webページの Basic認証

Webサイトの特定のアドレスへのアクセスにパスワードを設定したい。 そこでBasic認証の設定を行う。 Webサーバは、Apache と nginx の場合を記す。 Apache の場合 httpd.conf の 設定を AllowOverride All にしておく。 AllowOverride http://httpd.apache.org/docs/trunk/ja/mod/core.html#allowoverride この設定で .htaccess ファイルが有効になる。 その上で次の2つのファイルを作ると そのディレクトリにアクセスするにはユーザ名とパスワードが必要になる。 ===.htaccess ====== AuthUserfile /絶対パス/.htpasswd AuthName "Please enter your ID and password" AuthType Basic require valid-user =============== === .htpasswd ====== ユーザ名 : パスワードのハッシュ =============== [参考] .htaccess による認証用 パスワード暗号化ツール http://www.luft.co.jp/cgi/htpasswd.php ベーシック認証用 .htacess 作成ツール https://www.softel.co.jp/labs/tools/basic-auth/ nginxの場合 nginxの設定ファイルに次を書き込む。 書き込むのはBasic認証をさせたいlocationディレクティブの中に書く。 ===== auth_basic "メッセージ"; auth_basic_user_file /絶対パス/.htpasswd; ===== ここで設定したアドレスにパスワードのファイルをおく。 === .htpasswd ====== ユーザ名 : パスワードのハッシュ =============== [参考] Nginx で Basic 認証 https://qiita.com/kotarella1110/items/be76

Webサイトのリダイレクトをブラウザで行う

Webサイトのリダイレクトは次のような方法で行うことが出来る。 Webサーバの設定 Javascript HTML metaタグ サーバの設定ができるのであればこちらの方法でリダイレクトをすればよい。 この場合すべてのアクセスをリダイレクト出来る。 しかし、設定が行えない状況であればその他の方法を選ぶ必要がある。 JavascriptやHTMLタグを利用する場合は、 クライアント側の処理なのでサイト運営者側でコントロール出来ないため 必ずリダイレクトされるとは限らない。 以下に挙げる例は、https://www.google.com/ にリダイレクトする例である。 Javascriptを利用する場合 次の文を書き込む。 location.href = “https://www.google.com/”; タグを利用する場合 次の文をヘッダに書き込むと5秒後にリダイレクトする。 <meta http-equiv="refresh" content="5;URL='https://www.google.com/'” /> これらを含めたソースは以下のようなものになる。 ===== <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>転送</title> <meta http-equiv="refresh" content="5;url='https://www.google.com/'" /> <script> setTimeout("location.href='https://www.google.com/'",1000*5); </script> </head> <body> 本文 </body> </html> =====

POSIX ユーティリティ

ふと、POSIX のコマンドを調べてくなったので、 とりあえずリストを書いておく。 正式にはサイトを確認のこと。 POSIX ユーティリティ admin alias ar asa at awk basename batch bc bg c99 cal cat cd cflow chgrp chmod chown cksum cmp comm command compress cp crontab csplit ctags cut cxref date dd delta df diff dirname du echo ed env ex expand expr false fc fg file find fold fort77 fuser gencat get getconf getopts grep hash head iconv id ipcrm ipcs jobs join kill lex link ln locale localedef logger logname lp ls m4 mailx make man mesg mkdir mkfifo more mv newgrp nice nl nm nohup od paste patch pathchk pax pr printf prs ps pwd qalter qdel qhold qmove qmsg qrerun qrls qselect qsig qstat qsub read renice rm rmdel rmdir sact sccs sed sh sleep sort split strings strip stty tabs tail talk tee test time touch tput tr true tsort tty type ulimit umask unalias uname uncompress unexpand unget uniq unlink uucp uude

vim でスペースやタブ等を可視化する

vim で編集していたらタブや改行、スペース等が見えればいいなと思ったので、見えるようにしてみた。 .vimrc に次を書き加えると表示される。 set list set listchars = tab :»-,trail:-, eol :↲,extends:»,precedes:«,nbsp:% これでだいたい表示されるが、全角スペースは表示されないので、 次も書き加えると表示される。 if has("syntax")     syntax on     " PODバグ対策     syn sync fromstart     function! ActivateInvisibleIndicator()         " 下の行の" "は全角スペース         syntax match InvisibleJISX0208Space " " display containedin=ALL         highlight InvisibleJISX0208Space term=underline ctermbg=Blue guibg=darkgray gui=underline     endfunction     augroup invisible         autocmd! invisible         autocmd BufNew,BufRead * call ActivateInvisibleIndicator()     augroup END endif [参考] Vimのタブ・空白・改行文字等をlistcharsで色変更 https://qiita.com/pollenjp/items/459a08a2cc59485fa08b 【Vim】タブ、空白、改行を可視化する https://blog.delphinus.dev/2011/08/display-invisible-characters-on-vim.html

IPアドレスの固定 on CentOS 7

CentOS7 で IPアドレスの固定を行う。 DHCP により自動的に割り当てられているIPアドレスを固定する。 設定は下記ディレクトリに保存されている。 /etc/sysconfig/network-scripts/ 個々のファイルを修正してもいいがコマンドラインより設定する方法を次に示す。 次のコマンドで現在の設定を確認する。 # nmcli device show この結果をもとに固定するIPの設定を調べる。 ネットワークインターフェース enp0s3 割り当てるIPアドレス 192.168.1.10/24 ゲートウェイ 192.168.1.1 DNSサーバ 192.168.1.1 # nmcli c m enp0s3 ipv4.method manual # nmcli c m enp0s3 ipv4.addresses 192.168.1.10/24 # nmcli c m enp0s3 ipv4.gateway 192.168.1.1 # nmcli c m enp0s3 ipv4.dns 192.168.1.1 [関連] Ubuntu IPアドレスを固定にする https://atsreport.blogspot.com/2017/11/ubuntu-ip.html [参考] CentOS7のnmcliコマンドについて https://qiita.com/ytooyama/items/847250f17fa7715f3037

Let's Encrypt 自動更新 で怒られた

ここで Let's Encrypt を導入したことを書きました。 Webサーバ に Let's Encrypt を導入し https で接続できるようにした https://atsreport.blogspot.com/2019/04/web-lets-encrypt-https.html サーバ更新したので設定をいじっていてLet's Encryptの更新コマンドを実行した。 すると、パーミッションを直せと怒られた。 # certbot-auto renew certbot-auto has insecure permissions! To learn how to fix them, visit https://community.letsencrypt.org/t/certbot-auto-deployment-best-practices/91979/ 詳細はリンク先をみてもらうとして、大雑把に言うと  root 以外に触れないようにしろ! ということだった。 具体的には、インストール先 /usr/local/bin/certbot-auto を推奨しており、 certbot-auto の所有者をrootにして、root以外から書き込めないようにとのこと。 # chown root /path/to/certbot-auto # chmod 0755 /path/to/certbot-auto とりあえず、所有者とパーミッションだけ直しておいた。 Certbot-auto deployment best practices https://community.letsencrypt.org/t/certbot-auto-deployment-best-practices/91979

systemd の評判について

CentOS7 が systemd になったためガチャガチャといじっていた。 以前から systemd について賛否が別れていることをネットで見てはいたが、 実際に触ってみてなかなか難しいと感じた。 systemd は Unitファイルというものを準備する。 シェルスクリプトファイルのようなものだが、 Unitファイルには実行するファイル名やその時の環境変数、実行ユーザ等が書き込める。 また、実行する順番に関することも書き込める。 これがわかりやすいのかどうかがわからないが、 この順序を指定する方法だとサービスがどの順に起動されるのかがわからない。 rc.local に書き込むような方法だと上から順に起動されるが、 systemd だと、このサービスより後で起動、このサービスより先に起動が 各Unitごとに指定されるので順序がはっきりしない。 要するに各Unit全体の集合が全順序集合になっていない。 しかし、起動時は順番に起動されるからこの順序において全順序であるため、 半順序集合に何らかの形でルールを追加し全順序にしていると思う。 この何らかのルールが入っているのによくわからないところがちょっと気になる。 [参考] 私がsystemdを嫌う理由 https://postd.cc/why-i-dislike-systemd/ 上の原文 Why I dislike systemd http://www.steven-mcdonald.id.au/articles/systemd.shtml

OS起動時に起動させるプログラムを systemd に登録する on CentOS7

adiary をインストールするにあたり、起動時にスクリプトを実行する必要がある。 CentOS7 は systemd がサービスの管理をしているのでこれに追加をした。 起動したいスクリプトファイルを /home/user/script.sh とする。 /etc/systemd/system/ のディレクトリに次のファイルを配置する。 scriptsh.service [Unit] Description = ここに説明を書いておく [Service] ExecStart = /home/user/script.sh Restart = always Type = simple User= 起動するユーザを指定 [Install] WantedBy = multi-user.target 配置ができれば、次のコマンドで systemd に登録する。 # systemctl daemon-reload 実行 # systemctl start scriptsh.service サービスの起動状況表示 # systemctl status scriptsh.service OS起動時に実行 # systemctl enable scriptsh.service 現在動作しているUnit一覧 # systemctl list-units 現在登録されているUnitファイル一覧 # systemctl list-unit-files [参考] systemdの.serviceファイルで、実行ユーザーを指定する https://qiita.com/todanano/items/f66f1a3ad76f76de0772 10.6. SYSTEMD のユニットファイルの作成および変更 - redhat https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/system_administrators_guide/sect-managing_services_with_systemd-unit_files

nginx で CMS を導入したら CSS や 画像が表示されなくて困った話

nginx で CMS を構築した。 アクセスするとレイアウトが崩れている。 心当たりがあったので対処してみた。 SELinux の無効 とりあえず SELinux を無効にしてみた。変化はなかった。 nginx.conf の確認 画像だけが表示されないなど、 nginx.conf の設定を間違うと起こるのでいろんなサイトを調べてみた。 よくある原因は、 ディレクティブの優先順位がうまくできていない include    mime.types; が書かれていない 等がよく見つかった。 今回の原因はパーミッションの問題だった。 アクセスしたいファイルの3つ上のディレクトリに実行権限がついていないため アクセスできなくなっていた。 実行権限をつけ無事に閲覧できた。

vim、less が文字化けするときの対応

文字が UTF-8 の日本語が書かれているファイルが文字化けしたとき、 次の設定を行うと直るかも。 以下の設定は文字コードを UTF-8 に指定するので必要なものに適宜読み替える。 vimの文字化けに対応するには .vimrc に次を書き込む。 set encoding=utf-8 set fileencodings=iso-2022-jp,euc-jp,sjis,utf-8 set fileformats=unix,dos,mac less の文字化けについては .bashrc に次を書き込む。 export LESSCHARSET=utf-8

SELinux を有効や無効にする方法

SELinux (Security-Enhanced Linux) SELinuxとは、Linuxに強制アクセス制御機能を追加するモジュールである。 CentOS等のLinuxはインストール時にSELinuxが有効になっていたりする。 SELinux Project Wiki http://selinuxproject.org/ SELinux Project - github https://github.com/SELinuxProject Security-Enhanced Linux - NSA https://www.nsa.gov/what-we-do/research/selinux/ 現状の確認 は次のコマンドで行える。 # sestatus # getenforce この結果は次の3通り Disabled 機能が無効 Enforcing アクセスの制御がされている状態 Permissive アクセスの制御はされていないが、ログが取られている状態 以下のコマンドで 有効 無効 に出来る。 Enforcing に変更する場合 # setenforce Enforcing または # setenforce 0 Permissive に変更する場合 # setenforce Permissive または # setenforce 1 SELinux の設定については以下のファイルを変更すればいい。 /etc/selinux/config

LaTeX での ループ 処理について

LaTeX にて ループを使いたいとき用に簡単にまとめておく。 次の例では、 \リスト で差し込みたい文字をコンマ区切りでまとめておき、 \繰り返す文章 の中の \差込 に \リスト から一つずつ取り出して当てはめる。 \documentclass{jsarticle}  \def\リスト{一番目,これは二番目,三番目}  \long\def\繰り返す文章{  AAA \差込 BBB  CCC \差込 DDD } \begin{document} \makeatletter \@for\差込:={\リスト}\do{\繰り返す文章} \makeatletter \end{document} 数字をカウントアップして処理する場合などは以下のサイトを参考にする。 [参考] TeX のループ構文 https://zrbabbler.hatenablog.com/entry/20110828/1314537300 LaTeXマクロでfor/whileループ https://qiita.com/tttamaki/items/b0f735a8ab1a5c524130

nginx の設定 on CentOS7

nginx でWebサーバを立ち上げた。 立ち上げるにあたって次の設定を行った。 ディレクトリにアクセスされたらindex.htmlに飛ばす エラーページをApache風にする IPアドレス直打ちでのアクセスはエラー表示する ディレクトリへのアクセスを index.html へ飛ばすには、 server ディレクティブ内につぎを書き加える。 index    index.html; Apache のエラーページを表示させるには、 server ディレクティブ内にエラーページの設定をおこなう。 error_page 403 404 500 502 503 504 = /apache_404.html; location = /apache_404.html {           return 404 "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>404 Not Found</title>\n</head><body>\n<h1>Not Found</h1>\n<p>The requested URL $request_uri was not found on this server.</p>\n<hr>\n<address>Apache/2.2.31 Server at $host Port $server_port</address>\n</body></html>";            internal;  } IPアドレスでのアクセスはエラー表示にするためには、 デフォルトサーバの設定を変更すし、 http://example.jp/ へのアクセスには必要な設定を行う。 server {     listen 80 default_server;     server_name _;     return 444;

CentOS7 の firewalld を設定

CentOS7 より firewalld が導入された。 iptables コマンドもあるので利用はできるが、firewalld を使ってみることにする。 今の設定を確認するためには次のコマンドを実施。 # firewall-cmd --list-all firewalld は zone というものでアクセスを制御する。 zone は次のコマンドで一覧が見れれる。 # firewall-cmd --list-all-zones public という zone に http のアクセスを許可を追加する。 # firewall-cmd --zone=public --add-service=http 再起動後も有効にするためには --permanent オプションを付ける。 # firewall-cmd --zone=public --add-service=http --permanent --permanent オプションを付けない場合は即時有効になるが、 つけた場合はリロードが必要。 # fiewall-cmd --reload 直接ポート番号を指定する場合は次のコマンドを実行。 この例は pbulic ゾーン で TCP 8888番ポートを開放。 # firewall-cmd --zone=public --add-port=8888/tcp 設定できるサービス一覧を見るコマンド。 # firewall-cmd --get-services ポートの設定は次に保存されている。 /usr/lib/firewalld/services/ [参考] 【丁寧解説】Linuxのファイアウォール firewalld の使い方 https://eng-entrance.com/linux-centos-firewall FirewallD/jp https://fedoraproject.org/wiki/FirewallD/jp ハマる前に理解する「Firewalld」の設定方法、「iptables」との違い - @IT https://www.atmarkit.co.jp/ait/articles/1602/18/news019.html

公開鍵認証を用いて CentOSサーバにssh接続できなかった原因について

タイトル通りだが、 CentOS7 サーバ へ ssh で接続ができる状態で 認証方式を公開鍵認証に変更したが接続できなくてハマった。 原因は 公開鍵 をおいた場所のパーミッション設定だった。 デフォルトでは公開鍵は ~/.ssh/authorized_keys に記述する。 この時、 ディレクトリ .ssh のパーミッションは 700 ファイル authorized_keys のパーミッションは 600 にしないといけない。 これに気づくまでに小一時間悩んだ。 [過去の記事] sshd_config ファイルの内容 https://atsreport.blogspot.com/2017/11/sshdconfig.html

NFS v4 をマウントする on Ubuntu

Ubuntu にて NASの共有ディレクトリを NFS をしてマウントしてみた。 NAS に NFS サーバとしての機能がついていたのでサーバ側の設定は簡単に済んだ。 NFS は ver4 のサービスを起動してあるので以下ではver4についての記述である。 まず、Ubuntu 上で NFS クライアントとしてのツールを導入する。 $ sudo apt install nfs-common NASのIPアドレスを 192.168.0.1 とする。 一時的に /mnt にマウントする場合は次のようにする。 $ sudo mount -t nfs  192.168.0.1:/ /mnt   上記コマンドで接続しても再起動するとまたマウントする必要がある。 コンピュータ起動時に自動的にマウントするには /etc/fstab ファイルに次の行を追記するとよい。 === /etc/fstab ===  192.168.0.1:/   /mnt  nfs     defaults        0       0 ====== 再起動後、次のコマンドでマウントされていることが確認できる。 $ df -hT 参考にしたサイトでは、 /etc/idmapd.conf のドメインの設定をすることが書いてあった。 今はその設定を行わなくともマウントできている為、設定していない。 <注意> NFSv4 では上記のように設定する。 NFSv3 ではマウントを行うNASの指定をディレクトリを含めて行う必要があるが、 同じ設定では NFSv4 はエラーが出る。  [参考] 【備忘録】なんでこんなにややこしい NFS v4のマウントでハマった件 - Kimiya Kitaniのブログ纏めサイト https://kitani3.blogspot.com/2016/03/nfs-v4.html NFSクライアントの設定 Ubuntu 18.04 - Server World https://www.server-world.info/query?os=Ubuntu_18.04&p=nfs&f=2

Vim で LaTeX を編集する on Ubuntu

Vim で LaTeX を編集する環境を構築してみる。 Tex についての日本語の情報は次のサイトにまとまっている。 TeX Wiki https://texwiki.texjp.org/ 環境は Ubuntu。 LaTeX環境の構築のため、コマンドラインからTeXliveをインストールする。 $ sudo apt install texlive 下記コマンドでバージョンが表示されればインストールされている。 $ platex -version ここでは latexmk を使うのでこのコマンドがあることも確認する。 次を実行してバージョンが表示されれば良い。 $ latexmk -v latexmk の 動作設定ファイルを作成。 次の内容のファイル ( ~/.latexmkrc )を作成する。 === #!/usr/bin/perl $latex = 'platex -kanji=utf-8 -synctex=1 %S' ; $dvipdf = 'dvipdfmx %S' ; $bibtex = 'pbibtex' ; $pdf_mode = 3 ; # use dvipdf $pdf_update_method = 2 ; $pdf_previewer = "start mupdf %O %S" ; $max_repeat = 5 ; # Prevent latexmk from removing PDF after typeset. $pvc_view_file_via_temporary = 0 ; === カレントディレクトリの不要なファイルを次のコマンドで消してくれるのが便利である。 $ latexmk -c [参考] VimでLaTeX編集!vim-quickrunとlatexmkで自動コンパイルと部分コンパイル https://qiita.com/ssh0/items/4aea2d3849667717b36d Vim に導入するプラグインは次の3つ。 vimtex ( https://github.com/lervag/vimtex ) vim-qu

パスワードを生成するコマンド in Linux

Linuxでランダムな文字列の生成を行う。 パスワード生成するコマンド mkpasswd pwgen これらのコマンドは、文字列に含む数字や記号、大文字、小文字等を設定できる。 それらがない時、次のコマンドでランダムな文字列を生成できる。 cat /dev/urandom |tr -dc '[:alnum:]' |fold -w 8 |head -n 10 状況の応じて書き換えて利用する。 tr -dc [:alnum:] は tr -dc [:graph:] にすると記号も含まれるようになるが、 パスワードに使えない記号も含まれる様になるため、手作業で不要な文字を変える必要がある。

Linux で 動画編集出来る ソフト 一覧

Linux で利用できる動画編集ソフト一覧。 多くはオープンソースではあるが、バイナリも配布されている。 ライセンスについては確認が必要。 Shotcut https://shotcut.org/ OpenShot https://www.openshot.org/ja/ kdenlive https://kdenlive.org/ Avidemux http://fixounet.free.fr/avidemux/ CINELERRA http://cinelerra.org/ Jahshaka https://www.jahshaka.com/ Kino http://www.kinodv.org/ LiVES Video Editor http://lives-video.com/