Archive

Archive for the ‘service-is-any’ Category

How to automate nightly updates of a Kiosk PowerPoint

This copies nightly a ppt file from a network share where it is collaboratively edite to a network computer where it is displayed for announcement and marketing. The ppt file should already be set to kiosk, manual timings, loop mode.

#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=\\adfileprod01\Shared\LLC\scheduling\channel55-presenter\updater-channel55.exe
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
; revision after hardware upgrade from hallway.au3, "hallway"->"channel55" not in variable names, only in strings , except for encryption password
; includes debugging
; connect to channel55-presenter using tightvnc
; adapt at [TBA]
#include <ie.au3>; put the compiled executable of this in channel55Presenter c:\temp and run it as a scheduled task  late-nightly
#include <debug.au3>
#include <File.au3>
#include <Screencapture.au3>
#include <String.au3>
#include <Date.au3>
Global $filename = "[TBA]"; "channel55"
Global $filenamelog = "[TBA]"; "channel55"
Global $fileextremote = ".pps"
Global $fileextlocal = ".pps"
Global $fileextlog = ".log"
Global $pathfilelog
Global $filepathlocal = "[TBA]"; "c:\temp\"
Global $fileshareordriveremote = "[TBA]"; "\\resman\Student Saved Work\"
Global $filepathremote = "[TBA]"; "Admin\conf\scheduling\channel55-presenter\"
Global $filepathremotebackup = "tmp\"
Global $usernameinstructor = "[TBA]" ; "trplagwitz"
Global $passwordinstructor = "[TBA]" ; hashed password
Global $passworddecrypt = "hallway"
Global $LogonDomain = "[TBA]" ; "ad.loyola.edu"
Global $timelocal
Global $timeremote
Global $debugtype = "debugconsole"
_ScreenCapture_SetBMPFormat(0)
$logfilehandle = FileOpen($fileshareordriveremote & $filepathremote & $filepathremotebackup & $filename & $fileextlog, 1)
If Not FileExists($fileshareordriveremote & $filepathremote & $filename & $fileextremote) Then
	$ret = FileWriteLine($logfilehandle, "cannot open file: " & $fileshareordriveremote & $filepathremote & $filename & $fileextremote)
	FileClose($logfilehandle)
	Exit
Else
	If ProcessExists("powerpnt.exe") Then
		ProcessClose("powerpnt.exe")
	EndIf
	Sleep(5000)
	If ProcessExists("powerpnt.exe") Then
		$ret3 = RunWait('taskkill /F /fi "imagename eq powerpnt*"  /im *')
	EndIf
	Sleep(2000)
	$ret = FileCopy($fileshareordriveremote & $filepathremote & $filename & $fileextremote, $filepathlocal & $filename & $fileextlocal, 1)
	$ret = FileWriteLine($logfilehandle, "result:" & $ret & " filemove from: " & $fileshareordriveremote & $filepathremote & $filepathremotebackup & $filename & "_" & today() & $fileextlocal & "t: " & $filepathlocal & $filename & $fileextlocal)
	If FileExists($fileshareordriveremote & $filepathremote & $filename & $fileextremote) Then
		FileDelete($fileshareordriveremote & $filepathremote & $filename & $fileextremote)
	EndIf
	ShellExecute($filepathlocal & $filename & $fileextlocal)
EndIf
FileClose($logfilehandle)
Exit
Func today()
	Return (@YEAR & @MDAY & @MON)
EndFunc   ;==>today
Func addHallwayPresenterNetworkshares($LogonDomain)
	If $LogonDomain = "" Then $LogonDomain = @LogonDomain
	If StringLen($passworddecrypt) > 0 Then
		$driveletterreplacementforhallwayread = DriveMapAdd("*", $fileshareordriveremote, 0, $LogonDomain & "\" & $usernameinstructor, _StringEncrypt(0, $passwordinstructor, $passworddecrypt))
	Else
		$driveletterreplacementforhallwayread = DriveMapAdd("*", $fileshareordriveremote, 0, $LogonDomain & "\" & $usernameinstructor, $passwordinstructor)
	EndIf
	myDebugOut(@ScriptLineNumber, "$driveletterreplacementforhallwayread is: " & $driveletterreplacementforhallwayread & ", $fileshareordriveremote is " & $fileshareordriveremote & ", $usernameinstructor, $passwordinstructor are " & $usernameinstructor & $passwordinstructor)
	If (($driveletterreplacementforhallwayread == "") Or $driveletterreplacementforhallwayread == 0) Then
		$driveletterreplacementforhallwayread = "H:"
	EndIf
	Return $driveletterreplacementforhallwayread
EndFunc   ;==>addHallwayPresenterNetworkshares
Func removeHallwayPresenterNetworkShares()
	$driveletterreplacementforhallwayread = $fileshareordriveremote
	If StringInStr($driveletterreplacementforhallwayread, ":") Then
		If StringInStr($driveletterreplacementforhallwayread, "\") Then
			StringTrimRight($driveletterreplacementforhallwayread, 1)
		EndIf
		$ret = DriveMapDel($driveletterreplacementforhallwayread)
		If $ret = 0 Then myDebugOut(@ScriptLineNumber, "failed to DriveMapDel for: " & $driveletterreplacementforhallwayread)
	EndIf
EndFunc   ;==>removeHallwayPresenterNetworkShares
Func myDebugOut($ScriptLineNumber = @ScriptLineNumber, $msg = "Error")
	Local $debugstring
	Local $debugfilename
	Local $tabhandle
	Local $tabmaxnumber
	Local $tempdir
	$tempdir = @TempDir
	If $tempdir == "" Then $tempdir = "c:\temp"
	$debugstring = $ScriptLineNumber & "~" & _Now() & "~" & $msg
	If $debugtype = "debug" Then
		Local $activewindowtitle = WinGetTitle("")
		MsgBox(0, "debug", $debugstring)
		WinActivate($activewindowtitle)
	ElseIf $debugtype = "debugconsole" Then
		ConsoleWrite($debugstring & Chr(13))
	ElseIf $debugtype = "run" Then
		If $tempdir == "" Then $tempdir = "c:\temp"
		$debugfilename = FileNameEscape($debugstring, $tempdir) & ".jpg"
		_ScreenCapture_Capture($debugfilename)
		_DebugOut($debugstring)
	ElseIf $debugtype = "debugconsolescreen" Then
		ConsoleWrite($debugstring & Chr(13))
		$debugfilename = FileNameEscape($debugstring, $tempdir) & ".jpg"
		_ScreenCapture_Capture($debugfilename)
	ElseIf $debugtype = "releasetextlog" Then
		If $pathfilelog == "" Then $pathfilelog = @TempDir & "\" & "autoitlogfile.log"
		$loghandle = FileOpen($pathfilelog, 1)
		If $ret = 0 Or @error Then Exit
		$ret = FileWriteLine($loghandle, $debugstring & Chr(13))
		If $ret = 0 Or @error Then Exit
		$ret = FileClose($loghandle)
	ElseIf $debugtype = "releasewordpad" Then
	Else
		SetError(1)
	EndIf
EndFunc   ;==>myDebugOut
Func FileNameEscape($filename, $tempdir)
	$filename = StringReplace($filename, ":", "_")
	$filename = StringReplace($filename, ">", "larger_than")
	$filename = StringReplace($filename, "<", "smaller_than")
	$filename = StringReplace($filename, " ", "_")
	$filename = StringReplace($filename, "/", "&")
	$filename = StringReplace($filename, "/", "+")
	$filename = StringReplace($filename, "&", "+")
	$filename = StringReplace($filename, Chr(9), "_")
	$filename = StringReplace($filename, "?", "questionmark")
	$filename = StringReplace($filename, "!", "exclamationmark")
	$filename = StringReplace($filename, "'", "quotationmark")
	$filename = StringReplace($filename, Chr(34), "doublequotationmark")
	$filename = StringReplace($filename, "__", "_")
	$filename = StringReplace($filename, "__", "_")
	$filename = StringReplace($filename, "__", "_")
	$filename = StringReplace($filename, "__", "_")
	$filename = $tempdir & "\" & $filename
	Return $filename
EndFunc   ;==>FileNameEscape
Func FileCopy2LocalTemp($filepath)
	Dim $arrfilepath, $filepathname, $arrfilepathname, $filepathnameext
	$blnValid = True
	If Not FileExists($filepath) Then
		If Not DriveMapAdd("", $filepath) Then
			$blnValid = False
		EndIf
	EndIf
	If $blnValid Then
		$arrfilepath = StringSplit($filepath, "\")
		If @error Then
			SetError(1)
			myDebugOut(@ScriptLineNumber, "error stringsplit filepath")
		EndIf
		$filepathname = $arrfilepath(UBound($arrfilepath) - 1)
		$ret = FileCopy($filepath, @TempDir & "\" & $filepathname)
	Else
		SetError(1)
	EndIf
EndFunc   ;==>FileCopy2LocalTemp

Video Library: Scheduling for Reserve Desk and Viewings

Lab staff instruction for editing the video-reserves spreadsheet H:\LLC\scheduling\video-reserves&mh441b-showing\video-reserves.xls:

  1. Lab supervisors build the spreadsheet for the reserve desk and viewing: video-reserves-reservedonthisday-unfold-schedule-viewing.wmv, video-reserves-viewing-selecting-timeslots&venues.wmv
  2. Lab assistants read the spreadsheet and handle the actual media (i.e. update the reserve desk and show the videos): video-reserves-reservedonthisday-filter-viewing-or-reserve.wmv

Subtitling Audio Files with Windows Media Player Enhanced Tag Editor

Working with (target language) subtitles is a common requirement in digital language labs.

While the method demonstrated in the following screencast requires some getting used to – remember to share and reuse the result -, the advantage over Sanako Media Assistant subtitling is that the subtitles get stored in the file and not only linked to in a separate file (links tend to/are bound to break if you try to manage your product in course management systems or erepositories): subtitling-with-windows-media-player-enhanced-tag-editor.wmv.

And then there is this very nice capability of YouTube.com: http://www.google.com/support/youtube/bin/answer.py?answer=100077, if you dare navigate the waters of copyright, data protection and privacy (FERPA).

Note: The  newer Windows Media Editor does not contain the tag editor any more, but on Windows XP, you can roll back the Windows Media Player version by going to Control Panel / Add or Remove Programs / Remove a program. Click Windows Media Player 11, and then click Remove

Create a PowerPoint slide with a timer from template for a timed audio recording exercise

If you require an audio recording exercise, where you allot to students a longer period of time for a free-form response, possibly to a visual cue, here is a demo screencast, based on the teacher.pot powerpoint template collection: powerpoint-timer-slide.wmv.

Quia Audio Files in Internet Explorer

Quia.com contains “Play audio” links to mp3 audio.

You may experience this, when you first try to access the audio with Internet Explorer.

If you cannot read the instruction in the information bar, resize the window so that you can, like here:

After clicking “trust Microsoft” and  “Run ActiveX” in the following dialog, the “Internet Explorer cannot display this webpage” may appear. Ignore this, close the window and reopen it by clicking again on the “Play” link  in the parent window.

This time you will (hopefully) see this:

You need to do this only once  – per PC? per user? Let me know in the comments.

Presentation on Time-stretched Audio and Personalized Provision in Instructor-led Digital Audio Labs @ Nerallt/Neallt 2009, Yale University, New Haven, CT

The pervasiveness of networked digital media – new delivery forms for digital TV and radio by the traditional media industry, as well as new content providers using pod- and tube-casts -, owing to an ever more powerful, robust and – partially as an overhang of the bubble – abundant technical hard- and software infrastructure, has also revitalized – and poured substantial new resources into the modernization of – the older concept of the language lab. Computerized classrooms with network and multimedia facilities, basic classroom management systems and centralized databases, with some interfacing to serve as learning material repositories or portfolios demonstrating learning outcomes, have become a common underlying fabric for many of the constituents’ learning environments. The recent freezing up of the resource flow can serve as a wakeup call to remind us both of the critical “What is the benefit, or return on investment?” and of the original promise of e-learning: increased efficiency. On the one hand, scaling through crowd-sourced or automated sourcing and reuse of materials has become a pressing need in rapidly expanding second language programs like English and Spanish that new technologies can help meet. On the other hand, widely differing learner proficiency is increasingly a problem when trying to form classes in the shrinking programs of other languages, and personalization of learning provision is increasingly expected in an environment shaped by “long tail”-economies. This paper will evaluate common practices in SLA that have served as workaround, recapitulate a number of different time-stretching algorithms, summarize existing software solutions and introduce a new option which is based on MS-Windows Media Encoder’s time-stretching and pause detection capabilities. Finally, the presentation will exemplify instructor-led utilization of this simplified and/or automated time-stretching of authentic materials, with more teacher-control and a more realistic output than that built into current media players, as a – not exclusive, but valuable – step towards more comprehensible input of level “i+1” in a more personalized language learning provision.

Slide Deck: plagwitz_timestretching_audio_nerallt09.pdf

MS-Office Communicator: Getting Started

https://thomasplagwitz.com/2009/11/13/collaboration-using-ms-office-and-network-shares/Click , click , type “communicator”, click .

To adjust options, click (1), (2) and (3) here:

To start communicator with Windows, select (1).

To have Outlook automatically show you as busy during calendar appointments (e.g. your classes), select (4).

To get your contact list up to speed, select all the contacts in the to-address line of a mass email  and drag them to your communicator window, see this screencast here: communicator-email-contact-drag.wmv.

Microsoft has a useful “Getting Started”  web-based training here:

To use the advanced features of Live Meeting, you can either use the context menu of the contact, or within an existing messaging session, escalate to Live Meeting by using the upper right hand corner menu, like in these 2 screnshots:

No- and Low-cost Language Labs in a Tough Economy. Presentation EUROCALL 2009

Or digitizing the London Metropolitan University City-of-London Conference Interpreting center.
Or download a screencast of my presentation.