Or if you never delete the full contents of your
drive - which most people likely won't.
It still holds for most cases: You'll copy a bunch of data to the drive over time, and some of it will be deleted, but most of the time a lot of the data you accumulate will be data that you'll keep around for the lifetime of the drive.
Which equals less deletion that allocation...
Perhaps not as significant as the original poster
thinks, but his claim still holds true for most users.
More significant, I'd assume, is that a lot of deletion often is maintenance that won't take place during peak usage of the system, and that
often may just be left running in the background,
to complete whenever it completes.
Allocation is
in many applications much more time critical, as
allocation is mostly done by applications that the users of the system are much more likely to care
about performance for.
I can assure you that whatever the quality of
Reiserfs, it beats ext2fs hands down in the cases
it's designed to handle particularly well: Large (huge) directories and small files. The company I work for operate a mail server for about 1.1 million people, and we have quite a few million files, of an average size of less than one kilobyte (we're using maildir format for the accounts, and also store a lot of small XML objects as separate files for each user), and some of our directories has tens of thousands of entries.
Running something like that on ext2fs would (apart from the agony of fsck'ing 800GB of storage) be completely hopeless.
When it comes to setups with a few large files, though, the advantage isn't that great, and the numbers in the article makes reasonable sense.
Reiserfs should be your filesystem of choice if:
a) you want to be able to put gazillions of files in a single directory when there is no logical hierarchy to the data (our tests indicate that Reiserfs handles shallow directory hierarchies with many files pr. directory faster than the opposite), and b) you want to be able to efficiently store a 100 byte file when grouping
your data logically would give you file sizes of that magnitude, instead of grouping many pieces of data together.
We've been running Reiserfs for well over a year now, and it works great. It's important that you
keep up to date on bugfixes, though, and that you're very careful about your recovery procedures - reiserfsck is really a last resort, and you should always ensure you copy
out as much as possible of any data on a damaged
volume, and preferrably take a raw copy of the entire volume, before running it. That said, I
wouldn't hesitate to recommend Reiserfs to
anyone with the specific needs I mentioned above.
If you "speak up" on your behalf, and try to
restrict how they use the information without
any other pressure on them, they'll just refuse
your loan application.
If you really believe that you'd manage to go through life without giving out your personal
details, you obviously haven't been around a lot.
In many countries you wouldn't even be able to get a place to live (whether buy or rent) without
giving away extensive amounts of information.
These privacy laws doesn't restrict anyones ability to give your information away, it forces them to ask for your permission - putting the power back into the hands of the people, as opposed to in the hands of large corporates.
Does that mean that you are opposed to forcing companies to inform you of health riscs with their products too? (After all, you could just go to them and tell them that either they do that, or you won't buy their products) Or to take any health precautions when producing their goods? (After all, you do ask in the store whether the food you are buying could contain any dangerous chemicals, don't you?)
If you really believe that consumer boycotts generally work, you're one of the most naive persons I've encountered.
First of all it has nothing to do with IP packets, but with restriction of transfer (whether over the internet, on paper or however you want to transfer it) of personal data. If you do it, and get caught, you risk heavy fines and jail time.
Second, the reason it is directed at the US in particular is that the US has virtually no privacy protection whatsoever, and is one of the worst countries in the world when it comes to privacy protection. Coincidentally it is also one of EUs most important trade partners, and therefore EUs privacy laws would be more or less worthless without making sure that personal data isn't transported to the US without binding contracts to ensure the US recipient of personal data doesn't abuse it.
Any non-EU based website can collect information from EU citizens without being affected.
Also, any non-EU data can be transported into the EU without problems.
The issue arrives when an EU based business collects and processes personal information in the EU, in which case that data can't be exported to a country without adequate privacy protection without the recipient adhering to the safe harbor principles.
Safe harbor in effect requires the recipient to abide by the same restrictions outside the EU as an EU based company would have to inside the EU, including not transferring the personal data received from the EU to any recipient in a country without adequate protection unless the recipient complies with the safe harbor provisions.
In other words: If personal data has been collected and processed in the EU, it will have to continue to be treated according to EU law, or laws that are practically equivalent, no matter where the data is actually moved.
Yes you may have a choice in the first step. But without the privacy laws that EU, and most of non-EU member European states have you have no control over what happens to that information once you've given it away.
What if you give your data to your bank because you're applying for a loan? Should the bank be free to sell that data without letting you know, or asking for your approval?
That is what the EU privacy laws prevents. A company can't collect personal data, whether they are giving a good, trustworthy, valid reason or not, and give or sell or do anythign with it, unless they've received your consent for that specific use.
There's so many valid recipients of personal data out there, that keeping your data to yourself isn't an option for most people.
If they know and don't care, it wouldn't hurt you
to tell them how you would use the information,
and obtain their express approval, in which case you could use the data the way you wanted.
The EU privacy laws doesn't stop you from doing nasty things with private citizens personal data, it prevents you from doing it without their knowing consent.
This is completely bullshit. This has nothing to do with data in general, but with EU companies exporting privacy protected personal data (like your address, social security numbers or equivalent, bank information, e-mail address, telephone number etc.) without your expressed consent.
I'm not a lawyer, but my company has been looking
extensively into this, and I believe the following
should reflect current EU law reasonably well:
Sites not situated in the EU, or that have a substantial presence outside the EU and process
and perhaps also collects, the data outside the
EU (a EU citizen accessing thei EU based companys
website run and operated in the US, for instance),
will not be directly affected.
Further, private citizens sending their information out of the EU can continue doing so.
Companies sending private EU citizens information
out of the EU to a company voluntarily complying
with EU's "safe harbor" rules (applies for the US
and other countries with crappy privacy protections), or that have adequate privacy laws (applies for instance to Norway, which has always had strict privacy laws, and have harmonized their laws with EUs as a member of the European Economic Area) are still allowed to do so without
any more restrictions than what they are bound with for use within the EU.
I also believe that companies that do give customers a real choice to opt in or out of transmission of their data abroad to a non-safe harbor complying company, and inform their customers of the consequences of letting their
data be transmitted can do so. I haven't verified
that, however, so if you plan on doing so and
you're in the EU, check with your lawyer, and don't blame me.
The whole point of the law is to require the companies to get consent and force them to
provide information on where they got the personal
information about someone, if that can be reasonably achieved (and it can if they have bought the data), and what they plan to do with it.
And to ensure that the consumer can require the data to be corrected in the case of mistakes, or deleted provided it is legal for the company to do so and there's no contractual obligation on the person the data is about to let them maintain
it.
ObDisclaimer: Don't do this at home. Check with your lawyer if you're a company that plan on exporting personal data from the EU. Not doing so can jeopardize the companys financial health, and possibly result in a prison sentence for you.
A nice troll... But the equivalent of SGML and DTDs would be XML and DTDs or XML and schemas.
All the other stuff you mention provides extra functionality that you don't need to do the same
stuff you can do with SGML and DTDs. In fact XML + schemas already provides lots of useful validation of the structure that you won't get with SGML + DTDs.
Thanks to the simplicity of XML it got the widespread usage that SGML never managed, which is what have resulted in all the other stuff you mention: Standards that, if it weren't for the popularity of XML most likely would have been represented in tons of disparate representations, instead of using XML as the common representation.
With XML schemas too, now you'll be able to properly validate documents for a lot of the standards you mention without writing a separate validator - just specify the types with a schema.
Eh.. No. You need a parser to handle Schemas just as much as you need it for DTDs, and just as DTD parsers to a large extent is built into many modern XML parsers, expect schema parsing to be too. Also, XSL still adds tons of code.
The advantage doesn't come in the need for or reduced need for parsers, but in that schemas can specify the structure of an XML document with much more detail than a DTD can. As for XSL, I don't like it at all - it's a lot more complex that needed.
Trademark law specifies that you lose trademark protection if you don't defend your mark. Copyright law does no such thing.
However it is
conceivable that a lawyer could argue that if you knew about a violation of copyright, and the person violating your copyright knew you knew without doing anything about it, and this happens over an extended period of time, the fact that you did not do anything could indicate an implied agreement of some form.
If that could be successful? Who knows. I certainly don't (I'm not a lawyer), but I'm sure someone will try it at some point (or already have).
You're right. It is because of the multi-lingual domains. To allow "seamless" interoperation with the current DNS system, and applications not prepared for multi-lingual domains, the current
proposal encodes the multilingual names into ASCII, and then prepend two letters followed by two hyphens so that applications that does handle multilingual domains can recognize it.
Only one combination of characters will likely be used, but since the encoding etc. isn't finalized, they don't want people to speculate in, and more importantly don't want registrars to start offering, domains based on a pure gamble that the encoding won't change.
You are WRONG. The Data Protection Act, and the EU directive it's based on prevents any UK or EU based company that gathers and processes personal information in the EU to export it to any company that doesn't guarantee the same privacy protections of the data (the so-called "safe harbor" agreement that was created to prevent the EU from outlawing transfers of personal data to the US outright) that the EU based company is legally bound to offer, or to
publish that data without your expressed, voluntary approval.
It does not in any way make it illegal or prevent you as a private citizen to transmit your own personal data to a non-complying company outside the EU.
In effect it's a protection for EU citizens to ensure that their personal details are subject to
privacy protections, and that a company can't force you to sign away those rights, and that you have to give your permission for them to be able to give your infor to anyone who might misuse the information (such as US companies that couldn't care less about your privacy).
The company you worked for could simply have made it voluntary for any London employee to connect directly to a webserver in the US or whatever, and leave their information there, and it would be perfectly legal for the US arm of the company to use it.
(Ob disclaimer: I'm not a lawyer. An allthough I have been dealing with these issues a lot lately,
I'm not guaranteeing anything;)
There are several log structured filesystems that does this already. Some are very efficient for
current data. And the cool part is that "rollback" to any point in time can be done by just ignoring data written after that point in time when reading from the filesystem. Deletion, however, is as you write very important to make possible.
... allthough experimental, and only for computer
science material that is freely available via the web anyway. But it's a great example of what can be done if the material is available via the web,
and to me at least Research Index has been an invaluable resource.
The source for the system is even available (though restricted).
The only thing it really lacks is a feed of articles from assorted print media, in addition to what it robot indexes from the web.
If you're doing computer science work, you should really take a look at it. And if you're not, but are interested in seeing a good stab at automatic indexing and archival of material, go look anyway.
The problem with this method is that it doesn't only require you to find a set of coordinates and a resolution, but to find a set of coordinates and resolution that can be expressed in less space than the original data.
Which may work for some input sets, but can't possibly work for all input sets. If you believe it can, imagine this scenario: I take an arbitrarily sized block, and compress it. Then I compress the result. I keep going until the data set is one bit. No matter how large your decoder, how would you decode more than two states from one bit?
You can't.
The tradeoff for all lossless compression for "generic" data, is to find an algorithm that compresses well for a reasonable set of inputs.
For it to be impossible to predict the next digit,to be generated, that digit needs to be totally random and chosen without any relation to the preceeding digits. If that is true, then any digit can follow any digit with the same probability, otherwise you would be able to make predictions better than pure chance by looking at the preceeding digit.
In any sequence of n digits, where every digit is choosen totally on random, every sequence of n digits are just as likely to occur. That means that 0,0,0,0,0 is just as likely as 5,2,7,3,1, or
any other sequence of the same number of digit chosen.
If you're given a sequence of 10.000 digits, that are totally random, and you get to look at the first 9.999 of them, and they are all zero, the chance is still just 1 in 10 that the final digit is zero.
A number isn't random in itself, it is random if it is chosen at random. You may confuse random numbers with numbers such as Pi, which aren't chosen at random, and thus aren't random
numbers, but where you can't predict digit n+1
by looking at any of the digits 1 to n, and where
there are no patterns. These numbers are transcendental numbers, not random.
Obviously, in this case, a randomly generated number isn't what one should be looking for, but a number where there are no patterns to be exploited.
The overhead for calling a virtual function in
C++ is only looking it up in the vtable of the
object. To emulate C++ virtual functions in C, just as a C++ compiler will implement it, you
could do as follows:
You add a "void * vtable" to your struct, fill it in with a pointer to a struct of pointers to functions related to the real "class" of your struct. Then you call the functions like this:
yourob->vtable[some_function_offset]()
Your overhead shouldn't be more than two indexed
array lookups over that of a normal function call.
In a building that tall you won't let all the lifts go from ground to the top. A lot of them will share the same ground space, but be limited to smaller ranges of floors, as a lot of the traffic will be between different floors in the building. Especially since this isn't intended as a purely residential building, but mixed with housing, businesses, even hospitals.
You're assuming they'll be pumping it all straight up, which would be ridiculous. First of all, for a building this tall, it would be natural to have several reservoirs placed in the building, and filling the lowest reservoir with one set of pumps, then pump from that one into the next one, and so on.
Second, since they plan on having lots of businesses and other support functions for the population, why not a resirculation plant as well?
If you've first moved that much water up there, why let people drop it down again in the sewer? Place a water resirculation plant or three in the building at different heights, and save on the amount of plumbing required to both pump water up and let sewage down. And it will reduce the pressure on their existing sewage treatment plants.
This is solving a fundamental infrastructure issue. China is still early on in its urbanization process - a process every developing country in history so far has gone through, or is in the process of going through.
This creates immense problems as the city populations are exploding, and basic things like handling transit systems, sewers, electricity and water become logistical nightmares. The more that can be done to push larger amounts of people into a smaller ground area frees up space that can be used for other things. Food production being an example that springs to mind.
You're assuming the building will only hold appartments, which is clearly not what the article says: They mention hospitals, shops, parks, etc. Basically, the complete works of support services for 100.000 people. Now, are you suggesting that 10 billion pounds is that expensive for more or less building a city suitable for 100.000 residents? Because that's essentially the suggestion.
Once you start factoring in all the businesses, it starts to make a lot more sense. Also, you need to take into account any economical advantages gained by using less ground space. China for instance does not have much arable land. And as mentioned in the article, the growth estimates for Shanghai is horrendous, and the cost of building infrastructure and allocating land to handling the influx of new inhabitants may very well be a lot
higher than building a few towers of this size.
This is ridiculous, and shows a total lack of understanding of both communism and socialism.
First of all, there is no such thing as a communist state - the term is an oxymoron. According to Marx, the state exists only as a tool of class oppression, and hence a socialist revolution is a revolution where the working classes take the power from the capitalist classes and use the state power to oppress the capitalists, and gradually nationalise the means of productions.
The end result is supposed to be a system where
the state withers away (Lenins "State and Revolution" goes into detail on this process), as
the capitalist class at a certain point cease to exist as the only way the capitalists will be able to sustain themselves is to become part of the working classes.
Only from the point where the class struggle end, and indeed the entire system of economic classes seize to exist, and with it the state itself as a political power, can the government be said to be communist as defined by Marx and Lenin.
Not even the current Chinese leadership or the old Soviet leadership claimed that their countries are/were communist, but that they are socialist.
Even that is a dubious claim at best, unless you start redefining the terms.
Further, I disagree with you that the "left and right" switch sides. Normally, yes, you have a period of counterrevolutionary activity after any revolution, where the class losing the revolution attempts to reassert its power. However, after a while, the "normal" pattern reemerges and the political left is again the center of revolutionary activity.
It still holds for most cases: You'll copy a bunch of data to the drive over time, and some of it will be deleted, but most of the time a lot of the data you accumulate will be data that you'll keep around for the lifetime of the drive.
Which equals less deletion that allocation...
Perhaps not as significant as the original poster thinks, but his claim still holds true for most users.
More significant, I'd assume, is that a lot of deletion often is maintenance that won't take place during peak usage of the system, and that often may just be left running in the background, to complete whenever it completes.
Allocation is in many applications much more time critical, as allocation is mostly done by applications that the users of the system are much more likely to care about performance for.
Running something like that on ext2fs would (apart from the agony of fsck'ing 800GB of storage) be completely hopeless.
When it comes to setups with a few large files, though, the advantage isn't that great, and the numbers in the article makes reasonable sense.
Reiserfs should be your filesystem of choice if: a) you want to be able to put gazillions of files in a single directory when there is no logical hierarchy to the data (our tests indicate that Reiserfs handles shallow directory hierarchies with many files pr. directory faster than the opposite), and b) you want to be able to efficiently store a 100 byte file when grouping your data logically would give you file sizes of that magnitude, instead of grouping many pieces of data together.
We've been running Reiserfs for well over a year now, and it works great. It's important that you keep up to date on bugfixes, though, and that you're very careful about your recovery procedures - reiserfsck is really a last resort, and you should always ensure you copy out as much as possible of any data on a damaged volume, and preferrably take a raw copy of the entire volume, before running it. That said, I wouldn't hesitate to recommend Reiserfs to anyone with the specific needs I mentioned above.
If you really believe that you'd manage to go through life without giving out your personal details, you obviously haven't been around a lot.
In many countries you wouldn't even be able to get a place to live (whether buy or rent) without giving away extensive amounts of information.
These privacy laws doesn't restrict anyones ability to give your information away, it forces them to ask for your permission - putting the power back into the hands of the people, as opposed to in the hands of large corporates.
Does that mean that you are opposed to forcing companies to inform you of health riscs with their products too? (After all, you could just go to them and tell them that either they do that, or you won't buy their products) Or to take any health precautions when producing their goods? (After all, you do ask in the store whether the food you are buying could contain any dangerous chemicals, don't you?)
If you really believe that consumer boycotts generally work, you're one of the most naive persons I've encountered.
Second, the reason it is directed at the US in particular is that the US has virtually no privacy protection whatsoever, and is one of the worst countries in the world when it comes to privacy protection. Coincidentally it is also one of EUs most important trade partners, and therefore EUs privacy laws would be more or less worthless without making sure that personal data isn't transported to the US without binding contracts to ensure the US recipient of personal data doesn't abuse it.
Any non-EU based website can collect information from EU citizens without being affected.
Also, any non-EU data can be transported into the EU without problems.
The issue arrives when an EU based business collects and processes personal information in the EU, in which case that data can't be exported to a country without adequate privacy protection without the recipient adhering to the safe harbor principles.
Safe harbor in effect requires the recipient to abide by the same restrictions outside the EU as an EU based company would have to inside the EU, including not transferring the personal data received from the EU to any recipient in a country without adequate protection unless the recipient complies with the safe harbor provisions.
In other words: If personal data has been collected and processed in the EU, it will have to continue to be treated according to EU law, or laws that are practically equivalent, no matter where the data is actually moved.
What if you give your data to your bank because you're applying for a loan? Should the bank be free to sell that data without letting you know, or asking for your approval?
That is what the EU privacy laws prevents. A company can't collect personal data, whether they are giving a good, trustworthy, valid reason or not, and give or sell or do anythign with it, unless they've received your consent for that specific use.
There's so many valid recipients of personal data out there, that keeping your data to yourself isn't an option for most people.
The EU privacy laws doesn't stop you from doing nasty things with private citizens personal data, it prevents you from doing it without their knowing consent.
Sites not situated in the EU, or that have a substantial presence outside the EU and process and perhaps also collects, the data outside the EU (a EU citizen accessing thei EU based companys website run and operated in the US, for instance), will not be directly affected.
Further, private citizens sending their information out of the EU can continue doing so.
Companies sending private EU citizens information out of the EU to a company voluntarily complying with EU's "safe harbor" rules (applies for the US and other countries with crappy privacy protections), or that have adequate privacy laws (applies for instance to Norway, which has always had strict privacy laws, and have harmonized their laws with EUs as a member of the European Economic Area) are still allowed to do so without any more restrictions than what they are bound with for use within the EU.
I also believe that companies that do give customers a real choice to opt in or out of transmission of their data abroad to a non-safe harbor complying company, and inform their customers of the consequences of letting their data be transmitted can do so. I haven't verified that, however, so if you plan on doing so and you're in the EU, check with your lawyer, and don't blame me.
The whole point of the law is to require the companies to get consent and force them to provide information on where they got the personal information about someone, if that can be reasonably achieved (and it can if they have bought the data), and what they plan to do with it.
And to ensure that the consumer can require the data to be corrected in the case of mistakes, or deleted provided it is legal for the company to do so and there's no contractual obligation on the person the data is about to let them maintain it.
ObDisclaimer: Don't do this at home. Check with your lawyer if you're a company that plan on exporting personal data from the EU. Not doing so can jeopardize the companys financial health, and possibly result in a prison sentence for you.
All the other stuff you mention provides extra functionality that you don't need to do the same stuff you can do with SGML and DTDs. In fact XML + schemas already provides lots of useful validation of the structure that you won't get with SGML + DTDs.
Thanks to the simplicity of XML it got the widespread usage that SGML never managed, which is what have resulted in all the other stuff you mention: Standards that, if it weren't for the popularity of XML most likely would have been represented in tons of disparate representations, instead of using XML as the common representation.
With XML schemas too, now you'll be able to properly validate documents for a lot of the standards you mention without writing a separate validator - just specify the types with a schema.
The advantage doesn't come in the need for or reduced need for parsers, but in that schemas can specify the structure of an XML document with much more detail than a DTD can. As for XSL, I don't like it at all - it's a lot more complex that needed.
However it is conceivable that a lawyer could argue that if you knew about a violation of copyright, and the person violating your copyright knew you knew without doing anything about it, and this happens over an extended period of time, the fact that you did not do anything could indicate an implied agreement of some form.
If that could be successful? Who knows. I certainly don't (I'm not a lawyer), but I'm sure someone will try it at some point (or already have).
Only one combination of characters will likely be used, but since the encoding etc. isn't finalized, they don't want people to speculate in, and more importantly don't want registrars to start offering, domains based on a pure gamble that the encoding won't change.
It does not in any way make it illegal or prevent you as a private citizen to transmit your own personal data to a non-complying company outside the EU.
In effect it's a protection for EU citizens to ensure that their personal details are subject to privacy protections, and that a company can't force you to sign away those rights, and that you have to give your permission for them to be able to give your infor to anyone who might misuse the information (such as US companies that couldn't care less about your privacy).
The company you worked for could simply have made it voluntary for any London employee to connect directly to a webserver in the US or whatever, and leave their information there, and it would be perfectly legal for the US arm of the company to use it.
(Ob disclaimer: I'm not a lawyer. An allthough I have been dealing with these issues a lot lately, I'm not guaranteeing anything;)
There are several log structured filesystems that does this already. Some are very efficient for current data. And the cool part is that "rollback" to any point in time can be done by just ignoring data written after that point in time when reading from the filesystem. Deletion, however, is as you write very important to make possible.
The source for the system is even available (though restricted).
The only thing it really lacks is a feed of articles from assorted print media, in addition to what it robot indexes from the web.
If you're doing computer science work, you should really take a look at it. And if you're not, but are interested in seeing a good stab at automatic indexing and archival of material, go look anyway.
Which may work for some input sets, but can't possibly work for all input sets. If you believe it can, imagine this scenario: I take an arbitrarily sized block, and compress it. Then I compress the result. I keep going until the data set is one bit. No matter how large your decoder, how would you decode more than two states from one bit?
You can't.
The tradeoff for all lossless compression for "generic" data, is to find an algorithm that compresses well for a reasonable set of inputs.
For it to be impossible to predict the next digit,to be generated, that digit needs to be totally random and chosen without any relation to the preceeding digits. If that is true, then any digit can follow any digit with the same probability, otherwise you would be able to make predictions better than pure chance by looking at the preceeding digit.
In any sequence of n digits, where every digit is choosen totally on random, every sequence of n digits are just as likely to occur. That means that 0,0,0,0,0 is just as likely as 5,2,7,3,1, or any other sequence of the same number of digit chosen.
If you're given a sequence of 10.000 digits, that are totally random, and you get to look at the first 9.999 of them, and they are all zero, the chance is still just 1 in 10 that the final digit is zero.
A number isn't random in itself, it is random if it is chosen at random. You may confuse random numbers with numbers such as Pi, which aren't chosen at random, and thus aren't random numbers, but where you can't predict digit n+1 by looking at any of the digits 1 to n, and where there are no patterns. These numbers are transcendental numbers, not random.
Obviously, in this case, a randomly generated number isn't what one should be looking for, but a number where there are no patterns to be exploited.
You add a "void * vtable" to your struct, fill it in with a pointer to a struct of pointers to functions related to the real "class" of your struct. Then you call the functions like this: yourob->vtable[some_function_offset]()
Your overhead shouldn't be more than two indexed array lookups over that of a normal function call.
In a building that tall you won't let all the lifts go from ground to the top. A lot of them will share the same ground space, but be limited to smaller ranges of floors, as a lot of the traffic will be between different floors in the building. Especially since this isn't intended as a purely residential building, but mixed with housing, businesses, even hospitals.
Second, since they plan on having lots of businesses and other support functions for the population, why not a resirculation plant as well?
If you've first moved that much water up there, why let people drop it down again in the sewer? Place a water resirculation plant or three in the building at different heights, and save on the amount of plumbing required to both pump water up and let sewage down. And it will reduce the pressure on their existing sewage treatment plants.
This creates immense problems as the city populations are exploding, and basic things like handling transit systems, sewers, electricity and water become logistical nightmares. The more that can be done to push larger amounts of people into a smaller ground area frees up space that can be used for other things. Food production being an example that springs to mind.
Once you start factoring in all the businesses, it starts to make a lot more sense. Also, you need to take into account any economical advantages gained by using less ground space. China for instance does not have much arable land. And as mentioned in the article, the growth estimates for Shanghai is horrendous, and the cost of building infrastructure and allocating land to handling the influx of new inhabitants may very well be a lot higher than building a few towers of this size.
First of all, there is no such thing as a communist state - the term is an oxymoron. According to Marx, the state exists only as a tool of class oppression, and hence a socialist revolution is a revolution where the working classes take the power from the capitalist classes and use the state power to oppress the capitalists, and gradually nationalise the means of productions.
The end result is supposed to be a system where the state withers away (Lenins "State and Revolution" goes into detail on this process), as the capitalist class at a certain point cease to exist as the only way the capitalists will be able to sustain themselves is to become part of the working classes.
Only from the point where the class struggle end, and indeed the entire system of economic classes seize to exist, and with it the state itself as a political power, can the government be said to be communist as defined by Marx and Lenin.
Not even the current Chinese leadership or the old Soviet leadership claimed that their countries are/were communist, but that they are socialist.
Even that is a dubious claim at best, unless you start redefining the terms.
Further, I disagree with you that the "left and right" switch sides. Normally, yes, you have a period of counterrevolutionary activity after any revolution, where the class losing the revolution attempts to reassert its power. However, after a while, the "normal" pattern reemerges and the political left is again the center of revolutionary activity.
Also, note that they're not only supposed to have appartments for 100.000 people, but also services like hospitals, shops, offices etc..