ruby_learner 1.2.1 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 338fd543221499c1cd39927680ee4e4e12ee0a43
4
- data.tar.gz: d564cd050153231fe58b518e53ff3765de0d41e6
3
+ metadata.gz: 67e5c08b769b897fd56c4d1edaba02449600aad7
4
+ data.tar.gz: 0af715f22a9aa98f81d298578ef004ce9693f214
5
5
  SHA512:
6
- metadata.gz: 428f563264d669ac7cf02f6d4773746a7eb178748ad24343079c4f266e54905cc098bafb2ba4b9bdee4f75b241ecc4018afbd533da157fd9dc4210121e8d8b26
7
- data.tar.gz: ef1f6747a9cca8312e8e0341a367046b29fecd8d9bebedd2a9a26ad376e66c12eb962a004f866a91336a79a345e70eb44057ac3d976794be283bc6751337f651
6
+ metadata.gz: 5ea7a9c60e140abc0b8e9fbbe098734000213e465a9c18bf441e1af82ee2a559dd11895fa42bb9047610b158ae257fa8f12428a90e3f01f19157eeef720cd2ef
7
+ data.tar.gz: 9a83b55b604cec5dc2baed69252bd1d731ea32ecf332b9a1a75abfd950d382252497b09a8c5a6b614429e463837136d13e014daee1ece645fda179956da43f84
@@ -1,5 +1,5 @@
1
- # section_9/part_1/answer.rb
2
- # 9-1-file-read.rb
1
+ # section_10/part_1/answer.rb
2
+ # 10-1-file-read.rb
3
3
  filename = ARGV[0]
4
4
  text = File.read(filename)
5
5
  print text
@@ -1,14 +1,43 @@
1
1
  -課題-
2
- 1つの文字列を受け取り、文字列と一致するファイル名のテキストデータを表示するプログラムを作成せよ。
2
+ コマンドラインから1つの文字列を受け取り, 文字列と一致するファイル名のテキストデータを表示するプログラムを作成せよ.
3
3
 
4
4
  * ファイル操作
5
5
  - ファイル操作にはファイル入出力等のコードからファイルに関する操作ができるメソッドを紹介します.
6
6
  - 例によって,この項目についても様々な機能があるので必要最低限の知識を掲載することにします.
7
+ - 以下の解説に出てくるfile_pathは全てファイルのアドレスを意味します.
8
+ ** fileのpath
9
+ - ファイルが存在するアドレスをパス(path)という.
7
10
 
8
- ** ファイル読み込み
9
- - 使用方法
10
- File.read
11
+ ** open and close
12
+ - ファイルの操作を行う場合の基本.
13
+ - openはファイルを開いて新しいFileオブジェクトを得る.
14
+ - closeはopenで得たFileオブジェクトを閉じる.
15
+ - 1つのプログラムが同時に開くことのできるファイル数には制限があるので,使い終わったファイルはなるべく閉じるようにすべきです.なので必ずopenした数だけcloseを行いましょう.
16
+ - File.openにはFile.closeを必要としない記法もあります.eachメソッドに酷似しているので以下に示します.
17
+ ex) File.open(file_path) do |変数|
18
+ 変数にはopenしたファイルが入っているので,それに対しての処理.
19
+ end
11
20
 
12
- text = File.read(ファイル名)
21
+ *** open
22
+ - 使用方法...変数 = File.open(file_path, mode, perm, opt)
23
+ - 機能...ファイルの内容を変数に格納します.modeとpermとoptは省略可能です.
24
+ しかしmodeとpermに関してはmodeを省略するとpermは使用できません.
25
+ - mode...どのような目的でファイルを開くかを決定します.ex) "r" は読み込み専用, "w"は書き込み専用....
26
+ - perm...ここでは深く解説しませんが,ファイルはプログラム外ではコンピュータの中に保存されています.
27
+ しかし,そのファイルにはコンピュータ内でも読み込み専用等のmodeが付随しているので,permはそのmodeの変更を行えます.
28
+ - opt...その他のオプションです.かなり上級者向けの内容なのでここでは割愛します.
13
29
 
14
- File.readメソッドは、受け取ったファイル名と同じ名前のファイルのデータを読み込むメソッド。
30
+ *** close
31
+ - 使用方法...(File.openで作成されたオブジェクトを持つ変数より後に)File.close
32
+ - 機能...オブジェクトのファイルを閉じます.
33
+ - File.openした変数が閉じているかどうかを確認する場合は,File.closed?でtrue/falseの結果を得ることができます.
34
+
35
+ *** gets
36
+ ** read
37
+ - 使用方法...変数 = File.read(file_path)
38
+ - 機能...File.openなしにファイルに書かれている内容を変数に格納する.
39
+
40
+ ** write
41
+ - 使用方法...File.write(file_path, data, offset)
42
+ - 機能...File.openなしにファイルをdataに書き換える.
43
+ offsetは省略可能だが,指定した場合は書き換えるのではなく,指定したoffset番目の文字がdataに書き換わる.
@@ -0,0 +1,33 @@
1
+ * パソコンの台数が足りない状況の解決策
2
+ - パソコンが人数分用されていない環境を想定?
3
+ ** もはや,二人プレイを想定したモードの実装?
4
+ - ペアプロの想定になるんじゃないのかな?
5
+ - 問題点:操作の複雑化が大きなデメリットになる
6
+
7
+ *** 2人協力
8
+ - 1Pと2Pでチャレンジするとして,一人がコードを書いてもう一人がそのコードの問題点を探す?それを交代して,
9
+ 2人で別々のクラスを作成する.
10
+ その二つを組み合わせて最終課題の達成を確認できるようにする?
11
+ - 問題点:一方の作業中にもう一方が暇する?
12
+
13
+ *** 2人対戦
14
+ - 一人ずつ1つの無駄のあるコードを修正してより解決できた方の勝利とする?時間制限必須かな.
15
+ - 問題点:もし,その修正が可読性の高いもの(関数,クラスの作成)を行なっていた場合の評価は?
16
+
17
+ *** rspecを自動で作れたとしたら
18
+ - お互いに問題作って出題し合うことも可能?
19
+ - 問題点:実現可能かどうか,現状リリースは見当たらない.限定的にやったらいけるかも...
20
+
21
+ ** BDDの要素も含める?
22
+ - 実行結果スペースをチェッククリア時に選択式で追加する?
23
+ ex) do you execute your created file?
24
+
25
+ ** シンタックスチェッカーいるかな?
26
+
27
+ * ペアプロ
28
+ - 一つのことを2人でする.
29
+ - 助け合いの精神大事
30
+ 協業すること
31
+ - 一つの問題に対して,2人で取り組む?
32
+ その場合は,交代で作業することになる.(一人が作業して,一人がチュータ)
33
+ - 5分おきにタイマー鳴らす?
File without changes
@@ -0,0 +1,18 @@
1
+ cd \etc\apatche2
2
+ emacs httpd.conf
3
+ apachectl restart
4
+ tail \var\log\apache2\error_log
5
+ date ... 日付の表示
6
+ cd ... homeに移動
7
+ cd Sites ... siteを入れれる
8
+
9
+ <.htmlのファイルある場合>
10
+ open AAA.html
11
+ open http://localhost/AAA.html
12
+
13
+ <google>
14
+ apathe 起動 open high sierra
15
+
16
+ 作った後は,自分のやったことを記入していく
17
+
18
+ 木曜日の1時から進捗報告を行うことになる
@@ -0,0 +1,16 @@
1
+ require 'open3'
2
+
3
+ class PairTimer < Thread
4
+ def popup_per_time(time)
5
+ loop do
6
+ sleep time
7
+ system('afplay /System/Library/Sounds/Submarine.aiff')
8
+ o, e, s = Open3.capture3("osascript -e 'tell app \"System Events\" to display dialog \"#{time}s passed.\nPut cancel to stop pair-mode.\nPut OK to continue pair-mode.\"'")
9
+
10
+ if o != "button returned:OK\n"
11
+ puts 'pair timer is stopped.'
12
+ Thread.kill(self)
13
+ end
14
+ end
15
+ end
16
+ end
@@ -35,13 +35,23 @@ module RubyLearner
35
35
  end
36
36
 
37
37
  desc 'sequential_check [section:1~11] [part:1~]','learning drill'
38
+ map "-s" => "sequential_check"
38
39
  option :next, aliases: :n, type: :boolean
39
40
  option :drill, aliases: :d, type: :boolean
40
41
  option :last, aliases: :l, type: :boolean
41
42
  def sequential_check(*args)
42
43
  begin
43
44
  sequential_main = SequentialMain.new(@gem_dir, @local_dir)
45
+ if args[0] == '-p'
46
+ pair_timer = PairTimer.new do
47
+ pair_timer.popup_per_time(10)
48
+ end
49
+ args[0] = args[1]
50
+ args[1] = args[2]
51
+ end
52
+
44
53
  if options[:drill]
54
+ Thread.kill(pair_timer) if pair_timer != nil
45
55
  sequential_main.drill_contents
46
56
  elsif options[:next]
47
57
  final_sec, final_par = sequential_main.get_final_history()
@@ -52,13 +62,15 @@ module RubyLearner
52
62
  else
53
63
  sequential_main.action(args[0], args[1])
54
64
  end
65
+ Thread.kill(pair_timer) if pair_timer != nil
55
66
  rescue => error
56
67
  puts "Error.message: #{error.message}"
57
- puts 'sequential_check has 3-modes'
68
+ puts 'sequential_check has 5-modes'
58
69
  puts 'mode-1: $ sequential_check [section:1~11] [part:1~], ex) sequential_check 1 3'
59
70
  puts 'mode-2: $ sequential_check -d, check drill contents'
60
71
  puts 'mode-3: $ sequential_check -n, learn next to your last-question'
61
72
  puts 'mode-4: $ sequential_check -l, learn your last-question'
73
+ puts 'mode-5: $ sequential_check -p [1 2, -d, -n, -l], learn with partner'
62
74
  end
63
75
  end
64
76
 
@@ -1,5 +1,6 @@
1
1
  require 'ruby_learner/typing_practice'
2
2
  require 'fileutils'
3
+
3
4
  class SequentialMain
4
5
 
5
6
  def initialize(gem_dir, local_dir)
@@ -1,5 +1,6 @@
1
1
  require 'fileutils'
2
2
  require 'ruby_learner/common.rb'
3
+ require 'ruby_learner/pair_timer.rb'
3
4
  require 'rubocop'
4
5
 
5
6
  class TypingPractice
@@ -30,6 +31,7 @@ class TypingPractice
30
31
  end
31
32
 
32
33
  def typing_discriminant
34
+ p 'typing_discriminant'
33
35
  loop do
34
36
  flag_rspec, flag_rs_exit = rspec_check
35
37
  if flag_rs_exit == true
@@ -1,3 +1,3 @@
1
1
  module RubyLearner
2
- VERSION = "1.2.1"
2
+ VERSION = "1.2.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_learner
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takaki Otsu
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-10-16 00:00:00.000000000 Z
11
+ date: 2018-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -383,10 +383,13 @@ files:
383
383
  - docs/happy_ruby/TanoshiiRuby_v5_c2-3.pdf
384
384
  - docs/happy_ruby/c2.ipynb
385
385
  - docs/happy_ruby/c3_4.ipynb
386
+ - docs/seminar/10-18.org
387
+ - docs/seminar/10-18.rb
386
388
  - docs/seminar/8-1.org
387
389
  - docs/seminar/8-30.org
388
390
  - docs/seminar/9-16.org
389
391
  - docs/seminar/ruby_kansai_9-1.org
392
+ - docs/seminar/seminer_9_20.org
390
393
  - docs/thesis/competing_services.org
391
394
  - docs/thesis/manual.org
392
395
  - docs/thesis/mid_term.pptx
@@ -395,6 +398,7 @@ files:
395
398
  - exe/ruby_learner
396
399
  - lib/ruby_learner/.ruby-version
397
400
  - lib/ruby_learner/common.rb
401
+ - lib/ruby_learner/pair_timer.rb
398
402
  - lib/ruby_learner/ruby_learner.rb
399
403
  - lib/ruby_learner/sequential_main.rb
400
404
  - lib/ruby_learner/typing_practice.rb