We are seeing more and more request to “virtualize” our servers and various resources. A strong push for integrated DEV/OPS [ Great read ] and while most of the talk is strictly for sales to have the keywords in their elevator pitches it translates to many hours of work for the dev and op teams.
This course by PluralSight is very good at getting you up to speed on AWS. There are also many Azure courses also. FYI: Spread your eggs about different baskets…
AWS Developer: Getting Started
by Ryan Lewis
Amazon Web Services is the largest cloud provider in the world. This course will teach you how to develop, deploy, and integrate web applications with AWS.
Angular’s template syntax:
[property]="expression": set property of an element to the value of expression
(event)="statement": execute statement when event occurred
[(property)]="expression": create two-way binding with expression
[class.special]="expression": add special CSS class to element when the value of expression is truthy
[style.color]="expression": set color CSS property to the value of expression
If you’re not familiar with Angular’s template syntax, you should definitely read the official template syntax documentation.
The following SQL should be run in Production SQL server (off hours). It basically uses DMVs to determine based on past executions which indexes would be beneficial in that database. It recommends what indexes could be created on the specified tables.
migs.avg_total_user_cost * (migs.avg_user_impact / 100.0) * (migs.user_seeks + migs.user_scans) AS improvement_measure
'CREATE INDEX [missing_index_' + CONVERT (varchar, mig.index_group_handle) + '_' + CONVERT (varchar, mid.index_handle)
+ '_' + LEFT (PARSENAME(mid.statement, 1), 32) + ']'
+ ' ON ' + mid.statement
+ ' (' + ISNULL (mid.equality_columns,'')
+ CASE WHEN mid.equality_columns IS NOT NULL AND mid.inequality_columns IS NOT NULL THEN ',' ELSE '' END
+ ISNULL (mid.inequality_columns, '')
+ ISNULL (' INCLUDE (' + mid.included_columns + ')', '') AS create_index_statement
--, migs.*, mid.database_id, mid.[object_id]
FROM sys.dm_db_missing_index_groups mig
INNER JOIN sys.dm_db_missing_index_group_stats migs ON migs.group_handle = mig.index_group_handle
INNER JOIN sys.dm_db_missing_index_details mid ON mig.index_handle = mid.index_handle
WHERE migs.avg_total_user_cost * (migs.avg_user_impact / 100.0) * (migs.user_seeks + migs.user_scans) > 10
ORDER BY migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans) DESC
We have been undergoing a major upgrade to our tech stack and here is what we are implementing now… WOOT WOOT
Cloud Formation – A service that allows the entire stack to be built, provisioned, provisioned, and torn down demand.
ELB – A load balancer that works with autoscaling to create and destroy servers as needed by the traffic load.
EC2 – Cloud-based virtual machines.
EFS – A network file system that allows multiple EC2 instances to share a file system, even across availability zones.
S3 – A Simple Storage Service designed to hold static resources, such as images and documents.
RDS – Relational Database Services that cross availability zones, provide high availability, provide fail-over, and provide backup.
Prices vary by vendor based on their pricing policies.
FYI: Sonya and I ordered shirts from TeeChip to see how their delivery and print services worked and we were very pleased with the results.
My Neighbor Totoro parody.
Eizen and Edna witness a strange sight while waiting for the bus
Art by Madeleine Williams.
Microsoft wrote this simple PowerShell utility to do just that.. Much easier than the manual approach…
So in my endeavors to support Facebook, Google, Outlook and etc login providers the middle ware IdentityServer3 on git has proven worth its weight in gold.
If you need to customize the views for a client, let us suppose a customer wants the login page to be branded for their company logo….What??… the nerve of them.. lol… Seriously, it is extremely easy… See this link: [ branding ] Perhaps they want to use a bootstrap theme, different layout or various validation rules… See that link…
My next post will be about using this with an Angular2 application. Much easier than I even thought!
When you deploy to IIS be sure to edit the web sites Authentication settings
Anonymous Authentication: Enabled
Basic Authentication: Disabled
Windows Authentication: Disabled
Digest Authentication: Disabled
Forms Authentication: Disabled
ASP.NET Authentication: Disabled
With this setup, you will not automatically be logged in via your Domain Account, but instead prompted to login via the Middleware Login Page.
If you want your users to use their windows login, you can enable Windows Authentication.
I upgraded an existing MVC3 Project that once used Web Form login and Active Directory as a means to authenticate a user, to now use a login process similar to sites that let you use OAUTH2 but pick either facebook, google or other identity service provider.
When I finished the upgrade process I was getting the login form via the IdentityServer3 middle-ware, but when it tried to redirect to the original site (client) it was just loop and loop… and … well you get the point by now….
To fix the issue: (found numerous solutions here…)
The short is that I needed to either add the session_onstart in global aspx or add a CallbackPath.
GLOBAL.ASAX file fix:
protected void Session_Start(object sender, EventArgs e)
/// When using cookie-based session state, ASP.NET does not allocate storage for session data until the Session object is used.
/// As a result, a new session ID is generated for each page request until the session object is accessed.
/// If your application requires a static session ID for the entire session,
/// you can either implement the Session_Start method in the application's Global.asax file and store data in the Session object to fix the session ID,
/// or you can use code in another part of your application to explicitly store data in the Session object.
base.Session["init"] = 0;
The CallBackPath solution goes in your code where you are configuring your owin process app.UseOpenIdConnectAuthentication — do this in the client application.
ClientId = "app_jcrl",
Authority = Constants.BaseAddress,
RedirectUri = "https://jcrl3g.jcdev.org/home/",
PostLogoutRedirectUri = "https://jcrl3g.jcdev.org/",
ResponseType = "code id_token",
Scope = "openid profile read write offline_access",
CallbackPath = new PathString("/home/index/"), // Critical to prevent infinite loop
TokenValidationParameters = new TokenValidationParameters
NameClaimType = "name",
RoleClaimType = "role"