There's no "right" way to represent something in XML, it depends on your application's context. In some contexts, it may be perfectly valid to have different data types for utterance_in_a_state_of_speechlessness and utterance_in_a_state_of_happiness. I may have two different classes for representing UtteranceInAStateOfSpeechlessness and UtteranceInAStateOfHappiness (both inheriting from the Utterance base class) with different attributes specific to each type of utterance, and want them to be deserialized from XML to the right class. Or I may want spechlessness utterances to initiate a process that attempts to resolve the speechlessness problem, while happiness utterances are simply logged in a database (for the purpose of generating a monthly report of hapiness utterances) and acknowledged.
Don't try to be too generic for your context, it would lead to: <message>
<event>Utterance</event>
<eventParam name="state">Speechlessness</eventParam> </message>, which would be the XML equivalent of having a std::vector<void *> (a typed container that holds untyped values). If that's then submitted to a generic DoAnything web service, it would then mean your web service will contain code to route that message to the right place, instead of letting the programming language/web server/integration engine route the request to the right class/orchestration based on method name and data type.
It's fine to try to be as generic as possible, but the right balance between genericity and specificity is different from one context to another. So my idea of having two different data types for different states of utterances may just be additional overhead for some contexts, and then you would be right to have a generic Utterance class with a state and no subclasses.
Not exactly 270mbps, but very high speed. Videotron offer a residential 5mbit and 10mbps service (asynchronous - upload is around 1mbps). Both use the same technology and infrastructure, probably with some form of traffic shaping to limit bandwidth to what the customer is paying for. If I remember correctly, 10 mbit is an artificial limitation, the existing infrastructure between the ISP and homes allows for much greater speeds (maybe not 270 mbps, but high enough to make 270mbps seem trivial). This allows them to also provide digital TV and VOIP services without degrading Internet performance, all on the same cable TV connection.
Both their services ("haute vitesse" and "haute vitesse extrême") are under $60 per month.
However, if you're looking for 1.5 mbit *upload*, then these services won't give you that (again, the technology is there but is traffic shaped according to what you're paying).
Also, as others have pointed out, the article was not accurate: the technology allows 270mbps within the limits of the house LAN, not 270mbps from the ISP to the home. Again, I fail to see what's impressive in this, it has been possible for years using 100 mbps or 1gbps ethernet.
As for inconvient GC cycles, that is the programmers fault. You have to do your own GC when you think you have time.
Programmers are not supposed to manage garbage collection themselves :
Calling System.gc() explicitly can actually decrease performance and is not recommended.
JVMs even have a -XX:+DisableExplicitGC flag to allow system administrators to workaround code that mistakenly assumes calling System.gc will help performance.
Setting all references to null after they are not used is also not necessary in many cases. For temporary objects, or local variables, setting unused reference to null won't improve GC at all, because memory is freed when the garbage collector is running, not as soon as the reference is set to null. It is only in long lived objects that it is important to set a reference to null when it is not useful anymore (otherwise it causes a leak)
For caching data, a cache could manage memory itself, for example by clearing automatically the least recently used entries. Or it could let the garbage collector manage it itself entirely, by storing soft or weak references to the cached data.
A JVM is highly optimized, and therefore it is often better to let it decide when to do garbage collector than to try to manage it in the code.
However, if the JVM makes the wrong decisions (for example if it causes unacceptable application freezes), it can be tuned to make better decisions in the future. Several startup flags exist to control the garbage collector's behavior (for example change the frequency of collections, use parallel or concurrent GC algorithms, tune the memory reserved for the different GC generations).
These startup options allows the programmers (or system administrator) much more control over performance than optimization they can do in their code.
The JVM will only GC when its full...
Not exactly true, the JVM will separate memory in different GC generations and collect each of these generations when it is full. Objects that survive collection in a generation will be moved to the next generation. Objects that survive up to the last generation (old) are likely be permanent objects that are required for the application to run. Therefore, garbage collection on the old generation runs much less frequently than on younger generation, but takes longer to run. If too many objects survive up to this generation, it can also be an indication of a memory leak or a need for optimizing memory usage. The visualgc tool can be used to monitor the different generation's memory usages on Sun JVMs.
This works fine for starting cmd.exe, but not some GUI parts of the operating system. Starting explorer.exe with runas will not work because another instance of it is already started. This makes it impossible to start the control panel as an administrator with runas.
Other GUI applications work fine using runas, but I've never been able to use anything dependent on explorer.exe with it (making runas close to useless)
What's wrong with explicitly stating what encoding your page is written in and expect the browser to adjust its interpretation in consequence?
In XML, you can specify this on the ?xml processing instruction:
<?xml version="1.0" encoding="utf-8"?>
In HTML, the Content-Type header, or the equivalent meta tag can be used :
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
This allows the text file writer to write an human readable text file (as long as he's using a text editor that's able to recognize these ways of specifying the encoding).
While french is still more or less readable when accented characters are replaced by the named entities, other languages such as japanese, greek or arabic will be extremely hard to read in a plain text editor.
Using text with entity references instead of the corresponding characters in applications is also very likely to break some functionality. For example, if you store a person's title as "président" instead of "président" in a database field, you will break search and ordering functionality, and artificially inflate the string's length (a problem if the field is defined as VARCHAR(10)).
In that case, why didn't they simply advertise that the default renting period has been extended from 1 to 7 days? They could also advertise a "convert a rental to a sale" service, where you only pay the difference between the total price and the original rental price. No misinterpratation possible, and it would even attract new customers (those who like to preview movies before buying them, but don't like paying $5 once to rent it, and another $20 to buy it).
Copyright infringement for threatening kazaa users. Wtf, do they own a patent for "A method for threatening customers, allowing the sales of inferior quality products to the scared to the death victims" ?
That's a wonderful idea. The movie industry is loosing billions every year because of critics who destroy their business model of selling totally crappy movies by revealing to everyone the movie is crap. They'll never be able to make money if everyone knows in advance that the movie is not worth seeing. The fact that a movie is crap should be confidential information that can only be acquired at the cost a movie ticket. We have to stop these critic thieves before they destroy Hollywood!
They have a right to be upset. They also have a right to deny you access to their private lab for whatever reason they judge appropriate because it is their private property. However, they don't have a right to get you arrested just because you brought a camera.
With most browsers, if you "Save as" an HTML page the browser will make local copies of all images/stylesheets/etc linked in the document and link to these local copies instead of those on real server. You can also accomplish something similar with wget. I prefer this to PDF versions for archival, HTML files are much easier to manipulate. Personnaly, I'm annoyed when I'm looking for some information an it's only available as PDF.
I'm really tired of seing the media nailing down Jean Chretien just to pave the way for Paul Martin's coup d'etat. What do you blame Chretien for? What has he done so bad to make the media brainwash us to think Paul Martin's undemocratic takeover is perfectly correct? Is it because Chretien's is not enough Bush's puppet? Please enlighten me.
The truth is that you can represent anything using XML, it is a very simple standard and allows you to define any document structure you like, as long as you follow some basic rules to allow it to be parsed by XML parsers. Having XML as a data format does not make it any easier to open a XML document with a MS Word schema in an application that only knows the OpenOffice schema, it only allows it to parse it an consistant way, but once it's parsed, the application still has to interpret it, it's not interpreted by magic.
What MS did was to make it's own DTD/Schema to represent office documents in perfectly legal XML.
a Vector can contain anything, which means type errors that can't be catched at runtime but with a Vector, the compiler will make sure that the Vector will never contain anything else than strings.
The must obvious problem is that programmers are still using low level languages (C) to do high level stuff. Why would you need low level access to the hardware in a program that takes a shell's input/output streams, encrypts it and transmits it over a network? Languages like Java would do that job as well, with similar performance (excluding startup time, which is negligible for daemon applications). Bugs like buffer overflows or memory allocation/deallocation errors can't be exploited in Java applications the same way as in C applications (unless the JVM itself which is written in a lower level, less safe language, has such a bug).
As long as unsafe languages will be used where they are not needed, bugs like these will continue to be discovered frequently.
String a = "very long string"; String b = a.substring(0,1)
a != b but a.value == b.value (a private char[] buffer that contains a representation of both strings somewhere in it)
a.offset = 0, a.length = 16
b.offset = 0, b.length = 1
So even if the garbage collector gets rid of a, it won't get rid of a.value because it is still referenced by b, which means a 1 char string will use 16 bytes in memory instead of 1
To avoid this mistake, you would have to do
String b = new String(a.substring(0,1))
if you intend to keep b in memory much longer than a
There's no "right" way to represent something in XML, it depends on your application's context. In some contexts, it may be perfectly valid to have different data types for utterance_in_a_state_of_speechlessness and utterance_in_a_state_of_happiness. I may have two different classes for representing UtteranceInAStateOfSpeechlessness and UtteranceInAStateOfHappiness (both inheriting from the Utterance base class) with different attributes specific to each type of utterance, and want them to be deserialized from XML to the right class. Or I may want spechlessness utterances to initiate a process that attempts to resolve the speechlessness problem, while happiness utterances are simply logged in a database (for the purpose of generating a monthly report of hapiness utterances) and acknowledged.
Don't try to be too generic for your context, it would lead to:
<message>
<event>Utterance</event>
<eventParam name="state">Speechlessness</eventParam>
</message>,
which would be the XML equivalent of having a std::vector<void *> (a typed container that holds untyped values). If that's then submitted to a generic DoAnything web service, it would then mean your web service will contain code to route that message to the right place, instead of letting the programming language/web server/integration engine route the request to the right class/orchestration based on method name and data type.
It's fine to try to be as generic as possible, but the right balance between genericity and specificity is different from one context to another. So my idea of having two different data types for different states of utterances may just be additional overhead for some contexts, and then you would be right to have a generic Utterance class with a state and no subclasses.
Yes that's a known issue. A workaround is to fly up there with your flying car instead.
Not exactly 270mbps, but very high speed. Videotron offer a residential 5mbit and 10mbps service (asynchronous - upload is around 1mbps). Both use the same technology and infrastructure, probably with some form of traffic shaping to limit bandwidth to what the customer is paying for.
If I remember correctly, 10 mbit is an artificial limitation, the existing infrastructure between the ISP and homes allows for much greater speeds (maybe not 270 mbps, but high enough to make 270mbps seem trivial). This allows them to also provide digital TV and VOIP services without degrading Internet performance, all on the same cable TV connection.
Both their services ("haute vitesse" and "haute vitesse extrême") are under $60 per month.
However, if you're looking for 1.5 mbit *upload*, then these services won't give you that (again, the technology is there but is traffic shaped according to what you're paying).
Also, as others have pointed out, the article was not accurate: the technology allows 270mbps within the limits of the house LAN, not 270mbps from the ISP to the home. Again, I fail to see what's impressive in this, it has been possible for years using 100 mbps or 1gbps ethernet.
Here in Montreal, Canada, this has been available for at least 10 years (since 1996 or even earlier).
As for inconvient GC cycles, that is the programmers fault. You have to do your own GC when you think you have time.
Programmers are not supposed to manage garbage collection themselves :- Calling System.gc() explicitly can actually decrease performance and is not recommended.
JVMs even have a -XX:+DisableExplicitGC flag to allow system administrators to workaround code that mistakenly assumes calling System.gc will help performance.
- Setting all references to null after they are not used is also not necessary in many cases. For temporary objects, or local variables, setting unused reference to null won't improve GC at all, because memory is freed when the garbage collector is running, not as soon as the reference is set to null. It is only in long lived objects that it is important to set a reference to null when it is not useful anymore (otherwise it causes a leak)
- For caching data, a cache could manage memory itself, for example by clearing automatically the least recently used entries. Or it could let the garbage collector manage it itself entirely, by storing soft or weak references to the cached data.
A JVM is highly optimized, and therefore it is often better to let it decide when to do garbage collector than to try to manage it in the code. However, if the JVM makes the wrong decisions (for example if it causes unacceptable application freezes), it can be tuned to make better decisions in the future. Several startup flags exist to control the garbage collector's behavior (for example change the frequency of collections, use parallel or concurrent GC algorithms, tune the memory reserved for the different GC generations). These startup options allows the programmers (or system administrator) much more control over performance than optimization they can do in their code.The JVM will only GC when its full...
Not exactly true, the JVM will separate memory in different GC generations and collect each of these generations when it is full. Objects that survive collection in a generation will be moved to the next generation. Objects that survive up to the last generation (old) are likely be permanent objects that are required for the application to run. Therefore, garbage collection on the old generation runs much less frequently than on younger generation, but takes longer to run. If too many objects survive up to this generation, it can also be an indication of a memory leak or a need for optimizing memory usage. The visualgc tool can be used to monitor the different generation's memory usages on Sun JVMs.
This works fine for starting cmd.exe, but not some GUI parts of the operating system. Starting explorer.exe with runas will not work because another instance of it is already started. This makes it impossible to start the control panel as an administrator with runas.
Other GUI applications work fine using runas, but I've never been able to use anything dependent on explorer.exe with it (making runas close to useless)
What's wrong with explicitly stating what encoding your page is written in and expect the browser to adjust its interpretation in consequence?
In XML, you can specify this on the ?xml processing instruction: <?xml version="1.0" encoding="utf-8"?>
In HTML, the Content-Type header, or the equivalent meta tag can be used : <META http-equiv="Content-Type" content="text/html; charset=utf-8">
This allows the text file writer to write an human readable text file (as long as he's using a text editor that's able to recognize these ways of specifying the encoding).
While french is still more or less readable when accented characters are replaced by the named entities, other languages such as japanese, greek or arabic will be extremely hard to read in a plain text editor.
Using text with entity references instead of the corresponding characters in applications is also very likely to break some functionality. For example, if you store a person's title as "président" instead of "président" in a database field, you will break search and ordering functionality, and artificially inflate the string's length (a problem if the field is defined as VARCHAR(10)).
In that case, why didn't they simply advertise that the default renting period has been extended from 1 to 7 days? They could also advertise a "convert a rental to a sale" service, where you only pay the difference between the total price and the original rental price. No misinterpratation possible, and it would even attract new customers (those who like to preview movies before buying them, but don't like paying $5 once to rent it, and another $20 to buy it).
Copyright infringement for threatening kazaa users. Wtf, do they own a patent for "A method for threatening customers, allowing the sales of inferior quality products to the scared to the death victims" ?
Why not just store it as XML?
0 03</date:year>e >
<birthdate>
<date:date xmlns:date="http://www.w3.org/2004/dml/">
<date:year type="relative" reference="http://members.aol.com/JesusImages/">2
<date:month>12</date:month>
<date:dayOfMonth>21</date:dayOfMonth>
</birthdat
That's a wonderful idea. The movie industry is loosing billions every year because of critics who destroy their business model of selling totally crappy movies by revealing to everyone the movie is crap. They'll never be able to make money if everyone knows in advance that the movie is not worth seeing. The fact that a movie is crap should be confidential information that can only be acquired at the cost a movie ticket. We have to stop these critic thieves before they destroy Hollywood!
They have a right to be upset. They also have a right to deny you access to their private lab for whatever reason they judge appropriate because it is their private property. However, they don't have a right to get you arrested just because you brought a camera.
With most browsers, if you "Save as" an HTML page the browser will make local copies of all images/stylesheets/etc linked in the document and link to these local copies instead of those on real server. You can also accomplish something similar with wget. I prefer this to PDF versions for archival, HTML files are much easier to manipulate. Personnaly, I'm annoyed when I'm looking for some information an it's only available as PDF.
I'm really tired of seing the media nailing down Jean Chretien just to pave the way for Paul Martin's coup d'etat. What do you blame Chretien for? What has he done so bad to make the media brainwash us to think Paul Martin's undemocratic takeover is perfectly correct? Is it because Chretien's is not enough Bush's puppet? Please enlighten me.
The truth is that you can represent anything using XML, it is a very simple standard and allows you to define any document structure you like, as long as you follow some basic rules to allow it to be parsed by XML parsers. Having XML as a data format does not make it any easier to open a XML document with a MS Word schema in an application that only knows the OpenOffice schema, it only allows it to parse it an consistant way, but once it's parsed, the application still has to interpret it, it's not interpreted by magic.
What MS did was to make it's own DTD/Schema to represent office documents in perfectly legal XML.
I meant a Vector<String> will never contain anything else than strings, but it was interpreted as an html tag even if I was in plain old text mode.
...which will make typing even stronger
a Vector can contain anything, which means type errors that can't be catched at runtime but with a Vector, the compiler will make sure that the Vector will never contain anything else than strings.
We, for one, welcome our new Slashdot overlords
The must obvious problem is that programmers are still using low level languages (C) to do high level stuff. Why would you need low level access to the hardware in a program that takes a shell's input/output streams, encrypts it and transmits it over a network? Languages like Java would do that job as well, with similar performance (excluding startup time, which is negligible for daemon applications). Bugs like buffer overflows or memory allocation/deallocation errors can't be exploited in Java applications the same way as in C applications (unless the JVM itself which is written in a lower level, less safe language, has such a bug).
As long as unsafe languages will be used where they are not needed, bugs like these will continue to be discovered frequently.
tnohgit on cnn: trertsrois use bad sleglnpi to tdare inurctntosis for biunlidg wpanoes of msas dseurnticot by eiaml!
which means IPv6 exists outside the limits of normal time, explaining why it's taking so long to get implemented
10^80 is expontentially greater than 2^128...
10^80 = 1.0e+80
2^128 = 3.4e+38
If you want something near 10^80 using 2 as a base, you would need 266 bits:
2^266 = 1.19e+80
but if you do...
a != b but a.value == b.value (a private char[] buffer that contains a representation of both strings somewhere in it)
a.offset = 0, a.length = 16
b.offset = 0, b.length = 1
So even if the garbage collector gets rid of a, it won't get rid of a.value because it is still referenced by b, which means a 1 char string will use 16 bytes in memory instead of 1
To avoid this mistake, you would have to doif you intend to keep b in memory much longer than awhat will happen to the mozilla mail client?