Back in 2009, I posted an article titled “Keeping your iTunes Library Fresh” that showed how to create a smart playlist that would improve over a simple shuffle of your music library. Based on your ratings, it would play the music you like more often than the music you like less.
If you have tried out the new iTunes Match service from Apple, you may be disappointed that these playlists are not synced to iCloud (you see a little cloud icon next to your playlist name with a slash through it that clicked tells you it is ineligible for iCloud):
The playlist needs to be refactored so that it doesn’t depend on other playlists.
Unfortunately iTunes does not let you construct a single playlist that matches exactly to what was created in my old post (you can’t set a “limit to” number of songs for a single matching subsection–only to entire playlists). However, as a next-best thing, you can take advantage of the “Last Skipped” clause to help minimize the occurrence of poorly-rated music. The following is a single stand-alone playlist that corresponds to the “Good Mix” playlist from the old post (hold down the Option/Alt key when clicking the “+” button to create one of the indented “All”/”Any” subsections):
Here’s another single stand-alone playlist that corresponds to the “Christmas Mix” playlist from my old post:
Adjust the time values to your preferences. The reason why the no-star ratings are given equal weight as the 5-star songs is that it is likely that it is music that you just purchased and thus want to hear it frequently until you make a decision on what other rating you want to give it or it will help encourage you to rate all of your music. If you have a ton of unrated music simply make a zero-star-rated playlist and work your way through it.
If you are noticing client-side performance issues in your ADF Faces application and must support legacy browsers like Internet Explorer 7 and Internet Explorer 8, there are many techniques available to help optimize your application for these browsers:
- If you use af:region and the jsff page fragment files have more than 1 root component, optimize it by arranging these components with a single root component. For example, if you want your region contents to stretch, you might have one visible content component and a series of popup components, put the visible content component inside of a “center” facet of an af:panelStretchLayout and put all of those popups in the “bottom” facet but also make sure to assign bottomHeight=”0px”. If you don’t want the contents to stretch, simply wrap these components with an af:panelGroupLayout layout=”vertical”.
- Avoid using a af:panelStretchLayout where topHeight, bottomHeight, startWidth, or endWidth is set to “auto”.
- Minimize uses of af:panelAccordion in discloseMany=”true” mode if possible.
- Minimize use of components that provide overflow popups, e.g. af:panelAccordion, af:panelTabbed, af:toolbar, af:breadCrumbs, af:menuBar. If you have to use these components, make sure that your target screen size can accommodate the content without having to invoke overflow.
- Minimize use of components that provide custom title text truncation, e.g. af:panelHeader and af:showDetailHeader. If you have to use these components, make sure that your target screen size can accommodate the title text without having to truncate.
- Minimize use of af:carousel, af:table, af:tree, af:treeTable.
- Avoid complex user interfaces. Users will struggle to process complex application structures. Legacy browsers will struggle with processing of complex content. Keep the number of tabs simple (use less than 10). Keep the number of columns in a table small (use less than 10).
- Finally, don’t ignore the warnings that JDeveloper gives you.
At some point, you may have an inlineStyle whose value is BIDI sensitive; in LTR (left-to-right) mode, you may want a “left” style but in RTL (right-to-left) mode, you may want a “right” style. You don’t have to write a managed bean to give you the corresponding style, you can use EL (expression language).
Here’s an example assigning a padding for the “start” side of 10px:
See oracle.adf.view.rich.context.AdfFacesContext for other properties.
Adobe Illustrator CS4 has a very frustrating object gradient editing tool. Chances are that you already have the colors of your gradient somewhere in your artwork but not necessarily have spent the time to create a swatch for it. It would be much easier if Illustrator actually let you choose your color stop colors with an eye dropper tool. Actually it does–but it isn’t very obvious. Here are the steps:
Step 1 – Select your shape with the selection tool.
Step 2 – Open the gradient palette and select the color stop whose color you wish to change (notice the triangle above the color has a black fill).
Step 3 – Change to the eye dropper tool (or press “i”)
Step 4 – It is very important that you hold down the shift key when you click to pick up a color or else the gradient will be replaced with a solid color but now the color stop is using your newly-chosen color!
Adobe Illustrator CS4 does not let you directly apply special styling such as a gradient on the stroke of a shape but there is a workaround. This post walks you through the process to get it done.
Step 2 – Add a stroke to the shape by choosing Effect – Path – Outline Stroke.
Step 3 – The stroke appears with a solid color.
Step 4 – Convert the solid stroke into a separate object by choosing Object – Path – Outline Stroke.
Step 5 – You now have separate objects so you can select the stroke separately to make changes.
Step 6 – Finally, you can apply a gradient style on the separated stroke object and can apply other effects like a drop shadow. Rearrange the order of the 2 objects so that the drop shadow of the stroke does not cover up the inner shape.
If you are ever debugging a JSF 2 application, are seeing some “UIInstructions” components mysteriously polluting the component tree, and want to get rid of them (e.g. breaking desired sole-child configurations for layout geometry reasons), this tip is for you…
These UIInstructions components are likely due to the presence of an HTML DOCTYPE (or other content) appearing in one or more of your JSF fragment files. These fragment files are likely missing a ui:composition wrapper.
More info on why you might want the HTML DOCTYPE (or other content):