If you have ever worked with any ArcGIS product, you know all to well the concept of file locking. How many times have you tried to delete an old shapefile or person GDB, only to get the old 'File is being used by another process', yada yada. It always seems to happen to me when I am testing out a new Geoprocessing Tool or trying to delete an old mxd.
Well, Unlocker to the rescue. This handy little utility has saved me endless frustration when dealing with these file locking situations. Not only will it tell you what process is locking your file, it can 'unlock' that process as well so you can delete or rename that file. This gets installed with me wherever I go. Careful on the install though, by default it wants to install 'ebay shortcuts', which is a money maker for the author. I'd suggest a small donation instead.
The other tool that has come in handy in the past is one of the PSTOOLS...psexec. This little cmd line utility will allow you to launch a process as another user. Yes, you can also right click and choose 'run as' but this lets you create a batch file and run it over and over. Why would I want this? Well, I have had a few instances of having to connect to an ArcGIS server as another user to test permissions, etc, and this has been a handy tool to have.
Here is how to add the custom header to IIS (lifted from msdn):
To configure IIS 6 and earlier versions to include a custom HTTP response header, follow these steps:
1. Click Start, click Run, type inetmgr.exe, and then click OK.
2. Expand the server you want and then expand Web Sites.
3. Right-click the Web site you want and then click Properties.
4. Click the HTTP Headers tab.
5. Under Custom HTTP headers, click Add.
6. In the Custom header name box, type X-UA-Compatible.
7. In the Custom header value box, type IE=EmulateIE7.
8. Click OK two times.
Sure, I should have taken the time to test with the previous IE 8 release candidates, but you know the life of the developer is filled with other more important things, like keeping clients happy and getting my fix of Mt Dew for the day. So, I'll be using this method until I can properly figure out my graphics issues.
Also, another tool that I have been meaning to blog about is IEtester. It comes with 'My DebugBar' which is the IE equivalent of Firebug. Well, I shouldn't even say that, its not anywhere near as functional as Firebug. Anyway, IEtester lets you view your sites in different IE rendering engines. From 5.5 all the way to 8. Its been a pretty handy tool during testing. Enjoy.
PS: Anyone have an extra Asheville Phish ticket?
I posted a while back about moving much of our server infrastructure over to a virtual environment. I have been pleased, for the most part with the outcome. However....While I already sorta new the answer to this question before I started, I would now not recommend a ArcSDE / SQL Server instance in a virtual machine. Or at least one where there is serious competition for disk io. So, we have now migrated our production box out of a VM onto a dedicated box. However, we still have a testing environment running ArcSDE and SQL in a VM. Its just for beta applications and has pretty low load.
It was just a little too much to ask. Things ran fine, for a while, but as we brought more and more services online, it became obvious that this VM wasn't going to be able to handle the load we were throwing at it. I did even try some intermediate steps, like moving the OS and Host drive to a raid 5 array, but that still wasn't enough.
Now, with all that being said...I am still extremely happy with the Virtual Environment for applications like ArcIMS, ArcGIS Server, DNS, etc. These have worked out very well for us.
I dont know if I out out of the loop or what. I am, by no stretch of the imagination a designer. Take this page for example. Its bare bones at most. But, there are many instances that I must do some design work. Mostly changing fonts, positions, styles, etc.
The way I most often accomplish my 'changes' is where I have eclipse open on one monitor and Firefox in another. Make change a style from arial to verdana, save, refresh in Firefox. Eh, doesn't look right, repeat. Again. I'm sure we have all done that plenty.
Again, I am probably way out of the loop on this one, but just in case you hadn't heard of this before...enjoy.
If you are like me, you have dozens and dozens of remote desktop connections. Probably like most, I started off with the windows xp remote desktop client. This was nice, but managing multiple connections to multiple servers became cumbersome. Then, along came Windows 2003 Admin Pack 'Remote Desktops' tool. This would allow to create multiple connections in the familiar MMC interface. I have been using this for several years - until its greatest flaw was too much to bear. This RDP client gives you no way to organize the connections. No logical folders, and no option to even reorder the list of connections. I have soooo many connections that its often difficult to find the one I need, and to switch back and forth. One other issue with it was that it doesn't give you the option to change the default port of 3389 to something different. So, if you have a connection that uses any port other that 3389, you have to use the XP client.
Well, out of frustration, I embarked on a search to find a replacement. It didn't take long to find Royal TS. Has all the features that are missing from the Admin pack and then some. One thing I noticed is that the cursor acts a bit 'jumpy' at times, but overall I am very happy with it. One thing I'd like to see is the ability to import all of my current rdp connections. Either way, if you are a frequent rdp user, I'd check this out.
Over the years, we have amassed a motley assortment of servers. We had a mail server, ArcIMS production, ArcIMS Development, ArcSDE production, ArcSDE development, WINS/Domain Controller/VPN, File Server, ArcGIS Server, Webserver, etc etc etc.
We were up to around 10 separate servers. Some new, some quite old. I used the basic trickle down method - relegating the old servers for the domain controllers and mailserver and reserving the new ones for ArcIMS and Database.
Well, I got sick and tired on managing all of them. I need the power of the newer ones, but they rarely would come under any kind of load. Not one of them was able to utilize all of the cpu cycles available. But cramming too many applications on a single server can be quite problematic as many of you know.
So, I decided to check out VMWare and virtual servers in general. After some initial testing, I set out to buy a brand new, big daddy server. Here is what I came up with:
Dual Quad Core (8 effective cpus) 8 GB RAM 1 Terrabyte of RAID 5 for data 250 GB of RAID 1 for the host Operating system and virtual machine OS drives
I won't go into the pro's and con's of virtualization here. You can get plenty of info out there...I'll just share my experience with ESRI products in a virtual environment. Now, when someone needs a ArcGIS Server 9.2 testing environment, its a piece of cake. Basically, the ability to provision a new server is in just a few minutes makes my life so much easier. If something goes wrong with ArcIMS, I can simply shut it down and start that virtual server on another machine.
I have run into 1 issue, which I sort of expected. Disk i/o issues. I have both a production and a testing sql server on the same host server. When they are both contending for the disk I see a little slowdown - not much, but noticeable to me. So, my recommendation to you, if you choose to use virtualization is to get fast disks, in a raid 5 for your virtual 'data' drives.
The end results is that I am running 6 virtual machines within my beast server. From what I can tell, I can safely run a few more. I also to kept 3 of my other physical servers which were only a year or 2 old. These are used to host the virtual machines in the case that the beast goes down. My experience thus far has been nothing short of fantastic. Anyone have any issues or info they would care to share?
If you are like me, you hate spam. You know what I hate more that that? Managing my own mail server and dns. We are a small shop that does GIS Application work, and have been running our own mail server since 1998. As you probably know, spam was almost non existent back then. Well, fast forward to today, and its insane. I don't have 4 hours to spend with tech support to figure out how my box was compromised and became a spam relay. I don't have time to figure out why the guy who sits across from me can't get his mail. I have code to write and clients to make happy. So, here is what I did about it.
1. Got an account at ZoneEdit. They are a free DNS service that is extremely fast and reliable. I have been using them for my personal site (on a dynamic ip) for years. I finally decided it was time to move the work sites there. I just logged into my domain registrar and changed the name server from my machine to zoneEdit's. It was that easy.
2. Got an account at Google Apps for Your Domain. I cannot believe this is free. Essentially, all I had to do was move my MX records fom my dns server here in the office to zoneedit. Once on zoneEdit, I just pointed it to Google's mail server (which are provide in the Google account creation) instead of the one I have in my office. Creating all the new email accounts was as easy as uploading a CSV file. Now, once each user visits the new sign in page, all they do is enable POP access and change their mail server settings in their mail client of choice. The bonus here is that you get nice web client (gmail) and 2gb of storage. You can even brand the site with your own logo. They also have a very impressive calendar app which can be shared (ala exchange) among all your domain users. Like I said I can't believe it was all free.
Ok, so now I am all set. Everyone can get email and I don't touch anything. BUT, this did leave me with a problem. How can I send email programmatically using Coldfusion? Google requires the SMTP server to first create a SSL session on port 465. I tried and tried, but I just couldn't get Coldfusion and CFMAIL to send. I guess it doesn't support SSL connections. So I began my search...And I can up with this post on usnet. This isn't my code, but if someone knows who did it, give them a big thank you! Here it is:
First view this: http://www.jscape.com/articles/sending_email_smtp_ssl_gmail.html
1. Create the new folder secure_inet in C:\CFusionMX7\Mail; 2. On the jscape.com page above, click on the link to download "Secure iNet Factory"; 3. Enter your e-mail address and agree to the terms; 4. Download setup.exe ; 5. Launch the setup executable and choose to extract to the directory C:\CFusionMX7\Mail\secure_inet . This ensures that the key JAR file, sinetfactory.Jar will be stored as C:\CFusionMX7\Mail\secure_inet\lib\sinetfactory.Jar; 6. In the Coldfusion Administrator, add this to the JVM classpath: C:\CFusionMX7\Mail\secure_inet\lib\sinetfactory.Jar 7. Restart the Coldfusion MX server service. 8. Run the coldfusion script. It should go like an intercity train.<cfscript>
// create new instance
// address the message
email_message.setHtmlBody("the body of the message");
// connect, send the message, disconnect
SSL_SMTP_obj.login("your GMAIL user account","GmailPassowrd");
That’s it, works like a champ. Only issue is that Secure iNet Factory does cost a couple of bucks.
You know what the bonus of it all is? I have not gotten a single piece of spam in my inbox, and not a single false positive. Even with my old mail server spam filter (it did catch about 90% of it), I used to get about 20 spams per day in my inbox. So, that’s my story. I am one happy geek.
Anyway, I have been droolling over the Windows Live Local drawing tools (scrath pad). If you havent seen them, they are quite amazing. I have done simple VML drawings with some of my apps to create user-savable redlines, but as you already may know VML is IE only. Believe it or not, Microsoft has taken the time to make it Firefox compatible...actually, it reacts better in Firefox vs IE.
So, if you havent seen it, by all means, go check it out right now. Even better, if you know of some existing librabries to emulate it, let me know.
You can't get through a single day anymore without hearing something about AJAX and web 2.0, yada yada. Personally, I think it is all nonsense. Those useless cloud tags and whatever the latest 'feature' is, are worthless...people put AJAX on their sites just to say they did.
There are of course, huge exceptions. There are some applications that make wonderful use of it. First, are the latest generation of mapping applications (google maps, yahoo maps, etc). The seamless panning feature that we all come to expect now is just amazing. It has been difficult to implement that feature in true GIS viewer. All of those images have fixed zoom levels (and are 'premade' - not on the fly like a true GIS) and it would be insanely difficult to pre-process all the different map layer combinations that a user may wish to see. ESRI says they will be implementing a seamless pan feature in the ArcIMS 9.2 html viewer. I am very interested in seeing how they pull it off.
The next great example of AJAX use, is the suggest feature. You know, when you type in a text box, and it attempts to 'fill in' or suggest what you are typing. This is a fantastic feature that I decided that I really needed to add to my sites.
My problem was that when folks search for streets, or parcel owners, or geocode (you get the idea), its important for the user to type in the street name exactly. That means people could type Main Street or Main or Main ST or North Main St, or N Main, etc etc. Of course, we can wildcard it and get all of them and then let the user pick which one they meant - but that means extra steps for the user. So, the solution was to put all the distinct values in a drop-down and force the user to select it. That means more data to download and a lot of street names to scroll through (some places have a huge number of streets).
What if the owner name is LastName, FirstName or maybe Firstname Last name. That's difficult for the user to figure out - they would have to know how it is listed in the database exactly.
So, wouldn't it be nice to use AJAX to provide suggestions to the user? So, I finally got around to it. At least I waited until it was useful.
My thanks to Arjun, who created CFAJAX. CFAJAX makes in ridiculously easy to implement AJAX functionality with Coldfusion. If you want to check out the site that I did that uses this new suggest feature, its Here
- Mapping Capacity grows with ArcGiS Online and GOMaps
- Parcel Fabric Training Announced for January 2014
- Announcing ArcGIS Online Specialty
- Client Spotlight: City of Pensacola
- ROK's Infrastructure as a Service and Jump Start for ArcGIS Online
- Q&A: Jason Harris Talks eCloud with eGroup
- Client Spotlight: SiteTech
- Cloud Based IT Infrastructure for the ArcGIS Platform
- Parcel Fabric Training - Summer Dates Announced for July
- ROK annouces new iOS Application for the citizens of Santa Rosa County
- Amazon S3 (1)
- Amazon Web Services (1)
- application development (2)
- ArcGIS General (28)
- ArcGIS JS API (27)
- ArcGIS Online (4)
- ArcGIS Server (57)
- ArcGIS Server .Net (5)
- ArcGIS Server Coldfusion (9)
- ArcGIS Server FLEX (15)
- ArcGIS Server Hosting (15)
- ArcGIS Server REST (7)
- ArcIMS .Net (1)
- ArcIMS Coldfusion (20)
- ArcIMS General (31)
- ArcMAP Server (4)
- ArcSDE Oracle (13)
- ArcSDE SQL (20)
- ArcWeb Services (5)
- Cloud (19)
- Coldfusion (15)
- Data (8)
- Dojo (1)
- ELA (1)
- ESRI General (13)
- Example Sites (16)
- Geodatabase (2)
- Geoprocessing (1)
- GIS (5)
- GoMaps (4)
- Infrastructure as a Service (1)
- Map Cache (4)
- Mapping Services (3)
- Migrations (5)
- Misc (20)
- Mobile Applications (6)
- Parcel Fabric Training (2)
- ROK Global Applications Group, LLC (3)
- ROK Mobile (2)
- ROK Tecnologies General (6)
- Routemap IMS (1)
- The Parcel Fabric Training (4)