20201127のMacに関する記事は17件です。

pythonによるスクレイピング&機械学習をtensorflow2で動かしてみた

前提条件

対象

この記事は、Webエンジニア向けです。
私自身Webプログラマでして、機械学習を仕事に活かせないかと考えるために勉強しつつ書いたものになります。
それと、「pythonによるスクレイピング&機械学習」に沿って書くので、本の補足のつもりでみてください。

環境

・PC : Macbook pro
・OS : Catalina(10.15.7)
・言語 : python2.7.16
・エディタ : jupyter(せっかくなので使いましょう、便利です)
pythonやライブラリのインストールは、つまづいた記憶もないのでここでは省きます。

お願い

あなたに感想や要望を書いて頂けると主が喜びます。ぜひ気軽にコメントしていってください。
もっとシンプルな方法があれば教えてください。

レッツ機械学習

tensorflow2(以下、tf2)の便利技

基本的にtf2は、無印の動作もできます

sess = tf.compat.v1.Session()
sess.run(tf.global_variables_initializer())

本をよみながら、うまくtf2の書き方にできない時は、これで誤魔化しましょう

5-4をtf2でやってみる

src/ch5/placeholder1.pyをtf2化
著作権上元コードは乗せてません

import tensorflow as tf

#メソッドで制御
#noneを指定してあげると、配列が可変となる
@tf.function(input_signature=[tf.TensorSpec([None], tf.int32)])
def hoge(a):
    b = tf.constant(2)
    return a * b

#.numpy()で数字の部分だけとれる
print( hoge(tf.constant([1,2,3])).numpy() )
print( hoge(tf.constant([10,20,30])) )

結果

[2 4 6]
tf.Tensor([20 40 60], shape=(3,), dtype=int32)

簡単な解説
このメソッド自体は
元のコードでは、メソッドではなくsession.runで動作してます。
tf2ではsessionは使わなくてよくなったので、シンプルに作れます。

まず、元のコードではrun時に値を代入していますが、私はメソッドに引数を渡して、動作させてます。
@tf.function(input_signature=[tf.TensorSpec([None], tf.int32)])
この定義により引数の型を決めています。もちろん複数定義もできます。

その後は、元コードと同じように配列の掛け算を行って表示してます。

まとめ

短いですが、tf2のさわりはこんな感じです。
1.sessionは必要ない
2.メソッドを作りやすくなった
それ以外にももちろん機械学習において便利になった点もあるので、
この本を元に今後アップしていけたらと思います。

ありがとうございました。

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

Karabiner-ElementsでMajestouch StingrayをMac風キーボードにする

スクリーンショット 2020-11-27 20.37.44.png

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

[自分用メモ]Karabiner-ElementsでMajestouch StingrayをMac風キーボードにする

スクリーンショット 2020-11-27 20.37.44.png

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

README.org

Mac OS-11.0.1 ruby-2.6.6p146

第10回 <2020-11-30 月>

フィボナッチ

第9回 <2020-11-18 水>

assert_equal

第8回 <2020-11-11 水>

条件分岐

第7回 <2020-11-04 水>

条件分岐

第6回 <2020-10-28 水>

変数とかメソッドとか

第5回 <2020-10-21 水>

第1回目から第4回目までは環境構築だったり、gitだったりでした。今回の第5回からようやく本格スタート

README_links <2020-10-14 水>

README.org

equation <2020-10-28 水>

$$\frac{1}{4}$$


  • source ~/Library/Mobile Documents/com~apple~CloudDocs/KG/class/M1/multi_scale_sim/grad_members_20f/members/ryomichi56/README.org
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

第8回

Mac OS-11.0.1 ruby-2.6.6p146

Rake

本記事は大学院前期過程の講義[マルチスケールシミュレーション特論]に関する記事です

自動化

rake とは?

make とかのRuby版。Rakefile の記述に沿って、自動で処理を行ってくれる。うん、単純。講義で扱った例を見てみる。

task :default do
  system 'rake -T'
  exit
end

desc 'hello NAME'
task :hello do
  name = ARGV[1]
  puts "Hello #{name}!"
  exit
end

意味解説

上記例を読み解いていく。まず、これの実行は

$ rake

すると、このような出力を得る。

rake hello  # hello NAME

これは、引数なしで実行した時の動作(default)が rake -T を実行するようにRakefileで記述されているからである。 rake -T はRakefileに記述されているタスク一覧を表示するコマンドである。詳しい記述法は以下である。

  • descの後にはrake -Tとした時の説明文(description)
  • :defaultはrakeが引数なしで呼ばれた時の動作
  • それ以外はoptionで呼ばれるtaskの名前
  • taskの中には標準のruby言語で,動作を記述

いざ、実践!

desc 'git push'
task :push do
  ["git pull origin main",
    "git add -A",
    "git commit -m \'hoge\'",
    "git pull origin main",
    "git push origin main"].each do |comm|
    puts comm.green
    system comm
  end
  exit
end

かなり罪深い。gitの一連の流れを自動化してしまった。コミットのコメントなんて、毎回同じやし。まぁいいか。本番環境ではダメ、ゼッタイ。いや、こうしよう。

desc 'git push'
task :push do
  com = ARGV[1]
  ["git pull origin main",
    "git add -A",
    "git commit -m \'"+com+"\'",
    "git pull origin main",
    "git push origin main"].each do |comm|
    puts comm.green
    system comm
  end
  exit
end

これによって、

rake push "mod"

としたらコミットメッセージも変更できる。便利。


  • source ~/Library/Mobile Documents/com~apple~CloudDocs/KG/class/M1/multi_scale_sim/grad_members_20f/members/ryomichi56/./qiita/no8.org
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

第8回、Rakeで作業自動化

Mac OS-11.0.1 ruby-2.6.6p146

Rake

本記事は大学院前期過程の講義[マルチスケールシミュレーション特論]に関する記事です

自動化

rake とは?

make とかのRuby版。Rakefile の記述に沿って、自動で処理を行ってくれる。うん、単純。講義で扱った例を見てみる。

task :default do
  system 'rake -T'
  exit
end

desc 'hello NAME'
task :hello do
  name = ARGV[1]
  puts "Hello #{name}!"
  exit
end

意味解説

上記例を読み解いていく。まず、これの実行は

$ rake

すると、このような出力を得る。

rake hello  # hello NAME

これは、引数なしで実行した時の動作(default)が rake -T を実行するようにRakefileで記述されているからである。 rake -T はRakefileに記述されているタスク一覧を表示するコマンドである。詳しい記述法は以下である。

  • descの後にはrake -Tとした時の説明文(description)
  • :defaultはrakeが引数なしで呼ばれた時の動作
  • それ以外はoptionで呼ばれるtaskの名前
  • taskの中には標準のruby言語で,動作を記述

いざ、実践!

desc 'git push'
task :push do
  ["git pull origin main",
    "git add -A",
    "git commit -m \'hoge\'",
    "git pull origin main",
    "git push origin main"].each do |comm|
    puts comm.green
    system comm
  end
  exit
end

かなり罪深い。gitの一連の流れを自動化してしまった。コミットのコメントなんて、毎回同じやし。まぁいいか。本番環境ではダメ、ゼッタイ。いや、こうしよう。

desc 'git push'
task :push do
  com = ARGV[1]
  ["git pull origin main",
    "git add -A",
    "git commit -m \'"+com+"\'",
    "git pull origin main",
    "git push origin main"].each do |comm|
    puts comm.green
    system comm
  end
  exit
end

これによって、

rake push "mod"

としたらコミットメッセージも変更できる。便利。


  • source ~/Library/Mobile Documents/com~apple~CloudDocs/KG/class/M1/multi_scale_sim/grad_members_20f/members/ryomichi56/./qiita/no8.org
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

第7回

Mac OS-11.0.1 ruby-2.6.6p146

条件分岐

本記事は大学院前期過程の講義[マルチスケールシミュレーション特論]に関する記事です

if-elsif-else-end

お題

閏年の判定。テストする年は 2004, 1999, 1900, 2000 この4つで。

Ruby での条件分岐

Ruby のリファレンシャルマニュアルにはこう書かれている。

if  [then]
   ...
[elsif  [then]
   ... ]
...
[else
   ... ]
end

[]は省略可能を意味する。注意すべきは else if でなく elif でもなく elsif であることくらいで、そんなに目新しいことはない。 then も省略できるし簡単そう。けど上のマニュアルの記述はわかりずらいので例を出していく.

類題を解く

  • 2004年は?

A. 閏年である。4で割り切れるから。その条件分岐を書くには?

p year = ARGV[0].to_i
if year % 4 == 0
  p true
end

上のコードは実行時に引数を受け取って実行すると、引数をIntegerに変換して4で割った余りが0かどうかを判断して、そうであれば true を返す。

  • 1999 はfalse
p year = ARGV[0].to_i
if year % 4 == 0
  p true
else
  p false
end

簡単!

  • 1900年は?

A. Not 閏年。100で割り切れるから。

p year = ARGV[0].to_i
if year % 100 == 0
  p false
elsif year % 4 == 0
  p true
else
  p false
end
  • 2000年は?

A. 閏年。400で割り切れるから。

p year = ARGV[0].to_i
if yeay % 400 == 0
  p true
elsif year % 100 == 0
  p false
elsif year % 4 == 0
  p true
else
  p false
end

テストするのに引数だと面倒臭い

配列に年を入れてループで回す。

[1900,2004,1999,2000].each do |year|
  p year
  if yeay % 400 == 0
    p true
  elsif year % 100 == 0
    p false
  elsif year % 4 == 0
    p true
  else
    p false
  end
end

メソッド化しよう

def leap?(year)
  if yeay % 400 == 0
    p true
  elsif year % 100 == 0
    p false
  elsif year % 4 == 0
    p true
  else
    p false
  end
end
[1900,2004,1999,2000].each do |year|
  p year
  leap?(year)
end

ぽいことになってきたー。

case

case を使うと綺麗になる?

さっきも出てきた、リファレンシャルマニュアルをみると、こう書かれている。

case []
[when  [, ] ...[, `*' 式] [then]
  式..]..
[when `*'  [then]
  ..]..
[else
  ..]
end

これはわかりずらい。マニュアルにある例を借りてくるとわかりやすい。

case age
when 0 .. 2
  "baby"
when 3 .. 6
  "little child"
when 7 .. 12
  "child"
when 13 .. 18
  "youth"
else
  "adult"
end

これを使ってさっきの閏年の判定を綺麗にしよう。

def leap?(year)
  return case
    when year % 400 ==0
      true
    when year % 100 ==0
      false
    when year % 4 ==0
      true
    else
      false
  end
end
[1900,2004,1999,2000].each do |year|
  p year
  leap?(year)
end

実行結果の確認。

$ ruby leap_year.rb
1900
false
2004
true
1999
false
2000
true

おおーいい感じ。以上。


  • source ~/Library/Mobile Documents/com~apple~CloudDocs/KG/class/M1/multi_scale_sim/grad_members_20f/members/ryomichi56/./qiita/no7.org
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

第7回、Rubyの条件分岐

Mac OS-11.0.1 ruby-2.6.6p146

条件分岐

本記事は大学院前期過程の講義[マルチスケールシミュレーション特論]に関する記事です

if-elsif-else-end

お題

閏年の判定。テストする年は 2004, 1999, 1900, 2000 この4つで。

Ruby での条件分岐

Ruby のリファレンシャルマニュアルにはこう書かれている。

if  [then]
   ...
[elsif  [then]
   ... ]
...
[else
   ... ]
end

[]は省略可能を意味する。注意すべきは else if でなく elif でもなく elsif であることくらいで、そんなに目新しいことはない。 then も省略できるし簡単そう。けど上のマニュアルの記述はわかりずらいので例を出していく.

類題を解く

  • 2004年は?

A. 閏年である。4で割り切れるから。その条件分岐を書くには?

p year = ARGV[0].to_i
if year % 4 == 0
  p true
end

上のコードは実行時に引数を受け取って実行すると、引数をIntegerに変換して4で割った余りが0かどうかを判断して、そうであれば true を返す。

  • 1999 はfalse
p year = ARGV[0].to_i
if year % 4 == 0
  p true
else
  p false
end

簡単!

  • 1900年は?

A. Not 閏年。100で割り切れるから。

p year = ARGV[0].to_i
if year % 100 == 0
  p false
elsif year % 4 == 0
  p true
else
  p false
end
  • 2000年は?

A. 閏年。400で割り切れるから。

p year = ARGV[0].to_i
if yeay % 400 == 0
  p true
elsif year % 100 == 0
  p false
elsif year % 4 == 0
  p true
else
  p false
end

テストするのに引数だと面倒臭い

配列に年を入れてループで回す。

[1900,2004,1999,2000].each do |year|
  p year
  if yeay % 400 == 0
    p true
  elsif year % 100 == 0
    p false
  elsif year % 4 == 0
    p true
  else
    p false
  end
end

メソッド化しよう

def leap?(year)
  if yeay % 400 == 0
    p true
  elsif year % 100 == 0
    p false
  elsif year % 4 == 0
    p true
  else
    p false
  end
end
[1900,2004,1999,2000].each do |year|
  p year
  leap?(year)
end

ぽいことになってきたー。

case

case を使うと綺麗になる?

さっきも出てきた、リファレンシャルマニュアルをみると、こう書かれている。

case []
[when  [, ] ...[, `*' 式] [then]
  式..]..
[when `*'  [then]
  ..]..
[else
  ..]
end

これはわかりずらい。マニュアルにある例を借りてくるとわかりやすい。

case age
when 0 .. 2
  "baby"
when 3 .. 6
  "little child"
when 7 .. 12
  "child"
when 13 .. 18
  "youth"
else
  "adult"
end

これを使ってさっきの閏年の判定を綺麗にしよう。

def leap?(year)
  return case
    when year % 400 ==0
      true
    when year % 100 ==0
      false
    when year % 4 ==0
      true
    else
      false
  end
end
[1900,2004,1999,2000].each do |year|
  p year
  leap?(year)
end

実行結果の確認。

$ ruby leap_year.rb
1900
false
2004
true
1999
false
2000
true

おおーいい感じ。以上。


  • source ~/Library/Mobile Documents/com~apple~CloudDocs/KG/class/M1/multi_scale_sim/grad_members_20f/members/ryomichi56/./qiita/no7.org
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

第6回

Mac OS-11.0.1 ruby-2.6.6p146

変数とメソッド

本記事は大学院前期過程の講義[マルチスケールシミュレーション特論]に関する記事です

変数(variable)

お題

受け取った引数ARGV[0]をnameという変数に代入してそれを出力する

Rudy

Ruby での変数

ruby には型宣言の必要がなく、いい感じに型を決めてくれる。代入はいつものようにできる。

name = 'Rudy'

類題を解く

  • name に代入して Ruby と出力
name = 'Ruby'

puts "hello #{name}."
  • ARGV[0] を受け取って, 自分の名前を返す。
name = ARGV[0]

puts "hello #{name}."

メソッド(method)

お題

$ ruby hello\_method.rb RudyHell Rudy.

となる hello method を作る。

Ruby のmethod

Ruby での関数は method を定義する。method は 0 個以上の引数を受け取ることができる。例として、以下。

def hello(name)
  p name
end

類題を解く

def hello(name)
  p "hello #{name}"
end

name = ARGV[0]
hello(name)

おまけ

最終はこうした。

def hello(name)
  puts "hello #{name}"
end

def gets_name
  name = ARGV[0]
  if name == nil
    puts "What\'s your name? "
    name = gets.chomp
  end
  return name
end

hello gets_name

  • source ~/Library/Mobile Documents/com~apple~CloudDocs/KG/class/M1/multi_scale_sim/grad_members_20f/members/ryomichi56/./qiita/no6.org
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

第6回、Rubyの変数とメソッド

Mac OS-11.0.1 ruby-2.6.6p146

変数とメソッド

本記事は大学院前期過程の講義[マルチスケールシミュレーション特論]に関する記事です

変数(variable)

お題

受け取った引数ARGV[0]をnameという変数に代入してそれを出力する

Rudy

Ruby での変数

ruby には型宣言の必要がなく、いい感じに型を決めてくれる。代入はいつものようにできる。

name = 'Rudy'

類題を解く

  • name に代入して Ruby と出力
name = 'Ruby'

puts "hello #{name}."
  • ARGV[0] を受け取って, 自分の名前を返す。
name = ARGV[0]

puts "hello #{name}."

メソッド(method)

お題

$ ruby hello\_method.rb RudyHell Rudy.

となる hello method を作る。

Ruby のmethod

Ruby での関数は method を定義する。method は 0 個以上の引数を受け取ることができる。例として、以下。

def hello(name)
  p name
end

類題を解く

def hello(name)
  p "hello #{name}"
end

name = ARGV[0]
hello(name)

おまけ

最終はこうした。

def hello(name)
  puts "hello #{name}"
end

def gets_name
  name = ARGV[0]
  if name == nil
    puts "What\'s your name? "
    name = gets.chomp
  end
  return name
end

hello gets_name

  • source ~/Library/Mobile Documents/com~apple~CloudDocs/KG/class/M1/multi_scale_sim/grad_members_20f/members/ryomichi56/./qiita/no6.org
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

第5回

Mac OS-11.0.1 ruby-2.6.6p146

Ruby で標準出力

本記事は大学院前期過程の講義[マルチスケールシミュレーション特論]に関する記事です

puts hello_world

お題

Hello world.

これを出力してみる

Ruby の文字出力

method 使いどき
print 基本はこれ、改行はセルフ
puts まぁ普通に使う、改行は自動
p これは debug で使うらしい。
pp pのpretty print で,require 'pp' が必要らしい。
printf C のこれも使える。formatを指定できるから便利な時もある。

やってみよ

  • puts
puts 'hello world'

をファイル puts_hello_world.rb に記述して

$ ruby puts_hello_world.rb

でた。

hello world

類題

  • pとかprintとか
# coding: utf-8
# start here for print, p and pp

# print は改行なしで文字列が出力される。
print 'hello world'

# p は改行込みで出力されるが、文字列はダブルクォーテーションで囲まれる
p 'hello world'

## pp も p と見かけは同じである。
pp 'hello world'

gets もあるけど今回はARGV[0]

お題

$ ruby hello_name.rb Rudy

このコマンドに対して

Hello Rudy.

と出力されるようにする。

Ruby の文字入力

まぁ順当にいけばputsしたしgetsだけど、この講義はCLIの引数から拾ってくる。ファイル hello_name.rb に以下を記述して

puts ARGV[0]

からのコマンド

$ ruby hello_name.rb Rudy

出る。

Ruby

この辺はまぁ普通かな。Hello Rudy. とさせるのはいろんな方法があって、

puts puts "Hello " + ARGV[0]
puts puts "Hello #{ARGV[0]}"
print print "Hello #{ARGV[0]}\n"
print print "Hello " + ARGV[0] + "\n"

だそうです。

やってみよ

これを用いてさっきの hello_name.rb を書き換える。

puts "hello #{ARGV[0]}."

それから

$ ruby hello_name.rb Rudy

出る。

hello Ruby.

リダイレクト(redirect)

標準出力をファイルに書き込む

Bash等にはファイルディスクリプタを変更する機能が備わっている。まぁゆうたら標準出力をターミナル画面に表示するんじゃなくてファイルに書き込める。

# ruby hello_name.rb bob > hello_name.txt

ってやったら、~hello_name.txt~ に出力結果が出力される(追記じゃなくて上書き)

# cat hello_name.txt

をしてみると中身を見れる。

hello bob.

ちなみにファイル最後尾に追記したいときは

# ruby hello_name.rb bob >> hello_name.txt

みたいに >> ってする。両方とも、ファイルが無かったら新規に作成してくれる。


  • source ~/Library/Mobile Documents/com~apple~CloudDocs/KG/class/M1/multi_scale_sim/grad_members_20f/members/ryomichi56/./qiita/no5_1.org
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

第5回、Rubyに触れる

Mac OS-11.0.1 ruby-2.6.6p146

Ruby で標準出力

本記事は大学院前期過程の講義[マルチスケールシミュレーション特論]に関する記事です

puts hello_world

お題

Hello world.

これを出力してみる

Ruby の文字出力

method 使いどき
print 基本はこれ、改行はセルフ
puts まぁ普通に使う、改行は自動
p これは debug で使うらしい。
pp pのpretty print で,require 'pp' が必要らしい。
printf C のこれも使える。formatを指定できるから便利な時もある。

やってみよ

  • puts
puts 'hello world'

をファイル puts_hello_world.rb に記述して

$ ruby puts_hello_world.rb

でた。

hello world

類題

  • pとかprintとか
# coding: utf-8
# start here for print, p and pp

# print は改行なしで文字列が出力される。
print 'hello world'

# p は改行込みで出力されるが、文字列はダブルクォーテーションで囲まれる
p 'hello world'

## pp も p と見かけは同じである。
pp 'hello world'

gets もあるけど今回はARGV[0]

お題

$ ruby hello_name.rb Rudy

このコマンドに対して

Hello Rudy.

と出力されるようにする。

Ruby の文字入力

まぁ順当にいけばputsしたしgetsだけど、この講義はCLIの引数から拾ってくる。ファイル hello_name.rb に以下を記述して

puts ARGV[0]

からのコマンド

$ ruby hello_name.rb Rudy

出る。

Ruby

この辺はまぁ普通かな。Hello Rudy. とさせるのはいろんな方法があって、

puts puts "Hello " + ARGV[0]
puts puts "Hello #{ARGV[0]}"
print print "Hello #{ARGV[0]}\n"
print print "Hello " + ARGV[0] + "\n"

だそうです。

やってみよ

これを用いてさっきの hello_name.rb を書き換える。

puts "hello #{ARGV[0]}."

それから

$ ruby hello_name.rb Rudy

出る。

hello Ruby.

リダイレクト(redirect)

標準出力をファイルに書き込む

Bash等にはファイルディスクリプタを変更する機能が備わっている。まぁゆうたら標準出力をターミナル画面に表示するんじゃなくてファイルに書き込める。

# ruby hello_name.rb bob > hello_name.txt

ってやったら、~hello_name.txt~ に出力結果が出力される(追記じゃなくて上書き)

# cat hello_name.txt

をしてみると中身を見れる。

hello bob.

ちなみにファイル最後尾に追記したいときは

# ruby hello_name.rb bob >> hello_name.txt

みたいに >> ってする。両方とも、ファイルが無かったら新規に作成してくれる。


  • source ~/Library/Mobile Documents/com~apple~CloudDocs/KG/class/M1/multi_scale_sim/grad_members_20f/members/ryomichi56/./qiita/no5_1.org
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

第5回...の前に

Mac OS-11.0.1 ruby-2.6.6p146

Ruby … その前に

本記事は大学院前期過程の講義[マルチスケールシミュレーション特論]に関する記事です

CUI

CUI はとても便利。しかし時には GUI の方が便利な時もある。だから CUI vs GUI ではなく、CUI × GUI で両方のいいところを用いて生産性を爆上げしよう。

ここで、生産性を左右するのはキーバインドが使えるかどうか。GUI でも CUI でも、キーバインドが左右する。

  • (ex.) cmd+c, cmd+v, ctrl+a, ctrl+e

Shell

shell に命令を渡してやりとり。命令はコマンドと呼ばれる。

command は

  • $command [options] [arg0] [arg1] ...

が基本。 [] は省略可能を意味し、options は - あるいは -- の後ろに適宜入力。

Directory

ディレクトリ(Direry) は Linux でコマンドを扱う上で理解が必須。

絶対パス

  • /Users/ryo/Documents/hogehoge.txt
    • フルパスと呼ばれることもある。
    • ルートディレクトリからの目的地までの経路を示す。

相対パス

  • ./Documents/hogehoge.txt
    • これはユーザーが作業中の位置をスタート地点として目的地までの経路を示す。
    • 上記例ではユーザーが /Users/ryo で作業中であることを前提に hogehoge.txt を示すことができる。

コマンド

超基本的だから説明は無しで羅列します。

  • open <- Mac Only
  • mkdir
  • pwd
  • cd [dir|..]
  • ls

emacs

emacs はターミナル上で動作する高機能なeditor。

  • 端末上で遠隔のファイル ( ssh サーバ等) を編集するのに向いている。(今は)
  • マウスを使う前提で設計されてないのでキーバインドは必須。

  • source ~/Library/Mobile Documents/com~apple~CloudDocs/KG/class/M1/multi_scale_sim/grad_members_20f/members/ryomichi56/./qiita/no5_0.org
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

第5回...の前に、CUIと仲良くなりたい

Mac OS-11.0.1 ruby-2.6.6p146

Ruby … その前に

本記事は大学院前期過程の講義[マルチスケールシミュレーション特論]に関する記事です

CUI

CUI はとても便利。しかし時には GUI の方が便利な時もある。だから CUI vs GUI ではなく、CUI × GUI で両方のいいところを用いて生産性を爆上げしよう。

ここで、生産性を左右するのはキーバインドが使えるかどうか。GUI でも CUI でも、キーバインドが左右する。

  • (ex.) cmd+c, cmd+v, ctrl+a, ctrl+e

Shell

shell に命令を渡してやりとり。命令はコマンドと呼ばれる。

command は

  • $command [options] [arg0] [arg1] ...

が基本。 [] は省略可能を意味し、options は - あるいは -- の後ろに適宜入力。

Directory

ディレクトリ(Direry) は Linux でコマンドを扱う上で理解が必須。

絶対パス

  • /Users/ryo/Documents/hogehoge.txt
    • フルパスと呼ばれることもある。
    • ルートディレクトリからの目的地までの経路を示す。

相対パス

  • ./Documents/hogehoge.txt
    • これはユーザーが作業中の位置をスタート地点として目的地までの経路を示す。
    • 上記例ではユーザーが /Users/ryo で作業中であることを前提に hogehoge.txt を示すことができる。

コマンド

超基本的だから説明は無しで羅列します。

  • open <- Mac Only
  • mkdir
  • pwd
  • cd [dir|..]
  • ls

emacs

emacs はターミナル上で動作する高機能なeditor。

  • 端末上で遠隔のファイル ( ssh サーバ等) を編集するのに向いている。(今は)
  • マウスを使う前提で設計されてないのでキーバインドは必須。

  • source ~/Library/Mobile Documents/com~apple~CloudDocs/KG/class/M1/multi_scale_sim/grad_members_20f/members/ryomichi56/./qiita/no5_0.org
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

第9回

Mac OS-11.0.1 ruby-2.6.6p146

assert_equal

本記事は大学院前期過程の講義[マルチスケールシミュレーション特論]に関する記事です
assert_equal は、イコール(両者が等しい)かどうかを確かめる関数。これを作っていく。

とりあえず

思いつく範囲でとりあえず書いてみる。

def assert_equal(expected, result)
  return expected == result
end

p assert_equal(1, 1)

これを実行する。

$ ruby assert_equal.rb
true

よし。

色、つけてみる?

$ gem install colorize

してから、

require 'colorize'

def assert_equal(expected, result)
  if expected == result
    puts 'true'.green
  else
    puts 'false'.red
  end
end
assert_equal(1, 1)
assert_equal(1, 2)

みたいなプログラムを実行!

$ ruby assert_equal.rb
true
false

truefalse になった!

出力を豪華にしてみる?

require 'colorize'

def assert_equal(expected, result)
  puts "expected :: #{expected}"
  puts "result   :: #{result}"
  if expected == result
    puts 'succeeded in assert_equal.'.green
  else
    puts 'failed in assert_equal.'.red
  end
end

assert_equal(1, 1)
assert_equal(1, 2)

実行!

$ ruby assert_equal_richer_output.rb
expected :: 1
result   :: 1
succeeded in assert_equal.
expected :: 1
result   :: 2
failed in assert_equal.

qiitaでは色変わらないけど、ターミナル上では変わってます。

まぁNot Equal もやるか〜

require 'colorize'

def assert_not_equal(expected, result)
  puts "expected :: #{expected}"
  puts "result   :: #{result}"
  if expected != result
    puts 'succeeded in assert_not_equal.'.green
  else
    puts 'failed in assert_not_equal.'.red
  end
end

assert_not_equal(1, 1)
assert_not_equal(1, 2)

簡単。

$ ruby assert_not_equal_richer_output.rb
expected :: 1
result   :: 1
failed in assert_not_equal.
expected :: 1
result   :: 2
succeeded in assert_not_equal.

ファイルをまとめて汎用化

上の、イコールとノットイコールをまとめて、重複してる部分はまとめて、さらに外部からも呼び出します。まずは重複部分の整理

require 'colorize'

def puts_vals(expected, result)
  puts "expected :: #{expected}"
  puts "result   :: #{result}"
end

def assert_equal(expected, result)
  puts_vals(expected, result)
  print  expected = result ?
    "succeeded in #{__method__}.\n".green :
    "failed in #{__method__}.\n".red
end

def assert_not_equal(expected, result)
  puts_vals(expected, result)
  print expected != result ?
    "succeeded in #{__method__}.\n".green :
    "failed in #{__method__}.\n".red
end

assert_equal(1, 1)
assert_equal(1, 2)
assert_not_equal(1, 2)
assert_not_equal(1, 1)

これを外部ファイルからも呼び出したい。

require './assert_equal'

assert_equal(2, 1*2)
assert_not_equal('bob', 'bob2')

みたいな感じ。けど、外部から呼び出したら、tail の4行も実行されてしまう。これを避ける方法がある。

これはもう覚えるしかない。

if $PROGRAM_NAME == __FILE__
  assert_equal(1, 1)
  assert_equal(1, 2)
  assert_not_equal(1, 2)
  assert_not_equal(1, 1)
end

これは、実行中のプログラムのファイル名と、記述されているファイル名が一致したら、という構文である。例えば、上記コードが A.rb に記述されていて、 B.rb から呼び出されても実行されない。最終はこうなった。

require 'colorize'

def puts_vals(expected, result)
  puts "expected :: #{expected}"
  puts "result   :: #{result}"
end

def assert_equal(expected, result)
  puts_vals(expected, result)
  print  expected = result ?
    "succeeded in #{__method__}.\n".green :
    "failed in #{__method__}.\n".red
end

def assert_not_equal(expected, result)
  puts_vals(expected, result)
  print expected != result ?
    "succeeded in #{__method__}.\n".green :
    "failed in #{__method__}.\n".red
end

if $PROGRAM_NAME == __FILE__
  assert_equal(1, 1)
  assert_equal(1, 2)
  assert_not_equal(1, 2)
  assert_not_equal(1, 1)
end

いい感じ!!今後の講義でもこのメソッドは活用するらしい。


  • source ~/Library/Mobile Documents/com~apple~CloudDocs/KG/class/M1/multi_scale_sim/grad_members_20f/members/ryomichi56/./qiita/no9.org
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

第9回、Rubyでassert_equal

Mac OS-11.0.1 ruby-2.6.6p146

assert_equal

本記事は大学院前期過程の講義[マルチスケールシミュレーション特論]に関する記事です
assert_equal は、イコール(両者が等しい)かどうかを確かめる関数。これを作っていく。

とりあえず

思いつく範囲でとりあえず書いてみる。

def assert_equal(expected, result)
  return expected == result
end

p assert_equal(1, 1)

これを実行する。

$ ruby assert_equal.rb
true

よし。

色、つけてみる?

$ gem install colorize

してから、

require 'colorize'

def assert_equal(expected, result)
  if expected == result
    puts 'true'.green
  else
    puts 'false'.red
  end
end
assert_equal(1, 1)
assert_equal(1, 2)

みたいなプログラムを実行!

$ ruby assert_equal.rb
true
false

truefalse になった!

出力を豪華にしてみる?

require 'colorize'

def assert_equal(expected, result)
  puts "expected :: #{expected}"
  puts "result   :: #{result}"
  if expected == result
    puts 'succeeded in assert_equal.'.green
  else
    puts 'failed in assert_equal.'.red
  end
end

assert_equal(1, 1)
assert_equal(1, 2)

実行!

$ ruby assert_equal_richer_output.rb
expected :: 1
result   :: 1
succeeded in assert_equal.
expected :: 1
result   :: 2
failed in assert_equal.

qiitaでは色変わらないけど、ターミナル上では変わってます。

まぁNot Equal もやるか〜

require 'colorize'

def assert_not_equal(expected, result)
  puts "expected :: #{expected}"
  puts "result   :: #{result}"
  if expected != result
    puts 'succeeded in assert_not_equal.'.green
  else
    puts 'failed in assert_not_equal.'.red
  end
end

assert_not_equal(1, 1)
assert_not_equal(1, 2)

簡単。

$ ruby assert_not_equal_richer_output.rb
expected :: 1
result   :: 1
failed in assert_not_equal.
expected :: 1
result   :: 2
succeeded in assert_not_equal.

ファイルをまとめて汎用化

上の、イコールとノットイコールをまとめて、重複してる部分はまとめて、さらに外部からも呼び出します。まずは重複部分の整理

require 'colorize'

def puts_vals(expected, result)
  puts "expected :: #{expected}"
  puts "result   :: #{result}"
end

def assert_equal(expected, result)
  puts_vals(expected, result)
  print  expected = result ?
    "succeeded in #{__method__}.\n".green :
    "failed in #{__method__}.\n".red
end

def assert_not_equal(expected, result)
  puts_vals(expected, result)
  print expected != result ?
    "succeeded in #{__method__}.\n".green :
    "failed in #{__method__}.\n".red
end

assert_equal(1, 1)
assert_equal(1, 2)
assert_not_equal(1, 2)
assert_not_equal(1, 1)

これを外部ファイルからも呼び出したい。

require './assert_equal'

assert_equal(2, 1*2)
assert_not_equal('bob', 'bob2')

みたいな感じ。けど、外部から呼び出したら、tail の4行も実行されてしまう。これを避ける方法がある。

これはもう覚えるしかない。

if $PROGRAM_NAME == __FILE__
  assert_equal(1, 1)
  assert_equal(1, 2)
  assert_not_equal(1, 2)
  assert_not_equal(1, 1)
end

これは、実行中のプログラムのファイル名と、記述されているファイル名が一致したら、という構文である。例えば、上記コードが A.rb に記述されていて、 B.rb から呼び出されても実行されない。最終はこうなった。

require 'colorize'

def puts_vals(expected, result)
  puts "expected :: #{expected}"
  puts "result   :: #{result}"
end

def assert_equal(expected, result)
  puts_vals(expected, result)
  print  expected = result ?
    "succeeded in #{__method__}.\n".green :
    "failed in #{__method__}.\n".red
end

def assert_not_equal(expected, result)
  puts_vals(expected, result)
  print expected != result ?
    "succeeded in #{__method__}.\n".green :
    "failed in #{__method__}.\n".red
end

if $PROGRAM_NAME == __FILE__
  assert_equal(1, 1)
  assert_equal(1, 2)
  assert_not_equal(1, 2)
  assert_not_equal(1, 1)
end

いい感じ!!今後の講義でもこのメソッドは活用するらしい。


  • source ~/Library/Mobile Documents/com~apple~CloudDocs/KG/class/M1/multi_scale_sim/grad_members_20f/members/ryomichi56/./qiita/no9.org
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

M1チップ MacのUA

M1チップ搭載のMacのUAがネット上に無いって友人から言われたので貼っておきます〜。
※2020年11月27日の情報です。

Chrome

Mozilla/5.0 (Macintosh; Intel Mac OS X 11_0_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36

Safari

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Safari/605.1.15

Firefox

Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:83.0) Gecko/20100101 Firefox/83.0

どなたかの参考になればw

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