Archive

Posts Tagged ‘Perl’

Bringing method documentation back into synch by using Textpad command line to jump to GrepWin matched line in file

  1. Objective: is checking, in one simple result window, multi-line matches of method signatures and their Doxygen comments from a multi-module, multi-directory C++ codebase, in order to spot  inconsistencies, i.e. where code and documentation  are out f synch: image
  2. image
  3. All this short of having to write a Parser or buying a tool like Atomineer Pro Documentation  (which does look like it is “right on the money”, but, as it turned out to my surprise, also far short of getting this to work in Eclipse or on a Bash command line with Grep and Perl, ack  (doesn’t do multi-line matches!), ag, or what-not.  grepWin is free, has an easy-to-use, versatile interface, and proves, once again, to be a powerful little tool.
  4. A a sample (in reality not cut off, of course), 2 methods with their comments showing here: image
  5. And I am only a click away from correcting errors I spot in my preferred editor that grepWin  can link in “Settings””C:\Program Files (x86)\TextPad 7\TextPad.exe” %path%(%line%,0)
  6. image
  7. Some grepWin quirk I do not understand:
    1. Why does the “Search” button do nothing when I select radio button “Regex” instead of “Text Search”, but does the expected regex match against file and directory name when I select the latter? image

Language Lab Web Portal, University of Michigan – Dearborn

For lack of even an LMS – which in post-secondary language lab environments in the US in the “noughties” commonly has had to double as CMS and Groupware -, the lab web portal in the post title had to fulfill many functions.

While the technically most advanced features probably was full text search against both database and file system (uploaded documents) – which I could relatively easily implement thanks to MS-SQL-Server and a limited number of database tables –, I liked best the collaborative building of a bank of language learning exercises using authentic materials, i.e. interactive websites from the target culture.

A few sample illustrations of the use in both language lab and affiliated computerized classrooms you can see here:

The list below links to a series screencasts of the Language Lab Web Portal that I made for training and demonstration purposes. They show the language lab web portal software in action:

basics_intro_roles
basics_usagestatistics
Class_presentation_Fruehstuecksbueffet
content_headlines
content_search
How_to_add_a_links_assignment_in_90secs
How_To_Add_Pages_And_Modules_fast
How_to_get_Help_LinksExample
How_to_operate_the_wireless_keyboard
How_to_provide_Help_PrinterExample_short
How_to_record_streaming_media
inventorydb
ocr_to_word_fast
perl_links_moveunverified
portal_search
portal_search portal_search program search staff_tab_short userinput

Data cleansing and ETL with Perl to remove broken links

Learning materials management: Links (1998-2004)

Originally implemented for a series of Canadian universities teaching Wirtschaftsdeutsch, then continually expanded into all of German for Queen’ s  University, and multiple languages, including non-western, for university of Michigan-Dearborn and Drake university.

Was based on an open source software project by Gossamer Threads popular for web 2.0 precursors of collaborative links collections, whose Perl-CGI code needed only minor modification to facilitate the “”commenting”” on instructor-“posted”  ( i.e.  assigned links) by students.

The model was Yahoo’s human-edited web-catalogue. the data structure was the tree (nested folders, unidirectional graph). For managing, I implemented a secondary branch mirroring the primary under the root “old links”  for, using Perl regex, automatically moving links which a batch link-checking management script in the open source had identified and logged as “broken” (404 and a few other similarly bad http return codes) into.

The original layout of the “ontology” first introduced me to the complexity of such a task. The basic content division was between 2 branches.

  1. web-based ready-made teaching materials for commenting (recommending, categorizing) by instructors and self-access by students (no feedback of student data to the instructor mostly, except by email, and outside of the application, in those days).
  2. the other content branch consisted of not teaching-related “”authentic materials””: the early day web applications, sometimes multimedia (maps, audio and video collections, news), often times also self-service database interfaces (online shopping and public services) whose language-wise rather restricted interface and topical focus (think Wirtschaftsdeutsch) lent themselves to capstone exercises at the end of textbook chapters (our “Friday in the lab””, not even a language lab then. Geek bonus points: one of these Fridays, a future queens university educated engineer asking me whether i had written all these pages they browsed through in the searchable catalogue of eventually 1500 links. Well, dynamic web pages were not common at all in education in those days, and the credit goes to Gossamer Threads.).

 

While there was hope to collect a comprehensive teaching resource through collaboration, “der Weg war das Ziel”, having students interact with and review foreign language web content. The links database  remained definitely, as it grow in bursts revolving around the topics of our chapters. I had a lot of fun finding instructional ways to having students review all those fancy web applications in which endless amounts of money were poured  before the first bubble in this millennium burst. E.g. the first early online city maps for “Wegbeschreibung”  in German 102. as well web 2.0 like developments, like grassroots web cams (Germans allowing the world to spy on their surroundings 24/7, including remote camera panning – you could go all kinds of places, “”Wie heißt der  bürgermeister von Wesel? was macht das wetter in der Schweizzzzzz?” but alas, the time lag, especially during winter term.

A couple of screen casts for instructor training are here and here.