Trying to Understand Interfaces

Hi all,
As you might expect, I am new to JAVA. I have read the basics tutorial on interfaces and also the object oriented programming basics tutorial. I understand that you can't implement methods or variables in interfaces, etc. Here is what I am struggling with:
A friend has written a class that uses the JNDI classes to query an LDAP service for person information and update database information. I notice that the query returns an object of type NamingEnumeration. But this is an interface, not a class. When he gets the items/elements from the Enumeration, he uses a (Attributes) to cast the results to their proper type.
So, if I am writing a class and want to implement the NamingEnumeration interface over my class... and if I want to retrieve that class by its NamingEnumeration interface, rather than its actual class...how would I create a method that does this.
My first attempt at creating this class went like this:
public class DocumentEnumeration extends DocumentCollection implements NamingEnumeration
If I called the .next method of my class, I would return a type Document. So far I don't know how to retrieve this DocumentEnumeration as a NamingEnumeration, and I received an error in my IDE about the constructor with arguments () is not visible. I did not understand this error either.
Any help would be appreciated,
Jeff

DrClap's responses are all correct and to the point. Let me add a preface. Forget everything you've read, close your eyes and say "interfaces are dead simple!" about a hundred times. They are.
An interface is a bundle of related capabilities. For example, I am a male homo sapiens (my class). I ski and play tennis - these are things I can do. As a Skier I have methods like buckleBoots(), getOnLift(), getOffLift() and skiDownHill(). All skiers implement these methods.
TennisPlayers implement a different set of methods: serve(), volley() and so on. Some TennisPlayers may also implement Skier and some Skiers may implement TennisPlayer, but if an object of class LiftAttendant is going to call our getOnLift() method, it doesn't care about serve() or volley(). It knows that we have the handful of methods that concern LiftAttendants.
Note that many different classes can implement an interface. Certainly some female homo sapiens implement Skier. I've also seen some apes and hot dogs implementing Skier.
The Runnable interface defines just one method: public void run(). A Runnable is any class that claims it implements Runnable. If the class declaration claims that it implements Runnable, the compiler won't generate a .class file unless the class defines a public void run() method. When you pass a Runnable to a Thread, the Thread knows exactly one thing about the Runnable, that it has a public void run() method which the Thread can call after it is started. The Thread has no clue what it might be running, but because the object is a Runnable it can correctly call whatever.run().
Why might a well-written method return an Interface type, not a class? Generality. The LiftAttendant need only know that an object has a getOnLift() method. So anything the implements Skier will be fine for the LiftAttendant.
So an interface defines a set of methods (as few as one) that, taken together, constitute a capability. A class that implements these methods can claim to implement the interface, and other objects that care about that capability can say they work with Skier, or Runnable or whatever, so that they can handle lots of different things, not worrying about all the other things their Objects might implement or be.
Very simple. Very powerful.

Similar Messages

  • Trying to understand the Serialization interface

    Im trying to understand the Serialization of objects?
    As an example, I create a Library class that implements Serializable, that stores a collection of Book objects
    If I am only looking at saving a Library object to file, does the Book class require Serialization also or just the Library?
    I have read the API on serialization, no answer there, if it is it's not easy to understand or read into the API...

    There are some really important things to know about when doing serialization. For example one important thing to know about that not is mentioned here is that your serializable classes must define its own private static final long serialVersionUID because if you not do that will you not be able to deserialize (read in) the data you have saved later if you change anything in your serializable class. It is a bit tricky to manage files to which you have serialized different versions of your class, that is versions where you have added more serializable members to the class after you have serialized files. Well, it is not a problem if you don´t care if you have to type in all your saved data again every time you change anything instead of deserialize it (read it) from your file of course :)
    Situations like this may be handled if you define your own (private) writeObject(ObjectOutputStream) and your own readObject(ObjectInputStream) methods in your serializable class but there is a better a lot smarter way to handle this. Use of a serialization proxy! how to use that is described in the excellent book Effective Java 2nd ed. With a serialzation proxy for every serializable version of your class (where a version corresponds to a version of your class with differences in its number of serializable members) may your class deserialize data written from elder versions of your class also. Actually is it first since I read the last chapter of Effective Java that I think I have myself begin to understand serialization well enough and I recommend you to do the same to learn how to use serialization in practice.

  • Hello, World - trying to understand the steps

    Hello, Experts!
    I am pretty new to Flash Development, so I am trying to understand how to implement the following steps using Flash environment
    http://pdfdevjunkie.host.adobe.com/00_helloWorld.shtml         
    Step 1: Create the top level object. Use a "Module" rather than an "Application" and implement the "acrobat.collection.INavigator" interface. The INavigator interface enables the initial hand shake with the Acrobat ActionScript API. Its only member is the set host function, which your application implements. During the initialize cycle, the Acrobat ActionScript API invokes your set host function. Your set host function then initializes itself, can add event listeners, and performs other setup tasks.Your code might look something like this.
    <mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" implements="acrobat.collection.INavigator" height="100%" width="100%" horizontalScrollPolicy="off" verticalScrollPolicy="off" >
    Step 2: Create your user interface elements. In this example, I'm using a "DataGrid" which is overkill for a simple list but I'm going to expand on this example in the future. Also notice that I'm using "fileName" in the dataField. The "fileName" is a property of an item in the PDF Portfolio "items" collection. Later when we set the dataProvider of the DataGrid, the grid will fill with the fileNames of the files in the Portfolio.
    <mx:DataGrid id="itemList" initialize="onInitialize()" width="350" rowCount="12"> <mx:columns> <mx:DataGridColumn dataField="fileName" headerText="Name"/> </mx:columns> </mx:DataGrid>
    Step 3: Respond to the "initialize" event during the creation of your interface components. This is important because there is no coordination of the Flash Player's initialization of your UI components and the set host(), so these two important milestone events in your Navigator's startup phase could occur in either order. The gist of a good way to handler this race condition is to have both your INavigator.set host() implementation and your initialize() or creationComplete() handler both funnel into a common function that starts interacting with the collection only after you have a non-null host and an initialized UI. You'll see in the code samples below and in step 4, both events funnel into the "startEverything()" function. I'll duscuss that function in the 5th step.
                   private function onInitialize():void { _listInitialized = true; startEverything(); }

    Hello, Experts!
    I am pretty new to Flash Development, so I am trying to understand how to implement the following steps using Flash environment
    http://pdfdevjunkie.host.adobe.com/00_helloWorld.shtml         
    Step 1: Create the top level object. Use a "Module" rather than an "Application" and implement the "acrobat.collection.INavigator" interface. The INavigator interface enables the initial hand shake with the Acrobat ActionScript API. Its only member is the set host function, which your application implements. During the initialize cycle, the Acrobat ActionScript API invokes your set host function. Your set host function then initializes itself, can add event listeners, and performs other setup tasks.Your code might look something like this.
    <mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" implements="acrobat.collection.INavigator" height="100%" width="100%" horizontalScrollPolicy="off" verticalScrollPolicy="off" >
    Step 2: Create your user interface elements. In this example, I'm using a "DataGrid" which is overkill for a simple list but I'm going to expand on this example in the future. Also notice that I'm using "fileName" in the dataField. The "fileName" is a property of an item in the PDF Portfolio "items" collection. Later when we set the dataProvider of the DataGrid, the grid will fill with the fileNames of the files in the Portfolio.
    <mx:DataGrid id="itemList" initialize="onInitialize()" width="350" rowCount="12"> <mx:columns> <mx:DataGridColumn dataField="fileName" headerText="Name"/> </mx:columns> </mx:DataGrid>
    Step 3: Respond to the "initialize" event during the creation of your interface components. This is important because there is no coordination of the Flash Player's initialization of your UI components and the set host(), so these two important milestone events in your Navigator's startup phase could occur in either order. The gist of a good way to handler this race condition is to have both your INavigator.set host() implementation and your initialize() or creationComplete() handler both funnel into a common function that starts interacting with the collection only after you have a non-null host and an initialized UI. You'll see in the code samples below and in step 4, both events funnel into the "startEverything()" function. I'll duscuss that function in the 5th step.
                   private function onInitialize():void { _listInitialized = true; startEverything(); }

  • Trying to understand Transferable

    Hello, I'm trying to write a drag-and-drop file uploading applet and am thus trying to understand the Transferable interface. I found some very clear source but no clear explanation of one point. I'm sure this information is commonly available; I apologize for being unable to find it and would appreciate a link.
    Running this code :
    public boolean importData(JComponent src, Transferable transferable) {
    println("Receiving data from " + src);
    println("Transferable object is: " + transferable);
    println("Valid data flavors: ");
    DataFlavor[] flavors = transferable.getTransferDataFlavors();
    DataFlavor listFlavor = null;
    DataFlavor objectFlavor = null;
    DataFlavor readerFlavor = null;
    int lastFlavor = flavors.length - 1;
    // Check the flavors and see if we find one we like.
    // If we do, save it.
    for (int f = 0; f <= lastFlavor; f++) {
    println(" " + flavors[f]);
    if (flavors[f].isFlavorJavaFileListType()) {
    listFlavor = flavors[f];
    if (flavors[f].isFlavorSerializedObjectType()) {
    objectFlavor = flavors[f];
    if (flavors[f].isRepresentationClassReader()) {
    readerFlavor = flavors[f];
    // Ok, now try to display the content of the drop.
    try {
    DataFlavor bestTextFlavor = DataFlavor.selectBestTextFlavor(flavors);
    BufferedReader br = null;
    String line = null;
    if (bestTextFlavor != null) {
    println("Best text flavor: " + bestTextFlavor.getMimeType());
    println("Content:");
    Reader r = bestTextFlavor.getReaderForText(transferable);
    br = new BufferedReader(r);
    line = br.readLine();
    while (line != null) {
    println(line);
    line = br.readLine();
    br.close();
    else if (listFlavor != null) {
    java.util.List list = (java.util.List)transferable.getTransferData(listFlavor);
    println( list + " Size " + list.size());
    else if (objectFlavor != null) {
    println("Data is a java object:\n" + transferable.getTransferData(objectFlavor));
    else if (readerFlavor != null) {
    println("Data is an InputStream:");
    br = new BufferedReader((Reader)transferable.getTransferData(readerFlavor));
    line = br.readLine();
    while (line != null) {
    println(line);
    br.close();
    else {
    // Don't know this flavor type yet...
    println("No text representation to show.");
    println("\n\n");
    catch (Exception e) {
    println("Caught exception decoding transfer:");
    println(e);
    return false;
    return true;
    which you'll agree is very clear, returns me a List of filepaths when I drop files on it. Perhaps naively, I was hoping to get the data itself.
    Obviously I can go the route of messing with security settings to allow the applet to open files (eeew) but I'm hoping the actual data is available from Transferable and I'm simply not understanding how to do it.
    Thanks for any tips.

    And don't forget to check this link:
    http://www.javaworld.com/jw-03-1999/dragndrop/jw-03-dragndrop.zip
    I think with few modifications you can get what you want.

  • Trying to understand what are the parameter/output From debug SNMP timers

    Hi All
    I am trying to understand what are the parameter/output
    From the debug SNMP timers
    Output SNMP timers :
    *Dec 31 11:56:27: SNMP: HC Timer 632DDE28 fired
    *Dec 31 11:56:27: SNMP: HC Timer 632DDE28 rearmed, delay = 5000
    *Dec 31 11:56:32: SNMP: HC Timer 632DDE28 fired
    *Dec 31 11:56:32: SNMP: HC Timer 632DDE28 rearmed, delay = 5000
    *Dec 31 11:56:37: SNMP: HC Timer 632DDE28 fired
    *Dec 31 11:56:37: SNMP: HC Timer 632DDE28 rearmed, delay = 5000
    *Dec 31 11:56:38: SNMP: HC Timer 70B54A70 fired
    *Dec 31 11:56:38: SNMP: HC Timer 70B54A70 rearmed, delay = 20000
    70B54A70 , 632DDE28 „² what this number means.
    5000 , 20000 „² why I have different delay time ( does it means that I have delay for SNMP request )

    The debug messages you are seeing are related to High-Capacity (HC) timers, which manage updates to 64-bit (HC) snmp counters as defined in RFC2233.
    The "fired" and "rearmed" messages indicate when each of these timers
    updates ("fired") the HC snmp counters, and when they should fire next
    (the "rearmed" messages). Higher speed interfaces require updates more often than lower speed interfaces, so you see two examples of that in your debug messages - 5000 ms updates vs 20000 ms update.
    The numbers that are in the messages (i.e. 632DDE28 ) are internal references to the timer that has fired.
    These messages do not indicate any delay in SNMP message processing, but normal SNMP operation of HC counters.

  • Trying to understand how MIDI Clock works in Logic

    Hi,
    I'm syncing a Roland MC-909 Groove Box with Logic.  I'm also using a MOTU MIDI Express interface.  The MC-909 syncs to Logic, thus it is in Slave mode. Under Preferences->Sync->MIDI Sync Project Settings, I've discovered something odd, and I'm trying to understand it.  It could be just a lack of understanding regarding the MIDI Spec.
    Under MIDI Clock, I necessarily need to set the destination to the MC-909.  I cannot use 'All'  or else the MIDI Express starts playing back at 8x the tempo set in Logic.  Not sure why this happens but its probably something weird with the MOTO interface.  Anyway in Logic, MIDI Time Code (MTC) is disabled, Song Position Pointer (SPP) is disabled, and MMC is disabled.
    So basically I'm only sending MIDI Clock to the MC-909.  Here's what is wierd:  As I locate to different places in the Arrange window (not in play mode), the MC-909 is locating to the correct time offset within the pattern!  This basically guarantees that you can start the Logic song anywhere, and the MC-909 will start playing back the pattern at the right time.  I don't understand how this can be happening given that I've disabled SPP in Logic.  The only sync communication between Logic and the MC-909 is MIDI Clock, but I don't believe that MIDI Clock is even capable of transmitting offset information that specifies the time-offset into a drum machine pattern, Does it?  Or is Logic sending SPP info as I click on different locations in the Arrange window?
    Another point, is that if I select to transmit MIDI Clock to another device other than the MC-909, but still using the MOTU MIDI Express, then the MC-909 plays back synchronously (i.e. its getting MIDI Clock from Logic, even though Logic isn't sending MIDI Clock to the MIDI port connected to the MC-909), but it does not track the pattern offset described in the previous paragraph.  The only way I can get the pattern offset to work, is if I select the MIDI Clock to be sent to the MIDI port connected to the MC-909.
    I would like to figure this out because I'm thiinking about buying an external MIDI synchronizer, but I don't want to lose the ability to have logic specify the offset into the pattern on the MC-909
    Thanks,

    Hi,
    I'm syncing a Roland MC-909 Groove Box with Logic.  I'm also using a MOTU MIDI Express interface.  The MC-909 syncs to Logic, thus it is in Slave mode. Under Preferences->Sync->MIDI Sync Project Settings, I've discovered something odd, and I'm trying to understand it.  It could be just a lack of understanding regarding the MIDI Spec.
    Under MIDI Clock, I necessarily need to set the destination to the MC-909.  I cannot use 'All'  or else the MIDI Express starts playing back at 8x the tempo set in Logic.  Not sure why this happens but its probably something weird with the MOTO interface.  Anyway in Logic, MIDI Time Code (MTC) is disabled, Song Position Pointer (SPP) is disabled, and MMC is disabled.
    So basically I'm only sending MIDI Clock to the MC-909.  Here's what is wierd:  As I locate to different places in the Arrange window (not in play mode), the MC-909 is locating to the correct time offset within the pattern!  This basically guarantees that you can start the Logic song anywhere, and the MC-909 will start playing back the pattern at the right time.  I don't understand how this can be happening given that I've disabled SPP in Logic.  The only sync communication between Logic and the MC-909 is MIDI Clock, but I don't believe that MIDI Clock is even capable of transmitting offset information that specifies the time-offset into a drum machine pattern, Does it?  Or is Logic sending SPP info as I click on different locations in the Arrange window?
    Another point, is that if I select to transmit MIDI Clock to another device other than the MC-909, but still using the MOTU MIDI Express, then the MC-909 plays back synchronously (i.e. its getting MIDI Clock from Logic, even though Logic isn't sending MIDI Clock to the MIDI port connected to the MC-909), but it does not track the pattern offset described in the previous paragraph.  The only way I can get the pattern offset to work, is if I select the MIDI Clock to be sent to the MIDI port connected to the MC-909.
    I would like to figure this out because I'm thiinking about buying an external MIDI synchronizer, but I don't want to lose the ability to have logic specify the offset into the pattern on the MC-909
    Thanks,

  • Trying to understand HD speed ...

    Hi,
    I am trying to understand what is the real life speed of a hard drive.  I understand that a specific hard drive is limited by it's own specifications (RPM and buffer), by the interface it connects with (SATA 1, 2 or 3), by the enclosure's interface (USB 2 or 3, etc ...), by the computer's interface (USB 2 or 3, etc ...) and also probably by the cable it connects with.  
    Sellers publications and specifications seems so complicated for the newbee.  How can even a diligent customer understand and find it's way in this sea of often contradicting informations ?
    I bought a Samsung 1TB HN-M101MBB 2.5" drive.  You can read the specs here.  With the speed specifications in mind, what should be the real life speed I can max out from this wired drive if all connections, interfaces and cables are «the best in the west» ? 
    Media to Buffer is slow (18MBps) and Buffer to Host is 300MBps.  How can I estimate the maximum speed of this drive just by reading the specs ?  I know I can test the drive's speed with some software like Disk Speed Test and Aja, but since my own configuration is probably limiting the drives output,  I wanted to read what the forum's wisdom would estimate. 
    Thanks in advance.

    You won't really be able to figure out real transfer rates from mfgrs. specs. You need to look at sites that test drives like Tom's Hardware report or AnandTech. Google will be a major help.
    The closest you can come to any speed estimation for an external is the speed of the port. If a Firewire port has a transfer rating of 800 Mb/s or 100 MB//s, then data goes no faster than that but more likely will be slower.

  • Trying to understand Android OS updates delays

    This is not another hate mail, it´s more about trying to understand the facts and motives regarding the OS updates (or lack of).
    Hopefully this material will arrive at someone from Sony with enough power to do something about it.
    Ever since I can remember, Sony has been THE brand for electronics. I can´t remember a TV or VCR in my house that it wasn´t Sony, and they lasted for LOTS of years.
    When a couple years ago I finally had the money (and the need) for a Smartphone, i chose the X10 Mini, which is a great little phone from a great brand, but it´s stuck at Android 2.1... which makes it a crippled android nowadays...
    It really bothered me the lack of OS updates, so I chose to buy a Galaxy Nexus, but it´s really expensive in my country. So my second option was a Galaxy Ace 2, but they haven´t arrived to my country yet, so I went with my third option: Xperia Sola, knowing beforehand that it´s a great phone, a great brand, but I might get slow OS updates.
    I bought it about 10 days ago when I saw they were starting to roll out the updates.
    10 days later I still don´t have my update. And not only that, but I don´t see much light at the end of the tunnel...
    I found a thread with the SI numbers that were updated, and there were a bunch on Oct 1, another bunch on Oct 4, and one code on Oct 8, and no other update since...
    I also read that those who did get the update, were having bugs with the OS, and also found threads from other Xperia models, whose updates began rolling 3 months ago, and there is still people who hasn´t gotten the update...
    As a customer, and a owner/CEO of a small company, I have a really hard time understanding how a HUGE company like Sony can be making such mistakes...
    I have been thinking objective reasons, and I can only think of one. I know it´s a wild guess, but I´m starting to think that our salvation might be the very thing that means our condemnation: CYANOGENMOD!!!
    Think about it: Why would Sony spend more money hiring twice as much programmers, when they can make only one update per phone, and sit down and see how CM releases begin to appear, for all tastes and needs. And... IT´s FREE!!!
    Also, if there is a software related problem (way more likely than a hardware problem), then the CM developers take the fall, instead of Sony. And I´m beginning to see custom OS installers that are more user friendly, so it might be something that they take in accout when neglecting OS updates.
    If that´s the line Sony is following, it´s a very risky move and it won´t work. Sony Mobile will crash and burn, but it´s still a better business plan that "let´s get lazy and make ULTRA slow updates so we don´t spend a lot of money programming".
    If you can´t afford more programmers, stop including so much bells and whistles and make your OS near vanilla. Include a couple of Xperia menus, a custom theme and voila!
    The main reason I wanted the Galaxy Nexus is Vanilla OS, which means inmediate OS updates. Sony on the other hand, takes a year or two to release it after its launch. If they release it at all...
    Another though...  why not stop making that many different phones! Really! There are like 5 Xperia models i can´t tell one from the other... even with specs side by side!
    You are trying to make too many phones and you are failing with all of them! (Software and software updates are also part of the phone, one of the most importants...)
    I know hiring programmers is expensive, but you are sacrificing one of the most expensive values for a company EVER: Customer credibility! Which as you know better than me, takes years to create.
    If Apple had problems with carriers and code aprooving and stuff, they might get away with it, becouse they alone have all the devices. If iOS 6 is delayed a few months, it´s delayed for everyone, and besides Apple fanboys rarely complain about Mac products, but Android is a more independent and educated market.
    I´m not saying that Apple users are ignorant, not at all, but I´m pretty sure most iPhone owners don´t even know what processor or how much RAM their phone has. They just "swallow" the Apple Way of Life. (it´s a good phone becouse Apple says so).
    The Android user on the other side, because of the fragmentation of the market, has many brands and models to choose from. An Android user about to buy a new phone will most likely go online looking for different models, specs, reviews in webs and forums...etc.
    You can´t say "I don´t know how HTC and other companies get their updates so soon, but we take a lot more becouse Google and the Operators must aproove the code.", because there are many other brands that have exactly the same difficulties or more, since they are smaller, and we can SEE online that they are indeed delivering solid and relativly fast updates.
    Did we miss something? Does HTC use Witchcraft to get their code aprooved?
    My underlying point is this: You are getting lazy... VERY lazy with software programming for your phones, and WE KNOW IT!
    It´s not the "difficulties" you claim, becouse every brand has those difficulties.
    This isn´t 1999 you know. We are in the information age. If you lie to us and tell us that your phones have the latest OS, I can go online and see that you don´t (Hello!!!). If I see that the company lies to it´s customers, I will stop buying their products. If I´m so dissapointed with how Sony handles OS updates and their customers queries about it, then I want for the first time ever to sell my Cell Phone becouse I´m not happy with it, or the brand behind it.
    We also live in the "Here and now" age. You can´t expect your customers to read about new Android releases on news and blogs, and wait YEARS with arms crossed waiting for their update... The world doesn´t work like that. Not anymore at least...
    It´s not a matter of how many recources you have, it´s about how you use and balance them. GIVE MORE IMPORTANCE TO SOFTWARE UPDATES! IT´S WAY MORE IMPORTANT THAT YOU THINK! LISTEN TO YOUR CUSTOMERS!!!
    You guys are Sony are smart and design great products, but you are not GOD! You are not our wife, no one has sworn alliagence to you.
    If you stop giving us good products and start lying to us, we hate you and stop giving you our money. Simple as that.
    My sola is beatiful, I love the design, the screen, the hardware... but it hasn´t been updated yet to 4.0, not to mention 4.1, which REALLY is the latest version... so stop advertising that your phones have the latest Android OS, unless you want angry customers switching to other companies, which you are getting.
    I also read some stories that Androind 4.0 was announced for the Xperia PLAY, and then it was called off... Do you have any idea how pissed I would be and ripped off I would be if I bought my phone based in that information and then you say it won´t be available?
    Well, actually right now my possition is worse, since you SAY you will update my phone, but you don´t say when, and I read online about people still not getting their updates months after the rollout started, so I´m in the limbo right now...
    As a company, one of the worse things you can do is calling your customers stupid, and when I see the answers you give in this forum, then I feel insulted. I feel like they are talking to an idiot or ignorant person with the so called "diplomatic" answers, which are basicly empty excuses for not doing your job right.
    You gave us the frikking CDs, DVDs and Blu-Rays!!! Don´t tell us you can´t tweak an already built OS in a year!
    I really hope you change their OS update policies really soon, before you lose the already small cellphone market share you have, or at least change your P.R. and C.M. policies towards a more open one.
    We all are humans and make mistakes, but we customers really appreciate honesty and truth.
    Have an open conversation with your customers! Don´t lie about your shortcomings! Accept then and ask the community to help you solve them, ask them what they biggest problems are, what features are most important to them, how often do they expect updates... LISTEN TO THEM!!
    "Succes is a meneace. It tricks smart people into thinking they can´t lose."
    Ps: Nothing personal with the mods from this forum, I´m not killing the messenger, I know that you can ONLY give the info you are allowed to give, and even if you wanted, you probably don´t know the answers yourself, since you work in the Communications department, not Developement or anything technical, and if you can't give any given info, then they probably won´t give it to you either... My message is to the company as a whole. I just hope you will be a good messenger and give this to whoever needs to read it.

    My bad, it´s closer to 40 the number of phones released hehe
    I know it´s all about money, and I know Sony is obligated to neglect users who haven´t given them money after an x ammount of time. However, it´s not a matter of making the phones obsolete earlier, so the users want to buy a new phone faster and therefore getting more money.
    A person will buy a new phone when he/she has the money to do so and wants to do so.
    It´s not a matter of WHEN. It´s a matter of WHAT.
    The question is not "When will that user buy a new phone?", but rather "When that user buys a new phone, whenever that is, what phone will it be?"
    I have a love/hate relationship with Apple. I would never use a iPhone. I would love having any Mac, if someone gives it to me, but I would never spend my harn earned dollars on such an overpriced piece of hardware over general principals.
    However, i do recognice that Steve Jobs was a business genius. Weather you like or love his ideas and methods, he turned a garage project into the biggest company in the world, with a market value higher than Exxon with 1/3 of it´s assets.
    Apple is a money making machine, and that is where the "hate" part of my relationship comes from.
    However, it surprised me a lot to see that they released iOS 6 for the iPhone 3GS, released in 2008!
    That get´s you thinking, that inside all that "SELL NOW" culture Apple is, they also support their older devices that people bought years ago but can't buy a new phone now. However, when they can do it, it will surely be another iPhone. Because they FEEL that the company listens and cares for them.
    Also if you jump from iOS 6 on the 3 GS to a brand new iPhone 5, the transition will be virtually non-existant, except for Siri and a couple of features.
    However jumping from Android 1.5 or 2.1 to Jelly Bean, might not be so easy on some users, making them more likely to give iPhone a shot.
    Since they have to adapt to another phone anyway, they might as well try the apple...
    And for old users, it gives people a sense of continuity and care about the user. Otherwise we feel like being kicked out of a restaurant right after we payed the bill.

  • Trying to understand OIM - Please help

    Hello All,
    I am pretty new to OIM, just trying to understand how OIM works. For the past 4 years I was in Sun IdM and planning to switch over to OIM.
    I read some documentation, I think OIM will perform basic provisioning and it contains out of box connectors to do basic provisoning. I have some questions can anybody please help
    - Sun IdM uses Express language to develop custom workflows or forms, in OIM to develop workflows which language did you use, is it Java or any other language?
    - If I want to provision users on AS/400, HP Open VMS or AIX systems, how can I do that I don't see any out of box connectors for these resources, so in order to integrate these resources do we need to write our own custom connectors?
    - If the out of box connector does not support a specific function on a resource what are the options do we have? for example if the AD connector does not support to delete the exchange mailbox, how your going to perform this in OIM? Do we need to write a Java code for this?
    - How much Java coding is necessary in OIM?
    - Is OIM supports role based provisioning?
    Please share any information.
    Thanks in advance.

    Sun IdM uses Express language to develop custom workflows or forms, in OIM to develop workflows which language did you use, is it Java or any other language?
    - JAVA
    If I want to provision users on AS/400, HP Open VMS or AIX systems, how can I do that I don't see any out of box connectors for these resources, so in order to integrate these resources do we need to write our own custom connectors?
    - If OOTB connectors are not available then you'll have build you own connector as per Target Resource.
    If the out of box connector does not support a specific function on a resource what are the options do we have?
    - You'll have customize their connector as per your requirements or write your own
    How much Java coding is necessary in OIM?
    - We can't calculate how much java. It's totally depends on requirements how much code you'll ahve to write. But everything will be done using Java only.
    - Is OIM supports role based provisioning?
    Here Group represent Role. At a small scale it supports. But for large scale you'll have to use Oracle Role Manager as you do in Sun Role Manager.

  • Trying to understand, being prompted the file compression rules on saving, or not

    Hello,
    I'm trying to understand something, could I ask for your help, please ?
    After working on a jpg file, when I want to save it, still as jpg, with my Photoshop CS5,
    - sometimes photoshop will just save the picture, and it's done
    - sometimes photoshop will show me the compression dialog, "JPEG Options", in which I can choose the compression ratio, the format options (baseline, baseline optimized, progressive), and have an estimation of the total file size
    While not being prompted any dialog is simpler, and I'll then simply assume Photoshop decides to retain the current image's compression and format rules, I must say I like to be in control, and I'd like to know under what form the file is being saved without having to resort to the much more complex "Save For Web" menu.
    Please, would you know WHAT "triggers" the appearance of the JPEG Options when we close/save a jpeg file, in photoshop ? What makes this menu not to appear, what makes it appear ?
    If there are trivial file operations/changes/filters that necessarily trigger its appearance when we want to save, something like that ? I've tried a variety of these, but I still can't figure it out, sometimes it shows in the end, and sometimes it doesn't.
    Thank you very much if you can help me
    Kind regards,
    Oliver

    @ c.pfaffenbichler
    These are images from various sources, not just one.
    I'm deliberately excluding Save For Web, this completely re-processes everything.
    My purpose, precisely, is to know when photoshop takes the decision to retain the image's "rules", and when photoshop decides to pose us the question, how do we want it saved.
    Simply taking a jpeg image, doing stuff on it, and hitting control-w to close the window, and seeing if it will be an
    - «OK, sure, do you want to save ? You clicked OK to confirm you wanted the changes saved ? Good, now it's closed» or a
    - «please sir, how would you like your image saved, tell me the compression ratio and the format options, thank you»

  • UTL_HTTP.end_of_body Exception Error.  Trying to Understand the Reason Why?

    I have the following PLSQL Function that returns a End_of_body Error. This started when we migrated from 10g to 11g. It is simple enough to capture so the error does not stop the Function Flow, but the error causes the OCI driver in OBIEE to error, which prevents the use of OBIEE IBOT to execute. Trying to understand why this error is occurring..not sure if we have a permissions issue on the UTL_HTTP Package or what?
    Anyone seen this problem in 11g? Suggests on resolving would be great. Thanks.
    FUNCTION AA_DEMO_PO_WSDL(IN_MESSAGE IN VARCHAR2)
    RETURN VARCHAR IS
    soap_request varchar2(30000);
    soap_respond varchar2(30000);
    http_req utl_http.req;
    http_resp utl_http.resp;
    launch_url varchar2(240) ;
    o_message varchar2(240) ;
    po_amount number := 2000 ;
    total_calls number := 0;
    cursor c_PO_exists is Cursor Logic..
    begin
    total_calls := 0;
    For po_wsdl in c_PO_exists
    LOOP
    total_calls := total_calls + 1;
    soap_request:='<?xml version="1.0" encoding="UTF-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header/>
    <soap:Body xmlns:ns1="http://xmlns.oracle.com/PurchaseOrder_Approval">
    <ns1:ProcessRequest><ns1:input>PO' || po_wsdl.order_no || '</ns1:input></ns1:ProcessRequest>
    </soap:Body>
    </soap:Envelope>';
    Begin
    http_req:= utl_http.begin_request('myURL/PurchaseOrder_Approval/1.0','POST','HTTP/1.1');
    utl_http.set_header(http_req, 'Content-Type', 'text/xml') ;
    utl_http.set_header(http_req, 'Content-Length', length(soap_request)) ;
    utl_http.set_header(http_req, 'SOAPAction', 'initiate');
    utl_http.write_text(http_req, soap_request) ;
    http_resp:= utl_http.get_response(http_req) ;
    utl_http.read_text(http_resp, soap_respond) ;
    utl_http.end_response(http_resp) ;
    Exception
    WHEN UTL_HTTP.end_of_body THEN
    utl_http.end_response(http_resp);
    When utl_http.too_many_requests then
    utl_http.end_response(http_resp);
    o_message := 'End_Reponse' || ' from proc.';
    when OTHERS then
    o_message := SQLERRM || ' from proc.';
    return o_message;
    end;
    END LOOP;
    Return 'Workflow Initiated-' ||to_char(total_calls);
    end AA_DEMO_PO_WSDL;

    Hi, thanks,
    it is oracle10g,
    The Exception is : ORA-29266: end-of-body reached
    ORA-06512: at "SYS.UTL_HTTP", line 1349
    then the line in my function ,
    damorgan wrote:
    But I do note that when I do this I always do a get_header_count and get_header before get_read.what get_read , u mean?
    thanks for the link ,
    appreciated

  • I am trying to understand the licensing procedures for using tabKiller for 3.5.7 firefox. Who should I contact for this? I do not see any customer service phone number for Firefox

    I am trying to understand the licensing procedures for using tabKiller for 3.5.7 firefox. Who should I contact for this? I do not have the customer service phone number for Firefox

    Tab Killer is not created by Mozilla, it is created by a private individual who has made it available at no cost for other people to use.

  • [SOLVED] Trying to understand the "size on disk" concept

    Hi all,
    I was trying to understand the difference between "size" and "size on disk".
    A google search gave plenty of results and I thought I got a clear idea about
    it.. All data is stored in small chunks of a fixed size depending on the
    filesystem and the last chunk is going to have some wasted space which
    will *have* to be allocated.. Thus the extra space on disk.
    However I'm still confused.. When I look at my home folder, the size on disk
    is more than 320 GB, where as my partition is actually less than 80 GB, so
    I guess I'm missing something.. Could somebody explain to me what does
    320 GB of 'size on disk' means?
    Thanks a lot in advance..
    Last edited by geo909 (2011-12-15 23:17:25)

    Hi all,
    Thank you for your replies.. My file manager is indeed pcman fm and
    indeed it seems to be an issue.. In b4data's link the last post reads:
    B-Con wrote:
    FWIW, I found the problem. (This bug is still persistent in v0.9.9.)
    My (new) PCManFM bug report is here: http://sourceforge.net/tracker/index.ph … tid=801864
    I submitted a potential patch here: http://sourceforge.net/tracker/?func=de … tid=801866
    Bottom line is that the file's block size and block count data from the file's inode wasn't being interpreted and used properly. The bug is in PCManFM, not any dependent libraries. Details are in the bug report.
    Since PCManFM is highly used by the Arch community, I figured I should post an update here so that there's some record of it in our community. Hopefully this gets addressed by the developer(s) relatively soon. :-)
    I guess that pretty much explains things.. And I think I did understand the 'size on disk' concept
    anyway
    Thanks again!
    Last edited by geo909 (2011-12-15 23:17:10)

  • Trying to understand the sound system

    Here's my problem. My mic didn't work (neither the front mic nor the line-in in the rear), so after some research and trial and error I found that if I do
    modprobe soundcore
    my mic works on both the jacks
    But here's where my confusion lies. This is the output of lsmod |grep snd before probing explicitly for soundcore
    [inxs ~ ]$ lsmod |grep snd
    snd_hda_codec_analog 78696 1
    snd_hda_intel 22122 1
    snd_hda_codec 77927 2 snd_hda_codec_analog,snd_hda_intel
    snd_hwdep 6325 1 snd_hda_codec
    snd_pcm_oss 38818 0
    snd_pcm 73856 3 snd_hda_intel,snd_hda_codec,snd_pcm_oss
    snd_timer 19416 1 snd_pcm
    snd_page_alloc 7121 2 snd_hda_intel,snd_pcm
    snd_mixer_oss 15275 2 snd_pcm_oss
    snd 57786 8 snd_hda_codec_analog,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm_oss,snd_pcm,snd_timer,snd_mixer_oss
    soundcore 6146 2 snd
    [inxs ~ ]$
    So as you can see, soundcore's already loaded, so why do I have to explicitly load it again to get the mic to work?
    Once I add soundcore to my MODULES array and reboot, the lsmod output is also the same as above.
    So my question is -- what does the explicit loading of soundcore do, that is not done by auto-loading of that module?

    Oh... since your topic is Trying to understand the sound system, that puts you (and me) inside the whole world's population... chuckle. But I thought I'd pass along a document written by probably "The" main ALSA developer that I totally stumbled across just 3 days ago.
    Go here:
    http://kernel.org/pub/linux/kernel/people/tiwai/docs/
    and download the flavor of your choice of the "HD-Audio" document, or simply view it online. It documents the deepest dive into the current ALSA snd_hda_* layers and issues that I've found to date (but still leaves me wanting).
    Why that document isn't plastered across the interwebs is beyond me. I only get 11 hits when I search for it... such are the secrets of the ALSA world I guess.
    Last edited by pigiron (2011-08-26 18:26:48)

  • Trying to understand the MODEL clause

    Hi All,
    I'm finally biting the bullet and learning how to use the model clause, but I'm having a bit of trouble.
    The following example data comes from a book "Advanced CQL Functions in Oracle 10g".
    with sales1 as (select 'blueberries' product
                          ,'pensacola' location
                          ,9000 amount
                          ,2001 year
                      from dual
                    union all
                    select 'cotton', 'pensacola',16000,2001 from dual
                    union all
                    select 'lumber','pensacola',3500,2001 from dual
                    union all
                    select 'cotton','mobile',24000,2001 from dual
                    union all
                    select 'lumber', 'mobile',2800,2001 from dual
                    union all
                    select 'plastic','mobile',32000,2001 from dual
                    union all
                    select 'blueberries','pensacola',9000,2002 from dual
                    union all
                    select 'cotton', 'pensacola',16000,2002 from dual
                    union all
                    select 'lumber','pensacola',3500,2002 from dual
                    union all
                    select 'cotton','mobile',24000,2002 from dual
                    union all
                    select 'lumber', 'mobile',2800,2002 from dual
                    union all
                    select 'plastic','mobile',32000,2002 from dual
                    union all
                    select 'blueberries','pensacola',9000,2003 from dual
                    union all
                    select 'cotton', 'pensacola',16000,2003 from dual
                    union all
                    select 'lumber','pensacola',3500,2003 from dual
                    union all
                    select 'cotton','mobile',24000,2003 from dual
                    union all
                    select 'lumber', 'mobile',2800,2003 from dual
                    union all
                    select 'plastic','mobile',32000,2003 from dual
    select location, product, year, s
    from sales1
    model
    --return updated rows
    partition by (product)
    dimension by (location,year)
    measures (amount s) ignore nav
    (s['pensacola',2003] = sum(s)['pensacola',cv() > cv()-1])I would have expected the measures clause to return the sum of all amounts for pensacola where the year > 2003 - 1 = 2002. which would make the total for [blueberries,2003] = 1800, but instead it comes out as 27000, apparently summing all values for blueberries for that partition.... equivalent to sum(s)['pensacola',ANY].
    how would I go about making s['pensacola',2003] = the sum of itself plus the previous row?
    I realise I can do
    s['pensacola',cv()]+s['pensacola',cv()-1]but I'm really trying to understand why what I have doesn't appear to work the way I expect.

    Because
    (s['pensacola',2003] = sum(s)['pensacola',cv() > cv()-1])
    means
    (s['pensacola',2003] = sum(s)['pensacola',cv(year) > cv(year)-1])
    means
    (s['pensacola',2003] = sum(s)['pensacola',2003 > 2003-1])
    means
    (s['pensacola',2003] = sum(s)['pensacola',2003 > 2002])
    means
    (s['pensacola',2003] = sum(s)['pensacola',year is any])
    s['pensacola',cv()]+s['pensacola',cv()-1]
    means
    sum(s)['pensacola',year between cv()-1 and cv()]

Maybe you are looking for

  • Adobe Bridge Freezes While Previewing Animation Presets

    Hello I know this question has been asked several times over, but I do not have a resolution so I thought would ask again.  Like the previous posts, when I browse presets from the Effects and Animations menu, Adobe Bridge opens.  I can scroll through

  • E-E gain doesn't match playback gain

    Hi, Since this message concerns the little USB sound device, the "Soundblaster MP3+", it probably wouldn't usually be discussed in this forum, but my question is quite technical in nature and I need to be talking to people who know what a dB is, so h

  • HDD vs. HDV capturing.  What produces better quality

    I currently shoot for content in SD on mini DV tapes. I want to upgrade to a camera with either a 3 ccd or ? I have read alot about what is available but i am very confussed as to what format or camera I should purchase. I want to stay in the afforda

  • Second AE for a PC

    So, I have one AE as my Ethernet connected router. I can stream music through it to a pair of computer speakers using airplay from my touch and iPad...Horray !!! Now it's time to set up the second AE for my Hometheater using another AE. I'm just as p

  • I found a battery fix for iOS 5

    I upgraded my ipone 4 to ios5 and had the same issue.  I did the same thing everybody did and turned all the cool fetures off, I even went to apple.  I could litterally watch the batter drop.  I started looking again and found a new feature on ios 5