本文转自:https://docs.google.com/document/d/1wnpJBS-Q9Yswp7r2fGfzvOzjjz0C971INU3pDfgZd8k/edit#
原文PDF下载连接
链接: https://pan.baidu.com/s/1-iwO5Se3M_D3CGEWaBPMmg 密码: j796
本内容仅供自己参考,如果需要,可以下载原文PDF查看。
February 22nd-25th, 2016
University of California, Santa Barbara
Santa Barbara, CA
Course Goals
The goal of Hydra Camp is to introduce new developers to the skills and tools they will need to
successfully build Hydra based digital repository solutions. There’s a lot of ground to cover and
you won’t walk away at the end of the week a complete expert, but we hope we’ll have provided
you enough of a scaffolding to jump-start your own work and keep learning like the rest of us.
We hope that the topics covered at Hydra Camp provide enough breadcrumbs that you’ll have a
good idea where to start looking once you get home and start digging into problems on your
own!
Supplies
● Laptop & Power Supply
● Headphones/Earbuds
● Water bottle/Travel Mug
Location
● ROOM - UCSB Library 1575 . On arriving at UCSB campus, please make your way to
the library. At the Library reference desk they can direct you to Room 1575, where the
session is being held.
● Transport - If you are staying at the Pacifica Suites Hotel, campus is about a 5 minute
drive. UCSB Library will provide morning and afternoon shuttle service. You can also
take MTD Bus 11 or 12x. See also UCSB Library Directions and Parking page.
● WIFI SSID: Will be provided in-class
Hydra Camp Syllabus 2016 - rev 1 - Page 1
Prerequisites
● If you have never used Ruby, visit
http://tryruby.org for an interactive tutorial.
● We’ll be providing a VirtualBox VM with everything you need for development, if you
have time please install VirtualBox ( download here ) and install Vagrant ( download here )
before class if possible.
● Create a (free) Github Account if you don't already have one:
https://github.com/signup/free
○ We’ll walk through creating Github SSH Keys and setting them up for your
development environment
● NOTE: We’ll have help available in class if you run into any troubles getting your system
set up. The provided VirtualBox image will have Ubuntu installed and the necessary
tools to complete class exercises.
Syllabus
Day 1: Monday, February 22nd
● UCSB Library Shuttle Van leaves Pacifica Suites hotel at 8:30am
● MORNING - start 9:00am
○ Welcome - Housekeeping - Introductions
■ Your name, institution, something unique about yourself
○ Course goals
○ Rails for Zombies - at your own pace - bring headphones
https://www.codeschool.com/courses/rails-for-zombies-redux
○ IN PARALLEL - finish VirtualBox & Vagrant setup, distribute thumb-drives
■ Setup VMs and/or confirm local dev environments
● Copy the /tutorial directory from the thumb drive
● Open a terminal window and change directory to where you
copied the tutorial directory
● Start the virtual machine and login
vagrant up
vagrant ssh
#alternate login option
# ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
vagrant@localhost -p 2222
● You should get a prompt like vagrant@camper:~$
● Config the local git with your name and e-mail
git config --global user.name "Your Name"
git config --global user.email
[email protected]
● If you receive errors involving \r (end of
line), edit the global .gitconfig file by
running the command:
git config --global core.autocrlf false
○ [Optional] RailsBridge - Intro to Rails
http://docs.railsbridge.org/intro-to-rails/ - you can skip Heroku sections
Hydra Camp Syllabus 2016 - rev 1 - Page 2
● LUNCH - on your own Campus Map PDF
● AFTERNOON
○ Dive into Hydra - https://github.com/projecthydra/hydra/wiki/Dive-into-Hydra
○ before Lesson #1 complete the following steps
■ vagrant up # start your VM
■ vagrant ssh # connect to the guest system
■ cd /vagrant # use a shared directory
■ rails new hydra-demo # and continue the tutorial
○ The guest system is running Linux - follow step 1a
○ Solr & Fedora
■ “start a new terminal window” = open a new terminal window, `vagrant
ssh`, `cd /vagrant/hydra-demo`
■ Use the following to start fedora with data on a non-shared directory:
fcrepo_wrapper -p 8984 -d ~/fcrepo4-data
● 4:45pm - UCSB Library Shuttle Van leaves UCSB to Pacifica Suites
● UCSB Library Shuttle Van leaves Pacifica Suites at 6:45pm to restaurant
● DINNER - 7:00pm group dinner (self funded) @ Enterprise Fish Company, 225 State St,
Santa Barbara, CA 93101, (805) 962-3313, Shuttle leaves from downtown train station
parking lot at time 9pm, return to Pacifica Suites
Day 2: Tuesday, February 23rd
● UCSB Library Shuttle Van leaves Pacifica Suites hotel at 8:30am
● MORNING - start 9:00am
○ Dive into Hydra Works
■ We’ve done most of the setup already on Monday
■ If you shut down your system or VM and need help getting things started
up again, Alex, Ian, Matt, or Mark will be happy to help
■ Add hydra-works to your Gemfile - Lesson: add the Hydra dependencies
■ Then jump to Lesson 5: define models with hydra works
○
● LUNCH - on your own
● AFTERNOON
○ PCDM Overview
■ Initial Hydra Community Use Cases
○ Hydra Framework Technical Overview
https://wiki.duraspace.org/display/hydra/Technical+Framework+and+its+Parts
also:
https://drive.google.com/file/d/0BytolfRBVL3rZDg4YlVVLTZOMmM/view?usp=sh
aring
also:
https://github.com/projecthydra/projecthydra.github.io/blob/master/training/deeper
_into_hydra/hydra_9_architecture.png
○ A More Worthwhile Sufia: Now with PCDM™
Hydra Camp Syllabus 2016 - rev 1 - Page 3
○ Hydra’s in the wild
○ [Optional] LDP-PCDM walkthrough
○ [Optional] http://vim-adventures.com
● 4:45pm - UCSB Library Shuttle Van leaves UCSB to Pacifica Suites
● DINNER - on your own
Day 3: Wednesday, February 24th
● UCSB Library Shuttle Van leaves Pacifica Suites hotel at 8:30am
● MORNING - start 9:00 am
○ Starting services in a VM
■ solr_wrapper -d solr/config/ --collection_name hydra-development
■ fcrepo_wrapper -p 8984 -d ~/fcrepo-data
■ rails server -b 0.0.0.0
( or see
http://stackoverflow.com/questions/28668436/how-to-change-the-default-binding-ip-of-rails
-4-2-development-server )
○ Self-deposit in Sufia - on your VM
■ Install Sufia 7 (Development): https://github.com/projecthydra/sufia
see also http://demo.curationexperts.com (Sufia
6) https://github.com/projecthydra/sufia
■ Dependencies are pre-installed in your VM
■ Fedora walkthrough of deposited items
■ Rails console walkthrough of deposited items
■ Mark’s server http://marks-mb.local:3000
○ Question: How do I find the collection membership of a work or set of works?
■ Possible solution at the bottom of the API:
https://github.com/projecthydra-labs/hydra-works/wiki/Aggregations-API-D
ocumentation
○ Collaborative development exercise using github. Also see:
■ https://github.com/projecthydra/hydra/blob/master/CONTRIBUTING.md
■ https://help.github.com/articles/using-pull-requests
■ Create a repo for the class project
■ What partial am I looking at?
https://gist.github.com/bmaddy/4567fad5aa55e5a600e1
+ EXPLAIN_PARTIALS=true rails s
■ git remote add origin
https://github.com/curationexperts/ucsb-camp-works.git
git push -u origin master
■ https://github.com/curationexperts/ucsb-camp-concerned
■ https://github.com/curationexperts/ucsb-camp-sufia
■ https://github.com/curationexperts/ucsb-camp-works
■ Github id’s here:
● ...
○ [OPTIONAL] Set up a local development environment on your laptop (instead of
working in the VM). If you also want to run a local development environment
directly on your laptop - RailsBridge Installfest has good instructions for getting
Hydra Camp Syllabus 2016 - rev 1 - Page 4
your system setup: http://installfest.railsbridge.org/installfest/ - you can skip the
Heroku steps.
○ Development Environment Requirements (All included in Virtual Machine)
■ If you’re using a Mac, install/update XCode & Homebrew .
■ Install Git (on Mac, we recommend using Homebrew to install git)
■ Install RVM + Ruby 2.3.0 using RVM `rvm install ruby-2.3.0`
■ Install Java 8 runtime
■ Install Rails 4.2: `gem install rails 4.2`
■ Redis: apt-get or brew install
■ FITS: https://github.com/curationexperts/hydradam/wiki/Installation%3A-fits
■ Imagemagick: apt-get or brew install
■ FFMPEG
■ Install a Text Editor of your choice. Many people use TextMate (not free)
or Atom (free). VIM is hardcore but some of us do it.
● UCSB Library Shuttle Van leaves Library at 11:50am to restaurant
● LUNCH - 12:00pm group lunch hosted by UCSB Library, Beachside Restaurant @
Goleta Beach; followed by group photo . Return to Library at 1:10pm
● Library tour - 1:15pm-1:30pm
○ Continue collaborative development
○ Production Deployment
http://curationexperts.com/2013/10/07/the-hydra-production-stack/
https://github.com/curationexperts/hydradam/wiki/Production-Installation%3A-Ov
erview
○ [OPTIONAL] Solrizer walkthrough - additional references:
■ https://github.com/projecthydra/solrizer (see Readme)
■ https://github.com/projecthydra/hydra-head/wiki/Solr-Schema
○ [OPTIONAL] Blacklight quickstart
https://github.com/projectblacklight/blacklight/wiki/Quickstart
https://github.com/projectblacklight/blacklight/wiki/Configuring-and-Customizing-B
lacklight
○ [Optional] Solr Tutorial: http://lucene.apache.org/solr/resources.html
○ [Optional] Managing descriptive Metadata:
XML: https://github.com/projecthydra/om/wiki/Tame-your-XML-with-OM OR
RDF: see Sufia Examples
https://github.com/projecthydra/sufia/wiki/Customizing-Metadata:-nested-attribute
s,-part-1
https://github.com/projecthydra/sufia/wiki/Customizing-Metadata:-nested-attribute
s,-part-2
○ [Optional] Start modelling your own metadata
○ [Optional] Create some additional content (books) to search
● 5:00pm - UCSB Library Shuttle Van leaves UCSB to Pacifica Suites
● UCSB Library Shuttle Van leaves Pacifica Suites at 5:30pm to downtown Funk Zone
● DINNER - 6:30pm - downtown Funk Zone - winery & brewery & small group dinners at
restaurants. Shuttle leaves from downtown train station parking lot at 9:00pm, return to
Hydra Camp Syllabus 2016 - rev 1 - Page 5
Pacifica Suites
○ Small Group Dinner Signups
● CurationConcerns Demo app
○ sudo apt-get install libclamav-dev
○ ..and uncomment “therubyracer” gem dependency on your Gemfile
Day 4: Thursday, February 25th
● UCSB Library Shuttle Van leaves Pacifica Suites hotel at 8:30am
● MORNING - start 9:00am (no refreshments provided in classroom -- Library Summit
Cafe is open)
○ Q&A
■ Development process - feature branches, forks, pull requests
■ see: http://ndlib.github.io/practices/ruby-and-rails-developer-tools/
● Hydra-tech ■ IRC ■ Bundler & gems ■ DRY
● Debugger ■ Better Errors ■ Fedora Admin ■ IDEs
■ The Hydra Community
https://wiki.duraspace.org/display/hydra/Hydra+Community+Framework
■ Operations & Production Deployment
● Production Stack -
https://curationexperts.files.wordpress.com/2013/10/production-sta
ck-v1-0-1440x1080.png
● Avalon deployment - see especially Virtual Machine install #2:
http://www.avalonmediasystem.org/download
● HydraDam Install instructions - out of date versions, but
conceptually accurate
● Ansible, Chef, Puppet - configuration managment
https://github.com/curationexperts/ansible-hydra
● Capistrano - deployment scripting (& rollback)
● LUNCH - on your own
● AFTERNOON - Student Projects / extend Sufia
○ [OPTIONAL] Hydra Access Controls:
https://github.com/projecthydra/hydra-head/wiki/Access-Controls-with-Hydra
● 4:45pm - UCSB Library Shuttle Van leaves UCSB to Pacifica Suites
FRIDAY - Hydra Regional Meeting
Hydra Camp Syllabus 2016 - rev 1 - Page 6
RESOURCES
● Get on the hydra-tech mailing list, IRC & Slack:
https://groups.google.com/forum/#!forum/hydra-tech
The Hydra Project Wiki :
○ Get In Touch Page: https://wiki.duraspace.org/x/KwSeAg
○ Community, Groups, Calls Etc: https://wiki.duraspace.org/x/cwCi
● Hydra Developers Page
https://wiki.duraspace.org/display/hydra/Developers
also at https://github.com/projecthydra/hydra/wiki/For-Developers
● Contributing Code
○ Legal https://wiki.duraspace.org/display/hydra/Hydra+Licensed+Contributors
○ Practical https://github.com/projecthydra/hydra/blob/master/CONTRIBUTING.md
○ Github workflow: https://guides.github.com/introduction/flow/ (+ the other github
guides)
● Release notes and wiki for individual gems (varies)
○ Wiki: eg. https://github.com/projecthydra/hydra/wiki
○ Release notes: eg. https://github.com/projecthydra/active_fedora/releases
○ Semantic versioning: http://semver.org
● General Rails Programming
○ CodeSchool: https://www.codeschool.com/paths/ruby#starting-rails
○ RailsBridge: http://docs.railsbridge.org/docs/
○ Rails Guides: http://guides.rubyonrails.org
○ Humble Little Ruby Book: http://www.humblelittlerubybook.com
○ RAILS APIs: http://api.rubyonrails.org/
○ Skilled Up: http://www.skilledup.com/learn-ruby-on-rails-guide/
● Data Models
○ Dive into Hydra - the basic case
○ Sufia - Medium Sized RDF file-centric model
https://github.com/projecthydra/sufia/blob/master/sufia-models/app/models/conce
rns/sufia/generic_file/metadata.rb
https://github.com/projecthydra/sufia/blob/master/sufia-models/app/models/datast
reams/generic_file_rdf_datastream.rb
○ etc.
○ UCSD DAMS Data Dictionary
■ Tiered RDF modelling with PCDM/DPLA Schema/Local
Classes/predicates
● Example Hydra and Hydra related sites
○ IUCat (Blacklight Only) - http://www.iucat.iu.edu
Hydra Camp Syllabus 2016 - rev 1 - Page 7
○ Spotlight (Blacklight + Spotlight) -
■ Live Exhibit - Maps of Africa
■ Blog post with videos
○ Avalon Media System: http://www.avalonmediasystem.org/
● Integrated Development Environments
○ RubyMine: http://www.jetbrains.com/ruby/
○ Aptana RadRails: http://www.aptana.com/products/radrails
● Data Curation Experts
○ Website & contact info: http://curationexperts.com
● Tell your Friends about Hydra Camp!
http://curationexperts.com/who-we-are/about/hydra-camp/
● RDF book: Semantic Web for the Working Ontologist: Effective Modeling in RDFS and
OWL http://workingontologist.org/
● RDF Primer: http://www.w3.org/TR/2014/NOTE-rdf11-primer-20140225/
● ResourceSync: http://www.openarchives.org/rs/toc
● What goes where in Sufia / Curation Concerns:
https://docs.google.com/document/d/1mMIIQCm18Cosk3vfSsTzECGMRi2m-USBWwt-8
9DxbNE/edit
Hydra Camp Syllabus 2016 - rev 1 - Page 8