Motorola H700 bluetooth pairing instructions [7/31/07]
Wednesday, January 31, 2007
"The Changing Role of Academic Libraries in the Information Age"
Michael Gorman to be featured on Thurs. Feb. 1, at noon. From the Chronicle of Higher Education Live Discussion series
Posted by Daniel at Wednesday, January 31, 2007 0 comments
Labels: VTF
Sunday, January 28, 2007
Metadata Authoring Tools
Interesting discussion taking place on web4lib about metadata authoring tools to be used with various Digital Asset Management Sytems (DAMS). I know Yale is planning to use XMetaL with FEDORA, but it's interesting to see what others are doing. Winona Salesky at the University of Vermont, for instance, is using W3C-compliant XForms with an open-source eXist database, about which she provides details in her blog. And she cites Matt Zumwalt's usage of MODS XForms in a FEDORA repository, as noted by Peter Feston.
Posted by Daniel at Sunday, January 28, 2007 0 comments
Wednesday, January 17, 2007
MySQL & PHP (NELINET)
NELINET course: Introduction to MySQL , taught by Ed Sperr WHERE Clauses Relational Database How would you set somthing like this up if you're a collection deve librarian keeping track of vendor gifts and contacts? Joins SELECT vendor FROM vendors JOIN reps ON (id = vendor_id) WHERE gift LIKE "%pens%"; SELECT vendor FROM vendors, peps WHERE (id - vendor_id And gift LIKE '%pens%'); Add more data ... INSERT INTO reps (lname, fname, phone, gift) VALUES ("Delor", "Jacques", "(617)525-8412", "Big wheel of stinky brie"); INSERT INTO reps (lname, fname, phone, gift, vendor_id) VALUES ("Sneed", "Shanna", "(508)522-1567", "Old ALA \"Read\" Posters", 3); If I want to see all information about people who work at Rittenhouse: SELECT * FROM reps JOIN vendors ON (id = vendor_id) WHERE vendor = "Rittenhouse"; To see everybody: SELECT * FROM reps JOIN vendors ON (id = vendor_id); JOIN = INNER JOIN But what about Jacques (who's currently unemployed)? SELECT * FROM reps LEFT JOIN vendors ON (id = vendor_id); What happens with SELECT * FROM reps RIGHT JOIN vendors ON (id = vendor_id); Jacques doesn't show up because he doesn't appear in second table. With authors spelled differently, another table for authority control. To do this, get rid of Books table: DROP TABLE table_name; New one: CREATE TABLE books(id int primary key, title VARCHAR(255), pubinfo VARCHAR(100), author_id int); CREATE TABLE authors (id int primary key, lname VARCHAR(255), fname VARCHAR(100), author_id int); LOAD DATA INFILE 'T:/classfiles/mysql/authors.txt' INTO TABLE authors; Then, select * from authors, books where authors.id = author_id; MySQL more secure than MS Access? Tools exist to convert one from the other. Another option: export as tab-delimited text file. Keep in mind that Access designed to be personal, part of MS Office, whereas MySQL built from bottom up for Web environment. Grab apache, php, etc., files from XAMPP, not for production, but good for sandbox playing around. MySQL is backend silo where data live. Scripting langauges allow us to communicate with them e.g., PHP, PERL, Python, ColdFusion to auomate tcomman language,
Most steps and examples on handout. Commands should work in all versions of SQL, including MS-SQL (i.e., in Access).
Starting with MySQL 5.0 command line client, enter password, then:
show databases; [all commands end with semi-colons]
Then, start Apache 2 (here, activate dormant icon on system tray.)
Then, browser address bar: localhost/pma to get php myadmin, allows us (like command line) to talk with backend database. This serves as GUI interface, almost OPAC-like, i.e. "using Web browser to make request to apache server".
USE databases; (or Use wikidb;, etc.)
[here: plus sign denotes mysql command prompt]
UP ARROW show earlier commands
+show databases;
+drop ....; [actually deletes the thing from harddrive]
Next step: create our own db:
+create database mylibrary;
+use mylibrary;
+create table characters (name varchar(30),occupation varchar(20));
+show tables;
+describe characters;
Or use phpmyadmin, refresh, select mothergoos database on left column. Data dictionary shows schema of table.
So far table is defined, but still empty.
+INSERT INTO table_name (col_name,...) VALUES (value,...)
+INSERT INTO characters (name, occupation) VALUES ("Mary", "shepherdess");
Computer response: Query OK, one row affected.
To retrieve data from table ("if there's one thing you should take away from this class ...") :
+SELECT select_expr FROM table_name
New example
+create database mylibrary;
+use mylibrary;
We're going to store:
Title (as "title")'
Publication Information (as "pubinfo")
Author's last name (as "lname")
first name (as "fname")
Authors Dates (as "adates")
Publication Date (as "pdate")
Hint: CREATE TABLE table_name(field_name data_type(length),...)
+CREATE TABLE books (title VARCHAR(255), pubinfo VARCHAR(255), lname VARCHAR(255), fname VARCHAR(255), adates CHAR(9), pdate CHAR(4));
If mysql prompt disappears, try several carriage returns, but may need to close and reopen command line client.
+insert into books (title, pubinfo, lname, fname, adates, pdate) values ("Moby Dick, or, the Whale", "New York; London: Penguin, 2003.", "Melville", "Herman", "1819-1891", "2003");
Remember that double quotes escapes all the characters within, including single quote. Backslash is another escape character
Inserting records from comma and tab delimited text files.-->
+load data infile 'T:/classfiles/mysql/books.txt' into table books;
Then
+select * from books; [to retrieve all data]
MySQL 5.0 manual
Make sure fields are put in the right order, so: "select title [etc.] from books;" ("'Select' is bread and butter command") Much better display in phpadmin, selecting db, then sql tab, then "sel * from books" [this produces cool OPAC-like display]
New topic: "Aggregate functions", math-oriented transactions,
e.g., SELECT select_expr, agg_func(expr) FROM table_name GROUP BY field
GROUP BY means: grouping like things together, again easier to see in phpmyadmin. What if we wanted to count number of books by each author. E.g., everything written by S. Clemens ...
SELECT fname, lname, COUNT (title) FROM books GROUP BY lname;
Put in alphabetical order?
SELECT select_expr FROM table 1 JOIN table2 ON (table1_field-table2_field) WHERE where_condition
or
or
PHP 11/15/06
"Hypertext pre-processor"
Helper applications PHP MyAdmin and MySQL Command line client. These are ways of communicating with black-box MySQL running in background. Today, more sophisticated way to do the same thing. Scripting language PHP instead of command line and MyAdmin. Why? Relatively simple. OSS. Best way to learn: look at code other people post on message boards. Designed from ground up specifically for building Web applications. Interpretated language, i.e., does not need to be compiled (e.g., C++), so changes show up immediately, instant gratification. Also: Iterative.
Static Web page = simple file request. PHP (installed, along with Apache, on Web server) mediates the request. php.net documentation "is fabulous".
"Follow the bouncing ball" metaphor: "Hello World" [?php echo 'Hello World!; ?]
C:-->Program Files-->Apache Group-->Apache Group-->htdocs, where Apache installs itself.
Basic php command is "Echo". Similar to "Print" command. Followed by argument: 'Hello World' . Result is no longer static text, but rather output of a compmand. "You have just gone through the rabbit hole (or looking glass)."
Variables (Or, PHP Madlibs). "Jack and [] went up the [] to fetch a [] of water ..." Could use this technique to collect input in Web form, then sent it to SQL as structured query, and return results as HTML output. Single quotes are literal, double quotes or no quotes are variable. Period stitches things together.
FYI: Scintilla seems like good text editor.
Loop command: Keep doing operation until given condition has been met. For loops establish set of starting conditions, est., what is to change, est. assessment for when conditions are met; this concept common to all programming languages. E.g.: ($i = 0; $i while ... uses same concept but structured differently, with php commands in separated code-blocks, says "Do this WHILE this is the case".
If statement: If variable favorite color is blue do what's in brackets, otherwise "else", i.e., do other bracketed echo (very similar to PERL command). Quotation marks around html attributes require backslash escape characters.
Date function: asks the system "What's the time?" There are lots of built-in PHP gfunctions; and one can create or call other functions.
multiplier.php file shows mathematical functions, and multiplier2.php shows for loop through 13. "Leveraging power of 'for-loop' to save ourselves time." See form: "multiform.html", interesting part is "form action=" in this case "from action 'multiback.php' method= 'get' "
Arrays
Similar to variables, but convenient structure for storing multiple related values, require keys and values, where keys can be integers ("0", "1", "2", etc.) or names (e.g., "Title", "Author") ... Result of simple array looks like table with key in column one and value in column 2.
Easiest way to creat new database is to drop new data folder into MySQLData folder.
In order to use PHP to communicate with SQL db, need to do the following:
(1) connect to DB,
a. use built-in function called mysql connect: myql_connect(host, user name, password
b. mysql_select_db
(2) run query (pass sql query to a function),
a. mysql_query(sqlquery)
(3) retrieve the results,
a. mysql_fetch_assoc(resource_result) [fetches set of arrays reprenting rows of a database)]
(4) then format (parse) them for display (at which PHP really excels).
EXAMPLE:
search_step1.php ...
beware sql injection attacks. Final example iteration shows safety feature.
Posted by Daniel at Wednesday, January 17, 2007 0 comments
Monday, January 15, 2007
Access 2006 sessions
Podcasts from Access 2006 are now available.
Sessions of particular interest:
Cynthia Carlton on FCUIPID III, Rochester’s XML Catalog,
Dan Chudnov on Collapsing Green Zotero Dialtone Geeks (Thunder Talks)
Thom Hickey on VIAF: Large Scale Matching of Personal Names
Clifford Lynch on Looking at the World of Networked Information: the View from CNI, Fall 2006
Roy Tennant on Getting the Goods: Libraries & The Last Mile
Posted by Daniel at Monday, January 15, 2007 0 comments
Future of Bibliographic Control (LC WG)
http://www.loc.gov/today/pr/2006/06-222.html
"Advances in search-engine technology, the popularity of the Internet and the influx of electronic information resources have greatly changed the way libraries do their work. To address those changes, the Library of Congress has convened a Working Group on the Future of Bibliographic Control to examine the future of bibliographic description in the 21st century." [quoted by B. Sloan in Web4Lib, who adds: "I forgot to include a couple of URLs from related LJ items from April 24 and today: http://www.libraryjournal.com/article/CA6327144.html http://www.libraryjournal.com/article/CA6397827.html]
Posted by Daniel at Monday, January 15, 2007 0 comments
Monday, January 01, 2007
Simon Winheld in WSJ feature
Simon is one of the comic book artists featured in At the Drawing Board in the 3/20/07 WSJ.
Posted by Daniel at Monday, January 01, 2007 0 comments