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 +4 -4
- data/contents/questions/sequential_check/section_10/part_1/lib/answer.rb +2 -2
- data/contents/questions/sequential_check/section_10/part_1/lib/sentence.org +35 -6
- data/docs/seminar/10-18.org +33 -0
- data/docs/seminar/10-18.rb +0 -0
- data/docs/seminar/seminer_9_20.org +18 -0
- data/lib/ruby_learner/pair_timer.rb +16 -0
- data/lib/ruby_learner/ruby_learner.rb +13 -1
- data/lib/ruby_learner/sequential_main.rb +1 -0
- data/lib/ruby_learner/typing_practice.rb +2 -0
- data/lib/ruby_learner/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 67e5c08b769b897fd56c4d1edaba02449600aad7
|
4
|
+
data.tar.gz: 0af715f22a9aa98f81d298578ef004ce9693f214
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ea7a9c60e140abc0b8e9fbbe098734000213e465a9c18bf441e1af82ee2a559dd11895fa42bb9047610b158ae257fa8f12428a90e3f01f19157eeef720cd2ef
|
7
|
+
data.tar.gz: 9a83b55b604cec5dc2baed69252bd1d731ea32ecf332b9a1a75abfd950d382252497b09a8c5a6b614429e463837136d13e014daee1ece645fda179956da43f84
|
@@ -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
|
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
|
-
|
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
|
-
|
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
|
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 '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
|
data/lib/ruby_learner/version.rb
CHANGED
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.
|
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-
|
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
|