- 投稿日:2020-04-07T23:45:35+09:00
マルチプラットフォーム対応のターミナル「Hyper」
「Hyper」ターミナル
マルチプラットフォームなターミナル「Hyper」がなかなかよさそうだったのでメモ。Win/Mac/Linuxで使えますが、これ以下はMacを想定して記載します。
インストール方法
Homebrewが入っていたら、以下コマンド実行するだけでOKです。
$ brew cask install hyperHomebrewを知らない方は、以下記事参照下さい。
Macのパッケージ管理ソフトウェア 「Homebrew」「Homebrew Cask」でソフトウェアを簡単にインストール・管理しよう
起動画面は以下です。おしゃれ。
テーマの変更
以下のように実行します。
$ hyper i hyper-solarized-light
プラグイン
テーマと同じように
hyper i xxx
と実行していけば良いのですが、~/.hyper.js
の設定ファイルのpluginに以下のように書いて、Hyperを「View -> Reload」でリロードするか、起動しなおせば記載したプラグインがインストールされます。plugins: ["hyper-solarized-light", "hyper-statusline", "hyper-search", "hypercwd", "hyper-opacity", "hyper-pane", "hyper-tab-icons-plus"],色々プラグインを入れると以下のようにオシャレになります(.bashrcも変更の必要あり、参考リンク参照)。
まとめ
「Hyper」ターミナルおしゃれなので使ってみようかなと思います。自分の設定ファイルは、以下のGitHubリポジトリにアップしました。
さらに仮想ターミナルを使いたい場合は、以下記事参照下さい。
byobuで仮想端末入門(Mac/Linux/Raspberry Pi)
関連記事
参考リンク
- 投稿日:2020-04-07T21:42:47+09:00
MACでARM系マイコンを開発する方法1
Introduction
現在においても組み込みソフトウェア開発はWindowsで行うのが定石ではないだろうか。
開発行為において環境がWindowsしか想定していないというのは枚挙に暇がない。
組み込み系ではさらにその傾向が顕著と言える。故にMacで組み込みソフトウェア開発と言えば、それはすなわち苦行を意味する。
トライ&エラーの結果行き着いた物を紹介する。方針
1.IDEであること。
GCCをmakeして・・・とか、OpenOCDで書き込んで・・・とか、しんどい。
開発環境を作るのが趣味ならばあえて止めはしないが、苦行である。
無料ではないが、金で時間を買う。
2.デバッガが使えること
仕事ではリアルタイムトレースが可能になりつつある時代である。
こんな時代にUARTを使ってチマチマやっていたら発狂する。前提条件
PC環境 macOS Catalina
対象マイコン ARM系(STM32)
開発言語 C/C++
費用 なるべく安く
デバッガ 通常のICEデバッグ相当(ブレークポイント・メモリ/レジスタ操作)当方環境
開発環境 CrossWorks for ARM(Rowley Assosiates)
評価マイコン STM32F411(Nucleo-F411RE)
↑NucleoボードはSWEデバッガ相当の回路が内蔵されているため便利である。CrossWorks for ARM入手方法
直販で購入可能である。
英語でやりとりが厳しい人は→国内代理店ソリトンウェーブ以降は直販前提で記述
ライセンス
・Shared Developer ($2250)
・Named Developer ($1500)
・Educational Workstation License ($300)
・Personal Non-Commercial License ($150)
個人で非商用であればコレ一択である。購入手順
Rowley Associatesのトップ画面から購入画面にいく。
[2]はいわゆる誓約書である。コレを印刷し、署名して、スキャンしたデータをメール添付して送信する。
送信先:enquiries@rowley.co.uk[3]が完了したら[1]のウェブサイトから購入手続きを行う。
Cross Connectって何よ
早い話がJTAG/SWDデバッガ。
これとかなりそっくり。(微妙に違うけど)
多分OlimexのOEM品と思われる。マイコンを部品として買って、基板作って実装して・・・と言うことをやる人は買って損はない。
最近のマイコンボードはJTAG/SWDデバッガは元々オンボードの場合が多いので、基板作らない人には無用の長物。
CrossWorksはJ-link等に互換性あるので、これらを持っている人には必要はない。トラブル
2019/11 CrossWorks for ARMとCrossConnectをセットで買った。
2019/12 3週間ほど経ってもCrossConnectが送られてこない。
2019/12 sales@rowley.co.uk にメールで「まだ届かねーよ?送った?」と言う意味のメールを送る。
2019/12 メール回答「まだ送ってなかった。ゴメン。送るから住所教えて」とHenry Beck(担当者かな)から回答
2020/1 現品到着もしトライされて、ブツが届かないときは問い合わせてみましょう。
- 投稿日:2020-04-07T18:27:52+09:00
Macの「最近の項目」を乱用しないで!!
はじめに
みなさん、初めまして。私はMacを使うようになって数年経ち、自分の身の回りの人もMacを使用している環境を1年過ごしました。そんな中で、Macの中がごちゃごちゃの人たちの共通点があったのでここに共有したいと思います。
最近の項目
タイトルからわかるとは思いますが、共通点は「最近の項目」です。これは名前の通り最近使ったファイルを一覧で表示してくれる機能で、普段からファイリングをしっかり行っている人にとってはこの機能とても便利だとは思いますが、何も考えずに「最近の項目」ばかり使っているとびっくりするくらいFinderの中がごちゃごちゃになり自分でさえもどこになんのファイルがあるのか分からなくなります。その状態でヘルプをもと求められてもね...(笑)どこに何があるのかわからないので助けたいのに難しい。
じゃあどうしたら?
そんなこと急に言われても使うのやめられないよ。って人は多いと思います。無理して使うのをやめる必要はないと思います。きちんとファイリングをして自分がわかるように整理をしたり、適当にファイル名を付けて保存せずにパターンを作ってわかりやすい名前にすればいいんです!!
MacのFinderには上の画像のサイドバー(左側)ようにデスクトップ・ダウンロード・書類などのようにタブに表示させることができます。これをうまく利用して整理してみてください。最初は面倒だと思うかもしれませんが使いやすくなるのはもちろん作業効率も上がります。是非実践してみてください!サイドバーに表示する項目の選び方は...
1. デスクトップ画面かFinderのウィンドウをクリック
2. 画面左上のりんごマーク()の右にあるFinderをクリック
3. 上から2番目の環境設定...をクリック
4. 左から3番目のサイドバーをクリック
5. 表示させたい項目にチェックを入れる以上の手順で表示させることができます。
最後に
いかがだったでしょうか。簡単にですがまとめさせてもらいました。スクショを見て思った人もいるかもしれませんが私は「最近の項目」を使っていません(笑)ファイルごとに場所を分けていればすぐ見つかりますし、ファイル名にパターンを作ると覚えやすいので検索しちゃうんですよね。ご覧いただきありがとうございました!
- 投稿日:2020-04-07T15:38:37+09:00
ubuntuでsudo apt updateが使えない
- 投稿日:2020-04-07T15:08:16+09:00
Mac Laravel 環境構築初期やgit clone直後でローカルサーバを起動した時に500エラーが出た話
目的
- Laravelアプリの環境構築初期やgit clone直後にローカルサーバを起動すると500 Server Errorのエラーが出力される問題を解決した話をまとめる
問題のエラー
Laravelアプリのディレクトリ内で
$ php artisan serve
を実行し、ブラウザからhttp://127.0.0.1:8000/にアクセスしたところ下記の画面が表示された。原因
- Laravelアプリのルートフォルダ内に「.env」のファイルが存在しないことが原因である。
下記に問題発生時のLaravelアプリのルートフォルダ直下のフォルダ構成を記載する。
.editorconfig .env.example .git/ .gitattributes .gitignore .styleci.yml README.md app/ artisan bootstrap/ composer.json composer.lock config/ database/ package-lock.json package.json phpunit.xml public/ resources/ routes/ server.php storage/ tests/ vendor/ webpack.mix.js
解決法
下記コマンドを実行して「.env.example」ファイルを元に「.env」ファイルを作成する。
$ cd laravelアプリルートフォルダ $ cp .env.example .env下記コマンドを実行してローカルサーバを起動する。
$ php artisan servehttp://127.0.0.1:8000/にアクセスしたところ下記の画面が表示された。
アプリケーションキーがないので作ってくれと怒られたので、一旦ローカルサーバを止めて、ブラウザに記載されているコマンドを実行する。
$ cd laravelアプリルートフォルダ $ php artisan key:generate >Application key set successfully.下記コマンドを実行してローカルサーバを起動する。
$ php artisan serve自分が作成中のLaravelアプリのホーム画面がブラウザから確認することができた。
- 投稿日:2020-04-07T13:28:18+09:00
【追記予定】Intellij ideaのショートカット比較
MacとWindowsでのIntellij ideaのショートカットの違いに困惑したので、個人的によく使うものだけをとりあえず一覧化した。
RubyMineやWebStormなんかもKeymap自体は同じなんじゃないかと思う。
まとめきれてないので追記予定。
Action Mac Windows エディタタブを閉じる command+W Ctrl+F4 設定 command+, Ctrl+Alt+S プロジェクト設定 command+; Ctrl+Alt+Shift+S 定義元へジャンプ command+B Ctrl+B インテンション・アクションの表示 shift+enter Alt+Enter
- 投稿日:2020-04-07T11:34:07+09:00
MacでPhotonVoiceを使用したときに他アプリケーションの音量が小さくなる問題
概要
PhotonVoice を使用した Unity 製アプリを起動した途端、別アプリケーションとして起動している Google Chrome 上の YouTube や Spotify 等の音量が極小になる。また、通話中の Discord に至っては音量だけではなくマイク入力も極小になるようだった。本事象は UnityEditor 上でアプリケーションを実行しても発生した。
同じ事象は PhotonVoice を使用していないと思われる LINE や Skype, Zoom の通話中でも発生しているが、Discord や Slack, Google Chrome 上の Facebook Messenger の通話中では発生していないので、何か解決方法があることが分かる。
確定的な原因は分からなかったが、対処方法は分かったので記事として残しておく。
各種バージョン
環境 バージョン macOS macOS 10.15.4 Unity Unity 2018.2.21f1 Photon Unity Network PUN 1.91 (全体的にバージョンが古くてお恥ずかしい限りです)
対処方法
PhotonVoiceRecorder にある Microphone Type で「Unity」を使用する。
自分のプロジェクトでは「Photon」を使用していたが、これを「Unity」に変更したら解決した。ただし、基本的には Unity マイクよりも Photon マイクのほうが何かと優秀なので、Mac で起動したときのみ「Unity」マイクを使用するようにするために下記コードを書いた。 (PhotonマイクのクライアントとUnityマイクのクライアント同士で音声通信が正常に出来ることは検証済み)
private void Start() { GetComponent<PhotonVoiceRecorder>().MicrophoneType = IsMacOs() ? PhotonVoiceRecorder.MicAudioSourceType.Unity : PhotonVoiceRecorder.MicAudioSourceType.Photon; // 念の為PhotonVoiceSettingも変更しておく PhotonVoiceSettings.Instance.MicrophoneType = IsMacOs() ? PhotonVoiceSettings.MicAudioSourceType.Unity : PhotonVoiceSettings.MicAudioSourceType.Photon; } // Macで実行されていたらtrue private bool IsMacOs() { #if UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX return true; #endif return false; }原因究明 (未解決)
下記のフォーラムで探して回ったが、とにかく同じ事で悩んでいる人が少なかった。
また、投稿があっても回答が無いパターンも多かった。
- Unity Forum
- Apple Developer Forums
- Photon Engine Support Forum
- Stack Overflow
似たような問題を抱えている人
本事象に一番近いなと思ったのは、Apple Developer Forums に投稿されていた下記の質問。
(もしかしたら全く関係無いかもしれないが)
VoiceProcessingIO lowers the volume of all othe... |Apple Developer ForumsVoIPアプリケーションでVoiceProcessingIO(kAudioUnitSubType_VoiceProcessingIO)オーディオユニットを使用してオーディオを録音および再生しています。ユニットが初期化されている場合を除き、すべてが正常に動作します。他に何かがオーディオを再生している場合、そのオーディオは非常に静かになりますが、出力はすべてフルボリュームで聞こえます。
こちらの投稿には回答が付いていなかったが、macOS のオーディオ API 周りの機能が原因である事が分かる。
(上記記事で紹介されていた kAUVoiceIOProperty_DuckNonVoiceAudio - AudioToolbox | Apple Developer Documentation のプロパティをドキュメントから参照したが、非推奨と書いてあったので対応出来なかった。)全てのアプリケーションにおいて音声入力時に他のアプリケーションの音量が小さくなるのならここで諦めるが、上述した通り Discord や Slack の通話では音量が変わる事が無かったので、もう少し調べてみることにした。
Photon Voice のマイクタイプについて
公式ドキュメントの「Photon」マイクの説明を見ると、ネイティブのオーディオAPIとやりとりしている事が分かる。
Unityマイクは、ほぼ同じコードベースを使用して複数のプラットフォームをターゲットにすることを容易にするのに最適です。ただし、いくつかの点で、UnityのマイクAPIは制限されているか、あちこちにいくつかの問題があります。そのため、オーディオ入力デバイスと直接やり取りし、UnityのマイクAPIをバイパスする独自の方法を導入しました。これの主な理由の1つは、デバイスのハードウェアに組み込まれているエコーキャンセレーションを利用することです。 ※ Photon Voice For PUN | Photon Engine より引用
macOS の API (特にオーディオ周り)には詳しくないが、オーディオ API が本事象の原因であり、Photon マイクの実装がネイティブのオーディオ API を利用しているのならもしかして?と思ってマイクタイプを「Unity」に変更したら他アプリケーションの音量に影響を与えない事が出来た。
最後に
Unity マイクも内部的にはネイティブのオーディオ API を参照しているのでは?と思ったが、他アプリケーションの音量操作は Unity API 側で無効にされているという認識で良かったのだろうか。
結局、具体的に何のオーディオ API の何のパラメータが原因で、どのような場合に音量操作を行うのかというのは分からなかったので、もし詳しい方がいらっしゃいましたらご教示いただけますと幸いです。
参考リンク
- Photon Voice For PUN | Photon Engine
- アプリケーションの音量調節を制限する方法-Appleコミュニティ
- 自動ゲインコントロールを無効にする(コアオーディオ)-Unityフォーラム
- ios-プログラムでVoiceProcessingIO AGCをオフにする-スタックオーバーフロー
- mountain lion - Mac OSX microphone input volume level auto-adjusts - can it be disabled? - Ask Different
- VoiceProcessingIOは他のすべての音量を下げます... | Apple開発者フォーラム
- kAUVoiceIOProperty_DuckNonVoiceAudio - AudioToolbox | Apple Developer Documentation
- 投稿日:2020-04-07T09:50:39+09:00
Secure PipesとSwitchyOmegaで4クリックお手軽ポートフォワーディング
みなさま、リモート生活をいかがお過ごしでしょうか。
会社や大学の内部向けのデータにアクセスするために、今まで以上に踏み台サーバーを使ってポートフォワーディングをしている方が増えているのではないでしょうか。この記事では、Secure PipesというMac用のアプリとProxy SwitchyOmegaというChrome Extensionを導入することで、4クリック(最小0クリック)でダイナミックポートフォワーディングによるWebブラウジングを有効化できるようにします。
Secure Pipesの導入
踏み台サーバーを経由してWebサイトにアクセスする時、ほとんどの人はsshでトンネルを掘っていると思います。
しかし、sshによるポートフォワーディングの面倒な点として、
- ターミナルを開いてコマンドを叩くのが面倒
- スリープすると自動で復帰してくれない(autosshなどもありますが)
- 接続先の切り替えが面倒
- トンネルが繋がっている状態なのか忘れがち
等があると思っています。
Secure Pipesは、Macのタスクバーに常駐し、メニューから簡単にトンネルのON/OFFを切り替えることのできるアプリです。
設定方法
- https://www.opoet.com/pyro/ からSecure Pipesをダウンロードし、インストールして起動します。
- タスクバーのアイコン->
Preferences
から設定画面を開きます。現在設定されているプロキシ設定が表示されますが、もちろん最初は空です。左下の「+」ボタンから、「New SOCKS Proxy」をクリックしてコネクションを作成します。
設定画面が開くので、踏み台サーバーの情報を入力します。localhostのポート番号はもちろん空いているポートなら何でも大丈夫です。
Applyボタンを押して設定を保存します。
切断する際はメニューを開いてDisconnectするだけです。
これでターミナルから
ssh -D
でダイナミックポートフォワーディングしているのと同じ状態になります。Macが一度スリープして接続が切れても、スリープが解除されると自動復帰します。
次にこのトンネルを経由してwebサイトに接続するよう、ChromeにProxy SwitchyOmegaを導入します。
Proxy SwitchyOmegaの導入
ChromeがSOCKSプロキシを経由して接続するようにProxy SwitchyOmegaを導入します。
設定方法
Chrome Webストアから、Proxy SwitchyOmegaを追加します。
https://chrome.google.com/webstore/detail/proxy-switchyomega/padekgcemlokbadohgkifijomclgjgifインストールすると、Chromeのメニューバーの隣にドーナツみたいなアイコンが表示されます。
クリックするとProxy SwitchyOmegaに設定されているプロキシの一覧が表示されます。作成するには「Options」をクリックします。("secure pipes"等の設定は下のステップで作成したもので、最初は表示されていません)
設定画面が開くので、左側のメニューの
New Profile...
から、新しいプロファイルを作成します。作成したプロファイルに、以下のように設定します。
左側のメニューの
Apply changes
を押して保存します。これで設定が完了しました。ポートフォワーディングで接続したいWebサイトを開き、ドーナツアイコンから作成したプロファイルをオンにします。
ドーナツアイコンが青色になったら、トンネル経由で接続されています。
これでlocalhostの8001ポート、つまりSecure Pipes側でlistenしているポートからトンネルを経由して全てのWebサイトがブラウジングされます。
メニューから
[Direct]
を選択すれば、プロキシを通さない直接接続に戻ります。まとめ
Secure PipesとSwitchyOmegaを使って、ChromeからSOCKSプロキシ経由でWebサイトを閲覧する設定を紹介しました。
一度設定しておけば、次回からはタスクトレイのアイコン2クリックとProxy SwitchyOmegaの2クリック、計4クリックによるポートフォワーディングによる接続が可能になります。
Proxy SwitchyOmegaは複数のプロキシを設定したり、ドメインによってプロキシを自動的に切り替えることもできます。
auto switchを上手く設定し、かつSecure Pipesの設定で自動起動と起動時の自動接続を設定すれば、Macの起動時から0クリックで常時お好みのトンネルで接続するような設定もできるでしょう。
(踏み台サーバーに負荷がかからないよう、ご利用は計画的に)