Incanaby

HomeLink To UsLinksFAQAbout UsContact Us













Bookmark Us | Free Money
Link To Us | Directory | Testimonies | FAQ | About | Contact Us


Directory

(If you would like to have your site listed in our directory, click here.)


Links Directory
Automotive 1, 2, 3
Beauty & Fragrances 1, 2, 3
Business Resources 1, 2, 3
Business Services 1, 2, 3
Clothing & Accessories 1, 2, 3
Computer Software 1, 2, 3
Computers & Hardware 1, 2, 3
Credit Cards 1, 2, 3
Dating & Personals 1, 2, 3
Debt Consolidation 1, 2, 3
Directories 1, 2, 3
Downloads 1, 2, 3
Electronics 1, 2, 3
Employment 1, 2, 3
Financial 1, 2, 3
Fitness & Nutrition 1, 2, 3
Flowers & Gifts 1, 2, 3
Freebies 1, 2, 3
Health & Wellness 1, 2, 3
Home & Garden 1, 2, 3
Information 1, 2, 3
Internet 1, 2, 3
Jewelry 1, 2, 3
Loans 1, 2, 3
Miscellaneous 1, 2, 3
Movies & DVD 1, 2, 3
Money 1, 2, 3
Music 1, 2, 3
News & Blogs 1, 2, 3
Pharmacies 1, 2, 3
Real Estate 1, 2, 3
Shopping 1, 2, 3
Sports & Outdoor 1, 2, 3
Telecommunications 1, 2, 3
Tools & Hardware 1, 2, 3
Toys & Baby 1, 2, 3
Travel 1, 2, 3
Video Games 1, 2, 3
Website Resources 1, 2, 3
Work At Home 1, 2, 3



  sportsbook



MSDN Blogs
from ideas to solutions

HealthVault Connectivity Models and Solutions Architectures

by Phil-Pennington
18 May 2013 at 10:32pm

Over the past few weeks, we?ve participated in healthcare solution development events at the University of Louisiana and in Silicon Valley.  These events were designed to spark healthcare informatics innovation using team-competition and incentives, including cash prizes.   We enjoyed many aspects of these events (Fred Trotter?s soap-box session stands-out) and consider it a privilege to have met so many dedicated and wonderful people.   As I observed event participants discussing and prototyping their solutions, a key takeaway for me was a perception of confusion about just how to get-started developing for HealthVault.   In certain respects, the HealthVault platform is a simple XML over HTTP web-service.   But, there is much more to it than that, and; in practice, perhaps few would choose to use the service without an encapsulating client-side SDK anyway.   Much of our developer documentation necessarily details the platform?s foundational XML over HTTP implementation with perhaps inadequate coverage of corresponding feature-areas as abstracted by our SDK classes and constructs.   Navigating our platform features from a ?getting-started? perspective, and especially during a 48 hour competition, can be challenging.   Herein, we hope to clarify a few key solution design-options that map onto platform functionality and identify corresponding ?getting-started? decisions.

  HealthVault + Your Client Applications

The following image illustrates that HealthVault Platform Services are exposed via a number of feature-areas.   Some of these features are unique for a web-service in that they encapsulate workflow involving interaction with real people.  If our web-service involved only content browsing, selection, and consumption, then it would be much more recognizable relative to common web-service abstractions.   Consequently, a first-step conceptually is recognition that you may be dealing with uncommon terminology and unfamiliar extensibility models.   Let?s explore this illustration further.

 

 

Choose Your Data-Types

Refer to the lighter-blue graphic in the middle of the illustration directly above.   Though not comprehensive, this feature-list is key to understanding solution integration options.   For example, it?s readily apparent that the platform exposes a data-access API and that most operations utilize a PersonID and a RecordID parameter to uniquely target a HealthVault record.  Also, note the top-most green text-block to the right under the heading ?Your Client App(s)?.   As a solution designer, a first decision is simply to identify what operations (e.g. create, read, update, delete) are required upon which data-types hosted within a HealthVault record.  Do you need to know what data-types are available?   Browse over to developer.healthvault.com.   Notice the link therein to the Health Types Schema Browser.  

Special considerations for data-types:

If you are using one of our SDK?s to build your solution, then you can use predefined library classes encapsulating our data-types.   With the .NET SDK, data-type classes are referenced from the Microsoft.Health.ItemTypes.dll assembly file.   Using these classes trivializes creating data-type object instances, object serialization, and transferring data to/from HealthVault.  Our new Win8 library includes a modernization of these class abstraction specify useful within the Windows Runtime execution environment. If you are not able to use an SDK within your solution, then you?ll need to deal with data-types formatted as XML or JSON.   This is often the case if your solution runs in an execution sand-box such as Silver Light, as client-side script running within a browser, or on an embedded device.   You may need to ?roll-your-own? data-handling classes, copy them from SDK source files, or perhaps auto-generate classes from schema using a tool like XSD.exe.   The amount of development involved depends upon the number and complexity of data-types you?ll be using. Each HealthVault integrated application is custom-configured to access specific data-types.  You utilize the HealthVault Application Configuration Center to define data-access rules for your application along with corresponding specified data-types.   HealthVault uses this configuration information to limit your application to as-specified and user-authorized fields within HealthVault records. Spend some time thinking thru data-centric scenarios.   For example, typical clinical-trial scenarios require that data-measurements can?t be changed.  In that case, use the HealthVault ?immutable? data-type attribute.   Consider using the Care Plan data-type or the Continuity of Care document type if your solution will be providing summary information to patients and especially if that information is important for sharing with other providers. Will you be rendering the data to a UI, perhaps a browser?   Consider utilizing the transforms provided with HealthVault platform services to ease your development burden. Choose Your Connectivity Model

HealthVault exposes a rich set of client application connectivity options.   Why do we need many options?   Recall that your application will be participating in one or more workflow activities involving real people who may or may not be using your application interactively when HealthVault platform interaction occurs.   This is an important design-to point best described by scenario example.  Note that many HealthVault solutions utilize more than one connectivity model depending upon aspects of the overall solution architecture.   Again, developers utilize the HealthVault Application Configuration Center to define their application connectivity requirements that correspond directly to connectivity model decisions.

The Software on Device Authentication (SODA) connectivity model applies when you are writing an application that will most likely run with user-interactivity on a personal computer.   A SODA application typically accesses only a single HealthVault record at once.   This connectivity model was conceived in order to simplify management of secure access to the HealthVault platform from widely distributed client-application installations.   Platform interactivity occurs securely within a shared-key encrypted session.   This avoids the complexity of managing a Public Key Infrastructure as certificate exchanges are not required.   Of course, the various HealthVault SDK?s encapsulate the SODA model functionality and most client applications thus inherently benefit without further development beyond invoking the connection methods.

Online connectivity applies to web-page applications (e.g. Patient Portals) wherein HealthVault data-access occurs within a user-interactive browser session.   Typically, user authentication initiates secure site access along with corresponding HealthVault application access.   As most Online applications are deployed within data-centers, certificate based security is much more viable.   Hence, Online applications are configured to use a private-key certificate in which the corresponding public-key has been previously shared with the HealthVault platform using the HealthVault Application Configuration Center.  When using the HealthVault SDK, developers may derive their web-pages from HealthVault base classes that encapsulate Online application functionality.

Offline connectivity is appropriate when your solution requires access to HealthVault records anytime and without user interactivity.   A one-time Patient Connect workflow process (described further below) is required of Offline applications.   Thereafter, your Offline application may simply invoke record access as needed.   This access occurs indefinitely or until the access authorization is explicitly removed; either by the account owner or by the Offline application itself.  Offline application authentication is also certificate based with corresponding Offline data-access rules defined using the HealthVault Application Configuration Center.  When using the HealthVault SDK, developers may leverage the OfflineWebApplicationConnection class to initiate an Offline connection.

Direct connectivity refers to a secure messaging (i.e. secure email) HealthVault platform facility.  The Direct Project served as the genesis of loosely-connected consortium providing secure data-transfer for healthcare providers and their patients.   Each HealthVault consumer receives a free secure email inbox (e.g. myname@direct.healthvault.com).   Solution providers may simply integrate with a secure email server gateway in order to exchange information with HealthVault account owners.   What if you don?t know whether or not a patient has a HealthVault account?   No worries, just send your message to a special HealthVault Direct address (i.e. newuser@direct.healthvault.com) and specify the patients insecure email address in the subject line (e.g. myname@outlook.com) and HealthVault will enable that patient to both create an account and receive your message.   You may also attach standard healthcare documents (e.g. Continuity of Care Documents) and HealthVault will import the information into the appropriate Health Information fields of the patient?s HealthVault record.

Special considerations for connectivity models include:

If you anticipate both a web-portal usage scenario as well as a back-end clinical system usage scenario, then you?ll need a combination of both Online and Offline connectivity.   It?s possible to have aspects of all connectivity models within a sophisticated distributed solution scenario.   You may consider utilizing a Master-Child ID HealthVault Application configuration in that case.   Otherwise, you?ll either have a single Application ID with multiple access-rule definitions or a number of Application ID?s with individual access-rule definitions. Direct connectivity requires nothing more than an exchange of Trust between your organization and HealthVault operations.   You may wish to join the Automated Blue Button Initiative and participate in Trust Bundles wherein multiple business entities exchange Trust collaboratively as groups. Direct connectivity is a great way to accomplish Meaningful Use certification criteria.   Leverage HealthVault to achieve patient View, Download, and Transmit (VDT) objectives and subsequently request a report of completed VDT activities.

 

Choose Your HealthVault Features

It?s somewhat easy to confuse connectivity models with other platform features because there are close relationships between them.   As mentioned, an Offline application will typically utilize a workflow named Patient Connect to gain authorized access to a HealthVault record.   Hence, it?s common to refer to Offline connectivity and Patient Connect synonymously.   However, it?s preferable to separate these as Patient Connect is more a type of workflow than a connectivity model.   We won?t explore many HealthVault platform features in this section, but rather discuss a few that become important for HealthVault solution designers.

A Patient Connect workflow is typically used within a solution that requires access to HealthVault records without a user-interactive session.   Patient Connect is often combined with Offline connectivity (discussed above).   The classic use-case is one of new patient registration.  In a clinical setting, you want to both establish a patient record within your back-end clinical systems as well as establish access to the new patient?s HealthVault record.  Your application initiates Patient Connect by sending a request to HealthVault including a local patient ID and a secret question/answer known by the patient.  HealthVault responds with an access token along with a welcome URL.   You provide this information to your new patient (e.g. either via email or via a kiosk).   When the patient browses to the URL, HealthVault validates the access token and guides the patient through account access/creation and authorization of your Offline application.   Once this workflow is completed, your application may query HealthVault for a list of authorized accounts and associate those with entries within your patient database.   You subsequently interact with HealthVault programmatically using the patient HealthVault PersonID and RecordID.

DOPU, meaning Drop-Off and Pick-Up, is a workflow in which your application sends information to HealthVault but with no direct HealthVault record access.   Like Patient Connect, you initiate DOPU by sending a request to HealthVault including attached healthcare information.  You also provide your email address, the patient?s email address, text representing an email to the patient, and a secret question/answer know by the patient.   HealthVault stores this information, returns a package ID, and subsequently sends your email message to the specified recipient.    The patient will receive instructions via email for on how to retrieve the information securely.   Any attached information recognized as HealthVault data-types are optionally imported into the recipient's HealthVault record.   This feature enables a very loosely-coupled patient-provider information exchange.

I?ll mention support for Devices as a platform feature as well.   Many healthcare devices are listed within the HealthVault Device Directory.   Some of these devices are very capable providing directly integrated HealthVault connectivity via Wi-Fi or mobile networks.   Others leverage companion personal computer applications, importing data via USB for example.  Alternatively, devices vendors may leverage the HealthVault Connection Center application and USB connectivity to transfer data to HealthVault records.  Interestingly, the HealthVault Connection Center application also provides image file uploading functionality (e.g. DICOM images).

Direct Messaging is also a workflow-oriented platform feature (in addition to a connectivity model).  What could be more intuitive than sending an email with attachments from your clinical solution?   Currently, HealthVault users will need to enable the integrated HealthVault Message Center in order to utilize their inbox and subsequently transmit information to providers.  

Special considerations for HealthVault features include:

Your solution?s patient and patient-record interactions will determine your choice of platform feature-area integration.   Consider the workflows involved and design accordingly. Perhaps you want to utilize more than one workflow feature area from within the same solution.   Consider implementing a central service from which multiple subsystems may share a common HealthVault connection. A usage scenario options matrix is published here.

 

Choose Your Solution Platform

We probably already have an SDK or code-library for your target solution platform.   Again, an SDK is not strictly required for HealthVault solution integration.   But, if you use one, you won?t have to write a lot of protocol handling, security constructs, and data-type parsing and serialization code.    Our SDK list is here along with a number of corresponding samples.  

Special considerations for solution platforms include:

Market reach.   Are you developing for mobile?  You will likely need to consider designing for code-portability which may drive your solution design to a web-service model with as much ?common-code? on the client device as is possible.   Enterprise or Consumer?  Consumer applications typically correspond in a one-to-one manner.   That is, one application user to one HealthVault record.   Enterprise applications, however, may exhibit a many-user to many-record usage model.   This becomes very important as you imagine who your target users may be.   A physician or nurse using a tablet device may wish to scroll a list of patient records, select one or more, and exchange information with the selected person or group.   Hence, SODA connectivity running on a tablet platform may be appropriate for Consumer while the Enterprise scenario requires more design decisions and corresponding system integration considerations. An interesting new platform option is the Windows Runtime introduced with Windows 8.   Windows Runtime applications are distributed via the Windows Store (an Enterprise-scoped distribution option exists as well).  A first-party HealthVault Windows Store application is available to consumers for free.  In fact, you may leverage the same code library as our Windows Store app to build your Windows Store application.

 

  HealthVault + Your Web Service + Your Client Apps

You may require a solution architecture in which multiple client applications utilize the same HealthVault subscription.   The following image illustrates this model.  This design would be ideal for an enterprise clinical system servicing multiple departments with a variety of client-app types.  Let?s walk-thru the illustration in more detail.

 

 

In the middle of the image is a ?cloud provider? hosted ?HealthVault Proxy Service?.   This service encapsulates all connectivity with the HealthVault Platform and is configured as an Offline application from a HealthVault perspective.  It serves primarily as a stateless router of HealthVault access requests from any number of Mobile, Enterprise, or Device applications (illustrated on the lower-right of the image).   Ideally, this Proxy Service would accomplish several functional requirements for the client-app community including:

Serve as a HealthVault interface for an Enterprise domain enabling both a departmental system deployment model as well as an Enterprise tablet device deployment model. Centralize a write-once, deploy-once, HealthVault connectivity and feature integration solution.   The proxy service is the only subsystem component with the need to understand HealthVault connectivity and HealthVault feature API?s.   All client-app types need only understand how to integrate with the proxy-service itself (more on this momentarily). Expose a subset of HealthVault features including Data-Access, Patient Connect, DOPU, and as a Direct Gateway.   The SODA connectivity model wouldn?t make sense within the proxy-service as it is intended instead as a direct-to-HealthVault connectivity model.  The Online connectivity model might be combined with the Proxy Service if an interactive Patient-Portal experience is required.   In that case, the proxy service would effectively host both a web-app as well as a web-service with corresponding Online and Offline configuration rules. HealthVault currently doesn?t expose services directly as REST, SOAP, or OData.   Hence, the proxy-service provides an opportunity to implement these standards on behalf of HealthVault.   Thereby, increasing the richness of client usage scenarios. HealthVault is a very XML friendly platform.   A proxy service may provide a translation function wherein XML content is transformed to whatever client data-model desired; JSON, for example. Serve as a central-point for organizational analytics, profiling, or security management.

In fact, this is the solution architecture that our Dynamics CRM partner?s are utilizing to implement Population Care Management solutions.   The use of a proxy service is actually necessitated by the Dynamics CRM solution extensibility sand-box.   The HealthVault SDK assemblies are restricted from use in the solution sand-box for a number of reasons including the use of system cryptographic methods.   However, code running within the sand-box is completely capable of call-outs to web-services.  It?s important to note that the proxy service need not be hosted in the cloud at all.   In fact, it could reside on the same server or within the same domain data-center as the Enterprise client systems.

As you may have guessed, this article is a segway to subsequent articles focused on exactly how to implement a HealthVault ?bridge? solution architecture.   A number of motivations culminate in this exercise.   One is that modern application design is largely focused on cloud-services composition instead of on isolated application design.  Imagine a clinical office utilizing Office365, Dynamics Online, Windows Azure, Lync or Skype, and HealthVault as platform technologies for their healthcare informatics needs.   With a bit of customization, these subscription-based services would fulfill a significant amount of business process technology requirements.  


Revisiting Connectivity Models and Solutions Architectures

by Phil-Pennington
18 May 2013 at 9:57pm
Over the past few weeks, we?ve participated in healthcare solution development events at the University of Louisiana and in Silicon Valley .  These events were designed to spark healthcare informatics innovation using team-competition and incentives, including cash prizes.   We enjoyed many aspects of these events ( Fred Trotter?s soap-box session stands-out) and consider it a privilege to have met so many dedicated and wonderful people.   As I observed event participants...(read more)

Xbox - A New Generation Revealed

by Usman Ur Rehman Ahmed
18 May 2013 at 4:11pm

On Tuesday, May 21, we’ll mark the beginning of a new generation of games, TV and entertainment as Xbox is revealed; a New Generation of Xbox. You can watch it live on May 21 (Tuesday), 10pm Pakistan Standard Time
on Xbox Live or Xbox.com.

Stream Url: http://www.xbox.com/en-US/hub/reveal


How to be a good web service? Syncronous or asyncronous, let's straight!

by Albert (Gong) Cheng
18 May 2013 at 1:47pm

Web service method can be either syncronous or asyncronous. A high quality web service should be very clear about whether each end point is syncronous or asyncronous.

What are syncrhonous operations?

Syncronous operations completes the operation at the time of completion of sending response. It is suitable for operations that can be completed at milliseconds level. Operations only involve database reading operation typically can be completed at this time frame. Syncronous operation returns result in the response to the client.

What is asyncronous operation?

Asyncronous operations completes the operation after the completion of sending response. It is suitable for operations that may last longer than a typical http request timeout. Examples include async Blob copy method of Azure Storage service, create job method of Azure media services. Both method operate on Gigabyte level of data, it may take  hours to complete those operations depending on the job size and work load on server side. The response of these operations typically contain a unique id to identify the submitted request, and client can check the status of the operation using the ID given.

What are the common pitfalls?

There are two possible types of error. Among them, type I error is much more common than type II error.

I. Asyncronous operation was implemented as syncronous.

Type I error occurs when the response is returned prior to the completion of the operation. Upon receiving the response, the client may take action based on the assumption that the prior operation had already been completed. This type of error basically breaks the atomicity of the web service operation.

The fix of the operation can be either delay the response until the operation is completed or convert this "syncronous" operation into an asyncronous one.

II. Syncronous operation was implemented as asyncronous.

This type of the error is very rare simply because implementation of asyncronous operation typically takes a significant more resources, it is unlikely that developer will take the pain to write a complicated async web service which can be completed instantaneously. :)


How to teach yourself programming in Two Words!!!

by Ed Price - MSFT
18 May 2013 at 12:36pm

Read this


Understanding XAMARIN ? Create iOS, Android, Mac and Windows apps in C#.

by BrunoTerkaly
18 May 2013 at 11:51am

Introduction to XAMARIN

This is a continuation of the Windows 8 App Factor challenge material. See http://www.windows8appfactor.com





Key Facts In short, XAMARIN is about writing code in one language to support the major mobile platforms. Created by the engineers that created Mono and MonoTouch Leverages cross-platform implementations of .NET Consists of a community of 314,588 developers. All about cross-platform Support iOS, Android, Mac and Windows all in C#. Reuse existing code Use your favorite .NET libraries in Xamarin apps. Easily use third-party native libraries and frameworks. 2 IDEs Visual Studio or Xamarin Studio Xamarin Studio is a fully-featured IDE that is built for mobile app development. Access to native APIs Allows you to create native apps with device-specific experiences.

 
One language, not 3 is the goal of XAMARIN Traditionally this means using each platform?s provided technology and SDK, i.e. Objective-C for iOS, Java for Android and .NET for Windows.
Reasons why you should care Realize tremendous code sharing across mobile platforms Reduce your time to market Leverage existing talent Meet customer demand for multiple device mobile access Reduce cross-platform complexity You can do both productivity apps and game apps Works best when the focus is on productivity and utility (non-game applications). Core strength of XAMARIN Implement native user interfaces specifically for each platform But still be able to share most of the non-user interface code and get the best of both worlds Write your data storage and business logic code once Leverage native UIs on each platform



Key Facts Each of the core platforms that are supported has custom tooling. Windows Phone Use the XAML/Silverlight presentation layer, using Visual Studio or Blend?s UI designer Windows 8 Use the Windows Store APIs to create a native user experience. iOS Use the MonoTouch.UIKit APIs to create native-looking applications, optionally utilizing Apple?s Interface Builder. Android Use Android.Views to create native-looking applications, taking advantage of Xamarin?s UI designer



The major pieces The interesting news here is that XAMARIN is capable of creating a native app.
C# language Allows you to use a familiar syntax and sophisticated features like Generics, Linq and the Parallel Task Library. Mono .NET framework Provides a cross-platform implementation of the extensive features in Microsoft?s .NET framework. Compiler Depending on the platform, produces a native app (eg. iOS) or an integrated .NET application and runtime (eg. Android).
The compiler also performs many optimizations for mobile deployment such as linking away un-used code. IDE tools The Xamarin Studio IDE and the Xamarin plug-in for Visual Studio allow you to create, build and deploy Xamarin projects.
More to come I will take this a step or 2 further in the next few days.


When and When Not To Use the SharePoint 2013 App Model (v5)

by Alex Randall
18 May 2013 at 7:53am

 Here is the most recent version of my PowerPoint slide deck for my "When and When Not To Use the SharePoint 2013 App Model" presentation I gave at SharePoint Saturday Baltimore on Saturday, 5/18/2013.

 

                  WhenAndWhenNotToUseTheNewSP2013AppModel-Presentationv5.pptx

 

  I hope it is helpful in understanding what the App Model is all about!  Please feel free to comment or ask questions!


Imagine Cup 2013 ? ??????? ?????? (???? 3)

by DPE BG
18 May 2013 at 7:29am

???????? ??? ????????? ?? ???? ? Imagine Cup 2013 ?? ???????? ???? 5 ??????. ????? ??? ???? ??????????? ? ????? ?? ????????????? ??:

MG Power

 

????: ?????? ????????, ?????? ???????, ????????? ??????

?? ????? ??????, ????

MG Power ?? ????????? ?? ?? ?????? ??? ?? ?????????? ??????????? ?? ??????? ? ?? ????????? ???????? ?? ?? ????? ????? ???, ???? ??????????? ??????. ??????????? ???????? ??????, ?????? ?? ??????? ??????????? ?? ??? ??????, ??? ?? ??????? ???? ????? ???. ? ?????? ???? ??? ??????? ?? ???? ????? ??????? ? ??????????? ?????????? Windows 8 ????.

Umbra Team 


????: ?????????? ??????????, ????? ??????, ?????? ????? (???????? ??????????? ???. ??????? ?????????), ?????? ???????? (????)         

??????: ?????? ??????

??????????? ?? ?????????? ??????, ? ????? ????? ?? ??????? ? ????? ?????? ?? ?? ????????? ? ???????? ????, ????????? ???? ??? ????????. ? ?????? ?????? ???????? ?????????, ?? ??? ??????????? ?? ?? ?????????? ????, ? ?? ??????????, ????? ? ????? ???????? ????????. ????? ????????? ?????

???? ? ?????? ?? ???????, ? ????? ?? ??????? ????????? ???? Umbra. ??????????? ???????? ????? ? ???????????????? ??, ?????? ?? ???? ?? ????????? ?? ?????? ????? ??? ?? ??-???????? ????? ? ?? ???? ???? ?????? ??-????? ?? ???? ?? ????? ???????? ?????.

Alfa Aliens



????: Valeriya Inyusheva, ????????? ????????, Tatevik Mkrtchyan

??????????? ??????????? ? ???????????

? Alfa Aliens ???????? ?? ?????????? ????????, ???????? ?? ??????????? ?? ??????? ?? ???????? ?????? ?????? ??????????? ? ? ??????????? ?? ?? ?????? ????. ???????????? ??????? ?? ???????? ?? ?????? ?? ????????? ? ????????????? ????-????, ????? ????? ?????????? ?? ?????? ?? ???????? ???????? ?? ? ?? ?????????? ???? ?????????, ?????? ?? ??????????.

Blitz Games

 

????: ???????? ??????, ???? ????? (?????????? ??????????? - ?????), ????? ?????? (???????? ??????????? ???. ??????? ?????????), ???????? ????? (??? ????????? ???????????)

?????? ???? ? ??????????? ?????? ?? ???????? ?? ??????????? ??? ???????????? ? ?? ??????? ??????? ?? ?????????? ? ?? ???????? ??????, ????? ??????? ??. ?? ??? ??????? ?? ??????????? ????? ??????? ?? ?????????? ? ?????????? ? ????????? ?? ?????????. ????????? ???? ????????????? ?? ????????? ? ????? ??????? ?????????? ?????? ?? ? ?? ??????? ? ???????? ?? ??????????? ??????? ?? ?????? ?????.

Blitz Games ????????? ??????? ????? ????? ?? ???????????? jump-n-run ???? ? ????????? ?????????? ? ??????????? ??????? ? ?????? ?????? ????? ????????.

Mirvam


 

????: ??????? ??????? (????), ???? ???????? (??? "????. ?. ????????", ????????)

Mirvam ??????? ????? ????????? ?????, ? ????? ????? ?? ???????? ? ??????? ?? ??????? ? ????. ???????? ?? ? ??????? ?? Kinect ? ????????? ???????????? ?????? ????? ????????????? ?? ???????? :)


Scripting : Toggle proxy server in IE settings with PowerShell

by Aymeric Mouillé - Consultant
18 May 2013 at 2:43am

My current Customer use a proxy server for Internet and I need to change this settings each morning (when I start to work for him) and each evening (when I return at home). To save precious time, I wrote a little script that toggle this setting at each script execution :

$regKey="HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" $proxyServer = "" $proxyServerToDefine = "{Proxy}:{Port}" Write-Host "Retrieve the proxy server ..." $proxyServer = Get-ItemProperty -path $regKey ProxyServer -ErrorAction SilentlyContinue Write-Host $proxyServer if([string]::IsNullOrEmpty($proxyServer)) { Write-Host "Proxy is actually disabled" Set-ItemProperty -path $regKey ProxyEnable -value 1 Set-ItemProperty -path $regKey ProxyServer -value $proxyServerToDefine Write-Host "Proxy is now enabled" } else { Write-Host "Proxy is actually enabled" Set-ItemProperty -path $regKey ProxyEnable -value 0 Remove-ItemProperty -path $regKey -name ProxyServer Write-Host "Proxy is now disabled" } Hope this helps!

//Build/2013 Conference See what's next ? Learn from our engineers ? Network ...

by Lee Stott
18 May 2013 at 1:37am
The right content for your role

There are hundreds of thousands of topics in the Dev Center, http://dev.windows.com and http://dev.windowsphone.com. We know in any organisation discoverability and sharing of content is critical to success.

So why not get to grips with this detail in person at Microsoft //Build/2013.

Last month Steve Guggenheimer announced //Build/ 2013, the conference is taking place June 26-28, 2013 at the Moscone Center in San Francisco. //build/ is a great opportunity to learn more about developing Windows Store apps.

The conference will include great presentations, demos, info sessions, etc.  There will be no better place to get the latest and greatest info on Windows Store app development.

You can see all the details about the conference and register at www.buildwindows.com.

Here are some key resources for the each roles in your organisation.

Developers

When you go to the Windows Store apps home page, you?ll see:

?Key tasks and content? prominently called out to help you jump into the content you need. Events as well as new resources. Downloads to help you dive right into coding, all the resources you need to get started, and our detailed guidance on getting your app into the Windows Store. Important code samples are highlighted, and how-to guidance is more easily navigated with an eye toward the development lifecycle. ?One Dev Minute? videos throughout the site, which give you a quick look at how to add features to your app. Designers

The Design section. You can find useful downloads and reusable design assets more easily, and design inspiration and case studies give you the tools you need to make a unique experience on Windows.

Businesses

The business opportunity of the Windows Store is significant, with a better economic model than competitive platforms and flexibility that enables you to build the business you want. The new Market section of the site provides great tips for marketing your apps, evaluating telemetry data, and passing app certification.

There?s more to come

With //BUILD/2013 less than a month away, stay connected by following @windevs @ukmsdn on Twitter and subscribing to the Windows Store newsletter for the latest information on Windows 8.


Just released - Prism for Windows Runtime

by bmw1122
18 May 2013 at 12:58am

Last December, we announced our thoughts on a new version of Prism for Windows 8 which we code named Kona. We are excited to announce that Prism for the Windows Runtime and the associated AdventureWorks Shopper reference implementation is now available on the Windows Dev Center,

What is Prism for Windows Runtime?

Similar to Prism for WPF and Silverlight or ?Prism Classic?, Prism for Windows Runtime provides guidance to help you more easily design and build flexible and easy-to-maintain Windows Store business apps  using C#, Extensible Application Markup Language (XAML), the Windows Runtime, and modern development practices. These are apps that are ?built to last? and ?build to change?. Using design patterns that embody important architectural design principles, such as separation of concerns and loose coupling.

Prism comes with the AdventureWorks Shopper reference implementation which uses the Prism library to demonstrate modern development practices such as Model-View-ViewModel (MVVM) pattern with navigation and app lifecycle management. Additionally the reference implementation demonstrates validation, application data management, accessibility, localizability, touch, search, tiles, tile notification, and multiple view states. It also provides guidance on testing your app and tuning its performance.  

What?s in the box?

Reference implementation: AdventureWorks Shopper Quickstarts Hello World Event Aggregator Validation Prism library Microsoft.Practices.Prism.PubSubEvents: Event Aggregator in a portable class library Microsoft.Practices.Prism.StoreApps: Bootstrapping, MVVM, Navigation, Lifecycle Management, Delegate Command, Settings Charm, Search, and Flyout Support Documentation: on Windows Dev Center and in PDF

How to get it?

The Prism library source code is available with the AdventureWorks Shopper reference implementation on the MSDN Code Gallery at http://aka.ms/prism-winrt-code. The Prism binaries will be available on NuGet starting Monday May 20. Search for Prism.

You can view the documentation at http://aka.ms/prism-winrt-doc or download a PDF version at http://aka.ms/prism-winrt-pdf.

How to get started?

For an overview of the guidance, watch this Channel 9 Video of Francis Cheung and myself giving a walk through of Prism. To evaluate and see the guidance in action go to Getting Started chapter of the documentation. This chapter tells you how to build and run the reference implementation as well as describes the different projects in the solution.

To create your first app see Using Prism for the Windows Runtime chapter in the documentation. You should also follow Francis Cheung?s blog post if you want more detailed instructions. Additionally our CodePlex Knowledge Base page provides additional resources to get started.

 

How to provide feedback?

If you?d like to provide feedback, please post it via the Codeplex forum. This is where you can also get support. We have a dedicated sustained engineering team monitoring the forum regularly. To report a bug, use online Issue Tracker. We will start planning the next release soon so your feedback is appreciated.

If you have a story of how your team leverages Prism and would like to share it with the broader community, please contact us. We?ll be happy to work with you on a case study.

 

Happy coding.


?????????(?)

by jchiou
18 May 2013 at 12:40am

????????????, ???????????????

????????????????????????????????????????

RESOLUTION 1:

?? Visual Studio 2010 ???????????????????

RESOLUTION 2:

?? TSQL + Excel ??

--?????? SQL 2000

--DROP TABLE temp_table

--TRUNCATE TABLE temp_table

CREATE TABLE temp_table

(

   no_of_rows INTEGER,

   table_name VARCHAR(30),

)

EXEC sp_MSforeachtable 'INSERT INTO temp_table SELECT COUNT(*) AS nr_of_rows, ''?'' AS table_name FROM ?'

SELECT * FROM temp_table

--DROP TABLE temp_table

--TRUNCATE TABLE temp_table

??????????? Script

????? Excel ?, ?? C ????????: =IF(ISERROR(MATCH(A4,D4,0)),A4,"")

??????????, ???? C ???

 

Enjoy.


I don?t have to do anything and my credit card information gets breached

by tzink
18 May 2013 at 12:20am

Yesterday, while reading a book on my Kindle app (on my PC), I got an email from American Express with the subject line ?Fraud Protection Alert.?

?Fraud protection?? I said (out loud, to no one in particular, except for possibly my cat who did not respond).

Yes, fraud protection. In the email message, it had the last 5-digits of my account number so I knew it was probably my card and then it had the name of a merchant ? Shell Canada ? and a charge of $20.00 Cdn funds.

I racked my brain. Did anyone I know have my credit card in Canada at the moment? No, they don?t. I looked at the contact information and gave Amex a call where I subsequently reversed the charges, got the card cancelled and got a new one.

I don?t know how this card could have been breached. It is my corporate credit card, and I use it very rarely ? only to travel on business. It stays with me at all times. How did some scammer steal it and use it?

I started making a paper trail in my head. Since nobody had physical access to my card, I could only assume that it was a breach ? some hacker broke in to a business I had used and leaked all the credit card data, probably pasting it online somewhere. Some other scammer (or possibly the same one) used that leak to buy gasoline.

Working my way backwards, my theory is that the probable source of the leak is proportional to how recently I used the card. That is, if the last time I used the card was May 1, then that is the most likely source of the leak. If the second last time I used the card was April 28, then that is the second most likely source.

Now, you may not agree with this theory; however, because I use this card so rarely and the time space between major transactions is weeks (or months), it?s a good place to start for my usage-pattern.

Using this as a starting point, I started thinking about what I?ve purchased in the past two months:

Airline tickets Booked a hotel

Well, that doesn?t help much. Either the airline leaked it, or the hotel leaked it. If I were to guess, I?d guess the hotel leaked it since they are tempting targets for identity thieves because of their clientele (business travelers) and hotels don?t always have the same safeguards that banks do (airlines are under more scrutiny).

I called up my credit card company and canceled the card. They sent me a new one and it arrived today. Upon checking my account, I discovered that said thief charged three different purchases at a gas station in Montreal.

I am no closer to figuring out where this leak may have happened.

* * * * * * * * * * * * *

Fast forward to today, and I got a letter from my bank. I opened it up and inside is a new debit card. For you see, while they were doing routine fraud detection, they discovered some fraudulent activity on my card and sent me a new one.

What in the world?

First my credit card, now my debit card?

As disconcerting as this is to lose two cards in a week, it also potentially helps narrow down the target. Where did I use my debit card and credit card in the same place?

I went to my credit card website and made a list of all purchases from the start of the year. I figured that a likely suspect was this past February while I was at the MAAWG conference in San Francisco. That?s when I would use my corporate credit card.

Next, I checked my debit card purchases during that same time frame, looking to see if there were any vendors that were in common.

There was: the Buckhorn Grill in San Francisco. One day I went there because I was there on business, but I stayed an extra day in San Francisco and paid for it myself.

Two cards in one place.

Both cards leaked this week.

This could be a coincidence, but I don?t think so. I think that?s where the data leak occurred. I don?t remember much about the transaction, but either the card information wasn?t encoded and someone wrote down the number, or they had a breach.

My theory about the ?recentcy? effect was right, but I didn?t go back far enough. I had to go back 3 months in time rather than a few weeks.

While I don?t like getting my data exposed, it does make me feel better to engage in this detective work and figure out a likely place of origin.

 


Você precisa de todas as colunas em uma QueryExpression?

by Marco A. Rodrigues Neto
18 May 2013 at 12:14am

Essa semana trabalhei em um cliente e notei que suas customizações (plugins, webservices) possuíam em grande maioria as queries (QueryExpression) construídas com o objeto ColumnSet definindo todas as colunas na pesquisa.
Em várias situações, as queries eram utilizadas com o propósito de verificar apenas o valor de um ou dois campos dos registros.

Vamos ver abaixo a diferença de performance quando temos uma QueryExpression com o objeto ColumnSet requisitando todos atributos e outro cenário requisitando somente os necessários.

Considere o seguinte trecho de código de exemplo* executado em uma organização com o Sample Data instalado:

ConditionExpression condition = new ConditionExpression();
condition.AttributeName = "address1_city";
condition.Operator = ConditionOperator.Equal;
condition.Values.Add("Redmond");

ColumnSet columns = new ColumnSet(true);

QueryExpression query = new QueryExpression();
query.EntityName = "contact";
query.ColumnSet = columns;
query.Criteria.AddCondition(condition);

EntityCollection results = service.RetrieveMultiple(query);

foreach (Entity contact in results.Entities)
{
Console.WriteLine(contact["fullname"] + ": " + contact["emailaddress1"]);
}

Repare que preciso apenas do Nome Completo e Endereço de E-mail dos contatos onde a cidade é igual a Redmond. Vamos ver como essa QueryExpression foi traduzida no SQL Server e respectivos números:

exec sp_executesql N'select top 5001 "contact0".SpousesName as "spousesname", "contact0".EMailAddress3 as "emailaddress3", "contact0".Address2_ShippingMethodCode as "address2_shippingmethodcode", "contact0".PreferredServiceId as "preferredserviceid"
, "contact0".AnnualIncome as "annualincome", "contact0".Address2_Line2 as "address2_line2", "contact0".Fax as "fax", "contact0".Telephone3 as "telephone3", "contact0".PreferredAppointmentDayCode as "preferredappointmentdaycode"
, "contact0".Address2_StateOrProvince as "address2_stateorprovince", "contact0".CreatedBy as "createdby", "contact0".Address2_Line1 as "address2_line1", "contact0".LastUsedInCampaign as "lastusedincampaign", "contact0".YomiLastName as "yomilastname"
, "contact0".Pager as "pager", "contact0".EmployeeId as "employeeid", "contact0".TerritoryCode as "territorycode", "contact0".ParentCustomerId as "parentcustomerid", "contact0".ManagerName as "managername"
, "contact0".BirthDate as "birthdate", "contact0".NumberOfChildren as "numberofchildren", "contact0".Address1_AddressTypeCode as "address1_addresstypecode", "contact0".OwningTeam as "owningteam", "contact0".Address2_PostalCode as "address2_postalcode"
, "contact0".UTCConversionTimeZoneCode as "utcconversiontimezonecode", "contact0".OwningUser as "owninguser", "contact0".AssistantPhone as "assistantphone", "contact0".MasterId as "masterid", "contact0".CreatedOnBehalfBy as "createdonbehalfby"
, "contact0".Address1_Latitude as "address1_latitude", "contact0".MobilePhone as "mobilephone", "contact0".CustomerTypeCode as "customertypecode", "contact0".ManagerPhone as "managerphone", "contact0".Address1_FreightTermsCode as "address1_freighttermscode"
, "contact0".Address1_Longitude as "address1_longitude", "contact0".Address2_Telephone2 as "address2_telephone2", "contact0".StatusCode as "statuscode", "contact0".YomiFullName as "yomifullname", "contact0".Aging90_Base as "aging90_base"
, "contact0".FamilyStatusCode as "familystatuscode", "contact0".FirstName as "firstname", "contact0".Address2_Latitude as "address2_latitude", "contact0".Department as "department", "contact0".OriginatingLeadId as "originatingleadid"
, "contact0".Aging60 as "aging60", "contact0".StateCode as "statecode", "contact0".Address2_FreightTermsCode as "address2_freighttermscode", "contact0".Address1_Name as "address1_name", "contact0".YomiMiddleName as "yomimiddlename"
, "contact0".ModifiedOnBehalfBy as "modifiedonbehalfby", "contact0".Description as "description", "contact0".EducationCode as "educationcode", "contact0".Address1_Telephone3 as "address1_telephone3", "contact0".Address2_Telephone1 as "address2_telephone1"
, "contact0".ImportSequenceNumber as "importsequencenumber", "contact0".GenderCode as "gendercode", "contact0".OwnerId as "ownerid", "contact0".Address2_AddressTypeCode as "address2_addresstypecode", "contact0".Address1_UTCOffset as "address1_utcoffset"
, "contact0".CreditLimit_Base as "creditlimit_base", "contact0".Aging60_Base as "aging60_base", "contact0".Address1_County as "address1_county", "contact0".OwningBusinessUnit as "owningbusinessunit", "contact0".JobTitle as "jobtitle"
, "contact0".Address1_Telephone2 as "address1_telephone2", "contact0".TimeZoneRuleVersionNumber as "timezoneruleversionnumber", "contact0".Address1_Fax as "address1_fax", "contact0".Address2_PostOfficeBox as "address2_postofficebox", "contact0".Address1_Line2 as "address1_line2"
, "contact0".WebSiteUrl as "websiteurl", "contact0".DoNotPostalMail as "donotpostalmail", "contact0".Address2_UTCOffset as "address2_utcoffset", "contact0".ExchangeRate as "exchangerate", "contact0".CreatedOn as "createdon"
, "contact0".EMailAddress2 as "emailaddress2", "contact0".Address2_Line3 as "address2_line3", "contact0".Address2_AddressId as "address2_addressid", "contact0".OverriddenCreatedOn as "overriddencreatedon", "contact0".AnnualIncome_Base as "annualincome_base"
, "contact0".Address1_Telephone1 as "address1_telephone1", "contact0".ChildrensNames as "childrensnames", "contact0".PreferredContactMethodCode as "preferredcontactmethodcode", "contact0".Aging90 as "aging90", "contact0".DoNotBulkPostalMail as "donotbulkpostalmail"
, "contact0".EMailAddress1 as "emailaddress1", "contact0".DoNotBulkEMail as "donotbulkemail", "contact0".CustomerSizeCode as "customersizecode", "contact0".Address1_StateOrProvince as "address1_stateorprovince", "contact0".FullName as "fullname"
, "contact0".PreferredAppointmentTimeCode as "preferredappointmenttimecode", "contact0".TransactionCurrencyId as "transactioncurrencyid", "contact0".PaymentTermsCode as "paymenttermscode", "contact0".Aging30 as "aging30", "contact0".LeadSourceCode as "leadsourcecode"
, "contact0".Merged as "merged", "contact0".Address2_County as "address2_county", "contact0".Address1_ShippingMethodCode as "address1_shippingmethodcode", "contact0".FtpSiteUrl as "ftpsiteurl", "contact0".PreferredSystemUserId as "preferredsystemuserid"
, "contact0".Address1_AddressId as "address1_addressid", "contact0".NickName as "nickname", "contact0".Address1_PostOfficeBox as "address1_postofficebox", "contact0".PreferredEquipmentId as "preferredequipmentid", "contact0".AssistantName as "assistantname"
, "contact0".Address2_Country as "address2_country", "contact0".ModifiedOn as "modifiedon", "contact0".ExternalUserIdentifier as "externaluseridentifier", "contact0".Address2_Name as "address2_name", "contact0".CreditOnHold as "creditonhold"
, "contact0".ParticipatesInWorkflow as "participatesinworkflow", "contact0".AccountRoleCode as "accountrolecode", "contact0".Address2_Telephone3 as "address2_telephone3", "contact0".DoNotPhone as "donotphone", "contact0".ContactId as "contactid"
, "contact0".DoNotFax as "donotfax", "contact0".Aging30_Base as "aging30_base", "contact0".Address1_UPSZone as "address1_upszone", "contact0".Suffix as "suffix", "contact0".Address1_PrimaryContactName as "address1_primarycontactname"
, "contact0".Salutation as "salutation", "contact0".ModifiedBy as "modifiedby", "contact0".GovernmentId as "governmentid", "contact0".Address2_PrimaryContactName as "address2_primarycontactname", "contact0".DoNotSendMM as "donotsendmm"
, "contact0".Address2_Longitude as "address2_longitude", "contact0".Address1_Country as "address1_country", "contact0".LastName as "lastname", "contact0".Address2_City as "address2_city", "contact0".DoNotEMail as "donotemail"
, "contact0".Address1_City as "address1_city", "contact0".YomiFirstName as "yomifirstname", "contact0".Telephone1 as "telephone1", "contact0".Address1_Line1 as "address1_line1", "contact0".ShippingMethodCode as "shippingmethodcode"
, "contact0".CreditLimit as "creditlimit", "contact0".Anniversary as "anniversary", "contact0".Telephone2 as "telephone2", "contact0".HasChildrenCode as "haschildrencode", "contact0".Address2_Fax as "address2_fax"
, "contact0".IsBackofficeCustomer as "isbackofficecustomer", "contact0".Address1_Line3 as "address1_line3", "contact0".Address2_UPSZone as "address2_upszone", "contact0".DefaultPriceLevelId as "defaultpricelevelid", "contact0".MiddleName as "middlename"
, "contact0".Address1_PostalCode as "address1_postalcode", "contact0".new_customfield as "new_customfield", "contact0".PreferredServiceIdName as "preferredserviceidname", "contact0".CreatedByYomiName as "createdbyyominame", "contact0".CreatedByName as "createdbyname"
, "contact0".ParentCustomerIdName as "parentcustomeridname", "contact0".ParentCustomerIdYomiName as "parentcustomeridyominame", "contact0".ParentCustomerIdType as "parentcustomeridtype", "contact0".MasterContactIdYomiName as "mastercontactidyominame", "contact0".MasterContactIdName as "mastercontactidname"
, "contact0".CreatedOnBehalfByYomiName as "createdonbehalfbyyominame", "contact0".CreatedOnBehalfByName as "createdonbehalfbyname", "contact0".OriginatingLeadIdName as "originatingleadidname", "contact0".OriginatingLeadIdYomiName as "originatingleadidyominame", "contact0".ModifiedOnBehalfByYomiName as "modifiedonbehalfbyyominame"
, "contact0".ModifiedOnBehalfByName as "modifiedonbehalfbyname", "contact0".OwnerIdType as "owneridtype", "contact0".OwnerIdName as "owneridname", "contact0".OwnerIdYomiName as "owneridyominame", "contact0".TransactionCurrencyIdName as "transactioncurrencyidname"
, "contact0".PreferredSystemUserIdName as "preferredsystemuseridname", "contact0".PreferredSystemUserIdYomiName as "preferredsystemuseridyominame", "contact0".PreferredEquipmentIdName as "preferredequipmentidname", "contact0".ModifiedByYomiName as "modifiedbyyominame", "contact0".ModifiedByName as "modifiedbyname"
, "contact0".DefaultPriceLevelIdName as "defaultpricelevelidname" from Contact as "contact0" where (("contact0".Address1_City = @Address1_City0)) order by
"contact0".ContactId asc',N'@Address1_City0 nvarchar(7)',@Address1_City0=N'Redmond'

 
Uma grande quantidade desnecessária de colunas são retornadas. Adicionalmente, várias outras tabelas são incluídas nessa pesquisa (Left Outer Join) gerando cerca de 68 logical reads.

(2 row(s) affected)
Table 'OwnerBase'. Scan count 1, logical reads 5, physical reads 0, …
Table 'TransactionCurrencyBase'. Scan count 1, logical reads 5, physical reads 0, …
Table 'SystemUserBase'. Scan count 5, logical reads 30, physical reads 0, …
Table 'ServiceBase'. Scan count 1, logical reads 0, physical reads 0, …
Table 'PriceLevelBase'. Scan count 1, logical reads 5, physical reads 0, …
Table 'EquipmentBase'. Scan count 1, logical reads 0, physical reads 0, …
Table 'LeadBase'. Scan count 0, logical reads 0, physical reads 0, …
Table 'ContactBase'. Scan count 0, logical reads 10, physical reads 0, …
Table 'CustomerAddressBase'. Scan count 1, logical reads 9, physical reads 0, …
Table 'ContactExtensionBase'. Scan count 0, logical reads 4, physical reads 0, …

Dessa vez, vamos executar o mesmo código de exemplo, porém, informando as colunas necessárias para este exemplo no ColumnSet:

ColumnSet columns = new ColumnSet();
columns.AddColumns("fullname", "emailaddress1");

QueryExpression query = new QueryExpression();
query.EntityName = "contact";
query.ColumnSet = columns;
query.Criteria.AddCondition(condition);

 
A diferença é notável na query e nos respectivos números (reduzimos de 10 tabelas para 3 e de 68 logical reads para apenas 19):

exec sp_executesql N'select
top 5001 "contact0".FullName as "fullname"
, "contact0".EMailAddress1 as "emailaddress1"
, "contact0".ContactId as "contactid"
from Contact as "contact0" where
(("contact0".Address1_City = @Address1_City0)) order by
"contact0".ContactId asc',N'@Address1_City0 nvarchar(7)',@Address1_City0=N'Redmond'

(2 row(s) affected)     
Table 'ContactExtensionBase'. Scan count 0, logical reads 4, physical reads 0, …
Table 'ContactBase'. Scan count 0, logical reads 10, physical reads 0, …
Table 'CustomerAddressBase'. Scan count 1, logical reads 5, physical reads 0, …

Resumo: No exemplo acima, notamos melhor performance nas queries criadas via QueryExpression quando utilizamos o objeto ColumnSet para retornar somente os campos necessários para este cenário.

Código de Exemplo: fornecido apenas como ilustração, sem qualquer tipo de garantia ou suporte da Microsoft.


Implementing Role Based Access for PowerPivot

by Rakesh M J
17 May 2013 at 11:09pm

This has been a very long week, and I have written a paper which will guide you step by step in implementing role based access for PowerPivot.

You can download the file from here.



Newsfeed display by CaRP