|
|
Released
|
|
|
|
Beta 5
|
|
|
|
Repeating is broken after the first attempt (sometimes?)
|
|
|
|
Alarm is being moved to expired list on expiration, then when app is restarted, it gets reactivated
|
|
|
|
If I turn on NSZombieEnabled it doesn't happen.
|
|
|
|
Correct behavior:
|
|
|
|
Incorrect behavior:
|
|
|
|
Alarm never marked as repeating—this is PEBKAC?
|
|
|
|
Can't seem to reproduce any more.
|
|
|
|
Check that debug symbols are present
|
|
|
|
Tag in Subversion
|
|
|
|
Fix NSRemoveTemplate causing duplicate icon drawing
|
|
|
|
Check for memory leaks
|
|
|
|
Incorporate Sparkle
|
|
|
|
Put in svn:externals
|
|
|
|
Check in diff and add it to the build
|
|
|
|
Redo packaging
|
|
|
|
Bump version to 19 (that's what the appcast thinks it is)
|
|
|
|
Fix calendar button bezel style in snooze box to match
|
|
|
|
Date parsing needs reimplementing
|
|
|
|
Can we get natural language date parsing from somewhere?
|
|
|
|
Perl's Date::Manip—looks like the best, supports many languages
|
|
|
|
Remove parsing debugging
|
|
|
|
Disable menu if we can't get Perl to work (not naturalLanguageParsingAvailable)
|
|
|
|
Can make text in path button menu smaller, to match
|
|
|
|
Date generation needs changing
|
|
|
|
Can we get weekdays without AD? Yes.
|
|
|
|
The first time you bring up the Preferences, nothing appears instead of "none assigned"
|
|
|
|
NJRFSObjectSelector needs upgrading (emailed Joey)
|
|
|
|
Sound selection was using SPI, and broke
|
|
|
|
Memory leak switching back and forth between View and Edit modes
|
|
|
|
Fixed, was not freeing the alerts dict
|
|
|
|
Very slow memory leak on idle
|
|
|
|
Comes from +[QTMovie idleAllMovies:] leaking NSDate objects very slowly (?)
|
|
|
|
No, this was just NSZombieEnabled
|
|
|
|
Crash in [PSAlarmNotifierController close:] => [PSAlert completedForAlarm:].
|
|
|
|
This was a retain-release bug, fixed
|
|
|
|
PSAlarm retain behavior is broken
|
|
|
|
Fixed for nonrepeating case
|
|
|
|
Non repeating alarm on same launch
|
|
|
|
Initial set (for repeating alarm): 3
|
|
|
|
Timer expired: 5
|
|
|
|
Then gets deallocated. This is fine.
|
|
|
|
Non repeating alarm on next launch
|
|
|
|
Timer expired: 7
|
|
|
|
NO deallocate.
|
|
|
|
Retained one more time at timer set/expiration time when read from defaults on launch (6) than it is otherwise (5).
|
|
|
|
Properly deallocated in repeating case too.
|
|
|
|
Beta 6
|
|
|
|
Use the same alert we use when the alarm interval fails to validate for the playback count
|
|
|
|
Retest adding version 1 alarms, errors therewith; I've rearranged code
|
|
|
|
Alarms import twice!
|
|
|
|
Possible to break "Play alert sound" count
|
|
|
|
Need superclass of NJRIntervalField to do arbitrary validation
|
|
|
|
If you change it and immediately quit, for example
|
|
|
|
Alert sound count should not validate as empty (default to 1 in that case)
|
|
|
|
Can't do this, but instead PSMediaAlert just clamps to 1..99
|
|
|
|
Then recheck -[PSAlarmSetController inAtChanged:]
|
|
|
|
Behaves differently in 'in' vs. 'at' scenarios, (# beeps, activation) but still works
|
|
|
|
cmd-shift-T doesn't commit field editing; try hitting it after typing in "x minutes"
|
|
|
|
Default voice isn't restored properly if it wasn't set
|
|
|
|
Remove unneeded custom list drawing
|
|
|
|
Table view tooltips broke in Leopard
|
|
|
|
Repeating alarms are becoming not-repeating on restore if they haven't expired
|
|
|
|
…even though they're correct in the plist
|
|
|
|
Switch to new-style ObjC exceptions
|
|
|
|
Change package-Pester.sh so it does atomic replacement via mv on ainaz
|
|
|
|
Aborting speech too early causes crashes, sometimes hangs too
|
|
|
|
Replace SUSpeaker with NSSpeechSynthesizer
|
|
|
|
Get speech working
|
|
|
|
Possible to set alarm with voice set to «unknown» (== nil); you get an exception in the status area if you do
|
|
|
|
Just change the exception for now
|
|
|
|
Prune nib
|
|
|
|
Beta 7
|
|
|
|
Snooze until is broken with DST
|
|
|
|
Speech voices are not showing their names
|
|
|
|
Crashes on PowerPC Leopard
|
|
|
|
Beta 8
|
|
|
|
Update release notes, etc.
|
|
|
|
Fix Sparkle.
|
|
|
|
VersionTracker.
|
|
|
|
Wait for idle (optional) - downloaded
|
|
|
|
Audio device selection for movies, NOT speech, WITHOUT override option and with RELATIVE volume
|
|
|
|
Duh. I'm always using the system default output device.
|
|
|
|
Should be using kAudioDevicePropertyDeviceUID instead of a string.
|
|
|
|
Works!
|
|
|
|
Put some text on top of the override option
|
|
|
|
Add relative volume control, only affecting movie ("Override volume control" option off).
|
|
|
|
Preview needs to go through the right device, too.
|
|
|
|
Don't do anything if you press the activation hotkey while the preferences panel is key.
|
|
|
|
When we're responding to the AppleDatePreferencesChangedNotification, [NSLocale currentLocale] isn't updated yet. We can register for NSCurrentLocaleDidChangeNotification (kCFLocaleCurrentLocaleDidChangeNotification) in 10.5+, which hopefully occurs afterward, but... can we get this or an equivalent notification on 10.4?
|
|
|
|
The formatters are successfully updating, except when the field is disabled
|
|
|
|
This *is* the same problem: we're not waiting for the locale to update
|
|
|
|
Post to Stack Overflow
|
|
|
|
Non-US (non-English?) localized date formats don't work.
|
|
|
|
We are not initializing Date::Manip with the correct locale. We need to detect the date format and use it (not necessarily the same as the UI language).
|
|
|
|
We're not passing non-ASCII characters correctly to Date::Manip.
|
|
|
|
-CSD means we assume stdin/out is UTF-8.
|
|
|
|
But Date::Manip doesn't do Unicode; we use ISO-8859-1 instead.
|
|
|
|
Pass correct value for DateFormat to Date::Manip.
|
|
|
|
Formatter updates fail (and focus gets confused) if the field is currently editing
|
|
|
|
You can't replace the field editor while it's editing! Either we refocus it or don't discard the field editor.
|
|
|
|
Propagate changes to snooze until
|
|
|
|
Fix things that don't update when language formats change
|
|
|
|
Alarm time in alert? Actually, no: it's a point in time; don't bother.
|
|
|
|
Repeats: "every one second" should be "every second", etc.
|
|
|
|
Handle time zone changes.
|
|
|
|
Reinitialize Date::Manip.
|
|
|
|
Fix the formatters and/or NSDate objects being passed to them.
|
|
|
|
Remove the time zone logging from Date::Manip once Siddharth Patil gets back to you.
|
|
|
|
Time zone info fails? Consider providing it to Date::Manip in Date_Init.
|
|
|
|
Fix Perl embedding issues so we can build on 10.6 for 10.5/10.4
|
|
|
|
boot_DynaLoader is in libperl.dylib for 10.6. It isn't for 10.5 and earlier.
|
|
|
|
Need to test on 10.4.
|
|
|
|
Why are there 2 blue dates in the popup calendar?
|
|
|
|
Sound repetition field should default to 1 or cancel editing if no valid entry
|
|
|
|
Better idea: why do we even allow entry of nonnumeric items into this field?
|
|
|
|
This is fixed with NJRIntegerFilter, just like every other field.
|
|
|
|
Popping up calendar when no date is entered gives me June<PHONE_NUMBER>. Gah.
|
|
|
|
Snow Leopard compatibility
|
|
|
|
No more selectedRowEnumerator—was deprecated in 10.3 (use selectedRowIndexes instead)
|
|
|
|
Finish up date completion: don't try to override user-specified capitalization (e.g. if trying to type "Thursday week")
|
|
|
|
Or, just add weekdays by themselves to autocomplete list.
|
|
|
|
Can we switch back to a real combo box? If not, can we autocomplete anyway? This will fix the "today" problem, I think, much more easily. (I tried implementing command-T = today. This was an unmitigated failure: it is a bad, bad UI design.)
|
|
|
|
What we've got is better than a real combo box, I think.
|
|
|
|
The tab order is a bit messed up since we replaced the disclosure button. Fix this.
|
|
|
|
Tab order is borken even with tab-to-everything not enabled. We should wrap.
|
|
|
|
Display relative dates for today/tomorrow (is there an API for this?)
|
|
|
|
Apparently not, but we can steal /System/Library/Frameworks/Carbon.framework/Frameworks/HIToolbox.framework/Resources/*.lproj/BrowserControl.strings
|
|
|
|
Just replace "on" with "today," or "tomorrow,".
|
|
|
|
For saving/restoring focus: SetFrontProcessWithOptions ( &psn, kSetFrontProcessFrontWindowOnly )?
|
|
|
|
Switch to tomorrow automatically if necessary when tabbing into "on", just like hiptop Pester
|
|
|
|
Huh, we still have a NSMovieView in MainMenu.nib?! This shouldn't be, and is breaking SL's IB.
|
|
|
|
"12p" => 9pm, oddly
|
|
|
|
So, special-case numbers + a single character in AM/PM
|
|
|
|
Use something else for the expando button
|
|
|
|
Volume adjustment breaks on Snow Leopard
|
|
|
|
Should special-case individual numbers in the time to mean an hour
|
|
|
|
Also, special-case 4 numbers to mean 24-hour time
|
|
|
|
Individual numbers plus "a" or "p" to mean AM/PM. (We can use AMSymbol, PMSymbol)
|
|
|
|
Issue here is that single letters are being used for time zones.
|
|
|
|
Allow (shift-)tabbing out of "set key" box in Pester, or just switch to Shortcut Recorder ( code.google.com—)
|
|
|
|
Repeat info can be messed up
|
|
|
|
NSMovieView crashes in QuickDraw code; we really need to not use it unless we have a video to play
|
|
|
|
Convert to QTMovie
|
|
|
|
Crash when switching alert sounds when the sound hasn't finished playing. Need to fix.
|
|
|
|
Migrate validation code.
|
|
|
|
Sound repetitions appear for video-only media
|
|
|
|
Replace NJRCenteringMovieView with something? (Yes, QTMovieView does this by default.)
|
|
|
|
Pester is keeping various files open when it shouldn't. Rewrite PSMovieAlert so it creates QTMovie on demand.
|
|
|
|
Volume button isn't in the right place in the control hierarchy (see when switching editability).
|
|
|
|
Migrate playback code—partially done, search for "theMovie" usage.
|
|
|
|
999 week interval.
|
|
|
|
2h repeat time says "120 minutes" in alarm list tooltip
|
|
|
|
We're not properly uniquing media items. Bleah.
|
|
|
|
Switch from BDAlias to NDAlias?
|
|
|
|
Alerts will bring set window to the front; should they?
|
|
|
|
"All Alarms" in dock menu won't switch Spaces yet "Set Alarm" does; why?
|
|
|
|
No, this doesn't seem to be the case.
|
|
|
|
And ouch, if new alarm window is in another Space, activation will pop up the alarm window in this Space and switch to the other Space for the new alarm. Yikes.
|
|
|
|
Here's my basic rationale for the current behavior: choosing "Set Alarm" or using the keyboard equivalent means you want to set an alarm with minimal intrusion. Clicking on the Dock icon means you want to use Pester as a whole, therefore it should switch to whatever Space is appropriate. People can always add Pester to all Spaces if desired.
|
|
|
|
Fix - button
|
|
|
|
It should validate, not be active unless necessary
|
|
|
|
(use bindings?)
|
|
|
|
Dock icon bouncing is broken
|
|
|
|
It only appears to bounce if Pester is in the background
|
|
|
|
Fixed with NMInstall
|
|
|
|
Somehow "today" is missing from the date menu now
|
|
|
|
Horizontal resizing problems with the Alarms window
|
|
|
|
Figure out Sparkle file in use stuff
|
|
|
|
Can we just quit relaunch.app at startup? Heh.
|
|
|
|
Updated from [65] to [73]. Done.
|
|
|
|
Beta 9
|
|
|
|
You can set =, `, etc., as key chars. Not in punctuationCharacterSet.
|
|
|
|
Readd "– All" via Option key
|
|
|
|
"Wait for idle" option doesn't work as expected. When the dock icon starts bouncing, Pester comes to the front (because of [PSAlarmAlertController performAlertsForAlarm:]).
|
|
|
|
PSAlarmNotifierWaitForIdle should act on PSAlarmAlertController as well.
|
|
|
|
Now, Pester coming to the front stops dock bouncing.
|
|
|
|
Make Dock bouncing more reliable.
|
|
|
|
Reproduced 4/2010
|
|
|
|
Dock icon bounce only works *once* (with bounce, movie, speech only)
|
|
|
|
Yes, because we never call NMRemove if the alarm isn't dismissed another way
|
|
|
|
With Pester in front, it bounces forever
|
|
|
|
But sometimes it doesn't.
|
|
|
|
With movie alert alone (try still photo), it bounces forever
|
|
|
|
Switch PSSpeechAlert to AUSpeechSynthesis audio unit (10.5+ only)
|
|
|
|
|
augn ttsp appl - Apple: AUSpeechSynthesis
|
|
|
|
Speech preview (means we need to factor code out of PSSpeechAlert)
|
|
|
|
Change the text in Preferences depending on whether you're on 10.4
|
|
|
|
If you have no snooze time set, then choose 'until', then cancel, it doesn't go back to the previously selected item
|
|
|
|
Consider hiding the snooze time field when you choose "until", too.
|
|
|
|
Integrate Dutch & German DateCompletions.strings
|
|
|
|
Fix some keyboard focus issues with alerts in the Set Alarm window.
|
|
|
|
Keyboard navigation for Read Me.
|
|
|
|
Fix launching on machines without English as the preferred language (sorry!)
|
|
|
|
We may need to change "Default Output Device" to "Alert Device" or something
|
|
|
|
kAudioUnitSubType_SystemOutput is the alert device; kAudioUnitSubType_DefaultOutput is the actual default output.
|
|
|
|
Need to get notified when default device changes, too.
|
|
|
|
Beta 10
|
|
|
|
Dock icon timings round up, dock menu timings round down
|
|
|
|
Dock displayed time is a minute off dock menu displayed time
|
|
|
|
Perhaps this was intentional... but does it explain the following?
|
|
|
|
62 second timer never updated properly. Oops.
|
|
|
|
Probably related: Alarm times can be off by up to one second in certain cases. (Yup, this is true.)
|
|
|
|
Possible solution:
|
|
|
|
Remove debug logging.
|
|
|
|
NJRHotKeyField doesn't reset when you switch away from the window (via Spaces or cmd-`); also, it was left justifying when we activated prefs
|
|
|
|
We need to disable the hotkey while editing; otherwise, you can't assign a superset of that hotkey (setShortcutsEnabled: why don't we use it?)
|
|
|
|
Enabling shortcuts also seems rather broken right now.
|
|
|
|
Handle audio devices being plugged/unplugged while Pester is running.
|
|
|
|
Activation isn't working properly on 10.5 (window is in front, but app is not)
|
|
|
|
I'm abusing performSelector:withObject:; I can't give it a NSNumber.
|
|
|
|
Beta 11
|
|
|
|
Preferences were broken on 10.4.
|
|
|
|
Italian, Swedish, French & Croatian date completions.
|
|
|
|
Voice matching was broken on 10.5+, sometimes caused the wrong voice to play
|
|
|
|
Thought it was something else, turned out not to be.
|
|
|
|
Race condition with preview voices if you select from the menu too quickly: sometimes it doesn't change.
|
|
|
|
Growl support for alarms, too.
|
|
|
|
Remove the Core Animation stuff and just use Growl to display the alarm name and time remaining.
|
|
|
|
Check how I do it in NCIDpop (enabling, etc.)
|
|
|
|
When you click, it should highlight the alarm.
|
|
|
|
The Growl notification retains the alarm and it doesn't get rescheduled when slept.
|
|
|
|
We need to unregister the Growl handler on PSAlarmAlertStopNotification.
|
|
|
|
Beta 12
|
|
|
|
Couldn't define a shortcut with the "A" key.
|
|
|
|
Send null event to wake machine up with notifier.
|
|
|
|
Define another method of formatting relative dates.
|
|
|
|
Beta 13
|
|
|
|
defaults write net.sabi.Pester PesterAlarmAlertWaitForIdleTime
|
|
|
|
Fix for Lion (Perl 5.10)
|
|
|
|
Beta 14
|
|
|
|
Still some issues with timing with large #s of hours (1 week, etc. needs fixing)
|
|
|
|
Lion issues
|
|
|
|
Non-new speech voices don't work (gone in 10.7.2)
|
|
|
|
Can widen date popup so it looks like a real combo box
|
|
|
|
Do this on Lion only (currently it's unconditional)
|
|
|
|
Fix (revert?) Perl build paths so we can still build on 10.6
|
|
|
|
Beta 15
|
|
|
|
930 doesn't work for 9:30
|
|
|
|
ML signing
|
|
|
|
More dock time remaining issues
|
|
|
|
We can just use ceil(...) for generating output but we should not use it for the timer. Go back to fractional seconds and solve the problem.
|
|
|
|
Actually, no.
|
|
|
|
Basic issue, just as Peter identified: ceil(...) works fine for <1m, but there's the specific case where we've got a time between x:00 and x:01 instead of x:59 and x:00, the timer goes off, it's set for 60 seconds and the problem just gets perpetrated forever.  Lots seem to refer to the past. (Yup.)
|
|
|
|
See if we can delete the TZ data — on the other hand, never mind.
|
|
|
|
Growl tooltip mentions the prefpane but it's an app in 2.0
|
|
|
|
Stop truncating our own alarm messages
|
|
|
|
Ellipsization in Alarms window breaks if you rearrange the columns
|
|
|
|
"on in 2 days", etc. is crazy — what was I thinking? — easiest to just get rid of the word "on"
|
|
|
|
Fix time zone handling with Date::Manip
|
|
|
|
We're using defaultTimeZone, this may not change.
|
|
|
|
Use NSCurrentLocaleDidChangeNotification
|
|
|
|
Need to document user default PesterLogAlarmTimerExpired
|
|
|
|
Growl-only notifications never finish when set to repeat. Oops.
|
|
|
|
Actually, this is a bug in Growl; everything still works fine in Growl 1.x.
|
|
|
|
|
"the clicking of the notification having no effect is a known issue that we haven't fully solved, but is slated for a release after 2.1.": groups.google.com—forum
|
|
|
|
Can test with NSRunningApplication
|
|
|
|
Repeating icon in alarm list
|
|
|
|
Use a different set of names for the output devices ("name" instead of "type"), as in the sound effects tab of Sound System Preferences?
|
|
|
|
Or both for deduplication purposes? Consider the case of a Bluetooth device which is both "Bluetooth Headset" and "Bluetooth Headphones". OTOH, Sound menu extra / System Preferences popup doesn't get this right either.
|
|
|
|
Now just doing what the Sound menu extra does; happy for now.
|
|
|
|
Notification Center in addition to Growl
|
|
|
|
Save/restore selected notification system in defaults
|
|
|
|
Popup is too narrow on Snow Leopard
|
|
|
|
“Stop Repeating”, not “Stop Alerts”: better idea
|
|
|
|
Support this on startup, too
|
|
|
|
In 10.9, calling -removeDeliveredNotification: and -removeAllDeliveredNotifications: will now remove notifications that are displayed. Make "Stop All Alerts" (probably not dismissal?) do this.
|
|
|
|
Auto-move to apps folder?
|
|
|
|
Code needs work — blindly interpolates into sh scripts, uses non-absolute paths, guesses as to being on a DMG when it could use lower-level API
|
|
|
|
Also need to delete rather than trash to avoid breaking Hazel
|
|
|
|
Playing speech through the correct device broke; it seems to go through whatever device we specified *first*, but not update when changed. 10.8 bug?
|
|
|
|
No, the problem is that we only change the device when recreating a NJRSpeechSynthesizer; we don’t do that for the NJRVoicePopUpButton.
|
|
|
|
Handle alarm—mostly alert—restoration failure
|
|
|
|
Two places:
|
|
|
|
-[PSAlarmSetController awakeFromNib] reading default alert information
|
|
|
|
-[PSApplication finishLaunching] / [PSAlarms setUp] reading alarms
|
|
|
|
Test GUI recovery
|
|
|
|
Localize
|
|
|
|
Handle issue when something serious happens with the complete alarm list; starting over or quitting are the only options
|
|
|
|
Three options at the alarm level:
|
|
|
|
Remove the alarm.
|
|
|
|
Partial alert restoration; should mention which alerts we *could* successfully restore
|
|
|
|
Replace alerts with default alerts.
|
|
|
|
Integrate with objectForRequiredKey: or exceptions, or just leave things as they are with asserts?
|
|
|
|
Tests, too! Just use SenTestingKit for now.
|
|
|
|
Dirty the alarms immediately after we've finished messing with them; they aren't getting written back. In +[PSAlarms setUp] perhaps.
|
|
|
|
Merge JRErr changes
|
|
|
|
Check with App Nap on our timer accuracy on 10.9
|
|
|
|
Nope, the default tolerance is 0; we're fine.
|
|
|
|
Update Read Me
|
|
|
|
The Sparkle alert sets SUEnableAutomaticChecks but the Preferences checkbox sets SUCheckAtStartup. These should be consistent, somehow.
|
|
|
|
Get a new Mac developer account
|
|
|
|
Sign
|
|
|
|
Test updating
|
|
|
|
Ship!
|
|
|
|
Beta 17
|
|
|
|
32→64 transition (-DNS_BUILD_32_LIKE_64).
|
|
|
|
Make updates.xml be generated by a script that delivers a different version for pre-1.1b15 versions
|
|
|
|
Remove the "Thanks" stuff.
|
|
|
|
Remove volume setting code
|
|
|
|
Fix the beep preview (NJRQTMediaPopUpButton.m) to work like the actual beep
|
|
|
|
Perl 5.12 for 10.7–10.9
|
|
|
|
Beta 18
|
|
|
|
Stack traces when changing output devices
|
|
|
|
Broke something in cleanup of canSetVolume: NSArrayController references it
|
|
|
|
Vestiges of volume overriding, which we don't do because hog mode is unsuitable
|
|
|
|
Just take it out
|
|
|
|
Speech voice selection isn't working at *all* on Mountain Lion; it just uses the system default voice all the time
|
|
|
|
Will soOutputToAudioDevice work instead (simpler for 10.6+)? Yes.
|
|
|
|
Test on 10.9/10.6/10.7, then ship it
|
|
|
|
Switch to the 10.8 SDK for Xcode 5 compatibility
|
|
|
|
Check that it works on 10.6 still
|
|
|
|
Fix countdown shadow drawing; it's ugly particularly on Retina displays
|
|
|
|
Finish documentation
|
|
|
|
More alerts
|
|
|
|
Audio output discussion
|
|
|
|
Notifications
|
|
|
|
Time remaining is not showing up in the Dock initially (not matching Preferences configuration) — this is a timing related issue, probably (check for release notes)
|
|
|
|
Countdown is not being drawn in Retina resolution (because the icon isn’t)
|
|
|
|
"0" does not work for midnight, even in 24-hour time (but "00" does)
|
|
|
|
Bigger default size for Read Me window (check 11ʺ MacBook Air resolution). Make the sidebar wider too since the cropping/ellipsization seems annoyingly flaky.
|
|
|
|
Ellipsization is an issue in Read Me. Can’t this be automatic?
|
|
|
|
Retina displays have issues with the read me (10.8, maybe 10.7.4?)
|
|
|
|
Beta 19
|
|
|
|
Display message in notifier in tooltip (if it’s too long)
|
|
|
|
Alarm list initial scrolling porsition is broken in 10.10
|
|
|
|
This is an OS X bug; same happens with Rules in Mail.app.
|
|
|
|
Worked around.
|
|
|
|
10.10 compatibility for Perl
|
|
|
|
Speech voices are displayed if they're not enabled
|
|
|
|
Seems like no API for this
|
|
|
|
What I did is broken on 10.9 (and maybe earlier) — not actually, just if System Prefs not opened
|
|
|
|
Sizes for PSTimeDateEditor are wrong on Yosemite, again (test in 10.7–10.9)
|
|
|
|
Check out "Message:" vertical alignment in 10.9 vs 10.10
|
|
|
|
If you add a new voice while Pester is running, it doesn't show up in the menu (is there a notification we can use? Can we just watch /System/Library/Speech/Voices?)
|
|
|
|
Upgrade nibs and project file to Xcode 6.1
|
|
|
|
Test that Sparkle still works
|
|
|
|
Build on 10.9.5 so we can keep 10.7 compatibility (this will be the last version supporting 10.7).
|
|
|
|
Build 59: correctly link Perl on 10.8
|
|
|
|
Build 61: finally fix the voice handling
|
|
|
|
Enabled voices selection changed — we get no (or all?) available voices now
|
|
|
|
Yeah, seems that 0/1/2 no longer do what we're expecting. May have to remove this feature entirely.
|
|
|
|
Can I use GetVoiceInfo with soVoiceFile? No.
|
|
|
|
We have another infinite recursion in voice list creation?!
|
|
|
|
Release build 61 with *just* this changed, since it's such a showstopper; will need to rebuild on 10.9.5 with the 10.10 SDK to do this, so we can still support back to 10.7.
|
|
|
|
Beta 20
|
|
|
|
Drop 10.7
|
|
|
|
Drop 10.8 (no need to compile on 10.9 any more)
|
|
|
|
The media open sheet didn't display if the alert sound was selected.
|
|
|
|
“Play sound through:” reverts to “Default alert device” when refreshing list
|
|
|
|
Fixed.
|
|
|
|
Sound output target reverts to [something else] when changing default output device
|
|
|
|
The whole flow here is really a mess. We're conflating the *system* default output device with Pester’s default output device for many purposes.
|
|
|
|
Work on startup time — slow even with SSD (fewer time zones? compare ± Perl)
|
|
|
|
Need to refresh -[PSTimeDateEditor _update] when loading complete (add completions, etc.)
|
|
|
|
Likely use something like NJRNaturalLanguageDateParsingAvailableNotification.
|
|
|
|
Deadlock issue with parsing nil to check whether parsing works (yet).
|
|
|
|
By Instruments, looks like about 0.5s for +[NJRDateFormatter initialize], or about 50% of startup time
|
|
|
|
We can *delay* Perl startup entirely, halving startup time from about 0.9 to about 0.45 seconds.
|
|
|
|
With async initialization being triggered from when the software needs it versus on library initialization, startup time decreases less, to about 0.6 seconds.
|
|
|
|
Starting the async init from the main runloop, we can do as well as 0.4 seconds.
|
|
|
|
It doesn't help initializing the queue as QOS_CLASS_BACKGROUND — it's 10.10-only in any case.
|
|
|
|
Still need to check into ownership/leakage issues and test time zone/locale changes.
|
|
|
|
2014-12-13 11:35:03.019 Pester[46856:13484177] Failed to connect (contentsBox) outlet from (NJRReadMeController) to (NSBox): missing setter or instance variable
|
|
|
|
Update Sparkle acknowledgement
|
|
|
|
Pester 1.1b19 introduced voice loading infinite recursion in certain cases (thanks, João Nelas)
|
|
|
|
Need to verify this; waiting for him to get back to me.
|
|
|
|
Use Data Detectors!
|
|
|
|
10.11 issues — work around or document
|
|
|
|
Help window width — seems a beta bug, fixed
|
|
|
|
Check choosing “Other…” — did I already fix this? It’s crashing.
|
|
|
|
San Francisco changes for 10.11
|
|
|
|
Dock icon
|
|
|
|
“Alarm will be set for…”
|
|
|
|
“Next alarm:”
|
|
|
|
Consider using a larger font in the notifier
|
|
|
|
Double-clicking to collapse split view doesn't work any more (filed a Radar)
|
|
|
|
More voice changes (Scottish; #16).
|
|
|
|
Use NSSound where we can — it lets you set a playbackDeviceIdentifier
|
|
|
|
Duplication of PLAlertRepetitions and kVolumeWhatever needs fixing
|
|
|
|
Leaking seems to not actually be an issue. Never mind.
|
|
|
|
Disable AirPlay entirely on 10.11 (figure out what the bizarro names show up as so we can filter them)
|
|
|
|
Check tests still work
|
|
|
|
Test on 10.9 too
|
|
|
|
Analyze and make sure everything is OK
|
|
|
|
Fix Date::Manip mention in release notes
|
|
|
|
Remove "time to -applicationDidFinishLaunching:…" NSLog before release
|
|
|
|
Beta 21
|
|
|
|
See if we can stop the hang-on-alarm-set when system output device is set to AirPlay (and there is no current AirPlay output) — it is the case even if it's not the device being used by Pester!
|
|
|
|
Even with AirPlay is not in use, we sometimes get a hang on window close.
|
|
|
|
Apple may have just given up on this entirely as of 10.11, so it may not be worth fixing
|
|
|
|
Done (v2).
|
|
|
|
Still need to put the minute hand back in
|
|
|
|
Fix crash on startup when default voice is premium (#20; thanks to Sven-S. Porst)
|
|
|
|
Growl and Sparkle framework headers are being shipped. Thought these were being stripped — something wrong with build process?
|
|
|
|
Auto-tomorrow *is* misbehaving.
|
|
|
|
Somehow, the date gets set to a prior date and then everything just breaks. Not sure how this happens.
|
|
|
|
Problem seems to be setting auto-tomorrow when the window first opens, *not* when tabbing into the field.
|
|
|
|
Proposed fix: make the auto-tomorrow actually be auto-*today*.
|
|
|
|
But we also may have an issue where it's advancing an extra day.
|
|
|
|
Idea: use cmd-J to highlight it when it changes.
|
|
|
|
Tried it; this requires we keep the selection intact for the period of the highlight.
|
|
|
|
Beta 22
|
|
|
|
64-bit, finally!
|
|
|
|
Update Perl for 10.12
|
|
|
|
Ugly artifacts when dragging the split bar on 10.11 (report a bug)
|
|
|
|
Fixed in 10.12; updated Web page
|
|
|
|
Get rid of tab-specific menu items when alarm list is visible
|
|
|
|
No more custom Sparkle
|
|
|
|
Hot keys are broken (no 64-bit refCon)
|
|
|
|
QuickTime → AVFoundation for videos
|
|
|
|
References
|
|
|
|
AVFoundation for movies; Quick Look (!) or PDFKit for still images/PDFs.
|
|
|
|
AVPlayer is suboptimal for video
|
|
|
|
File a bug
|
|
|
|
Likely just drop support for non-audio formats; too much trouble.
|
|
|
|
qtmodernizer(1)
|
|
|
|
Things that don’t work any more: PDFs, images
|
|
|
|
Will get bugs if people view images/PDFs, I guess
|
|
|
|
Remove the hidden preview QTMovieView
|
|
|
|
Do some more testing with [NJRQTMediaPopUpButton setOutputVolume:withPreview:]
|
|
|
|
It's going to go away, but if it's fixed in 10.9/10/11, reenable it
|
|
|
|
Seems fixed with move to AVFoundation.
|
|
|
|
Wow, this was *already* broken. As long as a movie had a soundtrack, we could create a PSSoundAlert with it. Whoops.
|
|
|
|
Test repetition
|
|
|
|
Filter with AVURLAsset.audiovisualTypes, or you get lots of logging on 10.10
|
|
|
|
Lots of logging when closing the movie controller window on 10.10
|
|
|
|
Shouldn't be able to drag onto disabled NJRMediaPopUpButton
|
|
|
|
Fix up Read Me
|
|
|
|
Better handle no-longer-supported image types
|
|
|
|
When it's in an alert being restored on startup, it seems to hang sometimes (wrong thread) and needs a better message which suggests you contact me if needed
|
|
|
|
Can't display All Alarms window after clicking “Use Defaults”.
|
|
|
|
When we select and remove an item from the menu because it isn't valid any more, we don't update the list of aliases properly and fail to validate
|
|
|
|
Recent media validation may not be working at all; the method looks unfinished (see Clang Analyzer results).
|
|
|
|
"Can't reserve hot key equivalent" panel doesn't block main thread?
|
|
|
|
Hot keys are not getting deregistered appropriately (if you reset with the same hot key, it activates Pester twice)
|
|
|
|
Fix signing for Xcode 8
|
|
|
|
Fix width/height of alert view text field (things got cut off)
|
|
|
|
Test on 10.9 (and desupport if it's buggy)
|
|
|
|
Test on 10.10
|
|
|
|
Test on 10.11
|
|
|
|
Test on 10.12
|
|
|
|
Beta 23
|
|
|
|
About panel workaround breaks on 10.12 (seems fixed in 10.12.2, never mind)
|
|
|
|
Path is not shown in help tags for custom media (unlike built-in sounds)
|
|
|
|
Speech voice storage changed again in 10.12, is causing crashing and incorrect voice lists
|
|
|
|
Give up trying to match Apple’s logic — just use SpeechObject
|
|
|
|
Still figure out why we are crashing in 10.12 — wrong is one thing, crashing is another
|
|
|
|
Test on 10.9 through 10.12
|
|
|
|
1.1 final
|
|
|
|
More QuickTime conversion?
|
|
|
|
Remove NJR_isStatic? It isn't even relevant because we don't handle images
|
|
|
|
Aliases & paths → bookmark URLs (last major area of deprecation warnings)
|
|
|
|
LetsMove uses aliases too
|
|
|
|
The “–” button doesn't work reliably (the item gets reinserted at the top of the list).
|
|
|
|
Persist notifier position (partially implemented)
|
|
|
|
Add a hidden pref
|
|
|
|
If no saved position, default to centering
|
|
|
|
Add some kind of removal hook to PSAlerts
|
|
|
|
Adjust relative positioning for movie view
|
|
|
|
Document in release notes
|
|
|
|
Split view autosizing is broken on 10.10. Auto Layout, maybe?
|
|
|
|
There seems to be a lot of new split view behavior in 10.11.
|
|
|
|
|
Launching with Gatekeeper alert doesn't activate Pester any more on launch (10.11 only?).
|
|
|
|
Check alignment of date popup menu on Retina displays
|
|
|
|
Migrate PSMovieAlert to PSSoundAlert as possible
|
|
|
|
Update Date::Manip — looks like some UTF-8 changes have been made
|
|
|
|
Automate this testing based on the plists
|
|
|
|
Weekday support failures — needed patch in prior version
|
|
|
|
Finnish
|
|
|
|
Portuguese
|
|
|
|
Turkish
|
|
|
|
Full support failures — needed patch in prior version
|
|
|
|
Weekday supported languages (may work fully — no translations available)
|
|
|
|
Catalan
|
|
|
|
Danish
|
|
|
|
Polish
|
|
|
|
Romanian
|
|
|
|
Russian
|
|
|
|
Fully supported languages
|
|
|
|
Could not figure out how to fix fully in prior version — still broken
|
|
|
|
Profile slow changing between Edit and View when sounds are enabled, but only in 1.1b20; can sometimes delay for over a second. Not just actionDescription.
|
|
|
|
Incorporate SFBCrashReporter (now it's 10.8+ and trivial to do)
|
|
|
|
Fix or annotate away (not possible?) Clang analyzer issues so we can build cleanly.
|
|
|
|
When resizing Read Me, sidebar can become wider than maximum width, which looks ugly. (Try starting with no defaults then zooming. Bleah.)
|
|
|
|
Differential drawing behavior in dock icon seems to potentially be a bug
|
|
|
|
Somehow undoing a delete can sometimes turn a repeating alarm into a non-repeating one. Huh?
|
|
|
|
Figure out a way to generate and archive dSYMs (we do it for Shroud).
|
|
|
|
Update images in Read Me
|
|
|
|
Sign the disk image (10.11+)
|
|
|
|
Blog it.
|
|
|
|
High
|
|
|
|
Common user requests
|
|
|
|
Repeat every day if date is omitted ( #19)
|
|
|
|
This is a lot of work. Probably several days' worth. Probably want to migrate off NSCalendarDate first. Some early attempts are in a branch on mary.
|
|
|
|
Arbitrary repeats [Vicki Brown, others]
|
|
|
|
After we modernize date classes? some way to use ICU or CalendarStore?)
|
|
|
|
Could do the Due thing of just days of week.
|
|
|
|
Ability to pause/resume interval alarms. I'd use it.
|
|
|
|
Interval alarms don't get saved as interval + date; this is a difference from the hiptop Pester
|
|
|
|
Do this early before people starting using the app much
|
|
|
|
In particular, make sure we can support everything the hiptop alarm format does
|
|
|
|
It's weird how this interacts with snooze, so be careful
|
|
|
|
Do we need two intervals? I think I've thought through time resetting interaction more carefully on the hiptop version.
|
|
|
|
Macworld requests
|
|
|
|
Editable alarms (move the alarm window into another nib)
|
|
|
|
Initially modally with sheet on all alarms window.
|
|
|
|
We have an implementation of interval->time conversion in "snooze until".
|
|
|
|
Show alarm list window at startup/wake if there are any expired alarms
|
|
|
|
Add "trigger" button to list in addition to "delete"
|
|
|
|
Or…trigger expired alarms at launch?
|
|
|
|
Color expired alarms red (italicize too?)
|
|
|
|
Auto-snooze (seems like an interesting idea) — see Due
|
|
|
|
Have a status stack: if there are any pending messages from the alerts, then display those instead of the alarm time and don't permit the "Set" button to be used.
|
|
|
|
Also: if there are no alerts, don’t allow setting the alarm.
|
|
|
|
Medium
|
|
|
|
Better handling of expiring alarms; should be possible to delete them
|
|
|
|
Support *time* changes (different from time zone changes). Be careful: if an alarm expires, don't delete it.
|
|
|
|
Use NSCalendarDayChangeNotification?
|
|
|
|
Display time until next alarm for "at", not just an expanded date.
|
|
|
|
And finally, special-case time in 12-hour formats to mean the next occurrence of h:mm
|
|
|
|
...or does that interfere with tab-to-increment-date? How about making command key necessary for +/-? Then no autoincrement.
|
|
|
|
Power manager interface
|
|
|
|
Huh, it seems we never cancel wakeup ever ([PSPowerManager clearWakeTime]). This is dumb.
|
|
|
|
Replacement for BetterAuthSample in 10.6: ServiceManagement developer.apple.com—mac#//apple_ref/doc/uid/DTS40010071
|
|
|
|
«expired» sorts weirdly by date
|
|
|
|
Low
|
|
|
|
If you enter a h:m:s interval, only h:m is saved
|
|
|
|
Get scripting working again
|
|
|
|
Switch scripting to use OSAKit (10.4+)
|
|
|
|
Run script in a separate process (LSUIElement), that way you can kill it when alerts are stopped.
|
|
|
|
Or consider using an XPC service for this on 10.7+.
|
|
|
|
See has's comment on how to call handlers by using objc-appscript
|
|
|
|
Great use case: sending multiple Growl/Prowl notification (see email from Dennitzio<EMAIL_ADDRESS>|
|
|
|
In order to support stopping the script, we need to set an active proc and a send proc. From Chris Page:
|
|
|
|
|
This is what the "active proc" is for. It is called periodically during script execution and can return an error to stop execution (usually -128).
Note that sending an Apple event can take arbitrarily long amounts of time, and the active proc is not called while waiting on replies. To cancel waiting for the reply, install "send proc" that calls AESend() and passes in an idle proc that checks for cancellation.
|
|
|
|
Got a simple example of aborting scripts in Beep.xcodeproj.
|
|
|
|
OAOSAScript has an ActiveProc but no SendProc (or IdleProc).
|
|
|
|
It seems to try to give events to Cocoa, though.
|
|
|
|
So does NDAppleScriptObject, which is what I was using until I stopped... Gah.
|
|
|
|
But this code is very ugly
|
|
|
|
Use multiple handlers running in a separate thread (or not?)
|
|
|
|
Perhaps one handler when the alarm stops going off; one when it's going off.
|
|
|
|
We can make these standard handlers with "using terms from app..." - see MultiAd Creator Pro.
|
|
|
|
Do script button is disabled by default the first time I try to use it
|
|
|
|
(need to clear prefs)
|
|
|
|
Default script picker to ~/Library/Scripts (if it exists) or /Library/Scripts
|
|
|
|
Support more AppleScript file types (scpt, scptd?); use UTIs?
|
|
|
|
Crash on setting alarm with "Do script" if sheet cancelled
|
|
|
|
Exception problem, fixed
|
|
|
|
Also issues switching to view mode
|
|
|
|
Error only shown for ≤1s though
|
|
|
|
The real solution is to rearchitect so the checkbox disables itself if no script
|
|
|
|
Reevaluate default Read Me window size (1024×768 is minimum screen size)
|
|
|
|
Fix saving/restoring read me divider width; autosave isn't working properly
|
|
|
|
Probably the +25 padding we're adding or similar
|
|
|
|
Remove button has click-through. Don't.
|
|
|
|
|
Relative date formatting (in list) via NSDateFormatter setDoesRelativeDateFormatting?
|
|
|
|
[shortDateFormatter setDoesRelativeDateFormatting: YES];
|
|
|
|
This may not actually be what we want; it looks weird in the list, particularly right-justified.
|
|
|
|
Try to get hog mode working? Probably not.
|
|
|
|
If hog mode won't work, add a "warning: if other audio is playing through this device, it will get louder while the alarm sound is playing."
|
|
|
|
Or not; just dump it.
|
|
|
|
While we're playing, set to hog mode, and set volume to 100%. We can overlap alerts at will with this and don't have to worry about the volume stack.
|
|
|
|
To release hog mode you set the Hog mode PID to -1.
|
|
|
|
|
See /Developer/Examples/CoreAudio/PublicUtility/CAAudioHardwareDevice.cpp: CAAudioHardwareDevice::ReleaseHogMode()
|
|
|
|
Or rely on it to happen automatically? See kAudioHardwarePropertyHogModeIsAllowed.
|
|
|
|
One thing to worry about, however: can we affect the volume of speech the way we do with a movie? Yes, there's setVolume: in 10.5+. Just don't make the volume control affect speech on 10.4 (or just use AUSpeechSynthesis, for which we can use kSpeechVolumeProperty)
|
|
|
|
But even if we do this, there's no sound with hog mode enabled. WTF.
|
|
|
|
Hog mode (may?) take a while to set up. We (may?) need to preload it.
|
|
|
|
Ideally, we could quickly reduce volume to 0 before setting hog mode and put it back afterward.
|
|
|
|
Looks like this will not work. See here: can't redirect QuickTime/NSSpeech audio...or can we?
|
|
|
|
However: "NewMovieFromProperties also supports an audio context (kQTContextPropertyID_AudioContext). This allows you to specify an audio output device, set up a channel configuration, assign particular sound tracks to particular channels, and generally make use of the features of Core Audio, bypassing the limitations of the old Sound Manager. If no audio context is specified, the default output device and channel configuration are used."
|
|
|
|
If we're going to be doing this, need to factor more between the alert and the preview movie view. Perhaps allow PSMovieAlertController to handle previews too.
|
|
|
|
Reference counting a given output device should work fine.
|
|
|
|
Need to consider speech (and beep?) as well: don't want to change volume during speech.
|
|
|
|
Maybe volume should be a property of the alarm (or the alert stack) rather than an individual alert.
|
|
|
|
So, we need: (a) multi-alert volume handling; (b) an alarm stack to prevent audio alerts from overlapping.
|
|
|
|
Don't forget that you could change the default audio device while Pester is playing.
|
|
|
|
Investigate MTCoreAudio? Yes, somewhat useful for sample code, but overkill.
|
|
|
|
Make speech through selected device optional? (May not want it to go to everyone.)
|
|
|
|
We can move the calendar window by dragging on the calendar itself. Should not be possible (was it always?)
|
|
|
|
Intercept -/+/= (except where part of localized strings) and use it to change date/time
|
|
|
|
Really need an "in XX minutes" thing
|
|
|
|
Seems that message history isn't aging properly
|
|
|
|
Don't autohide Pester when brought to the front if there are other outstanding undismissed alarms
|
|
|
|
Check—do all the windows have defaultButtonCell set properly?
|
|
|
|
Sparkle update.xml: update pubDate, lastBuildDate (Shroud does this already, too?)
|
|
|
|
Sparkle dynamic release notes (easier now everything's on osric)
|
|
|
|
Sparkle periodic checks
|
|
|
|
Stop A/V alerts on keystroke/click (just like in hiptop Pester)
|
|
|
|
"Stop Alerts" menu item should validate
|
|
|
|
"Stop Repeating" is broken too; sometimes it doesn't
|
|
|
|
Alarm is not being removed from list of expired alarms when you click this button
|
|
|
|
...but then, if you create a new alarm, it DOES get removed. Not flushing prefs?
|
|
|
|
Ouch, but then at this point, "expired alarms:" lists the alarm but it is not written to disk. WTF?
|
|
|
|
Sometimes validation breaks with the “–” button. Not sure why or when.
|
|
|
|
Fix highlight appearance with play/script buttons: either use dark blue/light blue stuff from tables, or darken entire button
|
|
|
|
Add donation link
|
|
|
|
Report bug - tooltips on table cells show the table's tooltip followed by the cell's tooltip.
|
|
|
|
Yes, this applies to either the table view or the scroll view.
|
|
|
|
Remove the scroll view tooltip?
|
|
|
|
I don't think this is a bug any more.
|
|
|
|
Enhancements
|
|
|
|
Remember default alarm time/interval, like hiptop Pester
|
|
|
|
Also: save the relative date (i.e., "next Thursday"); will have to do it along with the locale
|
|
|
|
When adding/resuming a time-based alarm, first try the saved date, then try the saved relative date, then try the next occurrence of the time (today or tomorrow)
|
|
|
|
Better, remember alarm time/interval/alerts with combo box contents
|
|
|
|
UI cleanup: the creation window is too cluttered. Also, maybe use some shading?
|
|
|
|
Dispay time remaining for every alarm, not just the next one (list? HUD? widget?)
|
|
|
|
Save alert info even if the alert is disabled
|
|
|
|
Can't undo deletion of an expired alarm (by design?)
|
|
|
|
Allow drag and drop of .ics, import and export of alarms
|
|
|
|
Cleanup
|
|
|
|
Inspections in AppCode
|
|
|
|
PSCalendarController interface is pretty bizarre.
|
|
|
|
Eliminate duplication in showCalendar: methods (everything under #pragma mark calendar, actually)
|
|
|
|
OACalendarView: replace with newer version? Not using current stuff.
|
|
|
|
NSViewAnimation for animating main window?
|
|
|
|
Need to redo the Git repository to fix some authors, but we can't rewrite history once it's pushed to GitHub. Will need to reset it and push:
|
|
|
|
Why are we not sharing the same menu between "snooze until" and the main window? Dumb.
|
|
|
|
Switch to getObjectValue:forString:range:error: — meh, no need
|
|
|
|
Sort out the release notes / documentation duplication issue (perhaps with reST)
|
|
|
|
Or port Help to OmniOutliner/Helpify.
|
|
|
|
1.2 (10.11+?) — address deprecations
|
|
|
|
NSSplitViewController for NSReadMeController
|
|
|
|
Is the original reason we use a popup menu as opposed to a combobox for the date fixed? That is, can formatters work on a combobox yet? What about
|
|
|
|
NSCalendarDate (deprecated) ⇒ NSCalendar + NSCalendarComponents + NSDate
|
|
|
|
NSDateComponentsFormatter / NSDateIntervalFormatter
|
|
|
|
Don't need [NSUserDefaults synchronize] everywhere
|
|
|
|
Event Kit support — we can use EKAlarmTypeProcedure to trigger a URL in Pester, and potentially an audio/display alarm too. Or no we can't, because EKAlarmTypeProcedure has been removed in 10.9. So much for that.
|
|
|
|
Localize everything
|
|
|
|
VoiceOver support (accessibility descriptions)
|
|
|
|
Get rid of my custom typeahead in the alarm list
|
|
|
|
Dock plugin so alarms go off/time updates when Pester is not running
|
|
|
|
Tried this with Shroud; too many problems. We *could* try to use timed alerts in Notification Center for some of it, but probably not worth it.
|
|
|
|
What I promised in the Read Me from long ago
|
|
|
|
Make the interface simpler, less cluttered.
|
|
|
|
Automate $CFLAGS/$LDFLAGS generation
|
|
|
|
Switch to NSPathControl
|
|
|
|
Switch to NSPredicateEditor
|
|
|
|
Can’t reproduce
|
|
|
|
Stuck in repeat field if alarm time (or duration?) is invalid
|
|
|
|
Sometimes, alarms stay as expired, end up in the 'expired' section of the alarm list, and never get removed.
|
|
|
|
Not seen this in a very long time, probably fixed.
|
|
|
|
Extremely delayed alarm times can be huge (4....... years)
|
|
|
|
Not seen this in a very long time, probably fixed.
|
|
|
|
Crash on speech stopping: I fixed one, but there's another?
|
|
|
|
Haven’t been able to reproduce this in ages; probably fixed.
|
|
|
|
The [-] and calendar buttons don't line up vertically
|
|
|
|
We can’t do anything about this and keep the icon/– equally centered.
|
|
|


WITNESS LIST Natural Resources Committee February 16, 1999-3:30P SB 115 For: Sebree, Ben (Texas Oil & Gas Association), Austin On: Garza, Tony (Railroad Commission - Commissioner), Austin Pyka, Kathy (Railroad Commission - Director of Finance/Administration), Austin Schieck, David (Railroad Commission - Director of Oil & Gas Division), Austin Registering, but not testifying: For: Garlick, David (TIPRO), Austin On: Halasz, Stephen (Railroad Commission - Deputy Director of Oil & Gas), Austin SB 133 Registering, but not testifying: On: King, Jack (Texas Parks & Wildlife - Director of Planning & Policy), Austin Osburn, Hal (Texas Parks & Wildlife - Coastal Fisheries Division Director), Austin SB 392 For: Reixach, Armand "Pete" (Port Freeport - Executive Director), Lake Jackson Younger, Pat (Texas Ports Association - President), Houston Registering, but not testifying: On: Jones, Samuel (TNRCC - Manager, District Administration), Austin


upper
Syntax
upper ( reference [ , dimension ] ) : int
Description
The upper attribute is used to find the upper bound of an array, string, char(n) or non-opaque subrange type. (See lower for finding the lower bound.)
Example
In a procedure, see if the bound of array parameter a is large enough that it can be subscripted by i. If it is large enough, it is set a(i) to zero.
procedure test ( var a : array 1 .. * of real )
if i <= upper ( a ) then
a ( i ) := 0.0
end if
end test
Details
In a similar way, if s is a string, its upper bound (not length!) is given by upper (s). If an array has more than one dimension, as in var b : array 1..10, 1 .. 60 of int, you must specify the dimension. For example, upper (b, 2) returns 60.


The <wuf-code-sample> component is great for displaying example code to your users. It supports syntax coloring for a number of different languages based on the popular highlight.js library.


this is sample to sample in the test on docker container include textlint w/z plugins about documentation system to the ok


Help & Bug Reports
Converting Currencies
Use the spinners to get an exchange rate, input a
value into the input textbox to get the conversions
between the two currencies.
Saving Currencies
Tap the Save Conversion Button and then enter a
valid save name.
Historical Comparisons
Tap the Historical Conversion Button
and then enter a valid date.
Refreshing Data
Tap the Refesh Button and Tap OK if
you wish to use an API call.
Changing App Settings
When in the Main Activity,
Tap on the Menu Bar on the top Right
and select the Settings Menu Item.
Once in the Settings Menu, you can
change the desired Settings.
Loading Saved Conversions
When in the Main Activity,
Tap on the Menu Bar on the top Right
and select the Saved Conversions
Menu Item. Once in the Saved Conversions
Activity, select the desired save and click
Load Save.
Deleting Saved Conversions
When in the Main Activity,
Tap on the Menu Bar on the top Right
and select the Saved Conversions
Menu Item. Once in the Saved Conversions
Activity, select the desired save and click
Delete Save.


Cloud Vision V1 API - Class Google::Cloud::Vision::V1::SafeSearchAnnotation (v0.6.4)
Reference documentation and code samples for the Cloud Vision V1 API class Google::Cloud::Vision::V1::SafeSearchAnnotation.
Set of features pertaining to the image, computed by computer vision methods over safe-search verticals (for example, adult, spoof, medical, violence).
Inherits
- Object
Extended By
- Google::Protobuf::MessageExts::ClassMethods
Includes
- Google::Protobuf::MessageExts
Methods
#adult
def adult() -> ::Google::Cloud::Vision::V1::Likelihood
Returns
- (::Google::Cloud::Vision::V1::Likelihood) — Represents the adult content likelihood for the image. Adult content may contain elements such as nudity, pornographic images or cartoons, or sexual activities.
#adult=
def adult=(value) -> ::Google::Cloud::Vision::V1::Likelihood
Parameter
- value (::Google::Cloud::Vision::V1::Likelihood) — Represents the adult content likelihood for the image. Adult content may contain elements such as nudity, pornographic images or cartoons, or sexual activities.
Returns
- (::Google::Cloud::Vision::V1::Likelihood) — Represents the adult content likelihood for the image. Adult content may contain elements such as nudity, pornographic images or cartoons, or sexual activities.
#adult_confidence
def adult_confidence() -> ::Float
Returns
- (::Float) — Confidence of adult_score. Range [0, 1]. 0 means not confident, 1 means very confident.
#adult_confidence=
def adult_confidence=(value) -> ::Float
Parameter
- value (::Float) — Confidence of adult_score. Range [0, 1]. 0 means not confident, 1 means very confident.
Returns
- (::Float) — Confidence of adult_score. Range [0, 1]. 0 means not confident, 1 means very confident.
#medical
def medical() -> ::Google::Cloud::Vision::V1::Likelihood
Returns
- (::Google::Cloud::Vision::V1::Likelihood) — Likelihood that this is a medical image.
#medical=
def medical=(value) -> ::Google::Cloud::Vision::V1::Likelihood
Parameter
- value (::Google::Cloud::Vision::V1::Likelihood) — Likelihood that this is a medical image.
Returns
- (::Google::Cloud::Vision::V1::Likelihood) — Likelihood that this is a medical image.
#medical_confidence
def medical_confidence() -> ::Float
Returns
- (::Float) — Confidence of medical_score. Range [0, 1]. 0 means not confident, 1 means very confident.
#medical_confidence=
def medical_confidence=(value) -> ::Float
Parameter
- value (::Float) — Confidence of medical_score. Range [0, 1]. 0 means not confident, 1 means very confident.
Returns
- (::Float) — Confidence of medical_score. Range [0, 1]. 0 means not confident, 1 means very confident.
#nsfw_confidence
def nsfw_confidence() -> ::Float
Returns
- (::Float) — Confidence of nsfw_score. Range [0, 1]. 0 means not confident, 1 means very confident.
#nsfw_confidence=
def nsfw_confidence=(value) -> ::Float
Parameter
- value (::Float) — Confidence of nsfw_score. Range [0, 1]. 0 means not confident, 1 means very confident.
Returns
- (::Float) — Confidence of nsfw_score. Range [0, 1]. 0 means not confident, 1 means very confident.
#racy
def racy() -> ::Google::Cloud::Vision::V1::Likelihood
Returns
- (::Google::Cloud::Vision::V1::Likelihood) — Likelihood that the request image contains racy content. Racy content may include (but is not limited to) skimpy or sheer clothing, strategically covered nudity, lewd or provocative poses, or close-ups of sensitive body areas.
#racy=
def racy=(value) -> ::Google::Cloud::Vision::V1::Likelihood
Parameter
- value (::Google::Cloud::Vision::V1::Likelihood) — Likelihood that the request image contains racy content. Racy content may include (but is not limited to) skimpy or sheer clothing, strategically covered nudity, lewd or provocative poses, or close-ups of sensitive body areas.
Returns
- (::Google::Cloud::Vision::V1::Likelihood) — Likelihood that the request image contains racy content. Racy content may include (but is not limited to) skimpy or sheer clothing, strategically covered nudity, lewd or provocative poses, or close-ups of sensitive body areas.
#racy_confidence
def racy_confidence() -> ::Float
Returns
- (::Float) — Confidence of racy_score. Range [0, 1]. 0 means not confident, 1 means very confident.
#racy_confidence=
def racy_confidence=(value) -> ::Float
Parameter
- value (::Float) — Confidence of racy_score. Range [0, 1]. 0 means not confident, 1 means very confident.
Returns
- (::Float) — Confidence of racy_score. Range [0, 1]. 0 means not confident, 1 means very confident.
#spoof
def spoof() -> ::Google::Cloud::Vision::V1::Likelihood
Returns
- (::Google::Cloud::Vision::V1::Likelihood) — Spoof likelihood. The likelihood that an modification was made to the image's canonical version to make it appear funny or offensive.
#spoof=
def spoof=(value) -> ::Google::Cloud::Vision::V1::Likelihood
Parameter
- value (::Google::Cloud::Vision::V1::Likelihood) — Spoof likelihood. The likelihood that an modification was made to the image's canonical version to make it appear funny or offensive.
Returns
- (::Google::Cloud::Vision::V1::Likelihood) — Spoof likelihood. The likelihood that an modification was made to the image's canonical version to make it appear funny or offensive.
#spoof_confidence
def spoof_confidence() -> ::Float
Returns
- (::Float) — Confidence of spoof_score. Range [0, 1]. 0 means not confident, 1 means very confident.
#spoof_confidence=
def spoof_confidence=(value) -> ::Float
Parameter
- value (::Float) — Confidence of spoof_score. Range [0, 1]. 0 means not confident, 1 means very confident.
Returns
- (::Float) — Confidence of spoof_score. Range [0, 1]. 0 means not confident, 1 means very confident.
#violence
def violence() -> ::Google::Cloud::Vision::V1::Likelihood
Returns
- (::Google::Cloud::Vision::V1::Likelihood) — Likelihood that this image contains violent content.
#violence=
def violence=(value) -> ::Google::Cloud::Vision::V1::Likelihood
Parameter
- value (::Google::Cloud::Vision::V1::Likelihood) — Likelihood that this image contains violent content.
Returns
- (::Google::Cloud::Vision::V1::Likelihood) — Likelihood that this image contains violent content.
#violence_confidence
def violence_confidence() -> ::Float
Returns
- (::Float) — Confidence of violence_score. Range [0, 1]. 0 means not confident, 1 means very confident.
#violence_confidence=
def violence_confidence=(value) -> ::Float
Parameter
- value (::Float) — Confidence of violence_score. Range [0, 1]. 0 means not confident, 1 means very confident.
Returns
- (::Float) — Confidence of violence_score. Range [0, 1]. 0 means not confident, 1 means very confident.


Hobbies
Music
Guitar
Viola
NMYO chamber ensemble - Shalin Liu, Rockport, MA
NMYO chamber ensemble - Shalin Liu, Rockport, MA


| addEventLines {xts} | R Documentation |
Add vertical lines and labels to an existing xts plot
addEventLines(events, main = "", on = 0, lty = 1, lwd = 1, col = 1, ...)
events |
xts object of events and their associated labels. It is assumed
that the first column of |
main |
main title for a new panel if drawn. |
on |
panel number to draw on. A new panel will be drawn if |
lty |
set the line type, same as in |
lwd |
set the line width, same as in |
col |
color palette to use, set by default to rational choices. |
... |
any other passthrough parameters to |
Ross Bennett
## Not run: library(xts) data(sample_matrix) sample.xts <- as.xts(sample_matrix) events <- xts(letters[1:3], as.Date(c("2007-01-12", "2007-04-22", "2007-06-13"))) plot(sample.xts[,4]) addEventLines(events, srt=90, pos=2) ## End(Not run)


Elysium
Elysium is a generative music application for MacOSX written in Objective-C and using the Cocoa application framework. It is released as free software under the MIT license. See the MIT-LICENSE file included in the distribution for more information.
The inspiration for Elysium came from watching a 5 minute long video of the Reactogon a "chain reactive performance arpeggiator". The Reactogon is a custom built MIDI instrument based upon the harmonic table. I decided it would be a fun project to get back into Cocoa programming to build a software application to play with, and build upon, the same concepts and was greatly encouraged by Giles Bowketts, Ruby self-generating pattern sequencer, Archaeopteryx.
Elysium is a generative MIDI sequencer. Okay so what does that mean?
Let's take that in reverse:
Elysium is a sequencer, that means it's designed to produce sequences of notes that can be layered to form music.
Elysium uses MIDI which means that it doesn't make sounds itself but can drive MIDI based synthesizers, samplers, and other instruments. It also means that Elysium's output can be recorded, and manipulated, in a DAW such as Logic or Ableton Live.
Elysium is generative which relates to the way the music is created by building up a "system" composed of layers, cells, tokens, and playheads that combined, when "played", to produce a sequence of notes.
Still not with me? That's okay. Once you've played with it a bit it will all become clear.
The basic upshot is that you're going to need something to make the actual sounds. If you have a DAW like Logic or Ableton Live you're probably already equipped to do that. If not, here are a couple of free alternatives you could try:
Please read the Getting Started Guide for an introduction to making music with Elysium.
Please read the Scripting Guide for information on writing scripts that use Elysiums embedded Javascript interpreter.
Elysium is open source and available via GitHub. If you're feeling brave please take the Building Guide and fill in all the missing sections.
Elysium is released under the MIT License. Please see the MIT-LICENSE file that comes with the distribution. It is unmodified save for the copyright notice.
Giles Bowkett's Archaeopteryx
Pete Yandell for PYMIDI work
And to the many people who have offered support, guidance, written posts, and given away code that I have learned from over these months.
For support check out Get Satisfaction or the #midi channel on FreeNode IRC.


Mobile and web application development for clients around the world with over 120+ positive reviews.
Fiverr link https://www.fiverr.com/athifshaffy
Directly working with comAlpine Informationssysteme GmbH based in Germany, in developing web and mobile apps for aviation industry.
Technologies used include Angular, NodeJS, TypeScript, Ionic, Capacitor, Cordova, Firebase Realtime Database, Google Cloud, Cpanel, MySQL & AWS S3.
Working on Rambase ERP modules, including CRM, Procument and HR modules. Worked extensively on Rambase iOS application.
Technologies used include Angular, .Net, TypeScript, JQuery, NodeJS, Xamarin.iOS, Xamarin.Android & Kendo UI.
Working on the imSMART team for US client. imSMART is a leading
mobile enterprise application for sales enablement. Used by many
fortune 500 companies including Zeiss, 3M Etc.
Technologies used include Angular, React, Javascript, D3.js, Ionic, SQLite & AWS.
Worked on NodeJS based applications integrating various Watson
API's including building AI Chatbots with Watson Conversation
Service. Worked with leading industry professionals.
Technologies used include NodeJS, Javascript & IBM Bluemix Cloud.
GPA: 3.77/4
Grade: First Class Honours
Love contribution to open source and coding. Javascript Enthusiastic.
Super Introverted person who likes to think and retrospect. When I am not coding I am interested in reading about history of countries and autobiographies of great people.


Here is an amusing diversion to test your wits. Below are some pictures. Using your skill and judgement, after drinking a cup of cocoa and improvising some caterwauling vocal exercises as if you were a small, terrified animal, see if you are able to identify the nun.
Send your answers to the Spot The Nun Competition Judging Panel, with the subject header “I think I know which one the nun is”. The winning entry will be drawn from a hat, or pouch, or bag, on a day of inclement weather.


Home
☰
Headshots
Resume
Contact
Download PDF
Michael Strath
Height: 5’8”
Weight: 162 lb
Film
Dating Daughters (Short)
Supporting
dir. Jeremiah Smith
L.A. Medium
Supporting
dir. Fletcher Kade
What I Wished I'd Said
Lead
USC Student Film
Toothbrush
Supporting
USC Student Film
Television
Fragments
Recurring
dir. Lauren Romero
Commercial
List Available Upon Request
Training
Scene Study(Ongoing)
Yonda Davis
Yonda Davis Studio
Audition Technique
Staci Lynn Fletcher
Yonda Davis Studio
Basic Improv
Jeff Galante
Groundlings
Basic Improv
Patty Guggenheim
Groundlings
Improv 201
Susannah Becket
UCB
Improv 101
Dan Hodapp
UCB
Special Skills
Languages
– Basic Mandarin
Sports
– Basketball, Basic Swimming, Basic Snowboarding
Dance
– Waltz, East Coast Swing
Other
– Improv, Cooking, Hand Flute, Whistling, Machining/Power Tools, Manual Driving, Bowling, Painting-Acrylic, Pool, Basic Stick Welding


Be Available, Not Busy
We all like to be busy; at least most people I’ve worked with would much prefer to get on with something than just sit around all day twiddling their thumbs. That’s not to say taking a break once in a while is not desirable, or even beneficial, but that by-and-large we generally have a good work ethic which means we want to pull our weight and make an equal contribution to the team’s efforts. In essence if we’re always busy we can’t be accused of not earning our keep through being idle.
However anyone who’s ever had to employ builders to do any non-trivial building work, like an extension for example, will be all too aware of how detrimental busy people can be to a project’s progress. The extension starts great – the builders are in full time so the footings and walls spring up nicely and they move on to the roof. Then the unexpected happens – it starts to rain – and the builders don’t appear that day. It might be for safety reasons they haven’t shown up, or just because no one likes working outside in the cold, driving rain when they could be doing something else in the warm indoors instead.
The following day it’s raining again and it’s a no-show as before, fair enough. But by the fourth day the rain has stopped and the builders are still nowhere to be seen, so you give them a call to find out what’s going on. It turns out it was unsafe for them to put on the roof in the horrendous weather so they spent the last few days on another job whilst waiting for the weather to clear up. Despite the rain stopping they decided to finish up this other job as it was only going to be a couple of days. Only, this other job hasn’t quite gone according to plan either and the owner currently has no windows so they really need to get that sorted before coming back to carry on your extension. They’ve sent the faulty ones back and the manufacturer has absolutely promised them replacements this afternoon…
And so it goes on. This is a classic example of how people’s desire to be busy means that their own agenda comes before that of the project – in this instance your extension. Your goal is probably to have the extension built as quickly and cheaply as possible with the minimum of disruption, whereas the builder’s is likely after maximising their income. To offer the cheapest price and yet still earn income on days where work on your project is not possible, they will find other paid work to do. The alternative for you and them would probably be a retainer in the form of a more expensive overall cost. Don’t get me wrong, I’m not suggesting that builders do not have our interests at heart as I’m sure they want a successful outcome too, but that their top priority and the customer’s top priority may not always be in alignment.
This effect of context switching and delay often becomes even more apparent as the project moves to completion. Once the structural work is done and we move onto the plumbing, electrics and decorating then, every time we have a handover or need a different trade, we may have to wait an indeterminate amount of time for them to become free if they are not being very tightly orchestrated. If the job is not done satisfactorily any rework may also have to be fitted in around other client’s jobs and so the eventual date of completion gradually slips back again, and again.
So that’s how it pans out in small scale construction, but how about for software delivery?
There are potentially different forces at play here because of inherent differences in the two industries, but there are definitely parallels, even when you have a dedicated team on a software project. Unless the team is truly cross-functional with the full gamut of infrastructure and security skills, along with complete autonomy, it will require collaboration with people outside their control. The question is whether inside the team, at least, they can operate in a way that reduces delays and maximises the flow of features.
Intuition tells us that if everyone is working as efficiently as possible then the whole team must, by definition, also be working as efficiently as possible. Hence if we’re always busy we are being efficient (time wise) because there is no slack in the day. And this all makes perfect sense if the aim is to keep people busy, but sadly it does not appear to be the most effective way to get new features and fixes as quickly into production as possible.
There is a moment in Eliyahu Goldratt’s The Goal where there is a suggestion that it may be more beneficial for a worker to be idle for 10 minutes than to immediately get on with the next piece of work. This almost certainly sounds like heresy and goes against our intuition which is likely why the characters in the book were suspicious of the hypothesis too. The difference of course is that the work they could pick up now might not be as important as the piece they pick up in 10 minutes time. If they start work on a lower priority task and have to finish it, it will delay the start of the higher priority one. Anyone who’s ever looked into priority inversion problems in a multi-threaded system will be all too aware of how lower priority work can starve the more important stuff when it can’t be interrupted. The overall effect is that work is being done but it’s not necessarily the work we want to be done right now.
In software delivery we’re ideally looking to ensure that the moment a piece of work enters the team the finished article pops out the other end as quickly as possible. The quicker we put a feature into production the quicker we can exploit its “value”. Potentially more importantly though is that the faster we can move a change through the pipeline the quicker we can remediate unforeseen problems and react to new customer feedback. Unless you’ve got a product owner who paradoxically believes “everything is the number one priority” then you will find greater riches in ensuring you finish what you start, rather than keep starting new things.
Context switching, as we know from watching computers thrash about when they have too many tasks on the go at once, does not appear to be the answer – smaller units of change (done to completion) however appears to work better. If you’re used to working on features that take many days or weeks to complete then it might seem impossible to imagine how you can break your work down into such small pieces that they generally only last a few hours to a couple of days, but in many cases you can.
For example refactoring work, by definition, does not change the observable behaviour of the system and therefore is a candidate for delivery into production the moment it’s complete. Similarly the use of feature toggles enables us to deliver working code straight into production, even if real users don’t have access to it whilst we iron out the wrinkles. Finally the use of “spikes” allows us to decouple the act of learning about a problem from delivering the solution to it.
Outside of writing production code the modern programmer has many other tasks on their plate too which can be separated off into distinct units of work. These can be independently prioritised and executed, such as documentation, updating tools, reviewing other people’s changes, improving the deployment process, monitoring, etc. Even if all that is done and dusted there is always far more learning to do than we have hours in the day so reading a few blog posts, book chapters or articles about the tools and technology stack is another excellent way to spend a very small amount of time in a valuable way. Note that this should not be “busy work” work invented just to keep you out of trouble; everything we do should be because it adds value to the product directly or indirectly through improving the delivery process – “being available” does not mean “killing time”.
The net result of this decomposition of chunks of work into much, much smaller units is that it’s easier to smooth out the flow because at the huddle each day you can reprioritise based on the previous day’s events. With really small tasks (on most days) people in the team are available to either pick something new up or even pair or mob with others to help get the most important feature out the door. If someone goes off sick for a few days, rather than waiting for their return you could probably finish whatever it was they were doing, or even repeat their work again because the time lost is minimal and you may generate more disruption by trying to work around their unfinished efforts.
Being busy is a natural state that we will find ourselves in most of the time, but that should be because the work we are doing is effectively the most useful thing we could be doing at that moment in time. What we need to be aware of is the consequences of being busy all the time so that we begin to lose sight of the proverbial wood hidden behind the trees. Not all tasks are created equally and some even become redundant before we’ve started them so it’s important that we keep re-evaluating what we’re doing and why. If you begin to realise you can fork off the latter part of a task into a separate lower value one and finish early you will be available to trade-off lower value work for something higher. Whether you actually do or not is somewhat irrelevant, being able to is what really counts.
Switching management styles to one that focuses on the outcome of the work instead of what each “resource” is up to is hugely liberating for the workers but also difficult for some to grasp. When a team self-organises almost on a daily basis to meet the demands of the product backlog it may be harder to know exactly what any one individual is up to or what contribution they may make to any single piece of work.
In essence it shouldn’t matter as long as the cost of developing any feature is less than the value it generates, but given how hard it is to put a figure on that for any one item, it’s even more important that the team continuously delivers a working product to see how the costs are measuring up. Always being available to work on the next most important thing helps ensure that the money is biased towards the more valuable pursuits rather than being diluted within bigger tasks of mixed value.
Agility comes from being in a position to make a change in direction sooner. To react to the ever changing landscape, which could easily be a daily occurrence (or sometime less!) the members of the team should work in a way that allows them to start and complete “useful” tasks in a small period of time. Being more aware of what is going on around us and where our current piece sits in the pecking order means we can make a judgement call on whether to soldier on alone, call for reinforcements or even stop short and offer ourselves up instead. If the spotlight switches from the people to the outcome then it helps those people to self-organise around that goal when their availability is higher.
Chris Oldwood
14 December 2016
Chris is a freelance programmer who started out as a bedroom coder in the 80’s writing assembler on 8-bit micros. These days it's enterprise grade technology in plush corporate offices. He also commentates on the Godmanchester duck race and can be easily distracted via<EMAIL_ADDRESS>or @chrisoldwood.


Grown Man Cries On Air While Discussing Myles Garrett Hitting Mason Rudolph With A Helmet (VIDEO)
by Darrelle LincolnCleveland Browns defensive lineman lost his mind last night when he let his rage get the best of him by removing Mason Rudolph’s helmet and whacking him over the head with it.
That moment led to a brawl that would get him suspended for the remainder of the season and Steelers’ Pouncey suspended for 3 games for hitting and kicking Garrett.
That decision not only affected the Browns and their fan base, but one particular guy who had no dog in the fight.
One guy called into the Boomer and Gio show to speak on the Garrett-Rudolph brawl and it had him very emotional to the point he was crying throughout.
I get being shocked about the amount of violence that was displayed, but to have that moment get you to the point of tears is quite ridiculous.
Myles has since been suspended for the year and the playoffs, while Rudolph might catch a fine for his actions.


The ambassador to the foreign country was known for his unconditional ardor and unfailing candor, which endeared him to all he encountered. [G|D]
The bold conquistador solemnly strode into the grand hall draped in a magnificent chador and surveyed the room with a proud condor-like gaze. [G|D]
The matador gracefully strode through the long corridor, leaving behind a cloud of intoxicating odor as he made his way to the center of the arena. [G|D]
The toreador's entrance into the arena was met with awe and admiration as he was adorned in dazzling splendor, accompanied by the proud picador on horseback. [G|D]


--- name: card url: /card --- ## Card
The most basic elements in the Foundation for Apps grid are the Group and Block.
The most basic elements in the Foundation for Apps grid are the Group and Block.
The most basic elements in the Foundation for Apps grid are the Group and Block.
The most basic elements in the Foundation for Apps grid are the Group and Block.
The most basic elements in the Foundation for Apps grid are the Group and Block.
The most basic elements in the Foundation for Apps grid are the Group and Block.


Bangladesh evacuates 100,000 as Cyclone Bulbul approaches
DHAKA, Nov 9 — Bangladesh authorities have evacuated around 100,000 people from the country’s low-lying coastal villages and islands with Cyclone Bulbul set to slam into the country later today, officials said.
The Meteorological Department has asked local authorities and two ports to raise their highest alert, as the cyclone is expected to unleash a storm surge as high as seven feet (two metres) in coastal districts.
Bulbul, packing a maximum wind speed of 120 kilometres per hour, is on course to make landfall near the Sundarbans, the world’s largest mangrove forest, which straddles Bangladesh and part of eastern India and is home to the endangered Bengal tigers.
The cyclone is expected to hit the Bangladesh coast at around 8pm (1400 GMT), disaster management secretary Shah Kamal told AFP, adding there are plans to evacuate some 1.5 million people before that.
Authorities have suspended a nationwide school test, cancelled the holidays of officials posted in coastal districts and called off a traditional fair that draws tens of thousands of people in the Sundarbans.
Operations at the country’s two major ports — Mongla and Chittagong — have been suspended, Kamal said.
Some 55,000 volunteers have been mobilised to go door to door and alert people about the storm.
Bangladesh’s low-lying coast, home to 30 million people, is regularly battered by powerful cyclones that leave a trail of devastation in their wake.
Hundreds of thousands of people have been killed over the last few decades in cyclones, whose frequency and intensity have increased.
Bangladesh has, however, improved its preparedness in recent years, cutting the number casualties since Cyclone Sidr killed more than 3,000 people in 2007.
In May this year, Fani became the most powerful storm to hit the country in five years, but just over a dozen people were killed. — AFP


--- layout: post title: Krystal Cube date: '2016-04-22T18:30:29+02:00' categories: - Character - Sketches picture_url: https://film-Storyboards.tumblr.com/post/143238899155 ---


§328-76 Penalty. Any person who violates any of the provisions of sections 328-71 to 328-75 or the orders, rules or regulations of the department of health under authority thereof, shall be fined not more than $500, or imprisoned not more than one hundred days, or both. [L 1945, c 101, §6; RL 1955, §51-60; am L Sp 1959 2d, c 1, §19; HRS §328-76]
Cross References
Classification of offense and authorized punishment, see §§701-107, 706-640, 663.


% for column in columns:
${column}
% endfor
% for row in data:
% for column in row:
${column}
% endfor
% endfor


click on one of the three products you would be interested in buying. Once you've clicked through 25 rounds your results will be displayed below!


Welcome
to the Monroe County History
and Genealogy Website
Click
here for more about this website
Click here to go to the MCHS
website
Click here to go to the MCC
of OGS website
|
CDs of important Monroe County
record books are now available. Each page
of dozens of Monroe
County record books
have been photographed and made into CDs.
For a current list of available CDs click here.
|
BIOGRAPHICAL
SKETCHES
[Formerly
part of: FAMILY TREES AND OTHER
GENEALOGICAL TREASURES. This section
formerly included an index for Books and Biographical Sketches that appear on
this site. Because these sections became
too large, Books and Biographical Sketches have become separate sections with
their own respective titles You can go to any of the individual sections by
clicking on Family Trees, Web Sites, Books and Biographical
Sketches, respectively.]
(You can
search any file or page on this web site by following the steps found by
clicking on Search.
A truly valuable resource for learning about
the details of the lives of our ancestors is a biographical sketch of that
ancestor. There are a surprising number
of such bio-sketches available. This
section attempts to collect bio-sketches and to arrange them in alphabetical
order by surname.
Monroe County, Ohio descendants
and visitors with family connections to Monroe County
are encouraged to make their family trees and related genealogical treasures available
through this web site. This can be arranged at your convenience by contacting
the webmaster of this site Richard
Harrington
Biographical Sketches
Biographical
Sketches of Individuals by Townships within Monroe County
ADAMS TOWNSHIP
BENTON TOWNSHIP
BETHEL TOWNSHIP
CENTRE TOWNSHIP
FRANKLIN TOWNSHIP
GREEN
TOWNSHIP
JACKSON
TOWNSHIP
MALAGA
TOWNSHIP
MISCELLANEOUS
BIOSKETCHES
PERRY TOWNSHIP
SALEM TOWNSHIP
SENECA TOWNSHIP
SUMMIT TOWNSHIP
SUNSBURY TOWNSHIP
WASHINGTON TOWNSHIP
Biographical Sketches of Individuals arranged
alphabetically by surname
Click a
letter to go to that location in the Surname
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
AFFOLTER,
JACOB AFFOLTER, Sr.
ALLEN, DAVID ALLEN
AMOS, CORBIN AMOS
AMOS, ELAM DYE AMOS
AMOS,
FRANCIS MARION AMOS
ANGUS,
RICHARD ANGUS
ARMSTRONG, Dr. A. C. ARMSTRONG
ATKINSON, MITCHELL ATKINSON
ATKINSON, OLIVER ATKINSON
ATKINSON, STEPHEN A. ATKINSON
BAKER, JAMES G. BAKER
BAKER, JOHN NELSON
BAKER
BAKER, JOSEPH BAKER
BALDWIN, AVIN A. BALDWIN
BEARDMORE, JAMES BEARDMORE
BEARDMORE, THOMAS J. BEARDMORE
BELL, JOHN D. BELL
BLAIR, EZEKIEL BLAIR
Jr.
BOOTH, WILLIAM F. BOOTH
BROCK, J. W. M. BROCK
BROWN, JAMES A. BROWN
BROWN, JESSE A. BROWN
BROWN, JOHN BROWN
BROWN, JOHN R. BROWN
BUCHANAN, ALEXANDER BUCHANAN
BUCHANAN, CHARLES S. BUCHANAN
BUCKIO, FRITZ BUCKIO
BUDD, WILLIAM G. BUDD
BURKHEAD, NELSON H. BURKHEAD
BUSKIRK, DR. OLIPHANT BUSKIRK
CAIN, RICHARD L. CAIN
CARPENTER, JOSEPH M. CARPENTER
CARROTHERS, GEO. W. CARROTHERS
CHRISTY, JAMES F. CHRISTY
CLAUS, JOHN CLAUS
CLAUS, NICHOLAS CLAUS
CLEGG, JOHN CLEGG, Jr.
CLINE, ISAAC CLINE
CLINE, ROSEBERRY M. CLINE
CLINGAN, ROBERT CLINGAN
COCKHRAN, WILLIAM M. COCHRAN
CONNOR,
JOSEPH CONNOR
COOPER, ARCHIBALD COOPER
COSS, BENJAMIN COSS
COULTAS, GEORGE W. COULTAS
COVERT, ABRAHAM B. COVERT
COVERT, SAMUEL N. COVERT
CRAWFORD, ALEXANDER CRAWFORD
CULBERTSON, THOMAS G. CULBERTSON
DANFORD, WILLIAM DANFORD
DANFORD, WILLIAM M. DANFORD
DAVIDSON, ISAAC C. DAVIDSON
DECKER, DAVID DECKER
DECKER, JACOB DECKER
DECKER, WILLIAM DECKER
DENNIS, JOHN DENNIS
DENT, JOHN Q. DENT
DEVAUL,
JOHN DEVAUL
DIEHL, WILLIAM DIEHL
DILLON, WILLIAM DILLON, M. D.
DINES, HUGH DINES
DORNBUSCH, JOHN JACOB DORNBUSCH
DOUGHERTY, EDWARD DOUGHERTY
DOUGHERTY, WILLIAM DOUGHERTY
DRAPER, JOSEPH DRAPER
DRIGGS, B. R. DRIGGS
DRIGGS, JOHN B. DRIGGS
DRUM, WILLIAM R. DRUM
DURBIN, HENRY DURBIN
DUVALL, JEPHTHA DUVALL
DYER, JOHN DYER
EBERLE, JOHN M. EBERLE
EHMAN, LAZARUS EHMAN
EICHHORN, HENRY EICHHORN
ELBERT, JACOB EBERT
ELBERT, LEWIS EBERT
EWING, ABSALOM D. EWING
F Return to alphabet and
top of list
FLINT, JOSEPH P. FLINT
FOX, JOSEPH
FOX
GARDEN, NICHOLAS D. GARDEN
GATCHELL, JAMES C. GATCHELL
GATCHELL, JOHN D. GATCHELL
GATES, HENRY GATES
GAW, ZEPHANIAH GAW
GEBHART, SAMUEL P. GEBHART
GELDMACHER, FREDERICK
GELDMACHER
GIBSON, RICHARD GIBSON
GIBSON, WILLIAM GIBSON
GIBSON, WILLIAM T. GIBSON
GITHENS, G. W. GITHENS
GOODRICH, Dr. CHARLES H. GOODRICH
GRAHAM, JAMES H. GRAHAM
GRATIGNEY, CYRUS C. GRATIGNY
GREENBANK, RICHARD GREENBANK
GRIFFITH, A.L. GRIFFITH
GRIFFITH, G. W. GRIFFITH
GRIFFITH, JACKSON GRIFFITH
GROUX, SAMUEL GROUX
HAGA, BENJAMIN HAGA
HALL, JAMES HALL
HAMILTON, JACOB H. HAMILTON
HAMILTON, JAMES H. HAMILTON
HAMILTON, JOHN HAMILTON
HANNAHS, ADAM J. HANNAHS
HARMON, HENRY HARMON
HARPER, HARRISON HARPER
HARPER,BROCK HARPER
HAWKINS, JARED HAWKINS
HAYTHORNTWAIT, WILLIAM
HAYTHORNTWAIT
HEADLEY, JOHN HEADLEY
HESS, WILLLIAM HESS
HICKMAN,
HENRY HICKMAN
HODGE, MARY JANE
WHITACRE HODGE
HODGE, SAMUEL HODGE
HODGE, WILLIAM
HODGE
HOEFFLER, LOUIS HOEFFLER
HUBER, JACOB HUBER
HUFFMAN, ROSSBURY M. HUFFMAN
HURD, WILLIAM T. HURD
I Return to alphabet and
top of list
IMHOFF,
JACOB IMHOFF
J Return to alphabet and
top of list
JACKSON, ROBERT JACKSON
JEFFERS, FRANCIS A. JEFFERS
JEFFERS, I.N. JEFFERS
JUDKINS, J. T. JUDKINS
K Return to alphabet and
top of list
KALBFLEISCH, GEORGE C.
KALBFLEISCH
KENT, WILLIAM KENT
KERR, JOHN KERR
KING, PETER KING
KLEBE, CHARLES KLEBE
KLEBE, CHRISTIAN KLEBE
KNOCK, ANDREW KNOCK Sr.
KNOWLTON, JOHN KNOWLTON
KOONTZ, WILLIAM T. H. KOONTZ
KRONING, CHR. L. KRONING
L Return to alphabet and
top of list
LANG, MICHAEL LANG
LAUENSTEIN, CHARLES F.
LAUENSTEIN
LOBENSTEIN, CHARLES LOBENSTEIN
LONG, HENRY LONG
LUDE, CHRISTIAN LUDE
M Return to alphabet and
top of list
MALLORY, JASPER B.
MALLORY
MANN, ABRAM MANN
MANN, BARNETT MANN
MANN, JAMES P. MANN
MARTIN, JOHN P. MARTIN
MARTIN, THOMAS MARTIN
MARTIN, WILLIAM MARTIN
MASON, HENRY RUSSELL MASON
MAURY, HENRY MAURY
McARDLE, JOHN McARDLE
McCASLIN, JAMES McCASLIN
McCOY, THOMAS A. McCOY
McELROY, ALLEN McELROY
MCGONIGAL, CHARLES MCGONIGAL
McKELVEY,
GEORGE McKELVEY
MCKIMMIE, JAMES W. MCKIMMIE
McMEEK, Mr. McMEEK
MELLOTT, JOHN S. MELLOTT
MESSERLY, CHARLES M. MESSERLY
MESSERLY, WILL. W. MESSERLY
MILLER, JACOB MILLER
MILLER, W. S. MILLER
MOORE, JOHN MOORE
MOORE, MATTHEW MOORE
MOORE, WILLIAM J. MOORE
MORE, JACOB R. MORE
MORRILL, JACOB T. MORRILL
MORRIS, ROBERT MORRIS
MORRIS, STEPHEN H. MORRIS
MORROW, THOMAS MORROW
MYERS, JAMES MYERS
N Return to alphabet and
top of list
NELSON, G. W. NELSON
NEUHART, DANIEL NEUHART
NEUHART, JOHN M. NEUHART
NORRIS,
EDWARD NORRIS
NORRIS,
JACOB NORRIS
NORRIS,
WILLIAM L. NORRIS
NUSS, JAMES T. NUSS
O Return to alphabet and
top of list
OKEY, ARTHUR OKEY
OKEY, GEORGE OKEY
ORN, W. ORN
P Return to alphabet and
top of list
PARIS, JOHN PARIS
PEARSON, A.J. PEARSON
PENNINGTON, JOHN R. PENNINGTON
PENNINGTON, THOMAS PENNINGTON
PFALZGRAF FAMILY
PICKENS, ALEXANDER PICKENS
POULTON, JOHN W. POULTON
POUTINS, CHARLES POUTINS
POWELL, THOMAS H. POWELL
PREWETT, ROBERT PREWETT
PRICE, JOSEPH A. PRICE
PUGH, JOHN H. PUGH
Q Return to alphabet and
top of list
R Return to alphabet and
top of list
READ, WILLIAM READ
REED, GEORGE REED
REED, JOHN B. REED
REEF, FRITZ REEF
RIDGWAY, BENJAMIN RIDGWAY
RIDGWAY, J. M. RIDGWAY
RILEY, ISRAEL D. RILEY
RING, GEORGE RING
ROSE, SIMON A. ROSE
ROUSH, BOSTON ROUSH
ROWLEY, JOHN L. ROWLEY
RUBLE, DAVID RUBLE
RUTTER, MELVIN E. RUTTER
S Return to alphabet and
top of list
SANDER, CHRISTIAN SANDER
SCHMIDT, GEORGE SCHMIDT
SCOTT, THOMAS SCOTT
SCOTT,ALEXANDER P. SCOTT
SEARS, DAVID T. SEARS
SHUTTS, WILLIAM B. SHUTTS
SHUTTS, WILLIAM SHUTTS
SIMMONS, W. H. SIMMONS
SMITH,
HENRY SMITH
SMITH, JOSEPH SMITH
SMITH, SAMUEL G. SMITH
SMITH, WILLIAM SMITH
SNIDER, LEVI SNIDER
SPRIGGS, JOHN P. SPRIGGS
STAUFFER, JOHN STAUFFER
STEPHEN, ALEXANDER D. STEPHEN
STEWARD, GEORGE W. STEWARD
STUKEY, JOHN STUKEY
SUPPES, GEORGE SUPPES
T Return to alphabet and
top of list
TAYLOR, EBENEZER TAYLOR
THOMSON, CORNELIUS THOMSON
TOMLINSON, THOMAS TOMLINSON
TOPP, GEORGE E. TOPP
TRACEY, W. A. TRACEY
TRUAX, DANIEL TRUAX
TSCHAPPAT, SAMUEL TSCHAPPAT
TWADDLE, THOMAS TWADDLE
TWINEM, CHARLES TWINEM
TWINEM, LEONARD TWINEM
U Return to alphabet and
top of list
V Return to alphabet and
top of list
W Return to alphabet and
top of list
WALTON, RICHARD K. WALTON
WARD, SETH WARD
WARNER, JAMES W. WARNER
WARWICK, MATHEW WARWICK
WATSON, JAMES WATSON
WATSON, JOHN A. WATSON
WEBB, WILLIAM G. WEBB
WEBER, ALBERT H. WEBER
WEBER, PHILIP WEBER
WELLS, JAMES WELLS
WEST, Dr. G. B. WEST
WEST, HENRY
R. WEST
WILEY, NATHANIEL WILEY Jr.
WILEY, WILLIAM J. WILEY
WILLIAMS,
JOHN H. WILLIAMS
WILLIAMSON, J. T. WILLIAMSON
WILSON, THOMAS WILSON
WINLAND, HENRY WINLAND
WOOD,
MICAJAH G. WOOD
WOOD,
SIMON P. WOOD
WOOD,
THOMAS WOOD
WORKMAN, AMOS WORKMAN
X Return to alphabet and
top of list
Y Return to alphabet and
top of list
YOHO, CORNELIUS YOHO
YOST, JOEL YOST
YOUNG, WILLIAM W. YOUNG
Z Return to alphabet and
top of list
Use the Back-arrow at the top of this
web-page to return to the Previous Page.


Developer -
+2347035867985
SESA
Home
About
Library
Biology
Chemistry
Computer
Geography
Inter Science
Mathematics
Physics
Others
Gallery
Excos
Parliament
H.O.D
H.O.S
PATRON
Previous President
Contact
2017/2018 Excos Gallery
Comrd. Ishaq Ahmad
President
Comrd. Najib Mansir Danjanku
Secretary General
Comrd. Jibril M. Abdulkarim
Vice President I
Comrd. Amina Ahmed
Vice President II
Comrd. Isah Lawal
Financial Secretery
Comrd. Bashir Umar
Ass. Secretary General
Comrd.  Financial Secretary
Comrd. Zainab Ibrahim Dauda
Treasurer
Comrd. Mohd Alkasim El-Manari
Auditor General
Comrd. Dan-Azumi Usman
Director of Social
Comrd. Jibril Aliyu
Director of Sports
Comrd. Ibrahim Yakubu
Chief Librarian
Comrd. Abubakar Sadiq Lawal
Welfare Director
Comrd. Abdulkarim M. Kabir
P.R.O
Comrd. Musa Ibrahim
Editor in Chief


{%- macro ruleCategories(params) -%}
The "extends": "eslint:recommended"
property in a configuration file enables this rule
Some problems reported by this rule are automatically fixable by the --fix
command line option
Some problems reported by this rule are manually fixable by editor suggestions
if the "extends": "eslint:recommended"
property in a configuration file enables the rule.
if some problems reported by the rule are automatically fixable by the --fix
command line option
if some problems reported by the rule are manually fixable by editor suggestions


--- layout: post status: publish published: true title: Episode 5.31 - Managerial Vacancy and Root Canal author: display_name: Corey Fineran login: Corey email<EMAIL_ADDRESS>url: '' author_login: Corey author_email<EMAIL_ADDRESS>wordpress_id: 8596 wordpress_url: http://ivyenvy.com/?p=8596 date: '2013-10-01 21:45:40 +0000' date_gmt: '2013-10-02 02:45:40 +0000' categories: - Podcast tags: [] comments: [] ---
Andy, Corey and Kurt discuss the dismissal of Dale Sveum and what led to the Cubs deciding to move in a different direction. The move feels to have been made a year too early, but we look at why the Cubs wanted to part ways now, rather than after the end Sveum's contract with the organization. We look ahead at a few of the candidates and talk about who we'd like to see take the reins and what characteristics we'd like that person to have.


NAME
grpc_wait
- Waits for a session to end.
SYNOPSIS
grpc_error_t grpc_wait(grpc_sessionid_t session_id)
ARGUMENTS
grpc_sessionid_t session_id
- The session ID
DESCRIPTION
The grpc_wait() function waits for the specified session to end.
This function is MT-safe unless multiple wait functions wait the same
sessions simultaneously.
RETURN VALUE
If successful, GRPC_NO_ERROR is returned. In the case of an error, Error code is returned.
ERRORS
GRPC_NOT_INITIALIZED
- GRPC client is not initialized yet.
GRPC_INVALID_SESSION_ID
- Session ID is not valid.
GRPC_COMMUNICATION_FAILED
- Communication with the server failed somehow.
GRPC_SESSION_FAILED
- The specified session failed.
GRPC_TIMEOUT_NP
- Timeout occurred in session.
GRPC_OTHER_ERROR_CODE
- Internal error detected.
last update : $Date: 2007/07/27 02:43:36 $


Provides access to detailed information about a protocol under definition within the IRB's Protocol Builder Application at the University of Virginia.
By passing in a valid UVA Id (ex: dhf8r) it will return a list of all protocols created by that individual.
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| uva_id | query | A valid user id for the university of Virginia. | True | string |
| after_date | query | Restrict the protocols to only those that were last modified after the given date. Date format is yyyy-mm-dd (2019-12-25) | date string |
| Code | Description | Schema |
|---|---|---|
| 200 | A list of protocol details | [ id (string string) last_updated (date_time string) title (string) ] |
| 400 | bad input parameter |
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| id | path | The unique id of the protocol. | True | string string |
| Code | Description | Schema |
|---|---|---|
| 200 | Details about the protocol | id (string string) last_updated (date_time string) protocol_status (string)[started | done] title (string) |
| 400 | bad input parameter |


My Ethereum Information
Blockchain Explorer
Last Block #
Loading...
Hash
Loading...
Transactions
Loading...
Created
seconds ago
Network
Ethereum Private
Block # or Hash
Search Block
Transaction Hash
Search Transaction
Block Information
TimeStamp:
0
Transactions:
0
transactions in this block
Hash:
0x
Parent Hash:
0x
Mined By:
0x
Transaction:
0x
Difficulty:
0
Size:
0
bytes
Gas Limit:
0
Gas Used:
0
Nonce:
0x
Uncles:
0
Transaction Information
TxHash:
From:
To:
Value:
Ether
Gas:
Gas Price:
Ether
Gas Used By Transaction:
Actual Tx Cost/Fee:
Ether
Cumulative Gas Used:
Nonce:


Isometric projection using Javascript
Settings
Description
Use the
arrow keys
to move around and the
zoom button
to zoom in or out.


test
Tree:
Empty Site
local/Plain
local/Coasters
uchicago/ci/Beagle
anl/alcf/Intrepid
-
Cancel
Add Site


In the previous article about callbacks I’ve said that the number in the CC_CALLBACK_*
macro means the amount of parameters need for called function. That wasn’t exactly true because the C++ magic allows to do a one more trick here.
Let’s look again the green UFO from this article. The only difference between moving to the right and moving to the left is the coordinate of destination point. Obviously, it would be better to process both movements with the same method; if only we could call this method with different parameters.
The trick is that the CC_CALLBACK_
macro can receive any amount of parameters. The std::bind will transfer all the parameters to the called function.
Here is the example. The common callback for the button pressing is declared like this:
class ActionsDemoScene : public cocos2d::Scene {
public:
// .....
protected:
void ufoMoveCallback(cocos2d::Ref *pSender, const int direction);
};
Here direction
is the additional parameter we would like to transfer to called function.
And here is the CC_CALLBACK_1
usage:
MenuItemImage* leftButton = MenuItemImage::create(
"ui/leftArrow1.png", "ui/leftArrow2.png",
CC_CALLBACK_1(ActionsDemoScene::ufoMoveCallback, this, GU_MOVE_LEFT));
MenuItemImage* rightButton = MenuItemImage::create(
"ui/rightArrow1.png", "ui/rightArrow2.png",
CC_CALLBACK_1(ActionsDemoScene::ufoMoveCallback, this, GU_MOVE_RIGHT));
Here GU_MOVE_LEFT
and GU_MOVE_RIGHT
are the constant values to differ between movement directions.
So, the common callback will be implemented like:
void ActionsDemoScene::ufoMoveCallback(Ref *pSender, const int direction) {
float newX = 0; //undefided at this point
if (direction == GU_MOVE_RIGHT) {
newX = rightX;
}
else {
newX = leftX;
}
// use the newX value
}
Also, we could do one more step and provide the new coordinate value right to CC_CALLBACK_1
instead of the special constant values. Then we could get rid of if
in the method implementation. However, I thought it would make the code less readable.


COVID-19 Tracker
log
linear
Days since 100 confirmed cases
Days since 100 confirmed cases
Days since 100 confirmed cases
Days since 100 confirmed cases
References
Data:
Country:
github.com/CSSEGISandData/COVID-19
State:
github.com/nytimes/covid-19-data
Icon:
pixabay.com/users/iximus-2352783


The default FPS is set to 60.
// Global FPS setting
zeu.Settings.fps = 60;
Each component has its own default view width and view height.
Let's use Message Queue as an example. Its default view demension is 100 x 200 so by default it requires a 100 x 200 canvas to display.
To scale the component, we can call scaleTo(x, y) or call scaleByHeight(height) to rescale the component and at the same time, we need to increase the width and height of the canvas correspondingly.
// Increase the width and height of the canvas so the scaled view can be seen.
// Create a message queue component.
var messageQueue = new zeu.MessageQueue('message-queue');
// Scale the width and height by factor 2 so the new width is 100 * 2 = 200. Height = 200 * 2 = 400.
messageQueue.scaleTo(2, 2);
// Scale the component by height. New width = 400 / 200 * 100 = 200. It does the same thing as scaleTo(2, 2) for this component.
messageQueue.scaleByHeight(400);
This component also supports flexible view width or height.
// Create a 300 x 300 canvas.
// Adjust the view width and height to 300 through constructor
var messageQueue = new zeu.MessageQueue('message-queue', {
viewWidth: 300,
viewHeight: 300
});
For options regarding color code, hex color or rgba color code is recommended. For instance,
Tips: rgba(255, 255, 255, 0) can be used as transparent color.
Turn on/off the alert by using API alertOn() or alertOff().
// Create a speed circle.
var speedCircle = new zeu.SpeedCircle('speed-circle');
// Turn on the warning
speedCircle.alertOn({
text: 'WARNING',
interval: 1000,
bgColor: '#000000',
fontColor: '#dc3547',
lineColor: '#dc3547'
});


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.jredis.ri.alphazero.SocketConnection
public class SocketConnection
[TODO: reconnect, timeoout, etc. ]
A delegating Protocol
that is mainly responsible for managing the
network connection to the redis server, and in support of the
ProtocolHandler#serviceRequest(Command, byte[]...)
method uses another,
redis version specific, protool handler to provide support for createRequest
and createResponse methods. This class will provide the IO streams required by
Request and Response objects to be send and received.
This client will open and maintain a single socket connection to the server
identified and [TODO] will handle reconnects and timeouts (which is why it is
in the loop as a Protocol
.
This class only supports the ProtocolHandler#serviceRequest(Command, byte[]...)
method of the communication aspects of the protocol handler to insure control
over the sequence and modality of message processing.
This class is not (as of now 04/02/09) thread-safe.
| Field Summary | |
|---|---|
private java.net.InetAddress |
address
|
private java.io.InputStream |
input_stream
|
private boolean |
isConnected
|
private java.io.OutputStream |
output_stream
|
private int |
port
|
private java.net.Socket |
socket
|
private java.net.InetSocketAddress |
socketAddress
|
| Constructor Summary | |
|---|---|
SocketConnection(java.net.InetAddress address,
int port)
Creates the connection and initializes it. |
| Method Summary | |
|---|---|
protected void |
connect()
|
protected void |
disconnect()
|
protected java.io.InputStream |
getInputStream()
TODO: ... |
protected java.io.OutputStream |
getOutputStream()
TODO: think about getting rid of this ... |
private void |
initialize()
Create, connect and get socket's streams. |
private void |
initializeSocketStreams()
|
protected boolean |
isConnected()
|
private void |
socketClose()
|
private void |
socketConnect(boolean keepalive,
int connectiontime,
int latency,
int bandwidth)
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
private final java.net.InetAddress address
private java.net.InetSocketAddress socketAddress
private final int port
private java.io.InputStream input_stream
private java.io.OutputStream output_stream
private java.net.Socket socket
private boolean isConnected
| Constructor Detail |
|---|
public SocketConnection(java.net.InetAddress address, int port) throws ClientRuntimeException, ProviderException
address
- port
- protocolHandler
- redisVersion
-
ClientRuntimeException
- if invalid or illegal arguments are provided (including
the inet info.
ProviderException
- if protocol handler can not support the version.| Method Detail |
|---|
private final void initialize() throws ClientRuntimeException, ProviderException
ClientRuntimeException
ProviderException
protected final boolean isConnected()
protected final void disconnect() throws java.lang.IllegalStateException
java.lang.IllegalStateException
protected final void connect() throws java.io.IOException, java.lang.IllegalStateException
java.io.IOException
java.lang.IllegalStateException
private void socketConnect(boolean keepalive, int connectiontime, int latency, int bandwidth) throws java.io.IOException
keepalive
- connectiontime
- latency
- bandwidth
-
java.io.IOException
private void socketClose()
private final void initializeSocketStreams() throws ProviderException, java.io.IOException
ProviderException
java.io.IOException
protected final java.io.OutputStream getOutputStream()
protected final java.io.InputStream getInputStream()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


👋 🙏 👀Thanks for attending Volhacks III at the University of Tennessee at Knoxville! The Volhacks IV will be hosted September 27th-29th! See you soon!