2021年12月11日
以前の記事でWindows10のミラーリング機能を使ってRAID1を組みましたが、
使っていくうちにリカバリー操作が必要な場面が出てきたので書き記しておきます。

パソコンがブルースクリーンやフリーズ等で正常にシャットダウンできなかった場合にミラーリングしていたディスクがエクスプローラーに表示されなくなり、中身が見えなくなります。
コントロールパネルから「コンピューターの管理」を開くと以下のようにエラー状態になっていることが確認できます。
RAID1の同期が完了している状態だと状態列が「失敗」となり、
RAID1の同期中だと状態列が「冗長の失敗」となるようです。


HDDが破損したという場合は物理的に交換しないといけませんが、
書いた人:木本
2021年11月30日
とあるライブラリーがPHP7.1~7.4でうまく動かない現象に出くわしたので調べてみました。
どういう状況かというと、SJIS-win(CP932)にエンコードした文字列をmb_split関数に渡して配列に変換する際に
PHP5.3 → うまく配列に変換できる。
PHP7.3 → falseが返ってきてうまく行かない。
PHP8.0 → うまく配列に変換できる。
という事が起こりました。

mb_split関数はマニュアルによると
https://www.php.net/manual/ja/function.mb-split.php
注意:
書いた人:木本
2021年11月05日
前回の記事でGoogleドライブアプリの個人的に不要な機能を無効化する方法を書きましたが、
新規作成コンテキストメニューを無効化する方法に副作用が出てしまっていました。

具体的には30秒~数分ごとに↓のようにアイコンがちらついてしまうというものです。


これを何とか打開すべく10月初旬から約1か月間、仕事とゲームの合間を縫っていろいろ調べて試行錯誤し、ついに打開策を見つけました!
挙動調査編
挙動を見た限りだとGoogleドライブアプリが
1. レジストリへ新規作成コンテキストメニュー用の設定値を書き込む。
書いた人:木本
2021年09月29日
Googleドライブに保存しているファイルをローカルに同期するために「バックアップと同期」というアプリを使っておりましたが、
先日「Google ドライブ」アプリなるものが勝手にインストールされておりました。
調べてみると「バックアップと同期」アプリのサポートが9月いっぱいで使えなくなり、今後は「Google ドライブ」アプリを使ってくれという事なようですね。

じゃあ移行しようかと思って「Google ドライブ」アプリに移行してみると
「使う人には便利なんだろうけど、個人的に要らないなぁ。しかも設定で無効にできないとは!」
という機能がいくつかあったので無効化・軽減する方法を考えてみました。

※この後レジストリを編集する手順が出てきます。
 レジストリの編集を間違えるとパソコンが起動しなくなるなど重大な問題が起こることがあるので、
書いた人:木本
2021年09月26日
前回の記事の方法でコイン稼ぎつつさしいれの「スキ/ビミョー」を埋めるためにガチャコロンを回す日々を送っておりましたが、
ノーマルガチャコロンでもレアど4 & 5が結構出てくるんですよね。
ノーマルとレアでどれくらいの違いがあるのか気になったので50万コインを使って調べてみました。

放置稼ぎで1日あたり15万コイン溜まりますが、ガチャコロンを回すたびに放置稼ぎをすると何日かかるかわからなかったので
Nintendo Switch Onlineのセーブデータお預かりサービスを利用してセーブデータをロールバックしつつ検証することにしました。

また、ガチャコロンを回すにはひたすらAボタンを連射する必要があるため、
放置稼ぎの時と同様に「GuliKit Kingkong Pro Controller NS09 Pro」に活躍してもらうことにしました。
このコントローラーには2種類の連射モードが搭載されており、ハグルマが書かれた設定ボタンと連射したいボタンを同時押しするとモード切替が行えます。
書いた人:木本
2021年09月22日
回はシステム開発絡みではなく趣味関連の話題です。

先日Nintendo Switchにて発売された「おすそわける メイド イン ワリオ」( https://www.nintendo.co.jp/switch/aw7na/index.html )ですが、
「さしいれ」というシステムが途方もないコイン稼ぎを要求するものだったのでなんとかならないか金策を考えてみました。

結論から書くと時給6,300コインほど、日給にして約15万コインほど完全放置で稼ぐことができるようになりました。

※エンディングまで進めた状態での稼ぎとなるので、ネタバレを含みます。

用意するものは「GuliKit Kingkong Pro Controller NS09 Pro」( https://www.gulikit.com/productinfo/500631.html )のみです。
書いた人:木本
2021年06月25日
Redmineのセキュリティ向上のためにログインした際に通知メールを飛ばすような機能が欲しいと思ってそういうプラグインが無いか調べてみましたが、
2段階認証をするようなプラグインくらいしか見つからなかったので作ってみました。

■Redmine Notify Login plugin
https://github.com/forest-soft/redmine_notify_login

■イメージ図


Redmineの公式にプラグイン作成のチュートリアルがあるのでこれを読めば簡単なものは作れるようになります。
書いた人:木本
2021年06月15日
Redmineのプラグインを開発するにあたってプレーンなRedmineを立ち上げる必要があったのでメモしておく。

今回の環境は
・Amazon Linux 2
・Redmine 4.2
・Apache 2.4
・MySQL 8(utf8mb4)
・Unicorn
・rbenv + ruby-build
・Ruby 2.7
書いた人:木本
2021年06月02日
PHPを動かしているサーバーから別にサーバーにSSHで接続してなんやかんやの操作を行いたいことがあったのでいろいろと調べた。
PHPには公式でSSH2というPECL拡張モジュール(https://www.php.net/manual/ja/book.ssh2.php)があるが、インストールが少々面倒。
なので他にいい方法が無いか探してみるとphpseclibというライブラリーが公開されていたので、これを使うことにした。

■phpseclib
https://github.com/phpseclib/phpseclib
■サンプルコード
http://phpseclib.sourceforge.net/new/ssh/examples.html
今回はお試しとして
・SSH2でログインする。
書いた人:木本
2021年05月10日
ファイルアップロード機能の容量制限を試すときに容量ギリギリのファイルを用意したいことがある。
そんな時にはコマンドプロンプトで

■コマンド
fsutil file createnew {ファイル名} {サイズ}

■例
fsutil file createnew 100M.txt 104857600

と打つとそのサイズのファイルが出来上がる。
書いた人:木本
2021年04月26日
今まではRAID機能付きのUSB接続HDDケースを使ってきたが、Windows側でRAIDが組めるんならそれでも良いかもと思い立って組んでみた。

HDDをパソコンにSATAで接続し、コントロールパネルから「管理ツール > コンピューターの管理」を開く。
「記憶域 > ディスクの管理」を開くと初期化云々のダイアログが表示されるので、GPTを選んで「OK」をクリックする。
 

RAIDを組みたいディスクを右クリックして「新たしいミラーボリューム」をクリックする。


「次へ」をクリックする。
書いた人:木本
2021年04月19日
先日開発に使っていたサーバーを引っ越ししたので、サーバーを破棄する前にバックアップを残しておきたいと思った。
AWSで立てたサーバーなのでEBSボリュームのスナップショットを取るのが楽ちんではあるが300GBほど必要なため、
1年置いておくと
300GB × $0.05/月 × 12ヵ月 = $180($1=108円で約2万円)
となる。

少々もったいないためローカルにあるバックアップ用HDDに退避することにした。
イメージ図

「★対象サーバー」がバックアップを取りたいサーバーで、
書いた人:木本
2020年09月01日
前回の続き

1番目の記事で書いたケース2(PHP7.3)のimagecreatefromjpeg関数で破損した画像を開いた際にfalseを返してくるはずが、
なぜかリソースIDを返してくる件を確認するためにテスト用のプログラムを用意した。

まずは壊れた画像ファイルの用意から。
今回はお手軽に画像ファイルの先頭30,000バイトを抜き出して壊れた画像ファイルを作成することにした。


PHPコード
書いた人:木本
2020年08月31日
前回の続き

残りは各OSの標準バージョン環境の作成。
それぞれOSが異なるのでOSごとにマシンを用意していく。
特に何の設定もなくyumで入れれるのでどんどん入れていく。
CentOS6標準環境の作成
PHP5.3
yum -y install php php-gd

php -v
書いた人:木本
2020年08月28日
前回の続き
CentOS8 AppStreamリポジトリ環境の作成
AppStreamリポジトリも場合は複数バージョンの共存ができないので、都度インストール&アンインストールを行う。
また、AppStreamリポジトリはCentOS8用のものなので、CentOS8を用意して確認した。

dnf module list php
Last metadata expiration check: 0:01:20 ago on Wed 26 Aug 2020 10:19:36 AM UTC.
CentOS-8 - AppStream
Name Stream Profiles Summary
php 7.2 [d][e] common [d], devel, minimal PHP scripting language
書いた人:木本
2020年08月27日
前回の続き
Amazon Linux 2 amazon-linux-extrasリポジトリ環境の作成
amazon-linux-extrasリポジトリも場合は複数バージョンの共存ができないので、都度インストール&アンインストールを行う。
PHP.7.2
amazon-linux-extras enable php7.2
yum clean metadata
yum -y install php php-gd

php -v
PHP 7.2.31 (cli) (built: Jul 2 2020 23:17:00) ( NTS )
書いた人:木本
2020年08月24日
前回の続き
iusリポジトリ環境の作成
iusリポジトリの場合は複数バージョンが共存できないので、都度インストール&アンインストールを行う。

公式( https://ius.io/setup )の手順に従う。

yum install \
  https://repo.ius.io/ius-release-el7.rpm \
  https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

書いた人:木本
2020年08月21日
前回の続き
remiリポジトリ環境の作成
remiリポジトリから入れる場合は複数バージョン共存可能なので、どんどん入れていく。

amazon-linux-extras enable epel
yum clean metadata
yum install -y epel-release
rpm -Uvh https://rpms.remirepo.net/enterprise/remi-release-7.rpm
PHP5.4
yum install --enablerepo remi -y php54 php54-gd
書いた人:木本
2020年08月20日
PHPをインストールする際に
・OS標準のリポジトリから入れる場合
・ソースをコンパイルして入れる場合
・remi等の外部リポジトリから入れる場合
という方法が考えられるが、入れ方によってPHP GDがbundled版になるかどうかが変わってしまう。
挙動に影響が無ければ別にいいのだが、どうもそうはいかないみたいなので確認した結果を記録しておく。

そもそもなぜこんなことを調べたのかというと、開発環境と本番環境でPHPのバージョンが同じなのに本番環境でだけ想定通りに動かないということが起こったから。
具体的に書くと
ケース1(PHP5.6)
書いた人:木本
2020年07月27日
前回の続き。
アドオンを作成した後はアドオン開発者センターにて署名してもらうことによってxpiファイルでの配布、アドオン配布サイトでの配布が行えるようになる。
どちらの方法でも同じ手順で配布できるが、今回はxpiファイルで配布するパターンで進める。
1. アドオンソースを固めたzipファイルを作成する。
前回作成したmain.jsとmanifest.jsonをzipファイルにする。

2. アドオン開発者センターにアカウント登録を行う。
アドオン開発者センター
https://addons.mozilla.org/ja/developers/

書いた人:木本
2020年07月06日
忘れないようにFirefoxのアドオン開発にしてメモしておく。
まずは最初の段階としてファイルの作成からFirefoxで動かすまでの工程について。

基本的にはFirefoxの公式が出しているマニュアルがあるので、それを参照すれば何とかなる。

■初めての拡張機能
https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Your_first_WebExtension
今回は最小限の構成で進めていくことにする。
1. アドオン用のディレクトリを作成する。
まずは適当な場所に任意のディレクトリを作る。
書いた人:木本
2020年01月29日
Firefoxのバージョン57(Quantum)になるまでは「Save Image in Folder」というアドオンを入れて
画像をダブルクリックするだけで素早く保存できるようにしていたのですが、このアドオンが使えなくなってしまいました。

代わりのアドオンを探してみると

■dblclick-image-download
https://addons.mozilla.org/ja/firefox/addon/dblclick-image-download/

■Double-click Image Downloader
https://addons.mozilla.org/ja/firefox/addon/double-click-image-download/
書いた人:木本
2020年01月14日
Firefoxのバージョン11から画像だけを表示した際に「中央配置・黒背景」で表示されるように変更されてしまいました。
Firefox10以前

Firefox11以降

これをバージョン10以前の「左上配置・白背景」表示に戻すために「Old Default Image Style」というアドオンを使っていましたが、
バージョン57(Quantum)にてアドオンの仕組みが変わってしまったため使えなくなってしまいました。
いつか誰かが移植してくれるのではないかと思っておりましたが移植される気配が無かったため作ってみました。
Old Image Style
ダウンロード
書いた人:木本
2019年08月29日
前回の記事の続きです。
どういう要素を寄せ集めて作ったのか個人的なメモがてら書き残していこうと思います。
デバッグについて
まずはHTAのデバッグ方法です。
単純にHTAファイルを起動してしまうとコンソールのログ等を確認することができません。
ファイル自体は単なるHTML + CSS + Javascriptのファイルなので、IEでデバッグが行えればひとまず何とかなりそうです。

単純にIEでHTAファイルを開こうとすると別ウインドウでHTAが起動してしまいうまく行きません。
そこで拡張子を「.html」にリネームするとIEで開いてデバッグすることができます。
しかしデバッグのたびに拡張子を「.html」に変更するのはなかなか面倒です。
書いた人:木本
2019年08月27日
ゲーム等のサントラCDを聴く際に

ループが短すぎる!しばらく聴いていたい!
さらに適度なタイミングで次の曲を聴きたい!

と思うことが多々あったのでネットでA-B間再生(A-Bリピート再生)できるプレイヤーを探してみたのですが、

そもそもA-B間再生できない。
A-B間再生できるが1曲だけ。
A-B間再生の設定を複数曲に設定してプレイリストを作れるが、1回A-B間を再生したら次の曲に行ってしまう。
書いた人:木本
2018年10月04日
開発環境などでhttps接続をしたい場合はオレオレ証明書(自己署名証明書)を使って構築することがあるが、
ちゃんとした証明書を使いたいことが度々出てくる。
そんな時に「Let's Encrypt」というサイトで無料のSSL証明書を取得することができたので、
このブログサーバー(AWS EC2、AmazonLinux)に導入しつつ記録を残しておく。
公式サイト:https://letsencrypt.org/
1. Certbotをインストールする。
証明書の取得 & 自動更新は「Certbot」というソフトを使って行うので、「Certbot」のインストールを行う。
1-1. Certbotの公式サイトへアクセスする。
公式サイト:https://certbot.eff.org/
1-2. インストール手順を確認する。
書いた人:木本
2018年09月19日
Part2からの続き。
Part1はコチラ。
最後の仕上げでFront Apacheから各PHPバージョン用のApacheへアクセスできるようにリバースプロキシの設定を行う。
以下のような割り当てを行う。



URL
PHPバージョン

書いた人:木本
2018年09月18日
だいぶ放置してしまったが、Part1からの続き。
今回はPHPのインストールを行う。
・PHP5.3
・PHP5.6
・PHP7.1
をソースからコンパイルし、それぞれ用のApacheに読み込ませていく。

1. 各バージョンのPHPのダウンロード先を調べる。
http://php.net/downloads.php
にアクセスし、バージョンごとのダウンロードURLを調べる。
書いた人:木本
2017年08月18日
1台のWEBサーバーで複数バージョンのPHPを使う方法を調べたのでメモする。

phpenv + php-build + PHP-FPM という構成でPHPをCGI版で動かすこともできるらしいが、
今回はApacheを複数台用意することにした。

■環境
・Amazon Linux
・Apache 2.2
・PHP5.3
・PHP5.6
書いた人:木本
2017年06月30日
インスタンスを作成したらもろもろの初期設定をする。
Apache、PHP、MySQLをセットアップする場合。
※随時改定する。
1. rootに成り上がる。
sudo打つのが面倒なので、rootに成り上がる。
2. アップデートを掛ける。
yum -y update
3. Apacheをインストールする。
yum -y install httpd
service httpd start
書いた人:木本
2017年06月30日
実験用のまっさらなサーバーが欲しい場合はAWSで作っちゃえということで、SSH接続するまでのメモ。
1. AWSコンソールのEC2インスタンスの画面を開き、「インスタンスの作成」をクリックする。

2. OSを選択する。
今回は適当にAmazonLinuxを選択する。

3. インスタンスタイプを選択する。

4. インスタンスの詳細設定をする。
そのままの内容で次の手順へ進む。
書いた人:木本
2017年06月30日
EC2インスタンスの利用料はインスタンスタイプに応じて変化するため、
あまり負荷の高くないインスタンスは下位のタイプに変更してしまえば利用料が抑えられる。

■EC2インスタンスの料金
https://aws.amazon.com/jp/ec2/pricing/on-demand/


1. サーバーをシャットダウンする。
sudo shutdown -h now
などでシャットダウンさせる。
書いた人:木本
2017年06月05日
事前に「Windows Driver Kit」をインストールする必要がある。
 →インストール方法はこちら(/blog/detail?id=4)

https://github.com/forest-soft/webmailwindow
をビルドして「webmailwindow.exe」を作成する手順を解説する。


1. ソースのZipファイルをダウンロード&解凍する。
https://github.com/forest-soft/webmailwindowにアクセスする。

書いた人:木本
2017年06月03日
https://github.com/forest-soft/webmailwindow

「WebMail Notifier」を制御するためのプログラムをコンパイルするためには「Windows Driver Kit」が必要になる。
新しいバージョンだとVisualStudioに付属しているらしいが、今回は「7.1.0」のインストールを行う。
1. 「Windows Driver Kit Version 7.1.0」をダウンロードする。
https://www.microsoft.com/en-us/download/details.aspx?id=11800
の「Download」をクリックし、「GRMWDK_EN_7600_1.ISO」をダウンロードする。

2. 「GRMWDK_EN_7600_1.ISO」を解凍する。
WinRAR(http://www.winrarjapan.com)などを使用し、ISOファイルを解凍する。
書いた人:木本
2017年06月02日
PHPに限らない話だが、デバッグ中やテスト中などにエラーメッセージが出た場合は漏らさずチェックしたいものである。

しかし、php.iniで「display_errors = On」と設定し、注意深く画面を見ていたとしても気づかないことは多々ある。

・ヘッダーの裏に文字が出ていたので見えなかった。
 エラーメッセージの分だけ全体的にコンテンツ部分が下にずれていたりするが、急いで操作していると気づかない。

・jQueryDialogなどのダイアログを閉じる瞬間に警告メッセージが表示され、見逃してしまう。
 submit結果のHTMLをdialog内に流し込んでいたりすると、ダイアログを閉じるJavascriptと共に警告メッセージがダイアログ内に流し込まれ、
 次の瞬間にはダイアログが閉じてしまう。
書いた人:木本
2017年05月26日
Tera TermでSSHへログインする際に、毎回接続情報を入力するのはなかなかめんどくさい。
そんな時にはTera Termのマクロ機能を使用すれば自動化することができる。

※マクロファイル内にサーバーへの接続情報が含まれるので、取り扱いに注意です!

1. マクロファイルを作成する。
以下の内容のファイルを作成する。
※拡張子は「ttl」で保存する。
SERVER = '接続先' ; 書き換えてください。
PORT = '22' ; SSHのポートが違う場合は書き換えてください。
書いた人:木本
2017年05月26日
このブログは「株式会社 森林ソフト」が運営しています。
日頃のお仕事の中で得た技術情報など、いろいろ発信してまいります。
よろしくお願いいたします。

書いた人:木本
Top