db.h:32: warning: `class SQLiteDB' only defines private constructors and has no friends
This can be a spurious warning that I had to do a lot of searching for on google groups to debug my own code. It wasn't really documented that the first public: function listed needs to be static. I haven't seen the code you mention, but I assume a static function would be used to instantiate this object. Later versions of g++ (3.3.2) appear to be able to recognize a static function exists somewhere in the public: section, even if not the first.
If you use smart pointers in c++, the memory is automatically deleted when it's reference goes out of scope. Check out the boost library (http://www.boost.org)
Look buddy, OSS differs from CSS only in how you decide to license it.
The software is the same for bunny's sake, there are no tools that magically will convert your software in OOS or CSS just by using them.
Correct me if I am wrong, but I believe the difference is that sourceforge won't host a closed-source product.
If your or one of your colleagues has an always on connection, you can use cvs over ssh. The data and password are then encrypted. In case your ip number is dynamically allocated, a service such as zoneedit.com can be used to keep updating your hostname to resolve it.
Also be sure to check out phpBB as a bulletin board.
This reduces the number of temporaries required. I use c++ and I hate object overloading because people hijack operators to mean silly things. For example, operator~ means surface integration and operator! means volume integration in this code I work in.
You are right. It is the programmer's fault. But it is also the programmer's fault if the program is so inefficient, it is useless. You would then be complaining about how slow the program is, rather than about the exploit.
I don't know who Mel is, but I assume he has debugging tools which would allow him to diagnose the errors found in this article. In addition, there is no reason array bounds checking could not be performed in debug versions of the code, but left out of the final optimized version.
As far as all this stuff about security, it did not appear that the off by 1 error would have resulted in a security exploit, but a crash.
The security exploits you worry about have been reduced with the advent of additional functions in the C standard library which make sure that strings cannot overrun their buffer.
Face it, memory corruption bugs, off-by-one-errors, and all that, happen to even the most experienced and careful programmers. The way to deal with them is to use programming languages that detect them reliably. In different words, we need to retire C or fix C.
There are debugging tools out there which reliably find these bugs in C/C++ and FORTRAN. For example: purify (not free) valgrind (free)
Tools such as these help to find problems, while avoiding the inefficiency of array bounds checking on each access.
Mosts of the standard texts, like Streetman, start out with some basic quantum mechanics and then rapidly work their way to using classical physics analogues. If you are doing device technology, or process integration, I assume your company already understands how these devices work. You are just trying to optimize the behavior through the manufacturing process.
While quantum mechanics is the fundamental basis, a classical physics approach helps to develop an intuition. This is especially useful when it is the parameters in manufacturing process, not the understanding of quantum physics, that is dominating the device performance.
Streetman is a standard text and pretty much covers the whole range of an undergraduate device physics course from an EE perspective. It covers topics including the manufacturing process, quantum mechanics, and the basic analysis of electronic devices.
A basic knowledge of calculus is helpful. The standard approach of this books is to:
1. start with basic concepts in quantum mechanics and materials
2. find a correspondence to classical physics (F=ma) and electrodynamics (F = q E)
3. develop a basic intuition of how these devices work by applying classical physics ideas the analysis
I would start with Streetman's book and look up the references in chapters which are of interest to you.
A lot of tech people with a lot more experience than you are going into nursing, as they are high in demand.
If you insist on staying within the field, then I recommend acquiring specific domain knowledge in a hot field. It is pretty hard to be a generalist these days. It is a bad sign if all the books on your shelf are about programming, and there are no books about the problems your company is trying to solve.
A few years ago, 1999. I had the choice of learning emacs or vim. Unfortunately, the computers I had made emacs seem slow and cumbersome, whereas gvim and vim felt much faster. Now I have a faster computer which makes the latency between the two softwares feel about the same. Unfortunately, I love vim too much to let it go and about the only thing I know in emacs is control-c control-x.
I come from the school of thought that a piece of software should do one thing well, and vim fit the bill. It let me edit programs fast. When I was dialing up over modem, vim seemed fast. In recent years I was somewhat annoyed by the incremental search with automatic highlighting being on by default, but I feel overall that my experience with vim has been an extremely productive one.
Setting up options with vim is very easy, where it seems that you have to carry around a configuration file every where you go to get the emacs you are used to.
Also, Java has a few advantages over C++ in optimization. It's very easy to analyze Java programs to be certain that certain memory locations absolutely will not be modified. That's much harder in languages with native pointers. Those invariants allow you to compile out certain calculations that would have to be done at runtime in a C/C++ program. You can even start spreading loop cycles over multiple CPUs, but I'm pretty certain that the present JVMs aren't that smart.
In C++, isn't using const a hint to the compiler that the programmer doesn't expect the value to change. For example:
const char * p// The data pointed to is constant
int * const p// The pointer must always point to the same address
const int i = x*y;// i cannot change it's value
I am really curious if the use of const could help the situation you describe.
I really like the comparisons that are made between Software Engineering and Chemical Engineering when he revisits the MMM years later(Chapter 19). In discussing software engineering as an engineering discipline:
He may be right that the field will never develop into an engineering discipline with as precise and all-encompassing a mathematical base as electrical engineering has. After all, software engineering, like chemical engineering, is concerned with the nonlinear problems of scaling up into industrial-scale processes, and like industrial engineering, it is permanently confounded by the complexities of human behavior
Whenever you move the mouse to the top menubar and select save in wordpad, you are entering command mode. Move the mouse back down to the text area and you are back in edit mode.
When writing my dissertation and preparing presentation I got a lot of help from comp.text.tex. Use groups.google.com to search the many, many usenet postings over many, many years. Actual package developers and book authors will respond to your postings on issues such as hyperlinked pdf or any other issues.
Apart from that, be sure to go to
www.ctan.org
and check out the search page where they have "Widely Referenced Links"
such as
Short Math Guide for LaTeX and
Using Imported Graphics in LaTeX2e.
In addition, much can be had at the Tex Users Groups webpage.
www.tug.org.
MathType is a great tool to convert all of your word equations to latex as well. If you start from scratch, they have a free editor to create latex equations.
I envision Acovea as an optimization tool, similar in purpose to profiling. Traditional function-level profiling identifies the algorithms most influential in a program's performance; Acovea is then applied to those algorithms to find the compiler flags and options that generate the fastest code.
In addition to just trying some new flags on critical sections, perhaps you can actually try to understand what parts of these algorithms may be improved instead of just trying a bunch of options. In C++, there are many things a compiler cannot do to your code (e.g. return value optimization, avoid temporaries, premature computation), unless you write your code in the proper way.
If there is sufficient overlap with your undergraduate program and that of a CE or EE, consider starting out with the Master's program as it is helpful in today's job market. You may have to take some undergrad classes in order to pick up necessary prerequisites. Many universities offer night courses or courses which can be viewed on the internet.
Electrical & Computer engineering are broad. If you choose an area within these disciplines which is less popular (analog circuit design versus digital circuit design), it may be easier to find a job.
I would recommend Computer Engineering or Electrical Engineering instead of a Computer Science degree. It seems that the poster's networking experience would be more aligned with the hardware perspective that these degrees offer.
This can be a spurious warning that I had to do a lot of searching for on google groups to debug my own code. It wasn't really documented that the first public: function listed needs to be static. I haven't seen the code you mention, but I assume a static function would be used to instantiate this object. Later versions of g++ (3.3.2) appear to be able to recognize a static function exists somewhere in the public: section, even if not the first.
foo *bar = new foo;
shared_ptr<foo> x(bar);
If you use smart pointers in c++, the memory is automatically deleted when it's reference goes out of scope. Check out the boost library (http://www.boost.org)
foo *bar = new foo;
shared_ptr x(bar);
The software is the same for bunny's sake, there are no tools that magically will convert your software in OOS or CSS just by using them. Correct me if I am wrong, but I believe the difference is that sourceforge won't host a closed-source product.
Also be sure to check out phpBB as a bulletin board.
You might be better off with.
CrazyObjectNumber c=a;
c*=b;
c+=53;
This reduces the number of temporaries required. I use c++ and I hate object overloading because people hijack operators to mean silly things. For example, operator~ means surface integration and operator! means volume integration in this code I work in.
Yes I have. I only use them when I am debugging. Then I don't need to implement array bounds checking on the "production" version of the code.
You are right. It is the programmer's fault. But it is also the programmer's fault if the program is so inefficient, it is useless. You would then be complaining about how slow the program is, rather than about the exploit. I don't know who Mel is, but I assume he has debugging tools which would allow him to diagnose the errors found in this article. In addition, there is no reason array bounds checking could not be performed in debug versions of the code, but left out of the final optimized version. As far as all this stuff about security, it did not appear that the off by 1 error would have resulted in a security exploit, but a crash. The security exploits you worry about have been reduced with the advent of additional functions in the C standard library which make sure that strings cannot overrun their buffer.
There are debugging tools out there which reliably find these bugs in C/C++ and FORTRAN. For example:
purify (not free)
valgrind (free)
Tools such as these help to find problems, while avoiding the inefficiency of array bounds checking on each access.
While quantum mechanics is the fundamental basis, a classical physics approach helps to develop an intuition. This is especially useful when it is the parameters in manufacturing process, not the understanding of quantum physics, that is dominating the device performance.
1. start with basic concepts in quantum mechanics and materials
2. find a correspondence to classical physics (F=ma) and electrodynamics (F = q E)
3. develop a basic intuition of how these devices work by applying classical physics ideas the analysis
I would start with Streetman's book and look up the references in chapters which are of interest to you.
Are there processors which use > 4KB pages? What size do the 64 bit processors, Itanium, Opteron, Sparc, use?
A lot of tech people with a lot more experience than you are going into nursing, as they are high in demand. If you insist on staying within the field, then I recommend acquiring specific domain knowledge in a hot field. It is pretty hard to be a generalist these days. It is a bad sign if all the books on your shelf are about programming, and there are no books about the problems your company is trying to solve.
I come from the school of thought that a piece of software should do one thing well, and vim fit the bill. It let me edit programs fast. When I was dialing up over modem, vim seemed fast. In recent years I was somewhat annoyed by the incremental search with automatic highlighting being on by default, but I feel overall that my experience with vim has been an extremely productive one.
Setting up options with vim is very easy, where it seems that you have to carry around a configuration file every where you go to get the emacs you are used to.
const double x=5;
double *p = &x;
const double x=5; double *p =
Results in g++ as
cannot convert `const double *' to `double *' in initialization
So the compiler knows that the data cannot change and hopefully make some optimizations (e.g. use a register instead of a memory location).
In C++, isn't using const a hint to the compiler that the programmer doesn't expect the value to change. For example:
const char * p // The data pointed to is constant
int * const p // The pointer must always point to the same address
const int i = x*y; // i cannot change it's value
I am really curious if the use of const could help the situation you describe.
I really like the comparisons that are made between Software Engineering and Chemical Engineering when he revisits the MMM years later(Chapter 19). In discussing software engineering as an engineering discipline: He may be right that the field will never develop into an engineering discipline with as precise and all-encompassing a mathematical base as electrical engineering has. After all, software engineering, like chemical engineering, is concerned with the nonlinear problems of scaling up into industrial-scale processes, and like industrial engineering, it is permanently confounded by the complexities of human behavior
Whenever you move the mouse to the top menubar and select save in wordpad, you are entering command mode. Move the mouse back down to the text area and you are back in edit mode.
MathType is a great tool to convert all of your word equations to latex as well. If you start from scratch, they have a free editor to create latex equations.
Perhaps in a better economy. Don't walk away if they refuse to budge.
If there is sufficient overlap with your undergraduate program and that of a CE or EE, consider starting out with the Master's program as it is helpful in today's job market. You may have to take some undergrad classes in order to pick up necessary prerequisites. Many universities offer night courses or courses which can be viewed on the internet. Electrical & Computer engineering are broad. If you choose an area within these disciplines which is less popular (analog circuit design versus digital circuit design), it may be easier to find a job.
I would recommend Computer Engineering or Electrical Engineering instead of a Computer Science degree. It seems that the poster's networking experience would be more aligned with the hardware perspective that these degrees offer.
Corrected link here