CIT 383: Administrative Scripting

Slides:



Advertisements
Similar presentations
Copyright © Steven W. Johnson
Advertisements

An Introductory Tutorial. Background and Purpose.
Chapter 15 © 2010 by Addison Wesley Longman, Inc Origins and Uses of Ruby - Designed by Yukihiro Matsumoto; released in Use spread rapidly.
Ruby on Rails Tutorial Peter Mosca April, Ruby on Rails Tutorial Ruby History Invented 12 years ago in Japan by Yukihiro Matsumoto Spent first 5.
CPSC 231 Organizing Files for Performance (D.H.) 1 LEARNING OBJECTIVES Data compression. Reclaiming space in files. Compaction. Searching. Sorting, Keysorting.
Performed by:Gidi Getter Svetlana Klinovsky Supervised by:Viktor Kulikov 08/03/2009.
Scripting with Ruby What is a scripting language? What is Ruby?
CIT 383: Administrative ScriptingSlide #1 CIT 383: Administrative Scripting RSS.
15-Jul-15 JSON. JSON example “JSON” stands for “JavaScript Object Notation” Despite the name, JSON is a (mostly) language-independent way of specifying.
MIS316 – BUSINESS APPLICATION DEVELOPMENT – Chapter 14 – Files and Streams 1Microsoft Visual C# 2012, Fifth Edition.
CS190/295 Programming in Python for Life Sciences: Lecture 1 Instructor: Xiaohui Xie University of California, Irvine.
Objectives Learn what a file system does
CHP - 9 File Structures. INTRODUCTION In some of the previous chapters, we have discussed representations of and operations on data structures. These.
CIT 383: Administrative ScriptingSlide #1 CIT 383: Administrative Scripting XML.
MIS 385/MBA 664 Systems Implementation with DBMS/ Database Management Dave Salisbury ( )
Prof. Yousef B. Mahdy , Assuit University, Egypt File Organization Prof. Yousef B. Mahdy Chapter -4 Data Management in Files.
Cis303a_chapt03-2a.ppt Range Overflow Fixed length of bits to hold numeric data Can hold a maximum positive number (unsigned) X X X X X X X X X X X X X.
Data and its manifestations. Storage and Retrieval techniques.
Chapter 8 Cookies And Security JavaScript, Third Edition.
INSERT BOOK COVER 1Copyright © 2011 Pearson Education, Inc. Publishing as Prentice Hall. Exploring Microsoft Office Excel 2010 by Robert Grauer, Keith.
CSC 2720 Building Web Applications Database and SQL.
NMED 3850 A Advanced Online Design January 12, 2010 V. Mahadevan.
CIT 383: Administrative ScriptingSlide #1 CIT 383: Administrative Scripting Writing Methods.
DATABASE DEVELOPMENT Overview. Definitions A Database is a structured collection of related data (not necessarily electronic) A Relational database is.
Data Storage Choices File or Database ? Binary or Text file ? Variable or fixed record length ? Choice of text file record and field delimiters XML anyone.
Data Structure & File Systems Hun Myoung Park, Ph.D., Public Management and Policy Analysis Program Graduate School of International Relations International.
External data structures
Trends in Scripting Languages History For me the purpose of life is partly to have joy. Programmers often feel joy when they can concentrate on the creative.
Operating Systems COMP 4850/CISG 5550 File Systems Files Dr. James Money.
CIT 383: Administrative ScriptingSlide #1 CIT 383: Administrative Scripting Methods and Hashes.
Open Source Server Side Scripting ECA 236 Open Source Server Side Scripting MySQL – Inserting Data.
JSON Java Script Object Notation Copyright © 2013 Curt Hill.
CIT 383: Administrative ScriptingSlide #1 CIT 383: Administrative Scripting Introduction.
Chapter 14: Files and Streams. 2Microsoft Visual C# 2012, Fifth Edition Files and the File and Directory Classes Temporary storage – Usually called computer.
Scripting with Ruby What is a scripting language? What is Ruby?
WDDX Case Study: Building a Cross CFUG Search April Fleming.
CIT 383: Administrative ScriptingSlide #1 CIT 383: Administrative Scripting Regular Expressions.
CIT 383: Administrative ScriptingSlide #1 CIT 383: Administrative Scripting HTTP.
CIT 383: Administrative ScriptingSlide #1 CIT 383: Administrative Scripting Numbers.
Scripting with Ruby What is a scripting language? What is Ruby?
Standard Types and Regular Expressions CS 480/680 – Comparative Languages.
CIT 383: Administrative ScriptingSlide #1 CIT 383: Administrative Scripting Directories.
CIT 383: Administrative Scripting
CIT 383: Administrative ScriptingSlide #1 CIT 383: Administrative Scripting DateTime.
Project 5: Customizing User Content Essentials for Design JavaScript Level Two Michael Brooks.
Dept. of Animal Breeding and Genetics Programming basics & introduction to PERL Mats Pettersson.
CIT 383: Administrative ScriptingSlide #1 CIT 383: Administrative Scripting Commands.
Retele de senzori Curs 2 - 1st edition UNIVERSITATEA „ TRANSILVANIA ” DIN BRAŞOV FACULTATEA DE INGINERIE ELECTRICĂ ŞI ŞTIINŢA CALCULATOARELOR.
JSON (Copied from and from Prof Da Silva) Week 12 Web site:
Apache Avro CMSC 491 Hadoop-Based Distributed Computing Spring 2016 Adam Shook.
XML & JSON. Background XML and JSON are to standard, textual data formats for representing arbitrary data – XML stands for “eXtensible Markup Language”
CPSC 231 Organizing Files for Performance (D.H.)
CIT 383: Administrative Scripting
CIT 383: Administrative Scripting
CIT 383: Administrative Scripting
CS190/295 Programming in Python for Life Sciences: Lecture 1
CIT 383: Administrative Scripting
CIT 383: Administrative Scripting
CIT 383: Administrative Scripting
CIT 383: Administrative Scripting
Strings and Serialization
CIT 383: Administrative Scripting
CIT 383: Administrative Scripting
CIT 383: Administrative Scripting
CIT 383: Administrative Scripting
CIT 383: Administrative Scripting
CIT 383: Administrative Scripting
MIS 385/MBA 664 Systems Implementation with DBMS/ Database Management
Chapter 5 File Systems -Compiled for MCA, PU
Database management systems
Presentation transcript:

CIT 383: Administrative Scripting Data Persistence CIT 383: Administrative Scripting

CIT 383: Administrative Scripting Topics Data Models Delimited Fields Fixed Length Records Serialization Concurrency YAML CIT 383: Administrative Scripting

CIT 383: Administrative Scripting Data Models Flat Model Single two-dimensional array of data elements. Example: CSV Hierarchical Model Data organized into a tree-like structure. Example: XML Relational Model Multiple tables with precisely defined relations. Example: MySQL CIT 383: Administrative Scripting

CIT 383: Administrative Scripting Storage Types Flat Text Files Delimited fields Fixed length records Flat Binary Files Marshal DBM Hierarchical Structured Text XML YAML CIT 383: Administrative Scripting

CIT 383: Administrative Scripting Delimited Fields Text fields separated by a delimiter. CSV /etc/passwd Advantages Simple: use standard file I/O and split. Humanly readable storage. Disadvantages Must have technique to escape delimiter. Slow to access a specific record. Hard to update or delete data (must rewrite file.) CIT 383: Administrative Scripting

CIT 383: Administrative Scripting Fixed Length Records Use record sizes of a fixed number of bytes. aaaabbccccccccdddd Advantages Do not need to use any escaping. Fast direct access to records (n * record_size). Easy to update/delete: just write over record. Disadvantages Wastes space: record size >= size of largest data. Need special character to fill fields to record size. CIT 383: Administrative Scripting

CIT 383: Administrative Scripting Serialization Converting an object into a sequence of bits. A/K/A: marshaling, deflating. Necessary to save data beyond simple strings. Converting an array to a sequence: favs = %w{Haskell OCaml Python Ruby} Marshal.dump(favs) "\004\010[\n\"\fHaskell\"\nOCaml\"\ vPython\"\tRuby" CIT 383: Administrative Scripting

CIT 383: Administrative Scripting Concurrency What if two programs access data at once? Two reads: no problem. Two writes: race condition. Race Condition Example Two payments: A for $50, B for $100, funds = $1000 A 1. data = read(file) data[‘funds’] = 1000 3. data[‘funds’] += 50 data[‘funds’] = 1050 5. write(file, data) 2. data = read(file) data[‘funds’] = 1000 4. data[‘funds’] += 100 data[‘funds’] = 1100 6. write(file, data) CIT 383: Administrative Scripting

CIT 383: Administrative Scripting Locking Files Prevent concurrent access by locking files. A: lock(file) B: lock(file) fails since A has lock A: does stuff with file A: unlock(file) B: lock(file) succeeds B: does stuff with file Ruby code for file locking: file = File.new(‘data’) file.flock(File::LOCK_EX) ... do stuff with file ... file.flock(File::LOCK_UN) CIT 383: Administrative Scripting

CIT 383: Administrative Scripting YAML YAML Ain’t a Markup Language Originally Yet Another Markup Language. Changed since primarily used to store data. Simple language for storing data. Humanly readable and writable. Less verbose than XML. Superset of JSON (JavaScript Object Notation.) CIT 383: Administrative Scripting

CIT 383: Administrative Scripting YAML Syntax Lists --- # List of languages - Ruby - Python - Perl --- # Short form of list [Ruby, Python, Perl] CIT 383: Administrative Scripting

CIT 383: Administrative Scripting YAML Syntax Hashes --- # User record username: smithj uid: 11387 gcos: John Smith --- # Short form of hash {username: smithj, uid: 11387, gcos: John Smith} CIT 383: Administrative Scripting

CIT 383: Administrative Scripting YAML Syntax Strings Regular strings need no punctuation. Long strings use --- beginning. --- | This section preserves newlines just as they appear. --- > This section ignores newlines, and their only purpose is to make text readable. CIT 383: Administrative Scripting

CIT 383: Administrative Scripting YAML vs XML XML <user id="smith"> <firstname>Al </firstname> <lastname>Smith </lastname> <phone>555-1111 </phone> <email>al@gmail.com </email> <email>smith@nku.edu </user> YAML smith: firstname: Al lastname: Smith phone: 555-1111 emails: - email: al@gmail.com - email: smith@nku.edu CIT 383: Administrative Scripting

CIT 383: Administrative Scripting YAML in Ruby Serializing objects to YAML require ‘yaml’ favs = %w{Haskell OCaml Python Ruby} puts favs.to_yaml Retrieving objects from YAML file = File.new(‘data.yaml’) favs = YAML.load(file) CIT 383: Administrative Scripting

CIT 383: Administrative Scripting References Michael Fitzgerald, Learning Ruby, O’Reilly, 2008. David Flanagan and Yukihiro Matsumoto, The Ruby Programming Language, O’Reilly, 2008. Hal Fulton, The Ruby Way, 2nd edition, Addison- Wesley, 2007. Robert C. Martin, Clean Code, Prentice Hall, 2008. Dave Thomas with Chad Fowler and Andy Hunt, Programming Ruby, 2nd edition, Pragmatic Programmers, 2005. CIT 383: Administrative Scripting