20200315のMacに関する記事は6件です。

code-insidersコマンドをCUIから設定する方法

code-insidersコマンドをCUIから設定する方法

Macの環境移行をスクリプトで行いたかったのでcode-insidersコマンドを使えるようにターミナルから設定したかったが、ドキュメントの方法ではうまくいかなかったのでメモ

結果的に、パスに新たに追記することなくコマンドを有効にできたので、副次的な利点も得られる。
codeコマンドに応用することも可能

結論

解決方法

vscodeとvscode insidersのコマンド

VisualStudio CodeVisualStudio Code Insidersはシェルから操作することができる。コマンドはそれぞれcodecode-insidersである。

GUIから設定する方法

codeコマンドもcode-insidersコマンドもGUIのコマンドパレットからは正常に設定できる。
方法は公式ドキュメント1参照

CUIから設定する方法

普通のvscodeの場合 (公式)

CUIから設定するには、ドキュメント1の通り以下のコマンドを実行する。

echo 'export PATH="$PATH:/Applications/Visual Studio Code.app/Contents/Resources/app/bin"' >> ~/.bash_profile
source ~/.bash_profile

vscode insidersの場合 (失敗)

vscode insidersのcode-insidersコマンドをCUIから使えるようにする方法はドキュメントに載っていない(たぶん)。
codeコマンドと同じ方法でやってみる。

echo 'export PATH="$PATH:/Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/bin"' >> ~/.bash_profile
source ~/.bash_profile

しかし、以下のように確認してみると使えないことがわかる。

code-insiders --version

bash: code-insiders: Command not found

shellを再読み込みしても変わらず...

考察

どうやら、GUIで設定した場合の内部的な処理はCUIと異なる。
CUIで設定した場合、コマンドの実行ファイルが存在しているディレクトリを直接PATHに追加している。
一方、GUIで設定した場合は/usr/local/binに実行ファイルへのシンボリックリンクを貼っている。/usr/local/binはデフォルトで$PATHに記述されているので、パスの追加を行う必要はない。

code-insidersコマンドをCUIから設定できないときの解決方法

以下のコマンドで設定できる。

ln -s "/Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/bin/code" "/usr/local/bin/code-insiders"

普通のvscodeの場合

ちなみにcodeコマンドも同じ方法で設定することができる。

ln -s "/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code" "/usr/local/bin/code"

メリット

PATHに追加せず設定できるため、ドキュメントに載っている方法と比較してこちらのほうはシェルを再読み込みする必要がないというメリットがある。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Macで.bash_profile永遠に読み込めない話

前提として今回やろうとしたことは、
「Macでpython3をデフォルトで使用したい」
ということ。
しかし途中で躓いた本件について共有していきたい。

「Macでpython3をデフォルトで使用したい」
が為に、シェルにログインする度に読み込むファイルに以下の内容を書き込んだ。
「俺がpythonって言ったらpython3だと思ってね?」

過去にもその対象ファイルとして.bash_profileに設定を追加してうまくいった経験が多々あった。
しかし今回はここで相当つまづいた。
正直わかんなくて3ヶ月放置した。笑

結論として分かったことは、
「そもそも俺のMacさんのシェルbash使ってない。。。」って話。
じゃあ何使ってたの?っていうとzshっていうシェルだった。
要は使ってるシェルがbashだと思って.bash_profileに色々書き込んでたけど、
使ってんのzshだから意味ねーよと。

zshの場合代わりにzprofileってのがあって、
そこに同じようなこと書き込んだら無事成功。

もしMacで(もちろんMacじゃなくてもbashで)こんなことで困ってたら参考にしてください。
それ本当にbashですか?って。
以下に自分がシェルを理解せず使ってたかわかりました。
勉強します。以上。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Python]LineBotを作成する

はじめに

HerokuとPythonを使った、おうむ返しするLINE BOTの作成方法についてまとめました。

環境

macOS Mojava

事前準備

Line Developerアカウント登録
Herokuアカウント登録
Homebrewインストール

Line Developer側の設定

チャンネルの作成
・チャンネルの種類は「Messaging API」を選択。
・チャンネル名、チャネル説明等を入力し作成します。

チャネルシークレット、チャネルアクセストークンを確認します。
・lineBot作成にあたり必要になります。
・[チャンネル基本設定]-[チャネルシークレット]
・[Message API設定]-[チャネルアクセストークン]

LINEBOT作成

以下のファイルを作成します。
[フォルダ]
├ main.py     (実行するプログラム)
├ Procfile     (プログラムの実行方法)
├ requirements.txt  (インストールするライブラリ)
├ runtime.txt    (Pythonのバージョン)

main.pyはline-bot-sdk-pythonを元に作成します。

main.py
from flask import Flask, request, abort
import os

from linebot import (
    LineBotApi, WebhookHandler
)
from linebot.exceptions import (
    InvalidSignatureError
)
from linebot.models import (
    MessageEvent, TextMessage, TextSendMessage,
)

app = Flask(__name__)

#環境変数取得
LINE_CHANNEL_ACCESS_TOKEN = os.environ["LINE_CHANNEL_ACCESS_TOKEN"]
LINE_CHANNEL_SECRET = os.environ["LINE_CHANNEL_SECRET"]

line_bot_api = LineBotApi(LINE_CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(LINE_CHANNEL_SECRET)


@app.route("/callback", methods=['POST'])
def callback():
    # get X-Line-Signature header value
    signature = request.headers['X-Line-Signature']

    # get request body as text
    body = request.get_data(as_text=True)
    app.logger.info("Request body: " + body)

    # handle webhook body
    try:
        handler.handle(body, signature)
    except InvalidSignatureError:
        abort(400)

    return 'OK'

@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
    line_bot_api.reply_message(
        event.reply_token, 
        TextSendMessage(text=event.message.text))

if __name__ == "__main__":
    # app.run()
    port = int(os.getenv("PORT"))
    app.run(host="0.0.0.0", port=port)
Procfile
# Procfile
web: python main.py
requirements.txt
Flask==0.12.2
line-bot-sdk==1.5.0
runtime.txt
python-3.6.6

Herokuにデプロイする

Herokuにアプリを作成し、作成したファイルをデプロイします。
また、LINEのチャネルシークレット、チャネルアクセストークンを環境変数として設定します。

Herokuのインストールします。

brew tap heroku/brew && brew install heroku

Herokuにログインします。

heroku login

作成したファイルがあるフォルダに移動し、アプリを新規作成します。

heroku create アプリ名

作成したファイルをHerokuにデプロイします。

git add .
git commit -m 'First commit'
git push heroku master

Line Developerで作成したチャンネルのチャネルシークレット、チャネルアクセストークンをHerokuの環境変数として設定します。

heroku config:add LINE_CHANNEL_ACCESS_TOKEN=チャネルアクセストークン --app googlecalendar-webhook
heroku config:add LINE_CHANNEL_SECRET=チャネルシークレット --app googlecalendar-webhook

WebHouckを設定する

LineからのメッセージをHerokuで受信できるようにWebHockを設定します。
Line DeveloperのチャンネルでWebHockと応答メッセージの設定を行います。

スクリーンショット 2020-03-11 22.28.23.png

メッセージを受け取った時に、WebHockを使用するように
[LINE公式アカウント機能]-[応答メッセージ]-[編集]から応答設定を変更します。
スクリーンショット 2020-03-11 22.45.25.png

実行

メッセージを送信して同じメッセージが返されたら成功です。
メッセージが返ってこない場合

heroku logs --tail

で、Herokuのログでエラー等が出ているか確認すればいいです。

PUSHメッセージ送信

Herokuから直接Lineにメッセージを送ることができます。
PUSHメッセージはユーザIDを指定することで送信できます。

line_bot_api.push_message(
    ユーザID,
    TextSendMessage(text=メッセージ))

参考

Herokuでサンプルボットを作成する

line-bot-sdk-python

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

MacにVirtualBoxとvagrantを入れてubuntuを新規インストールする

仮想環境の構築を何度も確認するのが面倒なので、最速で環境構築できるように要点だけを絞って書いていく。

VirtualBox のインストール

Mac版のVirtualBox を VirtualBox 公式ページからダウンロードしてくる。
選ぶのが面倒ならここから直接インストールイメージをダウンロード。
イメージをマウントしてインストーラーからインストール。

Vagrant のインストール

Vagrantの安定版をここからインストールイメージをダウンロード。
イメージをマウントしてインストーラーからインストール。

ubuntuのインストール

コンソールを立ち上げて以下を順番に打ち込んでいく。

qiita.rb
$ mkdir -p ~/vagrant/ubuntu64_18 //インストール用のフォルダを作成する
$ cd ~/vagrant/ubuntu64_18 //作成したフォルダに移動する
$ vagrant box add ubuntu/bionic64 --box-version 20181129.0.0 //vagrantをインストールする
$ vagrant init ubuntu/bionic64 //仮想マシンの設定ファイルを作成する
$ vagrant up //起動できるか確認及びvagrant仮想環境を起動

最終的に「Machine booted and ready!」が表示されていれば、vagrantの仮想環境の起動確認完了です。

ubuntuの日本語化

Vagrant仮想環境が起動した状態から以下を入力していきます。

qiita.rb
$ vagrant ssh //ubuntussh接続する
$ sudo locale-gen ja_JP.UTF-8 //日本語環境を作成する
$ echo export LANG=ja_JP.UTF-8 >> ~/.profile //起動時に日本語環境で起動する
$ source ~/.profile //設定内容を適用する
$ sudo timedatectl set-timezone Asia/Tokyo //日本標準時に設定する
$ exit //ubuntuを終了する
$ vagrant halt //vagrant、仮想環境を終了する

終わりに

開始方法と終了方法を忘れてはいけない。
vagrantを立ち上げてubuntuにssh接続する。

qiita.rb
$ vagrant up
$ vagrant ssh

ubuntuのssh接続を切って、vagrantを終了する。

qiita.rb
$ exit
$ vagrant halt

これがわかればなんとかなる。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Mac 特定のウインドウのキャプチャを撮影する方法

目的

  • 特定のウインドウのみのキャプチャの作成方法をまとめる

実施方法

  1. キャプチャを撮影したいウインドウを表示する。
  2. 「command」 + 「shift」 + 「4」を同時に押下する。
  3. 「スペースキー」を押下する。
  4. キャプチャを撮影したいウインドウをクリックする。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Unity2019 + mac + VisualStudioCodeで、補完が効かなくなった時の対処メモ

環境

  • mac OS 10.15.1
  • Unity2019 2.12f1 (.Net4)
  • Visual Studio Code 1.43.0

Visual Studio Codeを使っていて、補完が効かなくなり、
下記エラーに遭遇、以前に設定した解決したけど、忘れてしまったので自分用に再度メモ。

OmniSharp.MSBuild.ProjectLoader
        The reference assemblies for .NETFramework,Version=v4.7.1 were not found. To resolve this, install the Developer Pack (SDK/Targeting Pack) for this framework version or retarget your application. You can download .NET Framework Developer Packs at https://aka.ms/msbuild/developerpacks

https://aka.ms/msbuild/developerpacks
エラーを参考にこのリンクをたどっていってもmac用のそれらしいファイルが見当たらず、
windows用はあった、またVisualStudioならできるような情報もあったが、VSCodeのみで
完結したかったので参考になったので下記記事!

https://qiita.com/kyasbal_1994/items/ecf19a3feb60a12a61f9
m(_ _)mありがたや

手順メモ

1. まず下記extensionがVSCodeに入っている前提

image.png

2. ターミナルで、monoを入れておく。

$ brew install mono

※状況のおおじて、最新版を入れておくといいかも→ brew upgrade mono

3. VSCodeのユーザー設定ファイルのsetting.jsonに下記monoの設定を記入

コマンドパレット(Cmd+Shift+P)で、「setting json」などで検索

setting.json
{
    〜省略〜
    "omnisharp.useGlobalMono": "always",
    "omnisharp.monoPath": "/usr/local/Cellar/mono/6.8.0.105"
}

/usr/local/Cellar/mono/6.8.0.105は、monoインストール時のパスを入力する

あとは、VSCode再起動で改善した!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む