2020年4月21日

TIPS:VSCodeで日本語化がうまくいかないとき

前置き


Visual Studio Codeで拡張機能「Japanese Language Pack for Visual Studio Code」を入れたら日本語になりますよね。
でも、「Remote Development」で色々な環境を日本語化してると、偶に英語のままになってしまうことがあります。この稀によくある現象は日本人の私にはとても困ります。

観測範囲に於いては、拡張機能が入っている場合には表示言語の切り替えに失敗しただけなので、言語切り替えでうまくいきました。
ということで、手順のご紹介です。

表示言語構成


まず、パレットを開きます([Ctrl]+[Shift]+[P])
次に「conf lang」と入力し、「Configure Display Language」を選択します。
その後は「ja」を選んで、表示されるVSCode再起動メッセージで再起動ボタンを押せば日本語モードで起動しなおしてくれます。



2020年4月3日

小ネタ:CentOS7に指定バージョンのPythonを入れる

表題の通り、Pythonの入れ方です。 これは他のサイト情報をまとめた自分用メモに近いです。指定Versionを定期的に変更したかったので。
# 通常install後に、導入が必要なもの。他にもあるかも。
yum -y install gcc libffi-devel zlib-devel openssl-devel

# バージョン指定
pyVersion=3.7.7

# Install
curl -O https://www.python.org/ftp/python/${pyVersion}/Python-${pyVersion}.tgz
tar xf Python-${pyVersion}.tgz
cd Python-${pyVersion}
./configure
make
make altinstall

# link生成
pyMinor=`echo $pyVersion | awk -F . '{ print $1 "." $2}'`
echo $pyMinor

ln -s /usr/local/bin/python${pyMinor} /usr/bin/python3
ln -s /usr/local/bin/pip${pyMinor} /usr/bin/pip3

# バージョン確認とpip Upgrade
python3 -V
pip3 -V

pip3 install --upgrade pip
pip3 -V
参考:

https://www.unknownengineer.net/entry/2018/06/20/191011
https://www.atmarkit.co.jp/ait/articles/1805/25/news035.html

2020年3月20日

SSHのPort Forwardingについて

前置き

VSCodeのRemote DevelopなどでSSH接続の利便性が上がり、開発環境をLinux上に構築することが増えてきた昨今、SSHのPort Forwardingは開発する上でも便利に利用できる大変シャレオツな機能です。つーか普通にデバッグする時にVSCodeでもマッピングしてくれるしね。

ただ、その概念を覚えるためにググってみた時に、Webを結構探してみたのだけどもスッと入ってくる図が見つからなかったので、だったら自分で描いてしまおうということで、久しぶりの投稿と相成った。

SSH Config

SSH のPort Forwardingについては、単発であればコマンドラインでもできるけども、開発環境として長期的な利用も視野に入れてSSH Configを書くところから入りたい。

環境は以下のような構成だとします。



  • SSHクライアント
    • ホスト名:ssh-cl1
    • IPアドレス:192.168.1.101
  • SSHサーバー
    • ホスト名:ssh-sv1
    • IPアドレス:192.168.1.123

クライアントの ~/.ssh/config に以下のようなconfigを登録したとします。
Host ssh-sv1
    HostName 192.168.1.123
    User root
    IdentityFile ~/.ssh/id_rsa
    LocalForward 18080 127.0.0.1:8080
    RemoteForward 15000 127.0.0.1:5000

なお、同じポート番号でバインドさせることが一般的かと思いますが、値が異なるほうが説明時にわかりやすいので敢えて変えてます。
よって、利用時には真似してローカルとリモートでポート番号を変える必要はありません。もちろん、ポート重複や複数台で登録したいからと、ポート番号を意図的に変えたい場合には参考にしていただければ幸いです。
あと、前方の「127.0.0.1:」は省きポート番号だけ記載しております。そのほうがわかりやすいと思うので。

Port Forwarding

順に見ていきましょう。
まず、LocalForwardの定義です。

これはSSH サーバーのポートをクライアント側(Local)に転送する機能です。
先に挙げたconfigの例では、サーバー側で起動している8080ポートをクライアントに18080ポートとしてバインドします。


次に、RemoteForwardの定義です。

これはSSH クライアントのポートをサーバー側(Remote)に転送する機能です。
先に挙げたconfigの例では、クライアント側で起動している5000ポートをサーバーに15000ポートとしてバインドします。


これでconfigとの対比もわかりますね。先に書かれたポート情報が転送先でのポート番号になり、あとに書かれている定義が転送元のどのポート番号かの定義になります。

動作確認

では、実際に挙動を確認してみましょう。
特定のポートでWebを簡単に起動させて確認できるように、どこのご家庭にでもあるPython環境で試します。え?無い??無料だからInstallすれば解決だよ。


まずはLocalForwarding。
サーバー側の準備はこれだけですね。SSH接続したらHTTPサーバーを8080で立てるだけ。
ssh ssh-sv1
python3 -m http.server 8080

今回のSSHクライアントはWindows10です。他の環境の方は適宜環境ごとの試験をしてください。
netstat -ano | Select-String ":18080"
Invoke-WebRequest http://localhost:18080
SSHサーバー上で立てたHTTPサーバーへのリクエストを、ローカルポートにバインドした18080宛に投げて、結果を受け取ることができました。

続いてRemoteForwarding。
クライアント側の準備はこれだけですね。HTTPサーバーを5000で立てるだけ。
python -m http.server 5000

今回のSSHサーバーはCentOS7ですので、netstatの代わりにssを使ってます。他の環境の方は適宜環境ごとの試験をしてください。
ssh ssh-sv1
ss -antu | grep "15000"
curl http://localhost:15000 | tail
SSHクライアント上で立てたHTTPサーバーへのリクエストを、リモートポートにバインドした15000宛に投げて、結果を受け取ることができました。

2019年10月27日

VSCode のRemote DevelopmentでInstallできなかった話

前置き


VSCodeのRemote DevelopmentでWindows 10からLinuxへ接続できるようになり、開発が捗るので、とても便利です。
便利なのですが、リモートサーバーに接続する段階で、うまくつながらなかった場合のトラブルシューティングがとても大変なので、引っかかったトラップを紹介します。

SSHが起動するか

Install(接続中)のままつながらなかった場合、そもそもSSHが起動するかをまず確認してみましょう。ターミナルの中で以下のコマンドを実行しましょう。
ssh -V
この時に、コマンドが見つからないとなったら、SSHが正常に機能していません。

まずはOpenSSHクライアントが導入されていることを確認します。
https://www.onebizlife.com/windows10-ssh-client-1980

コマンドプロンプトからはSSHのパスが通っているが、VSCodeからは動かないという場合、launch.json のenvでPATHの環境変数を上書きしている可能性があるでしょう。
https://garafu.blogspot.com/2017/05/vscode-environment-variables.html

SSHのバージョンが正しいか

これは中々わからなくてしんどかったです。
以下のようなエラーが出た場合、利用しているSSHクライアントが正しいものかを確認します。
プロセスが、存在しないパイプに書き込もうとしました。
TELEMETRY: {"eventName":"resolver","properties":{"outcome":"failure","reason":"UnparsableOutput","askedPw":"0","askedPassphrase":"0","asked2fa":"0","askedHostKey":"0","gotUnrecognizedPrompt":"0","remoteInConfigFile":"1"},"measures":{"resolveAttempts":1,"retries":1}}
以下の記事で、なんとなくSSHクライアントの問題ぽいなと当たりはつけたのですが、環境や現象は異なっております。
https://qiita.com/CoffeeJunJun/items/29dda4b60a60bde3b771
https://github.com/microsoft/vscode-remote-release/issues/1678

この場合、ssh -V の結果を確認してみてください。私の環境では以下のようになりました。
OpenSSH_7.5p1, OpenSSL 1.0.2d 9 Jul 2015

これは、Windows10に正式リリースされたSSHクライアントではなく、前段としてPowershellチームが移植してくれたWindows向けOpenSSHを利用していたのでこのバージョンになりました。
https://github.com/PowerShell/Win32-OpenSSH/releases

Windows10の標準クライアントであれば、以下のような出力になります。
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5

おそらく、SSHクライアントのバージョンに依存するのだと思われます。
公式見ても要求仕様はよくわからないけど、たぶんSSL libがVer.2系ならいけるのでしょう。

他にも、git for windowsなどのSSHが同梱されているアプリにパスを通していて、OS標準のSSHが使われていないなどであれば、バージョン表示が異なることでしょう。
どのSSHが利用されているか確認し、OS標準のものではなかった場合には切り替えましょう。

Windowsでは、whereコマンドというLinuxにおけるwhichのようにパスを確認するコマンドがあります。

where ssh.exe

OSのパスは以下です。これ以外のSSHクライアントを利用していたら、パスを変えるなり、該当パスのssh.exeをリネームするなりして、OS標準のSSHクライアントが利用できるようにしましょう。
C:\Windows\System32\OpenSSH\ssh.exe


2019年6月2日

Windowsでもhttp_proxyとhttps_proxyを設定したほうが捗る

最近はPowershellよりPythonを使うことが多くなりました。
Linux発のマルチプラットフォームソフトウェアは、環境変数http_proxy、https_proxyを使用する(使用可能な)ことが多いです。
なので、Windows環境であっても、Proxyを使用している社内環境では環境変数を設定しておくことをおすすめします。

流石に環境変数の設定手順はMSに転がっているだろうと探したけど、XPしか見つからなかった件。日本市場は見捨てられて幾星霜という話だし、やる気ないね。
https://support.microsoft.com/ja-jp/help/310519/how-to-manage-environment-variables-in-windows-xp

Windows10だとスタートメニューから「設定」を起動し、「設定」の検索窓で「環境」と入れると「環境変数を編集」という項目が表示されるので、そこから先はXPと同様の手順で環境変数を入れましょう。


2019年3月14日

AzureでPythonを動かす時のハマりポイント:Linuxのリージョン制限

前置き


Azure においてLinuxサービスはプレビュー段階であり、特定のリージョンでのみ動作します。
https://github.com/Azure/Azure-Functions/wiki/Azure-Functions-on-Linux-Preview
※本件は2019年3月現在の話であり、今後変更となる可能性もあります。

内容


以下の試験コードを実行したところ、デプロイに失敗しました。
https://docs.microsoft.com/ja-jp/azure/app-service/containers/quickstart-python?toc=%2Fpython%2Fazure%2FTOC.json

その際のエラーメッセージはこちらです。
Requested features are not supported in region.

以下に対処方法が書かれていました。
https://github.com/Microsoft/vscode-azurefunctions/issues/702

つまり、以下のように変えればいいということになります。

az webapp up -n <app_name>



az webapp up --location "East Asia" -n <app_name>

2019年3月12日

Azure のストレージへファイルをまとめて転送するにはSMB共有でドライブをマウントするのが早かった件

前置き


タイトルがすべて。

最初は「az storage file upload」でファイルを1個ずつUploadしようかと思ったのだけれど、圧倒的に面倒で重いことが判明したので別の方法を探した次第。
そうしたらファイル共有する方法を見つけた次第。

内容


Azure PowerShell moduleを入れていない場合、以下の手順にて入れます。
https://docs.microsoft.com/ja-jp/powershell/azure/install-az-ps?view=azps-1.4.0

以下の手順にてファイル共有へマウントします。
https://docs.microsoft.com/ja-jp/azure/storage/files/storage-how-to-use-files-windows

注意事項はConnect-AzAccountしてから実施することと、<desired-drive-letter>はHなどでいい(NET USEのようにコロンはいらない)の2点です。

TIPS:VSCodeで日本語化がうまくいかないとき

前置き Visual Studio Codeで拡張機能「 Japanese Language Pack for Visual Studio Code 」を入れたら日本語になりますよね。 でも、「 Remote Development 」で色々な環境を日本語化してると、偶に...