著者アーカイブ takahashi

takahashi 著者:takahashi

Windows NT 互換OSを目指すフリーなOS「React OS」

今まで、LinspireやZorin OSのような”Windowsライク”を謳うフリーOSというのが幾つか出ていたのですが、どのOSも見た目や操作性をのみWindowsに似せている物が多く、実際にWindowsの機能やアプリケーションについては”Wine”を使う以外で動作できるOSはありませんでした。
また、Wineを用いても、現状互換性が高いとはあまり言えない印象で、”Wineで動いたらラッキー”という状況でした。

そんな中、先日初めて、完全なWindows互換を目指すフリーOS の存在を初めて知りました。

その名も、ReactOS。

カーネルもプロジェクト内で設計されているようで、今までのLinuxカーネルをベースとした”Windows風OS”とは一線を画しており、UIもデフォルトではWindowsの”クラシックスタイル”とほぼ同様になっています。

見た目だけでなく、Win32アプリケーションやドライバももLinux上でWine経由で起動したときよりも多くのアプリが動作できるようです。

今までで試した中では、Windows用のVirtualBox Guest Additionsバイナリや、VirtioドライバのWindows版も問題なく動作しています。
ただし、あくまでWindowsNT 5または6をクローンしようとしているため、比較的新しいWindows向けアプリは動かないものも多いかもしれません。

一方で、NTFSのサポートと並行して、Linux系ファイルシステムのサポートも行っていたりと、オープンソースOSだからこそともいえるメリットもあり、今後も目が離せないプロジェクトです。

まだ動かないアプリやドライバも多いですが、現在ベータ版であるため実用的ではないものの現時点でも完成度はそこそこ高く、触っていると面白いです。

無料の仮想環境で簡単に動作しますので、興味のある方は是非触ってみてはいかがでしょうか。

ReactOS
ReactOS日本語版 – OSDN

takahashi 著者:takahashi

ついにTimeLine機能が実装!Redstone 4 ことWindows10 April 2018 Update 配信開始!

以前から”Redstone 4″という名前で予告されていたWindows10のメジャーアップデート “Windows10 April 2018 Update”がついにが配信開始になりました。

「Windows 10」の「April 2018 Update」、提供開始 - CNET Japan

今回のアップデートでは、前回正式版への実装が見送られたTimeLine機能がついに実装されたようです!

動画を見ていただければどんな機能か大体わかるかと思いますが、WindowsPCやスマートフォンなどで前に行っていた操作履歴を、時間を遡って確認し、任意の操作を復元してそのまま継続できるという機能です。

他にも、UIの改良や、コントロールパネルの一部項目の”設定アプリ”への統合など、一部改良されている部分もあるということなので、メジャーアップデートを適用可能な環境を使用している方はぜひ適用してみてはいかがでしょうか。

なお、適用方法は下記サイトで解説されています。

「Windows 10 更新アシスタント」を使用して「Windows 10 April 2018 Update」にアップグレードする方法 - ネットセキュリティブログ

takahashi 著者:takahashi

UWP版iTunes配信開始

4/27からMicrosoft Storeで”iTunes”が入手可能になったようです。

Appleの「iTunes」アプリ、ついにMicrosoft Storeに降臨 – ITMedia News

最近になってWindowsに Windows10 S というエディションが追加されましたがこのエディションでは従来のWindowsアプリが動作せず、UWP、いわゆるストアアプリしか動作しないため、iTunesなども、従来のようにインストーラーからインストールすることができません。

今回、ストア版のiTUnesが出たことで、Windows10 S でもiTunesが利用できるようになったようです。

Win10 S以外だと恩恵が薄そうな気もしそうですが、個人的は、今までAppleのサイトにダウンロードしに行っていたのがストアから一発でダウンロードできるようになり、さらに自動アップデートもストアがしてくれるので、運用面でかなり楽になるのではないかなと感じました。

iTunes – Microsoft Store

takahashi 著者:takahashi

ソースからビルドしたApacheで、service statusが確認できないときの対処法

セットアップ中のサーバーで稼働状況を確認するために

sudo service httpd status

をした際、下記のようなエラーが発生しました。

<html>
                                   Not Found

   The requested URL /server-status was not found on this server.
     __________________________________________________________________


    Apache/2.2.34 (Unix) Server at localhost Port 80

殆どパッケージ版のApacheしか触ったことないので、見慣れない表示に、一瞬びっくりしてしまいましたが、なんとか心を落ち着けて解決方法を検索。
こちらのサイトで、解決策を見つけました。

VirtualHost設定 apache2サーバでのserver-status参照設定 – Check!Site

どうやら、/server-status というディレクトリの表示結果を見て稼働状況を判断しているということで、
http(s)://ドメイン名/server-status
にアクセスされたときに、ページを返すように設定すればエラーも解消するとのこと。

自分の場合、httpd.confに次の設定を追記

<VirtualHost *:80>
  ServerName localhost
  DocumentRoot "/usr/local/apache2/localhost"
 
  <Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from localhost
  </Location>
</VirtualHost>

あとは適当な内容のhtmlファイルを作成し、

/usr/local/apache2/localhost

へ配置しました。

この状態で、再度statusコマンドを打ってみます。

                       Apache Server Status for localhost

   Server Version: Apache/2.2.34 (Unix) DAV/2 PHP/5.3.3
   Server Built: Jul 27 2017 11:48:48
     __________________________________________________________________

   Current Time: Thursday, 26-Apr-2018 13:39:55 JST
   Restart Time: Thursday, 26-Apr-2018 13:39:14 JST
   Parent Server Generation: 12
   Server uptime: 41 seconds
   1 requests currently being processed, 7 idle workers

_W______........................................................
................................................................
................................................................
................................................................

   Scoreboard Key:
   "_" Waiting for Connection, "S" Starting up, "R" Reading Request,
   "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
   "C" Closing connection, "L" Logging, "G" Gracefully finishing,
   "I" Idle cleanup of worker, "." Open slot with no current process

ばっちり、チェック結果が出るようになりました。

お困りの方の参考になりましたら幸いです。

takahashi 著者:takahashi

MySQLで日本語が文字化けしてしまうときの対処方法

MySQLを使って良くやらかすミスの一つとして、文字コードの設定ミスがあります。
MySQLの場合、デフォルトのまま利用すると、テーブルやdbが意図していない文字コード(例えばlatin1)になってしまうことがあります。

この状態でselectなどで日本語を取り出そうとすると文字化けしてしまい、”??????”のような文字列に置き換わってしまいます。

使っているMySQLのデフォルトの文字コードを確認するには、SQL文を

show variables like 'character%';

とします。すると

mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

のような形で確認することができます。
上の表示を見ていただくとわかるように、”character_set_connection”がlatin1になっていると日本語部分が文字化けしてしまい、where構文で日本語をフィルタしてもヒットしなくなってしまいます。

mysqlをパッケージからインストールした際、大抵/etc/my.cnfという名前でmysqlの設定ファイルが作成されているかと思います。
この設定ファイルに対して、次の4行を追加します。

[mysqld]
character-set-server=utf8

[client]
default-character-set=utf8

この設定を追加後、再度mysqlの文字コード設定を確認してみます。

mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

すべてutf8に変更されていることが確認できるかと思います。
この状態でselectすれば、日本語が文字化けせずに表示され、またwhere構文で日本語を検索しても、ちゃんとヒットするようになります。

サーバー側の設定を変更できなかったり、変更しても文字化けが治らない場合も、様々な方法があるようですので、お困りの方は確認してみてください。
MySQL のテーブルの文字コードを utf8 に変更する – UCWD-Studio – @matsuoka_UCWDjp ‘s Private Projects.

takahashi 著者:takahashi

[不具合]Android版Google Chrome 66で画像選択しようとするとクラッシュするバグが発生

本日、弊社サービスを利用しているお客様から、Android版Google Chromeを使って画像をアップロードしようとした際にエラーが発生するという問い合わせが入りました。
自分たちの環境でも試したところ、Android 6.0の端末で下記のようなエラーが出ることを確認しました。

Chromeの検証ツールではconsoleに特にエラー出力が出力されていなかったため、adb logcat コマンドでOSのログを取得。

04-26 18:58:29.812  1726  2925 I ActivityManager: Start proc 26320:com.android.chrome:decoder_service/u0i881 for service com.android.chrome/org.chromium.chrome.browser.photo_picker.DecoderService
04-26 18:58:29.885 18544 18544 W cr_Autocomplete: stopping autocomplete.
04-26 18:58:29.867 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215608): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.867 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215609): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.867 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215610): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.887 26320 26332 W FileUtils: Failed to chmod(/data/user/0/com.android.chrome/app_chrome): android.system.ErrnoException: chmod failed: EACCES (Permission denied)
04-26 18:58:29.887 26320 26320 I cr_LibraryLoader: Using linker: LegacyLinker
04-26 18:58:29.888 26320 26332 W FileUtils: Failed to chmod(/data/user/0/com.android.chrome/app_textures): android.system.ErrnoException: chmod failed: EACCES (Permission denied)
04-26 18:58:29.888 26320 26332 W ContextImpl: Unable to create files subdir /data/user/0/com.android.chrome/cache
04-26 18:58:29.877 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215611): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.877 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215612): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.877 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215613): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.877 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215614): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.877 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215615): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.877 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215616): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service"
04-26 18:58:29.912 26320 26320 D AndroidRuntime: Shutting down VM
04-26 18:58:29.912 26320 26320 E AndroidRuntime: FATAL EXCEPTION: main
04-26 18:58:29.912 26320 26320 E AndroidRuntime: Process: com.android.chrome:decoder_service, PID: 26320
04-26 18:58:29.912 26320 26320 E AndroidRuntime: java.lang.RuntimeException: Unable to create service org.chromium.chrome.browser.photo_picker.DecoderService: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean org.chromium.base.CommandLine.hasSwitch(java.lang.String)' on a null object reference
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at android.app.ActivityThread.handleCreateService(ActivityThread.java:2944)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at android.app.ActivityThread.access$1900(ActivityThread.java:154)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1474)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:102)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:224)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:5526)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
04-26 18:58:29.912 26320 26320 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean org.chromium.base.CommandLine.hasSwitch(java.lang.String)' on a null object reference
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at org.chromium.base.SysUtils.isLowEndDevice(SysUtils.java:35)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at org.chromium.base.library_loader.LegacyLinker.ensureInitializedLocked(LegacyLinker.java:11)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at org.chromium.base.library_loader.LegacyLinker.prepareLibraryLoad(LegacyLinker.java:25)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at org.chromium.base.library_loader.LibraryLoader.loadAlreadyLocked(LibraryLoader.java:62)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at org.chromium.base.library_loader.LibraryLoader.ensureInitialized(LibraryLoader.java:17)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at org.chromium.chrome.browser.photo_picker.DecoderService.onCreate(DecoderService.java:4)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        at android.app.ActivityThread.handleCreateService(ActivityThread.java:2934)
04-26 18:58:29.912 26320 26320 E AndroidRuntime:        ... 8 more
04-26 18:58:29.914  1726  2547 D ActivityManager: New dropbox entry: com.android.chrome:decoder_service, system_app_crash, XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

詳しいことはわかりませんが、どうやら/data/user/0/com.android.chrome/app_texturesに対してchmod(読み書き権限の変更)をしようとして権限不足によりシステムから拒否されてchrome本体が落ちているようです。

問題が発生しているAndroid版Chromeのバージョンは 66.0.3359.126 で、この記事を書いた時点での最新版となっています。


なお、Android 7.0 で同じバージョンのChromeで画像アップロードした際は、問題なく画像選択可能でした。

Chromeアプリ本体の不具合ということであれば、自分以外にも不具合の報告が上がっているはず…ということで調べてみたところ、すでに数件の報告がネット上に上がっていました。

今回の場合、ほぼ間違いなくChromeアプリ本体の不具合のため、Googleがアップデートで不具合修正をするまで待つしかありません。
それまでの間、Android向けの別のブラウザアプリを利用することで、不具合を回避することができます。

自分たちの環境で確認した限りでは、Firefoxを用いると問題なくアップロード可能でした。

また、報告では、Chromeを端末出荷時にインストールされていたバージョンに戻すことで、再度画像アップロードが可能となる報告もありました。

自分の環境でも試したところ、確かに画像アップロードが可能となっていることを確認。
自分の環境の場合、バージョンダウン後のChromeのバージョンは 56.0.2924.87 となっていました。

Chromeのバージョンダウンは、アプリを一度無効化し、再度有効化することで可能です。

Androidアプリを削除(アンインストール)/無効化/非表示にする方法 – モバレコ

takahashi 著者:takahashi

VMWareでファイルをロックできませんでした エラーが出た時の解決策

最近、VMWareを使用して仮想の開発環境を使って動作テストをしているのですが、先日下のようなエラーがでて突如起動しなくなってしまいました…


by 宇宙仮面の研究室

もしかして、仮想ディスクか壊れた!?!?とかなり焦りました。

とりあえず原因を調べていたところ、下記のサイトを発見

vmware の Virtual Machine がファイルをロックできずに起動できない場合の対処方法 – 宇宙仮面の研究室

どうやら、何らかの原因でロックファイルが不正な状態で残ってしまうと、起動ができなくなってしまうようです。
自分の環境も確認知ってみると、

バッチリ残ってしまっていました。
こちらの2つのファイルを消したところ、再度起動できるようになりました。

仮想ディスクの破損じゃなくてよかった…(;´∀`)

同じ症状でお困りの方は、是非一度確認してみで下さい。

takahashi 著者:takahashi

撮影したときにどの場所にピントが合っていたのかが分かるLightroomプラグイン

自分は趣味でよく写真撮影をしています。
愛用しているカメラは一眼レフで、かなり細かい調整も可能な機種ではあるのですが、最近どうもうまくピントが合わない症状に悩んでいます。

ピントのずれはPCの画面のような大きな画面を見たときにはじめてわかるので、その場でピントのずれを確認できない場合があります。今回、カメラ側の故障なのか、それとも単に自分が下手なだけなのかを判別するために、何が原因でピントがずれてしまったのかを後から調べられる方法を探していました。

運よく、Adobe Lightroom向けのプラグインで後からピント調節の情報を確認できるプラグインを見つけたので紹介したいと思います。

Show Focus Popints Plugin というプラグインです。

例えば、こちらの写真

一見するとバッチリピントが合っているように見えますが、よく見ると…

結構ボケてしまっていました。
一体どこにピントがおうとんねん!!!ということで調べて見ます。

ライブラリを表示した状態で、プルダウンメニューから プラグインエクストラ->Show Focus Points
で確認してみます。

んんんんんんんん???
なにやら全体にピントがあっているという謎判定。

こういう時は右側にあるFocus informationを見てみます。

Focus modeのところにバッチリ”Manual Focus”と書かれています。
ハイ、これは完全に自分の調節ミスでした…

ということで、おかしいのはカメラ側なのか、自分の操作ミスなのかも後でもわかりますし、ここはオートフォーカスの方がよかったなーとか、もっとピント確認するように癖をつけようとか、反省会をすることもできるので非常に便利です。

ちなみに、万が一カメラ側の問題が疑われた場合も、オートフォーカスの際のピントの微調整ができる機能や機器があるようですので、修理に出さなくても、これらのものを活用すれば自分で修正も可能なようです。

自分で出来る!カメラのピントを微調整する方法。[AFマイクロアジャストメント] – studio9

USB DOCKで18-35mm F1.8 DC HSMのピント調整をやってみる – 酔人日月抄

ここ最近の写真を調べたところ、カメラではなくて、どうも自分の調整が甘かった写真が多かったことがわかってきました。
…もっと上手に撮れるように練習したいと思います。

takahashi 著者:takahashi

自宅サーバーを始めるときに最低限気を付けたい3つのこと

最近、自分の周りで、自宅サーバーを始める方が増えてきました。

自分も自宅サーバーを稼働させているのですが、今回はサーバーについて今まで勉強してきた中で、始めるにあたって最低限気を付けたいことをまとめてみました。

  • OSやファームウェアのアップデートは可能な限りこまめに行う

LinuxやWindows、サーバーを構築するにあたって、必ず何かしらのOSをセットアップするかと思います。
このOS、人間が作っているためどうしても何かしらのバグが出てくる可能性があります。

このバグですが、場合によっては権限のない利用者に対して管理者の許可なくサーバーを操作する手段を与えてしまう”脆弱性”になる可能性があります。

大抵の場合、これらの脆弱性は、開発元が定期的に修正したものを配信しており、それを受信・適用する”アップデート”機能が必ず備わっていると思います。

普段使っている、使うときにしか電源を入れない”クライアントPC”は通常直接インターネット上に公開されていない上に、ネットワーク上にその存在があるかどうかも調べなければ外部からは分からないので、アップデートをさぼっていてもすぐにやられる可能性はまだ低いですが、サーバーの場合はインターネットからいつでもアクセスできる状態である上、その存在もネット上に一般公開されているため、だれでも簡単に接続できます。したがって、脆弱性が見つかったら直ちにパッチをあてないと侵入されてしまう危険性が出てくるのです。

ただ、実際のところ、パッチを適用する際にOSの再起動が必要になることも少なくありません。
実際に運用する際は、アップデートの有無を定期的に確認するようにし、もし再起動の必要のない更新がある場合はすぐに適用、もし再起動が必要なものについてはあらかじめメンテナンス日時を決めておき、利用者に通知したうえで適用するようにするといいと思います。

OS以外にも、使用しているネットワーク機器(ルーターなど)や、仮想環境で使っている場合はホストマシンのOSやハイパーバイザーのアップデートなども併せて確認しておきましょう。

  • メールの不正中継対策を行う

自宅のサーバーでメールサーバー(SMTP)を建てる場合、特に注意しないといけないのはメールの不正中継対策です。
例えば、自分のサーバーでSMTPサービス(postfixやsendmailなど)を立ち上げ、外部からアクセスできるような状態にしている場合、SMTPサーバーから認証なしにメールを送信できるようにしていると非常に危険です。

スパムメール業者などは、使用しているメールサーバーから大量に迷惑メールを送信している関係上、各メールサービスプロバイダからブロックされやすい為、常にブロックされていない新たなメールサーバーを探している可能性があります。

もし不正中継対策をしていないSMTPサーバーを公開してしまうと、こういった業者に、迷惑メールやウイルスメールなどの送信に使われてしまう可能性があります。

もし上記のようになってしまった場合、たとえ自分が送ったわけではないことが証明できたとしても、社会的信用を失ったり、場合によってはその責任を求められる可能性が出てきます。

パソコンが「踏み台にされる」という表現を目にすることがあります。踏み台にされると何が起きるのか、またどんな対策をすればいいのか教えてください。 – マルウェア情報局

対策として、自分のSMTPサーバーを認証なく利用できないように設定しておくと、不正中継を防ぐことができます。

【図解】初心者にも分かるメールの仕組み(SMTP、POP、IMAPの違い) – SEの道標

また、自分のサーバーが不正中継されない設定になっているかテストができるサイトがあります。

第三者不正中継チェックサイトメモ 2017 – 優技録

  • 火事に注意

こちらは技術的な話からは離れるのですが、自宅で24時間PCを動かしていると、サーバーマシンが壊れた際に火事になるリスクがあるようです。

ノートPCをサーバーにして大惨事になった話 – VPS比較メモ

危険なのはノートPC、UPSなどのバッテリーを積んだ機器を使って稼働させている場合。

特にノートPCは持ち運びできるようにするために筐体を小さくすることに重点を置いて設計されており、長時間動作させることはあまり想定されていないようです。
そのため、サーバーのような24時間稼働させるような使い方をすると熱がこもり、バッテリーの爆発や中にたまったほこりなどに引火して火事になってしまうことがあるようです。

一方、デスクトップPCの方も火事になることはあまりないようですが、電源周りがショートして中で火花が飛ぶ、といったことが起こる可能性はあるようです。

自作PCからの出火が原因で火事になる確立はどのくらいでしょうか?- Yahoo!知恵袋

こちらもやはり、定期的なメンテナンスを設けて、ほこりの除去などの定期的な手入れをした方がよさそうです。
また、監視ツールなどを使ってハードウェアの状態を常に監視しておくことも有効かもしれません。

  • 最後に

自宅サーバーの稼働には確かにリスクがあります。
それ故に「VPSなどを使えば事足りるし、安くて安全だし、自宅にサーバーを置くべきではない」という論調も目立ちます。

しかし、実際のところは、ガッツリサーバーを利用したい場合はVPSはかなり高くつきます(例えば、1TBのストレージを使おうと思ったら、自鯖ならHDDを追加すれば済みますが、VPSやクラウドの場合は月額でだいたい1万弱かかります)し、ハード構成やネットワークも含めて、一から自分で設計・構築ができるのはかなり魅力だと思います。

また、データはすべて自分が管理しているマシンの中に納まっているので、業者の不手際による情報流出や情報の不正利用のリスクを防ぐことができます。

ちなみに、有名なITニュースサイト Gigazine は、自分たちの発信する情報に対して圧力がかかっても公開が停止させられることがないように、という理由で、敢えてオンプレミスで運用している、という例もあります。

海外にディザスタリカバリを複数箇所設置 – Gigazine

自宅サーバーとクラウド(VPS)、どちらが優れているのかはそのままオンプレミスかクラウドか、の議論に発展していくわけですが、個人的にはこの議論はナンセンスだと思っています。

クラウドもオンプレミスも一長一短があり、どの形態が適しているのかは自分がどういったサービスを建てたいのかで決まってくるからです。そしてその選択肢として、クラウド(VPS)も自宅サーバー(オンプレミス)いずれもなり得えるということです。

また、どちらを選んだとしても、ネット上に自分の環境を公開することはリスクを伴います。そのリスクに対してどう対応していくか、考えていくのも勉強の一つだと思います。

普段何気なく利用しているWebサイトやWebサービスですが、その裏側がどうなっているのかを知ることはとても面白いです。

自分が構築したインフラやコンテンツが、インターネットを通じて全世界の人に見てもらえることの楽しさを、ぜひ多くの方が体験出来たら素敵だな、と思っています。

takahashi 著者:takahashi

XperiaのBluetoothで音が途切れる・聞こえなくなる不具合を治す方法

自分はメインのスマートフォンとしてXperia Z5 を使用しています。
SONYが製造・販売するスマートフォン、Xperiaシリーズは当初からかなり人気があり、一時期自分の周りのほとんどの人が、iPhoneかXperiaのどちらかを持っている状態になりました。

そんなXperiaですが、使っていて気づいたのがBluetooth周りの不具合。
自分の使っているZ5では、Bluetoothで音楽を聴いていると頻繁に音途切れが発生する問題が起きていました。
見ている限り端末の高負荷時に起きているような印象だったので、きっとそれが原因だと考えていたのですが、Z5より前に使っていたAQUOS PHONE 303SHでは負荷がかかってもBluetoothが途切れることはかなりまれだったので、変だな、とは思っていました。

最近かなり途切れ具合が酷くなっていたので、ネットで対策方法を調べていたらこんな記事が。

Xperia Z5でBluetoothイヤフォンが音飛び、途切れる、音が出ない場合などの改善・対処方法 – スマホ評価・不具合ニュース

どうやらこれ、どうもバグだったようで…
Androidの標準機能からペアリングすると不具合が発生するので、SONY独自のファームウェアに含まれる”Throw”からペアリングすることで安定するようになるとのこと。

まず、ホーム画面内のドロワーから、”設定”を開きます。

中から”機器接続”を選択

“Throw” をタップします。

Throwについて をタップ

はじめにをタップします。

今セットアップをしようとしている機器の種類を選択

Bluetoothを選択します。

機器を追加 をタップ

この状態になったら、Bluetooth機器の方をペアリングモードにすると、Xperia側に機器が表示されるので、そこをタップすると設定完了です。

この方法でペアリングしなおしてから、音飛びや音が再生されない不具合は今のところ解消しています。
Xperiaは他のAndroid端末と比較して、かなり幅広い機器と接続できるのがとてもいいのですが、その反面Bluetooth周りに弱点が出てしまったような形です。

今後改善されることを願います。