STATUS updates
======TODO====== * the formular plugin is giving me errors, need to figure this out (email assignment form) * update grade not-z scripts to handle/be aware of winter terms * update system page for (new)www * redo DSLAB tweedledee/tweedledum with squeeze rebuilt tweedledee, tweedledum on the way * rebuild DSLAB www, irc, auth as squeeze VMs * load balance/replicate www/wiki content between LAIR and DSLAB * adapt LAIR irc and lab46 to use self-contained kernels (how to do this?) * update system page for db * migrate nfs1/nfs2 system page to current wiki * update nfs1/nfs2 to squeeze * flake* multiseat page ======URLs====== Some links of interest: * [[http://www.llvm.org/|LLVM]] * [[http://www.reocities.com/harpin_floh/glglobe_page.html|GLglobe]] * [[http://www.heavens-above.com/|Heavens Above]] * http://wiki.debian.org/kristian_jerpetjoen * http://www.webupd8.org/2010/11/alternative-to-200-lines-kernel-patch.html * http://myproxylists.com/nix-brute-force * [[docs/plan9|My Plan9 Documentation page]] * [[system/sokraits_halfadder.offbyone.lan|The Sokraits/Halfadder System Documentation page]] * http://www.egghelp.org/commands/channels.htm * http://stackoverflow.com/questions/470617/get-current-date-and-time-in-php * http://www.rjsystems.nl/en/2100.php * [[http://bitsavers.trailing-edge.com/pdf/|BitSavers]] * [[http://mir.aculo.us/2010/06/04/making-an-ipad-html5-app-making-it-really-fast/|Time Zone HTML5 app]] * http://toic.org/2009/01/18/reverse-ssh-port-forwarding/ * Divergent Thinking * http://en.wikipedia.org/wiki/Divergent_thinking * http://faculty.washington.edu/ezent/imdt.htm * https://help.ubuntu.com/community/Installation/QemuEmulator * Socket Programming * http://www.linuxhowtos.org/C_C++/socket.htm * http://www.few.vu.nl/~jms/socket-info.html * http://www.lowtek.com/sockets/ * http://www.tenouk.com/Module40.html * http://www.tenouk.com/Module42.html * http://www.tenouk.com/Module43a.html * ALIX * http://markshroyer.com/guides/router/ * http://markshroyer.com/2010/12/openbsd-alix-via-ubuntu/ * http://www.martinmellor.com/freebies/pinouts/IDE44_2_5_pinout.htm (IDE 44-pin pin-out) * BeagleBoard * http://elinux.org/BeagleBoardDebian * Xen * http://www.tumfatig.net/20110125/running-openbsd-on-xen/ (OpenBSD HVM) * http://www.mydigitallife.info/fix-gmail-imap-invalid-credentials-or-web-login-requires-failure-error/ * http://manoharvanga.com/hackme/ * http://chneukirchen.github.com/sabotage/ * http://www.linusakesson.net/programming/pipelogic/index.php ======Other Days====== ======August 27th, 2012====== =====Fall 2012===== It is now the Fall 2012 semester. =====mkopus effectively rewritten===== The once-ugly opus content creation process is hopefully a lot cleaner now. I rewrone the central loops in mkopus, so mkopuspart is really no longer needed (at least in its current form). #!/bin/bash # # mkopus- create opus # # This script NEEDS to be run on www # # 20120827 - overhaul to accommodate opus changes # 20111218 - initial implementation # ## ## Bootstrap ## source ~/bin/lib/gnops.sh hostchk www cd /usr/local/etc/mth ## ## Configuration and Variables ## PATH=$PATH:/home/wedge/bin SEMESTER="`gn semester`" OPUSPATH="/var/www/lab46web/data/pages/opus/${SEMESTER}" YEAR="`date +%Y`" MONTH="`date +%B`" # Verify that ${OPUSPATH} exists # if [ ! -e "${OPUSPATH}" ]; then mkdir -p ${OPUSPATH} fi if [ -z "${1}" ]; then # no part was specified on the command line part=1 else part="${1}" fi echo "Processing . . ." for student in `gn list`; do echo -n " -> $student: " pt= if [ ! -e "${OPUSPATH}/${student}" ]; then mkdir -p ${OPUSPATH}/${student} fi for section in start title intro; do if [ ! -e "${OPUSPATH}/${student}/${section}.txt" ]; then cat ${OPUSPATH}/${section}.txt | sed "s/SEMESTER/${SEMESTER}/g" | sed "s/USER/${student}/g" | sed "s/YEAR/${YEAR}/g" | sed "s/MONTH/${MONTH}/g" > ${OPUSPATH}/${student}/${section}.txt echo -n "${section} " fi done if [ ! -e "${OPUSPATH}/${student}/part${part}.txt" ]; then cp ${OPUSPATH}/part.txt ${OPUSPATH}/${student}/part${part}.txt echo -n "part${part}( " pt=1 fi for course in `gn deref ${student}`; do if [ ! -e "${OPUSPATH}/${student}/${course}part${part}.txt" ]; then cat ${OPUSPATH}/keyword0.txt | sed "s/DESIG/${course}/g" | sed "s/NUM/${part}/g" >> ${OPUSPATH}/${student}/part${part}.txt cat ${OPUSPATH}/keyword1.txt | sed "s/DESIG/${course}/g" | sed "s/NUM/${part}/g" >> ${OPUSPATH}/${student}/${course}part${part}.txt echo -n "${course} " fi done if [ ! -z "${pt}" ]; then echo -n ") " fi if [ "`cat ${OPUSPATH}/${student}/part${part}.txt | grep "Experiment ${part}" | wc -l`" -eq 0 ]; then cat ${OPUSPATH}/experiment.txt | sed "s/NUM/${part}/g" >> ${OPUSPATH}/${student}/part${part}.txt echo -n "experiment " fi echo "." done echo "PROCESSING COMPLETE." echo echo "ESTABLISHING PROPER ACCESS CONTROL... " sudo chmod -R u=rwX,g=rwX,o= ${OPUSPATH} sudo chown -R wedge:www-data ${OPUSPATH} echo "OPUS CREATION TASK COMPLETE" exit 0 Student Opus data has been created. =====Data Directories Created===== I don't think I've written a script for this yet, but I went and created the student data directories: for student in `gn list`; do mkdir ${student} sudo chgrp ${student} ${student} sudo chmod 770 ${student} sudo chmod +t ${student} done The parent "data" directory is chmod 710 with sticky bit applied, AND chgrp to lab46. The previous data was renamed to **data.summer2012**. It would be nice to make increased use out of this some semester (perhaps this one). So long as I'm in this motivated mood to work on stuff... =====desig subset bleedover bug===== The bug I noticed the other day, causing students only in **datacomm** to show up in **data** has been identified and fixed! Problem was in **gn**'s **list** function: The problem was the wildcard "**${FSTR}***", as presented here (lines 348, 350, and 354): 348 if [ "`cat ${FSTR}* 2> /dev/null | wc -l`" -gt 0 ]; then 349 if [ "$1" = "classes" ]; then 350 for item in `ls -1 ${FSTR}* | cut -d'.' -f3`; do 351 roster="$roster $item" 352 done 353 else 354 for item in `cat ${FSTR}* | grep '^[a-z]' | sort -u`; do 355 roster="$roster $item" 356 done 357 fi It was fixed by making it more specific- note the . inserted between ${FSTR} and the *: 348 if [ "`cat ${FSTR}.* 2> /dev/null | wc -l`" -gt 0 ]; then 349 if [ "$1" = "classes" ]; then 350 for item in `ls -1 ${FSTR}.* | cut -d'.' -f3`; do 351 roster="$roster $item" 352 done 353 else 354 for item in `cat ${FSTR}.* | grep '^[a-z]' | sort -u`; do 355 roster="$roster $item" 356 done 357 fi Nice to have that potentially aggravating bug out of the way. =====wiki ACLs updated===== It would be nice if students could actually edit their Opus! I went and updated the wiki ACLs for the current semester, including class notes pages. Should be good to go. Also disabled access to summer2012 content. =====further mkopus tweaks===== Some minor tweaks were still needed to correct some presentation bugs once rendered by the wiki. Also: I implemented a fix for the post-entry 4 "missing" edit button. So the big known bugs from previous semesters are now resolved! (edit button and experiment numbering). Yay. ======August 26th, 2012====== =====semester logic===== I made some further tweaks to my semester detection logic- by adding on override. OVERSEMESTER, to be specific. If OVERSEMESTER (a variable) is not NULL, the current semester will be set to the value in OVERSEMESTER (and then OVERSEMESTER is NULLED out). For example: lab46:~$ gn semester summer2012 lab46:~$ OVERSEMESTER=fall2012 gn semester fall2012 lab46:~$ gn semester summer2012 lab46:~$ This way I can check things before the next semester logically starts (and no longer do I need to edit the script and hardcode values for testing, potentially mucking up other scripts running). =====studentlistcreate===== My studentlistcreate script now auto-generates the class lists, vs. having a hardcoded list that needs to be changed should the classes I teach change (case in point- datacomm). ======August 25th, 2012====== =====newuserbatch errors===== Holy typos batman! Back when I added in the logic for Mercurial repo creation, I really must have just copied and pasted, resulting in incompatible variable names, an unmatched set of quotes, and all around non-workingness. I split off the resource creation logic into a new and separate script- assetcreate, mainly so I could better debug where problems were. In the process I made a few streamlining improvements and now everything is working (with no apparent side effects). On a side note, user creation took inordinately long- I suspect it was due to a lack of entropy for /dev/urandom. =====ldaptool script logic error===== There's a regex somewhere that is far too loose, either in that script directly or in one of the sub-scripts it calls. For course designations "data" and "datacomm", students who were in "datacomm" but not "data" showed up in the "data" LDAP group. **UPDATE (Aug 27th, 2012):** This bug has been found and fixed! Problem was in the **list** function of **gn** ======August 24th, 2012====== =====UPS batteries upgraded===== At the start of summer, a fresh set of RBC23 Tempest UPS batteries were purchased to replace those currently in use in BOTH the LAIReast and LAIRwest racks. We finally got around to replacing them today, eventually becoming minor experts (of course we'll soon forget the intrinsic knowledge and ultimately rediscover it the next time). Some important things of note: * When Jacob says something matter-of-factly, odds are you should JUST go with what he says. He was right more times than not. * There is no need to unplug everything-- the UPS unit slides out, and the batteries are in an equally modular subunit. * The LAIRwest UPS unit has weird rackears, making insertion tricky-- gotta be done JUST RIGHT. =====LAIRpods cleaned up and tested===== The 4 tables were spruced up and the summer's assorted project bits removed elsewhere, booted up and tested. Replaced all the USB->PS2 splitters, so we're now running all USB keyboards (hopefully will help with the occasionally reported but always annoying input errors). The occasional persistent lack of login screen still exists. No idea why... generally a straight reboot tends to fix the problem. =====All systems rebooted===== Following the UPS servicing, all machines were taken down for their pre-semester reboot. No anomalous issues were experienced, and hopefully the fresh start will mitigate any usage issues during the semester. =====cobras UPS back in action===== Using some of the "used" UPS batteries from the LAIReast rack, the other small UPS was put back in service by cobras, once again protecting cobras and koolaid (and the corresponding 5-port TrendNET switch) from losing power during any of our occasional power flickers. ======August 19th, 2012====== =====gn semester logic updated===== I deployed some new logic for semester detection, hopefully more robust AND accurate. Regex and logic to more accurately determine the start and end of given semesters, and compare the current day to those in making decisions. Also uses those same comparisons to make identifications of summer and winter semesters. Plus, should the web fetch fail, my original original hard month logic is now waiting at the end in an if statement, so it will happily run should the snazzier logic fail (there should ALWAYS be a semester reported now). One improvement I could look into is actually storing this data, and creating some sort of "update local storage" script... so I could do without the constant web fetches. The data retrieved can now be used for additional purposes as well, such as break detection-- so incorporating some sort of local data store would be a good idea.
^ [[status/status_201207|Previous Month]] | ^ [[:status|Current Month]] | ^ [[status/status_201209|Next Month]] |