Wednesday, March 02, 2011

PHP 5.3 DirectoryIterator::getPathname bug on root

Using DirectoryIterator on root results in a different behavior of getPathname.

before 5.3 the output would be something like:
/var
/etc
...

after 5.3 it is:
//var
//etc
...
what the heck is it with the doubleslashes? It's only happening if you are using Root as the Directory to start with
new DirectoryIterator('/');
Although it seems to me like a bug, i found nothing on google. Reporting it was not possible as i am using a debian distributed version and i already know their answer. "Use the original one first"

Thursday, October 14, 2010

Maven troubles on Helios

I created a new working environment on my laptop and checked out my source via clone. After setting up everything i still had troubles deploying my application on glassfish:

|WARNING|glassfish3.0.1|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=23;_ThreadName=http-thread-pool-4848-(1);|java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.IllegalArgumentException: java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.IllegalArgumentException: java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

Searching in the net i found out that maven on helios has a bug deploying dependencies on helios.
Here the Link:
http://www.eclipse.org/forums/index.php?t=msg&goto=544809&

I installed and checked everything, in the end i had to change this file:
${PROJECT_HOME}/.settings/org.eclipse.wst.common.component
consumes

Saturday, October 09, 2010

Moving from MySQL to Derby

Developing locally i wanted to move my Database from MySQL to Derby on my laptop. Since i use JPA Entities i thought it's an easy task just clicking some menus.

Unfortunately triing to create the Tables from Entities were not as easy as i hoped.

Constraints 'SQL101008073950601' and 'SQL101008073950600' have the same set of columns, which is not allowed.

This was the first Problem i had to fix. Since google (or any other search engine) is the developers best friend i found this bug information:
https://issues.apache.org/jira/browse/DERBY-789?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

This Link is also very informative:
https://forum.hibernate.org/viewtopic.php?f=1&t=998193

In the end it was this little Attribute in Column (unique = true)
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "hi_id", unique = true, nullable = false)
derby column, or type mapping 'VARCHAR(65535)' is not valid
I found this link:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1501
@Column(name = "hi_text", length = 65535)
I had to cut the length to 32000.

Tuesday, August 17, 2010

Hamcrest 1.1 Security Error on Eclipse Gallileo With JMock

Finally i started working on unit tests and already got a gotcha on eclipse galileo with jMock 2.5.1.
Galileo Ships with jUnit 4 but unfortunately without org.hamcrest.TypeSafeMatcher which is needed by jMock.

Adding jMock through Maven still leaves the Problem with Classpath and who comes first.

I tried the following links with no luck:
http://www.southsearepublic.org
http://cedar715.wordpress.com/2009/10/20/86/

Then i removed jUnit Libraries in Project Properties under Java Build Path => Libraries and added jUnit through Maven Dependencies.

Works like a charm now.

Tuesday, July 27, 2010

jPitfalls - Enums in Hibernate

In Hibernate you have two ways defining the association between database fields and Java properties. You can use xml definitions or Annotations.

I for example started with xml and later changed everything to Annotations. Either way, i used jBoss Hibernate Tools in Eclipse for generating the Java Class Files and xml Configuration.

Fortunately both Database and Java have Enums. Unfortunately the Hibernate Tool does not. (don't get me started on Hibernate at this point) So while you may think "Hey, i used Enums in my Database Design because i am a genius" and "That's great, now i can use them in Java" you can't. (Who is the genius).

Using Annotations it's easier. Creating Enums, adding them into the Hibernate Class Files and voila, you have Enums. (But don't forget to maintain them = meaning if you change the Enum in Java or the Database you have to change the other Part two by hand).

Using xml is a complete different Story. You have to Define the Type and adjust it by Hand. There is even a GenericEnumUserType explained in the jBoss Community.

In the end i still think that it should also be possible to create Enums automatically and some day it might, but in the meantime stay sharp and check you Enums.

Linktipps:
http://community.jboss.org/wiki/Java5EnumUserType
http://weblog.dangertree.net/2007/09/23/mapping-java-5-enums-with-hibernate/

Wednesday, July 07, 2010

jPitfalls - log4j adding through maven

One of the first thing a developer want to add is logging. Without logging there is no development. And i mean it... no development.. seriously!

Therefore i looked up in the net which logging Facility i should use and ended up with log4j. (And because all the Tutorials and Books i looked up used it as well). It's really great and flexible. (Enough advertising.)

But being not accustomed to Maven and Dependency Management and everything automatic, i had to learn another hard lesson.

The Thing with log4j is, there are several ways the output can be collected. Console, File, Database, you name it. The Thing with Maven and log4j is, if you add a plugin, it's automatically included and you don't even have to do much more work.

Being accustomed that every little peace has to be configured by hand i was unprepared for the *automaticallywedoeverythingforyou* world. Adding more than one log4j plugin i ended up with no output at all.

Nothing worked and i was starting to gave up my hopes. Fortunately a colleague of mine helped me out (we were sitting together, no clue at all) and found the reason for the misbehavior.

Use only the one output you need, no more than that and everything worked like a charm.

So today's Mantra is "Only use what you need, no more than that" (young grasshopper)

Thanks again

PHP Programmers Way to Java Heaven .. or jPitfalls

That's a nice Title.. or "Typical Java Pitfalls if your a PHP Programmer" or something like that .. in short Java Pitfalls or jPitfalls. (That's a nice short word!)

In short: i started programming in java/eclipse a while ago and decided to write all my troubles down so it might help someone else getting a clue what's happening...

And because my college urged me to do it over half a year.. so here it comes. A complete Series about all my troubles with the Name jPitfalls.

Now i need to tell you a little about the environment of the project i am working on. It's a typical WebShop with Database connectivity serving a handful of people so it's not a big deal. But this are my first baby steps into the wonderful world of compilation, debugging and so much more.

Without any help it's not as easy as it sounds when you need to find the right peace of software for your work. Frameworks, Database Connection, Template System... learn everything from scratch. So i worked my way through Struts 1,2, Spring, Hibernate, Plugins for that Frameworks and of course Eclipse and it's Plugins, unsure where it ends.

Also there was/is the question where will it be hosted. Finding a decent and pricable Hoster isn't easy if you know what technology you are working for. But now it's also a Question if you want an EJB 3 Container or not. Is Tomcat enough or do we need something more extravagant. (Glassfish?)

I ended up in several discussions with myself about the way i should go. (I am still having these discussions, but man, i have gone a long road already) For example the Framework: First i decided to use Struts1 because i thought it's old, so you find a lot of helpful information and it's really complete, nothing beta.

After working hard on the project for several weeks i thought that upgrading to Struts2 would be a good Idea, but not yet. Don't change something important as the Framework in the middle of the implementation cycle. Remember: You want to complete the project asap.

But then some Problems occurred which led to the decision to refactor everything and use Struts2 instead. (It was after all the right decision). In the meantime i use Spring for some parts (as they really work great together) and Hibernate as Database Layer.

My Intention was always to keep it as small as possible and as simple as possible. And for christs sake: Get the job done, will you!

Thursday, January 07, 2010

Could not open the Visual Page Editor: No more handles [Could not detect registered XULRunner to use]

If you have installed the struts tools from the jboss development update site in eclipse under windows and get hit by that error you might want to check if you also installed the xul runner from the jboss update site.

Might save you a lot of troubles and hours of searching what's been happening.

cheers

Thursday, November 27, 2008

Microsofts Ticket System sucks big time

After finding this little bugger i naturally wanted to share it where people like would look for, therefore i thought i should share it with the IE8 beta bugs place at ms. (since quirksmode does not seem to be accessed often anymore and it's recommended on http://blogs.msdn.com/ie/archive/2008/03/05/ie8-beta-feedback.aspx)

Being a google naive user i never needed a Windows Live Account, therefore i had to create it. Ok, if that's the price it would be ok.

I already checked the newsgroup and bugs database. So i went to the connect website.. but my Windows Live Account is not the only thing needed, i had to Register there too (so why did i need that Live Account again?) and they wanted much more information.. personal information they don't need to know.. i mean it's about sharing in a global community, not buying things or any other secure workflow.

Ok, registered there too i had to acknowledge again that the email is correct. (Why did i need that Live Account now?) Then i was able to check that my bug was not listed so i wanted to create it.. oh, no you need to send a post into the newsgroup, our people will create it then if it's worth it..

Of course they could not use just another trac or bugzilla system where anybody was able create bugs, that would create a much bigger mess, i understand it, but still it gets me pissed even more.

Good, let's go to the Newsgroup... at that time i was really in an angry mood so i am not sure anymore if i had to register again, but i am pretty sure they wanted another check if my email is valid (i already confirmed that when creating that damn Windows Live Account, why the heck do you need it AGAIN????)...

But i was able to regain myself and send the post on Friday last week (of course no reply) and shout afterwards...

Conclusion:
  • 3 Email Verifications
  • 2 or 3 Registrations
  • 1 News Post
  • no way of creating a bug report

Where do you want to go today?

IE 8 beta 2 1px Background Image Zoom Bug

IE 8 beta 2 has a nasty little bug with Background Images. If they have a width or height of 1px because you use it for repeat-x or repeat-y backgrounds you will get very dissapointed if zooming your Template smaller than 100%.

Somehow IE calculates 1px < 100% must be 0px which means the background dissapears even with repeat statement.

Workaround ist to use bigger sizes, at least 2px but i am not sure if you will get problems at < 50% so i use 10px now, at least for IE8 (conditional comments are a savior).

Friday, September 28, 2007

Apache 2.2 PAM troubles

This time i had to configure an apache to use pam to connect through winbind to an Active Directory.

Basically i was trying to port an Apache 2.0 vhost to Apache 2.2 since we are switching servers.

It took me some time until we found a bugreport indicating why it is not working anymore..

AuthBasicAuthorative Off


http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=394097

Monday, September 24, 2007

SATA Problems Part II

Last weekend i got the replacement disk for my broken sata disk and reinstalled it. I found a manual quite quick but had some serious problems since i either got one of the two following errors while trying to rebuild the raid 1 array:
ata1: Timeout
ata1: DMA Timeout

Although i had some ideas what could be wrong my last solution was to change the SATA Cable and that was all it needed...


Rebuild Array

To rebuild an array with a clean disk i found this guide useful:
http://www200.pair.com/mecham/raid/raid1-degraded-etch.html

Although it was written for IDE Disks you can use it also for SATA..

Here the needed parts extracted:
We start by copying the partition structure from /dev/hda to /dev/hdc. We do this for what should now be an obvious reason: the secondary drive is empty, but it needs to have the same structure as the primary drive. If the disk was first cleaned, and is large enough, you should have no errors (but you may still have to --force it):

sfdisk -d /dev/hda | sfdisk /dev/hdc

We make sure the superblocks are zeroed out on the new drive (as always, be careful you do this to the correct drive). Edit as needed:

mdadm --zero-superblock /dev/hdc1
mdadm --zero-superblock /dev/hdc5
mdadm --zero-superblock /dev/hdc6


Now we add our three hdc partitions to the corresponding md's.
Understand what you are doing here before you do it, edit as needed:


mdadm --add /dev/md0 /dev/hdc1
mdadm --add /dev/md1 /dev/hdc5
mdadm --add /dev/md2 /dev/hdc6


Watch them sync:
watch -n 6 cat /proc/mdstat

Once the recovery is complete (and not until then), create a new boot records on both drives:
grub

From the grub> prompt (edit partition number if needed):
root (hd0,0)
setup (hd0)
root (hd1,0)
setup (hd1)
quit

PHP5 DomDocument schemaValidation problems

First i have to tell about a SOAP Connection to a webservice. I don't know if the developers ever thought about SOAP more than just a quick thought how can we transfer data, since from my end it looks as if they have absolute no idea what they were doing.

We have a Service that holds a bunch of personal data which we have to transfer to the webservice of an higher instance. Now you would think they provide a SOAP Connection where there are a lot of functions to send them the data for every person.. but no.. there are only two functions:
  • One which wants a XML String where all personal data has been collected together and
  • a second one which wants the same string as zip
So you see the whole point of the SOAP connection is just to send them the already prepared XML Files and then they work with the collected data somehow internal.

Fortunately they provided a xsd file so i was able to add additional validation to ensure the data is valid.

Now i created the XML Files using php5 DomDocument. The library makes it really easy to create Elements and it also holds a schemaValidation functionality.

I don't want to get into to much detail but when i said that they want all personal data of all people collected in one file you will notice that it would not be a good idea creating first all users in one file and then check if that file is ok... or perhaps i am just the only paranoid here, but i wanted to know exactly which person is making troubles.

So my code first creates the xml data for each person separately (although cached) and then i add the xml data to an prepared xml so i can validate against the schema.

The Problem
Now we get to the point. My Function first creates a Validation XML which helds all the markup and then adds the XML Data of the person using DomDocument->importNode and then appendChild at the correct position.

Unfortunately the schemaValidation finds errors where there are not really one, or so i thought. I got Error Messages which i was unable to see anything wrong. But i found a workaround.
Using DomDocument->loadXML(DomDocument->saveXML()) just before the validation i was able to sort of "normalize" the DomDocument and the schemaValidation worked.

I am not sure if the schemaValidation was just not designed for such a work or i did misjudge and used it completely wrong. But since there is not much documentation at php.net i had no other way.

Monday, September 10, 2007

SATA problems

I had some serious problems with my Server concerning some sata harddisks. Unfortunately not only my raid 0 system with a one year old Samsung SpinPoint was broken (i sent the disk to samsung) also another disk failed with serious failures and locked my system.

So i bought a new one and wanted to transfer the data from the broken one as good as possible to the new one before it completely fails. But i was stopped by my own ignorance.. the new 500GB disk was not working with the sata Controller onboard.. so when i went back to change it into a smaller disk (since i thought there are some size restriction in effect which stopps my controller to get it working with the disk) they just told me to jumper the disk to sata I and try again..

Not only is this jumper setting not explained in the small tiny manual which is normally shipped with the disks, i also called the support Hotline preview to this incident to confirm my theory (with the size) and was a little angry they have not told me this on the phone before.. Not that i have much to do, i am just a workaholic with a family and a little girl....

Never less i used the jumper setting they told me and tried again.. first the controller had troubles recognizing the disk but after another restart it was finally there.
Good, now all i have to do is partioning the disk and then create a filesystem.. but then the same errors appeared on the disk as on the old one.. NOT AGAIN...

Another mistake of me was to define the problem with the Controller... ok it's a via chipset and it has some troubles with maxtor 500GB disks and i am not very found of it and maybe it is also a reason for the problems. Either way i just bought a pci sata Controller and installed it.. and it found both sata disks (not my raid array, that is on another sata controller.... ok now that sounds more complicated than it really is.) and after booting linux i tried to mount both disks.

The new one did not have any problems, i was able to recreate the partition and installed a filesystem, but the old one still got some errors by mounting readonly:
sd 5:0:0:0: SCSI error: return code = 0x8000002
sdc: Current: sense key: Aborted Command
Additional sense: Scsi parity error
end_request: I/O error, dev sdc, sector 206307443
lost page write due to I/O error on sdc1
ATA: abnormal status 0xFF on port 0xFFFFC2000004439C
ata6: status=0xff { Busy }

Luckily i found a site which proposed to change the sata cable. Since i changed it to the one shipped with the controller the disk run as smooth as ever.

Now i could be pretty angry for searching this little fellow for about two weeks but i am just relieved that the data on the disk are ok. Naturally the first thing i did was to backup the complete disk to the new one before laying my hand into the fire ;-)

Thursday, September 06, 2007

vserver with different Architecture

My system is a little weird since i did a poor job installing linux: i installed a 32 bit system on a 64bit architecture and then just changed the kernel.

Now installing a new vserver with debootstrap it automatically uses the source system which in my case is 32bit and therefore i got the errors:
kernel: IA32 syscall 311 from ...

It finally annoyed me enough, so i asked a friend and with his help i finally managed to change the architecture when installing a new vserver:
newvserver --hostname name --domain domain --ip ip --dist testing --interface eth0 --arch amd64 --context context

Not only i got rid of the warnings, i experienced a slight boost in performance. But maybe this is because of the source of the error. Now i am installing all vservers again in 64bit and move forward.

Friday, August 31, 2007

LDAP the second - Apache2

After getting LDAP Working on PAM the next move was to get it working with Apache. I tried several ways:
  • direct contact to the AD through LDAP
  • using PAM
  • using Kerberos
and i was able to get it working through LDAP. For that i needed the module authnz_ldap and lap. Then all i had to do is to get the correct Authorization config into the virtual host:
<directory>
...

AuthType Basic
AuthName "LDAP"
AuthBasicProvider ldap
AuthLDAPBindDN cn=ldapauth,ou=Users,dc=your,dc=domain,dc=com
AuthLDAPBindPassword password
AuthLDAPURL "ldap://yourdomain.com:389/ou=Users,dc=your,dc=domain,dc=com?sAMAccountName?sub?(objectClass=*)"
AuthzLDAPAuthoritative off

Require valid-user

...
</directory>
Some Explanations: The AuthBasicProvider is needed as of Apache 2.2 since else you will get an error Message.

Links:

Ldapping the World - Active Directory and PAM

Introduction
Working with multiple vservers we started thinking about using a single user database for all authentications. Since we are using a MS Server with Exchange and so on it was decided that the Active Directory (AD) of that Server is our User database.

Next we had to get everything under Linux configured to authenticate against our AD, which meant we had to configure PAM to use our AD. Now there are two ways to do that: Winbind and LDAP. Winbind was used before and we had some real bad problems when the Windows Server has been restarted so we thought of using LDAP. Beside that, we did not want to install Samba on all Vservers.

Now to get LDAP working there are some small thoughts you have to consider: First, you need openldap (or similar) to get information from LDAP, but to authenticate you have to use at least kerberos. There are other ways also, but i wanted to keep it as simple as possible and security measurements (clear text passwords,...) were not in consideration at this point.

Our System:
- Windows Server 2003
- Debian Linux testing (at this point)

Windows
You will have to adjust also the Windows Server since it has to add some more Fields for Unix to the Active Directory. Depending on your system there are multiple ways and they are all explained in the links i added at the end. We used Microsofts Services for Unix 3.5 (SFU).

Then i added a new user ldapauth for the communication, and i adjusted my own user for testing, which means i activated the Unix Attributes and set everything.

ldapsearch
First i had to get ldapsearch working. For that i installed ldap-client
apt-get install ldap-client libnss-ldap
and then i backuped the /etc/ldap/ldap.conf file because i made a symbolic link to /etc/libnss_ldap.conf:
HOST yourhost.com
base ou=Users,dc=your,dc=host,dc=com
uri ldap://yourhost.com/
ldap_version 3
binddn cn=ldapauth,ou=Users,dc=your,dc=host,dc=com
bindpw password
nss_base_passwd ou=Users,dc=your,dc=host,dc=com?one
ss_base_shadow ou=Users,dc=your,dc=host,dc=com?one
nss_base_group ou=Groups,dc=your,dc=host,dc=com?one
nss_map_attribute rfc2307attribute mapped_attribute
nss_map_objectclass rfc2307objectclass mapped_objectclass
nss_map_attribute uniqueMember msSFU30PosixMember
nss_map_objectclass posixGroup Group
nss_map_objectclass posixAccount user
nss_map_objectclass shadowAccount user
nss_map_attribute uid sAMAccountName
nss_map_attribute shadowLastChange pwdLastSet
pam_login_attribute sAMAccountName
pam_filter objectclass=User
pam_password ad
ssl off
nss_map_attribute uidNumber msSFU30UidNumber
nss_map_attribute gidNumber msSFU30GidNumber
nss_map_attribute userPassword msSFU30Password
nss_map_attribute homeDirectory msSFU30HomeDirectory
nss_map_attribute loginShell msSFU30LoginShell
nss_map_attribute gecos name
Then i was able to use ldapsearch:
ldapsearch -x -Hldap://yourdomain.com/ "(cn=User Name),dc=your,dc=domain,dc=com" -W -DAdministrator

passwd
Now i had to change the /etc/nsswitch.conf:
passwd:         ldap files
group: ldap files
shadow: ldap files
normally getent passwd should first show the activated AD User and then the linux user. I had some troubles get it working correctly and used strace getent passwd to see that my users from AD have been parsed but somehow did not return in the list. Unfortunately i am not sure anymore what i have done to get this working, but i am pretty sure that it was some change in the /etc/libnss_ldap.conf.

Kerberos
Now after we have got ldap talking with AD we need kerberos installed for PAM.
apt-get instal heimdal-clients libpam-heimdal
and then i had to configure the /etc/krb5.conf:
[logging]
default = FILE:/var/log/krb5lib.log
[libdefaults]
ticket_lifetime = 24000
default_realm = YOURDOMAIN.COM
default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc
default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
v4_instance_resolve = false
v4_name_convert = {
host = {
rcmd = host
ftp = ftp
}
plain = {
something = something-else
}
}
fcc-mit-ticketflags = true
[realms]
YOURDOMAIN.COM = {
kdc = yourdomain.com:88
admin_server = yourdomain.com
default_domain = yourdomain.com
}
[domain_realm]
yourdomain.com = YOURDOMAIN.COM
.yourdomain.com = YOURDOMAIN.COM
[login]
krb4_convert = true
krb4_get_tickets = false
You can test it with:
kinit testuser
PAM
Now finally i had to configure the pam configuration files:
  • common-account
account sufficient pam_ldap.so
account required pam_unix.so
  • common-auth
auth sufficient pam_krb5.so ccache=/tmp/krb5cc_%u
auth sufficient pam_ldap.so use_first_pass
auth required pam_unix.so nullok_secure
  • common-password
password required /lib/security/pam_ldap.so use_authtok md5
password required pam_unix.so nullok obscure min=4 max=8 md5
  • common-session
session required pam_unix.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022

Enjoy!

Links:

Tuesday, July 17, 2007

Apache2 proxy on vservers

I have recently changed my internal structure from chroot to vserver, and therefore i was able to split my development system from my live system.

But unfortunately that also meant that there is only one vserver who gets the port 80 requests. I thought a long time about that and decided there must be a possibility to use apache2 as a proxy, but also to use wildcards. (I did not want to have multiple files on different systems).

For that i have installed apache2 on both machines. On the live one i have one configuration file for all proxy requests:

<virtualhost>
ServerName www.sub.example.com
ServerAlias *.sub.example.com

CustomLog sub.example.com-access.log combined
ErrorLog sub.example.com-error.log

ProxyRequests On

<proxy>
Order deny,allow
Allow from live-ip
</proxy>

ProxyPass / http://develop-ip/
ProxyPassReverse / http://develop-ip/
ProxyPreserveHost On
</virtualhost>
That way all Requests are send to the development vserver and i don't have any more headaches about it.

See also:
http://www.debian-administration.org/articles/358
http://kpumuk.info/ruby-on-rails/upgrading-apache-to-version-2-2-in-debian/

Monday, July 09, 2007

iTunes has detected an iPod in recovery mode

I have an iPod of the 5th Generation for about a year now and use it whenever i can. At work i use iTunes to control the iPod, but i am not using it for sharing my music otherwise.

Now i had this problem that iTunes showed an Error "..iPod in recovery mode.." ... what the hack? Since i sync my iPod with my home iTunes i had to recover it there (although it did not have any Problems).. now i tried it again at work: same Problem..

After a quick search i found this: http://docs.info.apple.com/article.html?artnum=304503

It suggest that the Drive Letter the iPod wants to use is used already... and that was the whole Problem all the time.

Now i ask: Why the hell could it not say it at the first sign? I mean it did never occur to me that this could be a Problem.

The Drive Letter support with USB and Network was always a Problem with XP (which had to be configured by hand) but at least there could be some information at iTunes.

Thursday, June 28, 2007

life span of a LCD Beamer


My PT AE 700

About three years ago i bought a Panasonic PT AE 700 Beamer. Calulating the time how long a Lamp may live i thought i have worked it all out.. but i was wrong.

LCD Beamers are not supposed to be used the whole day, every day in the year.. just as you would use a TV.. but i thought it would only need more Lamps..

Unfortunately that's not the whole story. Without going into much technical Detail about how they work there is one piece which is the heart of it.. the LCD Panel. Basically it holds all three Panels (one for Red, Green and a Blue one) and the replacement unit costs as much as a new Beamer.


That's supposed to be a black Image.

I have now seen about 5000 Hours with that Beamer and after about 4500 there was a Blue Cloud in the Picture... this week i have some black artifacts in the Cloud... My Panel has broken before i even had changed the Lamp in it...

So my advice is: If you want to use the Beamer more than once a week, don't by a LCD.

Looking for a replacement i either would take a Plasma screen or maybe a DLP, but i am not entirely sure what costs you have with an DLP.