Couple of good books
http://www.xprogramming.com/xpmag/books20020118.htm
It was originally planned that I should wake up early next morning, or just stayback tonight to read some of those few stuff that I have. Still... having a discussion with this good friend of mine is not such a bad thing either, particularly that I learnt something so much today.
Now... I was thinking about building a parser to parse web pages... Was.
Display your current song as custom message in various IMs.
eg. Such as a Spam and Anti-Virus server
This is what I got from one postfix's how to :
Relayhost
Here you define where to deliver outgoing mails. If you do not provide any host, mail is delivered directly to the destination smtp host. Usually your relayhosts are your internet service provider's smtp server.
relayhost = relay01.foobar.net relay02.foobar.net relay03.foobar.net
Fighthing against SPAM
Postfix has some built-in filters that allow you to stop obvious SPAM attempts. In particular these are:
smtpd_helo_required = yes
This switch in main.cf means that SMTP clients connecting to your mail server must give a »helo« when connecting.
smtpd_recipient_restrictions
This option in main.cf lets you define different rules on the handling the acceptance of mail. The following example simply rejects all invalid sender and recipient data. Additionally it defines how to lookup known spammers from online blacklists.
smtpd_recipient_restrictions =
reject_invalid_hostname,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
reject_unauth_pipelining,
permit_mynetworks,
reject_unauth_destination,
reject_rbl_client zombie.dnsbl.sorbs.net,
reject_rbl_client relays.ordb.org,
reject_rbl_client opm.blitzed.org,
reject_rbl_client list.dsbl.org,
reject_rbl_client sbl.spamhaus.org,
permitmime_header_checks=pcre:/etc/postfix/body_checks
MIME header checks let you reject mail which contains malicious MIME content, i.e dangerous attachments such as Windows executables. Create the file /etc/postfix/body_checks. The following example rejects all mail that contains potentially dangerous attachments. In my experience, using this example would filter out most of viruses delivered by e-mail. In any event, a virus scanner should always be installed.
/^((Content-(Disposition: attachment;|Type:).*|\ +)| *)(file)?name\ *=\ *"?.*\.(lnk|asd|hlp|ocx|reg|bat|c[ho]m|cmd|exe|dll|vxd|pif|scr|hta|jse?|sh[mbs]|vb[esx]|ws[fh]|wmf)"?\ *$/ REJECT attachment type not allowed
Interesting program, esp for those who are stuck in the firewall that blocks FTP traffic. If you are too lazy, just use the client provided on their website. Of course, you might not want to access sensitive data using FTP client at a remote site that don't belong to you, still, for normal FTP download, it is good enough.
I don't really know why I post this, but Hartanah.net is under maintenance currently.
In this day and age, I don't really know why someone would want to hide their HTML. Still, this application is useful if you want to have client side authentication(ie. just using JavaScript, no round trip to server to authenticate).
If you are looking for fast, simple java framework, take a look at this book.
Something interesting I found in someone else's blog. :-)
Something I found in which regards the comparison of J2EE and other stuff... from Slashdot. Pretty enlightening. J2EE is a lot of thing, but sure isn't everything. For simple2 stuff, you might be better off using something else other than J2EE. For something that is complicated and will require a lot of maintainance, addition later, you might want to consider J2EE, esp if you're connecting legacy system.
Re:In which world? (Score:5, Insightful)
by Eric Giguere (42863) on Monday November 22, @07:41AM (#10887072)
(http://www.ericgiguere.com/do-not-click.html)People often equate J2EE with web applications and so do the J2EE-vs-LAMP comparison without the right information. J2EE is more than just web applications. You can build non-web clients that use the J2EE component model (they can even be built in other languages and use CORBA mappings). J2EE provides connections to legacy systems. J2EE supports asynchronous messaging. You can do pretty much everything transactionally with J2EE as well, so that if something fails along the way you can rollback your changes.
Actually, comparing J2EE to LAMP is wrong in another way. A J2EE server can run on Linux. An Apache web server is often used as a front end to a J2EE server (especially when you integrate the app server within an already-existing web server infrastructure). You could use MySQL (though I think you'd better off using ASA [ianywhere.com], but I'm biased) as long as you make sure to use transactional tables. There goes the "LAM" part of "LAMP".
So really, you're comparing the Java-based J2EE framework against similar Perl/PHP/Python frameworks. At least, that's what you should be comparing. Maybe for pure web apps the latter are better. I don't know, but you have to compare oranges to oranges.
Eric
JavaScript is not Java [ericgiguere.com]
Re:In which world? (Score:5, Informative)
by killjoe (766577) on Monday November 22, @12:22PM (#10889305) What ZOPE doesn't have.
Ability to publish zope objects with SOAP
CORBA support.
Message queues
Object relational layer
transaction support for relational databases
RMI or it's equavalent in python
Common logging infrastructure (log4j)
Timed services (cron like device for calling certain code)
Naming directory.
But what it lacks more then anything else is good documentation. Yes there are lots of products but the vast majority of them have no more then a one sentence explation.
FInally a plea to whoever is reading this.
I hate Java, please please please build a J2EE like container for python or ruby make sure it has everything I have listed above.
Re:In which world? (Score:5, Insightful)
by j3110 (193209) <[moc.liamg] [ta] [llerretmas]> on Monday November 22, @12:56PM (#10889679)
(http://slashdot.org/) I think people are seriously misunderstanding the purposes of each peice of software... So I'll give it my best shot to clear it up.
1) PHP
For web scripting.
Do something small and fast.
Will run fast.
Won't scale for the strictest rules of scaling.
2) J2EE
For everything big, not just web sites.
Do something large and right, which takes more front time, but much less time to keep up. A good way to program yourself out of a job, easily. (Can be done with PHP, but not really stressed so much.)
Will run fast, but can consume a lot of resources in the process. If it's running slow, just give it more memory, and learn -Xmx settings.
Will scale in all senses of the word.
Now... a little on the scalability...
1) Load balancers are only 1 section of a huge problem, and you can load balance anything, including LAMP.
2) Transaction support is new to the M in lamp, and no one uses them in the P part. J2EE has a transaction system (JTA) that will combine all your data access into one big happy transaction, on all your resources that support JTA (includes JDBC).
3) Session state replication is completely absent from LAMP. A server could catch fire in a good J2EE configuration, and when the user clicks submit, they wouldn't even know, because at least two servers will have the users session id.
Ok... now about why it takes less upkeep in J2EE land...
1) Specs require backwards compatibility in all new versions. I've had problems with every section of LAMP on this issue, but never on J2EE.
2) A JSP page is only supposed to display information and forms. There is no logic in it. If you have problems with this, I recommend STRUTS. Some people recommend WebWork or Spring. It's a matter of taste, but STRUTS is still the top dog. In PHP, you have to work hard to not mix the two. I used to do action= in the get to simulate this behavior, but it's still not as good, just workable.
3) If you want a rich application accessing your data, you can do it through the same CORBA, SOAP, or XMLRPC calls. The newest spec from J2EE allows you to turn a normal function on a Session Bean (EJB) into a web service that can be called from anything, including JavaScript on Mozilla or a Flash animation (I have done this). Since it's calling the exact same method, if the database changes, you only have to update the code in the least number of places possible.
Features completely abscent from LAMP:
Good web-service support (you can fake it, but Zope actually does XML RPC for you)
JTA (Transaction system)
JMS (Messaging System for asynchronous processing)
Things commonly thought to be missing from Java, but aren't:
Easy scripting of SQL (The Java Standard Taglib is far easier to use than anything I used in PHP or Perl, but Zope probably has everyone beat there)
Speed (the bottleneck in 99% of all software is disk related... If you know how to make a database properly, it will be fast.)
Genuine concerns with Java:
Memory consumption.
Threading on your particular platform.
Lagged support for the newest features on all platforms.
Doesn't automatically pool database connections.
Can be hard to configure properly.
Requires more knowledge than it lets on.
MySQL no place? It has many places... (Score:4, Insightful)
by tizzyD (577098) <.me. .at. .tizzyd.com.> on Monday November 22, @10:24AM (#10888165)
(http://www.tizzyd.com/) Just like you don't use Oracle to handle a simple little db holding some responses to a recent questionnaire or for a quick little conference, I would not use MySQL for a big data warehouse or SAP deployment. Silly db admins have gotten it into their head that DBs at all levels should be compared equally. That is simply not true. Use what's appropriate where it's appropriate. Don't use C for a quick data analysis tool (try Excel first), and don't develop full enterprise apps using cobbled together MS-Office solutions.
Where to go ? (Score:5, Interesting)
by KingRamsis (595828) <kingramsis@noSPam.gmail.com> on Monday November 22, @06:20AM (#10886755)Slashdotters help me with this; on the right I have an over-engineered J2EE with a dozen of work arounds that are over hyped like EJB facades and dozens of frameworks that are difficult to learn and slow (..and kinky, every one and their mom developed a framework), and there are no free (as in beer) quality servers (I know JBoss but good luck without the documentation), on the extreme left I have LAMP, a loosely coupled system, PHP is popular but lets admit it is an ugly hack just looking at PHP5 reconfirms my believe that PHP didn’t handle it fast growth properly, in the middle there is Microsoft which I hate and don’t want to consider., I want a decent middle ware, that is cross platform, fast, and well documented, free as in beer (and preferably as in speech also).
Re:Where to go ? (Score:5, Insightful)
by Enygma42 (301776) on Monday November 22, @06:29AM (#10886797)
(http://www.corksurf.com/ | Last Journal: Thursday March 18, @11:48AM)Java is well suited for middle-ware too. You don't have to install a big heavy duty J2EE server and enterprise level DB server. Tomcat & MySQL does the job just fine for smaller operations.
Take a look at O'Reillys "Better, Faster, Lighter Java"
http://www.oreilly.com/catalog/bfljava/
IMHO Java scales very well, from small prototype projects right up to enterprise level apps. PHP is fine for the smaller stuff but I'd rather poke my eyes out with a white hot needle than develop and enterprise app with it.[ Parent ]
Re:Where to go ? (Score:5, Informative)
by JavaSavant (579820) on Monday November 22, @07:14AM (#10886959)
(http://www.ryannorris.com/ | Last Journal: Friday November 07, @02:36PM)Who needs EJB when there's Hibernate http://www.hibernate.org/ [hibernate.org] and Spring http://www.springframework.org/ [springframework.org]. Persistence, Transaction Management, and SQL generation in one tidy package. And it works on any J2EE app server, no matter how lightweight or robust.
Not that I have qualms with any attempt to provide these services in PHP. It's not a matter of having just one tool in your toolbox, but rather knowing which tool is right for which job. My only response to the original poster is "I don't want to start a flamewar, but if you aren't a sound enough engineer to know when to use which tool, you pretty much suck."
Use Lisp (Score:5, Interesting)
by RAMMS+EIN (578166) on Monday November 22, @06:53AM (#10886874)
(http://inglorion.net/)Use Lisp. Seriously. It's one of the oldest languages out there, but it has features that other languages can only dream of (in fact, when other languages improve, they almost invariably get closer to Lisp).
The language is well-documented. Implementations range from simple interpreters to complex, optimizing compilers (they are on par with C, and sometimes outperform it). It has packages for many purposes, enough to implement Yahoo! Store at any rate.
People complain about the parentheses (some say LISP is short for Lots of Irritating Superfluous Parentheses). That's a valid point. In C syntax, at least there's variation. Besides parentheses there are curly braces, straight brackets, commas, semicolons, etc. Seriously, the parentheses make for a very simple and consistent syntax.
Lisp allows you to program in whichever paradigm suits you best (pick the right one for the task at hand). Functional, object oriented, imperative, it's all there. It's macro system is so powerful it lets you basically generate programs, rather than writing them. Add garbage collection, higher order functions, dynamic typing (although static typing can be used for performance), arbitrary precision arithmetic (integers are not limited to 32 bits), multiple inheritance, and tail call optimization (recursion in constant space), and you have a language that blows all others out of the water.
Why does nobody use it? Fear, uncertainty and doubt. People think it died with AI. People think its old, so it won't be up to modern tasks. People can't get over the parentheses. The boss won't approve it. Nobody else uses it, so it's hard to get support. Any number of reasons.[ Parent ]
Re:Use Lisp (Score:5, Insightful)
by Anonymous Coward on Monday November 22, @07:00AM (#10886897)Why does nobody use it? Fear, uncertainty and doubt. [...] People can't get over the parentheses. The boss won't approve it. Nobody else uses it, so it's hard to get support.
You know, I think those were all pretty valid reasons.;-) [ Parent ]
Re:Use Lisp (Score:4, Insightful)
by hey! (33014) on Monday November 22, @09:17AM (#10887600)
(http://kamthaka.blogspot.com/ | Last Journal: Thursday February 19, @09:48PM)Lisp needs an application server like Zope. Zope has driven many to learn Python so they can create Zope products.
Re:Where to go ? (Score:4, Insightful)
by Eric Savage (28245) on Monday November 22, @07:09AM (#10886938)
(http://www.hotpop.com/) Your assessment is unfortunately a common one. Class, repeat after me, J2EE does not mean you have to use EJB. The "dozens of frameworks" is a growing problem, caused by picking bad/inappropriate ones and/or weak architectural management.
In my experience, as a developer and as a web user, a simple non-EJB java webapp running a relatively mature framework (or not), on something like Resin is capable of tremendous performance, but I'll state that as opinion to try and avoid baiting some PHP flametard into posting how many views his anime forum can handle.
If you are developing for something that isn't going on a server you run, with a nice simple Java webapp all of a sudden you (or more often someone else) can choose your OS (Windows, Mac, Linux, Solaris, etc), your DB server (MySQL, PostreSQL, Oracle, etc), AND your web server (Apache, IIS, none, etc). Thats something that MSFT and LAMP-heads don't offer (without compromising their acronym) and something that client IT departments will very much appreciate. A "pure" admin (i.e. one who doesn't consider him/herself a developer), HATES being told by some outside developer to patch their systems, or run something they don't know or don't like.
Still no TPC (Score:5, Interesting)
by dras (153525) on Monday November 22, @06:22AM (#10886767) For the majority of enterprise projects I've worked on, we wouldn't event consider a platform that didn't perform Two Phase Commits (MySQL) nor supported distributed transactions. This stuff still has a long way to go before it's to be taken seriously.
Do not equate JAva to J2EE (Score:5, Interesting)
by Trinition (114758) on Monday November 22, @06:27AM (#10886786)Not to start another PHP vs. Java flame war, but it looks like LAMP is starting to grow up, and that it is much better suited for next generation applications than J2EE
(emphasis mine)
Remember, folks, Java is more than just J2EE and J2EE is only a part of Java. There are many enterprise applications written without the cancer that is J2EE. There a great number of alternative frameworks for building enterprise applications.
Personally, I feel that J2EE justifies itself because the bloat of a J2EE server means you have to have multiple instances to support an equivalent load a non-J2EE solution could handle on a single server.
- Re:Do not equate JAva to J2EE by dras (Score:1) Monday November 22, @06:56AM
Re:Do not equate JAva to J2EE (Score:4, Insightful)
by CountBrass (590228) on Monday November 22, @07:14AM (#10886961)Personally I think you're wrong. J2EE is great if you need the features it supports: JMS, distributed transactions, database connection pooling, jsp/servlets etc etc.
Now if you'd said "EJB", which is only a part of J2EE: and by far its worst part, then I'd have agreed with you. EJB is the epitome of what happens when something is designed by committee.
LAMP may be fine for web-based applications... (Score:5, Insightful)
by altgrr (593057) on Monday November 22, @06:34AM (#10886819) ...but doesn't it seem a little silly to base computational applications on what is essentially a glorified webserver? Sure, use LAMP for your shopping cart, but enterprise applications are more than just shopping carts.
"There is no impedance mismatch, everything talks SOAP/HTTP" - well, yes, that's great, but you shouldn't be talking SOAP/HTTP internally. There are faster means of communication, so use them.
"Apparently what is needed is a language/environment that is loosely typed in order to encapsulate XML well and that can efficiently process text" - only on input and output. In intermediary stages, you should be using a much more efficient format. If you're doing something clever, it's going to involve much more than just plain old text.
"J2EE and.NET applications were never designed with grids in mind" - well, I can't speak for
.NET, but J2EE is designed for clustering and distribution. Have you seen EJBs? EJBs are designed for interaction across computers.
RTFA and you'll see that LAMP is being pushed for "text-pumping". Why aren't they saying it's any good for anything else? Because it most likely isn't.
Sigh... (Score:5, Insightful)
by LarsWestergren (9033) on Monday November 22, @06:43AM (#10886846)
(http://www.smirkingchimp.com/) Ok, I had already spent a modpoint in this topic, but I realized it is better to speak up to defend your position than to stand on the sides and give out points to "your" team.
Article is Slashdotted, so I can't comment on the content, but just to reply to some of the posts that will defenitely come up, because they ALWAYS come up when Java is discussed-
EJB are bloated etc:
J2EE is does NOT equal Enterprise Javabeans. J2EE contains classes for lots of things. XML processing, messages, web servers, database connectivity, etc. You don't have to use EJB. Lots of Java developers don't like EJB because they are too cumbersome, and there are plenty of alternatives. Check out for instance O'Reillys recent book Better, Faster, Lighter Java [oreilly.com].
Java is slow:
Startup time for the JVM is still slow yes. This rarely matters for a web/application server. When it comes to running, it is plenty enough.
It isn't open source:
So what. It's close enough.
Ok, that over with, was this darn topic necessary? I like both LAMP and Java. They have their uses, why did the poster and the article have to turn this into a confrontation?
Laughing all the way! (Score:5, Insightful)
by tod_miller (792541) on Monday November 22, @07:09AM (#10886937)
(Last Journal: Wednesday January 26, @05:18AM) I didn't even know there was a PHP and Java flamewar going on! Where do I enlist?
No seriously, it is like comparing apples and oranges. PHP and the wonderous LAMP stack (I have just heard about it, so that is the first stumbling block for its adoption! many companies like to be fast followers) might be able to do what Java does if you look at output, it might even be quick, but that has nothing to do with the costs and development and staffing that real people with real money care about.
Java has a huge demand in industry that is being met with huge interest in terms of capable candidates which is proven by the number of successful and *bearing in mind this isn't a flamewar!* well written open source project out there.
The level of Java competency in the industry is growing enormously as a result, which is a good thing. PHP is also good, and I like PHP, lets not get things mixed up here.
[snip = list of reasons why people choose java, which was boring even me]
Also J2EE is *the* platform for applications running for thousands of users, on machines with 90+ GB of ram, and 24 processors just to handle the data requirements.
Oracle love J2EE. Oracle is a fairly decent enterprise (not just performance, but support and board level confidence) db to say the least.
Now, LAMP might be lovely, but why even pitch it against anything, dear LAMP community, just be, don't try and compare it against anything.
FUD et al.
PS: erm, nerr nerr? u sux0r? pwned? I am loosing my touch at this internet name calling gaff, time to retire.
Ruby on Rails, and Trails (Score:5, Interesting)
by martinde (137088) on Monday November 22, @07:10AM (#10886946)
(http://the-martins.org/~dmartin) This month's meeting at my local Java user's group [cinjug.org] there was an impressive demo on Ruby on Rails [rubyonrails.org]. The presenter built a blogging application live in front of the group, literally in 10 minutes or so. Prior to this demo I had pretty much written Ruby off "just another alternative to perl or python" but I have to say that Rails looks really impressive, enough so that I'm taking a closer look at Ruby.
One of the guys in our user's group, Chris Nelson, is building a similar framework for Java - called Trails [theserverside.com]. He also built a blogging application live during the meeting. It took him a bit longer - perhaps 15-20 minutes. It was impressive as well, although I will say that for Trails you need to know a fair amount about Hibernate [hibernate.org] and Tapestry [apache.org]. Realize that he's been working on this only for a few months and suddenly you see that this work is very impressive too.
Anyone interested in developing web apps might want to check these projects out - very impressive stuff!
Just tools, use them accordingly (Score:5, Interesting)
by AwesomeJT (525759) on Monday November 22, @10:13AM (#10888075)
(http://www.jasongtaylor.com/) I use all of the above technologies, depending on the needs and what I am trying to do.For large scale projects, I use Java. It is great Object oriented language that I can use to the fullest extent. I can get very close to that MVC pattern that is soo useful in large-scale projects. I don't use EJBs -- not needed them yet. I use the JMS, WebServices, JSP/Servlets, etc. We connect to a real database (DB2). J2EE offers a completely different scale with work with. You can do everything from simple web applications to clustered app servers at several levels.
For smaller stuff, I like LAMP fairly well. It is simple and easy to get started, although not great for larger projects (code reuse, management, scaleability). MySQL, again, nice and fast for small stuff. I perfer PostgreSQL because of the power and flexibility. I'm trying to move more towards PostgreSQL especially after recent changes in licensing with MySQL. For these projects in general, I like PHP over Perl for webpages. Perl is still great for admin tools on the console or for confusing the heck out of folks not familiar with your code. PHP is simple and made for website based applications. Again, I'm not going down that path if I know it will grow into a huge project.
The deal is, they are tools. The both have their strengths and weaknesses. Evaluate your needs, and choose the best tool for the job. I use both and love both -- but choose wisely.
Re:I just got myself some new asbestos underwear (Score:4, Interesting)
by Sanity (1431) on Monday November 22, @07:20AM (#10886990)
(http://locut.us/~ian/blog/ | Last Journal: Thursday October 07, @07:15AM)Java is comparatively heavy,Compared to what? Evidence?forces you into an object-oriented paradigmYou can put your entire applcation in one class and pretend it isn't OO if you want.has static typingOh what a terrible terrible thing!and doesn't lend itself well for rapid prototyping and development.Bullshit. It is just as suitable for rapid prototyping as anything else if you know how to use it.
Re:Parent rewritten with some HTML code (Score:5, Insightful)
by altgrr (593057) on Monday November 22, @08:52AM (#10887442) J2EE is overengineered for everything, and darn too complex to learn.
It took me one week as part of a work placement in a summer holiday to learn all about EJBs. Either it can't be that hard, or I'm a genius.
;)
Oh, and I think it's a little contradictory to argue this line, then argue along the lines of just doing some no-brainer form-filling with the application server.
J2EE is about more than just shopping carts, and thus it WILL take longer to learn than a system that's suited to running an online shopping cart.
Java AS suck RAM big time (and CPU too). BEA advises customers to use open-source technology (Apache) to server static content, cuz' it would kill the server.
That's because application servers are not web servers. Sledgehammer and nut spring to mind.
PHP actually is running the internet far more than java has ever been
See above. Java is about running applications that just so happen to have a web front-end. PHP is about hosting websites that just so happen to have some application logic behind them.
J2EE only has it place in big enterprises that are willing to get it becuase the big bucks it costs come with some big name company that offers support.
"the big bucks it costs" - *COUGH* [jboss.org]
even in enterprise contexts, the largest part of the majority of apps is pretty stupid form entry and validation
If that's the case, you don't need a big server cluster to manage it...
Something I missed when installing postfix. I relied on hostname in order to check whether the mails should go internaly or be forwarded to another relay. A simple reboot will render the setting useless.
I dont know if this is an anomaly, still I cannot connect to MySQL 4.1.10a server using "localhost" as a host, whether in Java or in PHP.