{"id":287,"date":"2023-02-18T20:08:54","date_gmt":"2023-02-18T20:08:54","guid":{"rendered":"https:\/\/nas01.tallpaul.net\/wordpress\/2023\/02\/quickly-deploy-net-game-on-power-x86-from-the-same-source-2\/"},"modified":"2024-11-20T20:18:28","modified_gmt":"2024-11-20T20:18:28","slug":"quickly-deploy-net-game-on-power-x86-from-the-same-source-2","status":"publish","type":"post","link":"https:\/\/nas01.tallpaul.net\/wordpress\/2023\/02\/quickly-deploy-net-game-on-power-x86-from-the-same-source-2\/","title":{"rendered":"Quickly Deploy .NET Web Messaging Application"},"content":{"rendered":"\n<p id=\"onx86\">Learn how to deploy a simple browser-based web message application written for x86 with ASP.NET Core and SignalR library using source code shared on <a href=\"https:\/\/github.com\/paulchapmanibm\/SignalRChat\" title=\"\">GitHub<\/a>. The same source code is used to deploy on Power with OpenShift, and Fedora on x86. Full guided instructions are provided.<\/p>\n\n\n\n<p><a href=\"#deploy-on-power-gui\" title=\"\">Deploy .NET Message App on Power &#8211; GUI<\/a><\/p>\n\n\n\n<p><a href=\"#deploy-on-power-cli\" title=\"\">Deploy .NET Message App on Power &#8211; CLI<\/a><\/p>\n\n\n\n<p><a href=\"#deploy-on-x86-cli\" title=\"Deploy .NET Message App on x86\">Deploy .NET Message App on x86 &#8211; CLI<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"deploy-on-power-gui\">Deploy on Power &#8211; GUI<\/h2>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Deploy  NET Message App to Power   GUI\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/zoXx-kyIDNE?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><figcaption class=\"wp-element-caption\">Deploy .NET Messaging Application to OpenShift on Power &#8211; GUI<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"deploy-on-power-cli\">Deploy on Power &#8211; CLI<\/h2>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Deploy  .NET Message App to Power OpenShift - CLI\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/js1kzU9CuT4?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><figcaption class=\"wp-element-caption\">Deploy .NET messaging application to OpenShift on Power &#8211; CLI<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">1. log in to OpenShift Environments<\/h3>\n\n\n\n<p>All Command Line Interfaces are expected to be on the Bastion node terminal with cecuser unless explicitly mentioned.<\/p>\n\n\n\n<p>If you are a Windows user, Putty is a great terminal to use.<br>For Mac users, the iterm2 terminal is available to you.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">  Section 1. Login to OpenShift RHEL Bastion <\/h4>\n\n\n\n<p>Using your preferred terminal method (iterm2, xterm, Putty), connect to your environment via SSH using the appropriate IP, cecuser and password for your environment.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">  Section 2. Login to OpenShift Console<\/h4>\n\n\n\n<p>Point your browser to your OpenShift Console. <\/p>\n\n\n\n<p>Click on the htpasswd option:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"441\" height=\"218\" src=\"https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/11\/OCP-Login.jpg\" alt=\"\" class=\"wp-image-1570\" srcset=\"https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/11\/OCP-Login.jpg 441w, https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/11\/OCP-Login-300x148.jpg 300w\" sizes=\"auto, (max-width: 441px) 100vw, 441px\" \/><\/figure>\n\n\n\n<p>Add your user and password and Click login.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">  Section 3. Copy the login command for CLI use.<\/h4>\n\n\n\n<p>On the top right side, you will see the cecuser drop-down; click on it and then \u201cCopy login command.\u201d<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"478\" src=\"https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/Copy-Login-Cmd-1024x478.jpg\" alt=\"\" class=\"wp-image-1402\" srcset=\"https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/Copy-Login-Cmd-1024x478.jpg 1024w, https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/Copy-Login-Cmd-300x140.jpg 300w, https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/Copy-Login-Cmd-768x359.jpg 768w, https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/Copy-Login-Cmd-1536x718.jpg 1536w, https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/Copy-Login-Cmd-2048x957.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Once again, click on the htpasswd option:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"441\" height=\"218\" src=\"https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/OCP-Login-1.jpg\" alt=\"\" class=\"wp-image-1397\" srcset=\"https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/OCP-Login-1.jpg 441w, https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/OCP-Login-1-300x148.jpg 300w\" sizes=\"auto, (max-width: 441px) 100vw, 441px\" \/><\/figure>\n\n\n\n<p>Add your user and password contained in step 1 and Click log in.<\/p>\n\n\n\n<p>Click on Display Token on the top left.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"155\" src=\"https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/display-token-1024x155.jpg\" alt=\"\" class=\"wp-image-1404\" srcset=\"https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/display-token-1024x155.jpg 1024w, https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/display-token-300x45.jpg 300w, https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/display-token-768x116.jpg 768w, https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/display-token-1536x232.jpg 1536w, https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/display-token-2048x310.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>You can use the oc login command whenever your Authorization is expired. You may need to use the API token to log in to the registry.<\/p>\n\n\n\n<p>Copy the above &#8220;oc login&#8221; command and paste it into your Terminal (Putty, or iTerm)<\/p>\n\n\n\n\n\n<p><strong>Important: <\/strong>You may need these steps more than once during this training.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2.  Deploy the .NET Messaging Application<\/h3>\n\n\n\n<p>This part of the demo will guide you through creating a new project, cloning the code hosted on GitHub, and building the .Net application using S2I via the command line interface. This part<br>of the demo will be completed using the cecuser user.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"> Section 1.  Add the .Net Builder image.<\/h4>\n\n\n\n<p>Follow the below steps to add the .Net 7 builder image to OCP.<\/p>\n\n\n\n<p>Log in to the OCP Bastion Server as the cecuser. Check you have the correct user. The whoami command should return cecuser.<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>whoami<\/code><\/pre>\n\n\n\n<p>Switch to the OpenShift project.<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>oc project openshift<\/code><\/pre>\n\n\n\n<p>Enable .Net S2I for ppc64le<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>oc create -f https:\/\/raw.githubusercontent.com\/redhat-developer\/s2i-dotnetcore\/master\/dotnet_imagestreams_ppc64le.json --as system:admin<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Section 2. Deploy the application using Source to Image<\/h4>\n\n\n\n<p>Log into the OCP RHEL Bastion using cecuser credentials and install the git command line.<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>sudo dnf install git<\/code><\/pre>\n\n\n\n<p>Create a new OpenShift Project<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>oc new-project signalrchat --description=\"Simple ASP.NET example using SignalR library &amp; Power\" --display-name=\"signalrchat\"<\/code><\/pre>\n\n\n\n<p>Creating the Application<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>oc new-app --image-stream=\"openshift\/dotnet:7.0-ubi8\"~https:\/\/github.com\/paulchapmanibm\/SignalRChat.git<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/github.com\/paulchapmanibm\/SignalRChat\"><img decoding=\"async\" src=\"https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2023\/02\/github-signalrchat-1024x551.jpg\" alt=\"\" class=\"wp-image-349\"\/><\/a><figcaption class=\"wp-element-caption\">The source code is shared publically on GitHub<\/figcaption><\/figure>\n\n\n\n<p>Track the progress of the build<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>oc logs -f bc\/signalrchat<\/code><\/pre>\n\n\n\n<p>Once the build is complete, you will see &#8220;Push successful&#8221;. At this point, the resulting image has successfully been pushed to your registry. Check the status of your application:<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>oc status<\/code><\/pre>\n\n\n\n<p>Create a Route. An OpenShift Container Platform route exposes a service at a hostname so external clients can reach it by name. To create an external route to your new application, expose the application service.<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>oc expose service signalrchat<\/code><\/pre>\n\n\n\n<p>View your new route<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>oc get route<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3. Test the application<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Section 1. Verify the application is running, browse the website and test the counters. Optionally, complete the survey.<\/h4>\n\n\n\n<p>Verify the Application is Running. To view your new application, paste the route location that you copied (in the previous section) into the address bar of your web browser and hit enter.<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>echo \"The url to your new application is $(oc status | grep \"http:\/\/signalrchat-signalrchat\" | awk '{print $1}')\"<\/code><\/pre>\n\n\n\n<p>Copy the above link to the game and paste it into your favourite browser to start playing the game.<\/p>\n\n\n\n<p>!Add Youtube using the application<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. Wrap up<\/h3>\n\n\n\n<p>We believe in Sustainability and Cloud without lock-in. Customers may benefit from Cloud with greater sustainability, scale, security, performance, and economics when consolidating existing .NET applications from x86 to Power Systems.<\/p>\n\n\n\n<p>You should now understand how ASP.Net Core is used to power many websites, even games. You have seen how easy it can be to deploy a basic web messaging service on Power using the same source code written on and for the x86 platform.<\/p>\n\n\n\n<p>Congratulations, you have added ppc64le S2I functionality to OCP and used this to simplify the deployment of an ASP.Net Core with SignalR library web messaging service written for x86 direct from GitHub to your OCP using the command line interface.<\/p>\n\n\n\n<p>This lesson plan takes 1 minute and 15 seconds to deploy the application when scripted. <\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"From Source to Power messaging service in less than 90 seconds\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/ualbMHpbt6g?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><figcaption class=\"wp-element-caption\">From Source to Power Messaging Service in less than 90 seconds<\/figcaption><\/figure>\n\n\n\n<p>============================================<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"deploy-on-x86-cli\">Deploy on x86 &#8211; CLI<\/h2>\n\n\n\n<p>It&#8217;s assumed that dotnet is already installed for your Linux distribution. I have used RHEL and Fedora with the below.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"From source to messing service in\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/utJjbF81Iew?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><figcaption class=\"wp-element-caption\">Deploy .NET Messaging Service to Fedora or RHEL on x86 using Podman<\/figcaption><\/figure>\n\n\n\n<p>Change to your home directory.<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>cd<\/code><\/pre>\n\n\n\n<p>Create build directory<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>mkdir build<\/code><\/pre>\n\n\n\n<p>Change to the newly created Directory<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>cd build<\/code><\/pre>\n\n\n\n<p>Install git<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>sudo dnf install git<\/code><\/pre>\n\n\n\n<p>Clone the application source from GitHub<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>git clone https:\/\/github.com\/paulchapmanibm\/SignalRchat.git<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2023\/02\/github-signalrchat-1024x551.jpg\" alt=\"\" class=\"wp-image-349\"\/><figcaption class=\"wp-element-caption\"> The same SignalRChat .NET Source Code was used with Power &amp; x86<\/figcaption><\/figure>\n\n\n\n<p>You should see a new folder created:<\/p>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>ls -la<\/code><\/pre>\n\n\n\n<p>Change to the new application directory<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>cd SignalRchat<\/code><\/pre>\n\n\n\n<p>Copy the ppc64le docker file, which will be used to build the application container.<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>cp Dockerfile.x86 Dockerfile<\/code><\/pre>\n\n\n\n<p>Copy the ppc64le csproj file, which will be used to build the application container<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>cp .\/SignalRChat\/SignalRChat.csproj.x86 .\/SignalRChat\/SignalRChat.csproj<\/code><\/pre>\n\n\n\n<p>Build the application container using Podman<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>podman build . -t signalrchat<\/code><\/pre>\n\n\n\n<p>Confirm that both dotnet and application containers are available<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>podman images<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>podman run -p 8080:80 signalrchat<\/code><\/pre>\n\n\n\n<p>The messaging application is installed from source code in under 90 seconds.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"From Source to x86 Messagaing Application in less than 90 seconds\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/U0KQqLOBSL8?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><figcaption class=\"wp-element-caption\">.NET Messaging Service deployed in less than 90 seconds<\/figcaption><\/figure>\n\n\n\n<p>Get in touch using social media<\/p>\n\n\n\n<ul class=\"wp-block-social-links aligncenter has-huge-icon-size has-icon-color is-style-default is-layout-flex wp-block-social-links-is-layout-flex\"><li style=\"color: #ffffff; \" class=\"wp-social-link wp-social-link-mail  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"mailto:paulchapman@uk.ibm.com\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M19,5H5c-1.1,0-2,.9-2,2v10c0,1.1.9,2,2,2h14c1.1,0,2-.9,2-2V7c0-1.1-.9-2-2-2zm.5,12c0,.3-.2.5-.5.5H5c-.3,0-.5-.2-.5-.5V9.8l7.5,5.6,7.5-5.6V17zm0-9.1L12,13.6,4.5,7.9V7c0-.3.2-.5.5-.5h14c.3,0,.5.2.5.5v.9z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Mail<\/span><\/a><\/li>\n\n<li style=\"color: #ffffff; \" class=\"wp-social-link wp-social-link-linkedin  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.linkedin.com\/in\/chapmanp\/\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">LinkedIn<\/span><\/a><\/li>\n\n<li style=\"color: #ffffff; \" class=\"wp-social-link wp-social-link-youtube  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.youtube.com\/@paulchapman1280\/videos\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">YouTube<\/span><\/a><\/li>\n\n<li style=\"color: #ffffff; \" class=\"wp-social-link wp-social-link-twitter  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/twitter.com\/mrPaulChapman\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M22.23,5.924c-0.736,0.326-1.527,0.547-2.357,0.646c0.847-0.508,1.498-1.312,1.804-2.27 c-0.793,0.47-1.671,0.812-2.606,0.996C18.324,4.498,17.257,4,16.077,4c-2.266,0-4.103,1.837-4.103,4.103 c0,0.322,0.036,0.635,0.106,0.935C8.67,8.867,5.647,7.234,3.623,4.751C3.27,5.357,3.067,6.062,3.067,6.814 c0,1.424,0.724,2.679,1.825,3.415c-0.673-0.021-1.305-0.206-1.859-0.513c0,0.017,0,0.034,0,0.052c0,1.988,1.414,3.647,3.292,4.023 c-0.344,0.094-0.707,0.144-1.081,0.144c-0.264,0-0.521-0.026-0.772-0.074c0.522,1.63,2.038,2.816,3.833,2.85 c-1.404,1.1-3.174,1.756-5.096,1.756c-0.331,0-0.658-0.019-0.979-0.057c1.816,1.164,3.973,1.843,6.29,1.843 c7.547,0,11.675-6.252,11.675-11.675c0-0.178-0.004-0.355-0.012-0.531C20.985,7.47,21.68,6.747,22.23,5.924z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Twitter<\/span><\/a><\/li>\n\n<li style=\"color: #ffffff; \" class=\"wp-social-link wp-social-link-wordpress  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/nas01.tallpaul.net\/wordpress\/\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12.158,12.786L9.46,20.625c0.806,0.237,1.657,0.366,2.54,0.366c1.047,0,2.051-0.181,2.986-0.51 c-0.024-0.038-0.046-0.079-0.065-0.124L12.158,12.786z M3.009,12c0,3.559,2.068,6.634,5.067,8.092L3.788,8.341 C3.289,9.459,3.009,10.696,3.009,12z M18.069,11.546c0-1.112-0.399-1.881-0.741-2.48c-0.456-0.741-0.883-1.368-0.883-2.109 c0-0.826,0.627-1.596,1.51-1.596c0.04,0,0.078,0.005,0.116,0.007C16.472,3.904,14.34,3.009,12,3.009 c-3.141,0-5.904,1.612-7.512,4.052c0.211,0.007,0.41,0.011,0.579,0.011c0.94,0,2.396-0.114,2.396-0.114 C7.947,6.93,8.004,7.642,7.52,7.699c0,0-0.487,0.057-1.029,0.085l3.274,9.739l1.968-5.901l-1.401-3.838 C9.848,7.756,9.389,7.699,9.389,7.699C8.904,7.67,8.961,6.93,9.446,6.958c0,0,1.484,0.114,2.368,0.114 c0.94,0,2.397-0.114,2.397-0.114c0.485-0.028,0.542,0.684,0.057,0.741c0,0-0.488,0.057-1.029,0.085l3.249,9.665l0.897-2.996 C17.841,13.284,18.069,12.316,18.069,11.546z M19.889,7.686c0.039,0.286,0.06,0.593,0.06,0.924c0,0.912-0.171,1.938-0.684,3.22 l-2.746,7.94c2.673-1.558,4.47-4.454,4.47-7.771C20.991,10.436,20.591,8.967,19.889,7.686z M12,22C6.486,22,2,17.514,2,12 C2,6.486,6.486,2,12,2c5.514,0,10,4.486,10,10C22,17.514,17.514,22,12,22z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">WordPress<\/span><\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Learn how to deploy a simple browser-based web message application written for x86 with ASP.NET Core and SignalR library using source code shared on GitHub. The same source code is used to deploy on Power with OpenShift, and Fedora on x86. Full guided instructions are provided. Deploy .NET Message App on Power &#8211; GUI Deploy [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":894,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,125,3,5,13,6,7],"tags":[23,40,55,62,65,66],"class_list":["post-287","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-guided-hands-on-lab","category-ibm","category-open-source","category-openshift","category-power-systems","category-red-hat","tag-ibmpowersystems-2","tag-dotnet","tag-openshift","tag-red-hat-enterprise-linux","tag-redhatopenshift","tag-rhel"],"_links":{"self":[{"href":"https:\/\/nas01.tallpaul.net\/wordpress\/wp-json\/wp\/v2\/posts\/287","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nas01.tallpaul.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nas01.tallpaul.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nas01.tallpaul.net\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nas01.tallpaul.net\/wordpress\/wp-json\/wp\/v2\/comments?post=287"}],"version-history":[{"count":0,"href":"https:\/\/nas01.tallpaul.net\/wordpress\/wp-json\/wp\/v2\/posts\/287\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nas01.tallpaul.net\/wordpress\/wp-json\/wp\/v2\/media\/894"}],"wp:attachment":[{"href":"https:\/\/nas01.tallpaul.net\/wordpress\/wp-json\/wp\/v2\/media?parent=287"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nas01.tallpaul.net\/wordpress\/wp-json\/wp\/v2\/categories?post=287"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nas01.tallpaul.net\/wordpress\/wp-json\/wp\/v2\/tags?post=287"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}