Tuesday, August 2, 2011

getting exposed to some new concepts in my new job

  1. Balsamiq Mockups is a tool for sort-of-whiteboarding HTML forms on a PC. I wonder if it is really superior to acutal whiteboarding. See: http://balsamiq.com/
  2. It is possible that an install of MVC3 R2 will be botched halfway in and there will be no way to uninstall a messed up "ASP.NET Web Pages" or rerun the installation over top of itself. Pain. The fix is here: http://support.microsoft.com/kb/2531566 -it involves editing registry keys: http://www.itechtalk.com/thread1440.html
  3. Inversion of Control may be:
    • Strongly-typed
    • XML-driven

    The Spring Framework is an example of the later.

    Inversion of Control has two shapes:
    • Dependency Injection
    • Service Locator
    The project I am on does both. I have often used Dependency Injection to have a controller get an array of objects from a repository and then hand the data to a view as the model.


    public ActionResult Whatever()

    {

       IFooRepository repository = ObjectFactory.GetInstance();

       Foo[] foo = repository.getAllFoo();

       return View(foo);

    }

    Note in the last line I'm passing in the model to be referenced in Razor like so in the first line of the view:

    @model MyApp.UI.Models.Foo[]

    What is bad about this? The controller is acting as a super-object: FooManager. Service Locator implementation empowers objects in our project to save and destroy themselves, to get children for themselves... etc. Here are what some of the methods in an anemic entity might look like utilizing a Service Locator approach. This is not the whole class as I don't yet understand the whole of the implementation just yet.

    public static Foo GetAll(string bar)

    {

       var profile = GetAll().Where(p => p.Bar.EndsWith(bar)).FirstOrDefault();

       return profile;

    }

     

    internal class ProfileMetadata

    {

       public virtual string Bar { get; set; }

       public virtual string Baz { get; set; }

       public virtual string Qux { get; set; }

    }

    Here a controller goes not "get all the Foo" -but instead Foo takes care of itself.

  4. In AOP (Aspect-oriented programming) a caller may call a method and "advice" may occur before and after the method executes (perhaps in a prep then tear down manner). This is not unlike the use of Authorization and Result filters in ASP.NET MVC and how they might wrap an Action.
  5. Anemic entities have only a shape (get-setters) and not functionality. In terms of DDD: these are likely Data Transfer Objects as opposed to Value Objects (immutable) or "Entities" which have a lifecycle (a changing status). I'm a little hazy on this.
  6. A singleton is the only instance of a class running as an object. There may be only one of it.
  7. The "Team" menu in Visual Studio 2010 is of Team Foundation Server.
  8. AMD (Advanced Micro Devices) spun off its manufacturing arm as GLOBALFOUNDRIES which was then bought by another company called ATIC (Advanced Technology Investment Company) which also bought Chartered Semiconductor.
  9. The tech center of Cyberjaya is a really, really new city in Malaysia. Most persons who work there commute in from Kula Lumpur.
  10. Wiki wiki means quick in Hawaiian.

No comments:

Post a Comment