back when I took software engineering the definition I was given for beta was: has major bugs but will not lose user data.
It sounds from the article like it doesn't lose data. The complaining users are saying things like this:
"This isn't a minor glitch, but a major problem. Barring erasing my drive and reinstalling OS X, I am stuck with an Apple laptop that only runs Windows," wrote a user. "I don't want solutions that entail using the command line. I would like something from Apple saying that they recognize the problem and are working on it."
There's no data loss here. He can restore the system using the commandline but won't because he refuses to learn. He shouldn't be using beta software.
Your college definition of beta is oversimplified, anyway:
Betas are released to a wider audience than alphas. The purpose is to find problems. If no one released a beta until they were absolutely confident there's no data loss, then no one would ever release a beta.
Sadly, some vendors release production versions of software which does destroy entire partitions. I'm still mad about Windows destroying my Linux partition. There's a known bug here. In fact, my situation was different than described, and Windows still destroyed my Linux partition!
skogs' post was just crazy. It was not a good representation of cultural relativism, so I'll play the Devil's Advocate and provide one.
Camel Pilot said, quoting Dawkins: Airplanes are built according to scientific principals and they work. [...] Airplanes built to tribal or mythological specifications such as the dummy planes of the Cargo cults in jungle clearings or the bees-waxed wings of Icaraus don't.
Absolutely. Few would question the West's dominance of exploration, travel, communication, science, engineering, medicine, and raw population growth.
But does that makes us great? Those are our metrics. Another culture might claim greatness due to peacefulness (lack of war and crime), happiness, lack of poverty, equal rights, harmony with nature, etc.
In this study (linked from "Clinical depression" on wikipedia), 4.4% of Americans vs. 1.0% of rural Taiwanese suffer from clinical depression. In Europe, it's much higher - 16.4% in Paris. The Middle East is higher still - Beirut, 19.0%. Let's disregard any potential problems with the study (sample size, etc.) and assume for the moment that it's accurate. Is this a fair way to judge a culture? Is the Middle East the worst, Europe slightly better, North America better, and the Far East the best?
How do you judge a culture? It ultimately comes down to your values, and those are set by your culture. So really, it's an unanswerable question.
I hope more people take the time to write to The City of Tuttle asking them to apologize. Dealing with people like this drains all motivation to get involved with projects like CentOS, so it's important to take care of this and prevent it from happening again.
Here's the email I just sent:
To: citymgr@cityoftuttle.org
CC: mayor@cityoftuttle.org
Subject: Apologize to CentOS
Mr. Taylor,
I'm writing in response to your recent letter to The Register [1]. I am appalled to learn of your continued hostility to the Johnny Hughes, the CentOS Team, and the open source community as a whole. I am a member of this community.
You wrote that you "only got help after threatening to contact the FBI" [2]. That's a misleading statement without also mentioning that you threatened to contact the FBI prior to describing the problem or asking for help. I quote from your initial email: "Please remove your software immediately before I report it to government officials!!"
Most organizations would have immediately directed you to their legal department and cut off all other contact. CentOS stuck with you through your lengthy email exchange and resolved your problem despite your threats and ingratitude. That shows a level of dedication and professionalism that you could never achieve. Even more so when you consider that they are volunteers and that you are not a paying customer. They are not obligated to help under even the best of circumstances.
After CentOS provided you with the publicity you welcomed, you apparently discovered that the open source community has no respect for those who abuse our movers and shakers. Realize that an apology is a necessary first step to repair the damage you have done to your city's reputation.
Silly! The only conclusion you can draw is that if you didn't experience the bone loss and muscle atrophy, then you didn't sleep with your head at the ass-end of the bed.
I see your logic and raise you reading comprehension. The grandparent asked:
Will you experience an increase in bone and muscle mass if you sleep with your head at the higher end?
That was not a conclusion; it was a question. And questions that can't be resolved with logic from existing evidence are still useful; further studies can be set up.
But bear in mind that the study wasn't just about sleeping in a head-lowered position; it was about lying around in that position for 17 days. It's reasonable to ask that if a head-raised position would be better than a level one, then, but I rather doubt it'd be better than actually moving about and exercising normally.
> > 40-ton, computer controlled stage with 17 elevators and the cast of 55
> My second thought was, "Hmmm. I wonder if they use MSWindows, on a wireless network?" It might be worth going to see after all.
Sadly, no. I went to see Cirque de Soleil's O. It was the eve of my sister's wedding, we all had third-row tickets (the first non-wet row), and we were excited to see it. 15 minutes after the show time, a sad-looking clown came out and told us that the show was cancelled! Their excuse was that they couldn't get their stage control computer to work. Presumably, they had a setup as you describe...
There's really no excuse for this in my mind. As packed as that place was, and as expensive as those tickets are, there had to be half a million dollars in ticket sales that show. They could have easily had a redundant setup. But instead, they didn't take a mission-critical system seriously, and so they cancelled!
I haven't gone to a Cirque de Soleil show since. How can I take them seriously when they don't understand that "the show must go on" and prepare accordingly?
[hprof] is slow. If you've spent any amount of time using hprof, then you know what I'm talking about!
That's true for the timing mode. The sampling mode is zippy. For most stuff that I do, it's good enough. It's generally pretty obvious which are blocking calls and which are actually using the CPU. Monitor contention can be a bit confusing sometimes, though - a relatively simple operation will have many, many samples because it's waiting on a monitor held by something more complex. This is good to show you that it's an important problem, but it doesn't make it obvious where to go to fix it.
...and I sometimes change the "5" as necessary. There's also a heap allocation mode that I haven't played with much, and something that shows you each monitor acquisition and deacquisition (which I think is too much information).
You can't start and stop it at runtime. If you've ever tried to profile a web application with hprof, you know what I'm talking about!
Yeah, but with the sampling mode, I find I can just leave it on all the time on my development system.
Filtering. hprof profiles everything and so it's slow and that output is expansive. When I'm profiling code, I want to know how my code is performing, not how some third party library is performing.
Why? I want to know if I should patch or replace a third-party library. I care about the performance of the whole system, not just the code I wrote.
For example, if you were to run cyrus-imapd and store all the mail as files on a filesystem, and then come up with any backup plan, it would be 10x easier to perform and backup/restore than with Exchange
Ugh, you picked the wrong day to say that. After my mailserver had weird problems over the weekend (of the 'Cyrus sucking down 100% CPU time in index_checkseen while making no system calls' variety), I ran a reconstruct...which took two and a half hours. (Thankfully, it did fix the problem.)
The episode was probably brought on by unusual circumstances - I have an ancient version of Cyrus imapd (2.0.16) and ran out of/var space last week - but it shows that Cyrus does indeed have giant databases that can complicate operation.
Install a bog-standard release from one of the Linux big boys, like RedHat or SuSE. And, very very importantly, DO NOT CUSTOMIZE IT. At most, supply loadable binary modules for any hardware that isn't standard, and that's all.
The goal would be to get RedHat or SuSE to do all the software support, right? Supplying binary modules is way too much customization for that plan to succeed. Those would taint the kernel, and no other vendor is going to support that.
> > On the whole, Christians don't threaten death to company executives or members of the press if they disagree with their opinions.
> On the whole, muslims don't, either.
It's hard for me to believe this is a minority view when prominent Islamic leaders call for executions over works of fiction. [1]
The West says this: "I disapprove of what you say, but I will defend to the death your right to say it"
Islam says this: "Every freedom has a limit. Freedom of religion as long as you don't disturb or harm others. Freedom of press as long as you don't offend others in such a manner." We call this guy reasonable because he isn't blowing up an embassy over a comic.
Where are the moderate or liberal voices of Islam?
Here's all I brought with me when I moved to California a year ago:
Pentium Pro 180 with Fedora Core 3. It was my everything server, but it's been off since moving.
Athlon 1GHz, with Fedora Core 3 and Windows XP. Was a desktop, now it's the everything server.
17" PowerBook 1GHz (personal laptop).
15" PowerBook 1.67GHz (work laptop).
Dell Axim X30 (PDA). Don't really use it.
You don't need so many servers for home! I can only think of a few reasons you need many servers at once:
You want to learn about high availability software.
You want to play with different OSs simultaneously.
You have different security domains.
You care enough about your data to do automated network backups to another machine. (rdiff-backup is cool!)
Though for full disclosure, I should admit that my home systems aren't the whole story. I have a real machine co-located in one data center and a virtual one co-located in another.
It's what most web people have been doing for years now anyways. using html, javascript and a server side scripting like PHP together to make a website.
in a way you could call slashdot a AJAX type of site.
You'd be wrong. I don't believe slashdot uses any Javascript, except maybe some ad stuff. And even if it did, that's not a good definition. The point of Ajax is updating the client's display with new data from the server without reloading the entire page. This is why Ajax is so trendy - these pages are more pleasant to use because they respond more quickly, and without unrelated parts of the display going away and coming back or causing everything to scroll away from what you were looking at.
Ajax accomplishes this with the XMLHttpRequest() object. (It's a misnomer - XML doesn't have to be involved at all.) It's just a way to issue a request and execute some code when it completes (by success, failure, or timeout). That code can update a status bar, add some text to the page, or do something more sophisticated.
Getting mail to to a WinCE PDA has always been easy. The standard technique was POP or IMAP over whatever Internet connection you can finagle (eg, GPRS). However that was always a pull technique and the thing about crackberry addicts is they want the mail to appear on their PDA as soon as it arrives at the mail server (push).
Why not use the IMAP4 IDLE command? This is the standard mechanism for making mail appear instantly over IMAP. Microsoft in this case writes both the client and the server, so they should be able to add support if it doesn't already exist.
Maybe there's some reason they want to avoid leaving TCP connections open? Do they have trouble maintaining connections as the devices move around, perhaps? Or is there some scalability limit on their server?
Or am i missing something and are OpenVZ and Xen very different products? (doesn't sound like it)
They have similar goals, but they're pretty different technically. For example, with Xen you have to partition the memory space quite rigidly - each virtual machine gets 128MB or whatever. They can't borrow from others memory that's not being used. So if you look at a Xen-based virtualization provider like RimuHosting, you'll see that their highest virtualized configuration gives you 320MB of memory. If you look at a Virtuozzo-based one like JohnCompanies, you'll see the other extreme:
That's one of the most obvious differences. Another is that Virtuozzo's rather customized kernel tends to lag behind - my virtual server is a 2.4 release that annoyingly lacks NPTL. I imagine that's what they're trying to address with OpenVZ and mainstream kernel inclusion.
(Incidentally, both the hosting companies I linked to are nice places with open source developer discounts.)
Re:Don't talk to me about Boost
on
Demise of C++?
·
· Score: 1
You're not good at listening, are you?
You wrote: However, if you *explicitly*
wrote a version of the algorithm for *every* type you wanted to sort
in C (which is what C++ templates do behind the scenes) you'd find it
would be just as fast. At the end of the day theres only so many ways
you can translate a sorting algorithm into assembler.
Do you think this counters my point? I wrote: while theoretically, you can write specialized sorts for every data type in C, no one ever does.
The point is that in C, that'd be such a pain that you wouldn't do it. In C++, you write it once and the compiler does the specialization for you. It's easier to be efficient, so you actually do it, so the language is faster.
while on paper interpeted languages like Perl, Python or Ruby should be slower (plenty of runtime type resolution, higher level constructs, etc), in practice things like memory pooling and sophisticated JIT-style interpreters means they are often faster than the equivalent application written in C or C++.
Umm, no. I love Python as much as the next guy, but I also know that it doesn't have a JIT compiler. Neither do Perl or Ruby. In fact, they're quite slow for many tasks. Parrot may bring these optimizations to these languages, but it hasn't yet.
If these languages are faster, it's because their extreme rapid development frees you up to think of better algorithms. I certainly had a couple cases recently in which the Python code I wrote was much better than it would have been in Java, C++, or C because it was so quick to go through several design iterations. In fact, even if I had determined in the end that Python was too slow, it would have saved a lot of development effort and yielded a better product to use it as a prototyping tool before moving to a faster language.
Notice that I stated SUPPORTS, not REQUIRES. A slight difference...
If you're going to nit-pick, look at the full sentence. What you said was this:
The difference between C and C++ is that C isn't object-oriented while C++ supports object-oriented design.
This is not the difference, and many people would say that it's not the most important difference - metaprogramming is. Agree or disagree, but don't just disregard what they're saying without comment.
Re:Don't talk to me about Boost
on
Demise of C++?
·
· Score: 1
> > "would be nearly impossible to duplicate in C with the same kind of efficiency"
> BS. Unless you think theres some sort of magical assembly language that
a C++ compiler can generate than a C compiled couldn't.
You could generate the same instructions in C, but you wouldn't. C++'s metaprogramming allows you to write code once yet specialize it for the best performance for each type. See this sorting comparison for an example. The C approach to genericizing code is to do extra work at run-time. The C++ approach is to do extra work at compile-time. In many cases (especially dealing with scientific stuff), that's much faster. So while theoretically, you can write specialized sorts for every data type in C, no one ever does. In C++, you don't even think about it.
Re:From my point of view
on
Demise of C++?
·
· Score: 4, Insightful
The difference between C and C++ is that C isn't object-oriented while C++ supports object-oriented design.
You're way off. So far that I'd say you've never read or written modern C++ code. There's a lot of metaprogramming. Look into templates sometime. Try out the STL and the boost libraries. There are significant C++ programs that are not object-oriented and would be nearly impossible to duplicate in C with the same kind of efficiency.
I find C++ to be an ugly, ugly language, but it's also a lot more than the "C + classes" that it used to be.
I said: Eclipse makes a mediocre text editor; they don't even have a hotkey for joining two adjacent lines together. ('J' in vim.)
An AC replied: How is pressing "end" "delete" that much more difficult than a single keystroke? The keys are right next to each other, and if you have fat fingers you can probably get them both in a single motion.
First, those are particularly bad keys. On a full-sized keyboard, they're not accessible without moving your hand. On my PowerBook, "delete" refers to the position you'd probably call "backspace"; the "delete" and "end" keys don't exist. "End" requires holding the function key (a kind of awkward wrist pivot and pinky stretch to the far lower-left corner) while hitting the right arrow (the far lower-right corner). The two lower corners are the suckiest keys on the keyboard.
Second, 'J' does more than that. It replaces the next newline and beginning whitespace with a single space. The closest equivalent is (with my emacs/mac bindings), command-E (go to end of line), option-F, option-F (go before next word), option-backspace, option-backspace, space. Six keys instead of one, and it took me a while to think over that sequence. Usually I go for the mouse, and slow down while trying to highlight an area precisely. 'Join lines' is much quicker, almost instinctive.
In fairness to Eclipse, it does have command-I, which will reformat the entire file or highlighted block. But that's kind of a shotgun approach. And while I think there are keys to highlight stuff (rather than using the mouse), I can never actually remember them.
Going further, I'd probably say you want to putter around with web applications
I'd say so, too.
(Tons of people out there doing PHP, etc, but I would stay on the Java side of the fence)
Dude, are you trying to crush his spirit? PHP has a poor community and lots of sloppy code. But Java's not great, either - it has a lot of massively overengineered frameworks that require a lot of "XML push-ups". It's not a bad language, but I haven't seen a combination of it and any web framework that I enjoy using.
I'd recommend Python (a refreshingly clean language) with Django or Ruby-on-Rails. Both very trendy, but more importantly, fun to code in.
I'd also steer away from Eclipse unless you're using Java. As the parent said, there is some support for other languages, but they haven't gotten the same attention, and more dynamic languages are harder to do tricky IDE things with anyway. Eclipse makes a mediocre text editor; they don't even have a hotkey for joining two adjacent lines together. ('J' in vim.) What makes it great is what it can do with its understanding of your code. For example, hitting F3 (show definition) while the cursor's on "foo.toString()" will examine the type of "foo" to decide which of the many "toString()" definitions to open up. That's impossible to do generally in Python due to its duck typing.
So I take it you've never had to send an exe via email? It's pain in the ass! Sometimes we just resort to fedex-ing updates to customers.
Dude, don't send the executable. Send a link to where the executable lives on your website. If it's important that no one else get it, then password-protect the directory. (.htaccess on Apache.) This is a much better solution:
No overflowing mailboxes - your non-GMail customers are likely to have small quotas.
No 33% base64 overhead.
No slow involuntary downloads when they log in to check their email over dialup.
It gives them a location that always has the latest version. And a complete archive of previous versions, if you like. Changelogs. Documentation. Website good.
...and it won't be rejected by almost every mail system these days.
Well, it's possible to use shmem as a very fast method for marshalling of arguments across process boundaries and then use BIL (Boost Interfaces Library) to marshall actual function calls
It sounds like what you'd want for that is a message queue. You could write an implementation of messages queues based on shared memory + process-shared mutexes and conditions, but why reinvent the wheel? Linux comes with an implementation.
Re:Does Perfume give you trouble?
on
Safe Cigarettes?
·
· Score: 1
About containing known toxins and carcinogens, how does your opinion relate to standard tap water
Very similar. I expect both my air and water to be safe.
Why not ban known toxins and carcinogens in the water?
Where have you been? The Safe Drinking Water Act passed in 1974. Our current drinking water standards strictly limit the concentrations of the chemicals you've mentioned.
Without giant blobs of fleshiness stuffing their faces two-fisted, public places would be nicer to look at and enjoy. Without smoking, they smell better too.
You've totally missed the point. "It smells bad" was nowhere in my post describing why I support smoking bans in public places. Stopping people from damaging my health is a bit different than passing a law against something you might find unpleasant to watch.
So back to my question, how do existing frontends get around that limitation prior to this very useful feature?
If I understand your question, you're talking about data entry applications doing a "select... for update" before making changes, waiting for the user to make them, then doing the update and commit. You want to know how applications avoided the "Modify record" page hang until another user was done prior to NOWAIT.
This scheme actually isn't that common. You don't want to block read-only operations on user input, and this would do that. Besides, in a web application, you don't even want to keep a database connection between hits. (You have no way of knowing if the user has closed the browser and isn't coming back. Keeping a connection open for an hour just in case is undesirable, to say the least.)
One way would be to hold a modification lock in an application table or in-memory on the application side. But the most common scheme is called "optimistic locking", which is sort of a misnomer. There's no lock. It works like this:
When you present the modification page to the user, do a select with all of the columns. Keep two copies - the user's modified version and the original. When making the changes, execute an UPDATE like this:
update table set col1 = newval1, col2 = newval2 where id = id and col1 = oldval1 and col2 = oldval2;
If this statement returns a row count of 1, you know that no other changes have been made in this time and you can safely go on. If it returns a row count of 0, the record is missing or changed. Send a "Sorry, another user beat you to it" page back to the user. If you want to get fancy, you can show a three-way diff sort of thing to make their changes anyway.
In the vast majority of cases, this is totally transparent. Only if two people happen to be updating the same columns of the same record in the same table at the same time do you ever get an error. It's almost as simple as completely ignoring concurrency, and it has much better behavior - the user's change being rejected while they still remember what it was, rather than someone's change being silently clobbered.
It sounds from the article like it doesn't lose data. The complaining users are saying things like this:
There's no data loss here. He can restore the system using the commandline but won't because he refuses to learn. He shouldn't be using beta software.
Your college definition of beta is oversimplified, anyway:
skogs' post was just crazy. It was not a good representation of cultural relativism, so I'll play the Devil's Advocate and provide one.
Camel Pilot said, quoting Dawkins: Airplanes are built according to scientific principals and they work. [...] Airplanes built to tribal or mythological specifications such as the dummy planes of the Cargo cults in jungle clearings or the bees-waxed wings of Icaraus don't.
Absolutely. Few would question the West's dominance of exploration, travel, communication, science, engineering, medicine, and raw population growth.
But does that makes us great? Those are our metrics. Another culture might claim greatness due to peacefulness (lack of war and crime), happiness, lack of poverty, equal rights, harmony with nature, etc.
In this study (linked from "Clinical depression" on wikipedia), 4.4% of Americans vs. 1.0% of rural Taiwanese suffer from clinical depression. In Europe, it's much higher - 16.4% in Paris. The Middle East is higher still - Beirut, 19.0%. Let's disregard any potential problems with the study (sample size, etc.) and assume for the moment that it's accurate. Is this a fair way to judge a culture? Is the Middle East the worst, Europe slightly better, North America better, and the Far East the best?
How do you judge a culture? It ultimately comes down to your values, and those are set by your culture. So really, it's an unanswerable question.
Here's the email I just sent:
To: citymgr@cityoftuttle.org
CC: mayor@cityoftuttle.org
Subject: Apologize to CentOS
Mr. Taylor,
I'm writing in response to your recent letter to The Register [1]. I am appalled to learn of your continued hostility to the Johnny Hughes, the CentOS Team, and the open source community as a whole. I am a member of this community.
You wrote that you "only got help after threatening to contact the FBI" [2]. That's a misleading statement without also mentioning that you threatened to contact the FBI prior to describing the problem or asking for help. I quote from your initial email: "Please remove your software immediately before I report it to government officials!!"
Most organizations would have immediately directed you to their legal department and cut off all other contact. CentOS stuck with you through your lengthy email exchange and resolved your problem despite your threats and ingratitude. That shows a level of dedication and professionalism that you could never achieve. Even more so when you consider that they are volunteers and that you are not a paying customer. They are not obligated to help under even the best of circumstances.
After CentOS provided you with the publicity you welcomed, you apparently discovered that the open source community has no respect for those who abuse our movers and shakers. Realize that an apology is a necessary first step to repair the damage you have done to your city's reputation.
Sincerely,
Scott Lamb
[1] - http://www.theregister.co.uk/2006/03/27/tuttle_ema il/ o ryid=127
[2] - http://www.centos.org/modules/news/article.php?st
I see your logic and raise you reading comprehension. The grandparent asked:
That was not a conclusion; it was a question. And questions that can't be resolved with logic from existing evidence are still useful; further studies can be set up.
But bear in mind that the study wasn't just about sleeping in a head-lowered position; it was about lying around in that position for 17 days. It's reasonable to ask that if a head-raised position would be better than a level one, then, but I rather doubt it'd be better than actually moving about and exercising normally.
> My second thought was, "Hmmm. I wonder if they use MSWindows, on a wireless network?" It might be worth going to see after all.
Sadly, no. I went to see Cirque de Soleil's O. It was the eve of my sister's wedding, we all had third-row tickets (the first non-wet row), and we were excited to see it. 15 minutes after the show time, a sad-looking clown came out and told us that the show was cancelled! Their excuse was that they couldn't get their stage control computer to work. Presumably, they had a setup as you describe...
There's really no excuse for this in my mind. As packed as that place was, and as expensive as those tickets are, there had to be half a million dollars in ticket sales that show. They could have easily had a redundant setup. But instead, they didn't take a mission-critical system seriously, and so they cancelled!
I haven't gone to a Cirque de Soleil show since. How can I take them seriously when they don't understand that "the show must go on" and prepare accordingly?
That's true for the timing mode. The sampling mode is zippy. For most stuff that I do, it's good enough. It's generally pretty obvious which are blocking calls and which are actually using the CPU. Monitor contention can be a bit confusing sometimes, though - a relatively simple operation will have many, many samples because it's waiting on a monitor held by something more complex. This is good to show you that it's an important problem, but it doesn't make it obvious where to go to fix it.
I tend to use this configuration:
...and I sometimes change the "5" as necessary. There's also a heap allocation mode that I haven't played with much, and something that shows you each monitor acquisition and deacquisition (which I think is too much information).
You can't start and stop it at runtime. If you've ever tried to profile a web application with hprof, you know what I'm talking about!
Yeah, but with the sampling mode, I find I can just leave it on all the time on my development system.
Filtering. hprof profiles everything and so it's slow and that output is expansive. When I'm profiling code, I want to know how my code is performing, not how some third party library is performing.
Why? I want to know if I should patch or replace a third-party library. I care about the performance of the whole system, not just the code I wrote.
Ugh, you picked the wrong day to say that. After my mailserver had weird problems over the weekend (of the 'Cyrus sucking down 100% CPU time in index_checkseen while making no system calls' variety), I ran a reconstruct...which took two and a half hours. (Thankfully, it did fix the problem.)
The episode was probably brought on by unusual circumstances - I have an ancient version of Cyrus imapd (2.0.16) and ran out of /var space last week - but it shows that Cyrus does indeed have giant databases that can complicate operation.
The goal would be to get RedHat or SuSE to do all the software support, right? Supplying binary modules is way too much customization for that plan to succeed. Those would taint the kernel, and no other vendor is going to support that.
Actually, now that you mention it, Pat Robertson and Jerry Falwell come to mind. Sadly, many consider them religious leaders.
> On the whole, muslims don't, either.
It's hard for me to believe this is a minority view when prominent Islamic leaders call for executions over works of fiction. [1]
The West says this: "I disapprove of what you say, but I will defend to the death your right to say it"
Islam says this: "Every freedom has a limit. Freedom of religion as long as you don't disturb or harm others. Freedom of press as long as you don't offend others in such a manner." We call this guy reasonable because he isn't blowing up an embassy over a comic.
Where are the moderate or liberal voices of Islam?
Here's all I brought with me when I moved to California a year ago:
You don't need so many servers for home! I can only think of a few reasons you need many servers at once:
Though for full disclosure, I should admit that my home systems aren't the whole story. I have a real machine co-located in one data center and a virtual one co-located in another.
You'd be wrong. I don't believe slashdot uses any Javascript, except maybe some ad stuff. And even if it did, that's not a good definition. The point of Ajax is updating the client's display with new data from the server without reloading the entire page. This is why Ajax is so trendy - these pages are more pleasant to use because they respond more quickly, and without unrelated parts of the display going away and coming back or causing everything to scroll away from what you were looking at.
Ajax accomplishes this with the XMLHttpRequest() object. (It's a misnomer - XML doesn't have to be involved at all.) It's just a way to issue a request and execute some code when it completes (by success, failure, or timeout). That code can update a status bar, add some text to the page, or do something more sophisticated.
Why not use the IMAP4 IDLE command? This is the standard mechanism for making mail appear instantly over IMAP. Microsoft in this case writes both the client and the server, so they should be able to add support if it doesn't already exist.
Maybe there's some reason they want to avoid leaving TCP connections open? Do they have trouble maintaining connections as the devices move around, perhaps? Or is there some scalability limit on their server?
They have similar goals, but they're pretty different technically. For example, with Xen you have to partition the memory space quite rigidly - each virtual machine gets 128MB or whatever. They can't borrow from others memory that's not being used. So if you look at a Xen-based virtualization provider like RimuHosting, you'll see that their highest virtualized configuration gives you 320MB of memory. If you look at a Virtuozzo-based one like JohnCompanies, you'll see the other extreme:
That's one of the most obvious differences. Another is that Virtuozzo's rather customized kernel tends to lag behind - my virtual server is a 2.4 release that annoyingly lacks NPTL. I imagine that's what they're trying to address with OpenVZ and mainstream kernel inclusion.
(Incidentally, both the hosting companies I linked to are nice places with open source developer discounts.)
You wrote: However, if you *explicitly* wrote a version of the algorithm for *every* type you wanted to sort in C (which is what C++ templates do behind the scenes) you'd find it would be just as fast. At the end of the day theres only so many ways you can translate a sorting algorithm into assembler.
Do you think this counters my point? I wrote: while theoretically, you can write specialized sorts for every data type in C, no one ever does.
The point is that in C, that'd be such a pain that you wouldn't do it. In C++, you write it once and the compiler does the specialization for you. It's easier to be efficient, so you actually do it, so the language is faster.
Umm, no. I love Python as much as the next guy, but I also know that it doesn't have a JIT compiler. Neither do Perl or Ruby. In fact, they're quite slow for many tasks. Parrot may bring these optimizations to these languages, but it hasn't yet.
If these languages are faster, it's because their extreme rapid development frees you up to think of better algorithms. I certainly had a couple cases recently in which the Python code I wrote was much better than it would have been in Java, C++, or C because it was so quick to go through several design iterations. In fact, even if I had determined in the end that Python was too slow, it would have saved a lot of development effort and yielded a better product to use it as a prototyping tool before moving to a faster language.
The argument you gave applies to Java and C#.
If you're going to nit-pick, look at the full sentence. What you said was this:
This is not the difference, and many people would say that it's not the most important difference - metaprogramming is. Agree or disagree, but don't just disregard what they're saying without comment.
> BS. Unless you think theres some sort of magical assembly language that a C++ compiler can generate than a C compiled couldn't.
You could generate the same instructions in C, but you wouldn't. C++'s metaprogramming allows you to write code once yet specialize it for the best performance for each type. See this sorting comparison for an example. The C approach to genericizing code is to do extra work at run-time. The C++ approach is to do extra work at compile-time. In many cases (especially dealing with scientific stuff), that's much faster. So while theoretically, you can write specialized sorts for every data type in C, no one ever does. In C++, you don't even think about it.
You're way off. So far that I'd say you've never read or written modern C++ code. There's a lot of metaprogramming. Look into templates sometime. Try out the STL and the boost libraries. There are significant C++ programs that are not object-oriented and would be nearly impossible to duplicate in C with the same kind of efficiency.
I find C++ to be an ugly, ugly language, but it's also a lot more than the "C + classes" that it used to be.
An AC replied: How is pressing "end" "delete" that much more difficult than a single keystroke? The keys are right next to each other, and if you have fat fingers you can probably get them both in a single motion.
First, those are particularly bad keys. On a full-sized keyboard, they're not accessible without moving your hand. On my PowerBook, "delete" refers to the position you'd probably call "backspace"; the "delete" and "end" keys don't exist. "End" requires holding the function key (a kind of awkward wrist pivot and pinky stretch to the far lower-left corner) while hitting the right arrow (the far lower-right corner). The two lower corners are the suckiest keys on the keyboard.
Second, 'J' does more than that. It replaces the next newline and beginning whitespace with a single space. The closest equivalent is (with my emacs/mac bindings), command-E (go to end of line), option-F, option-F (go before next word), option-backspace, option-backspace, space. Six keys instead of one, and it took me a while to think over that sequence. Usually I go for the mouse, and slow down while trying to highlight an area precisely. 'Join lines' is much quicker, almost instinctive.
In fairness to Eclipse, it does have command-I, which will reformat the entire file or highlighted block. But that's kind of a shotgun approach. And while I think there are keys to highlight stuff (rather than using the mouse), I can never actually remember them.
I'd say so, too.
(Tons of people out there doing PHP, etc, but I would stay on the Java side of the fence)
Dude, are you trying to crush his spirit? PHP has a poor community and lots of sloppy code. But Java's not great, either - it has a lot of massively overengineered frameworks that require a lot of "XML push-ups". It's not a bad language, but I haven't seen a combination of it and any web framework that I enjoy using.
I'd recommend Python (a refreshingly clean language) with Django or Ruby-on-Rails. Both very trendy, but more importantly, fun to code in.
I'd also steer away from Eclipse unless you're using Java. As the parent said, there is some support for other languages, but they haven't gotten the same attention, and more dynamic languages are harder to do tricky IDE things with anyway. Eclipse makes a mediocre text editor; they don't even have a hotkey for joining two adjacent lines together. ('J' in vim.) What makes it great is what it can do with its understanding of your code. For example, hitting F3 (show definition) while the cursor's on "foo.toString()" will examine the type of "foo" to decide which of the many "toString()" definitions to open up. That's impossible to do generally in Python due to its duck typing.
Dude, don't send the executable. Send a link to where the executable lives on your website. If it's important that no one else get it, then password-protect the directory. (.htaccess on Apache.) This is a much better solution:
It sounds like what you'd want for that is a message queue. You could write an implementation of messages queues based on shared memory + process-shared mutexes and conditions, but why reinvent the wheel? Linux comes with an implementation.
About containing known toxins and carcinogens, how does your opinion relate to standard tap water
Very similar. I expect both my air and water to be safe. Why not ban known toxins and carcinogens in the water?
Where have you been? The Safe Drinking Water Act passed in 1974. Our current drinking water standards strictly limit the concentrations of the chemicals you've mentioned.
Without giant blobs of fleshiness stuffing their faces two-fisted, public places would be nicer to look at and enjoy. Without smoking, they smell better too.
You've totally missed the point. "It smells bad" was nowhere in my post describing why I support smoking bans in public places. Stopping people from damaging my health is a bit different than passing a law against something you might find unpleasant to watch.
If I understand your question, you're talking about data entry applications doing a "select ... for update" before making changes, waiting for the user to make them, then doing the update and commit. You want to know how applications avoided the "Modify record" page hang until another user was done prior to NOWAIT.
This scheme actually isn't that common. You don't want to block read-only operations on user input, and this would do that. Besides, in a web application, you don't even want to keep a database connection between hits. (You have no way of knowing if the user has closed the browser and isn't coming back. Keeping a connection open for an hour just in case is undesirable, to say the least.)
One way would be to hold a modification lock in an application table or in-memory on the application side. But the most common scheme is called "optimistic locking", which is sort of a misnomer. There's no lock. It works like this:
When you present the modification page to the user, do a select with all of the columns. Keep two copies - the user's modified version and the original. When making the changes, execute an UPDATE like this:
update table set col1 = newval1, col2 = newval2 where id = id and col1 = oldval1 and col2 = oldval2;
If this statement returns a row count of 1, you know that no other changes have been made in this time and you can safely go on. If it returns a row count of 0, the record is missing or changed. Send a "Sorry, another user beat you to it" page back to the user. If you want to get fancy, you can show a three-way diff sort of thing to make their changes anyway.
In the vast majority of cases, this is totally transparent. Only if two people happen to be updating the same columns of the same record in the same table at the same time do you ever get an error. It's almost as simple as completely ignoring concurrency, and it has much better behavior - the user's change being rejected while they still remember what it was, rather than someone's change being silently clobbered.