masalibの日記

システム開発、運用と猫の写真ブログです

Node.jsのexpressをforeverでデーモン化する

expressはエラーハンドリングされていないエラーがが起きてしまうとストップしてしまうのでサービスとしては使えません。
そこでforeverというモジュールを使ってデーモン化する事、エラー時に自動的に起動するようにします

実践Node.js プログラミング (Programmer's SELECTION)

実践Node.js プログラミング (Programmer's SELECTION)

の354ページ(12.2.2のNodeの実行を続ける)に記載されています
簡単な事しか載っていないのでネットで調べた内容を保管しています

github.com

続きを読む

ラジオボタングループを普通に作ると難しいのね

Bootstrapを使ってラジオボタンをスイッチのように切り替えることは知っていました

<div class="btn-group" data-toggle="buttons">
    <label class="btn btn-primary"><input type="radio" name="options" id="option2" autocomplete="off">yes</label>
    <label class="btn btn-primary"> <input type="radio" name="options" id="option3" autocomplete="off">no</label>
</div>

Bootstrap3:ラジオボタンをスイッチ表示にする | CloudAdvisor
より引用
Bootstrap 3の表示サンプル - js do it
でdemoが見れます

これをBootstrapを使わずに再現しようとすると
角丸や切り替えなどの非常に難しい・・・・

1・ラジオボタンの横にする方法
qiita.com

2・角丸する方法
qiita.com

正直、デザインの担保が難しいと思った

今回は諦めてもらったが
もし対応する場合はBootstrapを一部だけを適応する形をとらないといけない

qiita.com
Bootstrapをいれてもらうと非常に楽なんですけど・・・いれてくれないのがうちのクオリティーwww

この件で色々な人と相談していた
マジでびっくりする事がおきた
いっしょに働いているWEB開発5年目の人がBootstrapを知らなかったwww

何かを蓄積していて比較されるとすごい安心

先週からずっとあの首が回らなくなって
すごい痛かったんですけども外科に行ってきて
固まってるのでてくる薬を投与された

2年ぐらいずっと一緒に入ってるところでもなんか
おかしい首が痛かったらしくてレントゲン撮って
その今とこの前2年前の首のレントゲンを比較されて
骨には異常ないですねって言われても一安心

過去のデータとかっていうの蓄積していても
何かを蓄積していて比較されるとすごい安心

やっぱ仕事でも一緒で
トラブルがあった場合に過去どうだったんですか絶対聞かれる

過去から比較してそこまで変わらなかったりとか
予想に述べられると非常にやっぱりで信頼される

今の仕事をしつつそれを教訓とを
次に活かせるの形として蓄積して
それ取り出せるの形までそこまで意識をして一つの仕事をする
そうすると2年後3年後とか化けると思います

以上が・・

4歳下のマネージャーが朝会の発表だった
首が痛いところがそんなところを発想するなんて意識高すぎるwww

node.jsでURL(image系)の存在チェック

経緯

本来ありえないけど、イメージファイルが存在しない場合に200ステータスのごめんなさいページ(HTML)をかえすサーバーがあった
これだと本当に画像が存在しないのかはwgetでは判断できなかった
対応して事前に存在チェックすることにした

続きを読む

ClassicASPで外部にあるサーバーの画像を取得して、バイナリー出力する

前提

外部にあるサーバーは公開していない(IP制限している)のでユーザーに見せることができない

詳細

MSXML2.ServerXMLHTTPというオブジェクトで通信して
取得した結果をそのまま出力する
前回とほぼ同じ
masalib.hatenablog.com

ソース

Dim getURL
Dim objXMLHTTP
Dim objADOStream
Dim strHost			'ホスト名
Dim strPort			'ポート番号
Dim strRequest

Set objXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP")
strHost = SERVER_XXXX		'直うちでもドメインでもOK		
strPort = SERVER_XXXX_PORT	'省略はできないみたい
strRequest = "/xxx/image.jpg"
getURL = "http://" & strHost & ":" & strPort  & strRequest

objXMLHTTP.open "GET", getURL, false
objXMLHTTP.send()

If objXMLHTTP.Status = 200 Then
	Set objADOStream = CreateObject("ADODB.Stream")
	objADOStream.Open
	objADOStream.Type = 1 'adTypeBinary
	objADOStream.Write objXMLHTTP.ResponseBody
	objADOStream.Position = 0    'Set the stream position to the start
	Response.BinaryWrite objADOStream.Read

	objADOStream.Close
	Set objADOStream = Nothing
End if

感想

basp21を使わないので64ビット環境でも動くと思う

CentOS6にnode.jsのgm(graphicsmagic)をインストール

gmとは画像加工する為のライブラリーです
http://aheckmann.github.io/gm/
で試せます

$ sudo vi /etc/yum.repos.d/naulinux-school.repo

下記を書き込む

[naulinux-school]
name=NauLinux School
baseurl=http://downloads.naulinux.ru/pub/NauLinux/6.2/$basearch/sites/School/RPMS/
enabled=0
gpgcheck=1
gpgkey=http://downloads.naulinux.ru/pub/NauLinux/RPM-GPG-KEY-linux-ink

書き込むが完了したらyumでインストールする

$ sudo yum --enablerepo=naulinux-school install GraphicsMagick -y

準備ができたのでnpmでgmをインストールする

$ sudo npm install gm

参考URL
qiita.com
node.jsを使ってサーバサイドで画像合成してみる (gm(GraphicsMagick for node.js)編) |

Node.js超入門

Node.js超入門

CentOS 6.xにnode.js(v8系)をインストールする

準備

今入っているやつがあれば削除する

$ sudo yum remove nodejs

で消しました。
事前にいれておくべきパッケージをインストールする

$ sudo yum install -y gcc-c++ make

インストール

リポジトリのインストールをインストールする

$ sudo rpm -Uvh https://rpm.nodesource.com/pub_8.x/el/6/x86_64/nodejs-8.9.4-1nodesource.x86_64.rpm

2018/02/14時点のバージョンは8.9.4だけどバージョンアップする可能性があるので下記のページで確認してからインストール
https://rpm.nodesource.com//pub_8.x/el/6/x86_64/

もしv9系をいれたい場合は下記を確認してインストール
https://rpm.nodesource.com//pub_9.x/el/6/x86_64/

$ sudo rpm -Uvh https://rpm.nodesource.com/pub_9.x/el/6/x86_64/nodejs-9.5.0-1nodesource.x86_64.rpm

Node v10以降のインストールの注意点

Node v10以降はC ++ 14サポートにgcc 4.9以降を必要とするようです
Centos 6は1年以上メンテナンスのみになっているので、
Node v10以降の使用が必要な場合はOSをアップグレードすることをお勧めします。

下記のエラーがでたらOS依存です
cc1plus: error: unrecognized command line option "-std=gnu++1y"
自分のエラーログ

make: Entering directory `/var/www/masalib-gatsby-blog3/node_modules/deasync/build'
  CXX(target) Release/obj.target/deasync/src/deasync.o
cc1plus: error: unrecognized command line option "-std=gnu++1y"
make: *** [Release/obj.target/deasync/src/deasync.o] Error 1
make: Leaving directory `/var/www/masalib-gatsby-blog3/node_modules/deasync/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:262:23)
gyp ERR! stack     at ChildProcess.emit (events.js:197:13)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:254:12)
gyp ERR! System Linux 2.6.32-573.7.1.el6.x86_64
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /var/www/masalib-gatsby-blog3/node_modules/deasync
gyp ERR! node -v v11.12.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
Build failed


それでもv10系をいれたい場合は下記を確認してインストール
https://rpm.nodesource.com/pub_10.x/el/6/x86_64/

$ sudo rpm -Uvh https://rpm.nodesource.com/pub_10.x/el/6/x86_64/nodejs-10.15.3-1nodesource.x86_64.rpm

それでもv11系をいれたい場合は下記を確認してインストール
https://rpm.nodesource.com/pub_11.x/el/6/x86_64/

$ sudo rpm -Uvh https://rpm.nodesource.com/pub_11.x/el/6/x86_64/nodejs-11.12.0-1nodesource.x86_64.rpm

確認

$ node -v 

v8.9.4が表示されればOKです

参考URL

https://qiita.com/zaburo/items/a69ab94f707454a5bbe7

Node.js超入門

Node.js超入門

あとiptabelsの設定で3000ポートを許可しないとアクセスできない。ローカルだったので停止した

service iptables stop
chkconfig iptables off
chkconfig --list | grep iptables

SElinuxが動いていると上手く動かなかった。諦めた

SElinuxの停止
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/security-enhanced_linux/sect-security-enhanced_linux-working_with_selinux-enabling_and_disabling_selinux