Macのコンピュータ名が勝手に変わる

Macのコンピュータ名が勝手に(1)等がついてしまう。何回戻しても変わってしまう。コンピュータ名、ホスト名、ローカルホスト名が設定されていない場合に勝手に設定しようとするらしい。調べてみたらホスト名が設定されていなかった。ホスト名を設定し直すと再発しなくなった。

 # 参照
 sudo scutil –-get ComputerName
 sudo scutil –-get HostName
 sudo scutil –-get LocalHostName
 # 設定
 sudo scutil –-set ComputerName MyMac
 sudo scutil –-set HostName MyMac
 sudo scutil –-set LocalHostName MyMac

以下を参考にした。

www.sirochro.com

Node.js + Expressでファイルサーバ上のファイルを介してチャットするツールを作った

サーバを立てることができないためrocketchat等のOSSを使うことはできないが、共有ファイルサーバは存在するという環境。この共有のファイルサーバを使ってなんとかリアルタイムなコミュニケーションができないかと思った。以下のブログを参考に実装した。

sandambara.com

実装

構成

ブラウザアプリにしたかった。手軽にWEBサーバを構築できるNode.js+Expressを採用。ブラウザから定期的にサーバに問い合わせを行いファイルの行数をカウントする。ブラウザ側で保持しているカウントより多い場合は更新がったとして画面に反映する。

画面デザイン

画面はbootstrapを使用。チャットアプリ用のテンプレートhtml/css/javascriptを以下のサイトから入手。

www.bootdey.com

更新通知

更新があった時通知をしたかったので、お手軽なpush.jsを採用した。

pushjs.org

使い方は簡単で、まず以下のようにライブラリを読み込む。

    <script src="https://cdnjs.cloudflare.com/ajax/libs/push.js/0.0.11/push.min.js"></script>

その後、javascript内で以下のように実行する。

Push.create([通知内容]);

できたもの

こんな感じでそれっぽいものができた。

チャットツールイメージ

リポジトリはこちら。 github.com

あとがき

実務で使ってみているが問題なく動作している。ただ、ポーリング間隔が短すぎるとエラーが起きてしまうので調整しながら使っている。

仕事用にトラックパッドを買ってみた(ミヨシ/TTP-US02)

自宅ではMacbook Airを使用。職場はWindows10が入ったデスクトップPC。職場でもMacの様にジェスチャーを使いたいと思って以下を購入してみた。

数日使ってみた感想。総評としてはこれは買って良かったと思う。

さらさら仕上げって

さらさら仕上げってなんだって思ってたけど、紙の感じに近い。 macではメタリックだけど、ミヨシのトラックパッドでも手触りは悪くない。

誤反応はないか

なくはないが特に支障はない。スクロール時にたまに右クリックイベントやズームイベントが誤爆する。 が、ちょっと意識してスクロールを強めにすれば起きない。自分は許容範囲。

ショートカットエリアについて

トラックパッド上部にショートカットボタン用のエリアがあるが、 例えば通常のエリアから指を離さずにショートカットエリアに入ってもそのままポインタが移動できる。 (ショートカットイベントは発火しない) ここは少し心配していたので良かった。

ちなみに、今のところこのショートカットエリアは使っていない。 理由はジェスチャーで代用できるから。

  • 戻る/進むボタン→三本指スワイプに後方ナビゲーション/前方ナビゲーションを設定
  • 右クリック/左クリック固定ボタン→ダブルタップすればドラッグできるので不要(ただし画面の端から端だと少し辛い)
  • ホイール→そもそも使わない

Amazonの評判を見ると物理ボタンではないので押しづらい様である。

Macと比べると

Macでは誤反応は起きたことがないので、Macと比べると質は落ちる。 ただ許容範囲だと思う。 気になるのは若干スクロール幅が狭いということ。 強めにスクロールするといいのだが、Macではそんなに強くやらなくても強弱を読み取ってくれるのでそこはちょっと微妙。

反応速度

感度は良い。タイムラグが発生することはない。

マウスと比べると?

ドラッグできるかが気になっていたが、ダブルタップで実現できるのでそこまで困っていない。 デュアルディスプレイだと画面の端から端にポインタをずらすのに若干苦労する。 ただし、今のところジェスチャーで直感的にアプリや仮想デスクトップを切り替えられるメリットの方が優っている。

Redmine上でチャットできるプラグイン、Chat2019(EasyInstantMessages)をインストールしてみる

EasyRedmineが提供するチャットツールChat2019をRedmineにインストールしてみる。

ちなみにこのプラグイン、ダウンロードするとEasyInstantMessagesという名前になっている。

www.easyredmine.jp

インストール手順

プラグイン本体の取得

「無料版をダウンロードする」リンクを押すとメールアドレスの登録を求められるので入力する。

しばらくするとダウンロードURLが貼られたメールが送られてくるのでそこから取得する。

3.X系用と4.X系用のzipが取得できるので、自分の環境にあったファイルを展開し、Redmineプラグイン置き場に格納する。

マイグレーション

以下のコマンドでマイグレーションを行う。

bundle exec rake redmine:plugins:migrate RAILS_ENV=production

 ただし自分の場合は以下のようなエラーが出た。

Could not find gem 'redmine_extensions' in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.

 指示通り以下のコマンドを実行する。

bundle install

その後、再度マイグレーションを実行すると正常に終了した。

apacheを再起動

service httpd restart

これによりredmineは起動しプラグインが使用できるようになったが、プラグインを有効にするとBasic認証が何回も出るようになる。

ブラウザのデバッグでみてみるとどうやら以下のファイルを取得する際に出ているようだ。

easy_instant_messages.json

Redminenの公開フォルダ直下にこの名前のファイルを置いてやるとBasic認証はでなくなった。

所感

プラグインを有効にすると画面右下にアイコンが表示され、クリックするとチャット相手の一覧が表示される。

さらに一覧をクリックするとチャット画面が表示される。スカイプと同じような操作感。

ただし、自分は以下のような課題があり導入は断念した。

とはいえ、もしかするとeasy_instant_messages.jsonを無理やり作っているあたりが悪さをしている可能性もある。

新着メッセージが来ても、画面右下のアイコンはかわらない

アイコンをクリックすると新着のメッセージ数がわかるが、アイコンをクリックしないと気づけない。

新着時に音がなるようだが、音が鳴らせない環境もあるので、そういう環境ではなかなか新着が気づけない。

チャット画面がリアルタイムで更新されない

チャット画面を開いた状態で、相手からメッセージが来ても画面が更新されない。

一度チャット画面を開きなおすと更新される。リアルタイムのメッセージのやりとりができない。

SoftEtherVPNが外出先から繋がらない

以下のページを参考にRaspberryPiにSoftEtherVPNをインストールして環境構築した。

nobuntu.jp

しかし、一番最後の外出先からVPN接続ができない。iPhoneから接続すると以下のようなメッセージが出てしまう。

VPN接続
L2TP-VPNサーバが応答しませんでした。もう一度接続してください。それでも問題が解決しない場合は、設定を確認し、管理者に問い合わせてください。 

f:id:fd_lover24sue:20190323151052p:plain

 /usr/local/vpnserver/server_log/にログがあるので確認できるが、port=4500からの通信が受信できていないようだった。

VPN構築関係の記事を漁っていると、macの「どこでもMy Mac」機能がport=4500を使うということを発見。ためしにicloudから「どこでもMy Mac」を無効にしてやると無事外出先からアクセスできるようになった。

Amazon LinuxのApacheサーバをLet's Encryptを使ってhttps化

AWSのEC2インスタンスにてhttps化するにはELBが必要となってしまう。なんとか無料でできないものかと探したところ、Let's Encryptなるものを見つけた。

letsencrypt.jp

Let's Encrypt は、認証局(CA)として「SSL/TLSサーバ証明書」を無料で発行するとともに、証明書の発行・インストール・更新のプロセスを自動化することにより、TLSHTTPSTLSプロトコルによって提供されるセキュアな接続の上でのHTTP通信)を普及させることを目的としているプロジェクトです。

早速インストール&設定する。Amazon Linuxでは使えない、や警告が出るなどの記事があったが結果的に問題なかった。

設定は以下のサイトを参考にした。備忘録として作業ログを残す。

qiita.com

ツールを使用したSSL設定

設定用のツールが用意されているので取得する。

curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto

権限変更。

chmod 700 /usr/bin/certbot-auto

証明書を作成する。

certbot-auto certonly --webroot -w [ドキュメントルート] -d [ドメイン名] --email [登録用メールアドレス] -n --agree-tos --debug

以下の様な通知が出る。2019-03-01に期限切れになるので証明書の再取得が必要。あとでcronで定期更新できる様にする。

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/[ドメイン名]/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/[ドメイン名]/privkey.pem
   Your cert will expire on 2019-03-01. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again. To non-interactively renew *all* of your certificates, run
   "certbot-auto renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

mod_sslをインストール。

yum install mod24_ssl

作成されたssl.confを編集する。

vim /etc/httpd/conf.d/ssl.conf

//cert.pemまでのパスを記載
SSLCertificateFile /etc/letsencrypt/live/[ドメイン名]/cert.pem
//privkey.pemまでのパスを記載
SSLCertificateKeyFile /etc/letsencrypt/live/[ドメイン名]/privkey.pem
//コメントアウトを削除し、chain.pemまでのパスを記載
SSLCertificateChainFile /etc/letsencrypt/live/[ドメイン名]/chain.pem

apacheを再起動。

service httpd restart

https://[ドメイン名]/でアクセスしてapacheのテスト画面が出たら成功 もし、httpsでアクセスできないときは、EC2のセキュリティグループに、port: 443を許可するインバウンドルールを追加する。

証明書を定期更新

このままだと一定期間後に期限切れになってしまうので、cronで定期的に更新する様にしてあげる。

00 01 * * * root /usr/bin/certbot-auto renew --post-hook "service httpd restart"

httpをhttpsへリダイレクトする

もともとhttpコンテンツがあった場合は、httpでアクセスされたらhttpsへ転送する様に設定する。 ssl.confにhttp接続された際の転送設定を追加する。

vim /etc/httpd/conf.d/ssl.conf

<VirtualHost *:443>
# 〜中略〜
</VirtualHost>
# 以下を追加する
# example.comを適宜変更
<VirtualHost *:80>
  ServerName example.com:80
  RewriteEngine on
  RewriteCond %{HTTP_HOST} ^example\.com
  RewriteRule ^/(.*)$ https://example.com/$1 [R=301,L]
</VirtualHost>

設定したらapacheを再起動して反映。

service httpd restart

httpでアクセスして、httpsに転送されれば成功。

sidebar-v2でサイドバーを直接操作する

google map apiを使ってwebサービスを作る上で、以下のコードを使うことでサイドバー機能を追加することができます。

github.com

f:id:fd_lover24sue:20181125162144p:plain

sidebar追加例


このgitコードを使う際に、サイドバーを直接操作する使い方メモ。

<!--中略-->
<!-- Tab panes -->
<div class="sidebar-content">
  <div class="sidebar-pane" id="home">
    <h1 class="sidebar-header">sidebar-v2</h1>
    <span id="home-contents">home</span>  
  </div>
</div>
<!--中略-->
<script>
function initialize() {
  var map = new google.maps.Map(document.getElementById("map"), {
    center: new google.maps.LatLng(51.2, 7),
    zoom: 5,
    mapTypeId: google.maps.MapTypeId.TERRAIN,
  });
}
//sidebarオブジェクトの生成
var sidebar = $('#sidebar').sidebar();

//sidebarをタブ指定で開く
//div class="sidebar-pane"で指定したタブのid
sidebar.open("home");

//sidebarを閉じる
sidebar.close();

//sidebarの内容を変更する
var home_contents = document.getElementById('home-contents');
home_contents.innerHTML = '<span id="home-contents">home</span>';

</script>