- 投稿日:2021-01-08T23:51:05+09:00
Mac で docker-compose up した時にポートエラーになった際の対処法
これは何?
docker-compose up でコンテナを立ち上げようとした際に以下エラーが出たのでその対処法を記載している。
Starting lb ... error ERROR: for lb Cannot start service lb: Ports are not available: listen tcp 0.0.0.0:80: bind: address already in use
原因と対処法
文字通り他のアプリケーションがポート 80番を使用しているため使えないという内容。
なので、ポートを使用しているプロセスを探す。$ sudo lsof -i -P | grep ":80"httpd が 80番ポートを使っていることがわかった。
httpd 103 root 4u IPv6 0xb54e8c868de16e45 0t0 TCP *:80 (LISTEN) httpd 1221 _www 4u IPv6 0xb54e8c868de16e45 0t0 TCP *:80 (LISTEN) com.docke 2202 ishiharanaohiro 83u IPv6 0xb54e8c868494ae45 0t0 TCP *:8025 (LISTEN)
httpd の PID(103、1221) を削除する。
$ kill -l 103 $ kill -l 1221
docker-compose up -d
で無事起動。めでたしめでたし!Starting lb ... done
- 投稿日:2021-01-08T22:46:53+09:00
sshの使い方
前書き
最近はリモートでお仕事をすることが多くなってきましたよね。
私もリモートで色々な作業をすることが多く、SSHを頻繁に利用しています。TeraTermやiTermなど様々なSSHクライアントがある中、Linuxであればコンソール、
MacであればTerminalを使ってSSH接続をするのが好みですかね...ということでここではSSH接続の方法と便利な使い方について紹介します。
1. Macの方
MacにはあらかじめTerminalにsshが用意されているので、特にインストールなどは必要ありません。
ssh接続する際は、以下のように実行します。$ ssh (接続するユーザー名)@(接続先ホスト名or接続先IP) $ ssh user@192.168.100.10パスワードを入力したら、接続完了です。
2. Linux(Ubuntuなど)の方
LinuxにはSSHがあらかじめ用意されていない可能性があります。
その場合は以下の手順でSSHをインストールしましょう。$ sudo apt update && sudo apt -y install sshsudo : 管理者権限で実行する
apt update : パッケージのアップデートインストールが完了したら、SSHの実行です。方法はMacの方と同様に実行してOKです。
3. configについて
sshをインストールしたにホームディレクトリに「.ssh」というディレクトリが生成されているはずです。
.sshディレクトリが見当たらない場合は、以下の方法で.sshディレクトリを生成してください。$ cd /*ホームディレクトリに移動*/ $ ssh-keygen /*sudo はつけない*/ Generating public/private rsa key pair. Enter file in which to save the key (/home/hoge/.ssh/id_rsa): /*何も入力せずにEnter*/ Created directory '/home/hoge/.ssh'. Enter passphrase (empty for no passphrase): /*何も入力せずにEnter*/ Enter same passphrase again: /*何も入力せずにEnter*/ Your identification has been saved in /home/hoge/.ssh/id_rsa Your public key has been saved in /home/hoge/.ssh/id_rsa.pub The key fingerprint is: *************************************** The key's randomart image is: ***************************************ホームディレクトリに「.ssh」というフォルダが生成されたら、.sshディレクトリ内にconfigというファイルを作って、エイリアスを作成していきます。
$ cd .ssh $ touch config $ vi configconfigファイルをテキストエディタで開いたら、以下のように記述します。
Host work <- work : 接続するときに入力する名前 HostName 192.168.100.1 <- 192.168.100.1 : 接続先ホスト User hoge <- hoge : 接続するユーザー名これでconfigファイルの記述は終わりです。
実際に接続する際は、以下のように実行しましょう。$ ssh work <- 'work'はconfigで指定した名前sshの使い方は以上です。ぜひこの機会にsshを利用してみてください!
- 投稿日:2021-01-08T21:54:15+09:00
低スペのMacBook Pro late 2013にmacOS 11入れて意外とどうにかなっている話
Zennと同時投稿 https://zenn.dev/k_u_0615/articles/3e3ca49e7d1cd5
TL;DR
- OS更新時に発生していたバグは修正済みなので問題なし
- パフォーマンスをあげる設定をしたり、使うアプリに気をつけていれば案外使える
- Web開発ぐらいならいけるけど、dockerでバックエンド動かしているとキツくなる
スペック
メモリ4GB!!!!?
文鎮化するバグについて
上記の記事では、古いMBPではmacOS 11を入れると文鎮化してしまうと書かれていますが、こちらのバグはmacOS 11.1にて解決しているようです。
パフォーマンスをあげる設定
- システム環境設定を開く
- アクセシビリティ→ディスプレイをクリック
- 以下2つの設定を有効にする
- 透明度を下げる (必須)
- dockの背景色などを透かせる機能だが、オフにするとパフォーマンスが劇的に良くなる
- 視差効果を減らす (好みで)
- 仮想デスクトップの切り替えやMission Controlなどの動き(視差効果)がフェードになり、パフォーマンスが少し良くなる
- 個人的に視差効果は結構好きなので、有効にしていません
運用のコツ
- できるだけChromeではなくSafariを使う
- Electron系のアプリはできるだけ使わない
- メモやmarkdownぐらいならvscodeではなくネイティブのテキストエディタ(CotEditorなど)を使用する
- チャットアプリはSafariで頑張るか、スマホで対応する
- vscodeを使用する際、使わない拡張は無効化するかアンインストールする
使ってみた感想
諸用でcorei7 MBP late2020という贅沢なものから7年前のMBPになってしまいました。
MBP late2020のときに使用していたBigSurの新しいUIに見慣れてしまい、一か八かでアップグレードしましたが、びっくりするほど普通に使えていて驚いています。
外先でも数時間作業できますし、Web開発ぐらいならserveコマンドを動かしながらブラウザで確認してもギリギリどうにかなってます。
ただ、メモリがカツカツなので使わないアプリやタブ、拡張などはこまめに確認しないといけません。
また、dockerでなにかをさせたら流石にキツいです。
そこまでヘビーな開発は求められていないのもあり、これで仕事しても全然いけそうです。ただ、騙し騙し使っているのは事実なので、お金に余裕ができたらM1 MacBookAirが早く欲しいです、、
- 投稿日:2021-01-08T15:47:26+09:00
macでmysqlが動かなくなった時の解決策 (Railsプロジェクト動かす編)
久しぶりにローカルのmysql使ったら動かなくなった
railsプロジェクトで久しぶりにlocalのmysql使ったらmysqlが動かなくなっていました。その解決した方法を以下に記述します。
とりあえず今あるmysqlを全部消す
データ消えるけど、seedデータで入れ直しましょう。結果的に早いです。古いmysqlが悪さしている場合、解決にかなり時間を取られてしまうのでdockerでmysqlを起動させて接続するようなことをしないのであれば脳死でmysqlを消しましょう。
- コミュニティエディションのmysqlを削除する方法
rm -rf ~/Library/PreferencePanes/My* sudo rm /usr/local/mysql sudo rm -rf /usr/local/mysql* sudo rm -rf /Library/StartupItems/MySQLCOM sudo rm -rf /Library/PreferencePanes/My* sudo rm -rf /Library/Receipts/mysql* sudo rm -rf /Library/Receipts/MySQL* sudo rm -rf /private/var/db/receipts/*mysql* sudo rm /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
- brewで入れたmysqlを削除する方法
$ brew uninstall mysql sudo rm -rf /usr/local/Cellar/mysql* sudo rm -rf /usr/local/bin/mysql* sudo rm -rf /usr/local/var/mysql* sudo rm -rf /usr/local/etc/my.cnf sudo rm -rf /usr/local/share/mysql* sudo rm -rf /usr/local/opt/mysql* sudo rm -rf /etc/my.cnf上2つとも流しておけばmysqlは全部消えるはず。
brewでmysqlをinstall
今回はbrewを使ってmysqlをinstallします。現状、
brew install mysql
をすると8系列のmysqlがinstallされてしまうので、無難に5.7をinstallします。brew install mysql@5.7pathを通すために以下の1行を自分が使っているシェルの設定ファイルに記載してください。 ( bashなら ~/.bash_profile )
export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"※もし昔に設定していたmysqlのPATHがあったら削除しましょう。
mysql.server startStarting MySQL SUCCESS!となればmysqlのinstallまで成功です。
過去に起動したRailsプロジェクトを動かす
以下はrailsのプロジェクトを動かすときのはまりポイント置いておきます。
過去にbundle installを実行したプロジェクトだと、その時入れてあったmysqlのversionに合わせてgemがinstallされていると思うので、rails db:createを実行すると以下のようなエラーが出てmysql周りが怒られているよ!というエラー分が表示されると思います。
> rails db:create rails aborted! LoadError: dlopenですので以下のコマンドでgemをuninstallします。
bundle exec gem uninstall mysql2して
bundle installを実行してmysql2のgemを入れ直しましょう。
ここでエラーが出る人はbundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"bundle install前に上記コマンドを流してみてください。
- 投稿日:2021-01-08T15:41:29+09:00
はじめてSwiftUIでMacアプリを作って画面遷移に困った話
はじめに
今までiPhoneアプリケーションの経験しかなく、Macアプリを作成したことはありませんでした。
最初からMacアプリを作ってみるとiPhoneとの違いに少し驚いた話です。
SwiftUIについても初心者なので勉強中です。ちなみに環境は以下
Xcode:11.7
Swift5ログイン画面からメイン画面に遷移したい
Appleのチュートリアルやったときに画面遷移なかったなとは思ったのですが、
iPhoneのようにNavigationViewでは遷移しません。
チュートリアルにもありますがNavigationViewでは1画面にリスト画面と詳細画面が並べられることになります。私はログイン画面でログインした後メイン画面に移動する処理がうまく書けず困ったので
画面遷移についてメモを残します。ZStackを使う方法
ZStackを使って、Viewを切り替えるように実装しました。
ZStackvar body: some View { ZStack { // メイン画面を表示 MainView() // 上からログイン画面を表示 if !isLogin { LoginView() } } }メイン画面の上からログイン画面が出てきた方がMacアプリっぽいかなと思ったのですが、
ifelseにして丸ごと切り替えても良かったかもしれません。sheetを使う方法
メイン画面の上からログイン画面を出すならsheetも良かったです。
macOSBigSureだととても綺麗に見えます。
macOS Catalinaだと上からピロっと出る感じであんまりおすすめできませんでした。sheetvar body: some View { VStack { // メイン画面を表示 MainView() }.sheet(isPresented: $isLogin, content: { LoginView() }) }感想
sheetは画面外をクリックされると閉じてしまうのでログインには向きませんね!
sheetと同じようなものに.alertもありますがこちらは「Alert」型でないといけないので画面を切り替えるには使えません。
またsheetとalertを多用すると画面遷移時にぶつかって?しまいどちらかが表示されない場合もありました。
なにもなければZStackで切り替えるのが一番シンプルだなと思います。スマートな画面遷移方法があればぜひ教えてください!
- 投稿日:2021-01-08T14:09:27+09:00
Macの「Automator」でファイル名を一括変更する
- 投稿日:2021-01-08T14:09:27+09:00
【最新】Macの「Automator」でファイル名を一括変更(リネーム)する
- 投稿日:2021-01-08T06:39:36+09:00
ファイルシステム別の制限事項まとめ
1.この記事の内容
ファイルシステムの種類とOSとの対応関係及び制限事項を整理します.
ファイルシステムとは,OSが提供する機能の一つで,HDDやUSBメモリ等の記憶装置に保存されたデータの管理や操作に必要な機能です.
フォーマットの際に,FAT32,exFAT,NTFS等が指定できますが,OSごとに対応するフォーマットが異なります.例えば,FAT32はWindowsやMac,Linux,raspbian等多くのOSが対応している為,FAT32でフォーマットした記憶装置を用いるとパソコン間でデータの受け渡しが可能となります.
ただし,ファイルシステムごとに,1ファイルのサイズ上限や,1フォルダ内に格納可能なファイル数等の制限がある為,注意が必要です.本記事の調査にあたり参照したサイトは,ページ下部の関連リンクに記載しています.
2.ファイルシステムの種類とOSとの対応関係一覧
個人的によく使用する,FAT32,exFAT,NTFS,ext4について調査しました.
RW:読み書き可能
RO:読み取りのみ可能
×:非対応
ファイルシステム Windows Mac Linux ボリュームサイズ 1ファイルの最大サイズ 1ディレクトリ内の最大ファイル数 FAT32 RW RW RW 2TiB
※Windowsでは32GiB4GiB 65,535(※1) exFAT RW RW × 64ZiB 16EiB 2,796,202 NTFS RW × × 16EiB 16EiB 4,294,967,295 ext4 × × RW 1EiB 16TiB i-nodeに依存 ※1:ファイル名が8.3形式(ファイル名(8文字).拡張子(3文字))準拠かつルートディレクトリの場合のファイル数.ファイル数が長い場合やサブディレクトリの場合は,ファイル数が抑制される.
ファイル名の形式 ルートディレクトリ サブディレクトリ ファイル名備考 8.3形式 65,535 65,534 大文字と記号のみ12文字まで 13文字 65,535÷3→21,845 65,534÷3→21,844 小文字や数字含む13文字の例 25文字 65,535÷4→16,383 65,534÷4→16,383 小文字や数字含む25文字の例 3.さいごに
RaspberryPi上でCOCOデータセットの「2017 Test images [41K/6GB]」を扱おうと,FAT32でフォーマットしたUSBメモリにコピーを試みたところ,下記のエラーが発生し,FAT32の制約事項(1ディレクトリ内のファイル数超過)への該当が判明したことから本調査を行いました.
同様の問題に遭遇した方の参考になれば幸いです.
4.関連リンク
- ファイルシステム(FAT32、FAT16、NTFS、exFAT、HFS、HFS+、APFS)の違いについて
- OSの対応状況
- Linuxファイルシステムをまとめてみました
- テビバイト
- NTFS volとFAT32のディレクトリごとの最大ファイル数
- NTFS vs FAT vs exFAT
- Is There a Limit to What a Single Folder or Directory Can Hold?
- FAT32のファイルシステムで扱える最大ファイル数は65,535個?21,845個?
- Ubuntuでの1ディレクトリあたりのファイル数上限、容量上限はあるのでしょうか?
- linux(RHEL・CentOS・Amazon linux 2)のディレクトリの格納ファイル数上限
- ファイルシステムおよびストレージの制限
- Linuxのファイルシステムについて