20210801のMacに関する記事は8件です。

RaspberryPiとMESH(ボタンタグ+カスタムタグ)を使ったPCスクリーショット(Mac)の保存操作

経緯 趣味の自転車で使っている室内トレーニングアプリ(zwift,rouvyなど)でトレーニング中にスクリーンショットを保存したい Macではスクリーショットはcommand+shift+3で保存できますが、トレーニング中に操作するのは危険なので、片手でも実行できるようにしたい 作ったもの MESHのボタンタグを押すとMacのスクリーンショットを指定したフォルダに保存します。 MESHを選択した理由 バッテリー内蔵で単体で動作し、自転車に取付け可能で片手で操作できること SDK(JavaScript)があり、RaspberryPiと連携できること 構成 MESH MESHハブアプリケーションでボタンタグをトリガーにHTTP GETを送るカスタムタグのレシピを作成します カスタムタグとレシピはMESHハブアプリケーションを試してみるを参考にCode:Executeに下記コードを書いて作成します。 var apiURL = "http://ローカルホスト名:ポート番号/"; ajax ({ url : apiURL, type : "get", timeout : 1000, success : function ( contents ) { log("HTTP receive."); callbackSuccess( { resultType : "continue" } ); }, error : function ( request, errorMessage ) { log("http request error occured"); callbackSuccess( { resultType : "continue" } ); } }); return { resultType : "pause" }; RaspberryPi Raspberry Piに「MESH ハブ」アプリをインストールする方法を教えてほしいを参考にMESHハブで作成したレシピの実行環境をラズパイに構築し、HTTPリクエストを受けるローカルサーバー(Node.js + Express + child_process)を起動し、SSH接続(公開鍵認証)でAppleScriptをosascriptコマンドで実行します。 const express = require('express') const app = express() const {exec} = require('child_process') //要ユーザ設定ファイル作成(~/.ssh/config) const sshcmd = "ssh [接続するsshのエイリアス名]" //ファイル形式 const fileformat = "defaults write com.apple.screencapture type [ファイル形式]" //画像ファイルの保存先パス const savefilepath ="defaults write com.apple.screencapture location [画像ファイルの保存先パス] " //AppleScriptのパス const applescriptpath = "osascript [AppleScriptのパス] " //AppleScript実行(ファイル形式と保存先指定) //const cmd = sshcmd + fileformat + "&& " + sshcmd + savefilepath + "&& " + sshcmd + applescriptpath //AppleScript実行 const cmd = sshcmd + applescriptpath app.get('/', function (req, res) { exec(cmd, (error, stdout, stderr) => { if (error) { console.error(`exec error: ${error}`); return; } res.status(200) res.send('OK') }) }) app.listen(3000,() => console.log('Listening on port 3000')); プログラムはサーバーが落ちても再起動するようにforeverコマンドを指定します。 【Node.js】 RaspberryPiのプログラムを自動起動・永続化・SSH ログアウト後もプロセスを残すを参考にサービス登録、再起動し、Foreverのプロセスを下記コマンドから確認します。 /etc/rc.local sudo -u pi /usr/local/bin/node /usr/local/bin/forever start -a -d [動かしたいスクリプトのパス] $ forever list info: Forever processes running data: uid command script forever pid id logfile uptime data: [0] EL4C /usr/local/bin/node [動かしたいスクリプトのパス] 1447 1705 /home/pi/.forever/EL4C.log 0:0:0:14.962 SSHはMacから公開鍵を取得し、ユーザ設定ファイル(~/.ssh/config)を作成します。 ~/.ssh/config Host [接続するsshのエイリアス名] HostName [ローカルホスト名] User [ユーザー名] IdentityFile [秘密鍵のパス] Port [ボート番号(デフォルトは22)] Mac スクリーショットを実行するAppleScriptをスクリプトエディタで作成します AppleScript形式 on fullscreenshot() tell application "System Events"                 // Command+Shift+3を入力 key code 20 using {command down, shift down} end tell end fullscreenshot fullscreenshot() JavaScript形式 sys = Application("System Events"); // Command+Shift+3を入力 sys.keyCode("20", { using: ["command down", "shift down"]}); スクリプト保存時にファイルフォーマットを「スクリプト」に指定すると「.script」で保存されるため、これをosascriptコマンドで実行します。 なお、AppleScript形式の場合、ファイルフォーマットを「テキスト」に指定すると「.applescript」で保存されますが、それぞれosascriptで実行することが可能です。 最後に このスクリプトを作成した後、Zwiftではショートカットキーの設定でF10キーでスクリーンショットを指定のフォルダに保存できることを知りました。 ただ、スクリーンショット操作は運動に集中しているとキーでもボタンでも押せないことや押し忘れることがあったため、自動で実行できるような仕組みがあると良いかと思いました。こちらは今後検討予定ですが、映像解析や他デバイスからのトリガーから実行できる仕組みを検討してみようと思います。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Could not open input file: composer.pharが出た場合の対処方法

macでcomposerインストール後にCakePHPのプロジェクトを作成しようとしてつまずいたのでメモ php composer.phar create-project --prefer-dist cakephp/app:4.* my_app_name を実行した場合に Could not open input file: composer.phar と表示されることがあります。 その場合は以下でプロジェクトを作成してみてください。 composer create-project --prefer-dist cakephp/app:4.* my_app_name
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ELECOM UC-SGTをMacで動かす

ドライバインストール インストール手順に関しては、すでに良い記事があるのでそちらを参考に。 ドライバがロードできない問題 インストール時にInfo.plistを編集するので、コードサインエラーが発生する $ kextutil -tn /Library/Extensions/ProlificUsbSerial.kext Skipping staging and system policy checks because not running as root, expect staging errors. Untrusted kexts are not allowed Kext rejected due to invalid signature: <OSKext 0x7fec95f0a330 [0x7fff8e5aecf0]> { URL = "file:///Library/Extensions/ProlificUsbSerial.kext/", ID = "com.prolific.driver.PL2303" } Code Signing Failure: code signature is invalid Warnings: Dependency lacks appropriate value for OSBundleRequired and may not be available during early boot: com.apple.iokit.IOSerialFamily - Safe Boot Diagnostics for /Library/Extensions/ProlificUsbSerial.kext: Warnings: Dependency lacks appropriate value for OSBundleRequired and may not be available during early boot: com.apple.iokit.IOSerialFamily - Safe Boot Appleのサイトを確認するとドライバ(KEXT's)の場合はInfo.plistも追跡対象と記載があるのでこれが原因で間違いなさそう Approved KEXTs are tracked in a system-wide policy database through the team identifier in the KEXT's code signature and the bundle identifier from the KEXT's Info.plist, so updating a KEXT that has already been approved will not trigger a new approval request. 参照元:https://developer.apple.com/library/archive/technotes/tn2459/_index.html SIPを無効にする リカバリモードでcsrutil disableを実行し、System Integrity Protection(SIP)を無効化すれば問題なくロードできるようになる 下のサイトがよくまとまっています。 https://leico.github.io/TechnicalNote/Mac/csrutil
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Macのdateコマンドで週の開始日(weekday)を取得する

Macのdateコマンドでは-dオプションが利用できない 忘れた頃にハマる。。 週の開始日なども取得できないので、関数を作成した。 週の開始日を取得する関数 #!/bin/bash sdate=$1 function weekday(){ sdate=$(date -j -f "%Y-%m-%d" "$sdate" +"%Y-%m-%d") wname=$(date -j -f "%Y-%m-%d" "$sdate" +"%w") wdate=$(date -j -v-"$wname"d -f "%Y-%m-%d" "$sdate" +"%Y-%m-%d") echo $sdate $wname $wdate } weekday 利用方法 $ sh weekday.sh 2021-6-9 2021-06-09 3 2021-06-06 左から - 引数の日付 - 曜日 - 週の開始日の日付 参考
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Safari】タブキーでa要素やbutton要素などの要素にフォーカスが当たらない

テキストフィールドにはフォーカスできる tabindex属性を設定してもフォーカスできる要素とできない要素がある 結論: Safariの設定が原因 解決策 Safariのデフォルト設定では、Tabキーでフォーカスがあたる要素が限定されています。 テキストフィールド ポップアップメニュー tabindex属性が指定されている「もともとがフォーカス可能ではない要素」(要出典) この状態で、上記以外のフォーカス可能な要素にフォーカスするためにはOptionキーを同時に押下する必要があります。 以下の手順で設定を変更すると、他のモダンブラウザ同様Tabキーのみで、すべてのフォーカス可能な要素にフォーカスすることができます。 Safariを起動 メニューバーのアプリケーションメニュー、「Safari」から「環境設定」を開く 「詳細」タブを選択 アクセシビリティの項目、「Tabキーを押したときにWebページ上の各項目を強調表示」にチェックを入れる この状態でOptionキー+Tabキーを操作すると、テキストフィールドやポップアップメニューなどのみにフォーカスを当たるようになります。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Safari】タブキーでa要素やbutton要素などにフォーカスが当たらない

テキストフィールドにはフォーカスできる tabindex属性を設定してもフォーカスできる要素とできない要素がある 結論: Safariの設定が原因 解決策 Safariのデフォルト設定では、Tabキーでフォーカスがあたる要素が限定されています。 テキストフィールド ポップアップメニュー tabindex属性が指定されている「もともとがフォーカス可能ではない要素」(要出典) この状態で、上記以外のフォーカス可能な要素にフォーカスするためにはOptionキーを同時に押下する必要があります。 以下の手順で設定を変更すると、他のモダンブラウザ同様Tabキーのみで、すべてのフォーカス可能な要素にフォーカスすることができます。 Safariを起動 メニューバーのアプリケーションメニュー、「Safari」から「環境設定」を開く 「詳細」タブを選択 アクセシビリティの項目、「Tabキーを押したときにWebページ上の各項目を強調表示」にチェックを入れる この状態でOptionキー+Tabキーを操作すると、テキストフィールドやポップアップメニューなどのみにフォーカスを当たるようになります。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Safari】a要素やbutton要素などにタブフォーカスが当たらない

テキストフィールドにはフォーカスできる tabindex属性を設定してもフォーカスできる要素とできない要素がある 結論: Safariの設定が原因 解決策 Safariのデフォルト設定では、Tabキーでフォーカスがあたる要素が限定されています。 テキストフィールド ポップアップメニュー tabindex属性が指定されている「もともとがフォーカス可能ではない要素」(要出典) この状態で、上記以外のフォーカス可能な要素にフォーカスするためにはOptionキーを同時に押下する必要があります。 以下の手順で設定を変更すると、他のモダンブラウザ同様Tabキーのみで、すべてのフォーカス可能な要素にフォーカスすることができます。 Safariを起動 メニューバーのアプリケーションメニュー、「Safari」から「環境設定」を開く 「詳細」タブを選択 アクセシビリティの項目、「Tabキーを押したときにWebページ上の各項目を強調表示」にチェックを入れる この状態でOptionキー+Tabキーを操作すると、テキストフィールドやポップアップメニューなどのみにフォーカスを当たるようになります。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

mac pyenv 環境でtkinterがnomodulenamedになる時の対処法

macでtkinterをinstallしても起動せず、いろいろ格闘した末に起動できたので、どうやって解決したかをまとめてみた。 使用していた環境・バージョン ・macos mojave (10.14.6) ・pyenv 2.0.4 ・tcl-tk 8.6.11 (bottled)[keg-only] ・python3.9.6 結論 $ brew install tcl-tk, $ brew install pythonした後に $ brew install python-tkを入力 症状 python3.9.6を使用。tkinteを使うために以下のようなコマンドを打つとエラーが発生。tkinterはpythonの標準ライブラリのはずなのになぜか起動しない。原因はtcl-tkがパソコンに入っていないことらしいが、最後までイマイチよくわからなかった。 $ python3 main.py (中略) Traceback (most recent call last): (中略) import _tkinter # If this fails your Python may not be configured for Tk ImportError: No module named _tkinter 参考にした記事 こちら質問の一番上の回答より 補足 pythonをアンインストールしてtcl-tkをダウンロード、その後pythonを再ダウンロードと言う記事は山ほどあったが、どれもうまくいかなかった。pathをいじるのもなかなかうまくいかず、結局このコマンド一つで解決できたように思える。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む