DOC PREVIEW
CMU 15441 Computer Networking - r05-ruby

This preview shows page 1-2-3-25-26-27 out of 27 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 27 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 27 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 27 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 27 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 27 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 27 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 27 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

Automation: Time to learn RubyWhy do we want a scripting language?Some examplesSome downsides ..Ruby .. Some backgroundOkay … Lets get startedBasic syntax rulesControl structuresControl structures ..ArraysHashesStrings and regular expressionsStrings and regular expressions..Code blocks and yieldBasic file I/OSlide 16ClassesTopics Useful for Project TestingControlling processesControlling processes: TimeoutSlide 21Network ConnectionsHandling Exceptions a.k.a Having to code in the real worldRuby unit testingUseful resourcesParting thoughts ..Announcements ..01/14/19 15-441 Ruby Recitation 1Automation:Time to learn Ruby15-441 Spring 2010, Recitation 5 Your Awesome TAs01/14/19 15-441 Ruby Recitation 2Why do we want a scripting language?•Why not Assembly, C, C++, Java ..•Much easier to program inShorten the edit-develop-compile cycle•Re-use existing componentsE.g. TCP server, retrieve web pages•Easy short-cuts for common operationsText-processing, Strings, Regexp•Fewer low-level hasslesTypes, memory management etc01/14/19 15-441 Ruby Recitation 3Some examples•Shell-script•Sed/Awk•Perl•Python•Tcl/Tk•Smalltalk•…..01/14/19 15-441 Ruby Recitation 4Some downsides .. •Most commonly cited: PerformanceNot good for ..Compute-intensive operationsCreating data structures, algorithmsLess true as hardware makes up ..•Common problem: unpredictable ..Interpreted, not compiledDon’t require types/initialization•Another common problem: mysterious..From the manpage: Perl actually stands for Pathologically Eclectic Rubbish Lister, but don't tell anyone I said that.01/14/19 15-441 Ruby Recitation 5Ruby .. Some background•Often called “multi-paradigm”Procedural + OOP + Functional featuresBut a high-level scripting language!•Philosophy: Principle of Least SurpriseWhat you expect is most likely what you get•FeaturesTruly object-orientedSupport for Perl-like regular expressionsSyntax a lot like Python/Perl•Trivia: The language was created by Yukihiro "Matz" Matsumoto , 199501/14/19 15-441 Ruby Recitation 6Okay … Lets get startedFile: Helloworld.rb#! /usr/bin/ruby #<-- # please have useful comments# unlike the one here!def sayHelloworld(name) #<-- puts "Hello world #{name} " #<--end #<-- sayHelloworld(“kaushik") #<--01/14/19 15-441 Ruby Recitation 7Basic syntax rules•Comments start with a # character, go to EOL•Each expression is delimited by ; or newlinesUsing newlines is the Ruby way•Local variables, method parameters, and method names should all start with a lowercase letter or _•Global variables are prefixed with a $ sign •Class names, module names, and constants should start with an uppercase letter•Class instance variables begin with an @ sign01/14/19 15-441 Ruby Recitation 8Control structures•The usual suspects if, while, for, untilIterators: each•if exampleif (score > 10)puts "You have cleared the checkpoint”elsif (score > 5) # this is cool!puts " You have passed”elseputs "You have failed :-(”end01/14/19 15-441 Ruby Recitation 9Control structures .. •while exampleteam = 1while (team <= maxteam)result = grade(team)team = team + 1end•Shortcuts:puts "Passed!" if (score >= 10)score = score+1 while (score <= 100)01/14/19 15-441 Ruby Recitation 10Arrays• array1 = Array.newarray1[0] = 1array1[1] = 2index = 0#traditional waywhile (index < array1.size)puts array1[index].to_sindex = index + 1 end• array2 = [3, 4, 5, 6]array2.each {|x| puts x} #Ruby way•Useful functions: reverse, sort01/14/19 15-441 Ruby Recitation 11Hashes•Most amazing feature of scripting languagesAlong with regular expressions•hash1 = Hash.newhash1["champions"] = "steelers”hash1["runnersup"] = "seahawks”hash1.each do |key,value| puts "#{key} are #{value}”endhash1.delete("runnersup")•e.g. where you might use thisnick2ip["nick"] = ipaddr_connect01/14/19 15-441 Ruby Recitation 12Strings and regular expressions•Stringss = ‘This is a new string ‘ earl = ”Earl”s = “My name is #{earl}”answer = 42s = ‘The answer name is ‘ + answer.to_s•Many useful functions: to_i,upcase,downcase,reverseNote: need explicit to_i (unlike perl) •Regular expression matchingif string =~ / Hello\sWorld/puts "the string is Hello World”end •Commonly used regular expressions: \s, \w, \d, ., *, +01/14/19 15-441 Ruby Recitation 13Strings and regular expressions..•Substitution:language.sub(/Perl/,'Ruby') #first language.gsub(/Perl/,'Ruby') #all•Interested in not only matching but also values?s="12:50am” if s=~/(\d+):(\d+)(\w+)/puts "Hour:#$1, Min:#$2 #$3”end•split examplehelloworld=‘Hello World’(hello,world) = helloworld.splitnumbers=‘1,2,3,4,5’splitarray = numbers.split(‘,’)01/14/19 15-441 Ruby Recitation 14Code blocks and yield•Code blocks defined by {} or do-end •yield example:def method_yieldsyieldendmethod_yields { puts "Came here"}•Fancier example:def fibUpTo(max) i1, i2 = 1, 1 # parallel assignment while i1 <= max yield i1 i1, i2 = i2, i1+i2 endendfibUpTo(1000) { |f| print f, " " }•each and iterators defined this way01/14/19 15-441 Ruby Recitation 15Basic file I/O•Common printing tasks: printf, print, puts•Getting user input: gets•Reading a file1. aFile = File.open("testfile”,”r”)# process the file line by lineaFile.each_line do |line|line_new = line.chompputs line_newend2. IO.foreach(“testfile”) {|f| puts f}•Getting rid of pesky EOL: chomp, chomp!, chop, chop!•Alternative reading whole file into arrayarr = IO.readlines("testfile”)01/14/19 15-441 Ruby Recitation 16Basic file I/O•Writing to a filewFile = File.open("debuglog",'w') wFile.puts "debug message\n"wFile.close01/14/19 15-441 Ruby Recitation 17Classesclass IRC #class name starts in capitalattr_reader :server,:port #shortcut for access outside attr_writer :nick #shortcut for writing @nick outside def initialize(server, port, nick, channel)@server = server #instance variables start with @ @port = port @nick = nick @channel = channeldef connect #another method#instance variables don’t need declaration@server_connection = TCPSocket.open(@server,@port)enddef send(s)@server_connection.send(s)endendircc = IRC.new($SERVER,$PORT,’’,’’) #create an object of type IRCircc.nick = ‘kaushik’ #nick is writeable end#constructor01/14/19 15-441 Ruby Recitation 18Topics Useful for Project Testing•Controlling processes•Network


View Full Document

CMU 15441 Computer Networking - r05-ruby

Documents in this Course
Lecture

Lecture

14 pages

Lecture

Lecture

19 pages

Lecture

Lecture

14 pages

Lecture

Lecture

78 pages

Lecture

Lecture

35 pages

Lecture

Lecture

4 pages

Lecture

Lecture

4 pages

Lecture

Lecture

29 pages

Lecture

Lecture

52 pages

Lecture

Lecture

40 pages

Lecture

Lecture

44 pages

Lecture

Lecture

41 pages

Lecture

Lecture

38 pages

Lecture

Lecture

40 pages

Lecture

Lecture

13 pages

Lecture

Lecture

47 pages

Lecture

Lecture

49 pages

Lecture

Lecture

7 pages

Lecture

Lecture

18 pages

Lecture

Lecture

15 pages

Lecture

Lecture

74 pages

Lecture

Lecture

35 pages

Lecture

Lecture

17 pages

lecture

lecture

13 pages

Lecture

Lecture

21 pages

Lecture

Lecture

14 pages

Lecture

Lecture

53 pages

Lecture

Lecture

52 pages

Lecture

Lecture

40 pages

Lecture

Lecture

11 pages

Lecture

Lecture

20 pages

Lecture

Lecture

39 pages

Lecture

Lecture

10 pages

Lecture

Lecture

40 pages

Lecture

Lecture

25 pages

lecture

lecture

11 pages

lecture

lecture

7 pages

Lecture

Lecture

10 pages

lecture

lecture

46 pages

lecture

lecture

7 pages

Lecture

Lecture

8 pages

lecture

lecture

55 pages

lecture

lecture

45 pages

lecture

lecture

47 pages

lecture

lecture

39 pages

lecture

lecture

33 pages

lecture

lecture

38 pages

lecture

lecture

9 pages

midterm

midterm

16 pages

Lecture

Lecture

39 pages

Lecture

Lecture

14 pages

Lecture

Lecture

46 pages

Lecture

Lecture

8 pages

Lecture

Lecture

40 pages

Lecture

Lecture

11 pages

Lecture

Lecture

41 pages

Lecture

Lecture

38 pages

Lecture

Lecture

9 pages

Lab

Lab

3 pages

Lecture

Lecture

53 pages

Lecture

Lecture

51 pages

Lecture

Lecture

38 pages

Lecture

Lecture

42 pages

Lecture

Lecture

49 pages

Lecture

Lecture

63 pages

Lecture

Lecture

7 pages

Lecture

Lecture

51 pages

Lecture

Lecture

35 pages

Lecture

Lecture

29 pages

Lecture

Lecture

65 pages

Lecture

Lecture

47 pages

Lecture

Lecture

41 pages

Lecture

Lecture

41 pages

Lecture

Lecture

32 pages

Lecture

Lecture

35 pages

Lecture

Lecture

15 pages

Lecture

Lecture

52 pages

Lecture

Lecture

16 pages

Lecture

Lecture

4 pages

lecture

lecture

27 pages

lecture04

lecture04

46 pages

Lecture

Lecture

46 pages

Lecture

Lecture

13 pages

lecture

lecture

41 pages

lecture

lecture

38 pages

Lecture

Lecture

40 pages

Lecture

Lecture

25 pages

Lecture

Lecture

38 pages

lecture

lecture

11 pages

Lecture

Lecture

42 pages

Lecture

Lecture

12 pages

Lecture

Lecture

36 pages

Lecture

Lecture

46 pages

Lecture

Lecture

35 pages

Lecture

Lecture

34 pages

Lecture

Lecture

9 pages

lecture

lecture

49 pages

class03

class03

39 pages

Lecture

Lecture

8 pages

Lecture 8

Lecture 8

42 pages

Lecture

Lecture

20 pages

lecture

lecture

29 pages

Lecture

Lecture

9 pages

lecture

lecture

46 pages

Lecture

Lecture

12 pages

Lecture

Lecture

24 pages

Lecture

Lecture

41 pages

Lecture

Lecture

37 pages

lecture

lecture

59 pages

Lecture

Lecture

47 pages

Lecture

Lecture

34 pages

Lecture

Lecture

38 pages

Lecture

Lecture

28 pages

Exam

Exam

17 pages

Lecture

Lecture

21 pages

Lecture

Lecture

15 pages

Lecture

Lecture

9 pages

Project

Project

20 pages

Lecture

Lecture

40 pages

L13b_Exam

L13b_Exam

17 pages

Lecture

Lecture

48 pages

Lecture

Lecture

10 pages

Lecture

Lecture

52 pages

21-p2p

21-p2p

16 pages

lecture

lecture

77 pages

Lecture

Lecture

18 pages

Lecture

Lecture

62 pages

Lecture

Lecture

25 pages

Lecture

Lecture

24 pages

Project

Project

20 pages

Lecture

Lecture

47 pages

Lecture

Lecture

38 pages

Lecture

Lecture

35 pages

Roundup

Roundup

45 pages

Lecture

Lecture

47 pages

Lecture

Lecture

39 pages

Lecture

Lecture

13 pages

Midterm

Midterm

22 pages

Project

Project

26 pages

Lecture

Lecture

11 pages

Project

Project

27 pages

Lecture

Lecture

10 pages

Lecture

Lecture

50 pages

Lab

Lab

9 pages

Lecture

Lecture

30 pages

Lecture

Lecture

6 pages

Lecture

Lecture

8 pages

Lecture

Lecture

28 pages

Lecture

Lecture

30 pages

Project

Project

13 pages

Lecture

Lecture

11 pages

Lecture

Lecture

12 pages

Lecture

Lecture

48 pages

Lecture

Lecture

55 pages

Lecture

Lecture

36 pages

Lecture

Lecture

17 pages

Load more
Download r05-ruby
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view r05-ruby and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view r05-ruby 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?