月別アーカイブ 6月 2018

takahashi 著者:takahashi

[Windows]コマンド上でサービスを操作する方法

LinuxなどのUnixライクなOSには”デーモン”と呼ばれる概念があります。
ユーザーが起動しなくてもOSの裏側で常に動作し、いろいろなことをしてくれる所謂”常駐アプリ”です。

一方、Windowsにも同様の仕組みがありますが、こちらは”サービス”と呼ばれます。
基本的に、内容はデーモンとさほど変わりません。

デーモンを操作する場合、例えばLinux系では

#サービスの停止(Systemd)
systemctl stop サービス名

#サービスの開始(Systemd)
systemctl start サービス名

#サービスの停止(sysvinit)
service サービス名 stop

#サービスの開始(sysvinit)
service サービス名 start

etc...

というように、コマンドで操作します。
また、サービスを自動開始させるかどうかは

#サービスの自動開始有効化/無効化(Systemd)
systemctl enable サービス名
systemctl disable サービス名

#サービスの自動開始有効化/無効化(sysvinit)
chkconfig サービス名 on
chkconfig サービス名 off

のようにします。

一方Windowsのサービスの場合は、Windows自体がGUIありきのOSなので、サービスの操作も、標準でGUIから行うことができます。


“サービス”アプリの画面

サービスの自動起動の有効/無効もGUI上から指定できます。

しかし、Windowsでも、処理のバッチ化などをするためにコマンドライン上から操作をしたい場面があります。
GUIの自動操作はなかなかやりづらいので、CUI上で操作できる方法を探したところ、見つけることができました。

バッチ で Windowsサービス を 起動、終了 する 方法 – galife

Windows上のコマンドラインででサービスを操作する場合は、

#サービスの停止
net stop サービス名

#サービスの開始
net start サービス名

これだけでいけます。
操作感はUnixライクなOSに結構似ていますね。

ちなみに、ちょっとわかりづらいですが、サービスの自動機能のon offは”sc”コマンドを使うことで操作できるようです。

sc.exe でサービスのスタートアップの種類を変更するAdd Star – 日々是笑心

WindowsのCUI環境はちょっと特殊で、難解感も感じることがありそうですが、覚えておくと非常に楽になるかもしれませんね。

  • この記事いいね! (0)
村上 著者:村上

【MySQL】指定したカラムにリストと一致する値があるかを調べるIN演算子

そこまで使用頻度が高いわけではないのですが、知っていると便利なのが、今回取り上げる IN演算子。
MySQLのWHEREでデータを抽出する際に、カラムのデータがリストの値のどれかと一致するかを調べられます。
便利なのにたまにしか使わず、そのため毎回構文を忘れて調べているのでまとめ。

 

サンプルコードはこちら。

SELECT * FROM [テーブル名] WHERE [カラム名] IN ([値1],[値2],[値3],…);

通常だと、WHERE [カラム名] = [値1] OR [カラム名] = [値2] … と書きますが、IN演算子を使うと、比較したい値をリストにまとめることができます。
で、このリストの値のどれかと一致したカラムを抽出してくれます。

また、NOT IN と書くこともでき、その場合はリストの中の値のどれとも一致していないデータを抽出してくれます。

 

ということで、MySQLのIN演算子でした。
抽出条件を AND でつなげて書くのって結構面倒だったりするので、同じカラムだったらまとめられていいですね。
また、この書き方なら条件の指定もれも減りそうです。
SQL文は、初心者は苦手意識を持たれる方も多そうですが、是非こういったものを便利に使ってください。

  • この記事いいね! (0)
takahashi 著者:takahashi

Windows 10に標準で付属しているMRツール “Mixed Reality ビューアー”がさらにパワーアップ。なんとアニメーションもとれるように。

知らないなんて勿体ない!!! 手軽にリアルなARを楽しめる Windows標準搭載のARアプリが面白い!

以前こちらの記事でご紹介したWindows標準ツール”Mixed Reality 3D”ですが、久々に開いてみたらさらにパワーアップしていました!!!

なんと3Dキャラクタにアニメーションがついて、さらにカメラで撮影した景色の中を自由に動かせるようになっていました!!!

また、左下にはアニメーション切り替えボタンがあり、オブジェクトによってアニメーションの種類の数は異なりますが、いろいろなモーションをキャラクターにさせることができます。

Mixed Realityモードでは、PCにカメラが備わっていれば実際に現実世界の映像と合成することができます。

これらのモーションをうまく使って、迫力のある映像を作ることが可能です。
ちなみに解像度もちゃんとカメラと同じ粗さに合わせてくれるので、違和感のない映像を撮影することができます。

折角OSに標準搭載されていますし、手軽にMRに触れることができる素敵な機能なので、是非遊んでみてはいかがでしょうか?

  • この記事いいね! (0)
著者:杉浦

導入の簡単なwebページテストツール、Selenium IDEの紹介

 Selenium IDEは使うまでの導入が非常に楽なwebページテストツールです。多量のテストコードを書くのは手間ですし、Chrome、Firefox限定ですが、アドオンを入れるだけ、自分の操作を記録してコードに起こしてくれると扱いが簡単です。この記事はfirefox版でのインストールと操作の記録、再生の操作説明になります。
 アドオンというだけでインストールはSelenium IDE – Firefox 向けアドオンのページに飛んで”firefoxへ追加”からアドオン追加をするだけです。追加が完了した場合、右上のアイコンが現れます。

 アイコンを押したら下図の画面が出ます。赤丸ボタンで操作を記録開始します。

 記録停止は同じ場所に現れる赤い四角ボタンです。下図は、シーポイントラボのホームページを開いて、chrome開発者ツ…という記事を開いて、画面下へスクロールして、本文をクリックした、という操作を記録した場合になります。記録の保存、読込もできます。

 操作はGUI上から記録抜きに記述できます。操作コードには任意のjavascriptコードを実行というものもあり、ブックマークレットの応用でそれなりに拡張できます。困ったことにSeleniumIDEはfirefoxがfirefox quantumになったあたりで一度サポートが途切れて生まれ変わってます。検索して出てくる情報が古いとあてにならないことが多々あります。

  • この記事いいね! (0)
村上 著者:村上

【JavaScript】日付オブジェクト.getMonth()を扱う時の注意点

知らないととことんハマりそうなので、備忘録としてまとめ。
日付オブジェクトから月を取り出すときの注意点についてです。

サンプルコードはこちら。

var today = new Date();
var month = today.getMonth() + 1;

現在の月を取得するならこれだけなのですが、getMonth()メソッドを使ったときの返り値は 0~11 となります。
つまり、「0 = 1月」、「11 = 12月」なんです。
なので、コードにあるように、getMonth()返ってきた値に +1 をする必要があります。
…知らないとここでかなりハマりそうです。

なお、例によって後輩がこの状況に陥り、「今6月なのに、先月の日付が返ってくる!」と悩んでいました。
日付を console.log で出力すると正常で、でも月を取得すると5月だったということだったので、この現象を思い出せました。

 

以上、getMonth()メソッドを使うときの注意点でした。
…正直、「getMonth()」という名前なので、きっちり 1~12の間で値が返ってきてほしいですね。
もしJavaScriptで日付を扱う時に、値がおかしい場合は、まずこのあたりを疑ってみてください。
誰かの参考になれば幸いです。

  • この記事いいね! (0)
takahashi 著者:takahashi

[間もなくGoogle ChromeでSSL必須化。確認しておくべきこと。] WebサイトSSL化の際に潜む罠

前回の記事では、WebサイトのSSL化に必要な証明書について説明をしました。今回は証明書に加えてサイトのSSL化に必要なこと説明します。

実は、サイトのSSL化を行うためには、単にSSL証明書をインストールして”https://”でアクセスする…だけではダメな場合があります。

例えば、httpsのサイトにアクセスした際に画像の赤枠のような盾のアイコンが出てくることがあります。

実はこれ、Chromeによって、セキュリティ上の問題でサイトの一部のコンテンツをブロックした際に表示されます。

なぜブロックされたのかは”開発者ツール”を開いてみるとわかります。
F12を押してみてください。

画面の端に、赤枠のような部分が出てきます。
これが開発者ツールです。

たとえば、このページの1行目のエラー。
内容を簡単にいうと”このサイトはhttpsでアクセスしているのに、同サイト内にhttpでアクセスしているリンクが混ざっている。”

といった感じになります。
実は、サイト自体へのアクセスはhttpsになっていても、サイト内に含まれている画像、css、javascriptなどへのリンクがhttpになっていると、基本的にブロックされてしまいます。

これは、リンクされているコンテンツが不正に乗っ取られた場合、アクセス先のサイトがたとえhttpsであったとしても表示を改変されたり、入力した情報が盗まれてしまう場合があるためです。

こういったセキュリティ上の問題も確実に防止するために、Chromeをはじめとする最近のブラウザでは、httpsサイト内にあるhttpリンクをブロックする様になってきています。

ではどのように対策すればいいのか、というところですが、先ほど書いたようにjavascript、css、画像などへのリンクがhttp://で書かれてしまっていることが原因なので、それらをすべてhttps://で始まるように書き換えてしまえばOKです。

ただし、リンク先がSSLに対応していないと、httpsに書き換えただけでは利用できません。その場合はまずリンク先のサイトをSSLに対応させる必要があります。
また、もし自分で触ることのできないリンク先がSSLに未対応の場合、残念ながらSSL対応させたサイトでは利用できません。

代替えの方法を用意する必要があります。

少しでも参考になりましたら幸いです。

  • この記事いいね! (0)
著者:杉浦

chrome開発者ツールによる要素に付与されたイベントの調査

 開発者ツールを開いて(F12キーによるショートカットかオプション→その他のツール)、下図の赤丸部、ElementsEventListenersと開けば対象の要素を参照した時に、その要素に付与されているイベントを特定して見ることが出来ます。

 またAncestors Allにチェックを入れると下図の様に今そのページに存在するイベント全てを見ることが出来ます。

 余談ですがfirefoxでは下図の様に要素にイベントがついている場合、要素の横にEVとマークがつき、そこから参照することになります。display:flexのような大本が知りたい対象も表記されます。ただchromeの様にタブを開くような画面にたどり着けませんでした。いいところどりのツールを得るにはいささか手間なようです。

  • この記事いいね! (0)
takahashi 著者:takahashi

MBaaSのFirebase、脆弱性により情報流出が発覚

Googleが提供しているサービスであるFirebaseから、なんと合計1億件以上の情報流出(Gigazine)が確認されたようです。

合計1億件以上の個人情報がFirebaseの脆弱性によって公開状態に – Gigazine

Firebaseはモバイルアプリのバックエンドに必要な機能(ログイン管理やプッシュ通知など)を一括して提供してくれるmBaaS(mobile Backend as a Service)です。

Firebaseの始め方 – Qiita

Firebaseを使うことで、本来自前でサーバーを用意してアプリのバックエンドを構築しなければいけないところを、Firebaseで対応している機能であればすべてこのサービス上で賄える、というサービスのようです。(恥ずかしながら知りませんでした。)

Gigazineの記事によると、Firebaseとの連携処理がちゃんと行われていないアプリが原因だったとのことです。

この脆弱性はFirebaseデータベースの認証が適切に行われていないときに顕在化するもの。2017年第2四半期に見つかった、アプリ開発者によるデータ格納の保護が不完全なときに情報が露出してしまう「HospitalGown」と呼ばれる脆弱性の変種であると考えられています。

Appthorityのディレクターであるセス・ハーディ氏は「このFirebaseの脆弱性は膨大な量の機密情報を公開してしまうような重大かつ危機的なものです。多くの『脆弱なアプリ』があり、多種多様なデータが公開されてしまっているという事実は、企業がアプリの開発者に頼れず、アプリストアによるチェックや単純な『マルウェアスキャン』でも対策できないということを示します。GDPRやHIPAA、PCIといったデータ保護の規則を守るために、今後はこの種の脆弱性を見つけられるよう、深いアプリ分析に投資する必要があるでしょう」と述べています。

Firebaseのサービスを利用していなければ影響を受けなかったインシデントなので、個人的には”パブリッククラウドの危ない面”が露呈してしまったのかな、という印象です。

対策がされているとはいえ、複数のユーザーで共有している環境である以上、使用する際はこういった危険性も考えて置く必要がありそうですね。

  • この記事いいね! (0)
takahashi 著者:takahashi

[間もなくGoogle ChromeでSSL必須化。確認しておくべきこと。] SSLって何?

いよいよ、前から予告されていたSSL必須化(HTTP(非暗号化)接続というだけで警告を表示するようになる仕様変更)がChrome 68から適用されます。

いよいよGoogleが本気。Chrome 68から全HTTPサイトに警告! – 常時SSL Lab.

もしあなたがサイトを運営していて、SSLを利用可能にしていない場合、画像の下のな表示がアドレスバーに常に表示されるようになります。
回避するためには、サイトをSSLに対応させないといけません。

そもそも、SSLとはなんぞや…という方のために、簡単に説明します。
SSLを理解する前に、インターネットの仕組みを簡単に簡単に理解しておく必要があります。

今は家にPCやスマホ・タブレットが複数台ある、という方は多いと思います。
複数台のPCやタブレットなどを同時にインターネットへ接続するために、ルーターを設置している方が多いと思います。

細かい説明は割愛しますが、ルーターを設置すると、大抵の場合はそこにLANと呼ばれるネットワークが構築され、そのLAN全体をルーターを介してインターネットに接続することで、ルーターに接続されている複数台の端末が、同時にインターネットへ接続できるようになります。

簡単に言ってしまえば、インターネットというのは、ルーターやLANを相互に接続してできた巨大なネットワークなんです。
つまり、インターネット上には、自宅に設置したルーターのように、あなたの通信を中継する機器をいくつも経由して、目的のサイトへたどり着けるようになっています。


引用元:JPRS

そしてこの”通信を中継する機器”は、仕組み上誰でも設置が可能です。

また、インターネットのベースとなった仕組みでは、”一部の経路が切断されても、他に通信経路があれば通信を継続できるようにする”仕組みになっています。
先程書いたように、インターネットはネットワークを相互につないでいる構造になっているので、目的のサイトにたどり着くまでの経路は何通りもあります。

そのうちのどの経路が選ばれるかは一定ではなく、状況に合わせて、最も最適なルートが選択されます。

つまり、自分がインタ―ネットへ送信した情報がどの経路を通過するのかはわからない(決まっていない)のです。

通信経路は固定ではなく、かつ経由する機器もだれのものかわからない…そんな仕組みなので、例えばもし経由する経路上にサイバー犯罪を企てる人が設置した機器を経由してしまった場合、自分が送信した解読された場合はその内容が盗まれてしまったり、改変されたりしてしまう可能性が出てきます。

もしその時に自分が送っていた情報がパスワードやクレジットカード情報だったら…最悪ですよね。

そうならないために、自分が送付する情報を”暗号”にして、自分と通信相手にしか解読することができないようにする仕組みがあります。

これが、SSL(TLS)と呼ばれるものです。

SSLを利用するためには自分のサイトが動いているサーバーに、SSL証明書をインストールする必要があります。
SSL証明書は発行を行っている”認証局”と呼ばれる業者から取得する必要があります。

通常は有料で、有効期限があるので、有効期限が近づくたびに購入しなおす必要があります。

ただし、最近はLet’s Encryptという、更新するまでの期間が短い代わりに無料で利用できるSSLもあります。

これでSSLをサイトに導入して対応完了…!と行きたいところですが、まだ他にも気を付けないといけない点があります。

また次回説明します。

  • この記事いいね! (0)