SQL Fiddle
sqlfiddle.com
sqlfiddle.com
It will be back up and running shortly!
You could combine autocompletion with a doc panel that automatically updates to show the "quick reference" for the keyword you're currently typing.
For SQL, it's a big challenge - you may type in 'SELECT', but your IDE still has no idea what relation(s) you're going to access, and so it can't reasonably autocomplete the possible fields you might want to use.
It's an interesting example of a language that was arguably designed for human readability in the small ('give me this from that cross-referenced with this other thing'), but in some sense became a weakness of sorts later on.
I've always thought that SQL's notion of readability was somewhere between superficial and disingenuous - you can read the query and it sounds like it ought to make sense, but there's so many occasions where you won't actually be able to understand why it isn't working unless you know how to translate in your head from the order in which the clauses are written, to the order in which they're carried out.
'from customers, orders select ...'
Would allow showing a whole bunch of columns, and you could quickly determine whether those tables had the information you're after, or not.
It might seem strange/lazy that the developer can explore the environment (schema) this way without 'knowing' what's out there, but in practice that's exactly what we all do with software development, web search, etc - we try things out and see what comes back, rather than knowing in the first place. Data development has a way to go, but I think things will improve..
i.e. - type:
'select city'
prompts with:
'city (table airports)'
'city (table populations)'
'city (table companies)'
And then, upon selection, you have a statement: 'select city from <selected-table>'.
There's a lot more here though. Worth pondering for a while I think.
Not that it really matters to someone who is already familiar with SQL, however.
In LINQ, you do "FROM x SELECT y". So the editor can help you autocomplete the y, since it knows the context.
In SQL, you do "SELECT y FROM x". Thus the editor cannot help you with y.
1. Security flaw in leaking that much error info. 2. Who uses ColdFusion in 2013?
Me? Because I have to maintain a rather old site for my employer, and there is absolutely no chance that anyone would sign-off on migrating it to a different platform.
Interestingly, about a year ago, we were told that we would no longer be doing any updates to the system, and yet, here we are, a year later, still doing minor releases. I suspect it will never go away.
About 2/3 of the federal government.
Also, that isn't ColdFusion, it's Railo, an OS alternative.
Not that I disagree with you, but I wonder if the reasons you have in mind are valid. A lot of the reasons one might assume CF sucks aren't really applicable (i.e. speed, security) any more than most other languages.
If it works, and you can maintain it - its all good. Even Cold Fusion, even PHP, even Perl, even Brainf#@k
The consequences come for the poor bastards that have that old crap on their resume... Bus number notwithstanding...
Just like Coldfusion, many people have been saying Java is so 1995 but since Twitter showed how well Java scales compared to the woeful RoR it is seeing a renaissance. And since Railo is a Java framework that speeds development I have a feeling we will being seeing it experience a similar renaissance in the near future.
WRT to open source: in open source software, you theoretically have many benign eyes vetting your code for security issues, whereas with closed source applications, the only people who are looking for security holes are you and attackers. :)
I agree that the owner of the website here needs a <CFERROR> tag, which tells the server what to do instead of showing that big error message.
the issue seems coming from this line:
https://github.com/cfwheels/cfwheels/blob/v1.1.8/wheels/even...
basically when wheels throws an error, it will try to send out an error email containing the environment and framework information. In this case there seems to be no smtp server defined, so CFML itself is spitting up its skull.
The error handling can be reworked so that the $mail() call is wrap in a try/catch so the 500 page will just be shown.
disclosure: part of wheels core.
https://www.google.com/search?q=releaseDetail.cfm
Its not the sexiest of platforms out there, but it can get the job done...
[1] - http://webpulp.tv/episodes/managing-8-petabytes-and-virtual-... [2] - https://blog.linode.com/2013/04/16/security-incident-update/
It pops up constantly on StackOverflow and I've found it incredibly useful for interviews. I noticed recently that the Execution Plan was added which just opens more avenues for teaching & interviewing.
no SMTP Server defined at railo.runtime.net.smtp.SMTPClient.send(SMTPClient.java:676):676 at railo.runtime.tag.Mail.doEndTag(Mail.java:519):519 at wheels.global.cfml_cfm$cf._1(/root/sqlfiddle/src/main/webapp/wheels/global/cfml.cfm:93):93 at wheels.global.cfml_cfm$cf.udfCall(/root/sqlfiddle/src/main/webapp/wheels/global/cfml.cfm):-1 at railo.runtime.type.UDFImpl.implementation(UDFImpl.java:215):215 at railo.runtime.type.UDFImpl._call(UDFImpl.java:434):434 at railo.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:377):377 at railo.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:774):774 at railo.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1495):1495 at wheels.events.onerror_cfm$cf.udfCall(/root/sqlfiddle/src/main/webapp/wheels/events/onerror.cfm:42):42 at railo.runtime.type.UDFImpl.implementation(UDFImpl.java:215):215 at railo.runtime.type.UDFImpl._call(UDFImpl.java:434):434 at railo.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:377):377 at railo.runtime.tag.Invoke.doFunction(Invoke.java:224):224 at railo.runtime.tag.Invoke.doEndTag(Invoke.java:191):191 at wheels.global.cfml_cfm$cf._1(/root/sqlfiddle/src/main/webapp/wheels/global/cfml.cfm:44):44 at wheels.global.cfml_cfm$cf.udfCall(/root/sqlfiddle/src/main/webapp/wheels/global/cfml.cfm):-1 at railo.runtime.type.UDFImpl.implementation(UDFImpl.java:215):215 at railo.runtime.type.UDFImpl._call(UDFImpl.java:434):434 at railo.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:377):377 at railo.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:774):774 at railo.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1495):1495 at wheels.events.onerror_cfm$cf.udfCall(/root/sqlfiddle/src/main/webapp/wheels/events/onerror.cfm:14):14 at railo.runtime.type.UDFImpl.implementation(UDFImpl.java:215):215 at railo.runtime.type.UDFImpl._call(UDFImpl.java:434):434 at railo.runtime.type.UDFImpl.call(UDFImpl.java:384):384 at railo.runtime.ComponentImpl._call(ComponentImpl.java:615):615 at railo.runtime.ComponentImpl._call(ComponentImpl.java:502):502 at railo.runtime.ComponentImpl.call(ComponentImpl.java:1815):1815 at railo.runtime.listener.ModernAppListener.call(ModernAppListener.java:349):349 at railo.runtime.listener.ModernAppListener.onError(ModernAppListener.java:336):336 at railo.runtime.PageContextImpl.execute(PageContextImpl.java:2045):2045 at railo.runtime.PageContextImpl.execute(PageContextImpl.java:2002):2002 at railo.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:297):297 at railo.loader.servlet.CFMLServlet.service(CFMLServlet.java:32):32 at javax.servlet.http.HttpServlet.service(HttpServlet.java:722):722 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305):305 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210):210 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225):225 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169):169 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168):168 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98):98 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118):118 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407):407 at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200):200 at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565):565 at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307):307 at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source):-1 at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source):-1 at java.lang.Thread.run(Unknown Source):-1
Simple query stuff though.
Basic aggregate stuff. When to use "LEFT JOIN". Creating a scalar function. Multiple table JOINs.
http://sqlfiddle.com/#!3/3973f/1
Edit: I'm not allowed to reply just yet, so I'll post here.
You need to add the boss first to the employee table with a NULL bossID.
Then you add another employee that has a bossID that refers to that last added record.
> DEFAULT (IDENT_CURRENT('dbo.Employees'))
on the BossID column. Been awhile (years) since I've worked with SQL Server.
http://stackoverflow.com/search?tab=newest&q=url%3a%22http%3...
railo.runtime.net.mail.MailException which seems to be a framework error from a ColdFusion application server.
Shame on OP, posting something cool and letting it get upvoted without warning the author/host in advance! :)
Will definitely do that next time. I found it really cool and thought of just posting it on HN.
Edit: Pinged @sqlfiddle on twitter. I hope maintainer did notice it.
That said, I applaud the creators of the site.