HTMLとJavaScriptで画像をリサイズ

HTML + JavaScript ツール第3弾。
HTML5 の canvas 要素で画像のリサイズができるというので、やってみた。

 cf. 画像のリサイズ

Size を指定しておいて、リサイズしたい画像を選ぶとリサイズされた画像が画面に並ぶようになっている。画像をクリックすればダウンロードもできる。

参考にしたページはいくつかあるけど、↓ここを挙げておこう。

 cf. クライアント側でcanvasを使って画像をリサイズする – Qiita

以下、ソース。

HTMLとJavaScriptでMD5ハッシュ値の計算

先週、華氏度と摂氏度の換算をする WEB ページを作ってみて、HTML と JavaScript だけでページを作れは、サーバなしで簡単なツールを作れることが分かった。
そこで、いくつか同じように WEB ページで動くツールを作ってみている。今日は、ローカルファイルの MD5 ハッシュ値を計算するツール(ページ)を紹介しよう。

 cf. MD5ハッシュ値の計算

ページを作るにあたっては、次のページとそこからリンクされているページを参考にした。

 cf. ローカルバイナリファイルからMD5ハッシュ値を計算する

特にローカルファイルの扱い方が参考になった。また、MD5 ハッシュ値の計算は、次のページで公開されている JavaScript のライブラリをそのまま使わせてもらった。

 cf. 高度な JavaScript 技集

最後に HTML のソースを載せておく。

華氏度と摂氏度の換算

「Fahrenheit 451」のTシャツを買ったんだ。ブラッドベリの「華氏451度」。白。カッコイイ。

で、華氏451度って、摂氏でいうと何度なの?という当然の疑問が。まあ、ググればすぐにわかるんだけど、せっかくなのでそれで終わりにするんじゃなくて、華氏と摂氏の換算をするページを HTML と JavaScript で書いてみた。

 cf. 華氏度↔摂氏度の換算

ソースも載せておく。

で、結局、華氏451度が摂氏何度なのかというと、四捨五入して約233度。

さくらVPSのRailsアプリをバージョンアップ

さくらの VPS で動かしている Rails アプリをバージョンアップした、その記録。
今回のバージョンアップでは、Rails のバージョンアップしないけど、データベースの変更をするので若干緊張しながらやった。

まずは、アプリを停止する。
で、万が一のためにデータベースのバックアップ。

[takatoh@tk2-254-36564 ~]$ mysqldump -u lathercraft -p lathercraft_production > lcp-20180502.sql

次に、アプリのディレクトリに移動して git fetchgit merge origin/master

[takatoh@tk2-254-36564 ~]$ cd /var/www/lathercraft
[takatoh@tk2-254-36564 lathercraft]$ sudo git fetch
Password: 
remote: Counting objects: 126, done.
remote: Compressing objects: 100% (126/126), done.
remote: Total 126 (delta 95), reused 0 (delta 0)
Receiving objects: 100% (126/126), 11.91 KiB | 6 KiB/s, done.
Resolving deltas: 100% (95/95), completed with 21 local objects.
From https://bitbucket.org/takatoh/lathercraft
   14f1281..7aecdc3  master     -> origin/master
 * [new branch]      support-release-datetime -> origin/support-release-datetime
 * [new tag]         v2.0.1     -> v2.0.1
From https://bitbucket.org/takatoh/lathercraft
 * [new tag]         v2.0.0     -> v2.0.0
[takatoh@tk2-254-36564 lathercraft]$ sudo git merge origin/master
Auto-merging .gitignore
Auto-merging db/schema.rb
CONFLICT (content): Merge conflict in db/schema.rb
Automatic merge failed; fix conflicts and then commit the result.

あれ、db/schema.rb がコンフリクトした?なんでだ?
中身を見てみると、文字列のカラムに limit:255 がついている。このファイルはデータベースをマイグレートすれば更新されるはずなので、元に戻しておく。

[takatoh@tk2-254-36564 lathercraft]$ sudo vim db/schema.rb

修正が済んだら commit

[takatoh@tk2-254-36564 lathercraft]$ sudo git add db/schema.rb
[takatoh@tk2-254-36564 lathercraft]$ sudo git commit -m "merge branch origin/master."

さて、いよいよデータベースのマイグレーション。

[takatoh@tk2-254-36564 lathercraft]$ sudo -s
[root@tk2-254-36564 lathercraft]# export SECRET_KEY_BASE=bundle exec rake secret
[root@tk2-254-36564 lathercraft]# bundle exec rake db:migrate RAILS_ENV=production
DEPRECATION WARNING: The configuration option config.serve_static_assets has been renamed to config.serve_static_files to clarify its role (it merely enables serving everything in the public folder and is unrelated to the asset pipeline). The serve_static_assets alias will be removed in Rails 5.0. Please migrate your configuration files accordingly. (called from block in  at /var/www/lathercraft/config/environments/production.rb:23)
== 20180430070208 AddReleaseDatetimeToItems: migrating ========================
-- add_column(:items, :release_datetime, :datetime)
   -> 1.5631s
== 20180430070208 AddReleaseDatetimeToItems: migrated (1.5635s) ===============

なんか警告が出てるけどまあいいや。次に進もう。

アプリを production 環境で立ち上げてみる。

[root@tk2-254-36564 lathercraft]# export SECRET_KEY_BASE=bundle exec rake secret
[root@tk2-254-36564 lathercraft]# bundle exec rake db:migrate RAILS_ENV=production

無事、立ち上がった。けど、あるページではエラーになってしまった。開発環境で修正して本番環境に反映すると、直った。多分これで大丈夫。

最後に本番用に立ち上げて完了。

[追記]

マイグレーションのところで出た警告だけど、ググってみたら config.serve_static_assets という設定項目が config.serve_static_files に名前変更されている、ということが分かった。なので、その通りに修正して完了。

ext4のUSB外付けHDDにラベルをつける

Linux の ext4 ファイルシステムのディスクにも NTFS のボリュームラベルのようにラベル(名前)をつけられることを知った。

 cf. Linuxでストレージのラベルを確認・変更する

メインマシンの envelopes に繋がってる外付け HDD は NTFS なので、もうひとつの Ubuntu マシンである wplj の外付け HDD で試してみる。

まずはデバイスの確認。

takatoh@wplj $ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 465.8G  0 disk 
├─sda1   8:1    0   512M  0 part /boot/efi
├─sda2   8:2    0 461.4G  0 part /
└─sda3   8:3    0   3.9G  0 part [SWAP]
sdb      8:16   0   2.7T  0 disk 
└─sdb1   8:17   0   2.7T  0 part /media/opabinia
sdc      8:32   0   2.7T  0 disk 
└─sdc1   8:33   0   2.7T  0 part /media/aysheaia

sdb1 と sdc1 が USB の外付け HDD だ。df コマンドに -T オプションをつけるとファイルシステムの種類を表示してくれる。

takatoh@wplj $ df -T
Filesystem     Type      1K-blocks      Used  Available Use% Mounted on
udev           devtmpfs    1948676         0    1948676   0% /dev
tmpfs          tmpfs        393812     17240     376572   5% /run
/dev/sda2      ext4      476050488  17526428  434319056   4% /
tmpfs          tmpfs       1969056       216    1968840   1% /dev/shm
tmpfs          tmpfs          5120         4       5116   1% /run/lock
tmpfs          tmpfs       1969056         0    1969056   0% /sys/fs/cgroup
/dev/sdb1      ext4     2884152984 722813244 2014810080  27% /media/opabinia
/dev/sdc1      ext4     2884152984 981135372 1756487952  36% /media/aysheaia
/dev/sda1      vfat         523248      3496     519752   1% /boot/efi
tmpfs          tmpfs        393812        52     393760   1% /run/user/1000

ext4 ファイルシステムにラベルをつけるのは e2label コマンド。
e2label デバイス名で現在のラベルを表示し、e2label デバイス名 ラベルでラベルをつける(ないしは変更する)。

takatoh@wplj $ sudo e2label /dev/sdb1

ラベルがついていないので何も返ってこない。
じゃ、つけてみよう。

takatoh@wplj $ sudo e2label /dev/sdb1 OPABINIA
takatoh@wplj $ sudo e2label /dev/sdb1
OPABINIA

ついでに /dev/sdc1 にも。

takatoh@wplj $ sudo e2label /dev/sdc1 AYSHEAIA
takatoh@wplj $ sudo e2label /dev/sdc1
AYSHEAIA

無事、ラベルがついた。
ラベルは blkid コマンドでも確認できる。

takatoh@wplj $ sudo blkid
/dev/sda1: UUID="D17D-DA22" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="6fa2ce8f-fa84-4c97-8280-e58107f1f5f7"
/dev/sda2: UUID="55c35560-7f0d-42ea-895c-5522c3b0a757" TYPE="ext4" PARTUUID="2e419080-c527-4316-b546-f404b2974dc6"
/dev/sda3: UUID="fe038a20-aa4e-48d9-b98c-f8932b715370" TYPE="swap" PARTUUID="8383fce1-4445-419d-a75d-1e002ac985ef"
/dev/sdb1: LABEL="OPABINIA" UUID="cd8ae5c6-3931-4855-a60b-40f27b9bc518" TYPE="ext4" PARTUUID="76dd840a-3ce4-4092-9510-a127dd9f0297"
/dev/sdc1: LABEL="AYSHEAIA" UUID="4bd2ad4c-1acf-4468-847b-1dd0a0c474a2" TYPE="ext4" PARTUUID="33288db2-8046-449d-ae4f-03f23c3864b3"

MediaWikiでインターウィキの編集を出来るようにする

MediaWiki では、デフォルトでインターウィキ機能が使えるようになっているけど、接頭辞の追加とか編集とかはデータベースを直接操作する必要があるらしい。
そこでエクステンション(拡張機能)を有効にして、特別ページでインターウィキの編集を出来るようにする。

具体的には LocalSettings.php ファイルの末尾に次のように追記する。

こうすることで、管理者でログインすると、特別ページに「インターウィキデータの閲覧と編集」というページができて、インターウィキの追加・編集・削除ができるようになる。

Nginxを使って仮想サーバーをたてる

先日作った Sinatra アプリに、sombrero という仮想サーバー名でアクセスできるようにする。
Nginx の仮想サーバーの設定は、/etc/nginx/conf.d 以下に「仮想サーバー名.conf」という設定ファイルを作ることで行う。
というわけで、今回は /etc/nginx/conf.d/sombrero.conf ファイルを作る。

[takatoh@aybesea ~]$ cd /etc/nginx/conf.d
[takatoh@aybesea conf.d]$ sudo vim sombrero.conf

ファイルの内容は次の通り:

80 番ポートで待ち受けて、アプリの動いている 9000 番ポートへ転送している。

ログファイルのためのディレクトリを作る。

[takatoh@aybesea conf.d]$ sudo mkdir /var/log/nginx/sombrero

これで OK のはず。Nginx をリスタート。

[takatoh@aybesea conf.d]$ sudo systemctl restart nginx

別のマシンから http://sombrero/ にアクセスしてみると、ちゃんと動作していることが確認出来た。

CentOS 7にNginxをインストールする

Nginx は CentOS 7 の標準リポジトリでは提供されていないので、まずは EPEL リポジトリを登録する。

[takatoh@aybesea ~]$ sudo yum install epel-release.noarch

Nginx をインストール。

[takatoh@aybesea ~]$ sudo yum install nginx

firewalld の設定とリスタート。

[takatoh@aybesea ~]$ sudo firewall-cmd --add-service=http --zone=public --permanent
[takatoh@aybesea ~]$ sudo systemctl restart firewalld

Nginx の起動と自動起動の設定。

[takatoh@aybesea ~]$ sudo systemctl enable nginx
[takatoh@aybesea ~]$ sudo systemctl start nginx

これでとりあえずは OK。他のマシンからもアクセスできることを確認した。

WindowsからSambaの共有フォルダにコピーするときエラーが発生するようになってしまった

Samba で共有フォルダを作っている Ubuntu マシン(wplj)の外付け HDD を ext4 にフォーマットしたところ、Windows からファイルをコピーするときに、頻繁にエラーが発生するようになってしまった。
そもそも wplj の共有フォルダは Windows マシンのデータバックアップに使っていたもので、もとは NTFS のまま使っていた。そこに robocopy コマンドでバックアップをとっていた。例えば次のように。

robocopy /mir F:\softwares P:\

F: は Windows マシンの外付け HDD、P: は wplj の共有フォルダをネットワークドライブとして割り当てたものだ。wplj の外付け HDD が NTFS のときはこれで何の問題もなくバックアップできていたんだけど、ext4 にしたら「予期しないネットワークエラー」が頻繁に発生するようになってしまった、というわけ。robocopy コマンドだけでなく、エクスプローラーを使ってコピーしてみても状況は同じだった。まったくコピーができないわけじゃないので、ますますわからない。Web を見ながらいくつか解決方法を試してみたけれど、状況は変わらず。それで困っている。

ところで、よくわからないんだけど、CentOS マシン(aybesea)にたてた Samba の共有フォルダでは、上記のようなエラーは起こらない。なぜだろう?

新しいPC(Windows 10)のセットアップをした

昨日の話。Windowsマシン valarie の買い替えの新しい PC のセットアップをした。Windows の更新にすげー時間がかかったせいで1日仕事だった。
セットアップ自体は特に難しいところはないんだけど、途中で Windows の更新をするところで数時間もかかってしまった。特に、「完了の割合」が 99% になってからずっと2時間くらい進まず、結局お祈りしながら強制リブートした。無事リブートしたのでよしとする。更新がどうなったかは分からないけど、今日になってみたら新しい更新がインストールされていたので、結果としては大丈夫だったようだ。
以下、インストールしたアプリケーション。

  • Norton Internet Security
  • iTunes
  • Dropbox
  • Firefox
  • Adobe Reader DC
  • Sublime Text 3
  • 秀丸
  • Git
  • RLogin
  • FFFTP
  • VirtualBox
  • B’s Recoder GOLD
  • Microsoft Office 2013
  • Ruby
  • Python
  • Node.js

とりあえずこんなところ。
あ、ホスト名は montana にした。
あと古いマシンは廃棄する前に CentOS を入れていろいろ実験してみるつもり。