Domain: apache.org
Stories and comments across the archive that link to apache.org.
Comments · 2,937
-
Blackbox testingTry Jakarta's JMeter.
Instead of having to write tests for HttpUnit, you can simply record tests with JMeter. You also have the added benefit of JMeter's load testing capabilities. The only downside is that JMeter's UI isn't very mature (or intuitive for that mature).
-
Re:Is Java finished?
-
Re:Is Java finished?
-
Re:Is Java finished?
-
Re:Is Java finished?
-
An important thing to point out:Java != J2EE. there are lots of great ways to write a Web application without using EJBs, for example, or writing a single line of JSP. check out the variety of projects at The Apache Jakarta Project for some examples.
.NET vs. J2EE might be a more valid comparison than .NET vs. Java. -
Re:Ruby not Java
"Java is not an optimal text parsing language - first off you have to find a regex engine for it."
Umm.. ok... JDK 1.4. Whats second off?
While I'm not particularly arguing for or against the use of Java, I don't think you make a compelling case.
Also, why not use some of the existing tools?
* Eclipse's JET
* XDoclet
* Velocity
Not to mention the numerous other specialized generators, GUI builders, and IDE features.
Scott -
Re:NOT about compiler code generators
Maybe I'm being too fussy about this, but a code generator, traditionally has always meant a part of the compiler back-end which actually translates intermediate code to machine-level instructions.
I think you're being too fussy. Anything that generates code can reasonably be called a code generator. You are just most familiar with the backends of compilers.
Code generation can allow a developer to compensate for missing abstractions in the underlying language or architecture. For example, it's almost trivial to write generator for a Java type-safe enum class with a couple of pages of java tied to a Velocity template for an enum. You just have to be sure that your build process regenerates the class if your input changes. The input could be something as simple as
color {red, green, blue}
It's then easy to add features to your enum infrastructure that aren't in Bloch's class and have them show up in all the project enums (like correct serialization and localization).
The GUI builders that spit out code fragments are just the tip of the iceberg when it comes to code generators. Imagine a utility that could generate the plumbing to make EJB or RMI methods directly accessable from a Windows DCOM client, without it knowing or caring that it's talking to Java on the other end.
Or automatically generating classes for Customer, Order, and Product from an existing database table, and seamlessly loading, caching and saving their instance data without the application knowing or caring that it is persistent.
Automating this sort of tedious programming is what code generation is all about. -
Re:Code generation a necessity
You know, this is a good point. I've done my fair share of EJB programming, and now I'm using the Torque framework as an object management layer. Torque will generate your business objects from an XML database schema. It _is_ nice, but it's basically the same class with different getter/setter methods. Perhaps there is a better way to do it.
-
Good subject, bad example
The linked article on devx.com really makes me not want to use code generation
:-). Let's pick out some fun quotes:
"Even if code generation could build 100 percent of the application, there will still be an endless supply of boring meetings about feature design."
----
" For example, when a lot of code needs to be written to perform relatively simple tasks, engineers can smell bad design. The EJB platform requires the construction of a bunch of classes and interfaces for each database table. Some consider this a design smell."
----
Wow. So I have boring meetings and a really bad platform to look forward to. Yowza, bring it on!
OK, I'm partially joking here. But I think it's worth considering... when we're glad that we have a tool to alleviate the hassles of using a technology (like EJBs), maybe the technology and platform needs to be reconsidered? Shouldn't the platform perhaps do more to "hide" the complexity from us?
I'm struggling with this in a similar form right now with SOAP. I'm deploying a set of SOAP services in Java using Apache AXIS implementation. It does a lot of the 'heavy lifting' for you, but I'm still struggling with the particulars of how to deploy a service, serialize/deserialize my classes, ensure this API works well across a variety of clients (I'm testing with Perl, PHP, and Java), etc.
It can be a bit daunting. But... simple things *are* simple, and the level of code generation available is just about right. I don't *have* to generate a bunch of "helper" classes to put a SOAP service out there, the Axis implementation hides most of those details. I *can* generate additonal classes, and customize my WSDD and WSDL files to handle more complex situations, though. So, it's not perfect, but maybe it hits the mark a little closer.
Anyway, code generation can be great. I've done it before with things like interface creation (take an interface description and go to either HTML or Swing), and it can be very handy. But I wouldn't want to implement a system that is unusuable as a platform without those tools. Real programmers use vi ;-). -
Code Generation in Java...
I use XDoclets a LOT. I mean A LOT. It does some really cool stuff for us, from dealing with MBean interfaces to just about anything else that you can think of.
It's also very tightly integrated with ant and maven, the two build tools that are used in just about every project I'm involved in.
You can find out more about it here. -
Code Generation in Java...
I use XDoclets a LOT. I mean A LOT. It does some really cool stuff for us, from dealing with MBean interfaces to just about anything else that you can think of.
It's also very tightly integrated with ant and maven, the two build tools that are used in just about every project I'm involved in.
You can find out more about it here. -
This is the origin of the apache servers name...http://www.apache.org/history/timeline.html
Brian Behlendorf started collecting patches to be applied to the last version of NCSA. The initial versions of Apache are available primarily as a series of patches. Hence, initially, the name Apache, as it was "a patchy server". At least, so the legend goes.
-
Re:what % of Windows is patches?
Isn't it funny that apache.org has 2 separate theories on the origin of the name and both are considered correct. One would think that the group that came up with the name should be able to keep track of the truth about where it came from. Must be that the person that wrote the timeline never read the FAQ.
According to this, the server was named after the Apache indians and the " A patchy server" is just a cute coincidence. -
Re:what % of Windows is patches?
Oh man, is this history repeating itself?
Will the next version of Windows be called
* MS Apache?
* Apache OS?
* WinApache?
(For those of you who don't know, Apache Webserver was called that because originally it was A-Patchy Server) -
Re:Easy
Ugh... hate to say it... Outlook client using exchange.
Outlook? You could use Evolution or Moz Mail + Moz Calender (soon to be Moz Thunderbird + Moz Sunbird).
Exchange? You could use Exchange4Linux or Apache James + JiCal or OpenGroupware.
There are decent Exchange replacements out there, quite a number of them. We just don't seem to be able to generate the same kind of awareness that we can for other office components. -
Re:Some suggestions.
There question is, "Is your approach the same as all the other design companies out there?" If so, that's not much of a business plan. If you really want to do this, because every man and his dog is doing it also, you have to offer far more than there average WD out there.
When clients ask your advice, your knowledge in this area is a major asset, do you have real knowledge in this area? If so, give them real estimates of what sites and strategies really cost, now, in the near future and down the track, and show them how much time THEY will have to invest into the site. If they value you honesty and integrity, they are also clients worth keeping and working with, if they are just out for the cheapest solution, you can't help them when they get burnt (or maybe you can, when they come back to you realising what your expertise is really worth).
That means really learning Markup, HTTP, and server side management, and programming.
Don't just learn Dreamweaver or some Web Publishing Tool. Learn the ins and outs of Markup, learn the W3C standards, how to implement them, where to implement them, and where not to implement them. You have to learn this stuff to set yourself apart or be a class above the rest.
You should know what is happening on the server side and manage it best of practice and HTTP so you know how to best deliver and work with content.
PHP and MySQL are good to learn. One of the benefits is you can find hosting easily. But if you have a growing client base you should think seriously of planning to lease your own dedicated server in the near future. This way you can configure the server, offer more services, better services, niche services. Offer a Control Panel, etc. This also developing expert knowledge in Linux/BSD, or hiring someone to manage your server.
Find one or two CMSs that you can work with and offer this expertise and way to manage content for you clients.
Find other good Open Source products and work with them.
Keep an eye on Apache/Cocoon/Lenya and learn that way of delivering content. This will allow you to build specialist knowledge and offer far better solutions than most clients have access too. You'll need you own server for this. But take a look at this when thinking advanced open source CMS.
Take all the other advice here, even the ones that say, "Don't do it!", Think about it at least and write a good business plan that allows you to grow in a way that offers more than the average WD.
-
Apache is too, and solution to all patent problems
I'm surprised nobody posted about Apache which has been protesting this for several days now.
And now for the solution to all patent issues (if respected countries would just enact it):
Patents are devised to protect an entities investment in their research and promise the possibility of gain from doing the research. Unfortunately patents last an arbitrarily long time, and can really stifle advancement in the field (duh). So all we need to do to counteract these problems is to provide monetary incentive to companies without sacrificing the rest of the market. To suffice this equation: all you need is a R&D market. People invest in the R&D market on problems which they think have a likelihood of being solved. This finds a natural balance of urgency which companies see and invest their time and money into finding the solution to the problem. First company to the solution, files with the R&D, R&D verifies, then company gets paid. Thats it! -
Re:What's the point of this?
What message is this supposed to send?
If Apache can become the world's most popular web server, and lead the field in a number of ways without the use of patents, and giving away their code to anyone who wants it, and explicitly states that they should not have the option of protecting themselves against competition in this way , then perhaps it will make people take notice and start asking questions. Important questions, like why are we doing this?
-
Apache too
Okay, so they just have a notice on their main page, but it's still enormous, considering they have 60% of the market share for public websites.
-
Re:Apache Software Foundation pageI'm surprised nobody's mentioned that Apache is down too.
That's because it's not. Their front page talks about the issue, but then they have a continue on to apache.org link which takes you to index2.html. This is also the case on their sub-sites, like httpd.apache.org. If you click on that link, you'll see that the Apache site is there. Sometimes we do need to read beyond the first setence of websites, even if this is Slashdot.
-
Apache Software Foundation page
I'm surprised nobody's mentioned that Apache is down too.
Sigh... they had to choose the last bloody day I can download anything before I move (after which I'll be without Internet access for a week).
(Then again I can probably hold off on installing a webserver until my net access is back.) -
The Ant Project as well
http://ant.apache.org/
Although, it looks like this was only supposed to be on August 27th, but they have kept theirs up. -
Apache too
-
Our feathered friendsAll the apache projects sites have a message about this in their front page.
-
Re:Struts equiv in .Net?
I don't think there is one. I don't know Struts (although I do a lot of coding in ASP.NET). The Struts FAQ says that Struts is "Struts combines Java Servlets, Java ServerPages, custom tags, and message resources into a unified framework." and "Struts uses a special Servlet as a switchboard to route requests from Web browsers to the appropriate ServerPage."
.NET combined with Visual Studio .NET kinda does that, but it seems like there has to be more to it than that. Is there? -
Re:Apache 1.3.14 is not a multithreaded web server
The lameness is believing that it will do anything to protect you. The script kiddies look for vulnerable servers by trying the exploit itself, not by believing the version number the server reports.
And the parameter that controls this (ServerTokens) is not new to 2.0, it's been in the 1.x series for a while. -
Re:Get your facts straight
Wouldn't that be a bit stupid since there's a UnixWare port of Apache.
-
Re:DocBook and SVG
For PDF output, there's FOP. Again, you'll need a JVM.
FOP can include SVG, via the Apache Batik renderer. I find FOP a bit lacking however, especially font handling seems to be a problem. Free alternatives include PassiveTeX (built upon TeX as the name suggests, so quite good-looking output, but a pig to install and lacking lots of formatting objects) and xmlroff (Sun sponsored, built on Gtk2's Pango renderer, still in its infancy).For structured graphics, I recommend SVG. However, I'm not sure what tools are good for generating it. And I'm not sure if FOP can handle it.
Basically, XSL FO rendering with free software isn't where it should be. One could of course use a proprietary renderer, but they tend to be pricey, and not everybody wants to go that way. Personally, I have decided to stay with the DSSSL toolchain (i.e. Jade) for PDF output for a while, but using XSLT for HTML. Jade works with XML documents just as well as with SGML, but of course, this is a maintenance nightmare.
-
Another way to find "secret" data
How many people actually protect their website
statistics?
Adding a simple /stat/ or /stats/ or a variation
with a combination of "web" or the name of any of
the common statistic generation programs gets you
access to the statistics of a *lot* of websites.
Then from the stats you could find any "hidden"
data which is not linked on the site including
internal company documents, girlfriend's nude
photos or mp3s.
Alternately you could just google for the
statistic reports of sites and get there
more easily.
This is another case of ill informed or lazy
users not following what should be a simple
security policy which could cause serious
repercussions.
For those who want to know how to protect
yourself, read this link. -
Search engines are not always internet portals
Something a lot of folks are missing here is that search engines are used in applications, intranets, individual sites etc as well as Google type whole-internet portals.
When you click on 'Find Files' in Windows, or look for a song in your chosen P2P app, or look something up on your O'Reilly CD Bookshelf, or search /. for an old article, that's a using a search engine just as much as Google is.
If you're interested in something for your own project, lucene is a great application-centric search engine. It's just a bunch of Java classes that you call from your application. Or you can use a website-centric engine such as htdig if you're dealing with an intranet or website rather than an app. They're both GPLed I think. -
Lucene (index and search engine)
Check out Lucene, the indexing and search engine used by Nutch. From what I've heard, Nutch is mainly the spider/crawler used to gather documents.
-
Re: non-system users
most daemons/services are capable of authenticating users via PAM or from an SQL database.
for apache, PAM auth, mysql auth and postgresql auth.
for ftp you could use proftpd and ignore system accounts completely, it supports quite a few alternative methods.
for the email solution use something like vpopmail with no system users and supported by quite a few MTA/POP3 agents.
If you don't want the OS to handle the passwords, then you can set it up so it doesn't. By default system accounts are normally used which I assume is from the era of people having shells and doing * from it, ftp/read mails/etc in which case things would use the standard system accounts.. -
Re: non-system users
most daemons/services are capable of authenticating users via PAM or from an SQL database.
for apache, PAM auth, mysql auth and postgresql auth.
for ftp you could use proftpd and ignore system accounts completely, it supports quite a few alternative methods.
for the email solution use something like vpopmail with no system users and supported by quite a few MTA/POP3 agents.
If you don't want the OS to handle the passwords, then you can set it up so it doesn't. By default system accounts are normally used which I assume is from the era of people having shells and doing * from it, ftp/read mails/etc in which case things would use the standard system accounts.. -
Re: non-system users
most daemons/services are capable of authenticating users via PAM or from an SQL database.
for apache, PAM auth, mysql auth and postgresql auth.
for ftp you could use proftpd and ignore system accounts completely, it supports quite a few alternative methods.
for the email solution use something like vpopmail with no system users and supported by quite a few MTA/POP3 agents.
If you don't want the OS to handle the passwords, then you can set it up so it doesn't. By default system accounts are normally used which I assume is from the era of people having shells and doing * from it, ftp/read mails/etc in which case things would use the standard system accounts.. -
Re:New Oxford American DictionaryI'd assume the "speling" module is called that on purpose, you HAVE to be able to see the irony in that name.
From http://www.apache.org/~rbowen/presentations/urlma
p ping/slide35.html;mod_speling
Yes, it is spelled that way on purpose -
From newbie to J2EE
You can go from knowing nothing about Java to programming J2EE systems by following this plan (I'm serious):
- Read Beginning Java Objects. I agree with just about everything the reviewer says about this book. It's very well-written for people who've never programmed using OO before (but not for people who've never programmed in procedural), and in fact isn't even really a Java-specific book until the last third of the book. It's a great way to learn the concepts and terminology, which are all-important in the OO world.
- Read Thinking in Java by Bruce Eckel. BJO is a great book to get the basic ideas down, and TIJ is a little too advanced for the complete newb -- but TIJ will teach you the rest of the language, the things that BJO leaves out. Also, the latest edition of TIJ does go into test-driven development.
- Learn how to use the Ant build tool. Whether you do this from a book (Java Development with Ant is excellent) or from online tutorials, Ant will spare you much agony and will keep you from becoming overly addicted to a particular IDE's build conveniences.
- Read Core Servlets , which will teach you the basics of servlets and JSP (the web layer of J2EE development). It will help if you already have a strong concept of the HTTP protocol from previous experience in PHP, ASP, Perl, etc.
- Join a J2EE-focused mailing list (such as struts-user, j2eerocks, etc), and read the posts. Whoever said you don't learn via osmosis never subscribed to a mailing list -- even if only subconsciously, you will start to pick up terms and concepts such as design patterns or unit testing. Eventually you will find yourself answering the most-frequently-asked questions (usually with a link to the archives).
- Learn how to use Struts and JSTL, using either online tutorials or a book (any will do). This will help you unlearn the bad habits of using scriptlets as they are taught in Core Servlets (see above). It's good to know what they are and how to use them, but stick with an MVC framework and JSTL for real development.
- Now you need to fine-tune your Java knowledge. Read Sun Java Certification by Kathy Sierra and Bert Bates, which practically guarantees you'll score above 90% on the SCJP. At least you'll master all the nuances of the language that were left out of BJO and TIJ. This book should not be ignored.
- Read Mastering Enterprise JavaBeans by Ed Roman et al. This is the final stage of your J2EE training, where you learn how to write and use EJBs. Then realize that for most applications, EJBs are overkill and go back to using DAO with JDBC or some other persistence framework. But you should still know this stuff.
- Finally, start refining all of this knowledge by reading some patterns books like Agile Software Development: Patterns, Principles, and Practices, or Patterns of Enterprise Application Architecture. Fowler's Refactoring is pretty good too.
Of course, you should be actively engaging with these materials and coding as you go along, or none of this will stick. It took me about ten months, following this lesson plan, to consider myself a J2EE programmer -- and I started at the beginning, knowing nothing but PHP and Perl. I'm now an employed J2EE programmer (becoming a rarity in this country).
-
Re:Interesting idea
or an instance HTTP, it could use some on the fly compression (which would speed up things a bit).
HTTP supports on-the-fly compression. Your browser can specify which compression types it accepts with the Accept-Encoding header.
Your web server can support it by sending a Content-Encoding header.
For apache support, see mod_deflate. -
Re:Au Contraire...
Perl development is so much quicker than JSP servlet development partially because there are so many well-written and thoroughly debugged CPAN modules written for Perl
Not to burst your bubble, but there's oodles of "well-written and thoroughly debugged" code available for Java (JSP/Servlet) programmers as well. Check out OpenSymphony, the Jakarta Project, etc.
(and partially because Perl is simply so much quicker for development!-P)
I'd say that's a debatable point. :-) -
It Should
does it run the GNU/Debian process?
It should. Seriously....One of the biggest problems with running Linux for non-geeks is configuration. Every app has its own
.appnamerc or appname.conf with its own peculiar syntax and options. Now that we have a standard for filling out forms, we can build the infrastructure for a single front end to them all.To enable Web content developers to meet these challenges XForms will be designed to cleanly distinguish between form instance data, form description (called the em>XForms Model), and form presentation (called the XForms User Interface).
So, for each *rc or *conf file, we need an XForms Model that describes the form and how to validate it, and an X-forms-aware UA like Mozilla (but you can't get there from here!), or perhaps on the server side through Apache and Cocoon's XMLForm to handle the work of getting the input. XForms can become the glue that holds Linux together.When users can right-click on something, select Properties from the menu, and configure it in a consistent interface, one of the biggest impediments to Linux use by non-techies will be removed.
-
Re:problem with robots.txt tutorial
The HTTPD user should be a member of each users group so you don't have to set world rights to your files. Assuming it's just hosting and no other rights are required.
I like this idea but as a customer if I can run CGI pages or PHP (without safe mode) then it's easy to read everyone's files anyway because the script runs as the apache user.
Yes suEXEC exists but it places restrictions on the CGI which limits customers programming.
I have used CGIwrap and really liked it. Also it is some of the nicest C code I've ever read/worked with.
I heard Apache 2.0 may allow for the listening process to fork and change it's UID but 2.0 still isn't considered stable by most. In fact php.net says Warning Do not use Apache 2.0 and PHP in a production environment neither on Unix nor on Windows. To be honest I haven't tried apache 2.0 in the last 10-12 months. When I did it had threading issues so I swichted back to 1.3. -
Support CALSCH, CAP, and James
Kroupware and the others are nice. But what we really need is for CALSCH http://www.ietf.org/html.charters/calsch-charter.
h tml to finish with CAP http://www.ietf.org/internet-drafts/draft-ietf-cal sch-cap-10.txt . As you can see CAP is on it's tenth public revision.We need a standard that specifies the transport of the calendar protocol, badly. We need CAP finished.
The special folder in IMAP scheme will work. But is a little on the hackish side, and incompartibility between servers is a serious problem, even with standard formats, like iCal based schemes.
Next we need a cross platform messaging server. Although, it does not support IMAP as yet, Apache James is my favorite, at http://james.apache.org. First of all it has a strong group endorsing it, the Apache group. That's going to be important for selling this thing to risk-adverse corporate types. Second, it's Java, so I trust it a little more in the buffer-overflow department. Also it would probably integrate nicely in current J2EE setups. I've heard people are doing this.
James needs IMAP and CAP support. And then we will have a decent shot at the less entrenched sector of the exchanges market.
-
There is solution but in apache2
apache 2 supports prechild MPM: "Multi-Processing Module allowing for daemon processes serving requests to be assigned a variety of different userids" Here is link: perchild It solves your uids permission part of a problem.
-
How we handled this exact situation.I was asked to build a commercial b2b exchange a few years back and simultaneously to that I had been devoting a lot of energy to thinking about building a better app-server based around xml, jini and javaspaces. So when approached I said yes - as long as I can pick the development team and get cut in on the deal. In retrospect I would have not gone for the equity but that's a political issue not a technical one.
I put together a small team of people I knew who were also interested in the same general thing, and who were all fleeing like lemmings from the boo.com meltdown, and we thrashed out a rough design and worked out a budget and, issues of funding and business admin aside - sheesh startups - we built a bespoke sattelite reinsurance exchange based on cocoon, tomcat, apache server, outrigger and the jini1.0 stuff. we built it in three layers. the first, as the end result was to be a web app, was in retrospect not dissimilar to apache struts but tied cocoon to the javaspace (you can see more detail on this at O'Reilly's OnJava site) and used xsl to render the pages. The little bit of bespoke code we wrote to shuffle objects between cocoon and the space we dubbed Crudlet and declared it to be open source targeted, and registered crudlet.org. The package name was org.crudlet. The next layer provided the generic b2b exchange and negotiation layer. We called it tennis because it represented a series of exchanges across a net. It too provided very generic functions and so was also open source targeted as org.curdlet.tennis as it builds on crudlet. The final layer contains the actual business knowledge - What is an offer of capacity on M$300 worth of Ariane 5 launch. What's the launch schedule for the next few years etc etc. What's a reinsurer? These things all went into a com.risk2risk package that extended the classes in tennis and crudlet and was considered to be proprietary to the company.
We recruited developers from the various OSS projects we used when we could, and made ot very clear to new recurits how the code layers were structured. We also got complete approval from the Board of Directors to pursue this strategy. The fact that I was one of three like-minded technical directors also helped of course. But we were well outnumbered by the suits who were very sceptical at first. A further project grew out of the team - a kind of javasapce backed version of hibernate or castor - called javastore but it never really went anywhere.
Much of what we open sourced was rapidly superceeded by things like Struts and Hibernate and Karajan (which grew out of crudlet) and when the whole reinsurance industry melted down post Sept 11 2001 and the whole project was put on ice by the investors, the only code that was really iced was the proprietary layer. The developers showed incredible loyalty, committing bug fixes on their very last day of work that kind of thing, and I still keep in touch with many of them.
The business arguments were all around costs. OSS == cheaper. Developers will work for less if they get to keep their code after the project is done. Developers can be excited by things other than money. As long as the basic rate is comfortable for them, and that's always a subjective matter. Sure there are other good reasons for OSS, security, corporate tranparancy and accounability, due dilligence etc, but the bottom line with investors is always the bottom line. Anything else is just woolly for most of these people. Also the ethos of open source permeated the team - everyone worked on the inside of a huge oval shaped ring of desks. lots of power mac g4s running osx, a nice rack with some great hardware in it, a groovy office in soho, cvs servers, a network admin who loved his job. and everyone being paid to write code 90% of which they would get to keep afterwards.
-
Re:mysql's approach...
dual licensin
I think we're missing the point. The question is not how to license the same code in two ways, it's how to differentiate between framework code and application code.
How does one define the difference between a framework (i.e. Jakarta Struts), and an application written with that framework? If there are enhancements made to the framework to satisfy issues related to or which directly impact the employer's application, where does that code lie?
-
use good librariesIn addition to the good advice proffered by the article, I should also like to add that using good libraries can make a world of difference.
For example, for the C program that I'm writing right now, I decided to use GLib -- the base utillity library used by GTK.
I initially chose it for portability reasons, but soon discovered it had a wealth of cool stuff in it. In addition to providing the standard data structures (trees, hashes, linked lists), it also has a string type ( GString, ) which handles a lot of the string issues that C programmers get bogged down with.
A lot of the gotchas (buffer overflows, et. al.) mentioned in this article have to do with these string issues, and using GLib's GString data type has enabled me to avoid those.
There is another library similar to GLib, The Apache Portable Runtime, used in the Apache webserver, and also in Subversion.
In addition to all this, I'm using XML as the storage format for my program, mostly because libxml takes care of the file parsing issues so I don't have to.
Bottom line, choose your libraries carefully, they can make a world of difference.
Thomas
-
Re:$1550 just to use it? No thanks.
$1550? That's nothing. Chump change.
The problem is not that QT/Win is not free-as-in-beer. The problem is that QT/Win is not Free-as-in-speech.
Trolltech released a Non-Commercial edition of QT/Win 2.3. The license basically said you couldn't make one thin dime off anything built with the Non-Comm edition, and since it was incompatible with the GPL, you had to add an exception to your license. Nobody took that license seriously, and Commercial license sales dropped. Trolltech was forced to end the line after that one release. (IMHO, had they gone GPL in the first place, they wouldn't have had that problem. The GPL gets respect.)
Not that you could find that out from their FAQs. You have to go digging through the QT-Interest mailing list archives. All the FAQ has is flippant sayings like "When Windows is completely Open Source...". Bah. Like Microsoft really cares about Trolltech. Windows-based developers are the only ones getting screwed.
In the end, Trolltech decided that "Windows compatible" and "Free/Open Source" are mutually exclusive. (Pay no attention to the cross-platform Open Source projects behind the curtain.)
But I'm not bitter.
-
Re:On Perl and command-line utilitiesTo be useful, numutils should go beyond what is trivially available in perl and awk. That might involve using C, or just a sufficiently complex script. I don't think numutils is sufficiently complex enough as it is now to be distributed. The issue is whether it fills a particular void, and how well it meets that need. The random utility is useless as written. To generate a random number why not just read the perldoc on srand?
Suso Banderas should follow up on this goal to implement the ability to simultaneously operate on columns of data.
A month ago, I wrote an awk script which calculates mean, standard deviation, variance, min, max, sum, and count (see below) for a given stream of numbers.
#!/bin/nawk
$1 ~ /[0-9]+/ { x = $1; N = N+1;
if (N>1) { if (min>x) {min=x}; if (x>max) {max=x}; sumx = x + sumx; oldavgx = avgx;
avgx = avgx + (x-avgx)/N; varx = (N-2)/(N-1)*varx + N(avgx - oldavgx)^2; }
else { min = x; max = x; sumx = x; avgx = x; varx = 0; }
} END { print avgx,sqrt(varx),varx,min,max,sumx,N }
This took me very little time to write, and it covers half of numutils scope of effort. The numutils package should shift focus away from calculating means and bounds.
This is my suggestion: For each utility, determine what numutils does which is a pain to accomplish in awk or perl. Focus on those areas.
Some of these scripts are excellent examples of what can be accomplished in Perl, though. And better commented than most.
Personally, i'm interested in finding something that would compute the median and percentiles for a given stream of input data. I was excited to see "numutils" but was dismayed as not finding the variance. I would like to see an open source version of something like the NAG utilities such as nag_summary_stats_1var or nag_5pt_summary_stats.
I guess I'm just waiting for the the Commons-Math Jakarta Mathematics Library project to get released.
-
Consider Java *and* SVGDon't forget that the Batik SVG toolkit includes a Java Graphics2D class that outputs to SVG. This means roughly that any class that draws stuff to the screen can be quickly tweaked to draw the same stuff to SVG. If you find a pleasing Java graphing package whose source is open, you could use it to make SVG graphs on the server. (I assume when you claim that java is slow, you are referring to client startup or something.) Just remember to gzip the output stream because svgz documents are about 20-30% the size of their svg equivalent.
Finally, it should be noted that the upcoming Adobe SVG Viewer 6 (available now in beta plays nice with Mozilla / Netscape 7. (Although a win32 binary only is provided, the team at Adobe stated that they are building for Linux and OS X, too.) Assuming ASV6 will be out by the time your project is done, platform breadth isn't a problem for you.
-
Re:non-Java
There is a really good editor plugin for the Velocity template engine.