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

driver failed programming external connectivity on endpointとなった時の対処法(redwood-broker 編)

概要

docker-compose でなんらかの理由により強制終了し、再度起動しても driver failed programming external connectivity on endpoint と言われる時の対処法

原因

他のプロセスが使用しようとしているポート番号とかぶっています。

多くの場合

まずはこちらをご覧ください。

それでも解決しない時

  1. 何がプロセスを利用しているのか調べる 1-1. ネットワークユーティリティを起動(mac OS High Sierraでは、 /System/Library/CoreServices/Applications/ にあります) 1-2. Portscanタブをクリック 1-3. 確認したいポートを指定して、 scan を実行
  2. redwood-broker が出て来たら、 Docker を再起動、Macを再起動しても redwood-broker は消えませんでしたが、 Docker を再起動すると消えます。
  3. その他の場合は、Googleさんに聞いてください。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

macOSのEmacsキーバインドを使いこなそう

はじめに

最近の若い人は最初に触れるコンピュータがMacという人もいると思います。
そこでぜひ知っておいた方がいいのがEmacsキーバインドです。
このEmacsキーバインドについて軽く書いてみます。
あとオマケとして、ちょっとしたスクリプトも載せておきます。

Emacsキーバインドとは

Emacsはvi(Vim)と並び、Unix系OSで広く使われているテキストエディタです。
便宜上テキストエディタと書いていますが、拡張性が非常に高く、何でもできちゃいます。
テキストエディタというよりは、今で言うIDE(統合開発環境)に近いものです。

自分はEmacsは使わなくなりましたが、そのEmacsに由来するキーバインドは今でもよく使っています。
macOS以外のEmacsキーバインドが使える有名なものとしてはbashが挙げられます。

macOSのEmacsキーバインドの由来

macOSではEmacsキーバインドが使えますが、
その由来はMac OS X・・・ではなく、もっと前にさかのぼります。

それは、Steve JobsがAppleを追われた際に作った会社、NeXTです。
こんなコンピュータを作っていました。

SA410004.jpeg
SA410007.jpeg

このNeXT社の作ったNEXTSTEPというOSにEmacsキーバインドが組み込まれていました。

そして時は流れ、1997年にAppleがNeXT社を買収し、
NEXTSTEPはMac OS Xとして乗っ取り生まれ変わりました。

Emacsキーバインドが使えるアプリ

macOSのネイティブアプリの基盤となっている、Cocoaを使っているアプリはまず間違いなく使えます。
逆に言えば、Cocoaを使っていないアプリ、
具体的には独自にWidgetを作っているフレームワークでは対応していないことが多いです。
例えばJavaやAdobe AIRで作られたものはダメです。
JetBrains製品は独自に対応していますが、一部標準と違うのでカスタマイズが必要です。

ちなみに、iOSでも外付けキーボードを使えばEmacsキーバインドが使えます。

使えるEmacsキーバインド

これだけのキーバインドがEmacs由来(のはず)です。

  • カーソル移動
    • Ctrl + F: 1文字右
    • Ctrl + B: 1文字左
    • Ctrl + P: 1行上
    • Ctrl + N: 1行下
    • Ctrl + A: 行の先頭
    • Ctrl + E: 行の末尾
    • Ctrl + Option + F: 1単語後
    • Ctrl + Option + B: 1単語前
    • Ctrl + V: 1ページ前
    • Ctrl + L: カーソルを中央になるようにスクロール
  • 削除
    • Ctrl + H: 前の文字を削除
    • Ctrl + D: 後の文字を削除
    • Ctrl + K: 行末まで削除(カット)
    • Ctrl + Y: 貼り付け(yank)
  • その他
    • Ctrl + T: カーソル前後の文字を入れ替え
    • Ctrl + O: 改行追加

全部は覚えなくてもいいです(自分も使ってません)が、覚えておくと便利です。

GoogleスプレッドシートでEmacsキーバインド

Emacsキーバインドではウェブブラウザでも使えます。
しかし不届きものがいました。

それは、Googleスプレッドシートです。Ctrl + Eすら使えません。
これではあまりに使いにくいということで、頑張って対応してみました。
一部動きませんが、だいたい動きます。

おわりに

NEXTSTEPの直系のOSが今まで残ってて、
自分がそれを使っているとは24年前には思いませんでした( ´ω`)

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

MySQL 8.0.18でパスワードリセットしてもrootユーザにログインできなくなった時の解決方法

目的

  • 何をしてもMySQLのrootユーザにログインできなくなった時の解決方法を書く

結論

  • MySQLをアンインストール→インストールしてrootユーザのパスワードを再登録した。

実施概要

  1. MySQLのファイル削除とアンインストールとインストール
  2. パスワードの再設定とログイン確認

実施詳細

  1. MySQLのファイル削除とアンインストールとインストール

    1. 下記コマンドを実行してMySQLのファイルを削除する。(DB内のデータも消すことになるので注意!何もせず下記コマンドを実行するとデータベースに保存されている内容が全て吹き飛ぶ)

      $ sudo rm -rf /usr/local/var/mysql
      
    2. 下記コマンドを実行してMySQLをアンインストールする。

      $ brew uninstall mysql
      
    3. 下記コマンドを実行してMySQLをインストールする。

      $ brew install mysql
      
  2. パスワードの再設定とログイン確認

    1. 下記コマンドを実行してMySQLを起動する。

      $ mysql.server restart
      
    2. 下記コマンドを実行してMySQLに入る。

      $ mysql -u root -p 
      
    3. 下記コマンドを実行してパスワードを設定する。

      mysql>USE mysql;
      mysql>ALTER USER 'root'@'localhost' identified BY '任意のパスワード';
      
    4. 下記コマンドを実行してMySQLを抜ける。

      mysql>exit
      
    5. 下記コマンドを実行後、パスワードの入力を求められるため入力してログインできるか確認する。

      $ mysql -u root -p
      
    6. 下記のようになればOKである。

      mysql>
      
    7. あとはcreateしてmigrateすればテーブル構造は元どおりになる。

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

Terminal.app で ANSI Colors を正確にレンダリングするハック (Dynamic Library & Method Swizzling)

はじめに

さて、前回は Terminal.app は ANSI Colors を正確にレンダリングできない
と初投稿させて頂きました。ざっくりおさらいすると、

  • macOS の標準アプリ Terminal.app ではカラーテーマで指定された色 (ANSI Color) に勝手に補正がかかってしまい、正確に表現できない

と言う内容でした。今回はその解決編です。

  • テスト環境は macOS Mojave 10.14.6 (18G1012)
  • 今回はなんと! Advent Calendar にも初参加になります!
  • 正直 Advent Calendar の概念を理解してませんが楽しそうだから良いよね。

Hack Terminal.app

? 簡単な方法はないものか?

実際にハックするとなると SIP (System Integrity Protection) の無効化は避けられないでしょう。それは面倒だし SIP の無効化は必要を迫られる度、代替案でやりくりし、やった事がなかったので何か良い迂回策はないか思考を巡らせました。

  • 背景色の指定があるテキストは正確に表現されるのだから、.zshrc なりを弄って、状況を監視し常にコンソール全画面に背景色を指定するようにすれば良いんではないか?
    • そんなうまいこといく筈もなく、断念。エッジケースとかに対応する事も考えるとすごく面倒そう。
  • Color adjustment option like Terminal.app
    • こちらは前の記事でも紹介した、 iTerm にカラー補正機能をむしろ追加しようよ、と言うもの。これを参考に Terminal.app でテキストを表示した時の色を逆算すればいいのでは? と思ったが、そうすると当たり前だが今度は背景色が指定され、正確に表示されている方のテキスト・背景色がおかしくなってしまった。断念。

そんなうまい話はなかった。
観念してハックしよう。

? でも・・・どうやって?

  • 筆者は、 iOS 8 ~ 10 だったか、正確には覚えていませんが脱獄をしメソッドをフック。システムの動作を変えたりして遊んだ事があった
  • iOS 開発ではあるが Swift & Obj-C で Method SwizzlingObjective-C runtime で遊んだりした事もある
  • ヘッダーの宣言を基にするか、クラス名とセレクタ名さえ分かれば割と簡単にプライベートメソッドをいじったり出来る事も少しは分かっている
  • 検索に必要なキーワードは恐らく Code Injection Mac Method Swizzling とかそんなん

つまり、プライベートクラスへのアクセス方法 や、 Method Swizzling とか、Hook させる などの概念は少しは分かっていました。
しかし、普段業務では iOS / iPadOS しか対象でないものだから、 macOS でそんな事はやった事はない。AppKit, Cocoa にもあんまり慣れてない。 とっかかりがない。

  • こう言う事ってプログラミングをしているとたまにありますね。実現させたい事を実現させるために必要な概念と結果はある程度想像がついてはいるが、肝心のそこにたどり着くための「1歩目」あるいは「中間」がすっぽり抜けていて、どう事始めすれば良いか分からない状況。 まさにそれでした。

とりあえずまずは同じような発想で Terminal.app を弄っているプロジェクトがないかどうかを、前回の記事で発見したこの宣言:

TTView-Private-Methods.h
- (id)adjustedColorWithColor:(id)arg1 withBackgroundColor:(id)arg2 force:(BOOL)arg3;
- (id)adjustedColorWithRed:(double)arg1 green:(double)arg2 blue:(double)arg3 alpha:(double)arg4 withBackgroundColor:(id)arg5 force:(BOOL)arg6;

を基に Github で検索をかけ、しらみつぶしにプロジェクトを探していきました。
すると、あった。

同じアプローチのプロジェクトたち

  • jenghis/terminal-patch
    • まさに全く同じ事を実現する為の Python で書かれたスクリプト。しかしそのままではうまく動作せず。Python はある程度書けるものの恥ずかしながら バイトオフセット を指定してうんたらかんたらと言うのには慣れていないので弄ってはみたものの断念。
  • earwin/trucolor
    • こちらもまさに同じ事を実現する為の SIMBL pluginSIMBL 。懐かしい。SafariStand をよく使ってました。しかし、個人的には 他の機構に依存する のは嫌いなのでこちらも断念。

そして、最後にこちら:

  • BlueCocoa/moeterminal
    • テキストカラーとは関係なく、ターミナルの背景に画像を設定できるようにする物のよう。このプロジェクト単独で動作するような仕組みになっている。

ヘぇ〜、面白いねと思って README を読んでいると気になるワードが・・・
調べると:

  • dylib
    • dynamic library のこと
  • DYLD_INSERT_LIBRARIES
    • コードをダイナミックにインジェクト (Code Injection) する為の環境変数

? まさにこれですやんん ‼️

DYLD_INSERT_LIBRARIES

さぁ、こっからが本番ですよ。

さて、 DYLD_INSERT_LIBRARIES 。これは変数なんです。
簡潔に言うと:

  • ダイナミックライブラリー .dylib
  • ダイナミックフレームワーク .framework

いずれかを作成し、バイナリを起動させる前にそれらを 変数に指定する事で バイナリがそれらを ダイナミックに読み込み、コードインジェクションが可能になる

Example.sh
DYLD_INSERT_LIBRARIES=fooBarHack.dylib /Applications/FooBar.app/Contents/MacOS/FooBar

こんな感じにしてバイナリを起動させると、 fooBarHack.dylib がダイナミックに読み込まれ評価される。結果、コードインジェクションなり Swizzling が可能となる。

もっと詳しくは

man dyld

にて。
そして、この手法を説明している記事の中で一番メジャーなのが下記のようだ:

確かに簡潔で分かりやすい。
早速実装してみましょう!

Implementation

  • Method Swizzling Impl
TerminalHack.m
#import <AppKit/NSColor.h>
#import <objc/runtime.h>

@interface NSObject (Terminal)
@end

@implementation NSObject (Terminal)

+ (void)load {

    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{

        Class ttViewClass = NSClassFromString(@"TTView");
        Class selfClass = [self class];
        method_exchangeImplementations(class_getInstanceMethod(ttViewClass,
                                                               NSSelectorFromString(@"adjustedColorWithColor:withBackgroundColor:force:")),
                                       class_getInstanceMethod(selfClass,
                                                               @selector(__adjustedColorWithColor:withBackgroundColor:force:)));
        method_exchangeImplementations(class_getInstanceMethod(ttViewClass,
                                                               NSSelectorFromString(@"adjustedColorWithRed:green:blue:alpha:withBackgroundColor:force:")),
                                       class_getInstanceMethod(selfClass,
                                                               @selector(__adjustedColorWithRed:green:blue:alpha:withBackgroundColor:force:)));
    });
}

/// Returns input NSColor as it is
- (id)__adjustedColorWithColor:(id)color
           withBackgroundColor:(id)backgroundColor
                         force:(BOOL)force; {
    return color;
}

/// Returns NSColor from RGBA
- (id)__adjustedColorWithRed:(double)r
                       green:(double)g
                        blue:(double)b
                       alpha:(double)a
         withBackgroundColor:(id)backgroundColor
                       force:(BOOL)force; {
    return [NSColor colorWithRed:r green:g blue:b alpha:a];
}

@end
  • ライブラリバイナリ生成
gcc-build.sh
# Build Dylib
gcc -framework AppKit -o ./libTerminalHack.dylib -dynamiclib ./TerminalHack.m
  • ライブラリバイナリを差し込み、バイナリを起動
code-inject-launcher.sh
# Copy Terminal.app to Desktop
cp -rfv /Applications/Utilities/Terminal.app ~/Desktop

# Launch with dylib
DYLD_INSERT_LIBRARIES=./libTerminalHack.dylib ~/Desktop/Terminal.app/Contents/MacOS/Terminal

こんな感じ。しかし・・・うまくいかない。ターミナルは立ち上がるが、ライブラリが読み込まれない。そもそも実装の仕方が間違っているのだろうか? と思い色々な書き方をしてみたがやはりダメ。ただの NSLog すら反応しない。

コード署名

上記の記事の公開日時は Dec 18, 2012 。当時の OS X と比べると今はセキュリティーが格段に厳しくなっているので無理なのだろうか? と思っていたところ、一つ思い出した事が。

Retroactive

macOS Catalina になり、 Aperture, iPhoto, iTunes が使えなくなった。それを解決し使えるようにする為のアプリケーションがある。

面白いのでどの様に実装をしているのかを見た事があった。
そして、その制作過程を事細かに説明した記事も読んだ事があった。

読んだ当時は iTunes にしか興味がなかったので流し見程度でした (因みに記事内では iTunes には触れていない。Info.plist のバージョンの値を変えて起動不可リストを回避すると言う簡単なものの為でしょう)。

だが、リポジトリのソースを見たときは iTunes 以外は結構複雑な事をしていた覚えがあったので、もしかして? ともう一度上記の記事を読み直す事にしました。すると、ビンゴ! まさに同じ手法を使っている。順を追っていくと、初めに紹介した記事のようにライブラリーを製作している。そして、

さて、どうやって Aperture をこのライブラリと起動しよう?

うんうん、せやねん

“DYLD_INSERT_LIBRARIES=” と入力し、フレームワークパスを入れる。で、Aperture のバイナリパスを入力するよ

え・・・? それさっきやってあかんかったやつやけど・・・?
結局進展せず、ここでハマりました。何度やってもうまくいかない。
こう言う時、

Yakekuso.m
NSLog(@"YEAHHHHHHHHHH!!!!");
NSLog(@"WOOOOOOHOOOOOO!!!");

とかやっちゃう。でもやっぱりログされない。なぜ。
また実装の見直しをしたりしたが、ダメ。

一旦落ち着いて、もう一度先ほどの記事を初めから読み直してみる。すると

codesign
sudo codesign --remove-signature /Applications/Aperture.app

このような記述が。

Aperture の場合、Catalina で起動するとまず初めに code signature によるエラーで落ちてしまうそうです。標準アプリである Terminal.app の署名がエラーなんてことは起こりえないので、読み流してしまっていたのでした。

もしや? と思いもう一度トライ。

Eureka!

Eureka!.sh
# sudo isn't needed in my case somehow
codesign --remove-signature ~/Desktop/Terminal.app
DYLD_INSERT_LIBRARIES=./libTerminalHack.dylib ~/Desktop/Terminal.app/Contents/MacOS/Terminal

ss 2019-12-01 20.10.16.png

Yeah. きました。
そう、原因は アプリに署名が入っていたこと だったんです。署名を消さないことにはコードインジェクションは出来ない

コードサイン有り

codesigned
$ codesign -vvvv Terminal.app
Terminal.app: valid on disk
Terminal.app: satisfies its Designated Requirement

コードサイン無し

no-codesign
$ codesign --remove-signature Terminal.app
$ codesign -vvvv Terminal.app
Terminal.app: code object is not signed at all
In architecture: x86_64

後者のようになっていれば良い。

Terminal.app with True Tone ANSI Colors

あとは、Method Swizzling が本当に正しく働き、色の自動補正が無効化されているかどうかを確認するだけです。

Before

before.png

After

after.png

結果発表

ハイもう大成功。前者は補正がかかり明るめの色になっているのが一目瞭然。
通常カラーと明るめカラーがほぼ同じになってもうてますやん。

「色が違う? 何言ってんだこいつ」と思ってましたでしょ?。 本当に違ったんですよ。
え? 「色くらいでそこまでする必要ある?」 それは一番言うたらアカンやつや。

因みに、メソッドは

TTView-Private-Methods.h
- (id)adjustedColorWithColor:(id)arg1 withBackgroundColor:(id)arg2 force:(BOOL)arg3;
- (id)adjustedColorWithRed:(double)arg1 green:(double)arg2 blue:(double)arg3 alpha:(double)arg4 withBackgroundColor:(id)arg5 force:(BOOL)arg6;

のうち、どちらかだけを無効化するだけでも期待通りの動作をします。
が、念の為二つとも元の色が通るようにしています。

最後に

学べた事

今回のハックをしてみて、色々な事を学ぶ事ができました。

  • ライブラリは Xcode を使わなくてもバイナリ化出来る ( gcc でコンパイル )
  • dyld とその変数達の存在
  • 署名済みのアプリにはその変数は通用しない
  • 今日においても比較的簡単にアプリケーションにコードインジェクトをする事が出来る

ポインターがどうたらこうたら、メソッド宣言のオフセット、パッチを当てる・・・
そう言う難しい事をしないと、アプリケーションの改造など出来ないと思っていました。
しかし、動的にライブラリを読ませると言う事で同じような事が出来ることが分かりました。
多分、SIMBL も同じような仕組みを使ってプラグイン化を実現しているのだろうか? 知らんけど

パフォーマンス

  • 元のバイナリファイルを弄らなくても良いと言う点ではむしろこちらの方法の方が良い場合もあるかもしれません。 Dependency Injection 的なね。
  • 但し、ダイナミックにライブラリを読み込ませるので、直でバイナリを弄るよりロード時間のパフォーマンスは下がります。 と言っても、今回のような場合では人間が感知出来るような差はないでしょう。

SIP

  • 生成したアプリを SIP 管理下の領域 — 今回の場合は /Applications/Utilities/Terminal.app — と「置き換える」必要がなければ、特に SIP を無効化する必要はありません。

GitHub

  • 因みにこれらは近い内に自動でライブラリを読み込むようにする Terminal.app を生成するスクリプトなりを作り、 GitHub にて公開予定です。

それでは皆さま、Happy Terminal.app Life!

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

Neo4j でcsvを読み込んでみた.

Neo4jとの格闘の日々

研究で,グラフデータを扱うことになり,先輩たちがNeo4jを使っていたという思考停止理論からNeo4jを使うことに.

特定のデータを使って,グラフデータにする必要があったため,csvファイルを作って,ダウンロードさせた

結構調べたけど,なかなか出てこなかったので,備忘録程度に記す.

事前準備

Neo4jをインストール

Macで,brewが入っているなら,

$ brew install neo4j

で一発

__workspace_apiecosystem_data_—_-zsh_—_zsh_—_Pro_—_ttys013_—_123×42_—_⌥⌘1_と_ダウンロード.jpg
こんな感じになればおけ

csvファイルを用意

とりあえず,やってみたとかだったら,kaggleとかからもってこればよし
いちおう,チュートリアル的なやつも用意されているらしい...

LocalファイルのDLを許可

初期設定では,Local環境にあるCSVファイルは読み込めない様になっているので,

$ sudo vim /usr/local/Cellar/neo4j/3.5.12/libexec/conf/neo4j.conf

で,設定ファイルを開き,

dbms.security.allow_csv_import_from_file_urls=true

に変更する.

Neo4jをブラウザで使用

普通にTerminalで,

$ Neo4j start

したあとに

$ open http://localhost:7474

でブラウザを開く
neo4j_bolt___localhost_7687_-_Neo4j_Browser.jpg

こんな画面が開けたらOK

あとは,ブラウザにサイファークエリを書き込んでいきます.

LOAD CSV

LOAD CSV WITH HEADERS FROM "file:///api-node.csv" AS csvLine CREATE (n:API {id: toInt(csvLine.API_id), name: csvLine.name, category: csvLine.API_category, date: csvLine.date})

ここで,注意してほしいのが,Local環境のcsvを読み込ませるときにそのcsvファイルを
/usr/local/Celler/neo4j/3.5.12/libexec/import/ 配下にすること

ここに配置しないとエラーが起こる.

こんな感じで使っていくと良いw

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

【Mac】2段階認証sshの設定からVSCode-Insiderの利用まで

踏み台サーバーへのログインを目的の使用サーバーに簡単にログインする方法.踏み台サーバーをサーバー1,目的のサーバーをサーバー2とする. ターミナルは2つ使用するため,それぞれを1,2とする.

環境

  • macOS Mojave 10.14.6

鍵の生成

以下のコマンドによりサーバー1の鍵を作成する.

Terminal1
$ cd ~/.ssh
$ ssh-keygen -t rsa -b 2048 -f /Users/Username/.ssh/keyname1

2点は適宜書き換え
- Username
- keyname1

以下のような表示が出るのでEnter×2(パスワードはなし)

Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

すると鍵が生成される

Your identification has been saved in /Users/Username/.ssh/keyname1.
Your public key has been saved in /Users/Username/.ssh/keyname1.pub.
The key fingerprint is:
・
・
・

これで
- keyname1
- keyname1.pub

が生成されるので同様にサーバー2の公開鍵を作成する.

Terminal1
$ ssh-keygen -t rsa -b 2048 -f /Users/Username/.ssh/keyname2
  • keyname2

これで
- keyname2
- keyname2.pub

が生成される.

鍵の配置と.ssh/config設定

ローカルからサーバー1に公開鍵を移動させる

Terminal1
$ cat keyname1.pub | ssh user@IP "mkdir -p ~/.ssh; cat >> ~/.ssh/authorized_keys"
  • keyname1
  • user@IP

サーバー1のパスワードを聞かれるので入力する.

airi@133.9.66.202's password: 

vimでconfigを作成・編集する.

Terminal1
$ touch config
$ vi config

以下のように書き込む.

.ssh/config
Host server1
Hostname IP1
User user
IdentityFile /Users/Username/.ssh/keyname1
  • user
  • Username
  • server1
  • IP1
  • keyname1

これで以下のコマンドでサーバー1にログインできる

$ ssh humidai

ターミナルをもう1つ開いてサーバー1にログインして鍵を確認する.

Terminal2
$ ssh humidai
$ cd .ssh
$ cat authorized_keys 

ssh-rsa...が入ってればok

次のコマンドで鍵をサーバー1に送信する.

Terminal1
$ scp keyname2.pub user@server1:/home/user/
  • keyname2
  • user
  • server1
Terminal2
$ cd ..
$ ls

これでkeyname2.pubが送信されてるかどうか確認できる.この鍵をサーバー2に送信したい.

Terminal2
$ scp keyname2.pub user@IP2:/home/user/
  • keyname2
  • user
  • IP2

パスワードが聞かれたらサーバー2のパスワードを答える

次にサーバー2にログインし,鍵の移動を行う.

Terminal2
$ ssh user@IP2
$ mkdir .ssh
$ cat keyname2.pub > ~/.ssh/authorized_keys

鍵の移動が終わったらvimでconfigを編集し,Hostを追加する.

Terminal1
$ vi config
.ssh/config
Host server1
・
・
・
Host server2
Hostname IP2
User user
IdentityFile /Users/Username/.ssh/keyname2
ProxyCommand ssh humidai nc %h %p
  • user
  • Username
  • server2
  • IP2
  • keyname2

これで以下のコマンドでサーバー2にログインできる.

$ ssh server2
  • server2

これが終わったらサーバー1・2からkeyname2.pubを削除すること.

$ rm betelgeuse.pub 

Minicondaのインストール

Minicondaのインストール

公式サイトでMiniconda Linux 64-bitをダウンロードする.

ダウンロードに保存した状態でサーバー2に送信する.パスは保存場所により適宜変更すること.

$ scp Downloads/Miniconda3-latest-Linux-x86_64.sh user@server2:/home/user
  • user
  • server2

送信後はファイルを実行する.

$ ssh server2
$ bash Miniconda3-latest-Linux-x86_64.sh 
  • server2

ひたすらエンター.以下の質問が出てきたらyesを答えれば良い.

Do you accept the license terms? [yes|no]

これにはそのままエンターでよかったはず.

Do you wish the installer to initialize Miniconda3
by running conda init? [yes|no]
[no] >>> 

次にpathの編集を行う.

$ vi .bashrc

ファイルの最後に以下を書き込む.

ssh/.bachrc
・
・
・
export PATH=/home/user/miniconda3/bin:$PATH
  • user

これでcondaが反応すれば完了!

$ source .bashrc
$ conda

Visual Studio Code Insiderの導入

参考にしたサイト

Visual Studio Code Insiderをダウンロード

ダウンロードできたら拡張機能検索窓でremote developmantを検索し,インストール.これで必要な拡張機能が一括でダウンロードされる.

Shift+Cmd+PでコマンドパレットからRemote-SSH: Connect to Hostを利用することで接続が可能.

ファイルの送受信について

  • ファイルの送信
    • scp ファイル名 送信先のアドレス:ファイルを保存するディレクトリ
  • ファイルの受信
    • scp とってくるところのアドレス:ファイル名 ファイルを保存するディレクトリ
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Mac × MAMP × Laravelで接続した時に起こった事

事象

・なんかLaravelインストールしたらMAMPの「MY WEBSITE」に接続できなくなった
 ※正確に言うと、「The requested URL /~ was not found on this server.」の404エラーが出ました。

原因

・Laravelインストールしたと思ったらできてなかった....
→composer導入した後に、インストールしたつもりになってた

・Laravel側で複数設定が必要なファイルに対して追加できていなかった。
 ■database.php
  →使用しているデータベースの情報を追加できていなかった

・MAMP側の設定ファイルでLaravelの追加ができていなかった
 ■httpd-vhosts.conf
  →設定されているPort番号がLaravelの行で設定している
   Port番号と一致していなかった。
   NameVitualHost *:oooo
   ※上記とここのファイルでLaravelの追加が必要
 ■httped.conf
  →ここでVitural hostsの下の行でコメントアウトされている文章の#を外す
   (ここは出来てきた)

所感

・ターミナル時にコマンド実行して大量のメッセージが流れた時に、
 読み取る前にやった気になってたかも
・MAMPを初めて導入した時より早く事象の解決が出来た気がした。

 //MAMP導入時→12,3時間くらい
 //今回→6,7時間くらい

参考元

PKunitoさんとCodedayの作者様、理解しやすい記事を作成いただいてありがとうございました。

・Laravel開発:1.環境構築をMAMPを使用して作成する
 https://qiita.com/PKunito/items/6a3bb187ca3c67de4519

・MAMPを使用してLaravelアプリをMySQLに接続する方法
 https://codeday.me/jp/qa/20190324/474003.html  

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

開発用Macの基本セットアップメモ

新Macに開発環境を構築するためのメモです。
※OSのバージョンにより、インストール途中にエラーが出る場合があり、その際にエラーメッセージでググればヒントが得られます。

Xcode

Xcode:アップルの統合開発環境(IDE)。
後のHomebrewをインストールするのに必要です。

App StoreからXcodeをインストール

インストールした後にライセンスに署名してインストールを完了させる。
$ sudo xcodebuild -licence accept

XcodeのCommand Line Toolsをインストール

$ xcode-select --install

★一旦Macを再起動

Homebrew

Homebrew:Mac用パッケージマネージャー。
インストールすればコマンド一つでアプリをインストールできるようになる。
インストールの人為ミスや以後のパッケージのメンテナンス手間を省ける。
http://brew.sh/index_ja.html
https://github.com/Homebrew/homebrew/tree/master/share/doc/homebrew#readme

Homebrewをインストール

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

備考:
+ ディフォルトのインストール先:/usr/local/Homebrew(現時点)
+ ディフォルトのコマンドの実行パス:/usr/local/bin
+ /usr/local/Homebrewでなくインストール先がを変更した場合は、コマンドの実行パスを通す必要があります。
※例えばbシェルの場合、
$ vi ~/.bash_profile
.bash_profile
export PATH=<実際のパス>

Homebrew Caskをインストール

Homebrew Cask:dmgファイルやpkgファイルになっているものを含めてGUIアプリをコマンド一つでインストールできるHomebrewの拡張機能。
$ brew install cask

Mac開発に必要or便利なパッケージをインストール

$ brew install composer
$ brew cask install visual-studio-code atom docker sourcetree sequel-pro cyberduck google-chrome firefox skype teamviewer gyazo avast-security

その他

隠しファイルをFinderに表示

$ defaults write com.apple.finder AppleShowAllFiles -boolean true
$ killall Finder

プリンターの設定

システム環境設定>プリンタとスキャナ>「+」で追加

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