In: Microsoft
Written by: Taylor Gerring
Just a quick note on how to create a new Outlook data file. In Office 2010, Outlook received a ribbon revamp, moving several common menu items around. For Outlook 2007 and earlier, you can locate the appropriate option under File?Data Files. In Outlook 2010, create a new data file by drilling down through the “New Items” button on the Home tab of the ribbon. If you’re more visually inclined, here’s an image to help you locate the menu item:
In: Mac
Written by: Taylor Gerring
With the introduction of Lion, memory will likely be less important as a hardware specification for many Mac users. Why? There are a few reasons, of which the entire mobile platform, iOS, plays a large role.
First, let’s take a trip down memory lane to the first three versions of the iPhone. Some of the loudest clamor from users rang to the tune of “WE WANT MULTITASKING!” As is typical Apple fashion, they didn’t bother hacking together some barely passable solution, botching the wonderful user experience they’ve cultured. Instead, they told users that it’ll be ready “when it’s ready”.
Read the rest of this entry »
In: Dynamics AX
Written by: Taylor Gerring
And thus begins my foray in to X++ development for Dynamics AX 2009. Here’s a proof of concept Job that I created to stuff multiple values into a Map using a Container. This allows me to lookup a few customer details without repeatedly making trips back to CustTable.
static void MapContainerTest(Args _args) { Map custNotesMap; Container custContainer; CustTable custTable; SalesSourceSystemId admarcSystemId = "DPRADM"; Container conCustDetails; str admarcAccountId = "000123456"; ; custNotesMap = new Map(Types::String, Types::Container); while select AdmarcAccountId, RecId, TableId, dataAreaId, PartyId from custTable where custTable.AdmarcSystemId == admarcSystemId { custContainer = conNull(); custContainer = [custTable.RecId, custTable.TableId, custTable.dataAreaId, custTable.PartyId]; custNotesMap.insert(custTable.AdmarcAccountId, custContainer); } if (custNotesMap.exists(admarcAccountId)) conCustDetails = custNotesMap.lookup(admarcAccountId); else error("Customer not found."); info(strfmt("RecId: %1", conpeek(conCustDetails, 1))); info(strfmt("TableId: %1", conpeek(conCustDetails, 2))); info(strfmt("dataAreaId: %1", conpeek(conCustDetails, 3))); info(strfmt("PartyId: %1", conpeek(conCustDetails, 4))); }
In fact, it’s pretty fast and I’m using similar caching technique all over the place to speed up large jobs.
In: VirtualBox
Written by: Taylor Gerring
Although the last article on running a VirtualBox server gets you up and running with a minimum installation, there are several things that can be configured or installed to make the experience of managing a VirtualBox server much easier.
Read the rest of this entry »
In: SQL Server
Written by: Taylor Gerring
Thanks to my friend Paul Mayle for putting this one out there:
Given a table with columns:
A: int, primary key, identity
B: int, not nullHow can I set a default for column B to be the value in column A?
This is an interesting problem on a couple levels. First, a computed column won’t work, because we need the ability to arbitrarily update column B. We could program a trigger, but I prefer to avoid them when possible. Preferably, we could actualize the purpose of the DEFAULT option. Unfortunately, this isn’t immediately an apparent choice because SQL Server doesn’t allow you to reference a column in a DEFAULT specification. In fact, according to BOL, “Only a constant value, such as a character string; a scalar function (either a system, user-defined, or CLR function); or NULL can be used as a default.”
Read the rest of this entry »
