Failling economic activity (as a proportion of the economy's productive capacity) roughly implies that either there is less money or that it's passing from person to person less frequently. Or some mixture. A monetary stimulus increases the money supply. A fiscal stimulus increases the velocity of money by forcibly taking it or by borrowing it and pushing it round the system more quickly than it's original owner would have done so. Taxing work/things necessarily distorts incentives - which often makes the economy less efficient by altering decision making the wrong way - but that's probably better than a deeper recession which, as well as causing particular hardship concentrated on some people, is ALSO inefficient because it leaves productive resources unused.
It was mentioned yesterday that the prosecutor claimed to be a computer crimes expert, but that he could not get a powerpoint presentation to operate on his laptop.
That's because using a Powerpoint presentation on someone isn't a computer crime, it's a common assault.
If you sell anything digitally delivered to EU customers - from outside the EU - you're required by EU law to charge your customer VAT. Then you have to declare these sales to an EU government of your choice and hand over the money.
I'm not sure what happens if you don't. 'Nothing at all' is quite likely, though I wouldn't wish to bet on not being arrested whilst travelling in the EU if you evade a really huge amount. The EC doesn't seem to have realised they're being a complete arse.
There are 27 EU countries and they all have different rules on what is subject to VAT and what rate to charge. You're supposed to apply the correct rate for each sale - depending where your customer is - and account for each country separately.
This is the simplified system, BTW. The complicated version means submitting up to 27 VAT returns to 27 governments, in 22 languages.
Well there's your problem. Hibernate. Hibernate basically just pulls tuples in to objects but doesn't really do a very good job of managing the object graph. My experience with it has been that users of Hibernate have to actually write the code that pulls in related objects. So your customers table can have a getInvoices() method but at some point you actually have to write how you want to retrieve the invoices given a customer.
Hibernate will do that for you. You have to define the relationship, of course (or generate a definition), but Hibernate will give you a set object that gets initialized when you access it. You need to keep one eye on performance, of course - creating many such sets for every customer can be expensive (object creation is expensive in Java) and if you need only a subset of invoices you may be better generating a query or altering your definition.
In the end you also seem to have this situation where you call save on a "root" object and it saves that object and any objects related to that object recursively. But.. that's not relational. That's hierarchical. FAIL.
No, it doesn't, unless you've enabled some feature I'm not aware of. If you create a graph of newly constructed objects then you must call save() on all of them. If they aren't newly constructed you needn't call save at all, of course. And navigating your objects as a graph doesn't mean your data is stored in a hierarchical form rather than a relational one.
A more fully-featured design has you describe the tables and their relationships in some sort of a data file. It could be one giant XML file or a number of XML files (like one for each Entity/Table) or even something simpler like a plist file (just a serialized hierarchical key/value dictionary).
That's exactly what you do do with Hibernate - though, if you can be bothered writing a generator, it's also possible to generate these descriptions from your database's system catalogues instead of writing them. You're likely to need to tweak them, though - your relational and OO models are likely to be subtly different.
Probably the best example of this is the Enterprise Objects Framework (EOF) component of WebObjects. Everything you do is done through an "editing context" that is somewhat akin to a database transaction. Typically you pull in your "root" objects by asking the editing context to do a query for you. From then on out you just ask your customer object for invoices (to-many) or for account manager (to-one) or whatever. The editing context records all of the changes you make relative to what was fetched from the database and when it comes time to save them you ask the EC to save and it figures it all out no matter how complex your object graph is.
That's exactly what Hibernate does, too (but an 'editing context' is called a 'session').
Sometimes you simply cannot change the underlying data you have and being able to actually use little SQL snippets while still letting the framework do the heavy lifting is a huge win.
Using SQL snippets - especially big and complicated SQL snippets that do complex data manipulation - is an absolutely essential thing for your application to be able to do. You probably shouldn't be navigating object graphs for everything - especially reporting. There are also some occasions when you absolutely must know what's going to the DB (particularly for concurrency control) - you probably don't want to do an equivalent to UPDATE BankAccount SET balance=balance-200 WHERE balance > 200 [then check the number of rows modified] by initializing a BankAccount object, checking there is sufficient balance, updating the balance and then committing the session. It just won't behave properly when there's concurrent access. (You can explicitly lock the row FOR UPDATE first instead, of course, but you're going to significantly hurt your performance if you keep doing th
where object stores tend to get super normalized which is just bad for reporting because cross table joins are the most expensive thing you can do in any database
That's rather simplistic. Normalizing can make your queries faster if they reduce duplicated storage. Imagine having a massive table of cars with a long manufacturer text field, vs having a table of manufacturers. By taking out the manufacturer field you make your table smaller, which means less IO for your queries and better use of your caches.
Besides, I'm sure there are many more expensive operations than a join like the one I've implied. Imagine, say, sorting a few million of those car records by a text attribute. That's likely to add much more time than a hash-join to a small second table.
Sure, relational is a good general fit databases, but it sounds like you are saying the fact that you can query and modify it using something like SQL in most implementations makes it great?
If you're a DBA, system administrator or tester - or if you simply have to do something ad-hoc and dodgy as a quick fix on a live system - then this makes it not so much great as absolutely fantastic. You can do things like:
Look at the most time consuming queries and analyze them, optimize them, add/remove indexes or move tables or indexes between different sets of disks. And when you do, the query plans will change because they have been frozen in to the application code.
Make ad-hoc changes, or generate ad-hoc reports (or run a query from cron, say) without having to write a little program every time.
Examine the data following your software screwing up, and fix it.
Run the queries your software has generated and check the results. Correct the query and try again.
Fetch a list of currently held locks, or examine the queries which have resulted in deadlocks being reported to the log.
Add columns to support admin or reporting functions (or a second application) without worrying about the effect on the (still running) original application.
Write a reporting system which programmatically generates queries and has the DBMS do the difficult bit of working out query plans.
These aren't specific to relation databases or SQL, of course. However, having a query language is amazingly useful.
I'm surprised you're complaining about having to tune your queries. A lot of databases and SQL have shortcomings, but it's really not that hard if you know your database well (and haven't chosen, say, MySQL). You must still have a query plan with your object databases - it's just implied by your code. (I'm assuming you're not using some sort of alternative query language, because you're comment suggests otherwise and you'd only have to tune that instead). It won't adapt to changing data or indexes, and you're going to have a lot of work to do if you want to duplicate some of the more sophisticated techniques a modern database will use. Worse still, you're going to have to change your application, add some sort of profiling and run it in-place or in a test harness to work out why it's taking as long as it does. And when you want to try a different plan you have to rewrite your code.
It's the ORM layer that's the real pain in the arse (assuming you're using OOD, and assuming you actually want a direct mapping between your object model and relational model). Things like Hibernate and judicious use of code generate make it a lot easier, but you still need to know what's going on and you still need to (and can!) choose between navigating among objects (letting the ORM do the queries) and generating a hand-written query. To some extent an ORM (and the RDBMS vs OODBMS choice) is just a reflection of the different requirements of on-disk vs in-memory representations of objects. On-disk storage is all about efficient and flexible querying, retrieval, (distributed) concurrency, storage and management of huge data-sets, whereas in-memory storage is all about assigning behaviour and navigating relationships between smaller sets of objects whilst carrying out that behaviour.
In any case, the original article is just silly. How does taking all the formal structure away make any difference to the fundamental scalability restrictions - your applications need for data consistency (across nodes) and concurrency control? I work in ticketing. It's not the relational model that causes scalability problems, it's the fundamental fact that 100k people are competing for access to 10k seat statuses, that when we check per-person ticket limits or assign seats we need 100% up-to-date data, that we regularly need to fetch the status of all the seats in a block for display, etc. I believe that concurrency and scalability concerns
Hierarchical queries are a historical weakness of SQL (but not the relational model) - that's why he chose it as an example. You'd actually do something like this (but you'll need a very recent database):
WITH RECURSIVE hierarchy AS (
SELECT * FROM employees WHERE name = 'personsname'
UNION ALL
SELECT sub.* FROM employees AS sub, employees AS super
WHERE super.id = sub.parent_department
)
SELECT * FROM hierarchy;
I hear that argument all the time. Protectionism would bring industry back from overseas and would create jobs.
Protectionism would also 1. provoke retaliatory restrictions on US exports and 2. mean that those outside the US have fewer dollars to spend on US products (because US dollars would less frequently be being sold on the foreign exchange markets to pay for imports). That would send US exporters abroad and destroy jobs.
When the cost of producing something overseas + tariffs > cost of producing something in the native land, companies will build their new plants at home.
Yes; so production in the US for overseas markets moves to those markets and production for the US happening overseas moves to the US. Meanwhile, there's a huge cost from loss of scale, creation and destruction of capital and a sudden imbalance between skills available (in both the US and its trading partners) and the requirements of the newly closed economy.
There are arguments for specific protectionist measures - where there are price distortions caused by big differences in environmental or safety legislation, for example - but 'protecting jobs' is a lousy one. If you want to blame it all on foreigners then I suggest you look at China's continuing exchange rate policy. The Chinese government has been selling huge amounts of its own currency and buying US government bonds, simultaneously holding down its currency, lending to the US and keeping US interest rates low. In effect, this policy (also enabled by the US government's reckless issuance of debt during the boom) has meant that US imports from China were part-paid for by loans to the US government. What US industry really needs is a lower exchange rate and for the Chinese (and others) to start spending all the dollar assets they've hoarded so that the US can starting paying back all of those loans. Unfortunately, it's a bit difficult to do that now because the US government desperately needs to borrow....but, sooner or later, it needs to happen.
The irony of the proposed tax is that it's actually worse for everyone than if it were a tax to legalise P2P. If it were for that then more people would be happier, the music industry would be netting in a small fortune, file sharers would be paying a not unreasonable amount.
Except that it would leave the music industry's participants with very different incentives. Why go to the effort of finding and developing musicians people want to listen to, playing music people want to listen to and recording and packaging it in a way people would like if they're going to get their money anyway? And which firms, musicians, composers, studios, etc. should get what? There may be a lot of criticism of current musical output but people obviously/do/ buy it, those money flows/do/ direct the music industry's resources to particular places, and I'm sure it could get much worse if it didn't.
there was an open and plainly-worded death threat made to a judge in a comment. the police were right to act, but apparently they believe that the magic wizard that lives in the internets can somehow provide more info than simply writing a legal letter requesting the information.
I'd say it was much more likely that they didn't like being told that the server did not record the information they wanted and wanted vengeance.
From what I've heard the detector vans were an urban myth. They do now us a database to work out who hasn't bought a license, and then knock on the door now and again to check up on you.
I don't have a TV, so I know how TV licensing behave. Enforcement is mostly based on fear. If you aren't on the licence database they will write to you every three-ish months with one of a rotating set of letters. These say things like 'WARNING AGAINST UNLAWFUL ACTION', or look like fake bills, or tell you you've been added to their enforcement list and that 'Enforcement Officers' will visit in compliance with PACE (and, presumably, the Geneva conventions and the nuclear test ban treaty....). They give you a phone number they want you to ring to get yourself on a database of people declaring they have no TV. Then they write to you and say they're going to visit you anyway (and then don't) and start the letters again six months later. Meanwhile they're running (billboard) adverts saying things like 'last year we caught 157,000 licence dodgers' and 'seven people in Ebscombe Close don't have a licence'.
In eight years I've met exactly one Enforcement Officer (they're private sector contractors with no special powers). Conversation with them go like this: Him: Do you have a television. You: No. Him: Can I come in? You: No. Him: That's all I need to know [goes away].
It appears they only catch people by knocking on the door and hearing a television. They have no power of entry, and need some shred of evidence of a crime to get a warrant from a magistrate. Besides, I get the impression they can't be bothered and are quite keen on getting through their list ASAP.
BTW, you need a licence for watching television services at or nearly at the same time as it's being broadcast. This applies to using computers for that, too. But you can watch them later with no licence at all. (I don't do either, ICYWW, if I wanted to watch TV I'd have a TV).
Firstly, most religious people nevertheless seem to have a functioning system of morality. They're typically highly inventive when reconciling it with their religion, reinterpreting and ignoring it as necessary to enable themselves to function as normal upstanding human beings. And that's just the ones who've gone so far as to actually read the text they're supposedly living their lives by.
In order for this sentence to be true, there needs to be a universal, singular and unchanging (over time) definition of "upstanding human beings" in a moral context.
No, there doesn't. They merely need to be able to function within the society in which they find themselves, wherever and whenever that is. Human's innate (evolved) sense of morality is being initialized with very different parameters now compared to 1400, 2000 and 4000 years ago - and different parameters in the US vs the middle east. It's the vast difference between modern western societies and ancient middle eastern ones that's the CAUSE of this conflict between ancient religion and current morality.
That definition would form, obviously, an ideology, and a religion.
I don't see why it would form a religion, it doesn't seek to explain anything about the state of the universe. It's merely a set of responses to stimuli - feeling guilty after stealing, feeling angry after seeing stealing, etc. Most people are not even very good at stating what moral rules they're using - they think of rationalizations for intuitive moral decisions which turn out to conflict with answer they give to later questions.
So what you're saying, in essence, is that it doesn't matter that people profess hate, and keep killing one another, in the end they'll follow your religion.
No, I'm saying that whatever religion they follow if they feel it's OK to hate and kill then that's what they'll do. And if they want to be nice to, say, gay people then that's what they'll do, too. They'll find a way later to reconcile it with their religion (and they certainly won't follow MY religion because I haven't got one). The local religion will, I'm sure, influence how an individual's own morality turns out, but it won't be the only influence and I don't believe that morality is a purely learnt trait. Once you've GOT that morality and those moral feelings of guilt, disgust, etc., you can't escape from them just by reading a religious text. They're inevitably going to affect your acceptance and interpretation (and translation) of that text.
BTW, I can highly recommend the book 'Moral Minds' if you're interested in this sort of thing. It's written more from a scientific point of view than a philosophical or theological one.
Firstly, most religious people nevertheless seem to have a functioning system of morality. They're typically highly inventive when reconciling it with their religion, reinterpreting and ignoring it as necessary to enable themselves to function as normal upstanding human beings. And that's just the ones who've gone so far as to actually read the text they're supposedly living their lives by.
Secondly, the translation (by MAS Abdel Haleem from 2004) I have in front of me bears little relation to your quote:
The worst creatures in the sight of god are those who reject him and will not believe; who, whenever you [prophet] make a treaty with them, break it, for they have no fear of god. If you meet them in battle, make a fearsome example of them to those who come after them, so that they may take heed.
'Those who reject him' might not include Jews and Christians, I'm not sure. 'You [prophet]' means the translator is saying this was addressed to the prophet himself, rather that the 'whenever you make' being a modern version of 'whenever one makes'.
I find this hard to believe that owners of such vehicles cannot be traced.
You might find they've been officially scrapped, or that they have foreign plates, or that they've been smuggled in from Transdniestria with a herd of chickens in the back.
The numeric keypad certain is annoying...it's why I use a mouse with my left hand despite being right handed. However, I turn mouse-keys on and use a mix of the mouse buttons and keypad for clicking. For dragging, especially, that's more comfortable than holding down the button and moving the mouse simultaneously. I just wish the designer of mouse-keys hadn't decided it was a good idea to make/, * and - change button and 5 do the actual click. It turns most click operations in to two keys - one to make sure the right mouse button is selected, another to actually click.
I'm not. Go and read them - or your target platform's equivalent - and then decide whether they give you any insight in to anything. I've no idea how well Windows follows Microsoft's own guide and I don't especially care, I hardly ever use their products. However, your Windows applications are unlikely to come out any more consistent with other Windows applications if you ignore their guidelines (which, incidentally, say that Ctrl-W should close the current tab/active object/window and that Ctrl-Q is one of a small number of keys they recommend for application-specific shortcuts because it's east to press and they haven't assigned a standard meaning). In particular it's likely to alert you to things you've missed - like phrasing or capitalising text in a way not consistent with the rest of Windows, or putting commit buttons in an unusual order, or missing out accelerator keys.
The people who write these things have spent a lot more time working on, refining and thinking about user interfaces than the typical developer, and your own interfaces will come out better if you at least consider what they have to say.
If your target platform is not Windows and you don't care about Window's standard spacings or dialogue box button order it may still be worth reading, for example, the section on layout starting on p581. This covers, amongst other things, the order in which they've found users scan the objects in a window (interactive controls first, footnotes, blocks of text and the window title last - and with a tendency to read top left to bottom right). Even better, read your own platform's guide, if it has one. Don't just assume that as an experienced user you know all of the conventions.
Developers need to take time to read the Windows Vista user experience guidelines, or the equivalent for their own platform (or just read the Windows ones, whichever platform you're on, they're pretty good: http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf ). They're imposing documents (760 pages for the Microsoft one), but you really shouldn't be writing UIs without reading it.
It isn't about the number of user interface objects on display - it's about the number of pixels used to display them. Ultimately, EVERYTHING should be resolution independent - none of this 'make the resolution and image quality lower just so I can make objects bigger' nonsense. Widgets, windows, spacing and icons should all be sized based on dialogue units, or some equivalent, not pixels. That way if I want everything at double size so I can read it without my contact lenses then that's what I can have.
If someone with less dexterity can't use you interface, there's a good chance that typical users find it usable but irritating. Yes, I can click on an 8x8 pixel square whereas maybe some people can't...but I shouldn't have to! What makes things possible for the disabled can make the same things more comfortable for ordinary users, too.
I'd also like to save a particular rant for those who think that the mouse is the best interface for filling in forms, choosing items from lists or menus and generally doing anything which doesn't involve freeform positioning. A mouse is slow, uncomfortable, gives a higher risk of injury, is frustrating and fiddly to use and should almost never be the only expected interface device. Using a keyboard is not a last resort fallback, it's a primary input device. Fields should have accelerators, I should be able to move the focus around a window and its panes with convenience, the cursor keys should work (WHY don't cursor keys work in dialogue boxes? it's not like they're needed for something else), the position of the focus should be obvious, HTML and web browsers should have keyboard navigation options, software shouldn't keep stealing or moving my focus around or let it get stuck somewhere and developers should TEST from the point of view of a keyboard-focused user.
He's paying to develop the open source core and the extensions. He's getting revenue from just the extensions. His competitors are writing just extensions. Even if they were charging their development cost+profit, they'd still be undercutting him. This business model would be flawed against even a commercial competitor, never mind against volunteers given the easy task of just writing extensions.
If the core were closed source, however, then his competitors/the open source community would have to write both a competing core and the extensions. A competitor doesn't have the opportunity to compete on just the extension, thus undermining core development - and even if the competitor could, he'd be able to charge for the core to pay for core development. Also, the open source community might have a big enough task to either put it off writing a free alternative or to allow him to stay ahead.
My reason for not coasting? From what I understand, when the engine's turning above ~1,000 RPM, the throttle's at "idle" (no pressure on the pedal), and the transmission's in gear, then the fuel injectors shut off. For everyone but the parent poster, that means it's not burning gas, and thus raising the mileage. Whenever I might use the coasting technique, it's probably better to simply leave it in gear, let the injectors shut off, save gas, and save my brakes (without worrying about overheating them, too).
That's not necessarily true. In gear the engine is spinning faster and so its friction losses are greater. That energy is coming from the car's motion, making you slow down faster. AFAICS the energy you needed to gain that kinetic energy is almost always going to have been larger than what you need to keep the engine idling. So....if you speed up, coast down a hill, and then put it back in to gear you get a net saving (and, in my diesel car, this is true in real life). But if you put it in neutral, coast, and then brake when you could have left it in gear and braked you don't.
but unfortunately, the card's only purpose is to hold another number,
Not a Chip and PIN card (not the kind of number you're thinking of, anyway). The chip does proper security, and has to sign a transaction certificate. That's why a lot of stolen UK credit card numbers are used abroad where there's no chip and PIN. This doesn't make the devices trustworthy, of course...but making a fake device that records numbers and also accepts the transaction being recorded is harder than it used to be (the devices need their own certificate to authenticate themselves as certified devices to the acquirer).
It isn't 40-50% in Loughborough. It's more like 33% - the UK gets 39% from gas (the kind of gas that's a gas not the kind of gas that's a liquid) and 21% from nuclear.
Besides, nasty stuff out of the top of a chimney is better than nasty stuff out of an exhaust in a built-up area.
Failling economic activity (as a proportion of the economy's productive capacity) roughly implies that either there is less money or that it's passing from person to person less frequently. Or some mixture. A monetary stimulus increases the money supply. A fiscal stimulus increases the velocity of money by forcibly taking it or by borrowing it and pushing it round the system more quickly than it's original owner would have done so. Taxing work/things necessarily distorts incentives - which often makes the economy less efficient by altering decision making the wrong way - but that's probably better than a deeper recession which, as well as causing particular hardship concentrated on some people, is ALSO inefficient because it leaves productive resources unused.
It was mentioned yesterday that the prosecutor claimed to be a computer crimes expert, but that he could not get a powerpoint presentation to operate on his laptop.
That's because using a Powerpoint presentation on someone isn't a computer crime, it's a common assault.
I'm not sure what happens if you don't. 'Nothing at all' is quite likely, though I wouldn't wish to bet on not being arrested whilst travelling in the EU if you evade a really huge amount. The EC doesn't seem to have realised they're being a complete arse.
There are 27 EU countries and they all have different rules on what is subject to VAT and what rate to charge. You're supposed to apply the correct rate for each sale - depending where your customer is - and account for each country separately.
This is the simplified system, BTW. The complicated version means submitting up to 27 VAT returns to 27 governments, in 22 languages.
Reference: http://ec.europa.eu/taxation_customs/taxation/vat/traders/e-commerce/article_1610_en.htm
Well there's your problem. Hibernate. Hibernate basically just pulls tuples in to objects but doesn't really do a very good job of managing the object graph. My experience with it has been that users of Hibernate have to actually write the code that pulls in related objects. So your customers table can have a getInvoices() method but at some point you actually have to write how you want to retrieve the invoices given a customer.
Hibernate will do that for you. You have to define the relationship, of course (or generate a definition), but Hibernate will give you a set object that gets initialized when you access it. You need to keep one eye on performance, of course - creating many such sets for every customer can be expensive (object creation is expensive in Java) and if you need only a subset of invoices you may be better generating a query or altering your definition.
In the end you also seem to have this situation where you call save on a "root" object and it saves that object and any objects related to that object recursively. But.. that's not relational. That's hierarchical. FAIL.
No, it doesn't, unless you've enabled some feature I'm not aware of. If you create a graph of newly constructed objects then you must call save() on all of them. If they aren't newly constructed you needn't call save at all, of course. And navigating your objects as a graph doesn't mean your data is stored in a hierarchical form rather than a relational one.
A more fully-featured design has you describe the tables and their relationships in some sort of a data file. It could be one giant XML file or a number of XML files (like one for each Entity/Table) or even something simpler like a plist file (just a serialized hierarchical key/value dictionary).
That's exactly what you do do with Hibernate - though, if you can be bothered writing a generator, it's also possible to generate these descriptions from your database's system catalogues instead of writing them. You're likely to need to tweak them, though - your relational and OO models are likely to be subtly different.
Probably the best example of this is the Enterprise Objects Framework (EOF) component of WebObjects. Everything you do is done through an "editing context" that is somewhat akin to a database transaction. Typically you pull in your "root" objects by asking the editing context to do a query for you. From then on out you just ask your customer object for invoices (to-many) or for account manager (to-one) or whatever. The editing context records all of the changes you make relative to what was fetched from the database and when it comes time to save them you ask the EC to save and it figures it all out no matter how complex your object graph is.
That's exactly what Hibernate does, too (but an 'editing context' is called a 'session').
Sometimes you simply cannot change the underlying data you have and being able to actually use little SQL snippets while still letting the framework do the heavy lifting is a huge win.
Using SQL snippets - especially big and complicated SQL snippets that do complex data manipulation - is an absolutely essential thing for your application to be able to do. You probably shouldn't be navigating object graphs for everything - especially reporting. There are also some occasions when you absolutely must know what's going to the DB (particularly for concurrency control) - you probably don't want to do an equivalent to UPDATE BankAccount SET balance=balance-200 WHERE balance > 200 [then check the number of rows modified] by initializing a BankAccount object, checking there is sufficient balance, updating the balance and then committing the session. It just won't behave properly when there's concurrent access. (You can explicitly lock the row FOR UPDATE first instead, of course, but you're going to significantly hurt your performance if you keep doing th
where object stores tend to get super normalized which is just bad for reporting because cross table joins are the most expensive thing you can do in any database
That's rather simplistic. Normalizing can make your queries faster if they reduce duplicated storage. Imagine having a massive table of cars with a long manufacturer text field, vs having a table of manufacturers. By taking out the manufacturer field you make your table smaller, which means less IO for your queries and better use of your caches.
Besides, I'm sure there are many more expensive operations than a join like the one I've implied. Imagine, say, sorting a few million of those car records by a text attribute. That's likely to add much more time than a hash-join to a small second table.
Sure, relational is a good general fit databases, but it sounds like you are saying the fact that you can query and modify it using something like SQL in most implementations makes it great?
If you're a DBA, system administrator or tester - or if you simply have to do something ad-hoc and dodgy as a quick fix on a live system - then this makes it not so much great as absolutely fantastic. You can do things like:
These aren't specific to relation databases or SQL, of course. However, having a query language is amazingly useful.
I'm surprised you're complaining about having to tune your queries. A lot of databases and SQL have shortcomings, but it's really not that hard if you know your database well (and haven't chosen, say, MySQL). You must still have a query plan with your object databases - it's just implied by your code. (I'm assuming you're not using some sort of alternative query language, because you're comment suggests otherwise and you'd only have to tune that instead). It won't adapt to changing data or indexes, and you're going to have a lot of work to do if you want to duplicate some of the more sophisticated techniques a modern database will use. Worse still, you're going to have to change your application, add some sort of profiling and run it in-place or in a test harness to work out why it's taking as long as it does. And when you want to try a different plan you have to rewrite your code.
It's the ORM layer that's the real pain in the arse (assuming you're using OOD, and assuming you actually want a direct mapping between your object model and relational model). Things like Hibernate and judicious use of code generate make it a lot easier, but you still need to know what's going on and you still need to (and can!) choose between navigating among objects (letting the ORM do the queries) and generating a hand-written query. To some extent an ORM (and the RDBMS vs OODBMS choice) is just a reflection of the different requirements of on-disk vs in-memory representations of objects. On-disk storage is all about efficient and flexible querying, retrieval, (distributed) concurrency, storage and management of huge data-sets, whereas in-memory storage is all about assigning behaviour and navigating relationships between smaller sets of objects whilst carrying out that behaviour.
In any case, the original article is just silly. How does taking all the formal structure away make any difference to the fundamental scalability restrictions - your applications need for data consistency (across nodes) and concurrency control? I work in ticketing. It's not the relational model that causes scalability problems, it's the fundamental fact that 100k people are competing for access to 10k seat statuses, that when we check per-person ticket limits or assign seats we need 100% up-to-date data, that we regularly need to fetch the status of all the seats in a block for display, etc. I believe that concurrency and scalability concerns
WITH RECURSIVE hierarchy AS (
SELECT * FROM employees WHERE name = 'personsname'
UNION ALL
SELECT sub.* FROM employees AS sub, employees AS super
WHERE super.id = sub.parent_department
)
SELECT * FROM hierarchy;
I hear that argument all the time. Protectionism would bring industry back from overseas and would create jobs.
Protectionism would also 1. provoke retaliatory restrictions on US exports and 2. mean that those outside the US have fewer dollars to spend on US products (because US dollars would less frequently be being sold on the foreign exchange markets to pay for imports). That would send US exporters abroad and destroy jobs.
When the cost of producing something overseas + tariffs > cost of producing something in the native land, companies will build their new plants at home.
Yes; so production in the US for overseas markets moves to those markets and production for the US happening overseas moves to the US. Meanwhile, there's a huge cost from loss of scale, creation and destruction of capital and a sudden imbalance between skills available (in both the US and its trading partners) and the requirements of the newly closed economy.
There are arguments for specific protectionist measures - where there are price distortions caused by big differences in environmental or safety legislation, for example - but 'protecting jobs' is a lousy one. If you want to blame it all on foreigners then I suggest you look at China's continuing exchange rate policy. The Chinese government has been selling huge amounts of its own currency and buying US government bonds, simultaneously holding down its currency, lending to the US and keeping US interest rates low. In effect, this policy (also enabled by the US government's reckless issuance of debt during the boom) has meant that US imports from China were part-paid for by loans to the US government. What US industry really needs is a lower exchange rate and for the Chinese (and others) to start spending all the dollar assets they've hoarded so that the US can starting paying back all of those loans. Unfortunately, it's a bit difficult to do that now because the US government desperately needs to borrow....but, sooner or later, it needs to happen.
Everyone in the UK who owns a T.V. has to buy a licence for ã131.50 ($187.2).
Not everyone. You get 50% off if you're blind.
The irony of the proposed tax is that it's actually worse for everyone than if it were a tax to legalise P2P. If it were for that then more people would be happier, the music industry would be netting in a small fortune, file sharers would be paying a not unreasonable amount.
Except that it would leave the music industry's participants with very different incentives. Why go to the effort of finding and developing musicians people want to listen to, playing music people want to listen to and recording and packaging it in a way people would like if they're going to get their money anyway? And which firms, musicians, composers, studios, etc. should get what? There may be a lot of criticism of current musical output but people obviously /do/ buy it, those money flows /do/ direct the music industry's resources to particular places, and I'm sure it could get much worse if it didn't.
there was an open and plainly-worded death threat made to a judge in a comment. the police were right to act, but apparently they believe that the magic wizard that lives in the internets can somehow provide more info than simply writing a legal letter requesting the information.
I'd say it was much more likely that they didn't like being told that the server did not record the information they wanted and wanted vengeance.
From what I've heard the detector vans were an urban myth. They do now us a database to work out who hasn't bought a license, and then knock on the door now and again to check up on you.
I don't have a TV, so I know how TV licensing behave. Enforcement is mostly based on fear. If you aren't on the licence database they will write to you every three-ish months with one of a rotating set of letters. These say things like 'WARNING AGAINST UNLAWFUL ACTION', or look like fake bills, or tell you you've been added to their enforcement list and that 'Enforcement Officers' will visit in compliance with PACE (and, presumably, the Geneva conventions and the nuclear test ban treaty....). They give you a phone number they want you to ring to get yourself on a database of people declaring they have no TV. Then they write to you and say they're going to visit you anyway (and then don't) and start the letters again six months later. Meanwhile they're running (billboard) adverts saying things like 'last year we caught 157,000 licence dodgers' and 'seven people in Ebscombe Close don't have a licence'.
In eight years I've met exactly one Enforcement Officer (they're private sector contractors with no special powers). Conversation with them go like this: Him: Do you have a television. You: No. Him: Can I come in? You: No. Him: That's all I need to know [goes away].
It appears they only catch people by knocking on the door and hearing a television. They have no power of entry, and need some shred of evidence of a crime to get a warrant from a magistrate. Besides, I get the impression they can't be bothered and are quite keen on getting through their list ASAP.
BTW, you need a licence for watching television services at or nearly at the same time as it's being broadcast. This applies to using computers for that, too. But you can watch them later with no licence at all. (I don't do either, ICYWW, if I wanted to watch TV I'd have a TV).
Maybe his parallel resistor is so small that it dims his bulb by reducing the voltage on the whole of the local grid.
Firstly, most religious people nevertheless seem to have a functioning system of morality. They're typically highly inventive when reconciling it with their religion, reinterpreting and ignoring it as necessary to enable themselves to function as normal upstanding human beings. And that's just the ones who've gone so far as to actually read the text they're supposedly living their lives by.
In order for this sentence to be true, there needs to be a universal, singular and unchanging (over time) definition of "upstanding human beings" in a moral context.
No, there doesn't. They merely need to be able to function within the society in which they find themselves, wherever and whenever that is. Human's innate (evolved) sense of morality is being initialized with very different parameters now compared to 1400, 2000 and 4000 years ago - and different parameters in the US vs the middle east. It's the vast difference between modern western societies and ancient middle eastern ones that's the CAUSE of this conflict between ancient religion and current morality.
That definition would form, obviously, an ideology, and a religion.
I don't see why it would form a religion, it doesn't seek to explain anything about the state of the universe. It's merely a set of responses to stimuli - feeling guilty after stealing, feeling angry after seeing stealing, etc. Most people are not even very good at stating what moral rules they're using - they think of rationalizations for intuitive moral decisions which turn out to conflict with answer they give to later questions.
So what you're saying, in essence, is that it doesn't matter that people profess hate, and keep killing one another, in the end they'll follow your religion.
No, I'm saying that whatever religion they follow if they feel it's OK to hate and kill then that's what they'll do. And if they want to be nice to, say, gay people then that's what they'll do, too. They'll find a way later to reconcile it with their religion (and they certainly won't follow MY religion because I haven't got one). The local religion will, I'm sure, influence how an individual's own morality turns out, but it won't be the only influence and I don't believe that morality is a purely learnt trait. Once you've GOT that morality and those moral feelings of guilt, disgust, etc., you can't escape from them just by reading a religious text. They're inevitably going to affect your acceptance and interpretation (and translation) of that text.
BTW, I can highly recommend the book 'Moral Minds' if you're interested in this sort of thing. It's written more from a scientific point of view than a philosophical or theological one.
Secondly, the translation (by MAS Abdel Haleem from 2004) I have in front of me bears little relation to your quote:
The worst creatures in the sight of god are those who reject him and will not believe; who, whenever you [prophet] make a treaty with them, break it, for they have no fear of god. If you meet them in battle, make a fearsome example of them to those who come after them, so that they may take heed.
'Those who reject him' might not include Jews and Christians, I'm not sure. 'You [prophet]' means the translator is saying this was addressed to the prophet himself, rather that the 'whenever you make' being a modern version of 'whenever one makes'.
I find this hard to believe that owners of such vehicles cannot be traced.
You might find they've been officially scrapped, or that they have foreign plates, or that they've been smuggled in from Transdniestria with a herd of chickens in the back.
The numeric keypad certain is annoying...it's why I use a mouse with my left hand despite being right handed. However, I turn mouse-keys on and use a mix of the mouse buttons and keypad for clicking. For dragging, especially, that's more comfortable than holding down the button and moving the mouse simultaneously. I just wish the designer of mouse-keys hadn't decided it was a good idea to make /, * and - change button and 5 do the actual click. It turns most click operations in to two keys - one to make sure the right mouse button is selected, another to actually click.
You are joking, right?
I'm not. Go and read them - or your target platform's equivalent - and then decide whether they give you any insight in to anything. I've no idea how well Windows follows Microsoft's own guide and I don't especially care, I hardly ever use their products. However, your Windows applications are unlikely to come out any more consistent with other Windows applications if you ignore their guidelines (which, incidentally, say that Ctrl-W should close the current tab/active object/window and that Ctrl-Q is one of a small number of keys they recommend for application-specific shortcuts because it's east to press and they haven't assigned a standard meaning). In particular it's likely to alert you to things you've missed - like phrasing or capitalising text in a way not consistent with the rest of Windows, or putting commit buttons in an unusual order, or missing out accelerator keys.
The people who write these things have spent a lot more time working on, refining and thinking about user interfaces than the typical developer, and your own interfaces will come out better if you at least consider what they have to say.
If your target platform is not Windows and you don't care about Window's standard spacings or dialogue box button order it may still be worth reading, for example, the section on layout starting on p581. This covers, amongst other things, the order in which they've found users scan the objects in a window (interactive controls first, footnotes, blocks of text and the window title last - and with a tendency to read top left to bottom right). Even better, read your own platform's guide, if it has one. Don't just assume that as an experienced user you know all of the conventions.
Developers need to take time to read the Windows Vista user experience guidelines, or the equivalent for their own platform (or just read the Windows ones, whichever platform you're on, they're pretty good: http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf ). They're imposing documents (760 pages for the Microsoft one), but you really shouldn't be writing UIs without reading it.
It isn't about the number of user interface objects on display - it's about the number of pixels used to display them. Ultimately, EVERYTHING should be resolution independent - none of this 'make the resolution and image quality lower just so I can make objects bigger' nonsense. Widgets, windows, spacing and icons should all be sized based on dialogue units, or some equivalent, not pixels. That way if I want everything at double size so I can read it without my contact lenses then that's what I can have.
If someone with less dexterity can't use you interface, there's a good chance that typical users find it usable but irritating. Yes, I can click on an 8x8 pixel square whereas maybe some people can't...but I shouldn't have to! What makes things possible for the disabled can make the same things more comfortable for ordinary users, too. I'd also like to save a particular rant for those who think that the mouse is the best interface for filling in forms, choosing items from lists or menus and generally doing anything which doesn't involve freeform positioning. A mouse is slow, uncomfortable, gives a higher risk of injury, is frustrating and fiddly to use and should almost never be the only expected interface device. Using a keyboard is not a last resort fallback, it's a primary input device. Fields should have accelerators, I should be able to move the focus around a window and its panes with convenience, the cursor keys should work (WHY don't cursor keys work in dialogue boxes? it's not like they're needed for something else), the position of the focus should be obvious, HTML and web browsers should have keyboard navigation options, software shouldn't keep stealing or moving my focus around or let it get stuck somewhere and developers should TEST from the point of view of a keyboard-focused user.
He's paying to develop the open source core and the extensions. He's getting revenue from just the extensions. His competitors are writing just extensions. Even if they were charging their development cost+profit, they'd still be undercutting him. This business model would be flawed against even a commercial competitor, never mind against volunteers given the easy task of just writing extensions.
If the core were closed source, however, then his competitors/the open source community would have to write both a competing core and the extensions. A competitor doesn't have the opportunity to compete on just the extension, thus undermining core development - and even if the competitor could, he'd be able to charge for the core to pay for core development. Also, the open source community might have a big enough task to either put it off writing a free alternative or to allow him to stay ahead.
My reason for not coasting? From what I understand, when the engine's turning above ~1,000 RPM, the throttle's at "idle" (no pressure on the pedal), and the transmission's in gear, then the fuel injectors shut off. For everyone but the parent poster, that means it's not burning gas, and thus raising the mileage. Whenever I might use the coasting technique, it's probably better to simply leave it in gear, let the injectors shut off, save gas, and save my brakes (without worrying about overheating them, too).
That's not necessarily true. In gear the engine is spinning faster and so its friction losses are greater. That energy is coming from the car's motion, making you slow down faster. AFAICS the energy you needed to gain that kinetic energy is almost always going to have been larger than what you need to keep the engine idling. So....if you speed up, coast down a hill, and then put it back in to gear you get a net saving (and, in my diesel car, this is true in real life). But if you put it in neutral, coast, and then brake when you could have left it in gear and braked you don't.
but unfortunately, the card's only purpose is to hold another number,
Not a Chip and PIN card (not the kind of number you're thinking of, anyway). The chip does proper security, and has to sign a transaction certificate. That's why a lot of stolen UK credit card numbers are used abroad where there's no chip and PIN. This doesn't make the devices trustworthy, of course...but making a fake device that records numbers and also accepts the transaction being recorded is harder than it used to be (the devices need their own certificate to authenticate themselves as certified devices to the acquirer).
It isn't 40-50% in Loughborough. It's more like 33% - the UK gets 39% from gas (the kind of gas that's a gas not the kind of gas that's a liquid) and 21% from nuclear. Besides, nasty stuff out of the top of a chimney is better than nasty stuff out of an exhaust in a built-up area.