I don't know what "defence-related site" you're working at, but at mine the "Unclassified" network has more security policies attached to it than I've seen in any corporate environment.
The "Classified" network is worse and in most cases it's almost impossible to do actual work there. Of course, the dirty secret is: that's the whole point. What gov. civil servant (be they military or not) wants to do actual work? Also, since everything is "Classified" then it's also very difficult for work to be peer-reviewed so there's no accountability for what's done there.
I swear, half of the stuff we do here must be counterintelligence. We stamp it "sensitive" or "For Official Use Only" -- but if any foreign intelligence agency got their hands on it they'd be laughing so hard they might consider giving up on spying on this country altogether.
Ah yes, the floppies era... back when floppies were floppy.
STL = The Standard Template Library.
Learning how C++ templates work has a bit of a long learning curve attached to it, but they are very powerful and tend to be more efficient than equivalent constructs in scripting languages or Java. They are also easier to write than equivalent constructs in C.
Setting up PHP is pretty easy on IIS -- you download the installer from php's web site. For Apache it's easy on all package-based Linux flavors I've ever used... just add the php package. If you have a different situation then happy reading / compiling.
Setting up PHP _securely_ is a different story. There are some tweaks and hoops to jump through. Reading up on secure web server configuration (in general, not just for PHP) might be good to do at some point. Reading up on secure programming also might be a good idea (any time you program in C/C++ to make something screaming fast you have to be much more careful about doing it The Right Way).
One thing I should probably mention -- when I say screaming fast I mean it. Most stuff doesn't need to be that fast. Usually you need C/C++ when doing: 1. Heavy duty math e.g graphics or game programming or scientific computing. 2. LOTS of device I/O: #1 is an example -- another would be writing your own database: this requires you to have very low-level access to memory and the hard disk in order to optimize resource usage. 3. Direct interaction with an embedded system like a cell or a PDA or your web-controllable robot. 4. Writing device drivers for an OS like Linux or writing OS modules for same.
If you never envision needing to do things like that you may never need to delve too deep into C/C++ -- HOWEVER, I'd still take some pains to learn how C pointers and handles work because that is probably the single most useful thing that you can do to know what you're scripting engine is doing with your data structures under the covers (speaking of which, I'd learn what how to use a C struct and how to use a POINTER to a C struct and the difference between the . and -> operators). #2 thing I would do is learn the anatomy of a process: especially The Stack and The Heap. Learn what it means to allocate a variable on the stack vs on the heap vs where static variables get allocated.
Hmm, that is an interesting question.... I think you might know more than you're letting on.:)
I think you would be all right as long as you didn't let the virtual machine that your server is running on know about the existence of your home/office hard drive partition. To be really safe I'd use a separate physical machine as your web server and lock it out of the rest of your home/office network, but I tend to be labeled paranoid.
As far as C goes... its power is in its libraries, not in the basic language constructs. Those libraries are a bit hard to learn, though, and things like file I/O are more straightforward in PHP or Python. This is because (in C) you are really only one level of abstraction above the assembler and so things tend to be a bit more tedious. With practice, though, you can knock out C code just about as fast as PHP code. Personally, I think the increased knowledge of how lower-level parts of the system work is worth the price.
You might try playing with C++ and the STL if you want to mix low-level power with some higher-level tools like file streams, strings, templates, etc. Java has been advocated in this thread, but you don't get enough low-level freedom with it, in my Humble but Accurate opinion.:) That said, Java works great for many things -- I just personally prefer C++.
Usually when I have a web app that needs a powerful piece I write all but the that piece in Python or PHP. The powerful piece is usually in C++ and the front end calls the back end when it needs some heavy lifting done. This requires an intimate knowledge of what your web server is going to do and where the less efficient parts of execution are.
You can also configure your web _server_ to do some of its tasks more efficiently using ISAPI (IIS) or modules (Apache). These pieces almost always are written in C or C++.
My rule of thumb is: 1. When it has to be written fast or I don't need to optimize it much I use Python or PHP (most web programming falls into this category). 2. When I need to tweak lower level components I use C++. Usually I write non-web applications in C++. If there are portions of a web app that could gain speed from C++, I write those portions in C++. 3. When I need to optimize A LOT I usually take something written in C++ and refactor parts of it into C to make it faster.
Some crazy (or highly motivated) people add a step 4 and refactor portions of their C code into assembly code to make things screaming fast.
It doesn't really matter. What matters is that you learn _how_ to program well. This comes with time and experience. Going to school or reading a _lot_ of books can reduce the amount of time required to gain experience.
If you want to get started fast with web sites use PHP. Accept the fact that you won't know too much about how much is happening under the hood, but you will still get things that run. You will start to build experience.
If you can accept a slower pace, then start with C. You'll learn a lot more about how things work (mostly by shooting yourself in the foot alot).
If you want to get started really quickly and really never know what you're doing, use Rails.
If you don't want to try any of those, try another one.
Hmm, SQL... it is not a procedural language so it doesn't compare well to C or PHP. Learn about different types of languages if you're interested in the differences. If you want to interface with relational databases you'll probably need to know SQL. If you don't know what a relational database is then either read about them (or don't if you never think you're going to write apps that use them).
Also, realize that when you start you probably aren't going to code very efficiently or securely. Don't put any information near your web server that you care about too much.
Awesome!!!
I also learned BASIC on the TI-99/4a.
My dad had a book of canned basic programs. I got to make Mr. Bojangles dance.
I also spent a lot of time on Parsec and Hunt the Wumpus.
For both: Office apps work, I can do clickety fun with file management and search. Blabbity blab blab ad infinium.
If accessibility to great games had been on the list Ubuntu would get creamed. When a distro comes along that can cater to game developers, then the desktop war is won.
I don't have it anymore as I don't work there anymore. It wasn't very many lines. The heavy lifting was done by tar, gzip, and mt. The only thing the backup script did was save tgz files to a hard drive (for quick recovery purposes if something lost something within a week) and then copy those tgz files to the tapes. You can usually get away with a simple setup like that in a small company.
Then you've never been a programmer on a mid-to-large size project under the gun to deliver the software yesterday. And, by the way, YOU didn't set the deadline, your boss did.
If there is any system you don't hate, it is because you don't know it well enough.
I hate the communist system.
I don't know what "defence-related site" you're working at, but at mine the "Unclassified" network has more security policies attached to it than I've seen in any corporate environment.
The "Classified" network is worse and in most cases it's almost impossible to do actual work there. Of course, the dirty secret is: that's the whole point. What gov. civil servant (be they military or not) wants to do actual work? Also, since everything is "Classified" then it's also very difficult for work to be peer-reviewed so there's no accountability for what's done there.
I swear, half of the stuff we do here must be counterintelligence. We stamp it "sensitive" or "For Official Use Only" -- but if any foreign intelligence agency got their hands on it they'd be laughing so hard they might consider giving up on spying on this country altogether.
Oops. I should have encrypted the tag when I submitted it.
Yeah, because most people who don't worry about thinking critically place a high value on education and will pay attention in school. Oh wait...
Riding a bike to the "nearest" library is all fine and good, but what about all those people who live in rural areas?
Hmm, I wonder how that works in SCO's mind, since they used to peddle Caldera "Linux," which is much more than a kernel.
Wow, lots of people in a demographic are interested in engineering. Some of them might be terrorists (but probably not the vast majority).
In other news, water is wet, etc., etc.
Ah yes, the floppies era... back when floppies were floppy.
... just add the php package. If you have a different situation then happy reading / compiling.
STL = The Standard Template Library.
Learning how C++ templates work has a bit of a long learning curve attached to it, but they are very powerful and tend to be more efficient than equivalent constructs in scripting languages or Java. They are also easier to write than equivalent constructs in C.
Setting up PHP is pretty easy on IIS -- you download the installer from php's web site. For Apache it's easy on all package-based Linux flavors I've ever used
Setting up PHP _securely_ is a different story. There are some tweaks and hoops to jump through. Reading up on secure web server configuration (in general, not just for PHP) might be good to do at some point. Reading up on secure programming also might be a good idea (any time you program in C/C++ to make something screaming fast you have to be much more careful about doing it The Right Way).
One thing I should probably mention -- when I say screaming fast I mean it. Most stuff doesn't need to be that fast. Usually you need C/C++ when doing:
1. Heavy duty math e.g graphics or game programming or scientific computing.
2. LOTS of device I/O: #1 is an example -- another would be writing your own database: this requires you to have very low-level access to memory and the hard disk in order to optimize resource usage.
3. Direct interaction with an embedded system like a cell or a PDA or your web-controllable robot.
4. Writing device drivers for an OS like Linux or writing OS modules for same.
If you never envision needing to do things like that you may never need to delve too deep into C/C++ -- HOWEVER, I'd still take some pains to learn how C pointers and handles work because that is probably the single most useful thing that you can do to know what you're scripting engine is doing with your data structures under the covers (speaking of which, I'd learn what how to use a C struct and how to use a POINTER to a C struct and the difference between the . and -> operators). #2 thing I would do is learn the anatomy of a process: especially The Stack and The Heap. Learn what it means to allocate a variable on the stack vs on the heap vs where static variables get allocated.
Hmm, that is an interesting question.... I think you might know more than you're letting on. :)
... its power is in its libraries, not in the basic language constructs. Those libraries are a bit hard to learn, though, and things like file I/O are more straightforward in PHP or Python. This is because (in C) you are really only one level of abstraction above the assembler and so things tend to be a bit more tedious. With practice, though, you can knock out C code just about as fast as PHP code. Personally, I think the increased knowledge of how lower-level parts of the system work is worth the price.
:) That said, Java works great for many things -- I just personally prefer C++.
I think you would be all right as long as you didn't let the virtual machine that your server is running on know about the existence of your home/office hard drive partition. To be really safe I'd use a separate physical machine as your web server and lock it out of the rest of your home/office network, but I tend to be labeled paranoid.
As far as C goes
You might try playing with C++ and the STL if you want to mix low-level power with some higher-level tools like file streams, strings, templates, etc. Java has been advocated in this thread, but you don't get enough low-level freedom with it, in my Humble but Accurate opinion.
Usually when I have a web app that needs a powerful piece I write all but the that piece in Python or PHP. The powerful piece is usually in C++ and the front end calls the back end when it needs some heavy lifting done. This requires an intimate knowledge of what your web server is going to do and where the less efficient parts of execution are.
You can also configure your web _server_ to do some of its tasks more efficiently using ISAPI (IIS) or modules (Apache). These pieces almost always are written in C or C++.
My rule of thumb is:
1. When it has to be written fast or I don't need to optimize it much I use Python or PHP (most web programming falls into this category).
2. When I need to tweak lower level components I use C++. Usually I write non-web applications in C++. If there are portions of a web app that could gain speed from C++, I write those portions in C++.
3. When I need to optimize A LOT I usually take something written in C++ and refactor parts of it into C to make it faster.
Some crazy (or highly motivated) people add a step 4 and refactor portions of their C code into assembly code to make things screaming fast.
It doesn't really matter. What matters is that you learn _how_ to program well. This comes with time and experience. Going to school or reading a _lot_ of books can reduce the amount of time required to gain experience.
... it is not a procedural language so it doesn't compare well to C or PHP. Learn about different types of languages if you're interested in the differences. If you want to interface with relational databases you'll probably need to know SQL. If you don't know what a relational database is then either read about them (or don't if you never think you're going to write apps that use them).
If you want to get started fast with web sites use PHP. Accept the fact that you won't know too much about how much is happening under the hood, but you will still get things that run. You will start to build experience.
If you can accept a slower pace, then start with C. You'll learn a lot more about how things work (mostly by shooting yourself in the foot alot).
If you want to get started really quickly and really never know what you're doing, use Rails.
If you don't want to try any of those, try another one.
Hmm, SQL
Also, realize that when you start you probably aren't going to code very efficiently or securely. Don't put any information near your web server that you care about too much.
google exuberant ctags and learn how to use the resulting tags file(s) with vim or your editor of choice
Awesome!!! I also learned BASIC on the TI-99/4a. My dad had a book of canned basic programs. I got to make Mr. Bojangles dance. I also spent a lot of time on Parsec and Hunt the Wumpus.
What happens when there is a glitch in the system? Exactly where does the electrical shock go?
For both: Office apps work, I can do clickety fun with file management and search. Blabbity blab blab ad infinium.
If accessibility to great games had been on the list Ubuntu would get creamed. When a distro comes along that can cater to game developers, then the desktop war is won.
Unless the "evidence" against AutoMARK originates from underneath some other table.
- "7.5 years from now, we'll be clean out of IP addresses; faster if the number of addresses used per year goes up. Are you ready for IPv6?"
Unless the number of addresses in use goes down via things like NAT.
Hmm?
I don't have it anymore as I don't work there anymore. It wasn't very many lines. The heavy lifting was done by tar, gzip, and mt. The only thing the backup script did was save tgz files to a hard drive (for quick recovery purposes if something lost something within a week) and then copy those tgz files to the tapes. You can usually get away with a simple setup like that in a small company.
I used tar and gzip glued together with command line PHP to manage a tape library. Worked fine for years.
Then you've never been a programmer on a mid-to-large size project under the gun to deliver the software yesterday. And, by the way, YOU didn't set the deadline, your boss did.
I know plenty of teenagers that "own" cell phones with monthly service charges. These same people have no jobs.
Yes, but Stallman doesn't want to discuss them separately. He rejects them ALL. A bit more of the lazy thinking mentioned above, I think.
I don't know about yours, but my mother taught me not to believe everything I read / hear / see on TV.
It's not like they're idiots either. They obviously are aware of what the Internet and Wikipedia are. And this link:
http://en.wikipedia.org/wiki/IP_address
goes to this one:
http://www.securityfocus.com/infocus/1674
"The IP ranges of US Congress have been currently blocked, but only for a week until the issue can be addressed more directly."
I'm sure that US Congressional staffers won't have any way to get around that.