Progress report
-
Greg Hurrell
I've been working on some website stuff and decided to have another look at DocBook. The idea is that you write your content once and only once using the DocBook DTD (an XML dialect), and then can use an automated tool chain to transform the content into various formats (obviously useful ones are HTML/XHTML, PDF, TXT, but there are many others). Lots of large projects make use of DocBook, such as the FreeBSD documentation project. These aren't flashy webpages like you would see at apple.com or microsoft.com, but they are examples of extremely large and highly-informative repositories of documentation.
So anyway, I was writing up some stuff using the cleanest XHTML that I could come up with. I was also judiciously using PHP includes to make the most of reusable components.
The last time I had a play with DocBook on Mac OS X I wasn't too happy with the state of the tools available, but some time has passed so I decided to have another look. A lot of the stuff you need is already included with Mac OS X, and the rest is fairly easily installed. I'll write this up in a Knowledge Base article at some point.
I must admit that when I first looked at the XHTML produced from the DocBook XML I wasn't too impressed with the "cleanness" of it. Lots and lots of extra divs, classes, spans. But given that DocBook is much richer markup (structurally speaking) than XHTML, I guess that's the only way that you can preserve the structural information when you perform the conversion. The good thing is that despite this clutter, there's still a clear separation between content and presentation. If you don't have a style-sheet, the output as rendered by a browser will look as clean and vanilla as you can get. You need to do a bit of CSS wizardry to get it looking polished, but it's not too much harder than working with clean, hand-coded XHTML.
So it's been quite an interesting process. I've learnt more about XML than I knew before, and along the way I've learnt some other valuable things.
For example, I've learnt how to write Makefiles to make it easier to process the DocBook source files into the desired output formats. Seeing as I'd done all my other development work in Xcode, and my command-line compilation had basically been limited to using makefiles that had been written by other people, this was a great new thing for me.
Another completely new thing I've learnt is how to write XSL style sheets (which govern the transformation from XML to other formats). Along the way I've had to educate myself on XPath and a number of other Things That Start With X. I'm by no means an expert on any of this, but I've really enjoyed getting stuck into these new topics.
To make things as efficient as possible, I've been building up a customary DocBook glossary for use in BBEdit along the way. (I am aware that one such glossary is already out there on the Internet, but I wanted one tailored more precisely to my own needs.)
I've now got things to the point where I am fairly happy with the tool chain I've set up. For now, wincent.com is pretty much all hand-coded PHP (apart from the obviously dynamic parts like these forums). But I can definitely see that most of the documentation that I write in the future will be done in DocBook, even if there are important parts of the site that are better coded by hand (like the product download pages and the store, for example). This will hopefully make things more efficient, and will make the documentation available to people in a wider number of formats with very little additional work on my part. I think this will be an improvement on the way things currently are (where, for example, the Synergy documentation is hand-coded PHP written in BBEdit and then uploaded onto the website, and the documentation for Install is written in LaTeX using LyX and then manually exported to PDF).
It takes a little longer to write a document using DocBook than it does using HTML, but the increased expressiveness is probably worth it.
My only really complaint about DocBook so far is that the linking mechanism sucks, or at least it looks that way to my novice eyes. It's fine if you want to write one massive XML file that contains an entire book and all the links are internal to that one file. But as soon as you want to make something that looks like a website (say, for example, something like the Knowledge Base or News sections, both of which are comprised of loosely related articles), you run into all sorts of hassles.
It's easy to link to a remote URL (like "http://www.apple.com/"), but it's really hard to link to another document in the same folder. This is not at all like HTML where it's very easy to link, say, from "page1.html" to "page2.html". With DocBook, you have to perform a number of additional steps so that the cross references can be resolved, and worst of all you have to maintain a separate layout file which describes the site layout (why can't this file be automatically inferred from the hierarchy of XML source files on the disk?).
I'll be trying to learn more about this and will be exploring ways of automating the process as much as possible.
-
Greg Hurrell
A summary of progress since Synergy 1.7.1 and WinSwitch 3.0 came out...
Synergy Classic: - fix https://wincent.com/a/support/bugs/show_bug.cgi?id=131
WinSwitch: - fix layout issues and update translations in Japanese and French localizations.
More work on the WOTest framework: - write random value generators for use in tests - continue writing self-tests (still many more to go, there are hundreds of them) - add scalar type tests - WOTestRunner up and running - make "what" display useful info on the command line - import UpdateBuildVersionNumbers.sh script from WOBase.framework, make changes for general use (no hard-coded paths), silence Xcode AppleScript warnings that got introduced in one of the Xcode updates, export improvements back to WOBase.
-
Greg Hurrell
Synergy Classic: - Fixed https://wincent.com/a/support/bugs/show_bug.cgi?id=22 - Fixed https://wincent.com/a/support/bugs/show_bug.cgi?id=142 - Working on https://wincent.com/a/support/bugs/show_bug.cgi?id=8
-
Greg Hurrell
Synergy Classic: - More work on https://wincent.com/a/support/bugs/show_bug.cgi?id=8
Synergy Advance: - Started work on the Ticker - Began AppleScript support (Synergy Advance will itself be AppleScriptable)
-
Greg Hurrell
Synergy Classic: - Fixed this bug.
Synergy Advance: - Added a massive chunk of Apple Event code (1600 lines and counting). Synergy Advance is 100% AppleScript-free; everything is done with raw Apple Events, which should make it very fast and responsive.
-
Greg Hurrell
Synergy Advance: - Continuing with Apple Event code (lots of it). - Adding more and more stuff to the Ticker. Funnily enough, the Ticker is starting to look like a fully-fledged program of its own; it's already over 2,100 lines of code.
-
Greg Hurrell
Website: - https://wincent.com/a/support/bugs/show_bug.cgi?id=158
Synergy Advance: - More Ticker work: now nearly 4,000 lines of code; I have some nice, generalized wrappers for Apple Events in place, which I will probably modularize and split off into a separate class.
-
Greg Hurrell
Website: - added modification date stamps to the footer of all pages (except the dynamically generated pages in these forums and on the bug tracking database).
Synergy Advance: - Over the last few days I've added literally dozens of menu items and am in the process of hooking them up one by one, providing the back-end code, and doing testing. Source count on the module I am currently working on is 4,570 lines. At some point soon I'll merge this into the main code base.
-
Greg Hurrell
WOBase:
- more threading:
I've now added quite a few preferencePane bundles to Synergy Advance, and so I noticed that the first time you choose to display the preferences there is a short but noticeable delay while the WOPreferencesWindowController class scans for bundles on disk and builds an in memory cache. On a slow enough machine this delay could be long enough to cause the spinning beachball cursor to appear, even if only for a second, so I'd like to avoid this.
You never see these delays in the System Preferences application because it creates a cache and writes it out to disk; the on-disk nature of the cache means that even on the next run or after a restart the cache will persits. I'm not going to go down that path with WOBase because the on-disk cache would be just one more thing that's vulnerable to corruption on disk. I'm instead making changes to the class so that the building of the cache occurs in a separate thread and a spinning progress indicator is shown to the user.
We're only talking about a second or two of activity, but it's a question of polish, and I like polish. The refactoring required is pretty extensive, but so be it...
-
Greg Hurrell
WOBase:
- Finished the threading of WOPreferencesWindowController that I mentioned in my last post. - Wrote NSThread subclass and category and used poseAsClass: to provide me with some convenience methods for elegantly handling the fact that NSNotifications don't necessarily get posted to the main thread. My previous code has always made the incorrect assumption that the opposite was true, but luckily I've never been bitten by any unintended side effects. Nevertheless, wanting to tighten up the ship.
Synergy Advance: - https://wincent.com/a/support/bugs/show_bug.cgi?id=14 - gradually working through all the preferences setting up bindings (there are lots of them).
-
Greg Hurrell
WODebug:
- Finally got around to implementing my WOLogManager class (previously only had stubs in place). I'm very happy with the implementation and it's a lot more elegant than the macro-based log stuff I had in place before.
- I document my code as I go along because I find it helps me to think about my APIs more (and produce better designs!). Sick to death of how ugly and broken the HeaderDoc output is, I've decided to make the jump to Doxygen. The output looks very nice, linking and cross-referencing is incredibly powerful and works brilliantly, and it integrates really nicely in Xcode. My existing HeaderDoc comments get processed with only minimal modifications. Objective-C support is fairly new in Doxygen, but even so it appears to work very well.
HeaderDoc page: http://developer.apple.com/darwin/projects/headerdoc/
Doxygen page: http://www.stack.nl/~dimitri/doxygen/index.html
Xcode integration article: http://www.macdevcenter.com/pub/a/mac/2004/08/27/cocoa.html
Example of Doxygen Objective-C output: http://developer.iconara.net/products/DOM/docs/API/index.html
-
Greg Hurrell
WOBase:
- cryptography.
Website:
- continued with server-side software for generation of license codes etc.
Getting these two pieces done is really important because without them I can't release Synergy Advance. For a long time they've been hanging over my head. Looking at the creation dates on some of these anti-piracy related files I see that I first started on this stuff back in 2003. I did a lot of work on it in December of that year, and then more again in August of last year. Finally now, in March 2005, I've handled what I consider to be the key "blocking" issues that prevented me from releasing any new products. In other words, the tricky bits are done, and all that's left is trivial details. Those details *will* take me quite a bit of work to get done, but there are no real brainteasers left any more; it's just a matter of getting the work done. And now that everything seems to indicate that Tiger is just around the corner, there couldn't be a better time for it.
-
Greg Hurrell
Website:
For several days now I've been working on the website code for the new license code and product activation system. (Yes, that's right, the new system has product activation capability, but more on that another day.)
In the current system, when a user makes a purchase via PayPal, PayPal sends an IPN (Instant Payment Notification) to a Perl script on the server, which generates a license code and sends it off. It also stores info in a Berkley DB which can be used to do things like watch out for duplicate notifications, or serve as a back end for the automated license code retrieval system that people use when they lose their license codes.
I want the new system to be more scalable, so I've started from scratch writing the thing up in Perl and wedding it to a MySQL database backend. Given that I've got product activation capability (and much more) I wanted the whole thing to be much more robust.
One of the things I love about running Wincent is that there's a lot of variety in what I do. One day I'm writing Objective-C code in Xcode, and the next I'm writing Perl in BBEdit. It makes it interesting, but it also brings its challenges.
So over the last few days I've had to come to grips with lots of Perl modules, but most importantly the DBI and DBD::mysql.
I am most definitely not a Perl Monk, although I do know how to write a program that works. But I always feel uncomfortable when I first start working Perl after working for a long time in Objective-C. To a lesser extent the same thing happens to me with PHP (because at least it looks a little more "C-like"). It even happens to me moving between Objective-C and C at times (I hate pointer arithmetic!).
So anyway, the last few days have been 100% Perl. At moments I've found myself saying, "I hate Perl!" and at others I find myself saying, "I love Perl!". I am not a big fan of obfuscated Perl. I am not a big fan of all the cryptic special variables that confuse you if you're not a "Perl insider". I am not a big fan of a lot of the non-obvious conventions that are invisibly embedded in the language. Of course, to a Perl insider, all of those things are exactly what they love about the language.
Another thing which tries me a little is maintaining consistent style conventions in each language. Objective-C has a very specific, human-readable style (at least to my eyes). C has another set of conventions for capitalization, variable naming, function naming and so forth. PHP has its own conventions (once again, fairly "C-like"), and Perl has its own set too.
I keep finding myself giving Perl variables names like "generationMode" (Objective-C style) instead of generation_mode (which at least to my eye is more readable than "generationmode"). Add into the mix a lot of SQL and you've got yet another language syntax and set of conventions to manage...
In any case, I am happy with the code I've produced so far. I've heavily tested it and am confident that it works well, even if it wouldn't impress a seasoned Perl guru too much in terms of style and brevity. I like brevity (the more of a function that you can see on a screen at one time, the easier it is to understand it); in fact, the best functions are those which do fit on one screen, usually. I aspire to human readability.
One of the things I like about Perl is that you can use constructs like this:
Code:if (not defined $foo) {
do_something();
}
Or like this:
Code:do_something() unless defined $foo;
Or like this:
Code:do_something() if not defined $foo;
My only gripe is that if you do this you'll get a syntax error:
Code:if (not defined $foo)
do_something();
Same with this:
Code:if (not defined $foo) do_something();
This is a common C idiom that I like to use to save space. In Perl if you wanted to do this on one line you'd have to write it as:
Code:if (not defined $foo) {
-
Greg Hurrell
I was in Vienna for the weekend and bought some books while I was over there. Luckily these particular books were in English:
"Programming Perl" by Larry Wall et al (O'Reilly).
"SQL in a nutshell" (also from O'Reilly).
"Beginning MySQL database design and optimization" by Stephens and Russell.
I had been up until 4 AM the night before trying to get some complex JOINs done and I just couldn't get it right. I knew a bit about database normalization but with the database normalized I had lots of tables and couldn't work out how to get all the information I wanted using a single SELECT query.
Originally I only wanted a good book on SQL, but after leafing through "Programming Perl" I just had to get it as well. Although I dip into Perl only a few times a year I just knew that this book would help me to elegant Perl and not just Perl that happens to work. It's not just about aesthetics: elegant code should be easier to debug and maintain.
The book is fabulously written, entertaining, light and comprehensive.
"SQL in a nutshell" is also the same high quality that you'd expect from O'Reilly, although being a reference work it's not the sort of thing you'd sit down and leaf through for fun.
Finally, the book by Stephens and Russell: dear oh dear; very, very disappointing. On one level they could take some style tips from the Wall et al book. On another they could eliminate some of the technical mistakes and omissions. In combination each of these problems only makes you more annoyed about the other one.
Some of the problems:
- In the section on database normalization they list several forms and explain that they will look only at the first three forms. They say that if you're interested in finding out about the other forms then you should see "Appendix A". The only problem is that there is no Appendix A anywhere in the entire text.
- In their section on FOREIGN KEYs they neglect to mention that such keys need to have indexes defined on them prior to adding the foreign key constraint. If you follow the examples in the book you'll get cryptic errors from MySQL unless you're running on version 4.1 or later.
- The book provides normalization examples that split unnormalized tables into multiple tables (ie. more than two), but their example queries never join more than two tables at a time. Figuring out how to join more than two tables is left as an exercise for the reader.
- In all of the example screenshots they log into their test server as the root user. Why?
- They don't sanitize their input before passing it to the database. For example in the chapter "MySQL basics" on page 31 there is an example in which they interpolate a variable that comes from outside the "boundary of trust" (ie. it is passed in via the URL's query string) directly into a MySQL statement. This is an unacceptable oversight in a chapter directed towards beginners. Search for "MySQL injection attacks" using Google if you want to learn more.
- The examples are too PHP-centric.
- Their style is horrendously repetitive, as if they were struggling to fill up the pages of the book. A typical chapter or section will run something like this: "Briefly, this is what we're going to say. In more detail, this is what we are going to say. [They say it]. This is what we said. This is what we are going to say in the next section or chapter." Once again, they should take a look at the Wall et al book for some style pointers.
Anyway, that's all I can think of right now. I don't think I'll be spending too much more time looking at that book in the future. In any case, I have worked out how to do the complex JOINs that I couldn't do before (although it's no thanks to the Stephens and Russell book), and I am continuing to work through the Perl book.
The server-side stuff is now done for generating and issuing license codes, and this time I've integrated support not only for PayPal IPNs but for Kagi's KRPS as well. What this means is that the lost license code retrieval system will be updated whenever people purchase via either payment service (with the current Synergy Classic system only PayPal purchases had that benefit).
Today I'm working on the product activation stuff. I don't think it will take long as most of the work is already done. It's just going to be a little bit of code on the application side and a little bit of code on the server side. Wish me luck.
-
Greg Hurrell
I didn't get as much done on the product activation as I had hoped yesterday because I got hit by a case of food poisoning (at least, that's what I think it was); gastric pains and fever for most of the day. I did get some work done, but not as much as I would have liked. Back at full speed again today though... Here's what I've done so far:
WODebug: - convenience methods added to NSString category for opening strings as URLs. - added WO_LOG_METHOD_DETAILS macro for debugging purposes.
WOBase: - WOPointingHandCursorButton class for making clickable hyperlinks in Interface Builder. - convenience macros for setting/unsetting/testing bits.
Synergy Advance: - hooking up user interface elements in the registration preference pane.
-
Greg Hurrell
More progress made today, as well as a couple of things that I forgot to mention in previous entries...
Website: - Today wrote a command-line tool for generating (and optionally mailing) license codes manually. - Continued work with the activation stuff: it's proving to take longer than I thought but that's only because I am being very thorough, and being thorough is a good thing. My use of SQL is getting better as I refamiliarize myself with it all: for example, i was just able to replace two separate queries (and a about 8 lines of supporting application logic) with a single query that occupies a single line of code.
WOBase: - Polish for WORegistrationView class to make sure that things like resigning first responder and setting up the next key loop works as you would expect (in other words, you can set up the next key loop in Interface Builder and it actually works, automatically).
WODebug: - Bulletproofing the WOLogManager class and minor adjustments to ensure that behaviour exactly matches the behaviour of NSLog.
Synergy Advance: - Added a couple more menu items.
-
Greg Hurrell
Website:
- Writing up documentation.
- I'm now ready to deploy the new licensing and activation code to the server (have up until now been testing it locally). So I decided to take the opportunity to upgrade the MySQL database from the 4.0 series to 4.1. This is not going to be the same database host that I use for the rest of wincent.com (things like these forums and the bug-tracking database) which is still running a 3.23-series build.
Rather than building from source I've put on my FreeBSD sysadmin hat and am trying to update my ports collection... cvsup, portsdb, portversion, pkgdb and all that other joyful stuff... The thing about the ports collection is that it works brilliantly some of the time, but at other times it gets itself into a nasty state and you get all sorts of dependency problems, corrupted databases and what not. So what I've got now is a freshly updated ports tree, but this is a machine that was originally put into service back in 2002 and although I've kept it up to date with security updates on the RELENG_4_8 branch, the ports look to be in a fairly hideous state. Such a hideous state that when I had to upgrade Perl and a bunch of modules to work with the latest release of Bugzilla I did it by hand (and using the CPAN) instead of using the ports system. It seemed the only way to monitor, control and fix the breakage.
Anyway, I am going to continue ploughing on with this...
Update: found this great article on sorting out a ports/packages mess:
-
Krypton
If Tiger were announced next week, would you be ready to ship to coincide with a release before the end of April?
It sounds like you're wrapping things up nicely, but it's difficult to tell for non-proggers
-
Greg Hurrell
Quote: If Tiger were announced next week, would you be ready to ship to coincide with a release before the end of April?
It sounds like you're wrapping things up nicely, but it's difficult to tell for non-proggers
Basically, yes, provided that Apple's announcement isn't something like, "Tiger is in stores as of two o'clock today"... If they follow their normal pattern and ship two to three weeks after the actual announcement then there will be no problems.
I have been following the news and rumors with great interest because as you know, I made the public promise some time ago that I would ship Synergy Advance "around the same time as Tiger". I don't mean on exactly the same day, but I do mean within a few days on either side.
Several of the sites predicted an early April announcement and a mid-April ship date, so I've been doing everything possible to make sure I have something that I too could ship by mid-April if need be. As of right now it looks like I am on target. The longer Apple waits, the longer I will wait also, because it gives me more time to polish.
The way I've developed Synergy Advance is very modular, so the idea is that the first release will be version 0.1 and will be a labelled a "public preview release".
The 0.1 release will be just the Global Menu module. What this means is that you can continue to run Synergy Classic (which will provide you with your Floater, Hot Key control, Menu Bar buttons, Cover Downloads etc) but also run Synergy Advance at the same time.
The Advance Global Menu is like the Classic Global Menu on steroids, so you'll most likely want to run both programs at the same time, but always use the Advance Global Menu instead of the Classic one.
The modular architecture means that I can roll out new preview releases (0.2, 0.3) adding new modules (the hot key module, the floater module etc) as soon as I am satisfied with the feedback and testing results from the previous releases.
By the time Synergy Advance hits 1.0 all of the major modules will bundled and most people will want to run Advance full time and forget about Classic altogether (but Classic will continue to be marketed as a separate product for those who want something that can run on Jaguar). Advance will eventually do everything that Classic does as well as a whole lot more, but it will not take as long to hit 1.0 as Synergy Classic did; most of the work is already done.
I think the transition from Classic to Advance will work out fairly elegantly because I will prioritize the modules that provide new functionality not available in Classic before those which duplicate functionality. This means users can run both during the transition and will find the feature set grows pleasantly because each new preview will add something completely new that wasn't available before. (The obvious exception to this is that version 0.1 ships with something that is very much duplicated functionality -- the Global Menu -- because it's a pretty convenient hub from which I can hang off all the new stuff.)
Anyway...
As for today's progress report: so far I've just been writing up more documentation; shortly I'll be getting stuck back into the code again...
-
Greg Hurrell
Website: - New license code database installed and tested (generator, lost code remailer). - Kagi and PayPal realtime generation methods installed; hoping to test them soon but waiting on some set-up at the Kagi end.
-
Greg Hurrell
Website:
- Kagi setup now done and the purchasing page is online. As I complete pages I've been uploading them to the site. For example, the following pages are all new:
https://wincent.com/a/products/synergy-advance/news/ https://wincent.com/a/products/synergy-advance/purchase/ https://wincent.com/a/products/synergy-advance/license/ https://wincent.com/a/support/activation/ https://wincent.com/a/support/activation/privacy/
I've also updated the license retrieval system to incorporate the new backend:
https://wincent.com/a/support/registration/form.php
And made some updates and improvements to the contact form and support ticket page:
https://wincent.com/a/contact/mail/ https://wincent.com/a/support/tickets/
And updated the site FAQ:
https://wincent.com/a/support/faq/
Keep an eye on the Synergy Advance site over the next few days and weeks because I will continue to add new pages as I finish them.
https://wincent.com/a/products/synergy-advance/
WOBase:
- improvements to WOHost class; it's functionally equivalent but the code is much cleaner now. - additions to the main NSString category. - added localizations class.
WODebug:
- additions to the NSString category.
Synergy Advance:
- more hookup, UI polish and worked around a quirk in Cocoa's handling of the responder chain for the registration module. - added a new preference pane.
-
Krypton
7
-
Greg Hurrell
Quote: Tiger is now officially out on the 29th, so I look forward to a release around then
Awesome! Ironic that I should learn the release date by reading my own forums! [heads over to www.apple.com...]
Anyway, I've had a good day of coding so far today. I normally write the smallest possible amount of testable code at a time, then build, test (and fix if necessary), and repeat... For me this is best way to be sure that complex things work and that they handle all the edge ases.
Today I broke out of my normal pattern and just wrote a fairly complex wad of stuff; spent about one or two hours straight writing code and not doing any builds. I was quite astounded to see that on building it all it worked perfectly on the very first try... If only all the days could be list this!
WOBase: - Product activation tested and working in a "live" environment. - WOPreferencesWindowController now correctly sends an NSApplicationTerminateReply when no panes are selected.
-
Greg Hurrell
WOBase: - NSScanner category - NSDate category
Synergy Advance: - wrote a bunch of utility methods for generating strings - added another preference pane
Synergy Classic: - https://wincent.com/a/support/bugs/show_bug.cgi?id=176 - https://wincent.com/a/support/bugs/show_bug.cgi?id=178 - localization fixes
-
Greg Hurrell
Synergy Advance:
- Am doing some refactoring, moving a lot of Apple Event code out of its current category into a class of its own, then making subclasses for any app with which I wish to communicate. This allows me to write much more readable, maintainable code like the following:
[iTunes play]; [iTunes getPlayedCount];
Instead of the fairly ugly invocations of my Apple Event wrapper methods, or even worse, multiple lines of Carbon calls. I like to encapsulate non-Cocoa stuff so that it's kept out of site; I find that the different calling conventions interrupt the flow of things, make stuff harder to read and format, and are uglier to boot. I am very happy with the result; it looks almost like normal English, which is the ideal case for Objective-C code.
-
Greg Hurrell
WOBase:
- WOKernelEventQueue class - additions to NSString category
Synergy Advance:
- refactoring referred to in previous post now finished
-
Greg Hurrell
Synergy Classic:
- released version 1.8.1 with a number of bugfixes etc
WOBase:
- additions to NSMutableString and NSMutableArray categories
Synergy Advance:
- correctly extract multiple album art
-
Greg Hurrell
General:
- Eliminate new warnings and errors produced after the switch to GCC 4.0.
- Fine-tune symbol stripping and dead-code stripping to produce smaller binaries, which will in turn use less memory.
- Correct a bug in Omni's stringsUtil commandline tool and add the ability to process InfoPlist.strings files, and integrate tool into build process to automate the generation, merging and updating of strings files for all localizations.
Synergy Advance:
- Revisited the library parsing code I wrote in June last year and refactored it; the @synchronized sections are now much more nicely encapsulated. The code is cleaner, neater, and more threadsafe. The extra locking will slow it down, but as the parsing occurs in a background thread this is not a bad thing.
- Moved menu generation into a separate thread because it could take a while with huge libraries; only the actual insertion of the completed menus occurs in the main thread.
- Populated some more menus based on library contents.
- Added more separator options and an optional truncation setting for line length in the IM pane.
- New class WOSliderTransformer.
- If menu is open and tracking when the app wants to make an update it queues the updates and performs them once tracking is finished.
- Custom table view for advanced preferences panel with Finder-like "type ahead" find, a search field, and variable per-row cell types determined by the type of preference being edited. It was quite horrible getting this to work with Cocoa Bindings; I still find them the hardest thing I've ever had to work with in Cocoa.
- Began specification for open-source API for writing plugins.
- Outline view for displaying and editing large numbers of hot keys.
WOBase:
- Additions to NSMutableArray category.
- New NSAppleEventDescriptor category.
- New NSInvocation category. This is my first direct use of NSInvocation; I had no idea it was such a useful class!
- WODefaultsController (thread-safe access to user defaults).
WOHotKey:
- A number of new classes, improvements and localizations.
WinSwitch:
Reply
This topic is now closed.


Darga GA Release
ManageIQ is excited to announce the official release of Darga, named for Grandmaster Klaus Darga. Below are some of the many new features that are part of this release. For more detail see the changelog.
Providers
Microsoft Azure Cloud
- Inventory – Deep forensic inspection of asset inventory
- Smart State Analysis – Introducing SSA to the Cloud
- Events – Full Azure events support, compute, storage and networking
- Operations – Power Controls
- Metrics – CPU utilization (more to come in errata)
- Chargeback – Limited based on CPU utilization
- Provisioning – Provisioning from a private image
- Retirement – Lifecycle operations to support on-demand or schedule retirement
- Appliance Image – As above we can run 100% in Azure
- Proxy – Supports ManageIQ global proxy
Google Compute Engine
- Inventory – Asset inventory, virtual machines, regions, availability zones
- Events – Event support for basic operations, start/stop/delete
- Operations – Power Controls
- Provisioning – Provision from a private image
VMware vSphere
- Distributed Switches – Now part of inventory and available during provisioning (rather than real time look ups)
- Storage Clusters – Visibility and provisioning similar to datastores
- Guest Disk Reconfiguration – Add or Remove disks to an existing VM
- ReadOnly Datastores – Now supported for inventory
Red Hat OpenShift Enterprise
- Chargeback – Project based chargeback roll ups. POD metrics collected from Hawkular and rolled up to Projects for Reporting. Support for CPU, Memory, Network I/O via rate tables.
- SCAP Scanner – In addition to our smart state analysis we have plugged in the Red Hat Enterprise Linux SCAP scanner. This allows us to scan images for SCAP vulnerabilities. You get access to a simple Low/Med/High status to the vulnerability as well as the HTML SCAP report per image.
- Cloud cross-linking – (leveraging OpenShift cloud providers)
- Pods Creation/Deletion – Trends and New Images discovery trends added to the dashboard
- Multi-endpoint – For metrics collection
- Collection of Builds and Volumes
- Compliance Management – Compliance policies can now be assigned to container images. Ability to perform OpenShift actions (e.g. automation & policies) via ManageIQ by utilizing OpenShift tags on images.
Red Hat Ansible Tower
- Inventory – Ansible Tower Inventory for Job Templates and Nodes
- Ansible in Automate – Introduction of a ManageIQ state machine accepting parameters to drive Ansible Tower Jobs. This provides an alternative choice to Ruby automation, allowing ManageIQ state machines to call Ansible Tower Jobs directly without having to write a line of code.
- Ansible in Services – Ansible Tower Jobs are now available as ManageIQ Service Items. Service Dialog can be generated dynamically to provide parameters for the Ansible Tower Job. With this in place, ManageIQ can leverage Ansible Galaxy content and drive automation without a single line of code. For example, use Ansible playbooks to provision a virtual machine in vCloud Air from ManageIQ Service Catalog.
Red Hat OpenStack Platform - Cloud
- SSH Key Management – Upload a new SSH key at time of deployment without having to configure the key post-provisioning in Horizon
- Instance Volume Management – Add/Remove OpenStack Cinder volumes to instances via reconfiguration
- Volumes at Provisioning – Add volume(s) at provisioning e.g. provision a Glance Image on this network with an additional 2 disks of 20gb each
- Right Size Recommendations – Right-sizing recommendation for CPU and Memory now implemented for Red Hat OpenStack
- Instance Reconfiguration – Instance Flavor reconfiguration is now supported e.g. reconfigure a m1.tiny flavour to m2.xlarge.
- Live Migration – Live migration from one host to the other for OpenStack instances
- Multi-End-Point – Different end-point addresses can be specified for Metrics, Message-bus and Provider (Keystone)
- Volume Inventory – Inventory of all volumes created in an OpenStack tenant
- Events from Ceilometer – Ceilometer support added for events, in addition to RabbitMQ
Red Hat OpenStack Platform - Virtual Infrastructure
- SSL – Secure transport for the virtual infrastructure running your cloud
- Scale Down – Auto-Scaling added for scale down, in addition to scale out
- Host Evacuation – Ability to evacuate all or selected instances from a host
- Capacity Planning – OpenStack added to the Capacity Planing tool, allowing to evaluate how many VMs of a particular profile (e.g. running on VMware) can fit on OpenStack.
- Enable / Disable cloud services
- Make Keystone V3 Domain ID Configurable
Software Defined Networking – Neutron
- Inventory – Visibility of routers, networks and subnets modeled in a tenant
- Cross-linking – Navigate across the relationships e.g. from a router to the network, to the subnet, to the network port that are all in the networking world and onto the VM or Instance that is connected to the network port.
- Topology – Cloud networking visualization, including relationships and cross-linking
Red Hat Enterprise Virtualization / oVirt
- Targeted Refresh – Allows refresh of single objects rather than the entire provider inventory.
- Cluster Datastore Support – Cluster datastores visibility, inventory and provisioning
Microsoft System Center Virtual Machine Manager (SCVMM)
- Smart State Support – Added VHDX, snapshot and all current filesystems support. Support for network-mounted HyperV virtual disks and performance improvements.
- Inventory Performance Improvements
- Retirement – Implementation of VM retirement added to SCVMM, supporting on demand and scheduled retirement
Amazon EC2
- SDK v2 – Support for v2 AWS SDK, allowing for future AWS services enhancements
User Interfaces
Self Service User Interface
- Languages Support
- German
- French
- Spanish
- Russian
- Portuguese
- Shopping cart model for ordering services – Introduction of a shopping cart order of services, allowing users to order multiple services and submit the entire cart at once. Future enhancements will include the ability to see previous orders, share carts with other users, etc.
- New consumption_administrator role – With chargeback/reporting duties
- I18n support – Added to Self Service UI
- Group Switcher – Added to Self Service UI
- Containers
- Dashboard network trends
- Container environment variables table
- Search functionality for Container topology
- Dashboard no data cards (for when no data exists yet)
- Refresh option in Configuration dropdown
- Persistent volumes, topology context menus
Operations User Interface
- Vertical Menus – New PatternFly menus implemented in ManageIQ, allowing for future directions. Other Red Hat products will follow for consistent look and feel across the portfolio.
- Orchestration Templates – Added the ability to copy a template
- Datastore Clusters Explorer – Added for VMware vSphere 5+
- Compliance Policy – Added support for Templates and Images (previously only allowed for VMs and Instances)
- New UI for replication configuration
Service Designer User Interface
- Early development of a graphical designer tool for defining catalog services and items
Chargeback
- Tenant Rate Assignment – Added ability to assign rates to tenants
- Tenant Chargeback Report – Added ability to generate reports by tenant
- Currency Support – Enhanced chargeback to add additional currencies (previously US dollars only)
Automate
- SSUI: Support dialogs with dynamic fields
- Simulation: Simulate UI support for state machine retries
Automate Model
- Service Models: Support where method, find_by, and find_by!
- New Syntax: METHOD::
– No longer do you need an instance infant of a method, by using this syntax in a state you can directly call the method from the same class. - Added Auto-Approval/Email to VM Reconfigure
- New models for Generic Object, future capability!
- Default Retirement state-machine behavior changed to retain record (historical data)
- New wait_for_ip method added to state-machine, can be used in ANY statemachine.
REST API
- Added primary collection for Instances
- Added terminate action for instances
- Ability to filter string equality/inequality on virtual attributes
- For SSUI, ability to retrieve user’s default language and support for Dynamic Dialogs
- Actions for instances: stop, start, pause, suspend, shelve, reset, reboot guest
- Actions provided to approve or deny provision requests
- Ability to delete one’s own authenticated token
- Enhanced filtering to use MiqExpression
- Enhanced API to include Role identifiers for collections and augmented the authorization hash in the entrypoint to include that correlation
- CRUD for Tenant quotas
- Version increased to 2.2.0
- Support for /api/settings
- Added GET role identifiers
- Added support for Shopping Carts
Core
Appliance
- New Appliance Distribution Formats
- Azure Cloud Image
- Rails v5 – Upgraded from Rails v4.
Tenancy
- Reports – Widgets and Reports to show quota assigned per tenant as well as consumption
- Chargeback – Rate table assignment can be per tenant
- Automate – Domains can be tenanted
Replication (pglogical)
- Redesign of replication to use pglogical
- New MiqPglogical class: provides generic functionality for remote and global regions
- New PglogicalSubscription model: Provides global region functionality as an ActiveRecord model
Authentication
- Appliance Console External Auth updated to also work with 6.x FreeIPA Servers
- SAML Authentication (verified with KeyCloak 1.8) – SINGLE SIGN ON, so you can now have your local OS token passed though the browser to log you in, hands free!
Appliance Console
- Added alias ap as shortcut for appliance_console – So trivial but nice!
- Updates for external authentication settings


My name is Abdul Koroma
and I am a Computer Engineer
< Tribute Page />
< Survey form />
< Product Landing Page />
You can find me on...
Social Media
You can find me on...


Before Change
with warnings.catch_warnings():
warnings.simplefilter("ignore", optuna.exceptions.ExperimentalWarning)
sampler = TPESampler(n_startup_trials=5, seed=0, multivariate=True)
with patch.object(study._storage, "get_all_trials", return_value=past_trials):
all_success_suggestion = sampler.sample_relative(study, trial, {"param-a": dist})
// Test unsuccessful trials are handled differently.
state_fn = build_state_fn(state)
past_trials = [frozen_trial_factory(i, dist=dist, state_fn=state_fn) for i in range(1, 100)]
trial = frozen_trial_factory(100)
with warnings.catch_warnings():
After Change
all_success_suggestion = sampler.sample_relative(study, trial, {"param-a": dist})
// Test unsuccessful trials are handled differently.
study = optuna.create_study()
state_fn = build_state_fn(state)
for i in range(1, 100):
trial = frozen_trial_factory(i, dist=dist, state_fn=state_fn)
study._storage.create_new_trial(study._study_id, template_trial=trial)


McLaughlin claims fan-voted most popular driver award for third successive year
by James PaveyScott McLaughlin has claimed Supercars’ fan-voted Most Popular Driver Award for a third year running.
Fans voted on Supercars.com to see champion-elect McLaughlin come out on top, with the 26-year-old adding another highlight to his impressive 2019 campaign.
McLaughlin was handed the award and celebrated with his Shell V-Power Racing squad prior to Sunday’s action at the Coates Hire Newcastle 500.
Stream the 2019 Coates Hire Newcastle 500. Live & Ad-Break Free During Racing on KAYO SPORTS. Get your 14 day free trial >
READ MORE
Red Bull looked good for a one-two. Then Whincup lost concentration
Drought-breaker! Coulthard stoked to reach Newcastle podium
Race 31: SVG cruises as Whincup throws it away
Drama: McLaughlin in ‘difficult position’ but urged to focus on results
The fans’ recognition only adds to McLaughlin’s high profile, which has soared this season following a second successive championship win and maiden Bathurst win.
McLaughlin first claimed the Most Popular Driver Award in 2017, and ended now-retired Craig Lowndes’ domination of the accolade.
The Kiwi acknowledged fans for their continued appreciation: “It’s a very cool award. Fans are the backbone of our sport and why we go racing. I’m really proud to have a lot of support out there through thick and thin and proud to do it for them all.”
LISTEN TO THE LATEST PODCAST: Mark Skaife l Post-Bathurst Controversy Mkii l Bairdo’s bungle l Triple Eight Turnaround
SUBSCRIBE TO THE SHOW: iTUNES | SPOTIFY | STITCHER
The Shell squad, however, saw its fan-voted Best Presented Team Award go across to Penrite Racing.
The Holden team ended Shell V-Power Racing’s two-year stranglehold on the award, and comes in a season which the Penrite colours were displayed in several striking ways.
Notably, away from the standard livery, Penrite Racing ran a ‘liquid gold’ paint job for Bathurst, a retro JPS look for Sandown, and a scheme inspired by rock band KISS for the Gold Coast and Newcastle events.
Team owner Betty Klimenko praised her squad for their efforts: “The team has done a wonderful job. They really deserve it because they went against everything that I said and it’s probably why they won the award.”


In its simplest form, an i2c bus has one master and a number of slaves that are connected by two wires: SCL (clock) and SDA (data). Both lines are pulled up by pull-up resistor, and can (only) be pulled down by a connected chip (open-collector, hwlib pin type pin_oc).
An i2c transaction is either a read transaction or a write transaction. In both cases, the transaction starts with the master transmitting a control byte, which contains the address of the slave chip, and one bit that indicates whether it is a read or a write transaction. The bits of a byte are transferred MSB (most significant bit) first.
Next the slave chip receives (write transaction) or transmits (read transaction) as many bytes as the master asks for.
At the bit level, master generates clock pulses by pulling the SCL line low. While the SCL is low, the master or slave can put a bit on the SDA line by pulling it down (for a 0) or letting it float (for a 1).
The SCL line is always driven by the master (unless the slave uses clock-stretching), the SDA line is driven by the device on the bus that sends the bit.
Two special conditions are used. To signal the start (S) of a transaction, the sda is pulled low while the clk is high. The reverse is used to indicate a stop (P, the end of a transaction): the dta is released (goes high) while the clock is high.
Simple slave chips that have only one data byte that can be read or written using a single-byte read or write transaction to read or write that data byte.
Slave chips that have more than one address that can be written often use a write transaction where the first byte(s) written determine the address (within the slave chip), and the subsequent byte(s) are written to that address (and to the next addresses).
An I2C read transaction addresses the slave chip, but has no provision to specify an address within the slave chip. The common trick is that a read addresses the last address specified by a (previous) write transaction. Hence to read from address X first a write is done to address X, but the transaction stops after the X. Hence nothing is written, but this sets the address pointer inside the slave chip. Now a read transaction reads from this address.
As always, consult the datasheet of the chip for the details!
The I2C bus was invented by Philips, who had a patent on it. Hence other manufacturers that implemented the I2C bus on their chips had either to pay royalties to Philips, or tried to avoid this by implementing a protocol that was compatible with I2C, without mentioning I2C. The I2C patent has expired, but you can still find many chips that are described as 'implementing a two-wire protocol' or something similar. In most cases this means that the chip implements I2C.
references:
An i2c bus object represents an i2c bus. An i2c bus can be used (in order of preference)
| i2c bus attributes and functions | use |
|---|---|
| channel( s ) | creates a channel to slave s |
| read( s, d ) | performs a single byte read transaction |
| read( s, d, n ) | performs an n byte read transaction |
| write( s, d ) | performs a single byte write transaction |
| write( s, d, n ) | performs an n byte write transaction |
| transactions.read( s ) | creates a read transaction |
| transactions.write( s ) | creates a write transaction |
| primitives | low-level operations |
The read and write operations are easier to use than a transaction, but require the data to be read or written is one contiguous block.
A bit-banged i2c bus implementation is provided. An object of this class is constructed from the two pins (scl and scd), which must be pin_oc pins.
An i2c channel abstracts the communication over an i2c bus to a specific slave. An i2c channel is created from an i2c bus by providing the slave address.
An i2c channel can be used (in order of preference)
The read and write operations are easier to use than a transaction, but require the data to be read or written is one contiguous block.
| i2c channel attributes and functions | use |
|---|---|
| read( d ) | performs a single byte read transaction |
| read( d, n ) | performs an n byte read transaction |
| write( d ) | performs a single byte write transaction |
| write( d, n ) | performs an n byte write transaction |
| transactions.read() | creates a read transaction |
| transactions.write() | creates a write transaction |
| primitives | low-level operations |
An i2c transaction encompasses a complete read or write transaction. A transaction is created from an i2c_bus object and the slave address. The transaction can be used to read (for a read transaction) or write (for a write transaction) data. A transaction allows for multiple read or write operations within a single transaction. A transaction is started (control byte send) by the transaction constructor. A transaction is closed (final NACK send) by the transaction destructor.
| i2c read transaction functions | use |
|---|---|
| read_byte() | performs a single byte read |
| read( d, n ) | performs an n byte read |
| i2c write transaction functions | use |
|---|---|
| write( d ) | performs a single byte write |
| write(const uint8_t data[],size_t n) | performs an n byte write |
The class i2c_primitives abstracts the primitive i2c operations, from which the higher-level read and write transactions are implemented. These are the operations that must be implemented by an i2c implementation.
As an i2c user, you should probably never use these functions.
| function | use |
|---|---|
| hwlib::i2c_primitives::read_ack read_ack() | read and return an (expected) ack bit |
| hwlib::i2c_primitives::write_ack write_ack() | write an ack bit |
| hwlib::i2c_primitives::write_nack write_nack() | read and ack bit |
| hwlib::i2c_primitives::write(uint8_t) write( b ) | write one byte (8 bits) |
| hwlib::i2c_primitives::read_byte read_byte() | read one byte (8 bits) |
| hwlib::i2c_primitives::write write(uint8_t data[],size_t n) | write n bytes (from d ) |
| hwlib::i2c_primitives::read read( d, n ) | read n bytes (into d) |


| HYTOOL Function Reference |
p,t) Boulton (1963) model for unconfined aquifer
s = blt_dim(p,t) p = vector of the parameters p(1) = a : slope of the late time Jacob's straight line in m p(2) = t0 : intercept with the horizontal axis for s = 0 p(3) = t1 p(4) = phi t = dimensionless time t = time in seconds s = drawdown in meters
Computes drawdon in the aquifer for a constant rate pumping test. The aquifer is unconfined and homogeneous.
blt_rpt, blt_gss Published output in the Help browser showdemo blt_dim
| Hytool |
© 1998-2017 Philppe Renard and Co. Terms of Use Acknowledgments


| PostgreSQL 9.0.10 Documentation | ||||
|---|---|---|---|---|
| Prev | Up | Appendix E. Release Notes | Next |
Release date: 1996-08-01
Here is a new migration file for 1.02.1. It includes the 'copy' change and a script to convert old ASCII files.
Note: The following notes are for the benefit of users who want to migrate databases from Postgres95 1.01 and 1.02 to Postgres95 1.02.1.
If you are starting afresh with Postgres95 1.02.1 and do not need to migrate old databases, you do not need to read any further.
In order to upgrade older Postgres95 version 1.01 or 1.02 databases to version 1.02.1, the following steps are required:
Start up a new 1.02.1 postmaster
Add the new built-in functions and operators of 1.02.1 to 1.01 or 1.02 databases. This is done by running the new 1.02.1 server against your own 1.01 or 1.02 database and applying the queries attached at the end of the file. This can be done easily through psql. If your 1.01 or 1.02 database is named testdb and you have cut the commands from the end of this file and saved them in addfunc.sql:
% psql testdb -f addfunc.sql
Those upgrading 1.02 databases will get a warning when executing the last two statements in the file because they are already present in 1.02. This is not a cause for concern.
If you are trying to reload a pg_dump or text-mode, copy tablename to stdout generated with a previous version, you will need to run the attached sed script on the ASCII file before loading it into the database. The old format used '.' as end-of-data, while '\.' is now the end-of-data marker. Also, empty strings are now loaded in as '' rather than NULL. See the copy manual page for full details.
sed 's/^\.$/\\./g' <in_file >out_file
If you are loading an older binary copy or non-stdout copy, there is no end-of-data character, and hence no conversion necessary.
-- following lines added by agc to reflect the case-insensitive -- regexp searching for varchar (in 1.02), and bpchar (in 1.02.1) create operator ~* (leftarg = bpchar, rightarg = text, procedure = texticregexeq); create operator !~* (leftarg = bpchar, rightarg = text, procedure = texticregexne); create operator ~* (leftarg = varchar, rightarg = text, procedure = texticregexeq); create operator !~* (leftarg = varchar, rightarg = text, procedure = texticregexne);
Source code maintenance and development * worldwide team of volunteers * the source tree now in CVS at ftp.ki.net Enhancements * psql (and underlying libpq library) now has many more options for formatting output, including HTML * pg_dump now output the schema and/or the data, with many fixes to enhance completeness. * psql used in place of monitor in administration shell scripts. monitor to be deprecated in next release. * date/time functions enhanced * NULL insert/update/comparison fixed/enhanced * TCL/TK lib and shell fixed to work with both tck7.4/tk4.0 and tcl7.5/tk4.1 Bug Fixes (almost too numerous to mention) * indexes * storage management * check for NULL pointer before dereferencing * Makefile fixes New Ports * added SolarisX86 port * added BSD/OS 2.1 port * added DG/UX port


D9 E0
FCHS
Complements the sign bit of ST(0). This operation changes a positive value into a negative value of equal magnitude or vice versa. The following table shows the results obtained when changing the sign of various classes of numbers.
SignBit(ST(0)) = ~SignBit(ST(0));
C1 Set to 0 if stack underflow occurred; otherwise, set to 0. C0, C2, C3 Undefined.
#IS
#NM
CPUID


Great idea! You will contribute to the success of an event that is unique in Italy and will receive a remarkable visibility.
Are you looking for developers? Do you want to promote a technology or a service? Are you organising a workshop and need trainers? Or do you want to promote it to possible attendees?


Docker and Docker Compose
Docker is an aplication that simplify the way of manager content of containers.
Containers allow a developer to package up an application with all of the parts it needs, such as libraries and other dependencies, and ship it all out as one package.
Docker is a bit like a virtual machine but Docker allows applications to use the same Linux kernel as the system that they're running on and only requires applications be shipped with things not already running on the host computer.
It gives a significant performance boost and reduces the size of the application.
Requirements
Start
- Create an instance (e.g. OpenStack) with Ubuntu 18.04.
- Follow steps to install and configure Docker.
How to install and configure Docker on Ubuntu 18.04
- Update official repository of Ubuntu
- sudo apt update
- Install some packages to allows apt use HTTPS
- sudo apt install apt-transport-https ca-certificates curl software-properties-common
- Add GPG key to official repository on your system
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- Add Docker repository to APT sources
- apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
- Update the system with Docker repository recently added
- sudo apt update
- Check if you will install from Docker repository rather than from default Ubuntu repository
- apt-cache policy docker-ce
- Install Docker
- sudo apt install docker-ce
- Check if Docker is running
- sudo systemctl status docker
Access over SSH (configure in your system)
- Add your public key to other machine
- docker -H ssh://NAME@IP
Install Docker Compose on your system and instance created
- udo curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
- sudo chmod +x /usr/local/bin/docker-compose
- docker-compose --version
Create docker compose in your system
- mkdir docker
- vim docker-compose.yml
- docker images
- docker-compose up
Notes
If you turn off the docker:
- docker-compose down
If you turn on the docker:
- docker-compose up
When you turn off the docker and turn on again, the configuration files will run again.
If you change configuration files (e.g to install new software) you must turn off the docker.
But if you update to new versions of software on configuration files, the oldest version persists in docker but it isn't used.


CROUS is an organization that provides meals for students. But there are some information barriers between students and CROUS. DigiCROUS is a mobile app to improve the dinning experience for students by making information accessible.
This is the project of the course Advanced Design of Interaction System.
Feb 2019
Interview
Brainstorming
Prototype
Wireframe
The problem
The dining experience is not good. Students can't know today's menu in advance. The ingredients of the meal is not clear. And they wait too long before getting meals in peak hours.
We interviewed eight students and made a questionnaire which received 24 responses. Here are some results from the questionnaire.
The goal
Provide necessary information for students and help them track what they eat
We designed 3 personas for 3 different scenarios.
international student, 24
Get useful information for better decisions.
student athlete, 26
Eat healthy and get enough energy.
French student, 23
Get food as soon as possible
Question
What kind of information do the students need?
1. Information about food
We wanted to display basic information about food. I designed a participatory design activity to get more ideas.
1. Users will see some pictures of food and link whatever they think about to the
food to the pictures.
2. Users will try to group some food by color according to their feelings.
Insight
Students care about ingredients, nutrition and flavor. Using color to group food is confusing since they have different understanding about colors.
2. Information about restaurant
Students need the location, busyness and peak hour of each restaurant for better decision from the interview.
We made some paper prototypes to test our ideas.
Indicator for peak hour
We designed an indicator to show the current status and peak hour of each restaurant. We used different layers to display these information.
Recharge notification
They will get a recharge notification if there is no enough balance in student card.
The tray in both real and digital world
We designed a tray, like the real tray in CROUS. It indicated your choice. At CROUS, students can choose one plat, one dessert, one entry and one salad. Food will be added to the correspoding place on the tray.
They can click the dish to see the details including name, nutritions, ingredients, allergic information and some comments.
Thinking
Connection
This design can help users understand how to use the app and new student to understand CROUS rule.
The filter
We also designed a filter to help students who have diet restrications. For example, Ming could filter gluten out.
Evaluation
Filter or profile?
Ming is allergic to gluten. But he has to set the filter everytime. He needs a permanent filter. So we designed a user profile. Users can set it at the first time using this app.
The filter we originally designed, was for temporary use. For example, it can be used to choose different flavours.
Design
Fast way to access history
Compared to other apps process, this design is really fast to help students in hurry.
For fast choice, there was a problem when a specific food was not offered today or sold out. So we added a notification if it happeded. Students could add new food quickly in the popup.
Track your food
We added a nutrition indicator when choosing food. After eating, this app will send a report about nutrition and users can rate the food at this time.
Insight
Students want to eat with friends
Users can share their locations to friends and eat with friends to make the lunch time more interesting.
Thinking
Fewer steps
Normally, users should remove their location manually after finishing eating. But it's very easy to forget it and make their friends upset. We designed a timer to do this automatically.


Group Members
We are looking for new PhD students, Postdocs, and Master students to join the team (see openings) !
Jump to staff, master and bachelor students, alumni, administrative support, lab visitors.
Post Doctoral Researchers
-
Formal Verification for Hardware Security
-
Prof. Kamakoti V, Prof. Chester Rebeiro
Ph.D. Students
-
Approximate computing, micro-architecture
-
Prof. Kamakoti V
-
Hardware security, enery efficient computing, computer architecture
-
Prof. Kamakoti V
-
Shakti-T: A Secure Microprocessor
-
Prof. Kamakoti V
-
Network Function Virtualization, Cloud Networking, Network Security, Next Generation Networks.
-
Prof. Kamakoti V
-
FileSystems/Storage Controllers
-
Prof. Kamakoti V, Dr. Suparna Bhattacharya
-
Class Imbalance Learning
-
Prof. Ravindran B
-
Network Security
-
Prof. Kamakoti V, Prof. Chester Rebeiro
-
Network Privacy
-
Prof. Kamakoti V, Prof. Nitin Chandrachoodan
-
microarchitectural security
-
Prof. Chester Rebeiro
-
Machine Learning and Virtual Reality
-
Prof. Ravindran B, Prof. Manivannan M.
-
Network Security
-
Prof. Kamakoti V
-
Machine Learning, Complex Network Analysis, Bioinformatics
-
Prof. Ravindran B, Prof. Manikandan Narayanan
-
Deep Learning for Knowledge Graphs, Natural Language Processing
-
Prof. Ravindran B
-
Hardware Security
-
Prof. Chester Rebeiro
-
Micro-architectural Security, Malware Defense, OS Security
-
Prof. Chester Rebeiro
-
Manufacturing analytics, Machine Learning, Reinforcement Learning
-
Prof. Ravindran B, Prof. Raghunathan Rengaswamy (Chemical Engineering)
-
Systems for ML
-
Prof. Kamakoti V, Prof. Pratyush Kumar
-
Theoretical machine learning
-
Prof. Harish Guruprasad
-
Machine Learning, Natural Language Processing, Deep Learning,
-
Prof. Mitesh Khapra
-
reinforcement learning, machine learning
-
Prof. Ravindran B
MS Students
-
Hardware Security
-
Prof. Debdeep Mukhopadhyay
-
Epsilon Equitable Partitions based Approach for Role & Positional Analysis of Social Networks
-
Prof. Ravindran B
-
A Scalable Approach to Mining Communication Motifs from Dynamic Networks
-
Prof. Ravindran B
-
A Study of Community Detection Algorithms in Large Networks
-
Prof. Ravindran B
-
Exploring the Plasticity of Deep Convolutional Neural Networks
-
Prof. Ravindran B, Prof. Gitakrishnan Ramadurai (Co-Guide, CE)
-
Machine learning approaches to predict essential genes
-
Prof. Ravindran B
-
Natural Language Generation from Structured Data
-
Prof. Mitesh Khapra
-
Finite-time Analysis of Frequentist Strategies for Multi-armed Bandits
-
Prof. Ravindran B
-
Parallelizing Cache Timing Attacks for Last Level Cache Memories
-
Prof. Chester Rebeiro
-
Hardware Security ( Thesis Title: Automatic Synthesis of Fault Attack Resistant Block Cipher Implementation)
-
Prof. Chester Rebeiro
-
Incorporating External Knowledge in Domain Specific Conversation Systems
-
Prof. Ravindran B, Prof. Mitesh Khapra
-
Incorporating Domain Knowledge in Multilingual, Goal-Oriented Neural Dialogue Models
-
Prof. Mitesh Khapra
-
On Test and Diagnostic methodologies for nanometer technologies
-
Prof. Kamakoti V
-
Differential Power Analysis, RISC-V Secure Microprocessor, Side-channel Leakage Evaluation
-
Prof. Chester Rebeiro
-
Hierarchical Reinforcement Learning
-
Prof. Ravindran B
-
Deep Learning, Visual Question Answering, Computer Vision, Object Detection
-
Prof. Mitesh Khapra
-
Fairness in AI
-
Prof. Ravindran B
-
Computer Vision, Visual Question Answering and Deep Learning
-
Prof. Mitesh Khapra
-
Programming Languages and Distributed Systems
-
Prof. KC Sivaramakrishnan
-
Computer Architecture, High Performance Computing, Hardware Security
-
Prof. Kamakoti V, Prof. Chester Rebeiro
-
Machine Learning, Deep Learning, NLP
-
Prof. Pratyush Kumar
-
Reinforcement Learning, Machine Learning, Applied AI
-
Prof. Ravindran B
-
Spectral Hypergraph Theory
-
Prof. Ravindran B
-
NLP and Deep Learning
-
Prof. Mitesh Khapra, Prof. Pratyush Kumar
-
Hardware Security, Fault Attacks
-
Prof. Chester Rebeiro
-
Intrinsically Motivated Reinforcement Learning
-
Prof. Ravindran B
-
Deep Attention Models, Deep Learning, Machine Learning
-
Prof. Harish Guruprasad
-
Machine Learning
-
Prof. Arun Rajkumar
-
Concurrent software testing, distributed systems
-
Prof. KC Sivaramakrishnan
-
Reinforcement Learning, Natural Language Processing
-
Prof. Ravindran B
-
Continual Learning, Time-Series
-
Prof. Ravindran B
MTech Students
-
Multicore OCaml
-
Prof. KC Sivaramakrishnan
-
Device Drivers for SHAKTI
-
Prof. Kamakoti V
-
Machine Learning, Deep Learning, Recurrent Neural Networks
-
Prof. Harish Guruprasad
-
Satellite image analysis with Deep Learning models
-
Prof. Pratyush Kumar
-
Hardware Design
-
Prof. Kamakoti V
-
Machine Learning, Deep Learning
-
Prof. Harish Guruprasad
-
Fairness in Influence Maximization
-
Prof. Arun Rajkumar
-
Machine learning
-
Prof. Arun Rajkumar
-
Machine Learning
-
Prof. Arun Rajkumar
-
Design of ”Memory Management Unit and Cache Controller”
-
Prof. Kamakoti V
-
RL for control/stabilization of mechanical systems
-
Prof. Ravindran B
Administrative Support
Ellie van Rijsewijk is helping us (and other groups) with administration.


Table of Contents
In addition to using the Proximity Database Browser and command shell scripts to work with Proximity data, you can access the complete Proximity API through the Proximity scripting interface. This interface supports Python scripts run via the Jython interpreter, permitting access to the full Proximity Java class library. Scripts provide the means for many Proximity tasks including learning and applying models. Proximity lets you run full Python programs from files as well as providing a full-featured Python interpreter within the Proximity interface for convenient access to Proximity’s scripting interface.
The examples in this chapter are written in Jython, a Java
implementation of Python that lets you interact with Java code. The
classes and methods used in these examples are, of course, also
available for use in Java code. Source code files for all the scripts
discussed in this chapter are available in
$PROX_HOME/doc/user/tutorial/examples
.
For each exercise in this chapter, we first walk through the source code and identify how Proximity classes and methods are used to accomplish the desired task. This is followed by instructions for running the script in Proximity.
Objectives
The exercises in this chapter demonstrate how to
run scripts from the Proximity Database Browser
run scripts from the command line
execute Python statements interactively using Proximity’s Python interpreter
find objects having specified attribute values
sample containers to create training and test sets
access database elements (containers, subgraphs, objects, links, and attributes) from a script
add a new attribute to the database
create synthetic data that exhibits specific autocorrelation and degree disparity effects
use social networking algorithms to understand database structure


Quotes.txt
{{ _('Collection of the funny things you and your friends say that no one should read.') }}
{% block body %}{% endblock %}


Shop Nepal has planned to develop an online shopping website.Now a day’s business promotions and business transactions are done through online or by internet. Buying and selling products over the internet is trending now which is also known as eCommerce. It is part of all industries. Our website is based on two online business category business to business which means doing business with each such as manufacture selling where we can sell as a wholesale to retailers. And another one is business to consumers where product selling to the general public through catalogues utilizing shopping carts.


{include file="../application/index/view/common/header.html" /}
Home
Collection for Women
Handbags
Sort by:
Best selling
Price: Low to High
Price: High to Low
A-Z
Z-A
Oldest to Newest
Newest to Oldest
Grid
List
婚礼人
婚礼团队
婚礼策划统筹
{foreach name="list" item='v' key='k'}
{$v.nick}
- {$pro_type[$v.type]}
¥{$v.price}
{$v.introduction}
{/foreach}
{$list->render()}
{include file="../application/index/view/common/footer.html" /}


@(title: String)(implicit messages: Messages, requestHeader: RequestHeader)
Check your vitals and receive a personalized consultation from a healthcare professional. Register and use promo code WELCOMEVISIT.
Request a visit at the tap of a button. The doctor will call you to assess your need.
Doctor visits, diagnoses, treats and prescribes medication as needed. Prescription delivery available upon request.
The doctor will follow-up with you the next day via call or message.


Credit Spreads
Definition: The compensation the market offers for bearing default risk
- Yield spread
- i-spread
- z-spread
- Asset-swap spread
- Credit default swap spread
- Option-adjusted spread (OAS)
- Discount margin
Default Curve Analytics
- Default risk for a single company can be represented as a Bernoulli trial
- Hazard rate/default intensity - the parameter driving default
- Default time distribution function - the probability of default between now and time 't'
- Default time density function - the derivative of the default time distribution
- Conditional default probability
Spread Risk
Definition: The risk of loss from changes in the pricing of credit-risk securities
- Spread volatility - the degree to which spreads fluctuate over time


Active ingredient (in each fluid ounce)
Permethrin 280 mg (1%)
Warnings
For external use only
Do not use
on children under 2 months of age
near the eyes
inside the nose, ear, mouth, or vagina
on lice in eyebrows or eyelashes. See your doctor.
Ask a doctor before use if you are
- allergic to ragweed. May cause breathing difficulty or an asthmatic episode.
When using this product
- keep eyes tightly closed and protect eyes with a washcloth or towel
- if product gets into the eyes, immediately flush with large amounts of water
- scalp itching or redness may occur
Stop use and see a doctor if
If pregnant or breast-feeding, ask a health professional before use.
Keep out of reach of children.
If swallowed, get medical help or contact a Poison Control Center right away.
Directions
Inspect
- all household members should be checked by another person for lice and/or nits (eggs)
- use a magnifying glass in bright light to help you see the lice and nits (eggs)
- use a tool, such as a comb or two unsharpened pencils to lift and part the hair
- look for tiny nits near the scalp, beginning at the back of the neck and behind the ears
- small sections of hair (1-2 inches wide) should be examined at a time
- unlike dandruff, nits stick to the hair. Dandruff should move when lightly touched.
- if either lice or nits (eggs) are found, treat with Permethrin Lotion 1%
Treat
- wash hair with a shampoo without conditioner. Do not use a shampoo that contains a conditioner or a conditioner alone since this may decrease the activity of Permethrin Lotion 1%. Rinse with water.
- towel dry hair so it is damp but not wet
- shake the bottle of Permethrin Lotion 1% well
- completely saturate the hair and scalp with Permethrin Lotion 1%. Begin to apply Permethrin Lotion 1% behind the ears and at the back of the neck.
- keep Permethrin Lotion 1% out of the eyes. Protect the eyes with a washcloth or towel.
- leave Permethrin Lotion 1% on the hair for 10 minutes, but no longer
- rinse with warm water
- towel dry hair and comb out tangles
- if live lice are seen seven days or more after the first treatment, a second treatment should be given
Remove Lice/Nits
- remove nits by combing the hair with the special small tooth comb provided. Remaining nits may be removed by hand (using a throw-away glove), or cutting the nits out.
- use the nit comb provided and make sure the hair remains slightly damp while removing nits
- if the hair dries during combing, dampen it slightly with water
- part the hair into 4 sections. Work on one section at a time. Longer hair may take more time (1-2 hours).
- start at the top of the head on the section you have picked\
- with one hand, lift a 1-2 inch wide strand of hair. Get the teeth of the comb as close to the scalp as possible and comb with a firm, even motion away from the scalp to the end of the hair.
- use clips to pin back each strand of hair after you have combed out the nits
- clean the comb completely as you go. Wipe the nits from the comb with a tissue and throw away the tissue in a sealed plastic bag to prevent the lice from coming back.
- after combing, recheck the entire head for nits and repeat combing if necessary
- check the affected head daily to remove any nits that you might have missed
Other information
- read all the directions in the Consumer Information Insert and warnings before use. Keep the carton. It contains important information.
- store at 20° to 25°C (68°to 77°F)
Inactive ingredients
Balsam fir canada, cetyl alcohol, citric acid, FD&C yellow #6, fragrance, hydrolyzed animal protein, hydroxyethylcellulose, isopropyl alcohol, methylparaben, polyoxyethylene 10 cetyl ether, propylene glycol, propylparaben, purified water, stearalkonium chloride
Questions?
1-800-432-8534 between 9 am and 4 pm EST, Monday – Friday.
PRINCIPAL DISPLAY PANEL
fred’s®
Single Application
Lice Treatment
Permethrin Lotion 1%
With a Single Application:
Kills Lice & Their Eggs
Prevents Reinfestation
for 14 Days
Creme Rinse With
Nit Removal Comb
Compare to the active ingredient in:
Nix®
2 FL OZ (59 mL)
Fred's Inc.


congratiolation to BrainFooLong - Better Battlelog Forums #99316
Sitemap
29. May 2013 19:47
Topicstarter
I_like_Chocolate
congratiolations to BrainFooLong with 100+ points behind his name :D
or how ever the point thingy is called :D
29. May 2013 19:54
ORFK
Global Moderator
I can recognize in this contribution a big slime trail ^^ or not?
29. May 2013 19:57
BrainFooLong
Administrator
twm-killerkeks wrote:
how ever the point thingy is called :D
Reputation :)
29. May 2013 20:06
Topicstarter
I_like_Chocolate
nope i just recognized it :D


Make Your Mark
Student Zone at Microsoft Build 2021
Add your constellation to the universe!
Enter Your MakeCode Project URL:
Check out our Universe!
Check out the Community Stars!


WITNESS LIST Appropriations-S/C on Criminal Justice Committee February 9, 1999-8:00A Budget On: Bailey, Doyne (Alcoholic Beverage Commission) Cargile, Eugene (Adjutant General's Dept.) Carlson, Claire (Adjutant General's Dept.) Craig, George (Bd of Private Investigators) Cruz, Lydia (Texas Military Facilities Commission) Dickie, Martha (Alcoholic Beverage Commission) DiTucci, Frank (Texas Polygraph Examiners Bd) Fox, Jeannene (Alcoholic Beverage Commission) Harris-Curtsinger, Shelley (Commission on Fire Protection) Hayden, Rose (Office of the Governor) James, Daniel (Adjutant General's Department) Kimbrough, Jay (Bd of Private Investigators) Malcolm, Jerry (Texas Military Facilities Commission) Marty, Wayne (Adjutant General's Dept) McClure, Gary (Texas Military Facilities Commission) Slayton, Jack (Adjutant General's Dept) Teigen, William (Polygraph Examiners Bd) Thompson, Thomas (Texas Commission on Fire Protection) Warren, Gary (Texas Commission on Fire Protection) Webster, Jay (Alcoholic Beverage Commission) Wells, John (Army National Guard)


“Heliogabalus made elaborate preparations for his own death, expecting that it would come in the midst of some uprising. He had a courtyard in his palace paved with porphyry so that he might throw himself down on it from a high place. He had a steel dagger fitted with a diamond-studded, carved gold hilt, to stab himself. He had especially spun a rope of gold and silk, to strangle himself. Surprised in the latrine by his assassins, he choked himself to death on the sponge that, to use Montaigne's expression, ‘the Romans used to wipe their behinds'.” — Alexandre Dumas, in the preface to his Grand Dictionnaire de Cuisine.


dotnet/aspnetcore ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux. - dotnet/aspnetcore
Man gets 20 years for deadly “swatting” hoax Tyler Barriss has shown little remorse for the death of Andrew Finch.
Announcing Lucet: Fastly's native WebAssembly compiler and runtime Today, we're thrilled to announce the open sourcing of Lucet, our native WebAssembly compiler and runtime. WebAssembly is a technology created to enable web browsers to safely execute programs at near-native speeds, and it's been shipping in the four majo...
ASP.NET Blog | .NET Core Workers as Windows Services In .NET Core 3.0 we are introducing a new type of application template called Worker Service. This template is intended to give you a starting point for writing long running services in .NET Core. In this walkthrough we will create a worker and run it as ...
[Epic] Kerberos Authentication in ASP.NET Core · Issue #8897 · dotnet/aspnetcore We want to support Kerberos Authentication in ASP.NET Core. For 3.0, we are targetting the following supported environments as a minimum viable product (MVP): ASP.NET Core Server Platform: Linux (i...
ASP.NET Community Standup - March 26th, 2019 - SignalR with Brady Gaster Join members from the ASP.NET teams for our community standup covering great community contributions for ASP.NET, ASP.NET Core, and more.
Scott Helme Security researcher, entrepreneur and international speaker who specialises in web technologies. Creator of report-uri.com and securityheaders.com
Chapter 6: Khafre and the Giant – The Analog Antiquarian Giovanni Battista Belzoni was born in Padua in 1778, one of a barber’s fourteen children. His father intended to make the strapping lad his gift to the church; he sent him to Rome to become a monk. But when Napoleon’s army arrived in the city in 1798, Bel...
Proposal: Dependency Injection / Service Locator as a Language Feature · Issue #1690 · dotnet/csharplang DI / Service Locator as Language Feature The use of dependency injection frameworks has increased over the years; and for good reason. DI frameworks help to enforce good design patterns & princ...
Introduction to authentication for Single Page Apps on ASP.NET Core Use Identity with a Single Page App hosted inside an ASP.NET Core app.
Dotnet-Boxed/Templates .NET project templates with batteries included, providing the minimum amount of code required to get you going faster. - Dotnet-Boxed/Templates
Why Ben Carson Is Taking on Facebook Charges by the federal housing department outline powerful Facebook tools that enable allegedly sweeping violations of the Fair Housing Act.
Dark Flat Theme - Plugins | JetBrains Dark LaF theme based on 'Rider Dark' with more 'flat' design and minimum visible borders.
Newsletters spam test by mail-tester.com mail-tester.com is a free online service that allows you to test your emails for Spam, Malformed Content and Mail Server Configuration problems
jdegoes/scalaua-2019 The workspace for ScalaUA 2019 presentation, "Thinking Functionally" - jdegoes/scalaua-2019
Compare gRPC services with HTTP APIs Learn how gRPC compares with HTTP APIs and what it's recommend scenarios are.
dotnet/corefx CoreFX is the foundational class libraries for .NET Core. It includes types for collections, file systems, console, JSON, XML, async and many others. - dotnet/corefx
randrew/phantomstyle Cross-platform QStyle for traditionalists. Contribute to randrew/phantomstyle development by creating an account on GitHub.
Einstein on the Beach: Knee Play 3 Provided to YouTube by Sony Music Entertainment Einstein on the Beach: Knee Play 3 · Michael Riesman · Marc Jacoby · Philip Glass · Philip Gavin Smith · Lucinda Childs · Sheryl Sutton · Iris Hiskey · Philip Glass Ensemble · Paul Zukofsky · David Anchel ·...
MailOnline The MailOnline (Daily Mail) app gives you everything you've come to expect and love from the world's largest English-language newspaper website, but with quick, easy and free access on your iPhone or iPad - accessible even when you're offline. Feed you...
The Unexpected Philosophical Depths of Clicker Games The game represents the way human activity is constantly mediated by screens, our lives made up of fleeting words and images and rising numbers.
Seattle Scotch & Beer Fest 2019 Tickets | Fremont Studios | Seattle, WA | Friday, April 19 & Saturday, April 20, 2019 | Stranger Tickets Seattle Scotch & Beer Fest is the region's biggest spring beer festival combining craft beer, Scotch, Whiskey, and inventive cocktails. On April 19 and 20, indoors at Fremont Studios, Seattle Scotch & Beer Fest features authentic Scotch tasting, Irish Whi...


Navigator
Meta editor
Help
Sign out
Data Navigator
Search
Clear
search for:
Name
Description
Default
Default packages for new entities
System
Package containing all system entities


The Final Frontier for Microsoft Security - Complexity
There's a really interesting posting at Visual Complexity that provides a good illustration of what I think Microsofts main remaining problem in regards to security is.
MS have done tons of work in improving their code quality, improving their default builds and adding features like Address space layout randomization (ALSR) to make hacking into their products harder.
The one area that's left is complexity. Ultimately the more code that is installed on a system the more code there is to be attacked, either remotely or locallly. what the graphs from visual complexity show is that for web servers IIS on windows has more potentially active code that Apache on Linux.
Hopefully some of the other stories that have surfaced recently will lead to the possibility of having a very stripped down Windows OS if you need it...


#include <security.h>
Public Attributes | |
| BYTE | keySetVersion |
| The key set version. | |
| BYTE | keyIndex |
| The key index. | |
| BYTE | keyType |
| The key type. | |
| BYTE | keyLength |
| The key length. |
A structure containing key information. Key set version, key index, key type and key length.
The key index.
The key length.
The key set version.
The key type.


Piano scales
Visual guide to better learn the scales for pianists
UX Designer
March 2019
Visual guide to better learn the scales for pianists
UX Designer
March 2019
One of the most fundamental parts of learning a musical instrument is to learn the scales. The basic ones are the major and minor scales which are the first ones learned by any musician, whether you follow a classical path or even a jazz path.
The challenge is to know which fingers are supposed to go on which key to be able to go up and down the keyboard by following the notes of the scale.
How the fingerings work on the piano
As a pianist myself, I have always found the process of learning the scales on the piano quite unadapted to the instrument. In fact, the piano is a very visual instrument and it can help a lot to learn it visually when it makes more sense than with a sheet.
Note that I have nothing against music theory and music notation, if anything I encourage anyone that wants to learn a musical instrument to get a good grasp of music theory and notation as it enables you to have the tools to understand music thoroughly.
However, in some cases like this one, there may be tools more useful.
There are 12 different notes (C, C#, D, D#, E, F, F#, G, G#, A, A#, B). For each of these notes there is a corresponding major scale and a corresponding minor scale (there are a lot of other types of scale but these two are the most used in western music).
This is what a typical exercise looks like:
Example of scale exercise from "Scales arpeggios and candences for piano" by Jeff Manookian
On this page we see only two scales, we have 24 of them when we add up the major and the minor scales. That would make 12 pages to display the same exercise as in the example above. Of course, on this page there are rythmic exercises that may be omitted and we could probably fit more scales on a page to use it as a reference tool. The rythmic exercises can be easily created by the musician.
One of my goal was to have some kind of reference tool that would be user-friendly and skimmed with ease.
Moreover, it is not just about the size of the document, as said before it is also about the way we learn the scales. A sheet cannot help that much at visualizing the notes of the scales on the keyboard. It cannot really help either at visualizing which scale is related to which or which ones are close.
In the end what I wanted to create was a reference tool that would be ergonomic, compact, useful and visual.
The final result is a one page document on which we can see all the major and minor scales along a circle of fifths so that we can see how they are related to one another.
All the information needed is here: the major scales, their relative minor scales, the circle of fifths, the key signatures and the fingerings.
You can download for free the full-sized pdf at archive.org/details/pianoscaleschart (there are versions with major scales only and minor scales only).
Piano scales reference tool in color
Piano scales reference tool in black and white
To get there I had to go through several different steps.
The circle of fifths is a wonderful tool used by a lot of musicians (not only pianists) to have a visual representation of all the scales relationships.
Example of circle of fifths
The example used above is a very good one as it includes the major scales but also their relative minor scales and their key signatures.
A little more about that:
• each major scale has a relative minor scale containing the same notes but starting on a different one
• the key signatures are at the beginning of a staff, this is what tells you which scale is used on a sheet
If you want to know more about all of that I invite you to look into music theory.
I chose to include all these elements in the product, here is the first stage:
First stage of the project
Once this was done, a few ideas came to my mind to make it better:
• make the black keys of the scales darker so that we can differentiate them from the white keys
• add the fingerings
Also, I posted it on reddit.com/r/piano to get users' input about it.
Along with minor corrections this is what came most from other users:
• the fingerings should be added
• something like a background should be added to make it more readable as some keyboards are not directly aligned with the scale names
• the outermost rim with the keys should contain the major scales instead of the minor ones to make it seamless with the central circles where the outermost rim contains the names of the major scales
• a lowercase "m" should be added next to the minor scale letters as it is how they are commonly spelled
• the key signatures should also contain the treble clef (for the left hand) just like it does in any piano sheet
• printer-friendly color should be used so that anyone can print it with a home printer
• black keys should be darker
• a black and white version would be appreciated as some users were colorblind
All these suggestions were taken into account to make the final product, as well as other suggestions like making versions with minor scales only and major scales only and versions with solfege notation.


---
layout: alternate-imagens
title: "imagens"
subtitle: "índice"
---
- { modern }
-
On duty "amid the encircling gloom" of a city's certain destruction. Magnificent fire scene near Union Ferry Bldg. San Francisco, U.S.A.
1906
-
Contextual view of building 521 showing west elevation, with eagle statue in foreground; camera facing north. - Mare Island Naval Shipyard, Administrative Offices, Walnut Avenue, east side between Seventh & Eighth Streets, Vallejo, Solano County, CA
1933
-
After the earthquake - frame houses tumbled from their foundations, San Francisco Disaster, U.S.A.
1906
-
Specimens of ancient and modern Chinese shells captured by the Allied Forces, Tien-tsin, China
1901
-
Mrs. N.E. Nuber & Norma
1920
- { urban }
-
14. VIEW OF UNDERDECK, LOOKING SOUTH AT CENTERLINE - Harvard Bridge, Spanning Charles River at Massachusetts Avenue, Boston, Suffolk County, MA
1968
-
1. Photocopy of a photograph--1950 LOWER END OF TUNNEL - Montezuma Valley Irrigation Company System, Dolores, Montezuma County, CO
1968
-
Bellows Falls Arch Bridge, Spanning Connecticut River, North Walpole, Cheshire County, NH
1968
- { utility }
-
[Detroit] City Gas Co.
1913
-
Overview view of Morony-tp-Rainbow Line (right) about one-fourth mile northeast of Rainbow Dam. Ryan-to-Rainbow Lines 1 and 2 at center, Cochrane-to-Rainbow Line at left and Rainbow Dam in background right of center. View to southwest - Morony Hydroelectric Facility, Morony-to-Rainbow 100 kV Transmission Line, West bank of the Missouri River, Great Falls, Cascade County, MT
1968
-
Morony-to-Rainbow H-frame structure just east of Ryan Dam Road about two and one-fourths miles southwest of Morony Dam and Powerhouse. View to east-northeast - Morony Hydroelectric Facility, Morony-to-Rainbow 100 kV Transmission Line, West bank of the Missouri River, Great Falls, Cascade County, MT
1968
{% include nr-de-imagens.html %}


Component to visualize Top / Bottom Members with background colored value
Link to blog: Design Studio SDK: Leader Board Component


Please Tell Us More About Your Self
Name:
Email:
Message:
How did you hear about us?
Google
Yahoo
Facebook
Twitter
other
Shipping Method:
Overnight
Ground
Overnight
Ground
Packing Requirements (select all that apply):
Premium
Automated
Rush
Shipping Preference:
In Store
Shipping
Subtotal:
Shipping:
Total for invoice:


importance: 5
The function makeWorker
below makes another function and returns it. That new function can be called from somewhere else.
Will it have access to the outer variables from its creation place, or the invocation place, or both?
function makeWorker() {
let name = "Pete";
return function() {
alert(name);
};
}
let name = "John";
// create a function
let work = makeWorker();
// call it
work(); // what will it show?
Which value it will show? “Pete” or “John”?


I Still Know What You Did Last Summer (1998)
Director: Danny Cannon Cast: Jennifer Love Hewitt, Brandy Norwood, Mekhi Phifer, Matthew Settle, Freddie Prinze Jr. Screenplay: Trey Callaway, Stephen Gaghan Producers: William S. Beasley, Stokely Chaffin, Erik Feig, Neal H. Moritz Runtime: US Distribution: Columbia Rated R: violence, language
By Nathaniel R. Atcheson<EMAIL_ADDRESS>A film with a title as long and clunky as I Know What You Did Last Summer poses a problem for film makers: what should be done in the case of a sequel? Well, it wouldn't suffice to shorten it to something like I Know 2 or Summer 2; so, the makers of this particular sequel came up with the even-longer I Still Know What You Did Last Summer. The only problem with this title is that the "summer" in question was two summers ago in the context of this film. A more appropriate title would have been I'm Still Aware of What you Did Two Summers Ago, or You Know What You Did Two Summers Ago? Well, I Still Know. If they make a third film in the series, we might have something like Remember Me? I'm The Guy Who Knows What You Do in the Summer, and I'm Back for More!
And yet, something tells me that more time was spent naming this film than actually thinking about it, for I Still Know... is a film so painfully awful and pointless that it makes me realize just how vapid the horror-film genre can be. I've written a lot about violence pornography lately, but no film illustrates my point better than this one: this film is banking on its excessive and exploitative use of violence and gore. The picture fails on a fundamental level: I can appreciate successful pornography to a degree, but I Still Know... is not scary. It's not disturbing.   The heroine survivor of the first film, Julie James (Jennifer Love Hewitt), is having nightmares about her horrible experience. In response to this, she never hesitates to investigate strange noises in the dark while holding a sharp knife. The strange noises usually turn out to be Karla (Brandy), who is too-cool-for-words.
2. Since the film can't take place in a setting similar to the first film, the girls conveniently win a vacation to go to the Bahamas. They win by incorrectly guessing the capital of Brazil (they say Rio, when, in fact, it is Brasilia...but this has a point later!). Even though Julie really misses her boyfriend Ray (Freddie Prinze, Jr.), the two girls bring along Tyrell (Mekhi Phifer) and Will (Matthew Settle) for sexual reasons.
3. Well, when they arrive at the Bahamas, there are some convenient discoveries: it's storm season, and there won't be any boats going to or from the island. Also, there are no guests because it's storm season. The only people present are a few employees of the hotel. Since police officers are useless in horror films anyway, it's no big deal that the hotel has no security guard or anything like that.
4. People start dying. The Bad Dude in a Slicker with a Hook goes around sticking his weapon in people's mouths and hands, and plunges giant sharp objects into people who pose no threat whatsoever. Later on, the killer's identity is discovered and everyone who had more than three lines survives. But this isn't before a profoundly dumb series of plot devices is employed to land our heroes in a final confrontation in a tropical rainforest.
>From a screenwriting standpoint, I have trouble believing that someone over the age of ten composed this script. To call it amateurish is pretty kind; I'm more inclined to believe that a middle-school horror-flick freak wrote it as a joke for his friends.  The Bad Dude in a Slicker with a Hook, like Freddy and Jason and Michael Myers, is really good at killing people violently, never being seen, and instantly cleaning up his mess so the person who saw the dead body looks crazy to all her friends. In addition, he has immense strength, and can lift hundreds of pounds with one arm.
The acting is very bad. I love to look at Jennifer Love Hewitt, but she just isn't any good in this movie. She's at her best when she's being nice, but the rage part of this (shouting "Come and get me! I'm right here!" in the rain) doesn't quite work. Brandy is spunky and all that, but really just annoying. Settle and Prinze, Jr. do what they can with non-characters, but Phifer is the absolute worst, mixing dreadful overacting with his dreadful dialogue. There aren't any characters anyway, so caring about any of these people is not an option.
But let's talk about the violence. The movie was incompetently directed by Danny Cannon; even a lousy script can be turned into something slightly interesting and suspenseful by a good director, but Cannon seems to think that huge bursts of music are scary. He seems to believe that people walking down dark hallways is frightening. He obviously thinks that teenagers want to see buckets of blood, because that's the only thing you can count on getting out of I Still Know... But, unfortunately, Cannon just wants to exploit the violence.  The scariest movies I've seen leave everything up to the imagination: Seven and The Shining qualify as truly frightening films, because they have a level of humanity that the typical teen-slasher ignores completely.
It upsets me to know that teenagers live and die for this kind of thing, and that Hollywood is happy to provide it for them. I Still Know... is as bad as they come -- it makes me realize the good things about a moderately stylistic film like Urban Legend, and the interesting character aspects of H20. While watching people get stabbed and diced to bits for no other reason than to please popcorn munchers, I got a sick feeling in my stomach. No thought was put in to this movie -- it exploits mindless violence for the purpose of making money.
This is not a moral issue; I can live with a film that just wants to entertain, as long as it at least tries to be art in even the vaguest way. I Still Know..., like too many movies, has been made for the sole purpose of making money. It's rare that a film so bad is also so inherently offensive. Violence can be art, but not like this. Violence can even be funny if its done in the right way. I'm not saying that I expected this film to be smart or satirical, but I at least expected it to do its job. It makes me wish that a thoughtful script were more important than a lot of dead bodies. The fact that it's not worries me.
>From 0-10: 1
Visit FILM PSYCHOSIS at http://www.pyramid.net/natesmovies
Nathaniel R. Atcheson
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews