Difference between revisions of "Technology"
(→regex) |
|||
Line 1: | Line 1: | ||
====pages==== | |||
[[AWS]] [[obforum]] [[git]] | |||
==log== | ==log== | ||
10/24/10 | 10/24/10 |
Revision as of 13:51, 26 January 2012
pages
log
10/24/10
- sidetracked to passing additional info in autocomplete - see jquery here
9/4/10
8/29/10
Janrain Engage account is setup https://rpxnow.com/relying_parties/pathboston
- set up in pathboston.com/login with rpx.html which links to the rpx site which sends back to rpx.php the user info
all on localhost/hosted/assess hay:
- Mysql stuff for vocab, glossary, quiz and sources/topic/unit/courses has bee changed from flat files to relational
- vocabgrab and vocabgrid are done, both use Jquery autocomplete
- wikiquiz/wiki2db is done and uses Jquery autocomplete with multiple entries
some notes
- https://rpxnow.com/relying_parties/pathboston cool login stuff now at /login
- http://www.binaryhexconverter.com/binary-ascii-characters-table weird ascii codes
- grid.xsl is morphing so that it can take all the xml like GET_LIST and FEED_GRID_PAGE but only produce output for the one coming in
- currently working in hosted/vocab/grid1.1
- in mac terminal xsltproc some.xsl some.xml (-o outxml doesn't work right) transforms the xml.
8/18/10 - recreating hosted/ajax/grid with vocab data in /hosted/ajax/grid1
- xsl needs to be forced to refresh - in firefox use developers tools to miscel/clear data/cache
5/20/10
- =ImportHtml("http://en.wikipedia.org/wiki/Demographics_of_India"; "table";4). This function returns demographic information for the population of India.
5/15/10
- move everything to serve /forms/quiz wiki2db, db2xml, gloss2db glossdb2quizlet
- /quiz/glossary2db /vocab/2quizlet/glossdb2quizlet
- to DROP VIEW badview use command line: phpmyadmin thinks views are tables,
- mysql --user=pathbost_tim --password=nji9ol pathbost_assess
5/2/10 - now turn quiz xml into eggcode and wiki code using xsl
- a working example http://localhost:8888/vocab/grid/vocab.xml
5/1/10
- created nested xml from multiple tables
- have wiki question data in db, now need phpdom functions to create nested xml from multiple tables http://www.tonymarston.net/php-mysql/dom.html
4/23-25/10 - working on moving wikiquizzes to db /code/quiz/wiki2db.html and ,php
SELECT quiz.tname, quiz.unit, questions.question, qanswers.answer, qanswers.iscorrect
FROM quiz
LEFT JOIN questions ON quiz.tid = questions.tid
LEFT JOIN qanswers ON questions.qid = qanswers.qid
- am filling the database, 2quizzes in mamp db, ready to pull to xml
- https://www.ohloh.net/ timmck gmail 6j
- you can't really move wuff quizzes unless you disable .htaccess
- LOG ERRORS: MAC: sudo tail -f /Applications/MAMP/logs/php-error.log SERVER sudo tail -f /var/logs/php-error.log
- LOG ERRORS: linux # tail -f /var/log/messages
- less /var/log/messages
- more -f /var/log/messages
- firePHP enabled IT HAS TO BE CHECKED, ob_start(); HAS TO BE THERE Sobe video has to be off
- forum http://www.firephp.org/HQ/Support/Community.htm gmail 6j timmck
todo
4/12/10
2/5/10
- to see changes in xsl stylesheet change its name and the reference to it in the .js page.
1/18/10
- set up test dir http://localhost:8888/test/waffle.xml
- adjusted nested match="/" to work http://localhost:8888/vocab/grid2/test/test4/change.xml
12/31/09
- MAMP now points to code/hosted. updateRow() from javascript sentds a good query string but test.php doesn't know what to do with it. After that is implemented the next thing would be the paging part.
- You can debug the socument.elements selectors used by javascript by making a copy of generated source code that uses alert to test by including gstest.js
- create an editable grid with multiple records
- then make it selectable for certain words or submitters
- output select words into an:
- eggquiz
- quizlet
- wikipage
- autocomp word entry
there is a book on Ajax in pdf in code
- autocompl
- have put up autocompl for voacab database in http://pathboston.com/vocab/autocomp
- grid
- http://pathboston.com/vocab/grid/ has code to get from vocab xml file to web To see the data generated by the server, make a simple call to http://pathboston.com/vocab/grid/grid.php?action=FEED_GRID_PAGE&page=1
domain name->server
- buy a name (used namecheap.com gm na)
- create and account in whm http://sitebuilt.net:2086/
- edit the dns record to see the new account's ip address
- back to https://manage.www.namecheap.com/myaccount/domain-list.asp
- click on the domain and in the left menu on AllHost Records
- put in the ip for @ and www and change the recrd to A(address)
- wait...
startup
ruby
video
electronics
quizlet export -> csv2sql ->mysql
http://pathboston.com/ajax/csv2sql.php runs the conversion which gets uploaded through phpmyadmin
visualthesaurus vocgrabber to db
11/19 - vocab from vocabgrabber a javascript that you run with an article open in the browser that you want to grab then you select the words you want and save the list.
javascript:var%20_vgurl='http://www.visualthesaurus.com';%20var%20s=document.createElement('script');s.src=_vgurl+'/vocabgrabber/bookmarklet.js';document.getElementsByTagName('head')[0].appendChild(s);%20void(0);
http://pathboston.com/vocab/grab/vocabgrab.html goes to the visualthesuarus list page and parses the word and usage into arrays, looks up the definition
ebooks
http://nyquil.org/archives/1235-Converting-Amazon-Kindle-For-PC-Books-Now-Possible.html
0) Install Kindle for PC. The latest version of Kindle for PC has broken the scripts, so install this older version, and make sure you disable automatic updates in Kindle for PC’s settings.
1) Install 32-bit python 2.6 for Windows from here (even if your system is 64-bit you need the 32-bit version in order for this to work) : http://www.python.org/download/
2) Download unswindle.pyw and mobidedrm.py via this zip file and unzip it somewhere on your PC
3) Open the unzipped folder and double-click unswindle.pyw
Kindle For PC will now open.
4) Select the book you want to convert.
5) When the book loads, simply exit Kindle For PC
A ‘Save’ dialog will open asking you where you want to save your new decrypted .mobi file. And we’re done.
(As it uses mobidedrm, it still won’t work on Topaz/.tpz files, and the first one I tried happened to be one. Still, most books will work.)
ubuntu
chromium
- http://chromeos.hexxeh.net/wiki/doku.php?id=mac_instructions
- http://chromeos.hexxeh.net/wiki/doku.php?id=multiboot
mediawiki
bot
Trying to send stuff to api.php to append to a page. Eventually I want to append to the main page of all users. First I'll us a POST form then I'll try multiple POSTS without a form using this snippet
http://www.linux.com/archive/feature/54334
bulk import to users
http://pathboston.com/forms/bulk.html then from terminal ssh'd to pathboston.com
- cd public_html/hum310/maintenance/
- php importUserSubpage.php --title test
will put a page with that title on each user page
Don't transclude especially not sources:biblio
tesseract-ocr
to OCR an image
- open ~/Applications/ControlCenter.sh, use custom scan toBWtiff
- get it on screen (big) and 'file/grab' it or take a snapshot of it
- saveas 'j' nocompress, noalpha, TIFF
- open a terminal and run ocrjtif (it is in $PATH in /opt/sbin) and then copy and paste the ocr'd text from the terminal window.
quiz authoring environments
http://escholarship.bc.edu/jtla/vol4/6/
http://www.attotron.com/pub/quizmaker.html
http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcexam_description
http://www.bridgewater.edu/~rbowman/JSQuizMaker/makeselftest-questions.html
vocab
http://wise.sourceforge.net/ http://xdxf.revdanica.com/down/index.php
web development
http://www.w3schools.com/sitemap/sitemap_tutorials.asp
http://www.tonymarston.net/php-mysql/sample-application.html
http://www.w3schools.com/PHP/php_ajax_database.asp
csv2sql converter on pathboston.com
http://www.computorcompanion.com/LPMArticle.asp?ID=202
git
jquery
javascript
http://www.daaq.net/old/javascript/ javascript tutorial
http://www.javascript-coder.com/javascript-form/javascript-get-form.htm
DOM
css
http://css.maxdesign.com.au/index.htm
xslt
http://www.tonymarston.net/php-mysql/client-side-xslt.html
http://www.developer.com/xml/article.php/3630526/JavaScript-XSLT-Support-in-Firefox
http://www.xmlfiles.com/xsl/xsl_client.asp
Oreilly XSLT book
XSLT tutorial
_SESSION variables
The problem with having stuff happen on the server is that it always forgets what is going on from moment to moment. The server waits for a request, it could be from anywhere in the world. It doesn't know you from a whole in the wall. The only thing you can do to be remembered is stick stuff in _SESSION variables.
ajax
Asynchronous Javascript and XML(XSL) is a way to update just the part of a html page that changes instead of redrawing the whole page. AJAX combines languages like html, javascript, php, sql, xml and xsl.
historically
There are a number of mechanisms used to combine them.
- You call an HTML page and it displays
- You call an PHP page and it displays
- You call an HTML page and it calls a PHP page which gets combined and displays
- You call an HTML or PHP page and it calls a javascript page which gets combined and displays
ajax does all this
- You call an HTML page that includes a javascript page that responds to events by sending some action to PHP on the server which then instantiates a class and calls class methods some of which access a MYSQL database using SQL and then puts the results in a XML container which gets sent back to the browser then gets interpreted into XHTML by an XSL file and gets injected into some location in the page.
breaking it down
to check what's going on at the server
Send some stuff: http://pathboston.com/vocab/grid2/test/test.php?action=CHANGE_SOURCE&source=NFLhistory and get the XML back.
to check the XSL
Create a file of the XML that will be coming back from the server and then include an XSL file and see how it does.
simple bang bang browser to server to browser to server to browser
Call for data. Select from that data to query
getting around a XSL page using javascript
- ex: You want to update a database based upon what is in some text fields. How do you find the name/value pairs that you want to send to the server? The construct document.forms.grid_form_id has some elements? What are its elements?
innerHTML
a complex example form the AJAX boook
index.html includes grid.js which replaces the
grid.js initializes creating a xmlhttp request object loading a XSL stylesheet and page1 of the grid
FEED_GRID_PAGE To create page 1 of the grid has to create a URL query = grid.php?action=FEED_GRID_PAGE&page=1 and then send that query to the server by opening the request object with the query - xmlHttp.open("GET", query, true);
The script running in the browser acts once the data comes back from the server. When the readyState property changes to 4, the xmlhttp.onreadystatechange handleGridPageLoad() function will be executed. It gets the data sent back from a server using the xmlhttp.responseText property to get the xml data. The (previosly loaded) xsl stylesheet loads the XML putting it in xmlResponse=stylesheetDoc.load(xmlHttp.responseXML)
The XML is transformed to HTML and put in page = xsltProcessor.transformToFragment(xmlResponse, document);
Meanwhile to replace the gridDiv from the index.html page we've got to get the ID and put the html in there:
var gridDiv = document.getElementById(gridDivId); gridDiv.innerHTML = ""; gridDiv.appendChild(page);
meanwhile at the server...
The server just sits there waiting to do shit getting its instructions to grid.php. Grid.php takes some 'action' and then echos shit back to the browser.
The actions can be FEED_GRID_PAGE or UPDATE_ROW or DELETE_ROW.
FEED_GRID_PAGE calls the grid-class function read page and it creates the key-value pairs of the XML and puts them in in a variable that comes back as getGridXML()
The whole show runs out of the grid.xsl file which has certain live buttons that respond to "on click" events. The xsl has a menu template sitting on top of and below a table. The table has heading then a foreach row section.
The loadGridPage() function is whenever you hit previous page and next page.
EditID() is called when you click on a particular row's "edit" link. The first parameter is some unique ID which seems to be assigned for the "tr" element right after foreeach statement. It is set equal to the database ID value for the record. The function on the first time through has edit as "true" and it replaces the inner html with input boxes and update,cancel and delete buttons. The Cancel button calls editID again this time has edit as false and just displays the row data.
The update button appears when the input boxes are drawn and when clicked it calls the updateRow() which puts together a url query ?action=UPDATE_ROW&id=" + id completing it with createUpdateUrl(grid).
In createUpdateUrl(grid), grid is from document.forms.grid_form_id and document.forms.grid_form_id.elements[i].name and value pairs are added to the url query.
Update row finishes by sending off the query to grid.php and waits for the reply. It uses: xmlHttp.open("GET", query, true); xmlHttp.onreadystatechange = handleUpdatingRow; xmlHttp.send(null);
I suppose you could edit any record in the database just by sending it something like: http://pathboston.cpm/vocab/grid2/grid.php?action=UPDATE_ROW&id=224&word=covert&def=sneaky&usage=you_are_covert
All the server (grid.php) sends back is a number, if it is -1 everything is cool and edit mode is turned off and the screen is redrawn with new values by calling editID(id,false).
<source lang="php">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
This is a version using msqli and adding an OOclass to handle wuff
http://www.smallbizonline.co.uk/php_session_variables.php
http://rajshekhar.net/blog/archives/85-Rasmus-30-second-AJAX-Tutorial.html
xml and db
http://www.rpbourret.com/xml/XMLAndDatabases.htm
What techniques have you tried already? With java, there are 2 main ways of reading XML documents:
1. DOM - Document Object Model interface. This loads the XML document into main memory. With the Document Object Model, you can build documents, navigate their structure, and add, modify, or delete elements and content. Basically the DOM specifies an abstract datatype for XML logical structure. In Java the API for this is known as JAXP
http://java.sun.com/j2se/1.5.0/docs/...e-summary.html
An example of reading in a doc could be:
Expand|Select|Wrap|Line Numbers
1. public void readDoc() { 2. try { 3. 4. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 5. DocumentBuilder builder = factory.newDocumentBuilder(); 6. doc = builder.parse( new File("myXMLFile.xml") ); 7. 8. } 9. catch (FactoryConfigurationError fce){ 10. System.err.println("Could not create DocumentBuilderFactory"); 11. } 12. catch (ParserConfigurationException pce) { 13. System.out.println("Could not locate a JAXP parser"); 14. } 15. catch (SAXException se) { 16. System.out.println("XML file is not well-formed."); 17. } 18. catch (IOException ioe) { 19. System.out.println( 20. "Due to an IOException, the parser could not read the XML file" 21. ); 22. } 23. } 24.
doc is the object which holds the xml document in.
obviously you'd need to import all relevant packages etc.
Expand|Select|Wrap|Line Numbers
1. 2. import javax.xml.parsers.DocumentBuilder; 3. import javax.xml.parsers.DocumentBuilderFactory; 4. import javax.xml.parsers.FactoryConfigurationError; 5. import javax.xml.parsers.ParserConfigurationException; 6. 7. import org.xml.sax.SAXException; 8. import org.xml.sax.SAXParseException; 9. 10. import java.io.File; 11. import java.io.IOException; 12. 13. import org.w3c.dom.*; 14. 15.
2. The second way in java is to use the SAXP API, which doesn't load the XML file into memory. This is quicker than JAXP, and is useful when you know the structure of the xml file isn't going to change etc.
http://java.sun.com/j2se/1.5.0/docs/...SAXParser.html
Finally, to send it to mySQL, you need to open a connection String to the mySQL database, and then run whatever queries you want. You can use a system ODBC driver, or Sun's own JDBC driver if you haven't got the first one.
This isn't comprehensive, but should give you enough to start.....
mharrison Reply
xp pro
CD KEY:
V2C47-MK7JD-3R89F-D2KXW-VPK3J
firefox extensions
/Applications/Firefox.app/Contents/MacOS/firefox-bin --profilemanager
/Applications/Firefox.app/Contents/MacOS/firefox-bin -no-remote -P dev &
http://lifehacker.com/software/programming/how-to-build-a-firefox-extension-264490.php
unix
php
you need the ! to test if $somechar==";" (strcmp returns 0 if true)
- if(!strcmp($somechar, ";")) {
- as seen in assess/wikiquiz/wikivo2db.php
to get from text area w/o losing linebreaks
- $apage=nl2br(stripslashes($_POST[apage]));
to iterate through the lines in a string
- foreach (preg_split("/(\r?\n)/", $apage) as $line)
http://www.weberdev.com/Manuals/PHP/function.get-meta-tags.html
authentication script http://sitebuilt.net/w/index.php?title=Comp&action=edit§ion=9
/*multi-dimensional arrays */
$a = array();
$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";
$firephp->log($a, 'nearrtest');
perl
handy code
remove blank lines from file
perl -wnl -e 'print $_ unless /^$/' infile.txt >outfile.txt
sed awk
- SED tutorial
- http://tech.bluesmoon.info/2008/09/programming-patterns-in-sed.html
- http://www.vectorsite.net/tsawk_2.html
- lib/images/toolbar/list_ul.png
- lib/images/toolbar/rule.png
- lib/tpl/default/images/interwiki.png
People with shell access to their server can copy the text above and paste it into a file on the system, then run the following commands to check for and remove all those files. Only those that exist are removed.
grep -Ev "^($|#)" /tmp/removeold.txt | xargs -n 1 rm -f
If you are paranoid, replace the "rm -f" with "ls -la" to see what files will be deleted.
To remove directories as well as files you have to use:
grep -Ev "^($|#)" /tmp/removeold.txt | xargs -n 1 rm -fd
However, some systems may not support the "rm -d" option for directory removal. In that case, you have to use recursive removal (just be sure to double-check that the file list does not include any paths that will delete too much):
grep -Ev "^($|#)" /tmp/removeold.txt | xargs -n 1 rm -fr
regex
- ^[ \t]+ //finds all the space and tabs
- [1-9]\. //finds all the line numbers. (replace with #)
- [A-E]\. //find A. etc (replace with ##)
to clean special characters from a string
$clean = preg_replace("/^[^a-z0-9]?(.*?)[^a-z0-9]?$/i", "$1", $text);
sites
- http://e-texteditor.com/blog/2010/beyond-vi
- http://www.grymoire.com/Unix/Regular.html#uh-2
- http://www.regular-expressions.info/php.html
expressions
If you want to get'Aloha World'out
Input:
RegEx:
\<div\sclass\=\"somename\"\>(?<Text>.*?)\<\/div\>
Yields:
Aloha World (note: In a single group named Text)
mycode
file:///Users/teacher/code/
- /hosted/vocab/quiz/db2egg.php
- uses multidimensional arrays
- does sorting
msaccess/excel
http://support.microsoft.com/?kbid=208840
http://www.thescripts.com/forum/thread546932.html
http://www.blueclaw-db.com/mail_rtf_report_access.htm
http://forums.aspfree.com/microsoft-access-help-18/ms-access-email-report-19094.html
emailing reports
http://support.microsoft.com/kb/319317 printing to particular printer
http://www.vertex42.com/ExcelArticles/user-defined-functions.html
http://www.contextures.com/xlToolbar02.html
http://www.ozgrid.com/VBA/sum-count-cells-by-color.htm
http://www.techonthenet.com/excel/formulas/index_vba.php
online tools
http://www.sitebuilt.net/moodle/course/view.php?id=2&edit=1&sesskey=zsCDYluKen http://www.sitebuilt.net/moodle/course/mod.php?id=2§ion=0&sesskey=zsCDYluKen&add=quiz
Ari's phone: 011 237 529-4438 calling card:
- 18008872991
- 617
installedMACtools
pic
http://www.rentron.com/Myke3.htm
http://www.play-hookey.com/digital/jk_nand_flip-flop.html
http://www.digital-diy.net/16F%20Examples/LM35DZ.aspx
a good tutorial on embedded systems
- Google any of these for more info. I have chosen the ATmega168 as the learning IC of choice. Why?
- 20 MIPs (million instructions per second!) is powerful enough to do some really cool projects
- It's cheap! $2.13 currently
- It's got all the goodies under the hood (UART, SPI, I2C, ADC, internal osc, PWM, kitchen sink, etc)
- 16K of program memory is enough for almost any beginner project
- The tools are free! (C compilers for many of the other micros cost a lot of money)
- The programming and debugging tools are low cost ($20 will get you started)
evil mad scientist on AVR programming
isp
host 206.71.150.94
http://www.networksolutions.com/whois/index.jsp
http://www.namecheap.com/myaccount/index.asp mckennatim nanj
https://thenynocportal.com/clientarea.php
text a photo to picasa
text it to your and then forward it without the tmobile gifs then forward it to mckenna.tim.upload@picasaweb.com
making transparent in gimp
1. open image
2. Right click the image and go to LAYERS then ADD ALPHA CHANNEL. You won't notice anything happening, but don't be concerned. It basically adds a transparent layer at the bottom of your image so when we erase the colors.....it's shows the transparent layer. Which of course would show whatever was under it on the screen.
3. Right click on the image again and go to SELECT and then down to BY COLOR. A window that is all black opens up. Don't change any of the settings....just use the defaults for now.
4. Now click on the color in the image you want to be transparent. These colors will now show up outlined.
5. Right click on the image again and go to EDIT and then down to CLEAR. This should now erase the outlined color you just picked from the image and the "transparent gimp checkerbox" should show through. This is the Gimps way of showing you that section is now transparent.
6. Right click on the image and choose SAVE AS and make sure to save as a GIF file if you want the transparency to work on the web.
embedding video
1. find the file Sanitizer.php in the folder /includes of your mediawiki installation 2. find the function removeHTMLtags in that file. below that you’ll find a list of whitelisted HTML tags. add the tag embed to the list. 3. find the function setupAttributeWhitelist in the same file. several lines below you will find HTML-attributes being whitelisted for each HTML tag. so you add a new line (maybe below the line that defines span): ‘embed’ => array( ’style’, ‘id’, ‘type’, ’src’, ‘width’, ‘height’ ),
take care to replace the typographic ‘-quotes by straight ones when doing copy&paste. (wordpress converts the quotes on this blog, so you need to convert them back.)
you’re done. now you can copy the HTML-code provided by google or youtube into your wiki textbox and it’ll work. (make sure to make backups and document so you know what you’ve changed. when upgrading you’ll have to repeat the process. no warranties for possibile security leaks resulting from the hack.)
update april 2007: i just tested, this hack also works with mediawiki 1.9.2, just that you need to add embed to $htmlpairs. (note: in case the embed-code you want to use has the format <embed /> you now have to convert it to <embed> </embed> before posting it to your wiki.) i also would recommend to paste the last line of code near br instead of span (the file has got rearranged a bit).
mediawiki memory problem
php.ini is in public_html, it has to be copied into everywhere that uses php left ini_set commented out in localsettins.php .htaccess php_mem ... didn't work
mediawiki upgrade
- cp -r mediawiki-1.16.0/* /home/pathbost/public_html/hum08 - copy new vwrsion right over old
- from /maintainance run: php update.php
then get rid of all the revisions
- SpecialDeleteOldRevisions2 in code/mediawiki/extensions on mac, add this...
- $wgGroupPermissions['sysop']['DeleteOldRevisions'] = true;
- require_once( $IP.'/extensions/SpecialDeleteOldRevisions2/SpecialDeleteOldRevisions2.php');
old info
http://www.g-loaded.eu/2006/09/05/mediawiki-upgrade-procedure/ easy way:
- goto maintainance directory and run php dumpBackup.php --current> dumfile.xml
- on new site install wiki, put dumpfile.xml on its maintenance dir run php importDump.php dumfile.xml
mediawiki images
Does the user running the apache httpd instance ($ ps ax | grep httpd) have permission to write to images? Dan
mediawiki css
- sitewide changes go in Mediawiki:Monobook.css
- user changes go in User:MrMcKenna/monobook.css
lynx
compiling PH w /scripts/easyapache
!! You can change how PHP is configured. As root, simply execute:
/usr/local/cpanel/bin/rebuild_phpconf --help
for more information.