2020年1月31日金曜日

Nextcloudで動画のサムネイルを表示させる

Nextcloudを愛用しているのだけど、動画が三角アイコン表示になるのが悲しくて、どうにかしたいと思っていた。


ファイル名をちゃんとつけるほどのマメな管理はできないしー。
スキマ時間にやり方を探して試してみたけど、しっかり調べてなかったからすごく時間がかかってしまった。

調査

以下の手順が参考になった。NextCloud用の「Preview Generator」というプラグインがあるんだね。
https://www.allerstorfer.at/nextcloud-install-preview-generator/
でも、、、一生懸命海外のページを検索していたのだが、日本でちゃんとやっている方がいたOrz
https://bucci.bp7.org/archives/41840/
どうして、見つけられなかったんだろうね。

インストール

Preview Generatorのインストール

自分のNextcloud管理画面からインストールするのが簡単
https://apps.nextcloud.com/apps/previewgenerator

サムネイルを作成するために必要なソフトの導入

今回は動画のサムネイルがほしいので
apt-get  install ffmpeg imagemagick ghostscript
もしかしたらffmpegだけでも良かったかも

Nextcloudの設定ファイル

config.phpに追記を行う
'enable_previews' => true,
'enabledPreviewProviders' =>
 array (
    0 => 'OC\\Preview\\Image',
    1 => 'OC\\Preview\\Movie',
    2 => 'OC\\Preview\\MKV',
    3 => 'OC\\Preview\\MP4',
    4 => 'OC\\Preview\\AVI',
 ),
みたいな感じで

サムネイル作成

Nextcloud(Owncloud)の管理コマンドOCCを使うみたい

初回の全体スキャン

初回の全体スキャンは手動でやってみる
sudo -u www-data php /var/www/nextcloud/occ preview:generate-all -vvv
かなり時間がかかった。 とりあえず一晩放置し、アクセスしてみる。

できたー嬉しい!

自動更新のための設定

cronに登録しちゃうみたい。便利だね
crontab -u www-data -e
*/10 * * * * php /var/www/nextcloud/occ preview:pre-generate -vvv
この時のパラメータは「pre-generate」なので注意。
最初間違えてallにしてしまい大変な思いをした。
細かい使い方はちゃんと公式を参照しよう
https://github.com/rullzer/previewgenerator

スペック問題があるのか?リソース確認

AMD E-350 1.6GHz 2コア 64bit メモリ:8GBというかなりの老体なので、果たしてスペック大丈夫か!?
そろそろ後継考えないとね。
小型PCってなかなかニッチな気がするから、もしかしたらNASのほうが良いのかもしれん。
ちょっとCPU負荷を知りたいので、以下を参考にsarを実行してみた
https://every-rating.com/vps/sar.html
あれ?
$ sar
/var/log/sysstat/sa31 を開けません: そのようなファイルやディレクトリはありません
データ収集が有効になっているかを確認してください
設定を有効にしないといけないみたい…
https://www.skyarch.net/blog/?p=9777
$ cat /etc/default/sysstat
#
# Default settings for /etc/init.d/sysstat, /etc/cron.d/sysstat
# and /etc/cron.daily/sysstat files
#

# Should sadc collect system activity informations? Valid values
# are "true" and "false". Please do not put other values, they
# will be overwritten by debconf!
ENABLED="false"
をENABLED="true"に変更する
これでしばらく待ってからsarを実行してみる
sar -q
09時45分01秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
09時55分01秒         4       334      0.13      0.12      0.09         0
平均値:          4       334      0.13      0.12      0.09         0
これとか
sar -u
09時45分01秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
09時55分01秒     all      2.23      0.64      1.48      0.57      0.00     95.07
平均値:      all      2.23      0.64      1.48      0.57      0.00     95.07
これでしばらく様子を見てみようかね
使い方
https://qiita.com/kidach1/items/07637a5baa0da7d52e6a

2020年1月28日火曜日

2019年を振り返って

気がつくともう2020年ですね
夏頃からめっきり更新できていなかった。
大切な人や事を失ったり、悲しい現実に直面したりと結構ダメージを受けた。
でも、少しだけ得たものもある。
過ぎたことを悔やんでも仕方がないので、今やれることを精一杯やっていこう。

技術的なことで頑張ったのは

毎年の事だけど、昨年頑張ったのは、、、
  1. LTE通信モジュールを使おう
      →これは、仕事でも役立った(と思う)。ちょっと出費だったけど、実際に手を動かすといろいろわかってくる。
      自分は頭で考えるのが苦手なんだと再認識したOrz
      まぁでもプレゼンするときは実機がある方が説得してもらいやすいからねー
  2. Openwrtをすこし触る
      →なかなかやりたいことが達成できないけど、それがまた面白い。SPI部分いっぱい触った。オレオレパッケージとかに手を出した。
  3. PICつかって子供向けのおもちゃを考えた
      →実際は、安全面が気になって実現には至らなかった。
      もう少し成長してから、その時の技術を使って作ってあげたいと思った。
  4. 3Dプリンター再始動
      →使い方を思い出して少し印刷したレベルでとまっている
      でもオートレベル対応して、印刷精度が良くなったのは嬉しかったなー。プリンターの側に居れるまとまった時間が作れると良いのだけれど・・・。
  5. iModela→中華CNC
      →iModelaが壊れてしまったのはショックだった。気軽に?基板試作できると思える安心感よかった。気づいたら中華CNCが手元にあったのだけど、まだ、基板切削までには至っていない。
    こちらも、まとまった時間があるといいよね。
  6. 今更ながらVoIP-Asteriskを触ってみる
      →ちょっと電話に興味が湧いて触り始めたやつ。これは、仕事でも役立った(と思う)。まぁいつまでも電話ってわけにもいかないよね。でも古いインフラ大事だよね。

感想

興味が赴くままって感じな1年だったかな。
その反面、計画性がなかった。特に上半期は時間作れたはずなのにちょっと浪費してしまったような気がする。反省。
技術以外では、実家に帰る回数も多くなり、親兄弟と過ごす時間がつくれて本当に良かったと思う。子どもたちには長旅で大変な思いをさせてしまったけど、いろいろ経験できたみたいで結果良かったんじゃないかと思う。
来年(今年)も引き続き家庭も仕事も趣味も充実するといいな。
目標は
・戦略的な投資
・やりたいことをためらわずにやる
・家庭-仕事-趣味のバランスと充実を目指す
・「巨人の肩に乗る」
・「ググるよりもググられたい」
・頑張り過ぎないことを頑張る
去年とあまり変わらないか・・・。
子育て世帯の苦労が少しでも良くなりますようにー
保育園増やしてよー
今年も精一杯挑戦して続けていこう!

2019年8月30日金曜日

Openwrtでオレオレなパッケージ

Openwrtでオレオレなパッケージ

温度差と仕事が忙しすぎて、やる気が1/10くらいになっている。
睡眠不足だし、悪循環だよね。
今回は、オレオレなパッケージを作ってみる。
ドライバーの作り方も整理したかったけど、また後で。

オレオレなパッケージ

この手順通りでやってみる
https://openwrt.org/docs/guide-developer/helloworld/start

クロスコンパイルツールチェーンの準備

make toolchain/install

HelloWorldをやってみる

ソースの準備

https://openwrt.org/docs/guide-developer/helloworld/chapter2
まずはこの手順に従い、対象となるHelloWorldを作成する。
[myapp/helloworld/helloworld.c]
#include <stdio.h>
int main(void)
{
    printf("\nHello, world!\n\n");
        return 0;
}
https://openwrt.org/docs/guide-developer/helloworld/chapter3

Makefileの準備

Makefileは上記サンプルからパスのみ変更
[mypackages/examples/helloworld/Makefile]
include $(TOPDIR)/rules.mk

# Name, version and release number
# The name and version of your package are used to define the variable to point to the build directory of your package: $(PKG_BUILD_DIR)
PKG_NAME:=helloworld
PKG_VERSION:=1.0
PKG_RELEASE:=1

# Source settings (i.e. where to find the source codes)
# This is a custom variable, used below
SOURCE_DIR:=/******/myapp/helloworld

include $(INCLUDE_DIR)/package.mk

# Package definition; instructs on how and where our package will appear in the overall configuration menu ('make menuconfig')
define Package/helloworld
 SECTION:=examples
 CATEGORY:=Examples
 TITLE:=Hello, World!
endef

# Package description; a more verbose description on what our package does
define Package/helloworld/description
 A simple "Hello, world!" -application.
endef

# Package preparation instructions; create the build directory and copy the source code. 
# The last command is necessary to ensure our preparation instructions remain compatible with the patching system.
define Build/Prepare
 mkdir -p $(PKG_BUILD_DIR)
 cp $(SOURCE_DIR)/* $(PKG_BUILD_DIR)
 $(Build/Patch)
endef

# Package build instructions; invoke the target-specific compiler to first compile the source file, and then to link the file into the final executable
define Build/Compile
 $(TARGET_CC) $(TARGET_CFLAGS) -o $(PKG_BUILD_DIR)/helloworld.o -c $(PKG_BUILD_DIR)/helloworld.c
 $(TARGET_CC) $(TARGET_LDFLAGS) -o $(PKG_BUILD_DIR)/$1 $(PKG_BUILD_DIR)/helloworld.o
endef

# Package install instructions; create a directory inside the package to hold our executable, and then copy the executable we built previously into the folder
define Package/helloworld/install
 $(INSTALL_DIR) $(1)/usr/bin
 $(INSTALL_BIN) $(PKG_BUILD_DIR)/helloworld $(1)/usr/bin
endef

# This command is always the last, it uses the definitions and variables we give above in order to get the job done
$(eval $(call BuildPackage,helloworld))
結構たくさんやることあるね
https://openwrt.org/docs/guide-developer/helloworld/chapter4

feedとして登場させるための準備

[feeds.conf]
src-link mypackages /******/mypackages
ソースはmyapp、Makefileはmypackagesという設定のようだ。
このあたりは、パラメータで自由に出来るところ。

パッケージの生成

./scripts/feeds update mypackages
./scripts/feeds install -a -p mypackages
これで、
[bin/packages/aarch64_cortex-a53/mypackages]に
Packages
Packages.gz
Packages.manifest
Packages.sig
helloworld_1.0-1_aarch64_cortex-a53.ipk
が生成された!
memuconfigで組み込んだり、単独でコンパイルすることも出来そうだ。
make package/helloworld/compile



やったー。

パッケージのインストール・実行

ここまでくれば、いつものパッケージと同じ
opkg install helloworld_1.0-1_aarch64_cortex-a53.ipk