サーバ リプレイス
サーバに使ってたAtom N330のPCですが、あまり使ってない&ファン音がうるさいので、一年以上電源すら入れてませんでした。GWで休みなのでリプレイスすることにしましょう。
今回購入したのはShuttle DS57U。
www.shuttle-japan.jp
一緒に、Samsung SSD 850 EVO mSATA 120GBとCFD Elixir DDR3L 1600MHz 8GBも購入。(型番だと、MZ-M5E120 と D3N1600Q-L8G)
組み立ては超簡単なので解説するまでもないですね。Dockerの実験とかしたく、OSどうしようか迷ったけどとりあえずCentOS 7を入れておいた。
稼働中にHDMI抜き差しすると、
[drm:drm_edid_block_valid] *ERROR* EDID checksum is invalid, remainder is 130
とか出てくるけど、気にしない。
ファンレスなので稼働中は完全無音。いいですね。今まで手ごろなファンレスPCだとAtom系プロセッサが多かったですが、DS57Uは’Broadwell-U’Intel Celeron 3205U搭載なので性能もだいぶマシになってるかと。(Atom N330はさすがにとろかった)
UNIX BENCHの結果も貼っときます。
======================================================================== BYTE UNIX Benchmarks (Version 5.1.3) System: noop: GNU/Linux OS: GNU/Linux -- 3.10.0-229.1.2.el7.x86_64 -- #1 SMP Fri Mar 27 03:04:26 UTC 2015 Machine: x86_64 (x86_64) Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8") CPU 0: Intel(R) Celeron(R) 3205U @ 1.50GHz (2993.1 bogomips) Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization CPU 1: Intel(R) Celeron(R) 3205U @ 1.50GHz (2993.1 bogomips) Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization 09:45:08 up 19 min, 1 user, load average: 0.10, 0.05, 0.03; runlevel 3 ------------------------------------------------------------------------ Benchmark Run: 日 5月 03 2015 09:45:08 - 10:13:22 2 CPUs in system; running 1 parallel copy of tests Dhrystone 2 using register variables 17444542.6 lps (10.0 s, 7 samples) Double-Precision Whetstone 2720.9 MWIPS (9.9 s, 7 samples) Execl Throughput 2626.3 lps (30.0 s, 2 samples) File Copy 1024 bufsize 2000 maxblocks 583978.7 KBps (30.0 s, 2 samples) File Copy 256 bufsize 500 maxblocks 167450.0 KBps (30.0 s, 2 samples) File Copy 4096 bufsize 8000 maxblocks 1538414.4 KBps (30.0 s, 2 samples) Pipe Throughput 941660.4 lps (10.0 s, 7 samples) Pipe-based Context Switching 122952.4 lps (10.0 s, 7 samples) Process Creation 8663.9 lps (30.0 s, 2 samples) Shell Scripts (1 concurrent) 4462.0 lpm (60.0 s, 2 samples) Shell Scripts (8 concurrent) 893.4 lpm (60.0 s, 2 samples) System Call Overhead 1422643.3 lps (10.0 s, 7 samples) System Benchmarks Index Values BASELINE RESULT INDEX Dhrystone 2 using register variables 116700.0 17444542.6 1494.8 Double-Precision Whetstone 55.0 2720.9 494.7 Execl Throughput 43.0 2626.3 610.8 File Copy 1024 bufsize 2000 maxblocks 3960.0 583978.7 1474.7 File Copy 256 bufsize 500 maxblocks 1655.0 167450.0 1011.8 File Copy 4096 bufsize 8000 maxblocks 5800.0 1538414.4 2652.4 Pipe Throughput 12440.0 941660.4 757.0 Pipe-based Context Switching 4000.0 122952.4 307.4 Process Creation 126.0 8663.9 687.6 Shell Scripts (1 concurrent) 42.4 4462.0 1052.4 Shell Scripts (8 concurrent) 6.0 893.4 1489.1 System Call Overhead 15000.0 1422643.3 948.4 ======== System Benchmarks Index Score 931.2 ------------------------------------------------------------------------ Benchmark Run: 日 5月 03 2015 10:13:22 - 10:41:37 2 CPUs in system; running 2 parallel copies of tests Dhrystone 2 using register variables 34825486.9 lps (10.0 s, 7 samples) Double-Precision Whetstone 5441.2 MWIPS (9.9 s, 7 samples) Execl Throughput 5794.2 lps (30.0 s, 2 samples) File Copy 1024 bufsize 2000 maxblocks 998230.2 KBps (30.0 s, 2 samples) File Copy 256 bufsize 500 maxblocks 289651.2 KBps (30.0 s, 2 samples) File Copy 4096 bufsize 8000 maxblocks 2468148.8 KBps (30.0 s, 2 samples) Pipe Throughput 1879296.2 lps (10.0 s, 7 samples) Pipe-based Context Switching 411993.8 lps (10.0 s, 7 samples) Process Creation 18371.9 lps (30.0 s, 2 samples) Shell Scripts (1 concurrent) 6687.3 lpm (60.0 s, 2 samples) Shell Scripts (8 concurrent) 913.8 lpm (60.1 s, 2 samples) System Call Overhead 2411994.1 lps (10.0 s, 7 samples) System Benchmarks Index Values BASELINE RESULT INDEX Dhrystone 2 using register variables 116700.0 34825486.9 2984.2 Double-Precision Whetstone 55.0 5441.2 989.3 Execl Throughput 43.0 5794.2 1347.5 File Copy 1024 bufsize 2000 maxblocks 3960.0 998230.2 2520.8 File Copy 256 bufsize 500 maxblocks 1655.0 289651.2 1750.2 File Copy 4096 bufsize 8000 maxblocks 5800.0 2468148.8 4255.4 Pipe Throughput 12440.0 1879296.2 1510.7 Pipe-based Context Switching 4000.0 411993.8 1030.0 Process Creation 126.0 18371.9 1458.1 Shell Scripts (1 concurrent) 42.4 6687.3 1577.2 Shell Scripts (8 concurrent) 6.0 913.8 1522.9 System Call Overhead 15000.0 2411994.1 1608.0 ======== System Benchmarks Index Score 1716.6
負数の剰余
最近、これ見て、負数の余剰にこういう使い方があるんだーって思いました。
エクセルの角度の算出についての質問です.x,yにある値を代入して,... - Yahoo!知恵袋
処理系によって違うみたいなので、気になって試してみた。
C (Apple LLVM version 6.1.0 (clang-602.0.49))
$ cat mod.c #include <stdio.h> int main(void) { printf("%d\n", -150 % 360); return 0; } $ gcc mod.c && ./a.out -150
Prelude> (-150) `mod` 360 210
irb(main):001:0> -150 % 360 => 210
scala> -150 % 360 res0: Int = -150
確かに違いますね。使うときは気をつけましょう。
Haskell道 その1
Haskellはforやwhileのような繰り返し構文がないんですね。なかなか戸惑いますが慣れでしょうか。
早速、コンビネーションを得る関数を作ってみた。
module Main (main) where combination :: Integer -> [Integer] -> [[Integer]] combination n elems | n <= 0 || length elems == 0 = [] combination 1 elems = map (\e -> [e]) elems combination n (e:elems) = current ++ others where current = map (e:) (combination (n-1) elems) others = combination n elems main :: IO () main = do print (combination 3 [1,2,3,4,5])
出力
*Main> main [[1,2,3],[1,2,4],[1,2,5],[1,3,4],[1,3,5],[1,4,5],[2,3,4],[2,3,5],[2,4,5],[3,4,5]]
Haskellインストール
さてさて、今年はHaskellを覚えようと思ってます。
まずはインストールしましょう。
なお、インストール環境はこちら;
Mac OSX Yosemite(10.10.3), Xcode 6.3
インストールはとっても簡単で、Haskell Platform for Mac OS Xからpkgをダウンロードしてきて入れるだけ。
そしたら、/usr/bin 配下に、ghcとかghciとかcabalとかのリンクファイルが置かれます。本体は/Library/Frameworks/GHC.frameworkとか/Library/Haskellにインストールされてるみたい。
早速、ghciでインタラクティブに実行してみましょう。
$ ghci GHCi, version 7.8.3: http://www.haskell.org/ghc/ :? for help Loading package ghc-prim ... linking ... done. Loading package integer-gmp ... linking ... done. Loading package base ... linking ... done. Prelude> putStrLn "hello, world" hello, world Prelude>
よーし、やるぞ!
Developers Summit 2015
しばらく前になるけどDevelopers Summit 2015に行ってきたときのメモ。
ITアーキテクト
・作るから運営へ ・静的構造から動的構造へ 部品を組み合わせてサービスを作る ・歴史 昔:静的構造の計画型プロセス アジャイル:静的構造の調整型プロセス 今:動的構造の計画型または調整型プロセス ・個々の部品 システムを構成する部品同士(サービス同士)は、 APIによって連携 独立した構造とプロセス 独自のライフサイクル 個別のドメイン ・アーキテクト 構造とプロセスを定義する 様々な利害調整・プロトタイピング・評価の方法までやる ドメインに対する理解、 ・責任 最大公約数を目指す 全部やるのは難しい。全員の要望を全部足していては爆発するだけ。 最大公約数でやると全員が満足しない。理解されない事も多い。 自分の責任としてやる。 ・銀の弾丸はない 事前の検証をきっちり 弾丸を込めたら打ち抜く ・妥協して、諦める 考え抜いて諦める 諦めるときは未来に託す(丸投げではない、託すために何ができるか)
途中から聞いたけど、SIer屋さんの話かな。どちらにせよ完璧はないので有限時間内に方針を決めて推進していかないといけないんだよね、どんなシステムだろうと。なんて自分の経験と照らし合わせたり。
暗号技術
公開鍵方式 RSAはもう安全でない → 楕円曲線暗号 を開発 ・楕円曲線暗号 240bitでRSA3096bitぐらいの強度 楕円曲線とは 円柱の表面世界。広げると、メルカトル図法。 楕円曲線の世界で斜め(ペクトルP)に移動x歩移動する。 xからxPは分かるが、xPからxは分からない 実際の暗号ではxをお互いに交換する。 ・代理暗号 変換暗号鍵をクラウドに渡すと、クラウドの情報を 復号せずに別の鍵で暗号化されたデータを生成させる。 これにより、別の人にオリジナルの復号鍵を渡さずに 別の専用の復号鍵で復号できるデータが作れる。 ・属性ベース暗号 復号できる人を限定したい。 ファイルサーバでアクセス権はユーザ単位で割り当てられたが、 それを暗号化の仕組みに取り込んでいる。 ・秘密鍵の分散化? よくわからんかった ・暗号化したままの処理したい 準同型暗号 完全準同型暗号 加算処理、乗算処理ができる暗号。 まだまだ実用まで逝かない。暗号鍵が数百メガ〜数GB 検索暗号、関数型暗号 (メモり損ねた)
暗号は全然知らないのですごく興味深かった。クラウドにアップロードした暗号化済みデータを安全に扱うために、代理暗号などが考えられてるとかおもしろい。
【書評】Team Geek
Team Geek ―Googleのギークたちはいかにしてチームを作るのか
- 作者: Brian W. Fitzpatrick,Ben Collins-Sussman,角征典
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/07/20
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (20件) を見る
エンジニアが持つべきマインドと、周囲の対象(仕事、同僚、上司、顧客のフィードバックなど)とどう向き合うかを、Googleの中の人が書いた本。
一番重要なのは以下の3つをマインドとして持つこと。書中ではHRTと呼ばれている。
- 謙虚(Humility)
- 尊敬(Respect)
- 信頼(Trust)
チームで成果を出すのに一番難しいのは人間関係であって、それにどう向き合うか、言葉や文化が違えど同じなんだなと感じた。とりわけ、コードレビューで指摘する言葉の選び方。コードに対して「そこは〇〇パターンで書くべきだ。」と言うより「ここは〇〇パターンで書いたほうが読みやすいでしょうか?」と言うべきと謳っている*1。遠回しな言い方だが、本質は相手への指摘ではなくコードそのものへの指摘であることを強調することです。
英語圏の人だとずばずば言うのかと思ったら、その辺も考慮してる人もいるのですね*2。
あと、謙虚と自信の境目が難しい。