Just a quick post about a project called Rifidi, an open source project developed by Pramari and the University of Arkansas. Rifidi allows you to simulate how RFID would affect your processes using a graphical interface. I've only had the chance to do a quick once over of the web site, but it defiantly looks interesting. While I don't know if it will have an immediate impact on my current project, it may in the future. Almost more interesting, is in the programming behind the simulation, and the fact that it is open source. Pramari is characterized as a "world leader in open source RFID software" in the press release, so I will defiantly be checking out their web site to see what they offer.
Wow! Microsoft is making available, starting with the core libraries of .net 3.5, the full, commented source code for the .Net Framework. ScottGu posted about it here, and ScottH has a podcast about it here. Not only are they releasing the source code, but they are doing it in such a way as to make it actually useful to the end developer, by offering full support in Visual Studio 2008. Not only can you download the source and install it, but Visual Studio 2008 will be smart enough to go out to a server hosted by Microsoft and dynamically download the correct source file. By correct, I mean, that the service is smart enough to know what patches, service packs, etc you have installed. Chalk this up as one huge reason to jump on the VS 2008 band wagon. For those of you in legal, the code is released under the Microsoft Reference License, which in a nutshell, states you can review, but not compile. Now at first, I thought, who cares if you can't recompile, but then I got to thinking, and remembered a project someone was telling me about where they used reflector to view the source and implement an asp.net server running off the compact framework. Given the use of the compact framework on my current project, I could see a similar need arising. I will have to monitor this closely and see what other people say, as I'm sure I won't be the only one looking to implement some full framework features on our closed WinCE systems.
My friend dialed up 1-800-MyComputerIsBroken and got me on the other end (as usual). The problem, a partially broken network adapter, you know when windows says your NIC is connected, but it just doesn't seem to work reliably. In this case, my friend was unable to connect, or stay connected to World Of Warcraft (the horror). Short of replacing the NIC, my friend had tried most of the common stuff, like different network cable, trying a different computer with his normal network cable, plugging a different computer into the same port on the firewall, etc. My first thought was, maybe WoW got corrupted, but after my friend started browsing the web he noticed timeouts and other issues which led us to believe it was a wider problem. I know I had come across some dos shell commands that is supposed to reset your NIC, so I set out to rediscover those commands. I was pretty sure Scott had posted something awhile back, and after a quick search, I had what I was looking for. The following commands are taken from Scott's post: 1: ipconfig /flushdns 2: nbtstat -R 3: nbtstat -RR 4: netsh int reset all 5: netsh int ip reset 6: netsh winsock reset
While the post's title makes it sound like it's a Vista only fix, it did work for my friend who was running WinXP SP2. I had also come across another site that talks about some of the commonly used command line utilities.
In an email from "Microsoft For Partners" today, I was alerted to a new site called PhizzPop. From the email "We created Phizzpop.com to support Web and Design Agencies with training and resources, facilitate collaboration, and showcase great work." A quick look at the site shows that it has samples of work that other people have done, as well as articles on designing web sites for Web 2.0. I would like to go back and review the site more thoroughly, but for now, I'm just adding to a list of potential Silverlight and Web 2.0 design resources. It will be interesting to see how much the site grows in the next 4-6 months, especially with respect to independent contractors and designers posting portfolios. As technologies like Silverlight and flash (UI portion of Web 2.0) start to infiltrate the enterprise web application space, the need for hiring or contracting a designer will become a reality.
On Thursday, I attended a DevCares event on WCF. We are using WCF in allot of different places on current project and I was hoping to learn some new information on how to make the most out of WCF. While I did learn some new things, I did leave feeling a little disappointed, and felt I could have gotten the same things from a Webcast and saved the 2 hour round trip (more on this later). The event was held at Inacom, in one of their classrooms, and the free snacks and soda, was defiantly one of the hightlights. Even though we were in a technology classroom, complete with 1 workstation per user, they were not setup for us to try out any of the code and examples that were being presented. I downloaded power shell and was playing around with that during that portion of the presentation. I was tempted to pull out my laptop so I could follow along, but would have felt a little out of place. The presentation itself was a mix of power point slides and demos, which didn't always work. There were some nice gifts given away at the end, which consisted of some books a copy of Expression Studio, and a Copy of Office 2007 (professional I think). I wasn't too disappointed that I didn't win, as I do have a MSDN subscription and access to all of the software given away, but for some reason, it's always nice to win. The presenter reminded me of one of my many college professors, and read pretty much verbatim from a prepared presentation. It would have been nice if the notes he was using were made available to us, it would have saved me some typing. Perhaps they are available online, I have not looked to closely. The demos and presentation were given off a laptop running a virtualizes windows Vista, for IIS 7 I am assuming. Given the go live license of Windows Server 2008 Beta 3 and RC0, I would have preferred to see one of those used instead (ok, so RC0 was released 2 days before the presentation). However, I do not think the presenter would have been able to setup anything that wasn't prepared for him ahead of time. The first couple of demos were pretty straight forward and actually worked. These covered the use of the configuration tool, and test harness in VS 2008. The configuration tool included in VS 2008 would have saved me a lot of time in managing my config files this past summer. Also, VS 2008 includes a new test harness tool, which creates a very simple WinForms application based on the meta data retrieved from the WCF service, which can be used for quick testing. You need to have .Net 3.0 as the Target Framework, not .Net 2.0, which if you are upgrading from VS 2005, is probably the default. Once you have targeted .Net 3.0, a new Debug Tag under project properties will be available, and by default, under startup options, the following command will specified: /client:"WcfTestClient.exe" I won't be giving up my unit tests anytime soon, but the test harness application still has it's place. We then moved into logging and tracing using the Microsoft Service Trace Viewer, a tool I sought out well before the class, and has saved me countless hours, so it was good to see if covered in the class. The first "half" of the class wrapped up with performance counters and monitoring through WMI and PowerShell (using WMI). PowerShell is something I have read allot about, but not had the time or immediate need to play around with. That has now changed, with all of the WMI support for WCF, PowerShell is the natural choice for querying our WCF applications. Couple that with the PowerShell extension for PolyMon, and we'll have ourselves a nice little monitoring application. After a quick break to restock on free soda and snacks, we moved into the 2nd half of the class, and this is were things started to go downhill, pretty much because none of the demos worked, and what I feel were some omissions on the topic of deployment. Topics covered in the 2nd half included custom channels, custom bindings, load balancing and deployment. However, none of the demos worked, so it was as if we were just reading from a book, which probably would have provided more detail then what we were getting. On the topic of deployment, we covered IIS and WAS, however, there was no mention of the fact that WAS is only part of IIS 7, and nothing about custom hosting in case you happen to be running WCF were IIS 7 is not available. The only reason given for using WAS was that you could use other bindings besides HTTP, but not why those other bindings might be desirable (such as the huge performance gain when using tcp and binary encoding, assuming WCF at both endpoints). All in all, I think in the future, I will save myself the 2 hour round trip, and try to find some WebCasts, or Channel9 videos on the topic. The exception to this, would be if I knew the presenter was going to be good, based on past experience, a recommendation, or at least if they had some real world experience. I guess I can't complain, the event was free, and there were free snacks.
Yesterday I rebuilt a domain controller, and that night, I felt like rebuilding my computer from the OS up. I've been having allot of problems with Windows hanging at the logon screen, the display going out on the monitor, etc, and I had had, just enough, so last night I backed up a few things, threw in the WinXP SP2 disk and started fresh. Issues that forced the reformat - Too much clutter. After 18 or so months, there is just too much clutter on my machine. Too many utilities not used anymore. I'm almost to the point of using VM's for most stuff. I will probably look to that with my next desktop purchase, which will hopefully take place next year.
- Video Card Driver Issues: I hadn't updated by video card drivers in quite some time. The first update I applied about 1 month ago, and it messed up the resolution on my 2nd monitor. It was showing 1280x1024 instead of 1440x980. About 1-2 weeks ago, NVidia came out with Beta drivers for all the new games coming out. Hoping to fix my screen resolution issues, I installed them. About that same time I installed Kaspersky anti-virus, and between the two of them, started having various problems, which I blame mostly on Norton not uninstalling properly.
- Attempted to remove Norton in favor of Kaspersky. (See Above)
Backup - I keep all important data on 2nd hard drive, so that when I do reformat, I don't have to do much.
- IE Favorites, stored at c:\documents and settings\User\ were synced using folder share, now synced using groove.
- Groove Account: Since I have the same account on multiple computers I didn't really need to back it up, but it was easier to do so. Just export your account from Groove.
- SyncBack Profiles
- IE/Outlook Feeds: C:\documents and settings\adams\Local Settings\Application Data\Microsoft\Feeds
Decisions The only real decision was to go Vista (and if I went Vista, go 64 bit). I have been running Vista on my laptop for over 6 months now, so I do have a bit of experience using it, and could make a fair comparison between XP and Vista. In the end I decided to go with XP SP2. I don't have more then 4GB of Ram, nor do I have a DX10 video card, so I didn't feel as if Vista gave me anything more at this time. I plan on making the switch to Vista when I upgrade the desktop machine next year sometime. That will also be the point at which I switch over to 64 bit, as I intend to be running 4GB+ of ram. Process - Backup
- Insert XP SP2, and reboot. Press F8 to access boot menu and select DVD-Rom drive
- Wait for XP Setup to load
- Realize that the drive letting is messed up due to a HD on the ATA interface.
- Shutdown PC
- Unplug ATA HD
- Start back at Step 2
- Drives are now correct. Select C drive, delete partition and reformat.
- Windows Installs
- Time Zone
- Network Settings (Set to Static)
- Can't join the domain because no drivers for the NIC
- Windows is now installed
- Install latest NVidia drivers, verify resolution on 2nd monitor is correct (check)
- Install Kaspersky, verify startup problems are gone (check)
- Install latest sound card drivers
- Install latest chipset and device drivers for on board devices, like the NIC (check)
- So far, no problems
- Enable remote desktop, join domain, add domain user account to Users group
- Windows Updates, including .Net Framework 2.0,3.0, IE7, WM11, and all updates
- Start installing software
Synchronization - Getting grove set back up was pretty easy, although not as easy as I had hoped. While the account settings were backed up, which included the workspaces, the locations on where those workspaces should be located was not. It was pretty easy to choose the correct location, but once you get to 10+ work spaces it could be kind of a pain
- Added IE Favorites to synchronization. Instead of looking for the favorites folder in explorer, in Groove, go to Options/Preferences/Synchronization and check the box for Internet Explorer Favorites
- Ran into my first limitation with Groove. I wanted to try to sync my RSS feeds, but when I selected the feeds folder, I got a warning directing me to the Groove help topic on WorkSpace restrictions. Those restrictions basically said, the feeds folder (too many files and folders), and my MP3 folder (too many files, and my root mp3 folder would be > 1GB) are not Groove friendly. It looks like I may need to keep folder share around.
What's Left? - More software, such as Visual Studio 2008 Beta 2
- Organize Start Menu
- Install Steam and TF2, hopefully stuttering issue is gone
- Install Printer and Scanner Drivers. Hopefully network printer sharing issues have been resolved
- Backup strategy
- Feed synchronization strategy or software application
So I ask, what do you do for fun on the weekends? I seem to enjoy managing my home network. This weekend, it was fixing active directory, which meant, removing my primary DC and replacing it. I had been having problems for quite some time, but had not had the chance to setup a new DC to take over the FSMO roles. Well, with the addition of my new DL 380 server, I finally decided it was time to fix all those annoying AD problems. I started out by create a new DC (02) as a VM on my primary desktop computer. Since I'm running 3GB or RAM in it now, I have enough to spare to run a DC to manage all of 5 computers at my house (I know, overkill). After I got the new domain controller (02) up and running, I let it sit for a week, mainly because I had other things to take care of. It also made sure that some of the AD replicated over. Since this is my home network, and if I completely trash it, I'm not out of a job, I'm taking a fair number of shortcuts (which probably led to my primary DC experience problems in the first place), so I would not use my steps below as is in a production environment. I knew I needed to transfer the FSMO roles from the old DC (01) to the new DC (02), and did so by following this guide. I also set the new DC (02) to handle the Global Catalog using this guide. I rebooted the machine between each step, and checked the event log for any errors. I finally got it down to where there were no errors on startup, and everything seems to have been replicated to the new dc. So it was now time to kill off the old DC (01), and make a new one (still 01). I followed this Technet article on how to demote a domain controller. DCPromo failed the first time on the NETLOGON step, but the 2nd time it was a success. I shut down the VM, deleted the old vmdk, and copied the vmdk from my base image to the folder for the DC (01). DC01 booted up, as expected, so I configured it for Sysprep rebooted, and went thru the setup wizard. Did a quick windows update, installed DNS, and I was ready for some DCPromo Action. Not much to say, the DCPromo went smooth, changed the FSMO roles and GC back to DC01, rebooted, and everything was looking good. There was one last issue, and that was with DNS. I was getting a warning under event id 4515. I installed the Win2k3 support tools and used ADSIEdit.msc per these instructions to fix it. I deleted the extra zone from the domain (option 2) and the "system" (option 3), leaving just the zone in the forest (option 1). I restarted the DNS service on both DC's, and no longer got the errors.
Get a new server, get volunteered to run a dedicated game server. This is the position I find my self in. Being a Microsoft guy, I do occasionally like to dabble in Linux just to see what all the hype is about, and Linux makes for a pretty good dedicated game server, and so begins my foray into installing and configuring Linux. Install Linux I began by downloading a distro, and Ubuntu is a distro I've played around with before. I opted for the server version, which only installs a core set of files. The installation was extremly easy, as I opted for all the defaults, and did not install the DNS or LAMP packages either. I could see myself installing apache at a later date to host a small website that has info, and stats (if supported) for the games I will be hosting. My other option would be to FTP the stats up to my hosted environment. After the install, I was using around 515MB of my 8GB main drive, and approximately 70 MB of my 1GB of allocated memory. I am a little concerned that the default installation settings only gave me a 400MB swap file. In the past when installing Linux, it has always been suggested that you create a swap file that is the size of 2 * Ram, or in my case 2 GB. I will leave it as it is for now. I found some instructions on how to make a swap file on the main partition and have noted them below for future use. Add Swap File - sudo su
- dd if=/dev/zero of=/swapfile bs=1024k count=256
- mkswap /swapfile
- swapon /swapfile (not persisted, see next step)
- Edit fstab included the following line (remember to use sudo)
- /swapfile none swap sw 0 0
Setup 2nd Hard drive The next step was to setup the 2nd virtual hard drive I had configured as the 2nd scsi device. I followed these instructions. First, you can view your current disk usage, by typing "df -h", which will display in MB. Next, you can use the fdisk command to view and create partitions. First I did "sudo fdisk /dev/sda" to view the current partition setup of my main boot disk (p to view partitions, q to quit fdisk). Next, I ran fdisk on the drive I wanted to setup, "sudo fdisk /dev/sdb", and created (n) a primary partition (p) as the first (partition). Finally commit the changes using the w command. Now that we've created the partition, it needs to be mounted. This can be done by typing "sudo mkfs -t ext3 /dev/sdb1". I chose the ext3 file system for my new partition. After battling with vi for 15 minutes, I decided to try out nano as my text editor for this next step, and it worked like a charm. It looks like it might be an updated version of pico, but I don't know. Anyway, the last thing that needs to be done is to mount the drive so that you can access it. - Create the directory you wish to mount the partition to. I create a directory called data in root using "sudo mkdir data".
- Edit fstab using nano. "sudo nano /etc/fstab"
- Add the following line (the spacing between each word of text is a tab)
- /dev/sdb1 /data ext3 defaults 1 2
- Save by pressing ctrl+O, followed by ctrl+X to exit
- Type "sudo mount /dev/sdb1"
- Now you can see your new hard drive (partition) when you do "df -h". You can also cd /data to go to the root of the new partition.
- I wanted to test persistence, so I rebooted linux using "sudo /sbint/shutdown -r now"
I noticed after my reboot (besides my new partition being mounted), that I was only using 32MB of ram, and 0 swap. I left the server run overnight, and now I'm up to 65MB of ram used, still alot better then the 150-200 a clean Win2k3 uses at startup. Directory Setup, Download and Install Now that I have my HD all setup, and a new /data folder, I can proceed with getting the game server files. I am creating a games sub folder, as I like my stuff very neat and organized. All game servers will obviously go in this folder. Since I don't want to run the game servers as root, I will need to either use my user account or create a new user account. I decided for the later, and created a new user called gamer, which also created a gamer group. I decided to use the existing games group, adding gamer and my account to games, then removing the gamer group. Then I gave the games group permissions over the games folder. I'd like to have game files updated automatically, so I will give the games account rwx permissions over the games folder. If I was really paranoid, I could create a new user account for each game, and only give it read permissions on the directory for that specific game. Then set execute and write permissions only on the necessary files and directories, but I don't think I need to go to that level. - sudo adduser games
- edit the /etc/group file to add my account and the gamer account to the games group
- Find the new group you just added at the end of the file, and add the users you want to belong to the group, separated by commas.
- Change ownership to the games group
- sudo chgrp games games
- sudo chown games games
- sudo usermod -g 60 gamer (Change gamer's primary group to games)
- groupdel gamer (delete the gamer group)
Following these instructions, I setup the steam client and started the download for TF2. The instructions are for a CS server, but they work up to the point were you specify the game you want to download. - Create the hdls_l directory
- Use wget to download the file (I could be downloading a trojan here for all I know, but I'm guessing the forum thread wouldn't be stickied on Steams Site).
- Extract the steam program using tar -zxvf steam.tar.gz, and remove the .gz file.
- Make steam executable and run
Now I ran into some problems here, when I decided I wanted to move my steam program, and subsequent downloads into a steam folder. After coping steam to the steam folder, I deleted some files I shouldn't have and got an error message saying I had an incompatible version. Use this command to reset steam and force it to download the latest version: rm ~/.steam/ClientRegistry.blob I finally got the game downloading but spent so much time messing around that I forgot what I did. So ends this section :( TF2 server configuration I found a server.cfg on a forum post that looks pretty promising, although, it does error out in some places. I also installed screen, so that I can start up the server and leave it running in the background after I log out from SSH. While I've used screen before, I forgot about it until I came across this tutorial for running a dedicated source server. I finally got around to giving the Linux server a dedicated IP address, setup port forwarding, and gave the game server a password to join. I'm able to connect to it locally, but have not tried from outside my own network. Server Lock down Basically, I want to add some precautions incase the Linux server is by some chance, hacked or taken over. Primarily, I want to isolate the Linux server from the rest of the network. I know that there are a couple of options out there, I just need to research them. More to follow. Other Linux Commands I always forget - passwd - Change the current users password
- adduser [username] - Adds a new user, with the username specified by [username], to a group called [username]
- chgrp group directory/file- change group ownership
- chown user directory/file
This started out as a quick post on the new Integrated mode in IIS7, and while looking for information on it, turned into a larger post on new features in IIS 7. Integrated Mode: Integrated mode, refers to the new integrated pipeline for serving requests and responses in IIS 7. It is the way in which extensions are executed on IIS 7, and supports managed code, and not just C++ anymore. Since managed code is supported, you can write handlers in C# which can be executed on classic asp pages, static pages, etc. The common example I have seen, is that it is now possible to use asp.net forms authentication at a site level, protecting all content served from IIS. I remember being able to protect static content by changing a config setting, however the memory usage for the asp.net worker process would climb out of control because it was actually reading the file to be downloaded. I did not have enough time to try the examples I found, but they seem pretty straight forward. Check out these articles on integration mode for more details: What does Microsoft like about IIS 7?: That might seem a little weird, or obvious, since IIS 7 is a Microsoft product. However, this blog post lists the top 10 things that Microsoft Ops like about IIS 7. I've picked out the ones that I think are most interesting and combined them. - Configuration and Manageability
- AppCmd command line tool.
- XML based configuration file (ApplicationHost.config) (say bye to the metabase). Even better, is that you can share this XML config file via UNC and setup all your web servers the same way.
- Default location is: \%systemroot%\system32\inetserv\applicationHost.config (On vista it was in a config sub directory).
- I was only able to open the file after I copied it to the desktop.
- Request filtering in ApplicationHost.config replaces url scan.
- See this article to get started.
- It looks like you can only configure Request Filtering by editing the ApplicationHost.config.
- There is also a new related option, hiddenSegments that defines files and directories that are not servable. For example, web.config, /bin, etc.
- Failed Request Tracking
- Low overhead, but you still need to be careful when using on production
- UNC Content
- Improved support for sharing content from a file server to a web server.
- Use DFS and other tools in Win2k8 to sync files between 2 or more file servers to eliminate single points of failure.
- Dynamic output caching
Resources:
When markup won't do, why not markdown? [Scott] recently wrote about JottIt and MarkDown. JottIt is a simple way to create a web page. The content is rendered using Markdown, and feels allot like a Wiki. Upon creation of your first site (just go to JottIt and type something in the big empty text box), you are redirected to a URL like http://jottit.com/d4b8y/. You do have the ability to create a sub domain with a more meaningful URL. Markdown is a way to support rich text, without using a rich text editor, which is how allot of Wiki's work, I just never knew there was a formal definition. The markdown that I have linked to, is a .Net port, and compiled into a .net assembly. Not requiring a cumbersome rich text control, and removing HTML formatting from user controlled text are two big reasons to consider MarkDown. The syntax as extremely easy, and rates high on Scott's WAF.
|