- Posted by brunofig on September 29, 2006
Phil wrote:
A few days back Jon Galloway and I were discussing a task he was working on to document a database for a client. He had planned to use some code generation to initially populate a spreadsheet and would fill in the details by hand. I suggested he store the data with the schema using SQL extended properties.
We looked around and found some stored procs for pulling properties out, but no useful applications for putting them in there in a nice, quick, and easy manner.
A few days later, the freaking guy releases this Database Dictionary Creator, a nice GUI tool to document your database, storing the documentation as part of your database schema.
The tool allows you to add your own custom properties to track, which then get displayed in the data dictionary form grid as seen above. Audit and Source are custom properties. It is a way to tag our database schema.
You ask the guy to build a house with playing cards and he comes back with the Taj Mahal.
Check it out.
[Via Tag Your Database - A Data Dictionary Tool]
- Posted by brunofig on September 29, 2006
After converting the reflection effect from script.aculo.us to mootools, i found myself needing also to create simple shadows for images. So I compiled the reflection sample, added the shadow effect and created the efxFactory. This is still under development so it's BETA and a preview of what will be a final version of mootools extensions to the Fx library.
By simply using the efxFactory.shadow($("thumbShadow1")); to create shadows or efxFactory.reflect($("thumbRefect2"), {opacity:1/6}); to create reflections, you can add simple effects to images without using a image editor. Usefull for content management systems.
- Posted by brunofig on September 28, 2006
The people at Inviz created a system that allows "put" round corners on your content.
Download, demo and how to use here.
This system uses mooTools as support library.
- Posted by brunofig on September 26, 2006
From the guys how brought the Simpsons Episodes, you can now watch all these great series online at Daily Episodes.
- Posted by brunofig on September 26, 2006
I just love the simpsons, and if you missed any "YOU SHOULD ROTTEN IN HELL!!!"..ops,..not this I wanted to say..sorry, if you missed any episode you can view it here.
- Posted by brunofig on September 26, 2006
Phil Haack wrote:
Not too long ago I wrote about using heuristics to fight comment spam. A little later I pointed to the NoBot control as an independent implementation of the ideas I mentioned using Atlas.
I think that control is a great start, but it does suffer from a few minor issues that prevent me from using it immediately.
- It requires Atlas and Atlas is pretty heavyweight.
- Atlas is pre-release right now.
- We’re waiting on a bug fix in Atlas to be implemented.
- It is not accessible as it doesn’t work if javascript is enabled.
Let me elaborate on the first point. In order to get the NoBot control working, a developer needs to add a reference to two separate assemblies, Atlas and the Atlas Control Toolkit, as well as make a few changes to Web.config. Some developers will simply want a control they can simply drop in their project and start using right away.
I wanted a control that meets the following requirements.
- Easy to use. Only one assembly to reference.
- Is invisible.
- Works when javascript is disabled.
The result is the InvisibleCaptcha control which is a validation control (inherits from BaseValidator)so it can be used just like any other validator, only this validator is invisible and should not have the ControlToValidate property set. The way it works is that it renders some javascript to perform a really simple calculation and write the answer into a hidden text field using javascript.
What! Javascript? What about accessibility!? Calm down now, I’ll get to that.
When the user submits the form, we take the submitted value from the hidden form field, combine it with a secret salt value, and then hash the whole thing together. We then compare this value with the hash of the expected answer, which is stored in a hidden form field base64 encoded.
The whole idea is that most comment bots currently don’t have the ability to evaluate javascript and thus will not be able to submit the form correctly. Users with javascript enabled browsers have nothing to worry about.
So what happens if javascript is disabled?
If javascript is disabled, then we render out the question as text alongside a visible text field, thus giving users reading your site via non-javascript browsers (think Lynx or those text-to-speech browsers for the blind) a chance to comment.
This should be sufficient to block a lot of comment spam.
Quick Aside: As Atwood tells me, the idea that CAPTCHA has to be really strong is a big fallacy. His blog simply asks you to type in orange every time and it blocks 99.9% of his comment spam.
I agree with Jeff on this point when it comes to websites and blogs with small audiences. Websites and blogs tend to implement different CAPTCHA systems from one to another and beating each one brings diminishing margins of returns.
However, for a site with a huge audience like Yahoo! or Hotmail, I think strong CAPTCHA is absolutely necessary as it is a central place for spammers to target. (By the way, remind me to write a bot to post comment spam on Jeff’s blog)
If you do not care for accessibility, you can turn off the rendered form so that only javascript enabled browsers can post comments by setting the Accessible property to false.
I developed this control as part of the Subtext.Web.Control.dll assembly which is part of the Subtext project, thus you can grab this assembly from our Subversion repository.
To make things easier, I am also providing a link to a zip file that contains the assembly as well as the source code for the control. You can choose to either reference the assembly in order to get started right away, or choose to add the source code file and the javascript file (make sure to mark it as an embedded resource) to your own project.
Please not that if you add this control to your own assembly, you will need to add the following assembly level WebResource attribute in order to get the web resource handler working.
[assembly: WebResource("YourNameSpace.InvisibleCaptcha.js", "text/javascript")]
You will also need to find the call to Page.ClientScript.GetWebResourceUrl inside InvisibleCaptcha.cs and change it to match the namespace specified in the WebResource attribute.
If you look at the code, you’ll notice I make use of several hidden input fields. I didn’t use ViewState for values the control absolutely needs to work because Subtext disables ViewState. Likewise, I could have chosen to use ControlState, but that can also be disabled. I took the most defensive route.
[Download InvisibleCaptcha here].
[Via Lightweight Invisible CAPTCHA Validator Control]
- Posted by brunofig on September 26, 2006
Não sei como se dizia que as músicas de hoje em dia é que são... como dizer... indecentes. Apesar de cada vez mais haver meninas roliças a abanar o belo do pacote em video clips (e não só), as letras não mudaram assim tanto.
Tomem o exemplo dos Queen. Hoje dei por mim a ouvir uma música cujo título é “I want it all” ou algo do género. A parte da letra que me recorda mais é “I want it all... i want it all… and I want it now”. Ora meus amigos, isto traduzido para português não é nada mais que “Eu quero-o todo… eu quero-o todo… e eu quero-o agora.”.
Agora expliquem-me isto... A mim ninguém me tira da cabeça que aquele ícone abixanado da música que foi o Freddy Mercury queria-o de facto todo... e entenda-se por todo... bem... usem a vossa imaginação.
Já agora... felicidades ao senhora da mala e ao seu colega que queria uma mala com força... e conseguiu!
[Via As músicas de antigamente!]
- Posted by brunofig on September 25, 2006
Awsum wallpapers from mandolux.
- Posted by brunofig on September 25, 2006
Chris Heilmann at Wait till I come! as wrote a nice article about event handling versus event delegation. The sample uses the Y!UI library.
You can read more here.