<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Dev on chaosplay</title>
    <link>https://chaosplay.com/dev/</link>
    <description>Recent content in Dev on chaosplay</description>
    <generator>Hugo -- 0.147.7</generator>
    <language>en-US</language>
    <copyright>Amer Khalid</copyright>
    <lastBuildDate>Sun, 10 Sep 2023 11:38:32 -0500</lastBuildDate>
    <atom:link href="https://chaosplay.com/dev/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Backup VPS</title>
      <link>https://chaosplay.com/dev/backup_vps/</link>
      <pubDate>Sun, 10 Sep 2023 11:38:32 -0500</pubDate>
      <guid>https://chaosplay.com/dev/backup_vps/</guid>
      <description>&lt;p&gt;Here are simple steps to backup your VPS.&lt;/p&gt;
&lt;h2 id=&#34;backup-mysql-database&#34;&gt;Backup MySQL database&lt;/h2&gt;
&lt;p&gt;Create a directory to store the backup files. Then run &lt;code&gt;mysqldump&lt;/code&gt; command to backup your database.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mysqldump -u your_mysql_user -pyour_mysql_password your_database_name &amp;gt; /path/to/dump_&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;date +&lt;span style=&#34;color:#ae81ff&#34;&gt;\%&lt;/span&gt;Y&lt;span style=&#34;color:#ae81ff&#34;&gt;\%&lt;/span&gt;m&lt;span style=&#34;color:#ae81ff&#34;&gt;\%&lt;/span&gt;d&lt;span style=&#34;color:#ae81ff&#34;&gt;\%&lt;/span&gt;H&lt;span style=&#34;color:#ae81ff&#34;&gt;\%&lt;/span&gt;M&lt;span style=&#34;color:#ae81ff&#34;&gt;\%&lt;/span&gt;S&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;.sql
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Or you run it as superuser and backup all databases at once.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo mysqldump --all-databases &amp;gt; /path/to/dump_&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;date +&lt;span style=&#34;color:#ae81ff&#34;&gt;\%&lt;/span&gt;Y&lt;span style=&#34;color:#ae81ff&#34;&gt;\%&lt;/span&gt;m&lt;span style=&#34;color:#ae81ff&#34;&gt;\%&lt;/span&gt;d&lt;span style=&#34;color:#ae81ff&#34;&gt;\%&lt;/span&gt;H&lt;span style=&#34;color:#ae81ff&#34;&gt;\%&lt;/span&gt;M&lt;span style=&#34;color:#ae81ff&#34;&gt;\%&lt;/span&gt;S&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;.sql
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To automate this, schedule a cron job that will run this command on a daily basis.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crontab -e
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Insert the following line to execute the mysqldump command every day at midnight.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A quick script to build and deploy hugo site on VPS</title>
      <link>https://chaosplay.com/dev/hugo-on-vps/</link>
      <pubDate>Wed, 06 Sep 2023 14:06:31 -0500</pubDate>
      <guid>https://chaosplay.com/dev/hugo-on-vps/</guid>
      <description>&lt;p&gt;I had been using GitHub and Netlify for this site but lack of some features such as access to server logs finally got too much. So I decided to move this blog to my VPS.&lt;/p&gt;
&lt;p&gt;One thing I really love about using Github is CI/CD and Github Actions. But I wanted something even simpler with less dependencies. So I decided to use a simple bash script to build and deploy the site.&lt;/p&gt;</description>
    </item>
    <item>
      <title>undefined method xxxxx&#39; for #&lt; Hash:0x00000 &gt;</title>
      <link>https://chaosplay.com/dev/2023-06-14-undefined-method-xxxxx-for/</link>
      <pubDate>Wed, 14 Jun 2023 15:54:46 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2023-06-14-undefined-method-xxxxx-for/</guid>
      <description>&lt;p&gt;This error in our Rails application drove me crazy. The error was like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;undefined method xxxxxx&amp;#39; for #&amp;lt;Hash:0x000000001234&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The problem was that I was calling a method like this: &lt;code&gt;a_method(var: var)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;And the method definition was like &lt;code&gt;def a_method(var: var)&lt;/code&gt; which resulted in something called variable shadowing and caused clash between variable passed in the method and local variable being defined.&lt;/p&gt;
&lt;p&gt;The fix was to change method definition to &lt;code&gt;def a_method(var:)&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Script inherits from native type &#39;RigidBody2D&#39;, so it can&#39;t be assigned to an object of type: &#39;Node2D&#39;</title>
      <link>https://chaosplay.com/dev/2023-04-28-script-inherits-from-native-type-rigidbody2d-so-it-cant-be-assigned-to-an-object-of-type-node2d/</link>
      <pubDate>Fri, 28 Apr 2023 21:47:32 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2023-04-28-script-inherits-from-native-type-rigidbody2d-so-it-cant-be-assigned-to-an-object-of-type-node2d/</guid>
      <description>&lt;p&gt;Getting this error while following &lt;a href=&#34;https://docs.godotengine.org/en/stable/getting_started/first_2d_game/index.html&#34;&gt;this tutorial&lt;/a&gt; in Godot v4.0.1.&lt;/p&gt;
&lt;p&gt;In my case, I had added &lt;code&gt;Node2D&lt;/code&gt;. The fix was to right-click on the problem node under Scene and click &lt;code&gt;Make Scene Root&lt;/code&gt;. And then delete &lt;code&gt;Node2D&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Here is what &lt;code&gt;diff&lt;/code&gt; looked like:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;diff --git a/2d-game-tutorial/Mob.tscn b/2d-game-tutorial/Mob.tscn
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;index 9eb1630..e720d7f 100644
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--- a/2d-game-tutorial/Mob.tscn
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+++ b/2d-game-tutorial/Mob.tscn
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@@ -48,20 +48,18 @@ animations = {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; radius = 36.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; height = 100.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-node name=&amp;#34;Mob&amp;#34; type=&amp;#34;Node2D&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-script = ExtResource(&amp;#34;1_73gb4&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-node name=&amp;#34;RigidBody2D&amp;#34; type=&amp;#34;RigidBody2D&amp;#34; parent=&amp;#34;.&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+node name=&amp;#34;RigidBody2D&amp;#34; type=&amp;#34;RigidBody2D&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; collision_mask = 0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; gravity_scale = 2.66454e-15
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+script = ExtResource(&amp;#34;1_73gb4&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-node name=&amp;#34;AnimatedSprite2D&amp;#34; type=&amp;#34;AnimatedSprite2D&amp;#34; parent=&amp;#34;RigidBody2D&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+node name=&amp;#34;AnimatedSprite2D&amp;#34; type=&amp;#34;AnimatedSprite2D&amp;#34; parent=&amp;#34;.&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; scale = Vector2(0.75, 0.75)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; sprite_frames = SubResource(&amp;#34;SpriteFrames_c1yjy&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; animation = &amp;amp;&amp;#34;walk&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-node name=&amp;#34;CollisionShape2D&amp;#34; type=&amp;#34;CollisionShape2D&amp;#34; parent=&amp;#34;RigidBody2D&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+node name=&amp;#34;CollisionShape2D&amp;#34; type=&amp;#34;CollisionShape2D&amp;#34; parent=&amp;#34;.&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; rotation = 1.5708
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; shape = SubResource(&amp;#34;CapsuleShape2D_h1pjc&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-node name=&amp;#34;VisibleOnScreenNotifier2D&amp;#34; type=&amp;#34;VisibleOnScreenNotifier2D&amp;#34; parent=&amp;#34;RigidBody2D&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+node name=&amp;#34;VisibleOnScreenNotifier2D&amp;#34; type=&amp;#34;VisibleOnScreenNotifier2D&amp;#34; parent=&amp;#34;.&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>How to backup Kubernetes&#39; Config</title>
      <link>https://chaosplay.com/dev/2022-01-20-how-to-backup-kubernetes-config/</link>
      <pubDate>Thu, 20 Jan 2022 20:45:36 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2022-01-20-how-to-backup-kubernetes-config/</guid>
      <description>&lt;p&gt;The easiest solution seems to be the following script by Stack Overflow user, Timothy Perez&lt;/p&gt;
&lt;p&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt;pre style&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&amp;lt;&lt;/span&gt;code &lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;language-bash&amp;#34;&lt;/span&gt; data&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;lang&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;bash&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/bash&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# NAMESPACED EXPORTS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt;  ns &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;$&lt;/span&gt;( kubectl get ns &lt;span style=&#34;color:#f92672&#34;&gt;--&lt;/span&gt;no&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;headers &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt; cut &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;d &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;f1 ) ;  &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  kubectl &lt;span style=&#34;color:#f92672&#34;&gt;--&lt;/span&gt;namespace &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; ${ ns} &amp;#34;&lt;/span&gt;  get &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;o &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; json bindings,cm,ep,ev,limits,pvc,po,podtemplates,rc,quota,secrets,sa,svc,controllerrevisions,ds,deploy,rs,sts,localsubjectaccessreviews,hpa,cj,jobs,leases,ev,ds,deploy,ing,netpol,rs,pods,netpol,pdb,roles,rolebindings &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt;  \
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       jq &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;.items[] |&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     select(&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;type&lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;kubernetes.io/service-account-token&amp;#34;&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     del(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;spec&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;clusterIP,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;metadata&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;uid,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;metadata&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;selfLink,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;metadata&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;resourceVersion,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;metadata&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;creationTimestamp,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;metadata&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;generation,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;status,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;spec&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;template&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;spec&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;securityContext,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;spec&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;template&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;spec&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;dnsPolicy,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;spec&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;template&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;spec&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;terminationGracePeriodSeconds,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;spec&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;template&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;spec&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;restartPolicy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     )&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;  &amp;gt;&amp;gt; &amp;#34;./ ${ ns} .json&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; done
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# NON-NAMESPACED EXPORTS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl get &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;o &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; json cs,ns,no,pv,mutatingwebhookconfigurations,validatingwebhookconfigurations,crds,apiservices,tokenreviews,selfsubjectaccessreviews,selfsubjectrulesreviews,subjectaccessreviews,csr,psp,nodes,psp,clusterrolebindings,clusterroles,pc,sc,volumeattachments &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt;  \
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       jq &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;.items[] |&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     select(&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;type&lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;kubernetes.io/service-account-token&amp;#34;&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     del(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;spec&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;clusterIP,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;metadata&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;uid,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;metadata&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;selfLink,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;metadata&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;resourceVersion,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;metadata&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;creationTimestamp,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;metadata&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;generation,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;status,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;spec&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;template&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;spec&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;securityContext,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;spec&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;template&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;spec&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;dnsPolicy,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;spec&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;template&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;spec&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;terminationGracePeriodSeconds,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;spec&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;template&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;spec&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;restartPolicy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     )&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;  &amp;gt;&amp;gt; &amp;#34;./cluster_non-namespaced_export.json&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Script copied here under CC BY-SA 4.0 license&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kubernetes not passing full path to Nodejs</title>
      <link>https://chaosplay.com/dev/2021-12-29-kubernetes-not-passing-full-path-to-nodejs/</link>
      <pubDate>Wed, 29 Dec 2021 21:23:42 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2021-12-29-kubernetes-not-passing-full-path-to-nodejs/</guid>
      <description>&lt;p&gt;I spent hours troubleshooting why the url path was getting stripped from requests in our Nodejs/Expressjs based app. The reason was this line in Kubernetes&amp;rsquo; Ingress:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;nginx.ingress.kubernetes.io/rewrite-target &lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Removing it fixed the issue. Check the Kubernetes documentation&lt;/p&gt;
&lt;p&gt;for more details.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ask HN: Software Engineer hitting 40: what&#39;s next?</title>
      <link>https://chaosplay.com/dev/2021-12-01-ask-hn-software-engineer-hitting-40-whats-next/</link>
      <pubDate>Wed, 01 Dec 2021 17:46:18 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2021-12-01-ask-hn-software-engineer-hitting-40-whats-next/</guid>
      <description>&lt;p&gt;Recent thread on Hacker News, &lt;a href=&#34;https://news.ycombinator.com/item?id=29360119&#34;&gt;https://news.ycombinator.com/item?id=29360119&lt;/a&gt;, was very interesting for me especially since I turned 40 this year.&lt;/p&gt;
&lt;p&gt;Programming is something I enjoy and am pretty good at it. I&amp;rsquo;m still not at the top of the salary range for programmers but this is a tough question. I can get into FAANG but there is still a ceiling of how much one can earn as a software engineer.&lt;/p&gt;
&lt;p&gt;This comment&lt;/p&gt;
&lt;p&gt;says it best:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wealth Lab Pro Earning Play Screener</title>
      <link>https://chaosplay.com/dev/2021-09-29-wealth-lab-pro-earning-play-screener/</link>
      <pubDate>Wed, 29 Sep 2021 16:12:14 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2021-09-29-wealth-lab-pro-earning-play-screener/</guid>
      <description>&lt;p&gt;This is a quick script that I use to find options to buy or sell.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; using  System;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; using  System.Collections.Generic;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; using  System.Text;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; using  System.Drawing;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; using  WealthLab;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; using  WealthLab.Indicators;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; using  Community.Components;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; namespace  WealthLab.Strategies
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	 public class  MyStrategy  : WealthScript
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		 protected override void  Execute()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			DataSeries maFast = EMAModern.Series(Close,  50 );
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			DataSeries maSlow = EMAModern.Series(Close,  200 );
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			DataSeries maFast_1 = EMAModern.Series(Close,  10 );
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			DataSeries maSlow_2 = EMAModern.Series(Close,  50 );
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			DataSeries ma = EMAModern.Series(Close,  10 );
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			DataSeries maFast_3 = EMAModern.Series(Close,  10 );
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			DataSeries maSlow_4 = EMAModern.Series(Close,  50 );
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			PlotSeries(PricePane,EMAModern.Series(Close, 50 ),Color.Red,LineStyle.Solid, 2 );
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			PlotSeries(PricePane,EMAModern.Series(Close, 200 ),Color.Green,LineStyle.Solid, 2 );
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			PlotSeries(PricePane,EMAModern.Series(Close, 10 ),Color.Blue,LineStyle.Solid, 2 );
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			PlotSeries(PricePane,EMAModern.Series(Close, 50 ),Color.Red,LineStyle.Solid, 2 );
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			PlotSeries(PricePane,EMAModern.Series(Close, 10 ),Color.Blue,LineStyle.Solid, 2 );
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			//for(int bar = GetTradingLoopStartBar(201); bar &amp;lt; Bars.Count; bar++)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 			 int  bar = Bars.Count -  1 ;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				 if  (IsLastPositionActive)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					Position p = LastPosition;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					 if  (p.EntrySignal.Contains(&amp;#34;Group1|&amp;#34; ))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;						 if  (CrossUnder(bar, maFast_3, maSlow_4))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;						{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;							SellAtMarket(bar +  1 , p, &amp;#34;Group1&amp;#34; );
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;						}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				 else
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					 if  (maFast[bar] &amp;gt; maSlow[bar])
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;						 if  (maFast_1[bar] &amp;gt; maSlow_2[bar])
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;						{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;							 if  (Close[bar] &amp;lt; ma[bar])
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;							{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;								 if  (EarningsDate.InWindow( this , bar, &amp;#34;earnings per share&amp;#34; ,  7 ,  0 ))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;								{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;									BuyAtMarket(bar +  1 , &amp;#34;Group1|&amp;#34; );
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;								}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;							}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;						}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;					}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Docker in 5 minutes</title>
      <link>https://chaosplay.com/dev/2021-05-17-docker-in-5-minutes/</link>
      <pubDate>Mon, 17 May 2021 16:09:00 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2021-05-17-docker-in-5-minutes/</guid>
      <description>&lt;p&gt;I have been using Docker and Kubernetes for several years now but never really took any time to really read about it. There were a lot of gaps in my understanding of how Docker works and what really is possible with it. Just recently my employer started to offer a Udemy subscription, so I took the &lt;a href=&#34;https://ibm-learning.udemy.com/course/learn-docker/learn/lecture/18018921#overview&#34;&gt;Hands on Docker course&lt;/a&gt;. Here are some of the important things I learned in this course.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Json_error_ctrl_char</title>
      <link>https://chaosplay.com/dev/2021-05-10-json_error_ctrl_char/</link>
      <pubDate>Mon, 10 May 2021 11:12:00 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2021-05-10-json_error_ctrl_char/</guid>
      <description>&lt;p&gt;I was using &lt;code&gt;mcrypt&lt;/code&gt; to encrypt &lt;code&gt;json_encoded&lt;/code&gt; data.&lt;/p&gt;
&lt;p&gt;On the other side, mcrypt was able to decrypt data but &lt;code&gt;json_decode&lt;/code&gt; was not working. It would throw &lt;code&gt;JSON\_ERROR\_CTRL_CHAR&lt;/code&gt; error.&lt;/p&gt;
&lt;p&gt;However, without mcrypt, json_decode worked flawlessly.&lt;/p&gt;
&lt;p&gt;After some trial and error, I found that applying &lt;code&gt;trim&lt;/code&gt; function after decrypting data would let me use json_decode without any issues.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Error Xcode Select Error Tool Xcodebuild Requires Xcode Active Developer Directory Command Line Tools Instance</title>
      <link>https://chaosplay.com/dev/2021-05-09-error-xcode-select-error-tool-xcodebuild-requires-xcode-active-developer-directory-command-line-tools-instance/</link>
      <pubDate>Sun, 09 May 2021 21:17:00 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2021-05-09-error-xcode-select-error-tool-xcodebuild-requires-xcode-active-developer-directory-command-line-tools-instance/</guid>
      <description>&lt;p&gt;Playing with Cordova, I was getting this error when building iOS version:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Error: xcode-select: error: tool &#39;xcodebuild&#39; requires Xcode,
but active developer directory is a command line tools instance
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Even full install of Xcode didn&amp;rsquo;t fix this error.&lt;/p&gt;
&lt;p&gt;The solution was to run the following command to use full Xcode instead of command line tools version that I had installed earlier:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo xcode-select --switch /Applications/Xcode-beta.app/Contents/Developer&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setup Outgoing Email on Lightsail Ubuntu VPS</title>
      <link>https://chaosplay.com/dev/2021-05-09-setup-outgoing-email-on-lightsail-ubuntu-vps/</link>
      <pubDate>Sun, 09 May 2021 21:10:00 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2021-05-09-setup-outgoing-email-on-lightsail-ubuntu-vps/</guid>
      <description>&lt;p&gt;I followed instructions here: &lt;a href=&#34;https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-as-a-send-only-smtp-server-on-ubuntu-18-04&#34;&gt;https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-as-a-send-only-smtp-server-on-ubuntu-18-04&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Everything seemed okay but emails were not getting delivered. Logs showed me that smtp connections were timing out:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tail -f /var/log/mail.log
May  3 12:28:10 postfix/smtp[3160]: connect to gmail-smtp-in.l.google.com[172.217.197.27]:25: Connection timed out
May  3 12:28:10  postfix/smtp[3160]: connect to alt1.gmail-smtp-in.l.google.com[2800:3f0:4003:c00::1a]:25: Network is unreachable
May  3 12:28:40 postfix/smtp[3160]: 4984C41A1E: to=&amp;lt;xxxx@gmail.com&amp;gt;, relay=none, delay=3246, delays=3186/0.01/60/0, dsn=4.4.1, status=deferred (connect to alt2.gmail-smtp-in.l.google.com[2a00:1450:400b:c00::1a]:25: Network is unreachable)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;However, I could ping any of the above ip addresses just fine.&lt;/p&gt;</description>
    </item>
    <item>
      <title>hsts Neterr_cert_common_name_invalid</title>
      <link>https://chaosplay.com/dev/2021-05-08-hsts-neterr_cert_common_name_invalid/</link>
      <pubDate>Sat, 08 May 2021 21:14:00 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2021-05-08-hsts-neterr_cert_common_name_invalid/</guid>
      <description>&lt;p&gt;Without full understanding, I had enabled &lt;code&gt;HSTS&lt;/code&gt; on amerkhalid.com with option &lt;code&gt;includeSubDomains&lt;/code&gt;. I had a subdomain that was used as &amp;ldquo;Custom Domain&amp;rdquo; to SmugMug site. After enabling HSTS, these subdomains started to throw &lt;code&gt;NET::ERR_CERT_COMMON_NAME_INVALID&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The fix is of course simple, don&amp;rsquo;t use &lt;code&gt;includeSubDomains&lt;/code&gt;. But that opens up your top level domain to man in the middle attacks.&lt;/p&gt;
&lt;p&gt;For now, I decided to follow the best practices and leave &lt;code&gt;includeSubDomains&lt;/code&gt; enabled. And decided to not use a custom domain for my SmugMug site.&lt;/p&gt;</description>
    </item>
    <item>
      <title>TypeError: require.extensions.hasOwnProperty is not a function</title>
      <link>https://chaosplay.com/dev/2021-05-08-typeerror-require-extensions-hasownproperty-is-not-a-function/</link>
      <pubDate>Sat, 08 May 2021 21:07:00 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2021-05-08-typeerror-require-extensions-hasownproperty-is-not-a-function/</guid>
      <description>&lt;p&gt;While playing with &lt;a href=&#34;https://github.com/alexa/interactive-adventure-game-tool&#34;&gt;https://github.com/alexa/interactive-adventure-game-tool&lt;/a&gt;, I ran into the following error:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt; interactive-adventure-game-tool@1.0.0 start /Users/amer/alexa/interactive-adventure-game-tool
&amp;gt; node node_modules/gulp/bin/gulp.js

/Users/amer/alexa/interactive-adventure-game-tool/node_modules/require-dir/index.js:97
            if (!require.extensions.hasOwnProperty(ext)) {
                                    ^

TypeError: require.extensions.hasOwnProperty is not a function
    at requireDir (/Users/amer/alexa/interactive-adventure-game-tool/node_modules/require-dir/index.js:97:37)
    at Object.&amp;lt;anonymous&amp;gt; (/Users/amer/alexa/interactive-adventure-game-tool/gulpfile.js:1:85)
    at Module._compile (module.js:660:30)
    at Object.Module._extensions..js (module.js:671:10)
    at Module.load (module.js:573:32)
    at tryModuleLoad (module.js:513:12)
    at Function.Module._load (module.js:505:3)
    at Module.require (module.js:604:17)
    at require (internal/module.js:11:18)
    at Liftoff.handleArguments (/Users/amer/alexa/interactive-adventure-game-tool/node_modules/gulp/bin/gulp.js:116:3)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! interactive-adventure-game-tool@1.0.0 start: `node node_modules/gulp/bin/gulp.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the interactive-adventure-game-tool@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/amer/.npm/_logs/2018-01-02T05_12_24_832Z-debug.log
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The solution was to &lt;a href=&#34;https://github.com/alexa/interactive-adventure-game-tool/issues/54#issuecomment-345568956&#34;&gt;update &lt;code&gt;require-dir&lt;/code&gt; to version 0.3.2&lt;/a&gt; in package.json and run &lt;code&gt;npm install&lt;/code&gt; again.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Troubleshooting Kubernetes Ingress</title>
      <link>https://chaosplay.com/dev/2021-05-04-troubleshooting-kubernetes-ingress/</link>
      <pubDate>Tue, 04 May 2021 18:58:09 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2021-05-04-troubleshooting-kubernetes-ingress/</guid>
      <description>&lt;p&gt;Setting up Ingress is an easy process but when it doesn&amp;rsquo;t work it gets really painful. First, make sure you have &lt;a href=&#34;https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/&#34;&gt;Ingress Controller&lt;/a&gt; setup correctly. This is in addition to Ingress resource and should be automatically setup by your cloud provider. When I was trying to setup a Kubernetes cluster on IBM Cloud, I ran into a lot of issues. It seems due to my permissions level something went wrong during provisioning of Kubernetes and Ingress Controller was not setup correctly. I went through a lot of steps including recreating &lt;code&gt;alb&lt;/code&gt; , ingress resources, etc. The final fix was to login to IBM Cloud as superuser to change Access Policies for the cluster. Once I did that, everything just worked magically.&lt;/p&gt;</description>
    </item>
    <item>
      <title>iPad Pro as main machine after 2 years</title>
      <link>https://chaosplay.com/dev/2020-06-26-ipad-pro-as-main-machine-after-2-years/</link>
      <pubDate>Fri, 26 Jun 2020 16:24:00 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2020-06-26-ipad-pro-as-main-machine-after-2-years/</guid>
      <description>&lt;p&gt;I got my iPad Pro at the end of 2017. Before buying it, I had read many blog posts by various developers who were using iPad for programming and web development. But soon after I bought it, I realized that serious web development on iPad is hard. The biggest issue was debugging JavaScript and CSS without web tools.
At first, I was having buyer&amp;rsquo;s remorse but I loved the form factor of iPad and loved drawing on it. I am used to reading on Kindle and iPad was just too heavy for long reading sessions but it was a very decent reading device for quick reading sessions. So I kept it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Git Simplified</title>
      <link>https://chaosplay.com/dev/2019-05-25-git-simplified/</link>
      <pubDate>Sat, 25 May 2019 13:44:01 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2019-05-25-git-simplified/</guid>
      <description>&lt;p&gt;One of the most common technologies that new professional developers struggle with is &lt;code&gt;git&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Many junior developers are eager to start using all of the powerful commands of &lt;code&gt;git&lt;/code&gt; and usually end up getting more confused.&lt;/p&gt;
&lt;p&gt;Here are a few commands that I recommend to anyone learning &lt;code&gt;git&lt;/code&gt; for the first time:&lt;/p&gt;
&lt;h2 id=&#34;clone&#34;&gt;clone&lt;/h2&gt;
&lt;p&gt;This downloads the entire git repo from a remote server, usually. You will get all revision history and branches.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tools of Trade</title>
      <link>https://chaosplay.com/dev/2019-03-25-tools-of-trade/</link>
      <pubDate>Mon, 25 Mar 2019 14:20:18 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2019-03-25-tools-of-trade/</guid>
      <description>&lt;p&gt;I use 13-inch MacBook Pro for personal projects and 15-inch for work. My personal MBP would be the last traditional laptop, hopefully. Since most of my work can easily be done on Linux VPS. I have been using a 10.5-inch iPad Pro with Blink shell for most of my side projects. I like the form factor of iPad Pro and I am getting better at Linux administration. Now I am also setting up Docker images so I can bring up new images as needed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>You don&#39;t need a web developer</title>
      <link>https://chaosplay.com/dev/2017-12-03-you-dont-need-a-web-developer/</link>
      <pubDate>Mon, 04 Dec 2017 01:08:41 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2017-12-03-you-dont-need-a-web-developer/</guid>
      <description>&lt;p&gt;Occasionally, when people find out I am a programmer, they ask me if I will build  them a website or an app on the side. As I spend all day programming at my work, I rarely have the motivation to continue programming after work.&lt;/p&gt;
&lt;p&gt;However, talking to most people, I realize they don&amp;rsquo;t need a programmer; most of their needs can be met by a simple SaaS solution. Recently, I directed a few friends to WordPress.com, SmugMug, Shopify, etc. They all were happy with the results and ease of use. Also I am glad they talked to me because one guy was ready to spend a few thousands on a developer for a WordPress-based site.&lt;/p&gt;</description>
    </item>
    <item>
      <title>WordPress vs Hugo</title>
      <link>https://chaosplay.com/dev/2017-12-02-wordpress-vs-hugo/</link>
      <pubDate>Sat, 02 Dec 2017 13:44:01 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2017-12-02-wordpress-vs-hugo/</guid>
      <description>&lt;p&gt;Managing WordPress can get time consuming. I have tried to move to static website several times but kept going back to WordPress. But there are several advantages of static site generators, so I finally moved for good. I am also advising a lot of my clients to use &lt;a href=&#34;http://gohugo.io/&#34;&gt;Hugo&lt;/a&gt; especially when they know that they will rarely ever update their sites.&lt;/p&gt;
&lt;p&gt;Here are some of the main advantages of Hugo (or other static site generators) vs WordPress and other CMS.&lt;/p&gt;</description>
    </item>
    <item>
      <title>iPad Pro for Programming &amp; Fun</title>
      <link>https://chaosplay.com/dev/2017-11-14-ipad-pro-for-programming-fun/</link>
      <pubDate>Tue, 14 Nov 2017 17:10:00 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2017-11-14-ipad-pro-for-programming-fun/</guid>
      <description>&lt;p&gt;I finally bought a 10.5&amp;quot; iPad Pro (Affiliate Link). It was mostly an impulse purchase. When I first started to use iPad, it felt blah. It is hard to find good apps or what apps you might want to try out.&lt;/p&gt;
&lt;p&gt;My main goal with iPad was to have a really small laptop replacement. So I was hoping for a decent code editor. There are some code editing apps but there is no way to try them out before purchasing. So I am spending a lot of time reading reviews before I purchase any app.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ReflectionException: Class Tests\Unit\Symfony\Component\HttpKernel\Exception\NotFoundHttpException does not exist</title>
      <link>https://chaosplay.com/dev/2017-10-13-reflectionexception-class-testsunitsymfonycomponenthttpkernelexceptionnotfoundhttpexception-does-not-exist/</link>
      <pubDate>Fri, 13 Oct 2017 23:12:25 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2017-10-13-reflectionexception-class-testsunitsymfonycomponenthttpkernelexceptionnotfoundhttpexception-does-not-exist/</guid>
      <description>&lt;p&gt;Running unit tests in Laravel, I was getting this error:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ReflectionException: Class Tests\Unit\Symfony\Component\HttpKernel\Exception\NotFoundHttpException does not exist&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The issue was a missing root backslash, make sure you have expected exception like:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;$this-&amp;gt;expectException(\Symfony\Component\HttpKernel\Exception\NotFoundHttpException::class);&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Upgrading to PHP 7.0 on Ubuntu 14</title>
      <link>https://chaosplay.com/dev/2017-09-22-upgrading-to-php-7-0-on-ubuntu-14/</link>
      <pubDate>Fri, 22 Sep 2017 21:22:20 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2017-09-22-upgrading-to-php-7-0-on-ubuntu-14/</guid>
      <description>&lt;p&gt;I upgraded PHP to version 7.0 on an Ubuntu box. Running &lt;code&gt;php -v&lt;/code&gt; on shell would show it as version 7.0. But Apache was still using PHP 5.6. I tried various methods to update settings for Apache but nothing worked until I issued the following commands:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo a2dismod php5.6
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo a2enmod php7.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo service apache2 restart
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Source: &lt;em&gt;&lt;a href=&#34;https://lornajane.net/posts/2016/php-7-0-and-5-6-on-ubuntu&#34;&gt;PHP 7.0 (and 5.6) on Ubuntu | LornaJane&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting Up Laravel on MacOS</title>
      <link>https://chaosplay.com/dev/2017-08-19-setting-up-laravel-on-macos/</link>
      <pubDate>Sat, 19 Aug 2017 15:58:05 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2017-08-19-setting-up-laravel-on-macos/</guid>
      <description>&lt;p&gt;After 3 years, I am using &lt;a href=&#34;https://laravel.com/&#34;&gt;Laravel&lt;/a&gt; again at work. Laravel has extensive documentation but sometimes it can be a bit verbose. Here are commands to get you started as soon as possible. This assumes pretty much a fresh install of MacOS.&lt;/p&gt;
&lt;h3 id=&#34;install-homebrew&#34;&gt;Install Homebrew&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://brew.sh/&#34;&gt;Check the official site for the latest command&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/usr/bin/ruby -e &amp;quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)&amp;quot;&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;install-php-71&#34;&gt;Install PHP 7.1&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;brew install homebrew/php/php7&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;install-mariadb&#34;&gt;Install MariaDB&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;brew install mariadb&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Set MariaDB to start as a service at the end of installation.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Magento – Get All Products with Categories in a Flat View</title>
      <link>https://chaosplay.com/dev/2013-05-01-magento-get-all-products-with-categories-in-a-flat-view/</link>
      <pubDate>Wed, 01 May 2013 20:11:53 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2013-05-01-magento-get-all-products-with-categories-in-a-flat-view/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     SELECT
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        w1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;website_id,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        w1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;name  as  website_name,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        s1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;store_id,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        s1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;name  as  store_name,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        p1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_id  as  product_id,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        p1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;sku,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        pname&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;value  as  product_name,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        url&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;value  as  url_path,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        small_image&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;value  as  small_image,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        msrp&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;value  as  msrp_price,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        price&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;value  as  price,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        p1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;created_at  as  product_created_at,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        p1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;updated_at  as  product_updated_at,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        visibility&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;value  as  visibility,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        pstatus&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;value  as  status,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             when
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                (pstatus&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;value  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;   &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                     &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;  visibility&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;value  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt;   &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; )
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             then
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                 &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt;   &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         end as  enable_flag,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        c1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_id  as  category_id,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        cname&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;value  as  category_name,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        c1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;parent_id,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        c1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;created_at  as  category_created_at,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        c1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;updated_at  as  category_updated_at
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     FROM
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        catalog_product_entity p1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             inner join
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        eav_attribute p_attr  ON  p1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_type_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  p_attr&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_type_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;  p_attr&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;attribute_code  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;name&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             inner join
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        catalog_product_entity_varchar pname  ON  pname&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  p1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;  pname&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;attribute_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  p_attr&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;attribute_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             inner join
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        eav_attribute p_attr2  ON  p1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_type_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  p_attr2&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_type_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;  p_attr2&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;attribute_code  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;url_path&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             inner join
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        catalog_product_entity_varchar url  ON  url&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  p1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;  url&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;attribute_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  p_attr2&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;attribute_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;  pname&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;store_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  url&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;store_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             inner join
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        eav_attribute p_attr3  ON  p1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_type_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  p_attr3&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_type_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;  p_attr3&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;attribute_code  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;small_image&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             inner join
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        catalog_product_entity_varchar small_image  ON  small_image&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  p1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;  small_image&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;attribute_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  p_attr3&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;attribute_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;  pname&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;store_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  small_image&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;store_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             inner join
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        eav_attribute p_attr4  ON  p1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_type_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  p_attr4&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_type_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;  p_attr4&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;attribute_code  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;msrp&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             inner join
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        catalog_product_entity_decimal msrp  ON  msrp&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  p1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;  msrp&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;attribute_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  p_attr4&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;attribute_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;  pname&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;store_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  msrp&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;store_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             inner join
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        eav_attribute p_attr5  ON  p1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_type_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  p_attr5&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_type_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;  p_attr5&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;attribute_code  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;price&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             inner join
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        catalog_product_entity_decimal price  ON  price&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  p1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;  price&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;attribute_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  p_attr5&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;attribute_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;  pname&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;store_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  price&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;store_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             inner join
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        eav_attribute p_attr6  ON  p1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_type_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  p_attr6&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_type_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;  p_attr6&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;attribute_code  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;visibility&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             inner join
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        catalog_product_entity_int visibility  ON  visibility&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  p1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;  visibility&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;attribute_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  p_attr6&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;attribute_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;  pname&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;store_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  visibility&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;store_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             inner join
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        eav_attribute p_attr7  ON  p1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_type_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  p_attr7&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_type_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;  p_attr7&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;attribute_code  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;status&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             inner join
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        catalog_product_entity_int pstatus  ON  pstatus&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  p1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;  pstatus&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;attribute_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  p_attr7&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;attribute_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;  pname&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;store_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  pstatus&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;store_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             inner join
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        catalog_category_product ccp  ON  ccp&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;product_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  p1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             inner join
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        catalog_category_entity c1  ON  c1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  ccp&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;category_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             inner join
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        eav_attribute c_attr  ON  c1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_type_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  c_attr&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_type_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;  c_attr&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;attribute_code  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;name&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             inner join
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        catalog_category_entity_varchar cname  ON  cname&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  c1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;  cname&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;attribute_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  c_attr&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;attribute_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;  pname&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;store_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  cname&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;store_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             inner join
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        catalog_category_product_index store1  ON  store1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;product_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  p1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;  store1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;category_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  c1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entity_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             inner join
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        core_store s1  ON  store1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;store_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  s1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;store_id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             inner join
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        core_website w1  ON  s1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;website_id  &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  w1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;website_id
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>OpenShift Error: Layer 7 Wrong Status, Invalid Response</title>
      <link>https://chaosplay.com/dev/2013-04-21-openshift-error-layer-7-wrong-status-invalid-response/</link>
      <pubDate>Sun, 21 Apr 2013 20:11:02 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2013-04-21-openshift-error-layer-7-wrong-status-invalid-response/</guid>
      <description>&lt;p&gt;I have been playing with &lt;a href=&#34;https://www.openshift.com/&#34;&gt;OpenShift&lt;/a&gt; for the past several hours. It looks great. But a while back I started to get 503 Internal Server Error.&lt;/p&gt;
&lt;p&gt;When I checked logs using rhc tail , I saw this error: &lt;code&gt;Layer 7 Wrong Status, Invalid Response 404.&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;I spent an hour or so troubleshooting. Turns out the issue was NetBeans had added &lt;code&gt;src/main/web/app/WEB-INF/jboss-web.xml&lt;/code&gt; when I ran the application locally on my machine. I committed this file, thinking I might need it. &lt;strong&gt;Deleting it from the repo fixed the issue.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Tell if a Number Is Whole in Php</title>
      <link>https://chaosplay.com/dev/2012-07-07-how-to-tell-if-a-number-is-whole-in-php/</link>
      <pubDate>Sat, 07 Jul 2012 16:05:03 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2012-07-07-how-to-tell-if-a-number-is-whole-in-php/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;if ($num == (int) $num) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    // It&amp;#39;s whole
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;} else {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    // It&amp;#39;s not
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Filter Some Keys in Multi Dimensional Arrays in Php</title>
      <link>https://chaosplay.com/dev/2012-04-22-filter-some-keys-in-multi-dimensional-arrays-in-php/</link>
      <pubDate>Sun, 22 Apr 2012 16:08:09 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2012-04-22-filter-some-keys-in-multi-dimensional-arrays-in-php/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/**
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; * Cleans up multi-dimensional arrays.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; * 1st dimension is a simple index
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; * 2nd dimension includes the desired keys
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; *
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; * @param mixed $array
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; * @param mixed $keysToInclude
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; */
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;public function cleanUpArray($array, $keysToInclude) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $returnArray = array();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $i = 0;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    foreach($array as $item){
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        foreach($keysToInclude as $key){
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            $returnArray[$i][$key] = $item[$key];
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        $i++;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    return $returnArray;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>MySQL Update If Exist Else Insert Procedure</title>
      <link>https://chaosplay.com/dev/2011-04-21-mysql-update-if-exist-else-insert-procedure/</link>
      <pubDate>Fri, 22 Apr 2011 00:54:43 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2011-04-21-mysql-update-if-exist-else-insert-procedure/</guid>
      <description>&lt;p&gt;Are you tired of checking data in your code before inserting? Well MySQL procedures are here to the rescue. This simple procedure shows how you can do that:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;CREATE&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;PROCEDURE&lt;/span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;`&lt;/span&gt; update_insert_user &lt;span style=&#34;color:#f92672&#34;&gt;`&lt;/span&gt; (  &lt;span style=&#34;color:#66d9ef&#34;&gt;IN&lt;/span&gt;  uid2 int  )
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;BEGIN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;DECLARE&lt;/span&gt;  last_login2 DATETIME;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;`&lt;/span&gt; last_login &lt;span style=&#34;color:#f92672&#34;&gt;`&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;INTO&lt;/span&gt;  last_login2  &lt;span style=&#34;color:#66d9ef&#34;&gt;FROM&lt;/span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;`&lt;/span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;user&lt;/span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;`&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;WHERE&lt;/span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;`&lt;/span&gt; uid &lt;span style=&#34;color:#f92672&#34;&gt;`&lt;/span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  uid2  &lt;span style=&#34;color:#66d9ef&#34;&gt;LIMIT&lt;/span&gt;   &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; ;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;IF&lt;/span&gt;  last_login2  &lt;span style=&#34;color:#66d9ef&#34;&gt;IS&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;NULL&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;THEN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;INSERT&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;INTO&lt;/span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;`&lt;/span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;user&lt;/span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;`&lt;/span&gt;  ( &lt;span style=&#34;color:#f92672&#34;&gt;`&lt;/span&gt; uid &lt;span style=&#34;color:#f92672&#34;&gt;`&lt;/span&gt; , &lt;span style=&#34;color:#f92672&#34;&gt;`&lt;/span&gt; last_login &lt;span style=&#34;color:#f92672&#34;&gt;`&lt;/span&gt; )  &lt;span style=&#34;color:#66d9ef&#34;&gt;values&lt;/span&gt;  (uid2, now());
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;ELSE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;UPDATE&lt;/span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;`&lt;/span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;user&lt;/span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;`&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SET&lt;/span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;`&lt;/span&gt; last_login &lt;span style=&#34;color:#f92672&#34;&gt;`&lt;/span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  now()  &lt;span style=&#34;color:#66d9ef&#34;&gt;WHERE&lt;/span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;`&lt;/span&gt; uid &lt;span style=&#34;color:#f92672&#34;&gt;`&lt;/span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  uid2  &lt;span style=&#34;color:#66d9ef&#34;&gt;LIMIT&lt;/span&gt;   &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; ;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;END&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;IF&lt;/span&gt; ;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;END&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Codeigniter Creates a New Session With Each Page Load</title>
      <link>https://chaosplay.com/dev/2010-09-07-codeigniter-creates-a-new-session-with-each-page-load/</link>
      <pubDate>Tue, 07 Sep 2010 16:15:32 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2010-09-07-codeigniter-creates-a-new-session-with-each-page-load/</guid>
      <description>&lt;p&gt;Just spent 3 hours debugging a session bug in my webapp. CodeIgniter was creating a brand new session with each page load. The issue was a misconfiguration with my config file.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fix was simple, in &lt;code&gt;/application/config/config.php&lt;/code&gt;, make sure the correct domain is set for &lt;code&gt;$config[&#39;cookie_domain&#39;]&lt;/code&gt;.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Codeigniter Out of Memory Error</title>
      <link>https://chaosplay.com/dev/2010-08-07-codeigniter-out-of-memory-error/</link>
      <pubDate>Sat, 07 Aug 2010 16:12:32 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2010-08-07-codeigniter-out-of-memory-error/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Query Saving is a feature of CI&amp;rsquo;s database class that stores the results of every query in memory until the controller is finished executing. As it turns out, in version 1.6.0, the ability to turn this off was added. The addition of the save_queries variable is listed in the Change Log, but as of the latest release of 2.0.0 last week, it still hasn&amp;rsquo;t made the documentation.&lt;/p&gt;&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;$this-&amp;gt;db-&amp;gt;save_queries = FALSE;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;via &lt;a href=&#34;http://www.greeneggmedia.com//entry/undocumented-codeigniter&#34;&gt;Undocumented CodeIgniter | Green Egg Media&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ssh_exchange_identification: Connection closed by remote host</title>
      <link>https://chaosplay.com/dev/2010-07-01-ssh_exchange_identification-connection-closed-by-remote-host/</link>
      <pubDate>Fri, 02 Jul 2010 01:05:55 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2010-07-01-ssh_exchange_identification-connection-closed-by-remote-host/</guid>
      <description>&lt;p&gt;I tried to login to my server tonight but kept getting the following error message:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ssh_exchange_identification: Connection closed by remote host&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The fix was simple, at least if you have access to the server via cPanel. Just &lt;strong&gt;restart sshd service&lt;/strong&gt; via cPanel/WHM.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Useful Sar Sysstat Examples for Unix Linux Performance Monitoring</title>
      <link>https://chaosplay.com/dev/2009-07-07-useful-sar-sysstat-examples-for-unix-linux-performance-monitoring/</link>
      <pubDate>Tue, 07 Jul 2009 16:20:10 +0000</pubDate>
      <guid>https://chaosplay.com/dev/2009-07-07-useful-sar-sysstat-examples-for-unix-linux-performance-monitoring/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Using sar, you can also collect all performance data on an on-going basis, store them, and do historical analysis to identify bottlenecks.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;via &lt;a href=&#34;http://www.thegeekstuff.com/2011/03/sar-examples/&#34;&gt;10 Useful Sar (Sysstat) Examples for UNIX / Linux Performance Monitoring&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
