2019/09/29

【pdftk】コマンドラインでPDF編集する

pdftkの使い方を備忘録として残します。

目的


pdftkはPDFファイルの編集を行うソフトウェアです。
複数のpdfファイルを結合させて一つのpdfファイルにまとめたり、その逆をしたり、特定のページだけ別pdfとして抜き出したり、ページを回転させたりすることができます。

インストール方法


debian, raspbianでは下記方法でインストールできます。
# apt update
# apt install pdftk

使い方


ページ回転


in.pdfを全ページ回転させたものをout.pdfとして保存
$ pdftk in.pdf cat 1-endright output out.pdf ;; 右回転(時計回り)
$ pdftk in.pdf cat 1-endleft output out.pdf ;; 左回転(反時計回り)

1枚ずつばらす


in.pdfを1ページずつばらして別々のpdfとして保存。
# pdftk in.pdf burst

抜き出す


in.pdfから指定したページだけ抜き出してout.pdfとして保存
# pdftk in.pdf cat 1 output out.pdf ;; 1頁目だけを抜き出す
# pdftk in.pdf cat 2-end output out.pdf ;; 1頁目以外を抜き出す

結合


in1.pdfとin2.pdfを合体してout.pdfとして保存
# pdftk in1.pdf in2.pdf cat output out.pdf

2019/08/19

GDグラフィックライブラリ(GD Graphics Library)の使い方

C言語でpng画像を生成したいと思い、その方法を調査したので備忘録として以下に示します。


試験環境


いつもの如くOSはdebianを使用します。


GDグラフィックライブラリとは


- Wikipediaより抜粋

GDグラフィックライブラリ(GD Graphics Library)はトーマス・ボーテル(Thomas Boutell)他によって作られたイメージを動的に操作するライブラリである。本来のプログラミング言語はANSI Cであるが、他の多くのプログラミング言語とのインタフェースが作成されている。GIF、JPEG、PNG、WBMP を生成できる。


インストール方法


debian環境では、以下のコマンドでインストールできます。

# apt update
# apt install libgd-dev

サンプルプログラム


256x256ピクセルのpng画像を生成します。ピクセル毎に着色し、赤成分を横方向に0から255まで、緑成分を縦方向に0から255まで変化させます。


リスト1(main.c)
#include <stdio.h>
#include <gd.h>

int main() {
  gdImagePtr im;
  FILE *pngout;

  int x, y;

  im = gdImageCreateTrueColor(256, 256);

  for (x = 0; x < 256; x++) {
    for (y = 0; y < 256; y++) {
      gdImageSetPixel(im, x, y, (x << 16) + (y << 8));
    }
  }

  pngout = fopen("test.png", "wb");
  gdImagePng(im, pngout);
  fclose(pngout);
  gdImageDestroy(im);

  return 0;
}

GDグラフィックライブラリ関数の仕様はこちらを参照ください。


リスト2 コンパイル&実行
$ cc -o ex1 -lgd -O3 -Wall main.c
$ ./ex1

図1 実行結果(test.png)

2019/08/18

C言語とgnuplotでマンデルブロ集合を表示する(2)

本稿は、以前投稿した「C言語とgnuplotでマンデルブロ集合を表示する」のCソースの一部を複素数型に変更したものです。

gnuplotを使うと結構簡単にマンデルブロ集合を表示することができます。OSはdebianを使用しています。
今回は、複素数型の変数を宣言して計算しています。複素数型の変数を使うとCコードがより簡潔になります。

リスト1 mandelblot.c
/*
  マンデルブロ集合計算プログラム
*/
#include <stdio.h>
#include <math.h>
#include <complex.h>

#define C0r     -0.743  // 計算する場所の中心座標(実数部)
#define C0i      0.1145 // 計算する場所の中心座標(虚数部)
#define VS       0.003  // 計算する場所の中心座標からの範囲(±VS)

#define NMAX     3000   // 計算の繰り返し上限
#define STEP     1600   // 計算する刻み

// "Coloring Dynamical Systems in the Complex Plane"
// http://math.unipa.it/~grim/Jbarrallo.PDF


float mandelbrot(const double complex c) {
  double complex z;
  int n;

  z = c;
  for (n = 0; n < NMAX; ++n) {
    //    if (cabs(z) > 2) { // より簡潔な記法(ただし遅い)
    if (creal(z) * creal(z) + cimag(z) * cimag(z) > 4) {
      return (n - (logf(logf(cabsf(z))) / logf(2))); // 発散
    }
    z = z * z + c;
  }
  return 0; // 計算の繰り返し上限到達
}

int main() {
  double a, b;

  for (a = C0r - VS; a < C0r + VS; a += 2 * VS / STEP) {
    for (b = C0i - VS; b < C0i + VS; b += 2 * VS / STEP) {
      printf("%e %e %e\n", a, b, mandelbrot(a + b * I) / NMAX);
    }
    printf("\n"); // これがないとgnuplotでエラーが出る
  }
  return 0;
}

リスト2 png.gnuplot (gnuplot実行スクリプト)
set term png size 900, 900
set output "mandelbrot.png"
set grid
set pm3d map
set size ratio -1
unset colorbox
unset key
set title 'Mandelbrot set'
set xlabel 'Re'
set ylabel 'Im'
set palette defined (0 "#000000", 1 "#d00000", 5 "#e0e000", 9 "#ffffff")
splot "data.txt"

リスト3 コンパイル&実行
$ cc -o mandelbrot -lm -O4 -Wall mandelbrot.c
$ ./mandelbrot > data.txt
$ gnuplot png.gnuplot

【補足】gnuplotがないと言われる場合は、下記手順でインストールしてください。
# apt update
# apt install gnuplot

図1 実行結果(mandelbrot.png)

2019/05/05

[Raspberry Pi] CPUの周波数や電圧を調べる

Raspberry PiのCPU周波数は以下のコマンドで調べられる。

  • CPUクロック
$ vcgencmd measure_clock arm
frequency(45)=1400000000

  • CPUコアクロック?
$ vcgencmd measure_clock core
frequency(1)=400000000
  • cpuコア電圧
$ vcgencmd measure_volts core
volt=1.3563V

試験環境


H/W : Rasperry Pi3 model B+
S/W : Raspbian (4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux)

参考サイト


2019/05/04

[Raspberry Pi] CPU温度を調べる

Raspberry PiのCPU温度は以下のコマンドで調べられる。
$ vcgencmd measure_temp
temp=52.6'C

試験環境


H/W : Rasperry Pi3 model B+
S/W : Raspbian (4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux)

参考サイト


2019/05/03

[Raspberry Pi] ヒートシンクの効果を確認する

先日、秋月電子でRaspberry Pi用ヒートシンクを見かけ、面白そうだったので購入しました。

ヒートシンクを取り付けると何か変わる?


 CPUの保護機能による処理能力低下を防止することができる可能性があります。

 ヒートシンクは半導体の放熱を助けます。ヒートシンクを半導体に取り付けることにより、半導体の放熱特性を高めることができます。CPUは計算負荷を高くすると発熱します。あまり発熱するとCPU自身が壊れてしまうため、保護機能が働き処理能力を落とします。
 従って、保護機能が動作するような場合、ヒートシンクを取り付けることにより、処理能力を落とさずに計算をすることができるかも知れません。

(1)試験環境


  H/W  : Raspberry Pi3 Model B+
  S/W  : Raspbian (4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l)
  電源 : Anker PowerPort Speed 5 (5V, 2.4A)

(2)計算負荷


 "unixbench"を使用しました。
Version 5.1.3
Multi-CPU version
January 13, 2011
  • インストール&実行手順
$ git clone https://github.com/kdlucas/byte-unixbench
$ cd byte-unixbench/UnixBench/
$ ./Run
"git"がない場合は"apt install git"でインストールする。

(3)結果


 ヒートシンク取り付け有無ではたいして変わりませんでした。

 ヒートシンクを取り付けると確かに温度上昇が鈍くなるのですが、高負荷が続くと結局のところ温度が上がってしまい保護機能が動作してしまうようです。そのためヒートシンクなしに比べてわずかですが、スコアがよくなっています。
 そこでヒートシンクに風を当ててみたところ、4並列の場合かなり改善しました。1並列が改善しないのは、保護機能が動作するほどの高負荷ではなかったと思われます。

(4)まとめ


 全CPUコアをフルに動作させるような重い計算を長時間を行う場合は、ヒートシンクを取り付けて強制空冷すると効果あり。ヒートシンクのみ(無風)はあまり効果がない。





(5)結果詳細


 上表の棒グラフは、項目毎の増減を示している。「ヒートシンクあり+強制空冷」はどの項目にも効果があるようです。

  • ヒートシンクなし
========================================================================
   BYTE UNIX Benchmarks (Version 5.1.3)

   System: XXXX: GNU/Linux
   OS: GNU/Linux -- 4.14.98-v7+ -- #1200 SMP Tue Feb 12 20:27:48 GMT 2019
   Machine: armv7l (unknown)
   Language: en_US.utf8 (charmap="ANSI_X3.4-1968", collate="ANSI_X3.4-1968")
   CPU 0: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
          
   CPU 1: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
          
   CPU 2: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
          
   CPU 3: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
          
   15:34:50 up  1:42,  2 users,  load average: 0.00, 0.00, 0.64; runlevel Mar

------------------------------------------------------------------------
Benchmark Run: 金  5月 03 2019 15:34:50 - 16:02:57
4 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables        5098208.2 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     1232.0 MWIPS (9.8 s, 7 samples)
Execl Throughput                               1129.2 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        156299.0 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           44759.6 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        382678.9 KBps  (30.0 s, 2 samples)
Pipe Throughput                              330624.4 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  69988.3 lps   (10.0 s, 7 samples)
Process Creation                               2855.0 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   2533.1 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    585.0 lpm   (60.1 s, 2 samples)
System Call Overhead                         702698.6 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0    5098208.2    436.9
Double-Precision Whetstone                       55.0       1232.0    224.0
Execl Throughput                                 43.0       1129.2    262.6
File Copy 1024 bufsize 2000 maxblocks          3960.0     156299.0    394.7
File Copy 256 bufsize 500 maxblocks            1655.0      44759.6    270.5
File Copy 4096 bufsize 8000 maxblocks          5800.0     382678.9    659.8
Pipe Throughput                               12440.0     330624.4    265.8
Pipe-based Context Switching                   4000.0      69988.3    175.0
Process Creation                                126.0       2855.0    226.6
Shell Scripts (1 concurrent)                     42.4       2533.1    597.4
Shell Scripts (8 concurrent)                      6.0        585.0    975.1
System Call Overhead                          15000.0     702698.6    468.5
                                                                   ========
System Benchmarks Index Score                                         362.8

------------------------------------------------------------------------
Benchmark Run: 金  5月 03 2019 16:02:57 - 16:31:29
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables       17411803.4 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     4207.0 MWIPS (9.9 s, 7 samples)
Execl Throughput                               2357.3 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        224108.8 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           60076.9 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        554471.0 KBps  (30.0 s, 2 samples)
Pipe Throughput                             1128343.7 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 236336.8 lps   (10.0 s, 7 samples)
Process Creation                               5330.6 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   4803.0 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    664.3 lpm   (60.2 s, 2 samples)
System Call Overhead                        2330013.7 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   17411803.4   1492.0
Double-Precision Whetstone                       55.0       4207.0    764.9
Execl Throughput                                 43.0       2357.3    548.2
File Copy 1024 bufsize 2000 maxblocks          3960.0     224108.8    565.9
File Copy 256 bufsize 500 maxblocks            1655.0      60076.9    363.0
File Copy 4096 bufsize 8000 maxblocks          5800.0     554471.0    956.0
Pipe Throughput                               12440.0    1128343.7    907.0
Pipe-based Context Switching                   4000.0     236336.8    590.8
Process Creation                                126.0       5330.6    423.1
Shell Scripts (1 concurrent)                     42.4       4803.0   1132.8
Shell Scripts (8 concurrent)                      6.0        664.3   1107.1
System Call Overhead                          15000.0    2330013.7   1553.3
                                                                   ========
System Benchmarks Index Score                                         784.4

  • ヒートシンクあり
========================================================================
   BYTE UNIX Benchmarks (Version 5.1.3)

   System: XXXX: GNU/Linux
   OS: GNU/Linux -- 4.14.98-v7+ -- #1200 SMP Tue Feb 12 20:27:48 GMT 2019
   Machine: armv7l (unknown)
   Language: en_US.utf8 (charmap="ANSI_X3.4-1968", collate="ANSI_X3.4-1968")
   CPU 0: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
          
   CPU 1: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
          
   CPU 2: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
          
   CPU 3: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
          
   18:22:07 up 9 min,  2 users,  load average: 0.00, 0.00, 0.00; runlevel May

------------------------------------------------------------------------
Benchmark Run: 金  5月 03 2019 18:22:07 - 18:50:43
4 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables        5094109.5 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     1229.4 MWIPS (9.8 s, 7 samples)
Execl Throughput                               1138.1 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        156185.2 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           44857.8 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        382938.0 KBps  (30.0 s, 2 samples)
Pipe Throughput                              329867.3 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  70211.5 lps   (10.0 s, 7 samples)
Process Creation                               2822.8 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   2546.4 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    618.0 lpm   (60.1 s, 2 samples)
System Call Overhead                         703036.0 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0    5094109.5    436.5
Double-Precision Whetstone                       55.0       1229.4    223.5
Execl Throughput                                 43.0       1138.1    264.7
File Copy 1024 bufsize 2000 maxblocks          3960.0     156185.2    394.4
File Copy 256 bufsize 500 maxblocks            1655.0      44857.8    271.0
File Copy 4096 bufsize 8000 maxblocks          5800.0     382938.0    660.2
Pipe Throughput                               12440.0     329867.3    265.2
Pipe-based Context Switching                   4000.0      70211.5    175.5
Process Creation                                126.0       2822.8    224.0
Shell Scripts (1 concurrent)                     42.4       2546.4    600.6
Shell Scripts (8 concurrent)                      6.0        618.0   1030.0
System Call Overhead                          15000.0     703036.0    468.7
                                                                   ========
System Benchmarks Index Score                                         364.6

------------------------------------------------------------------------
Benchmark Run: 金  5月 03 2019 18:50:43 - 19:19:36
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables       17417773.8 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     4206.2 MWIPS (9.8 s, 7 samples)
Execl Throughput                               2372.8 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        231473.5 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           60338.2 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        556413.0 KBps  (30.0 s, 2 samples)
Pipe Throughput                             1128152.9 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 232249.2 lps   (10.0 s, 7 samples)
Process Creation                               5325.5 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   4798.5 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    665.0 lpm   (60.3 s, 2 samples)
System Call Overhead                        2328416.2 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   17417773.8   1492.5
Double-Precision Whetstone                       55.0       4206.2    764.8
Execl Throughput                                 43.0       2372.8    551.8
File Copy 1024 bufsize 2000 maxblocks          3960.0     231473.5    584.5
File Copy 256 bufsize 500 maxblocks            1655.0      60338.2    364.6
File Copy 4096 bufsize 8000 maxblocks          5800.0     556413.0    959.3
Pipe Throughput                               12440.0    1128152.9    906.9
Pipe-based Context Switching                   4000.0     232249.2    580.6
Process Creation                                126.0       5325.5    422.7
Shell Scripts (1 concurrent)                     42.4       4798.5   1131.7
Shell Scripts (8 concurrent)                      6.0        665.0   1108.3
System Call Overhead                          15000.0    2328416.2   1552.3
                                                                   ========
System Benchmarks Index Score                                         786.2

  • ヒートシンクあり+強制空冷
========================================================================
   BYTE UNIX Benchmarks (Version 5.1.3)

   System: XXXX: GNU/Linux
   OS: GNU/Linux -- 4.14.98-v7+ -- #1200 SMP Tue Feb 12 20:27:48 GMT 2019
   Machine: armv7l (unknown)
   Language: en_US.utf8 (charmap="ANSI_X3.4-1968", collate="ANSI_X3.4-1968")
   CPU 0: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
          
   CPU 1: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
          
   CPU 2: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
          
   CPU 3: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
          
   19:25:50 up  1:13,  2 users,  load average: 0.04, 3.88, 4.83; runlevel May

------------------------------------------------------------------------
Benchmark Run: 金  5月 03 2019 19:25:50 - 19:53:53
4 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables        5087638.3 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     1232.6 MWIPS (9.8 s, 7 samples)
Execl Throughput                               1134.2 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        155559.8 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           44994.3 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        387643.5 KBps  (30.0 s, 2 samples)
Pipe Throughput                              329627.0 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  69850.0 lps   (10.0 s, 7 samples)
Process Creation                               2861.7 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   2548.7 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    690.2 lpm   (60.1 s, 2 samples)
System Call Overhead                         703275.3 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0    5087638.3    436.0
Double-Precision Whetstone                       55.0       1232.6    224.1
Execl Throughput                                 43.0       1134.2    263.8
File Copy 1024 bufsize 2000 maxblocks          3960.0     155559.8    392.8
File Copy 256 bufsize 500 maxblocks            1655.0      44994.3    271.9
File Copy 4096 bufsize 8000 maxblocks          5800.0     387643.5    668.4
Pipe Throughput                               12440.0     329627.0    265.0
Pipe-based Context Switching                   4000.0      69850.0    174.6
Process Creation                                126.0       2861.7    227.1
Shell Scripts (1 concurrent)                     42.4       2548.7    601.1
Shell Scripts (8 concurrent)                      6.0        690.2   1150.3
System Call Overhead                          15000.0     703275.3    468.9
                                                                   ========
System Benchmarks Index Score                                         368.5

------------------------------------------------------------------------
Benchmark Run: 金  5月 03 2019 19:53:53 - 20:22:29
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables       20320487.3 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     4918.8 MWIPS (9.8 s, 7 samples)
Execl Throughput                               2649.4 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        259254.7 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           69622.1 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        607469.5 KBps  (30.0 s, 2 samples)
Pipe Throughput                             1315613.3 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 276083.6 lps   (10.0 s, 7 samples)
Process Creation                               5979.0 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   5359.5 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    738.1 lpm   (60.1 s, 2 samples)
System Call Overhead                        2717452.9 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   20320487.3   1741.3
Double-Precision Whetstone                       55.0       4918.8    894.3
Execl Throughput                                 43.0       2649.4    616.1
File Copy 1024 bufsize 2000 maxblocks          3960.0     259254.7    654.7
File Copy 256 bufsize 500 maxblocks            1655.0      69622.1    420.7
File Copy 4096 bufsize 8000 maxblocks          5800.0     607469.5   1047.4
Pipe Throughput                               12440.0    1315613.3   1057.6
Pipe-based Context Switching                   4000.0     276083.6    690.2
Process Creation                                126.0       5979.0    474.5
Shell Scripts (1 concurrent)                     42.4       5359.5   1264.0
Shell Scripts (8 concurrent)                      6.0        738.1   1230.2
System Call Overhead                          15000.0    2717452.9   1811.6
                                                                   ========
System Benchmarks Index Score                                         896.6

2019/01/06

自宅サーバのリプレース


■リプレースの理由


 現在使用中のサーバはまだ安定して動いていますが、24時間365日連続通電ですでに9年近く稼働している。そろそろ故障してもおかしくないので後継機を用意しておきたい。

■現在使用中のサーバ


H/W:
intel D510MO (Memory:4GB, SSD:80GB)
S/W:
debian 9

■後継機の選定


 後継機の選定にあたり、以下の条件とした。
  • 低消費電力(低発熱)であること
  • ファンレス(ベアリングレス)であること
  • 連続稼働に耐えうること
  • Linuxが使用できること

■後継機(決定)


H/W:
本体: Shuttle DS77U
Memory: 16GB (DDR4-2133 SO-DIMM 8GBx2)
SSD: 1TB (SanDisk Ultra 3D SSD)
S/W:
debian 9

  • CPUのTDPが15Wで低発熱のためファンレスを実現
  • 最近のPCではめずらしいCOMポートを標準搭載。サーバなので普段はキーボードもディスプレィも接続せずLAN経由のリモートログインで使用するが、何らかのトラブルでリモートログインができなくなった時のためCOMポート経由のログインができるのがうれしい。
  • 筐体が金属。とても丁寧に作られた筐体で愛着が湧きます。
  • ShuttleのHPでDS77Uの用途に『デジタルサイネージ』が入っていたのである程度連続稼働に耐えられるかなと推測
  • Memoryは今のところ8GBでも十分だが、長く使うことを考えて16GBを選択。
  • SSDは正直1TBも使わないが、そんなに高くなかったので1TBを選択。

【備忘録】時系列データの編集方法(R言語, tidyverse)

TimeSeries.knit 1 サンプルデータ作成 2 日付単位に集計する 2.1 月毎集計 2.2 四半期毎集計 ...