- 投稿日:2020-05-21T23:41:13+09:00
【Python】スクリーンショットを撮る【Mac】
環境
macOS Mojave
Python 3.7.6動機
数多のスクリーンショットの取り方を見たが、全くわからない。
そもそも、このコードを入れるとかあるが、それがターミナルなのかコードで書けばいいのか全くわからなかったので備忘録も兼ねてここに書き連ねておく。スクリーンショットを撮る
はじめに
まずここで気をつけて欲しいことは、sshを通してやらないこと。(ここでかなり苦戦した)
環境構築の際にVagrantを使った人もいるかもしれないが、今回は使わないのでターミナル起動時の(base) 自分のMacの名前:ユーザー名$の状態になっていることを確認して欲しい。
次にpyautoguiのインストール
ターミナルに
pip install pyautoguiを打ち込む。
しばらくするとインストールが完了するので終わったら今度はテキストソフトでimport pyautogui screenshot = pyautogui.screenshot() screenshot.save('保存名.png')を打ち込んでscreenshot.pyで保存。(screenshotという名前でなくてもいい)
そしたらターミナルに戻り、python screenshot.pyと打ち込む。これでスクリーンショットが保存される。
注意点
screenshot.pyは自分のユーザーファイルに入れておく。
例えば、ターミナルに(base) mba:yamadatarou$と表示されているのならば、yamadatarouというフォルダに入れなければならない。
またスクリーンショットもそのフォルダに入っているので注意が必要。おわりに
研究でpythonを使うため初めて2日目の初心者だがwebを見て調べても何を言っているのかさっぱりわからなかったためこの記事を作成した。初心者なのでこの記事には至らぬ点も多いと思うが自分の備忘録兼同じ悩みを抱えているpython初心者の人の役に立てれば幸いだ。
それと勘違いして欲しくなのいのだが、参考記事の方が悪いのでなくPythonの理解が全くない自分が悪いということだけは覚えておいて欲しい。
#参考
【Python】スクリーンショットをとる
- 投稿日:2020-05-21T22:33:08+09:00
Mac にhomebrew caskでfira-codeフォントをインストールする
インストールメモ
MacのVisual Studio Codeで合字(リガチャ)フォントを使用したくて、Windowsでも使用している
fira-code
をインストールしようとしたのだが、ググって出てくる記事が古いのが多かったので、自分用メモhomebrewのバージョン
- 2.2.17
記事でよくみたコマンド
brew tap caskroom/fonts brew cask install font-fira-codeこのコマンドだと以下のエラーが出てしまうので、
Error: caskroom/fonts was moved. Tap homebrew/cask-fonts instead.正しくは
brew tap homebrew/cask-fonts brew cask install font-fira-codeこれにてインストール完了!
ってここまで書いて、ちゃんとエラーメッセージみれば答え書いてあるじゃん。。。
- 投稿日:2020-05-21T21:12:34+09:00
mac で現在 LISTEN しているポート番号を知る
mac で現在 LISTEN しているポート番号の一覧を見たい場合。
環境
- macOS Mojave version 10.14.6
- lsof revision 4.89
コマンド
$ lsof -iTCP -sTCP:LISTEN -P結果
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rapportd 356 egawata 3u IPv4 0xd68c30d678a3f317 0t0 TCP *:55070 (LISTEN) rapportd 356 egawata 4u IPv6 0xd68c30d67bdca4d7 0t0 TCP *:55070 (LISTEN) mysqld 622 egawata 27u IPv4 0xd68c30d665a35017 0t0 TCP localhost:3306 (LISTEN) mysqld 622 egawata 30u IPv4 0xd68c30d665a34697 0t0 TCP localhost:33060 (LISTEN) com.docke 70416 egawata 10u IPv4 0xd68c30d6795be017 0t0 TCP localhost:56632 (LISTEN)オプションの解説
-i
: 特定のインターネットアドレスにマッチするもののみ抽出インターネットアドレスとは、以下の形式で指定するもの。使いたい条件のみ指定すれば良い。
[46][protocol][@hostname|hostaddr][:service|port]
46
- IPv4, もしくは IPv6 のいずれかのみ
- 例:
-i4
protocol
TCP
UDP
のいずれかのみ- 例:
-iTCP
@hostname|hostaddr
- 特定の hostname もしくは address を持つもののみ。頭に
@
をつける。- 例:
-i@localhost
:service|port
- 特定のサービス あるいはポートのみ。頭に
:
をつける。- 例:
-i:3306
- 以上を組み合わせ、例えば
-iTCP:3306
のように指定しても良い。
-s
: 特定のプロトコルとステートを条件指定
-s(protocol):(state)
の形式。例:-sTCP:LISTEN
だと、TCP の LISTEN しているもののみ抽出される。
-P
: ポート番号を名前変換しない例えば
3306
をmysql
などと変換しない。
若干動作が早くなる。
- 投稿日:2020-05-21T20:42:50+09:00
初めてのPython ~コーディング編2~
対象者
前回の記事の続きです。
本記事では前回の記事のgraph_plot.pyを元に話題をPythonのリストや条件分岐、ループ処理に移していきます。
全部すっ飛ばしても大丈夫な人は不連続な関数を描こうへどうぞ。目次
Pythonのリスト
前回の記事では、Pythonには配列が存在しないと述べました。
その代わり、Pythonにはリスト(List)と呼ばれるデータ構造が標準搭載されています。
今回はそれについて少し触れます。リストとは
まずリストについて簡単な説明から行います。
list_sample.py
list_sample.pyx = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(x) x.append(10) print(x) #print(x + 3) # TypeErrorが起こる print(x + [3]) print(x * 3) x = np.array(x) print(x) x = list(x) print(x)リストは配列と似た概念で、次のように用いることができます。
list_sample.pyx = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(x)この
x
、numpy_calc.pyで定義したx
と出力結果が同じになっていることに気づきましたか?
つまり、リストと配列は似たデータ構造であることがわかります。
その最大の違いはデータサイズが可変であることです。list_sample.pyx.append(10) print(x)10が追加されましたね。
このappend
メソッドはリスト型のデータ構造が持っている関数1で、要素を追加するためのものです。
もちろんnumpy配列で同じことをしようとしてもエラーが出るだけです。
numpyでは一度定義した配列のサイズを変更するには(内部処理で)どこかに改めてコピーする必要があります。
その点リストは予め大きめにメモリを確保することで、要素を追加する際にかかるメモリ確保の時間を節約することができます。
要するにそれぞれメリット/デメリットがあるということです。
他にもリストには要素を削除する関数などもあります。
また、リストにはnumpy配列のブロードキャスト機能はありません。list_sample.py#print(x + 3) # TypeErrorが起こる
ただし次のようなことはできます。
list_sample.pyprint(x + [3]) print(x * 3)リスト同士の足し算であれば要素の追加になります。
リストと自然数の掛け算はリストそのものを数値の数だけ繰り返したリストとなります。2
その他の演算はTypeErrorが出てできません
さらに、numpy配列とリストは相互に変換もできます。list_sample.pyx = np.array(x) print(x) x = list(x) print(x)以上で本記事で必要なリストの知識の紹介はおしまいです。
要約すると
- リストはデータサイズが可変の配列のようなもの
- numpyとリストは相互に変換できる
だけ知っておけば本記事ではOKです。
条件分岐とループ処理
条件分岐とは「ある条件を満たすなら〇〇、そうでなければ××」という処理のことです。
(この処理は人間の意思決定とも似ているところがありますね)
ループ処理とは「ある条件を満たすまで同じ処理を繰り返す」という処理のことです。
(これは機械っぽい処理ですね)では具体的にどのようにコードを書くのか、実際にやっていきましょう。
if
文Pythonの条件分岐と言えば
if
文だけ3です。
C言語などをやったことのある人は「え、switch
とかないの?」と思うかもしれませんね。
Pythonではswitch
文の類はありません。いちいち書かなければいけません。面倒ですね。
初めての人にとっては覚えることが減ってラッキーかもしれません笑。
とりあえず、この条件分岐を使ってみましょう。
if_sample.py
if_sample.pyx = 5 if x > 0: # 条件式x > 0が真ならばここの処理 print("xは0より大きいです。") else: # 条件式x > 0が偽ならばここの処理 # つまりx <= 0ならばここの処理です if x == 0: # 条件式x == 0が真ならばここの処理 # <note> # ==は式の両辺が等しいか、という条件式です # 逆に、式の両辺が等しくないか、という演算は!=です print("xは0です。") else: # 条件式x == 0が偽ならばここの処理 # つまり、x != 0ならばここの処理です print("xは0より小さいです。") if x > 0: print("xは0より大きいです。") elif x == 0: print("xは0です。") else: print("xは0より小さいです。")この二つの
if
文は全く同じ動作をします。
上の方はif else
のみ、下の方はif elif else
という文法を使って書いています。
見ての通りですが、if
文の中にif
文を書く(ネストする、といいます)ことができます。
もちろんもっとたくさんネストさせることも可能ですが、読みにくくなってしまうのでできるだけネストは少なめにするよう心がけましょう。
つまり下の方が読みやすいコードということですね。文法まとめ
if_grammer_summary.pyif (条件式1): # (条件式1)が真(True)ならここに記述された処理を実行 #-----ここから----- elif (条件式2): # (条件式1)が偽(False)で(条件式2)が真(True)ならここに記述された処理を実行 elif (条件式3): ... else: # 全ての条件式が偽(False)ならここに記述された処理を実行 #-----ここまで----- # 全て省略可能です。つまり最初のifだけでもOK。
for
文とwhile
文続いてループ処理です。
Pythonのループ処理にはfor
とwhile
の二つがあります。
二つある理由はたまに使い分けたいことがあるからですが、for
文をwhile
文に、while
文をfor
文に、等価な処理を行うように変換できますのでお好みで...と言いたいですが、基本的にfor
文を使うことを個人的にオススメします。
理由は後ほど...
for
文まずは
for
文から。
for_sample.py
for_sample.pyfor i in range(10): print(i) print("----------") for i in range(1, 10): print(i, end=" ") if i > 5: print("\n{} > 5".format(i)) print("ループを抜けます") break else: print("この文は出力されません。")さて、上の方の
for
文は0〜9まで、縦に並べて出力されます。
下の方は6までが横に並べて出力されて、「6 > 5」「ループを抜けます」と出力されて終わるはずです。
(ついでなのでいくつか紹介していない関数などを使っています。気になった方はググってみましょう。)
for
文は文法を見た方がわかりやすいですね。for_grammer_summary.pyfor (変数名) in (配列やリストなど): (繰り返したい処理をここに書く) else: (ループが正常に終了した場合の処理やループが1度も実行されなかった時に行いたい処理をここに書く)
range
関数は指定された数までのリストのようなもの4を返します。
break
文はループを強制的に抜けるためのものです。
for
文では、(配列やリストなど)で指定された数値が順番に(変数名)に代入されて処理が行われます。for_sample.pyの一つ目のループでは
- 変数
i
に0
が代入される0
が出力される- 変数
i
に1
が代入される1
が出力される- ...
のように処理が進みます。
二つ目のループは
for else
文の紹介のために書きました。
Pythonでは他の言語には滅多にない、ループ処理にelse
を使うことができます。
else
の中には、ループが正常に終了した時に行って欲しい処理を書きます。
つまり、break
文でループを強制的に終了した場合はその処理が行われません。
あまり積極的に使うことはありませんが、ネストされたfor
文を全て抜けたい時などによりスッキリしたコードを書くことができます。
nested_for.py
nested_for.py# elseあり for i in range(10): for j in range(10): print(i, j) if i * j > 10: # i = 2, j = 6でここに入ります break else: continue break # elseなし flag = False for i in range(10): for j in range(10): print(i, j) if i * j > 10: # i = 2, j = 6でここに入ります flag = True break if flag: break
continue
文は以降の処理をスルーして次のループに移るためのものです。
while
文次は
while
文です。
while_sample.py
while_sample.pyi = 0 while i < 10: print(i) i += 1 print("----------") i = 0 while i < 10: print(i, end=" ") if i > 5: print("\n{} > 5".format(i)) break i += 1 else: print("この文は出力されません")このwhile_sample.pyはそれぞれfor_sample.pyと等価なループ処理となっていることが確認できると思います。
while
文の文法は次の通りです。while_grammer_summary.pywhile (条件式): (繰り返したい処理をここに書く) else: (ループが正常に終了した場合の処理やループが1度も実行されなかった時に行いたい処理をここに書く)
while
文の特徴は条件式が満たされる限りループ処理をすることですね。
for
文では予めループする回数が決まるのに対して、while
文は不定なことがあるのが大きな違いです。
これが個人的にwhile
文を使わないようにして欲しい理由につながります。while_sample.pyの一つ目のループを以下のように変更して実行すると大量の
0
が出力され続けます。
<<注意>>
実行する場合は止め方をよく頭に入れておいてください。while_sample.pyi = 0 while i < 10: print(i) #i += 1<<止め方>>
上部の■をクリックすれば止まります。
jupyter notebookでは簡単な操作で実行を中断できるので便利ですね〜
変数
i
の値が変わらないためにいつまでも条件式i < 10
が満たされ続けてしまい、処理が無限に行われてしまうためこのようなことが発生します。
このような状況を無限ループと言います。
今回は一生懸命書いたコードがなぜかエラーで動かない!
ではなく
一生懸命書いたコードがエラーもないのに反応しない!という状況になります。
初心者の頃は無限ループなんてそう簡単には気づけないためずーっと頭を悩ませることになりかねません。
以上の理由から、while
文でなければ書けないようなループはまずないでしょうから、基本的にfor
文を使用するようにしましょう。不連続な関数を描こう
長くなりましたが、条件分岐とループ処理を用いて不連続な関数を書いてみましょう!
graph_plot.pyの関数f
の部分を次のように変更しましょう。graph_plot.py# リストを用いたバージョン def f(x): result = [] for i in x: if i < 0: result.append(i + 3) else: result.append(i ** 2) return resultgraph_plot.py# numpy配列を用いたバージョン def f(x): result = np.zeros(len(x)) for i in range(len(x)): if x[i] < 0: result[i] = x[i] + 3 else: result[i] = x[i] ** 2 return resultめんどくさい?
めんどくさいって?間違いない。
ということでスマートな書き方も紹介しておきます。graph_plot.pydef f(x): return np.where(x < 0, x + 3, x ** 2)numpyの
where
関数は俗にいう三項演算子というやつです。
詳しくはググりましょう。
ちなみに頑張れば標準の書き方でもそれなりにスマートになります。graph_plot.pydef f(x): return [i + 3 if i < 0 else i ** 2 for i in x]リスト内包表記と
if
文の三項演算子を組み合わせたものですね。list_comprehension_grammer.py[(処理) for (変数名) in (配列やリストなど)]ternary_operator_grammer.py(条件式が真の時の処理) if (条件式) else (条件式が偽の時の処理)とはいえ読みにくいし複雑です。
パッケージの偉大さがよくわかります。初めてのPythonシリーズ記事
- 投稿日:2020-05-21T18:29:40+09:00
macOS Catalina で "エラー: メイン・クラス○○が見つからなかったかロードできませんでした" と言われたら
今回はMacOSさんがとっても優秀過ぎて勝手に沼にハマった私の備忘録です。
環境
macOS Catallina
なにがあったか
私が久しぶりにJavaのソースコードを書いていてターミナルからコンパイルしたくなった時のことです。
javac -cp "classpathをいろいろ" -d 出力先ディレクトリ ./package名/Example.javaと普通に打ちます。
classファイルが生成されます。
ここまでは順調でした。$ cd 出力先ディレクトリ $ java package名/Example エラー: メイン・クラスExampleが見つからなかったかロードできませんでしたorz
やらかしました。
いろいろ調べた結果、最終的には事なきを得たのでよくあるパターンと共に記事にしてみました。
(後の伏線になるのですが、今回私はDesktopディレクトリ以下で作業していました。)
同じことやらかした人に届けこの想い…。Pattern1 ディレクトリ構成が違う
今回
調子に乗ってsrcディレクトリとbinディレクトリに分けていて、
さらにパッケージも分けていましたので、まずディレクトリ構成からです。これを最初にやっておくとエラー様の言う通り(場所の勘違いなどから)本当にclassファイルがない場合もここで発覚します。
project/ ├src/package名/ │ └─Example.java └bin/package名/ └─Example.class問題なかったです。
Pattern2 mainメソッドが無い
java
で実行するclassにはmainメソッドが必須です。
たまに書いてなくておなじみのエラーを出している人を見ます。Pattern3 環境変数CLASSPATH
私は使ったことなかったので意識したことなかったですが、これを下手に設定して失敗するパターンもあるようです。
$ echo $CLASSPATH $まぁ使ったこと無いので当然ですけど大丈夫でした。
ここまで来るとなにがいけないのか。。。
Pattern4 macOSさんかしこい
いろいろ試して疲れた頃、(そもそもこんなに発覚しないことある…?)o.(;´Д`)とか思いだしました。
そこで、まさかと考えて「システム環境設定」→「セキュリティとプライバシー」を見ると
こいつぁひでぇや!
はい解決です。まとめ
皆さんはこんなしょうもない設定してないと思うのですが、ネットで
"エラー: メイン・クラス○○が見つからなかったかロードできませんでした"
について調べても解決できず、エラーも権限の問題なのにそれがわかりにくかったので、後に現れるかもしれない私と同じミスをする人のために書いてみました。
- 投稿日:2020-05-21T13:13:06+09:00
初めてのPython ~コーディング編~
対象者
前回の記事の続きです。
本記事ではプログラミング初めての方を対象としていますので、ある程度他のプログラミング言語を嗜んでいらっしゃる方は初めてのPythonまで読み飛ばしてください。目次
プログラミングとは
プログラミングを始めようとしているあなたにとって、プログラミングとは一体何でしょうか?
「IT業界が今後伸びそうだな〜」「プログラマとかシステムエンジニアとか需要ありそうだな〜」と思って闇雲に勉強を始めようとしていませんか?
それは挫折フラグです。
例えば受験勉強で、目標・目的がないまま勉強して辛かった思い出とかありませんか?
人間、目標がないと興味ややる気が続かないものです。
なのでまずはなんでもいいので目標を決めましょう。
例えば
- 機械学習・深層学習について知っていきたい
- 数値計算で偏微分方程式を解いて、可視化してみたい
などの、難易度の高いものである必要はありません。
もっと簡単に、
- いろんなグラフを表示してみたい
- ゲームを作ってみたい
- 100行くらいのコードを書いてみたい
のような、ふとした思いで十分OKです。
プログラミングとは手段です。それを忘れないようにしましょう。
プログラミングで大切なこと
プログラミングをする上で最も大切なことは何だと思いますか?選んでみてください。
(チェックボックスはチェックできませんので注意笑)
- センス
- 創作意欲
- 勤勉さ
- 新しいもの・技術への興味
- 大規模なコードを書ける体力
- 読みやすいコードを書くこと
- google先生に聞く力
選んだらここをクリック
あくまで個人的にですが、最後の「google先生に聞く力」だと思っています。
もちろん上記全て大切です。それでも、自分一人で解決できない問題に苦しんだ時にその解決策を知る手段を調べたり、今自分が取り組んでいる課題に対してよりスマートに解決する手段はないか調べたりする能力というのは、プログラミングを継続していくためには重要ではないでしょうか。
「好きこそ物の上手なれ」1とか昔の人も言ってますしね。
ということで、google先生をフル活用する方法を少しご紹介します。
google先生の使い方
エラーで困った時
まずはエラーで困った時の調べ方です。
もちろんエラー文を読み解いて原因を探り解決できるのが最もいいでしょうが、どうしても自分ではさっぱりわからないことも多いです。
そんな時はエラー文をまるっとコピペしてgoogle先生に聞いてみましょう。
Pythonのエラーの場合は「〇〇Error: [エラー文]」などとなっている部分をコピペします。
すると、大抵誰かが同じ悩みでどこかに相談していて、既に誰かが解決しています。
(英語のサイトしかヒットしない場合もありますが、それすらもgoogle先生は翻訳という解決策を提示してくれる有能っぷり笑)
ちなみに、エラー文の「〇〇Error」の部分だけで検索するとそのエラーについて包括的に知ることができるので勉強になります。課題解決
あなたが今取り組んでいる課題が一見複雑そうに見える時、例えば解決策はわかるがコードが長くなるとか、いまいちパッとしない、そんな時はキーワードで検索しましょう。
あなたの課題を端的に3単語くらいで表すならどうなるかを考えて、3単語程度(必要なら増やしましょう)で検索をしてみましょう。
最初の単語は使用しているプログラミング言語を入れましょう。そしてそれを除いた3単語で検索します。
きっと誰かがスマートな解決策を提示してくれていますよ!例:複数のグラフを一つにまとめて表示したい!
→ python グラフ 複数 表示
初めてのPython
さて、ようやくコーディングに移ります(長々と申し訳ない...)。
大抵のプログラミング入門書や入門サイトではまず条件分岐(多くはif
文など)やループ処理(多くはfor
文やwhile
文など)を取り扱っていると思います。
ですが、ここでは最初に別のトピックを扱いたいと思います。
理由は簡単、面白くないからです。
ぼくが初めてプログラミングに触れたのは高校1年生の頃だった気がしますが、秒で飽きました。はい。
if
文?for
文?はぁ?で、何ができるの?って感じで、先が見えなかったことが原因かなぁと思ってます。
あとシンプルな出力(Hello worldとか)以上のことがあまり出てこなかったからでしょうか。
要するに地味なんですね。
ということで、本記事では最初にnumpyの使い方をスーパー簡単に紹介したら、いきなりグラフ描きます。numpyの使い方
numpyは他の多くのプログラミング言語には標準搭載されている配列というデータ型が存在しません2。
numpyはPythonで配列を使えるようにするパッケージだという認識で最初は構わないでしょう(実際はもっと色々できます)。
何はともあれ実践あるのみ。
numpy_calc.py
numpy_calc.pyimport numpy as np # 配列を生成 x = np.arange(10) print(x) # 足し算 print(x + 3) # 引き算 print(x - 3) # 掛け算 print(x * 3) # 割り算 print(x / 3) # 累乗 print(x ** 3) # 割った時の商 print(x // 3) # 余り print(x % 3)とりあえずよく使う演算子の計算を紹介しました。
(他にどんな演算子があるのか気になる人はググってね?)
ここでは実はnumpyの便利な機能であるブロードキャストというものが使われています。
ブロードキャストとは、簡単にいうとサイズの違う配列同士や配列と数値(スカラ値)の演算の際に、勝手にサイズを合わせて計算してくれる機能です。
つまり先のnumpy_calc.pyでは配列と数値の演算なので、数値の方が配列の方にサイズを合わせて計算していることになります。
もっと噛み砕いていうと、出力結果を見たらわかる通り最初の配列x
の全要素にそれぞれ3が足されたり引かれたりされていると思います。グラフを描く
はい、もうグラフを描いちゃいます。
とりあえず以下のコードをjupyter notebookの新規セルにコピペ&「Shift+Enter」で実行しましょう。
graph_plot.py
graph_plot.py# グラフを表示してみる import matplotlib.pyplot as plt import numpy as np def f(x): return x ** 2 x = np.arange(-3, 3, 0.1) y = f(x) plt.plot(x, y) plt.show() # HW0. 色々調べる(defとは? np.arangeとは? plt.plotとは? etc.) # HW1. グラフにタイトルを追加する # HW2. グラフに凡例を追加する # HW3. グラフにx軸ラベルとy軸ラベルを追加する # HW4. グラフの線の色を変える # HW5. なんかグラフ色々書いてみる(読みやすくするための空行やコメントを除けば)たったの8行で二次関数のグラフが描けましたね!
様々なパッケージを用いるとこんなに簡単に色々できるのがPythonの強みです。ところで...コード中にコメントで書かれているHWですが、勉強がてらgoogle先生に聞きながらやってみてください。
解答の一例も載せておきます。
何ができるのか、どうやって動いているのか、どういうことをしている人がいるのか、 etc.
色々考えながら調べ尽くしてみてください。
解答一例はこちら
graph_plot.py# グラフを表示してみる import matplotlib.pyplot as plt import numpy as np def f(x): return x ** 2 - x + 2 x = np.arange(-3, 3, 0.1) y = f(x) plt.plot(x, y, label='hoge', color='red') plt.title('test plot') plt.legend() plt.xlabel('x') plt.ylabel('y') plt.show() # HW0. 色々調べる(defとは? np.arangeとは? plt.plotとは? etc.) # def: 関数の定義のためのビルドイン # np.arange: 配列を生成する関数。他にも色々ある # plt.plot: グラフを生成する関数。表示するわけではない # HW1. グラフにタイトルを追加する # HW2. グラフに凡例を追加する # HW3. グラフにx軸ラベルとy軸ラベルを追加する # HW4. グラフの線の色を変える # HW5. なんかグラフ色々書いてみる初めてのPythonシリーズ記事
- 投稿日:2020-05-21T10:18:34+09:00
北陽電機 URG-04LX-UG01 mac コンソールで通信してみた
北陽電機 測域センサをmac コンソールで通信
測域センサをROSなどを使って使用することが一般的になっているが、動作チェックをしたくて、SCIP2.0(シリアル通信ベース)やってみようとしたら、ハマった。
なんとか通信チェックができたので、関連記事などを まとめておく.手順
- ひとつめのターミナル1を開く
[terminal:1] sudo stty -f /dev/cu.usbmodem14101 raw 19200 cat /dev/cu.usbmodem14101
- ふたつめのターミナルを開く
[terminal:2] cat - > /dev/cu.usbmodem14101以下は、このふたつめのターミナル2にSCIP2.0のコマンドなどを打ち込むとひとつめのターミナル1に返答がかえってきた。
例えば、以下のようにターミナル2に入力すると[terminal:2] SPIC2.0ターミナル1には以下のような返答が帰ってきた。
[terminal:1] SPIC2.0 0Ee同様に、一箇所だけスキャンするコマンドをターミナル2から送信すると
[terminal:2] MD0384038400001やったー!
[terminal:1] MD0384038400001 00P MD0384038400000 99b 8C?6` 00e5やった〜!
ひさしぶりに、かなり、うれしい!ハマった原因
- tty.usb*** ではなく cu.ubs*** で接続する
参考になったサイト
関連サイト
著者の関連ページ
- 投稿日:2020-05-21T01:55:11+09:00
Mac 初期セットアップ
新しい MacBook Pro 13インチがもうすぐ届くので、改めて Mac の初期セットアップでやることをまとめておく。
システム設定
トラックパッド
- 軌道の速さを最大にする
キーボード
「キーボード」タブ
- キーのリピート : 最速
- リピート入力認識までの時間 : 最短
- Touch Bar に表示する項目 : F1、F2 などのキー
- 修飾キー : Caps Lock キーを Control に設定する
「ショートカット」タブ
- 入力ソース > ショートカットを無効にする
- スクリーンショット > 「ファイルとして保存する」ほうを ctrl キーありのキーにする
Spotlight
「検索結果」を以下の項目だけ有効にする
- アプリケーション
- システム環境設定
日付と時刻
- 「秒を表示」にチェックする
Dock
- 「Dock を自動的に表示/非表示」にチェック
- 「最近使ったアプリケーションを Dock に表示」のチェックをはずす
一般
- 「スクロールバーの表示」を「常に表示」にする
ソフトウェアのインストール&設定変更
Google Chrome
ダウンロードリンク : https://www.google.com/intl/ja_ALL/chrome/
Clipy
ダウンロードリンク : https://clipy-app.com/
My Snippets をインポート : https://github.com/y-u-t-a/clipy-snippets設定
- ショートカット > メイン を「option × 2」に設定
SF Mono(フォント)
ターミナルに使用するフォント
ダウンロードリンク : https://developer.apple.com/fonts/iTerm2
ダウンロードリンク : https://www.iterm2.com/
My Profile をインポート : https://github.com/y-u-t-a/iterm2-profile設定
- Preferences > General > Window にて Adjust window when changing font size を OFF にする
Docker Desktop for Mac
ダウンロードリンク : https://hub.docker.com/editions/community/docker-ce-desktop-mac/
VisualStudio Code
ダウンロードリンク : https://code.visualstudio.com/
Setting Sync で設定を同期することもできるが、あえて1からセットアップする。
拡張機能
- Bracket Pair Colorizer 2
- Code Runner
- Draw.io Integration
- GitHub Theme
- google-search
- Material Icon Theme
- Remote Container
設定
- "diffEditor.ignoreTrimWhitespace": false
- "editor.fontSize": 13
- "editor.mouseWheelZoom": true
- "editor.renderWhitespace": "boundary"
- "editor.tabCompletion": "on"
- "workbench.editor.enablePreview": false
- ↑ ファイルを常に新しいタブで開く設定
- "workbench.startupEditor": "newUntitledFile"
- "window.zoomLevel": 1
- "files.autoSave": "afterDelay"
- "files.defaultLanguage": "markdown"
- "explorer.confirmDelete": false
- "explorer.confirmDragAndDrop": false
- "extensions.ignoreRecommendations": true
- "terminal.integrated.copyOnSelection": true
- "terminal.integrated.fontSize": 13
GitHub Desktop
ダウンロードリンク : https://desktop.github.com/
HyperSwitch
ダウンロードリンク : https://bahoom.com/hyperswitch
設定
- Include windows from other spaces をチェック
- Include windows from other screens をチェック
- 投稿日:2020-05-21T00:12:49+09:00
初めてのPython ~環境構築編~
対象者
プログラミング始めたいな〜と思っているMac使用者の方向け
目次
環境構築
プログラミング始めたいな〜という人が1番最初に遭遇する難関である環境構築について、できるだけ噛み砕いて説明します。
pipのインストール
pipとはpythonを使う上で最大のメリットであるパッケージ1をターミナルからコマンド一つでインストールすることが可能になるツールです。
自作パッケージをローカルな環境で使うこともできるし、公開することもできます。
とりあえず便利なのでインストールしましょう。Pythonが既にインストールされていることが前提ですが、Macには標準でインストールされているはずです。されていない場合はこちらなどを参考にインストールしましょう。
Python3がインストールされていない場合も、せっかくなのでインストールしておきましょう。方法1 サイトから入手
pipのインストールにはget-pip.pyというファイルが必要です。
これをインターネットのサイトから直接入手する方法を紹介します。
まずは公式サイトに移動して下の画像のget-pip.pyを右クリック(トラックパッドでは二本指でタップ)して「リンク先のファイルをダウンロードする」をクリック(直リンク)。
次に、ダウンロードしたファイルのある階層に移動します。
ターミナルに次のコマンドを打ち込みましょう($は「ターミナルに入力する」ということを明示するためのものですので入力する必要はありません)。$ cd ~/Downloads最後に、ターミナルに次のコマンドを入力すればOK。
$ python get-pip.py方法2 ターミナルで全部済ませる
これも簡単です。
次のコマンドをターミナルに順番に打ち込んで実行すればOK。$ cd $ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py $ python get-pip.pyインストールを確認
次のコマンドを入力してインストールできているか確認しましょう。
$ pip -V入れておきたいパッケージはこちらなどを参考にして、自分が必要だと思うものを入れましょう。
get-pip.pyはもう不要なので削除しても構いません。jupyter notebookのインストール
初学者にオススメなのがjupyter notebookです。
理由は
- jupyter notebookをインストールした時点で色々パッケージが入っている
- インタラクティブ(対話)型に近い
- エディターに迷ったり悩んだりする必要がない
などです。
中級者以上や機械学習(特に深層学習:ディープラーニング)を勉強したい!となったらgoogle colaboratoryなんかもオススメです。
とりあえずここではjupyter notebookをインストールしていきます。
次のコマンドをターミナルに打ち込みましょう。次のコマンドではPCに登録されている全てのユーザが使える場所にpipがインストールされます。基本的に問題はありませんが、もし今ログインしているユーザだけが使えるようにしたければ
$ pip install jupyter —userとしてください。
$ pip install jupyter WARNING: The scripts jupyter-bundlerextension, jupyter-nbextension, jupyter-notebook and jupyter-serverextension are installed in '/Users/[ユーザ名]/Library/Python/[Pythonのバージョン番号]/bin' which is not on PATH. $ export PATH="/Users/[ユーザ名]/Library/Python/[Pythonのバージョン番号]/bin/:$PATH"[]の日本語部分はお使いのMac毎に異なります。
[ユーザ名]がわからない場合は次のコマンドをターミナルで実行すれば$ pwd /Users/[ユーザ名]などと出るでしょう。
定番Hello world!
さて、ここまでで(たぶん)環境構築が完了2しましたね!
ではでは、プログラミング初学者がまず真っ先にするであろうHello world!を表示させてみましょう。
まずはターミナルで次のコマンドを実行しましょう。$ mkdir my_notebook $ cd my_notebook $ jupyter notebookするとSafari(デフォルトの検索エンジン)で下の画像のようにjupyter notebookが立ち上がると思います。
では新規ファイルを作成しましょう。
下のGIFの通り、「New ▼ → Python3」と選択しましょう。
すると新規ファイルが出来上がります。
あとは最初のセル(入力欄のこと)にHello.pyprint(“Hello world!”)と入力してキーボードの「Shift」キーを押しながら「Enter」キーを押しましょう3。
最後に名前を変更して終了です。
ということで、Hello Python World!初めてのPythonシリーズ記事
参考