Wow.
Another great tool from Google.
Works on Win/Mac/Linux, for IE and FF.
In a few words - it can give you offline browsing, plus local storage using SQLite (so you can run SQL queries strait from your javascript to query the local store)
I wonder what secutiry issues can come up. However, it looks very cool, and can help bring power to existing DHTML/Ajax apps.
Makes me think. Now that you do SQL from javascript, isn't it time for JsHibernate? and what about an ActiveRecord inplementation in javascript?
So, in the Flex/Silverlight war, it seams that Google is gonna win again ...
(from Scott Hanselman's Blog)
From Castle Project users group:
I've just built the trunk yesterday (rev 3812).
Main reason: I needed the BaseControllerTest from Castle.MonoRail.TestSupport.
The build was targeting .NET 2.0, in release, and no tests were run.
You can download it from: http://www.kenegozi.com/Castle_r3812_net-2.0_release_not_tested.zip
Note that it is not tested, so use it at your own risk.
If you're not going production this week, it should not be a problem ...
I needed to manually Castle today, for the first time.
The need is for Castle.MonoRail.TestSupport.BaseControllerTest only, so I do not really care about all the rest.
Opened "How to build.txt"
I know that the builds in the CI server are failing due to some filing tests on DP2, so I add "-D:common.run-tests=false".
no brainer.
I am also targeting .net2 only, so I add "-t:net-2.0"
baboom. This fails.
The nant exe is telling me that I can only build to .net 1.1, or .net compact framework 1.0.
So I went to nant's config file, and found out to my surprise, that the frameworks that are present there are:
.net 1.1,
.net compact framework 1.0
.net 2.0 BETA 1
hmmm.
So I've edited the config, changed the existing .net 2.0 config name to .net2.0Beta1,
copy&pasted the .net node to another one, now switching version number from
sdkdirectory="${path::combine(sdkInstallRoot, 'bin')}"
frameworkdirectory="${path::combine(installRoot, 'v2.0.40607')}"
frameworkassemblydirectory="${path::combine(installRoot, 'v2.0.40607')}"
clrversion="2.0.40607"
to
sdkdirectory="${path::combine(sdkInstallRoot, 'bin')}"
frameworkdirectory="${path::combine(installRoot, 'v2.0.50727')}"
frameworkassemblydirectory="${path::combine(installRoot, 'v2.0.50727')}"
clrversion="2.0.50727"
voila. Now the build is starting.
However, the Castle.Components.Validator.Tests dll refuse to build. I'll disable it, too.
UPDATE:
I'm an idiot. Did not notice that NAnt has gone far beyond rc3 a long time ago ...
It's so funny. Almost chocked on my dinner over that one.
Would you have notified the poor bustard of his mistake in time?
I say it's a clear case of Zabasho.
just added a blogroll.
To the DB, to the Domain, to the controller and to the view.
Took me (all in all) 30 minutes, including all the coding, CSS-ing, uploading to the webserver, setting up the DB table on the hosted server, adding a few entries, clearing the browser's cache, and viewing it.
ah, and committing changes to Google code.
All of that was made in the Budapest Airport cafeteria, while waiting for my flight home (was a great trip. Photos, though not many of them, will be posted later on).
Rest assure that the DB access code is tested, and that the calls to the DB and to the cached data from the Controller and View are all typed.
I'd like to thank NHibernate, Castle and AspView (hey - that's me !), who made this possible.
I bet Ayende would have done it in 20 ...
A few days ago I was wandering through the web, and I found myself catching up on Joel Spolsky's blog.
Being there, I went on to his .NET Questions Board to see if I can contribute anything.
So I see there an innocent looking question:
"Stored Procedures vs SQL queries"
... Recently, I changed jobs and at the new place, the buzz is to get rid of the stored procedures and use SQL queries instead. I was hoping to get some strong reasoning to move in that direction and so here I am ...
So I answered , in quite a naive fashion, that IMHO, one should have a really good reason in order to split his codebase into two, and using SP's, so for the CRUD it's definitely a no, while you might consider SP for places that it would open a crowded bottleneck, or for any other specially-needed-thing-that-might-come-up-but-usually-it-won't.
After that I forgot all about it. After all, I am in a vacation on Budapest, not in my study at home.
However, today I've had a little quality time with my laptop (while setting the hotel room for checkout) and I thought "let's see what the guy though of my answer".
It seams that I've accidentally started a little war.
The players:
On one side of the ring, Mark, Robert and Mike, who struck me as frustrated DBAs who'd like to make all OO developers to write only UI. (I guess that's what Java/C#/Ruby/etc. is only good for, anyway)
On the other side, JSmith, whom I do not know of personally, but I like his answers.
I'll quote the DBAs:
What reasons do you have for using Stored Procs, splitting your codebase between two environments?
Robert:
For the same reason that fields in public classes are private.
Stored Procs are not faster, nor safer than "dynamic SQL". They are adding a strict dependency on the RDBMS, hard to version, non OR/M friendly, and most importantly, non developer friendly.
Robert:
In my experience, the above is untrue in nearly every respect.
SP's are typically faster than dynamic SQL: In SQL Server at least, the first time a SP runs, the server builds and saves the execution plan for each query. This may or may not happen if you're generating SQL dynamically in the application. I've seen a lot of middle-tier code that executes multiple SELECTS and then processes the returned rowsets to generate multiple UPDATEs; a great deal of that code would run much faster if it lived in the database and none of the intermediate results ever got put on the network.
SP's are typically safer than dynamic SQL: SQL injection attacks (to pick the obvious example) are impossible if the database doesn't let connections execute SQL
Mark:
I do complex stuff by using multiple simple steps with their results stored in an intermediate table. It's great because I'm almost forced into doing stuff simply, and simple is the way to go when developing software.
I now actually prefer my business logic in SQL than in a client-side language. Apart from the benefit of enforcing business logic on every app that accesses the database, my brain seems to prefer the set-based approach.
With SPs, I can update a table with a user id that doesn't have update privileges on the table! I just need a user id with execute privilege on the stored procedure.
Really, you got to read that. I'll ping Ayende about this now. He is so going to like this.
Just added.
Commited to the repository, too (hosted at google code).
Look for the link on each post's footer.
This one made me laugh. Apparently, meetup is trying to convince potential employees that working for them is even better than working for Google.
One of the best recruitment ads I've ever seen.
If they were not java-ing, I'd even consider applying ...
A little excerpt:
G: At Google, after you consume all the Google Food you can eat, you will enjoy Rear Cleansing, Front Cleansing, Dryer, and Oscillating options.
You will not be forced to interact with those without ample access to Rear Cleansing, Front Cleansing, Dryer, and Oscillating options.
M: At Meetup, there are no options when flushing the toilet.
You will be forced to interact with the un-cleansed and un-oscillated.
G: At Google, a few Googlers wish they were at a fast-growing company where they can personally still make a huge difference.
M: At Meetup, some Meetuppers wish we had a toilet like the Googleplex.
(saw it on http://www.joelonsoftware.com/)
Since this blog is running on an engine that I wrote (available on Google code site, here), it lack some features that more mature blog engines already have. (the other engines lacks the combined power of ActiveRecord/MonoRail/AspView ...)
So, that's currently my list:
1. Blogroll, for obvious reasons.
2. Email alert for me when anyone posts a comment for one of my posts.
3. Comments feed (via ATOM).
UPDATE - Done
4. Email subscriptions for new posts, or new comments on specific posts.
5. I have a problem with the font. I should fix the CSS but the Internet connection here (I'm at a Budapest hotel) is quite poor. Will be fixed next week.
UPDATE - Done
Any other suggestions?
note that I do not intent on implementing Pingbacks and Trackbacks, since those were littering my blog in the past.
So if you wanna download it, you should go directry to the NUnit's page on sourceforge
Here's a strange error message.
I was trying to build a project in VS2005, and got this instead of a successful build:
The "Exec" task needs a command to execute.
After pooling out a few hairs, I remembers that I recently have edited the pre-build actions for this project.
Looking this up, I found that I left a spare newline at the end of the pre-build script. So VS2005 sent msbuild an order to run an empty command.
Now I wonder, had the VS2005 guys have ever heard of StringSplitOptions.RemoveEmptyEntries?
They could've easily ignore empty lines, or better yet, issue a warning for that kinda stuff.
I've just noticed two sites that uses AspView vienegine (of course they're on MonoRail)
The first, https://www.musicglue.com/, has the static "home-page" stuff being served from a standard webforms aspx files. The Signup Procees however, and other applicative parts are using MonoRail, with AspView based views. The team behind this site said to me that they're moving to a complete MonoRail/AspView solution in time.
The other, http://www.escapegreat.com/, is using AspView, top to bottom.
Both sites seam to be working great.
Gives me strength to continue the development on AspView, and find ways to improve it even better.
I've just commited to the repository a new version of AspView.
The main addition is "Auto Recompilation" feature.
This means that when you change one of the view sources, the application will automatically recompile the views upon the following request.
You enable the feature by adding the next attribure to the aspview config section in web.config:
<aspview .... autoRecompilation="true" ... > ... </aspview>
Breaking change:
If you happen to reference an assembly from the GAC (using the aspview configuration in the web.config) you need to add a hint for the engine, like this:
<reference assembly="MyAssemblyFromGAC.dll" isFromGac="true" />
Known issues:
1. You need to let ASPNET user (or the Application Pool user) a modify access on the bin folder.
Note that if you use the inner WebServer of Visual Studio this should not be a problem, since in that case the web application runs with your user, that has the needed peremissions on the bin folder.
2. For a strange reason, after you change a view and do the F5 in the browser, you still see the old version, and only on second F5 will the views be actually recompiled and refreshed. I hope to fix it soon ...
Download from here.
Sources are here.
As you already have probably noticed by now, I did some renovation on my blog.
Among other things, it is now being served from a SQL Server database, rather than form the daBlog xml files.
One caveat of this, is the fact that backuping the blog's content became much harder. Since I have no access to db backups, I neede to find a way to generate the INSERT scripts that will enable me recreationg the content if it would be needed.
My first try-out was the Microsoft SQL Server Database Publishing Wizard, that I saw at Scott Gu's blog
This tool is meant to create the script form a local dev db, in order to make it run on the remote one. Actually you can make it run on the remote one, nd save the generated sql file locally, for backup purposes.
I tried it up, but it send some nasty .NET break dialogs. It however managed to create A script, that I'm yet to check for it's usability.
Nice tool. But I'll look for something that is pure t-sql so it'd be easier to run (maybe automated every once in a while)
My dear Sarit is going this Sunday on a business trip to IBM offices at Budapest, Hungary.
So we sat today to get some info on the hotel she'll be staying at (Mercure), and the distance from there to the main attractions (a.k.a. Shopping Malls).
Since I was already on a live.com page (I signed her up to a new messenger account since she likes the messenger UI), I went to look for the address on maps.live.com.
The first thing I have noticed is the slick design and cool UI features. It just looks good.
So I went on for the search. Typing the exact address "1052 Budapest, VĂ¡ci utca 20, Hungary" (note the explicit inclusion of the words "Budapest" and "Hungary"), sent me here:
focusing on the funny part:
Hmm. not so promising.
Without further ado, I found myself typing "maps.google.com".
The same old boring/ugly/simple google-y look.
Now, typing the same query in the input box gave me:
focusing on the place itself:
Ta Dam.
I then tried it with different typos. The "Did you mean" thing worked like a charm.
Once again, it seams that MS is concentrating the efforts on the slick UI and cool features, while google is more concentrated on the actual service.
I'd say it's clearly a knockout.
btw, the shopping mall turned out to be VERY close:
I'll be joining her next Friday for the weekend. Anyone for the good thing to see/do on Budapest? (I'm going for the less toured and more exciting things)
So long dasBlog. It was great to have you, but it's time to move on.
After a lot of work, I am proud to announce that my blog is running on MonoRail, using AspView for the views, and ActiveRecord to do DB stuff.
Not too fancy codewise, since I have very little spare time.
Most of the time spent on the blog upgrade process was on:
1. Exporting the data from the "old" blog, and
2. making a decent markup and design for the new one.
oh. and 3. letting WindowsLiveWriter do the edits, since I wasn't in the mood to create a backoffice.
I'll blog more about the process, and I'll make the source available.
Please leave your comments here about the overall look'n'feel. There must be tons of bugs and I want your feedback.
One of the developers on my team (Ofir, not yet blogging) was requested to create a simple desktop widget that will work as a notification service for some critical events on our corporate DB.
After some research we have decided to use Yahoo Widgets (formerly Konfabulator) for the client.
He did the client side code very quick, and we've had a working widget in no time. The client sent requests to a simple webservice, that answered with a comma-delimited string with the data to be presented to the users. The text was being grabbed from request.responseText and then parsed and shown.
However, it turned that the response, being in Hebrew, was displayed in Gibberish.
Now, the Yahoo Widgets framework definitely supports UTF-8, and the static text in Hebrew was displayed well.
So we tried to manipulate the server response, adding and removing headers and playing with the encoding options.
Only after a lot of googeling, Ofir found out that it's a known limitation in the way XMLHttpRequest is treating the response in Yahoo Widgets. The responseText property is failing in UTF-8 if the response is just a normal text.
However, if the respone is well formatted xml (with the <?xml version='1.0' encoding='utf-8' ?> thing), it works as expected.
So now the server responses "<?xml ve... ?><xml>comma-demilitarized-text</xml>" and the client is reading the responseText, trimming the <?xml ?> and <xml> and </xml> and continues with the parsing and displaying the response.
Bizarre, don't you think?
I've just got the announcement from the Ruby.NET team at QUT, about the new beta release, numbered 0.7.
The two major things in there:
1. the compiler now creates pdb files, which means that it can be debugged with the interactive debuggers,
2. Visual Studio 2005 integration, including Ruby projects.
Can't wait to check this out.
I'd like to see if I can do some integration into the AspView project, to enable a RubyOnMonoRail thing. I guess it'd have to wait for the BCL integration, promised to be released around the end of this year, but it is quite interesting as it is right now.