<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>GizmoLA.com</title>
    <link></link>
    <description>Articles and information about Web development, history and programming</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 2.3.5 - http://www.s9y.org/</generator>
    <managingEditor>webmaster@gizmola.com</managingEditor>
<webMaster>webmaster@gizmola.com</webMaster>
<pubDate>Thu, 03 Apr 2025 23:45:59 GMT</pubDate>

    <image>
    <url>templates/2k11/img/s9y_banner_small.png</url>
    <title>RSS: GizmoLA.com - Articles and information about Web development, history and programming</title>
    <link></link>
    <width>100</width>
    <height>21</height>
</image>

<item>
    <title>Parallels Desktop and Ubuntu - Cut and Paste keys and issues</title>
    <link>archives/135-Parallels-Desktop-and-Ubuntu-Cut-and-Paste-keys-and-issues.html</link>
            <category>Tech</category>
    
    <comments>archives/135-Parallels-Desktop-and-Ubuntu-Cut-and-Paste-keys-and-issues.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=135</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=135</wfw:commentRss>
    

    <author>nospam@example.com (David Rolston)</author>
    <content:encoded>
    &lt;!-- s9ymdb:268 --&gt;&lt;img class=&quot;serendipity_image_left&quot; width=&quot;110&quot; height=&quot;61&quot;  src=&quot;uploads/images/parallels.tn.png&quot; title=&quot;Parallels Desktop Window Image&quot; alt=&quot;Parallels Desktop Window Image&quot;&gt;I spent way too much time trying to figure out how to configure Parallels Desktop, in order to be able to cut and paste between my mac and a virtualized Ubuntu guest.  Here is what I learned. &lt;a class=&quot;block_level&quot; href=&quot;archives/135-Parallels-Desktop-and-Ubuntu-Cut-and-Paste-keys-and-issues.html#extended&quot;&gt;Continue reading &quot;Parallels Desktop and Ubuntu - Cut and Paste keys and issues&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 03 Apr 2025 21:46:00 +0000</pubDate>
    <guid isPermaLink="false">archives/135-guid.html</guid>
    <category>linux</category>
<category>mac</category>
<category>osx</category>
<category>parallels desktop</category>
<category>ubuntu</category>
<category>virtualization</category>

</item>
<item>
    <title>Testing new ssh keys</title>
    <link>archives/134-Testing-new-ssh-keys.html</link>
            <category>Linux</category>
            <category>Web Tech</category>
            <category>Website</category>
    
    <comments>archives/134-Testing-new-ssh-keys.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=134</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=134</wfw:commentRss>
    

    <author>nospam@example.com (David Rolston)</author>
    <content:encoded>
    &lt;h3&gt;You created a new ssh key, but are you actually testing it?&lt;/h3&gt;&lt;br /&gt;
I routinely have to create new ssh keys for system users and also verify that they are working correctly.   One possible area of confusion is how ssh keys are found by the ssh client.&lt;br /&gt;
&lt;br /&gt;
While most of this information is not specific to osx, since I typically use a macbook running osx, I&#039;ll cover a couple of things somewhat specific to osx.&lt;br /&gt;
&lt;br /&gt;
SSH clients will typically default to searching for a private key that exists in the user&#039;s home directory in a subdirectory named &quot;.ssh&quot;&lt;br /&gt;
&lt;br /&gt;
So let&#039;s assume that you create an ssh key for a new user, utilizing ssh-keygen&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;ssh-keygen&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-t&lt;/span&gt; ed25519 &lt;span style=&quot;color: #660033;&quot;&gt;-N&lt;/span&gt; some-new-passphrase &lt;span style=&quot;color: #660033;&quot;&gt;-f&lt;/span&gt; id_newuser &lt;span style=&quot;color: #660033;&quot;&gt;-C&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;new user&amp;quot;&lt;/span&gt;&lt;br /&gt;&amp;#160;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Should you omit the -N parameter above you will be prompted for a passphrase.&lt;/em&gt;  In either case, you should use passphrases in almost all situations to protect your system from lost or stolen private keys!!!&lt;br /&gt;
&lt;br /&gt;
So if all goes well, you will now have a new public/private ssh key pair.&lt;br /&gt;
&lt;br /&gt;
On the remote system, you will typically add the public key (id_newuser.pub in this example) to the .ssh/authorized_keys file.&lt;br /&gt;
&lt;br /&gt;
While not the point of this article, you will also need to understand the permission requirements of the user&#039;s home .ssh directory and files.  Make sure the directory and files are private to the user, or ssh connections will fail. &lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Time to test&lt;/h3&gt; &lt;a class=&quot;block_level&quot; href=&quot;archives/134-Testing-new-ssh-keys.html#extended&quot;&gt;Continue reading &quot;Testing new ssh keys&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 31 Jul 2024 21:31:00 +0000</pubDate>
    <guid isPermaLink="false">archives/134-guid.html</guid>
    <category>osx</category>
<category>ssh</category>
<category>ssh-keygen</category>

</item>
<item>
    <title>Symfony &amp; Doctrine Mapping problems with MySQL Bigint columns, and how to fix this</title>
    <link>archives/133-Symfony-Doctrine-Mapping-problems-with-MySQL-Bigint-columns,-and-how-to-fix-this.html</link>
            <category>Web Tech</category>
    
    <comments>archives/133-Symfony-Doctrine-Mapping-problems-with-MySQL-Bigint-columns,-and-how-to-fix-this.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=133</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=133</wfw:commentRss>
    

    <author>nospam@example.com (David Rolston)</author>
    <content:encoded>
    In the process of upgrading a Symfony project from version 2 to version 5, I came across an issue with a MySQL table that has a number of BIGINT columns.  There had been no issue previously, but after updating to the newer symfony (and doctrine components) mySQL bigint columns were empty/null in my doctrine entities.&lt;br /&gt;
&lt;br /&gt;
After some investigation I came upon &lt;a href=&quot;https://www.doctrine-project.org/projects/doctrine-dbal/en/current/reference/types.html&quot; title=&quot;Doctrine Manual on Types&quot;&gt;this section of the Doctrine manual&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;For compatibility reasons this type is not converted to an integer as PHP can only represent big integer values as real integers on systems with a 64-bit architecture and would fall back to approximated float values otherwise which could lead to false assumptions in applications.&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
To protect symfony apps running on 32 bit systems, Doctrine maps Bigint columns to the string type, and this broke the entity definition I was using, even though my application will only be deployed on 64 bit systems.  I think that for most people this is the norm. &lt;br /&gt;
&lt;br /&gt;
There are a few different ways to get around this issue, including type casting from string to integer/integer to string in your getters and setters, but if you have a lot of bigint columns across tables, that probably isn&#039;t a great solution.  In this article, I present the solution I implemented, which utilizes a Custom Doctrine type to override the built in Doctrine behavior.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;archives/133-Symfony-Doctrine-Mapping-problems-with-MySQL-Bigint-columns,-and-how-to-fix-this.html#extended&quot;&gt;Continue reading &quot;Symfony &amp;amp; Doctrine Mapping problems with MySQL Bigint columns, and how to fix this&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 10 Feb 2023 21:24:00 +0000</pubDate>
    <guid isPermaLink="false">archives/133-guid.html</guid>
    <category>32bit</category>
<category>64bit</category>
<category>bigint</category>
<category>doctrine</category>
<category>mysql</category>
<category>orm</category>
<category>symfony</category>

</item>
<item>
    <title>docker4lamp - A LAMP Docker development environment</title>
    <link>archives/132-docker4lamp-A-LAMP-Docker-development-environment.html</link>
            <category>Web Tech</category>
    
    <comments>archives/132-docker4lamp-A-LAMP-Docker-development-environment.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=132</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=132</wfw:commentRss>
    

    <author>nospam@example.com (David Rolston)</author>
    <content:encoded>
    I have made this project (&lt;a href=&quot;https://github.com/gizmola/docker4lamp&quot; title=&quot;docker4lamp&quot;&gt;Docker For LAMP&lt;/a&gt;) publically available on Github, under the MIT license.&lt;br /&gt;
&lt;br /&gt;
The target user group is php developers who want or need a simple, minimal (yet very current) LAMP development environment.  I want this to be friendly to new developers, and a useful alternative to localhost environments like xamp, mamp or wamp.  &lt;br /&gt;
&lt;br /&gt;
Ideally it offers the type of convenience and isolation of a vagrant lamp environment except with orchestrated containers. &lt;a class=&quot;block_level&quot; href=&quot;archives/132-docker4lamp-A-LAMP-Docker-development-environment.html#extended&quot;&gt;Continue reading &quot;docker4lamp - A LAMP Docker development environment&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 17 Nov 2021 01:02:00 +0000</pubDate>
    <guid isPermaLink="false">archives/132-guid.html</guid>
    <category>apache</category>
<category>docker</category>
<category>docker for lamp</category>
<category>lamp</category>
<category>mysql</category>
<category>php</category>
<category>xdebug</category>

</item>
<item>
    <title>Symfony 5.2 and Apache 2.4</title>
    <link>archives/131-Symfony-5.2-and-Apache-2.4.html</link>
            <category>Web Tech</category>
    
    <comments>archives/131-Symfony-5.2-and-Apache-2.4.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=131</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=131</wfw:commentRss>
    

    <author>nospam@example.com (David Rolston)</author>
    <content:encoded>
    Certainly the most convenient way to develop a Symfony 5.x app is to use the symfony server.  Eventually however, you may have to deploy the application.  For a number of years nginx with php-fpm was the preference for many sysadmins seeking to wring the maximum performance out of a webserver that also has to run php scripts, but there are now simple ways of configuring apache to use php-fpm while achieving comparable performance to nginx.&lt;br /&gt;
&lt;br /&gt;
For example a vhost setting like this one is possible:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;apache geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;br /&gt;&amp;lt;&lt;span style=&quot;color: #000000; font-weight:bold;&quot;&gt;VirtualHost&lt;/span&gt; *:&lt;span style=&quot;color: #ff0000;&quot;&gt;80&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #00007f;&quot;&gt;SetEnv&lt;/span&gt; ENVIRONMENT &lt;span style=&quot;color: #7f007f;&quot;&gt;&amp;quot;dev&amp;quot;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;lt;&lt;span style=&quot;color: #000000; font-weight:bold;&quot;&gt;FilesMatch&lt;/span&gt; \.php$&amp;gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #00007f;&quot;&gt;SetHandler&lt;/span&gt; proxy:fcgi://php:&lt;span style=&quot;color: #ff0000;&quot;&gt;9000&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;# for Unix sockets, Apache 2.4.10 or higher&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;lt;/&lt;span style=&quot;color: #000000; font-weight:bold;&quot;&gt;FilesMatch&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;# Proxy .php requests to port 9000 of the php-fpm container&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #00007f;&quot;&gt;DocumentRoot&lt;/span&gt; /usr/local/apache2/cms/public&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #00007f;&quot;&gt;ServerName&lt;/span&gt; cms.mydev.local&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #00007f;&quot;&gt;ServerAdmin&lt;/span&gt; admin@mydev.local&lt;br /&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;lt;&lt;span style=&quot;color: #000000; font-weight:bold;&quot;&gt;Directory&lt;/span&gt; /usr/local/apache2/cms/public&amp;gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #00007f;&quot;&gt;DirectoryIndex&lt;/span&gt; index.php index.html&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #00007f;&quot;&gt;Options&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;Indexes&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;FollowSymLinks&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #00007f;&quot;&gt;AllowOverride&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;All&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #00007f;&quot;&gt;Require&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;all&lt;/span&gt; granted&lt;br /&gt;&amp;#160; &amp;#160; &amp;lt;/&lt;span style=&quot;color: #000000; font-weight:bold;&quot;&gt;Directory&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;# Send apache logs to stdout and stderr&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #00007f;&quot;&gt;CustomLog&lt;/span&gt; /proc/self/fd/&lt;span style=&quot;color: #ff0000;&quot;&gt;1&lt;/span&gt; common&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #00007f;&quot;&gt;ErrorLog&lt;/span&gt; /proc/self/fd/&lt;span style=&quot;color: #ff0000;&quot;&gt;2&lt;/span&gt;&lt;br /&gt;&amp;lt;/&lt;span style=&quot;color: #000000; font-weight:bold;&quot;&gt;VirtualHost&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;#160;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;archives/131-Symfony-5.2-and-Apache-2.4.html#extended&quot;&gt;Continue reading &quot;Symfony 5.2 and Apache 2.4&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sat, 02 Jan 2021 02:14:00 +0000</pubDate>
    <guid isPermaLink="false">archives/131-guid.html</guid>
    <category>apache</category>
<category>php</category>
<category>php-fpm</category>
<category>symfony</category>
<category>symfony5</category>
<category>web development</category>
<category>web tech</category>

</item>
<item>
    <title>Symfony 5: The Fast Track book and installing a local PHP version that works!</title>
    <link>archives/130-Symfony-5-The-Fast-Track-book-and-installing-a-local-PHP-version-that-works!.html</link>
    
    <comments>archives/130-Symfony-5-The-Fast-Track-book-and-installing-a-local-PHP-version-that-works!.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=130</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=130</wfw:commentRss>
    

    <author>nospam@example.com (David Rolston)</author>
    <content:encoded>
    &lt;!-- s9ymdb:264 --&gt;&lt;img class=&quot;serendipity_image_left&quot; width=&quot;73&quot; height=&quot;110&quot;  src=&quot;uploads/images/symfon5-book-cover.tn.jpg&quot;  alt=&quot;&quot;&gt;Having backed Fabien Potencier&#039;s &quot;&lt;a href=&quot;https://www.backerkit.com/projects/fabpot/symfony-5-the-fast-track&quot;&gt;Symfony 5: The Fast Track&quot; book on Kickstarter,&lt;/a&gt; I received the book a few weeks ago, and had a chance over the weekend to start reading it.&lt;br /&gt;
&lt;br /&gt;
As a Macbook/OSX user, his recommended environment includes a current locally installed version of PHP with a number of php extension libraries.  You also need installation of the php standard composer tool, as well as docker.  As I have a Macbook running OSX Mojave, I had to take a number of steps to be able to get started following the book and getting a working installation of the guestbook project using the book&#039;s recipe.  Here&#039;s what I did:&lt;br /&gt;
&lt;br /&gt;
                                                                              &lt;br /&gt;
                                                                                                                         &lt;a class=&quot;block_level&quot; href=&quot;archives/130-Symfony-5-The-Fast-Track-book-and-installing-a-local-PHP-version-that-works!.html#extended&quot;&gt;Continue reading &quot;Symfony 5: The Fast Track book and installing a local PHP version that works!&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 21 Jan 2020 05:47:00 +0000</pubDate>
    <guid isPermaLink="false">archives/130-guid.html</guid>
    <category>fabien potencier</category>
<category>guestbook</category>
<category>php</category>
<category>symfony</category>
<category>symfony 5: the fast track</category>
<category>symfony5</category>

</item>
<item>
    <title>Composer install of Private Bitbucket VCS &quot;aka&quot; 'Invalid OAuth consumer provided'</title>
    <link>archives/126-Composer-install-of-Private-Bitbucket-VCS-aka-Invalid-OAuth-consumer-provided.html</link>
            <category>Web Tech</category>
    
    <comments>archives/126-Composer-install-of-Private-Bitbucket-VCS-aka-Invalid-OAuth-consumer-provided.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=126</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=126</wfw:commentRss>
    

    <author>nospam@example.com (David Rolston)</author>
    <content:encoded>
    So you have a private Bitbucket Repo and you want to utilize it in your project &lt;strong&gt;composer.json&lt;/strong&gt;.  You may find that when you run the composer install you get an error pulling your private Bitbucket repo with messages about Oauth failure that may include &quot;&lt;em&gt;Invalid OAuth consumer provided&lt;/em&gt;&quot;&lt;br /&gt;
&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;archives/126-Composer-install-of-Private-Bitbucket-VCS-aka-Invalid-OAuth-consumer-provided.html#extended&quot;&gt;Continue reading &quot;Composer install of Private Bitbucket VCS &amp;quot;aka&amp;quot; &#039;Invalid OAuth consumer provided&#039;&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 05 Apr 2018 20:07:00 +0000</pubDate>
    <guid isPermaLink="false">archives/126-guid.html</guid>
    <category>bitbucket</category>
<category>composer</category>
<category>git</category>
<category>php</category>
<category>web development</category>
<category>web tech</category>

</item>
<item>
    <title>Configure the Atom live server to use Chrome</title>
    <link>archives/125-Configure-the-Atom-live-server-to-use-Chrome.html</link>
    
    <comments>archives/125-Configure-the-Atom-live-server-to-use-Chrome.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=125</wfw:comment>

    <slash:comments>9</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=125</wfw:commentRss>
    

    <author>nospam@example.com (David Rolston)</author>
    <content:encoded>
    &lt;!-- s9ymdb:260 --&gt;&lt;img class=&quot;serendipity_image_left&quot; width=&quot;160&quot; height=&quot;160&quot;  src=&quot;uploads/images/atom.png&quot;  alt=&quot;&quot;&gt;The free open source &lt;a href=&quot;https://atom.io/&quot; title=&quot;Atom text editor&quot;&gt;Atom text editor&lt;/a&gt; from Github is one of several development tools that have gotten a lot of traction in recent years amongst web technology developers looking for an alternative to the big IDE&#039;s like Visual Studio, Eclipse or the JetBrains editors.  &lt;br /&gt;
&lt;br /&gt;
Atom is aimed at the same niche often filled by Sublime Text, Vim and Notepad++, namely to provide a small self contained code editor able to work on multiple files at a time, and with available plugins that provide programming features like color syntax highlighting, smart indentation and robust search and replace.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  &lt;a class=&quot;block_level&quot; href=&quot;archives/125-Configure-the-Atom-live-server-to-use-Chrome.html#extended&quot;&gt;Continue reading &quot;Configure the Atom live server to use Chrome&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 15 Sep 2017 02:29:00 +0000</pubDate>
    <guid isPermaLink="false">archives/125-guid.html</guid>
    
</item>
<item>
    <title>Pull an EC2 console log using the AWS CLI api and jq</title>
    <link>archives/123-Pull-an-EC2-console-log-using-the-AWS-CLI-api-and-jq.html</link>
    
    <comments>archives/123-Pull-an-EC2-console-log-using-the-AWS-CLI-api-and-jq.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=123</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=123</wfw:commentRss>
    

    <author>nospam@example.com (David Rolston)</author>
    <content:encoded>
    AWS provides a REST Api to everything they offer, and returns the results in Json format.  If you have a server in a private network in a VPC, you might want to get the logs to see what happened at boot time, and the aws cli gives you a simple way of doing that:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;aws&amp;#160;ec2&amp;#160;get-console-output&amp;#160;--instance-id&amp;#160;{i-xxxxxxxx}&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;a class=&quot;block_level&quot; href=&quot;archives/123-Pull-an-EC2-console-log-using-the-AWS-CLI-api-and-jq.html#extended&quot;&gt;Continue reading &quot;Pull an EC2 console log using the AWS CLI api and jq&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 14 Aug 2017 21:16:00 +0000</pubDate>
    <guid isPermaLink="false">archives/123-guid.html</guid>
    
</item>
<item>
    <title>Howto serve a markdown document</title>
    <link>archives/122-Howto-serve-a-markdown-document.html</link>
            <category>Web Tech</category>
    
    <comments>archives/122-Howto-serve-a-markdown-document.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=122</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=122</wfw:commentRss>
    

    <author>nospam@example.com (David Rolston)</author>
    <content:encoded>
    &lt;a href=&quot;http://allmark.io/&quot;&gt;Allmark&lt;/a&gt; is a simple self contained Markdown html renderer and server from developer Andreas Koch, that is written in Go.  &lt;br /&gt;
&lt;br /&gt;
You could certainly install Allmark locally, but there are numerous editors or standalone operating system specific markdown parsers you could use.&lt;br /&gt;
&lt;br /&gt;
But what if you have some markdown documentation on a server, and need a quick and easy way to access that documentation?  You can always just look at the raw markdown using vim, but what fun is that?  &lt;br /&gt;
&lt;br /&gt;
Allmark is a full markdown server, but installing a server just to read a couple of markdown documents is something very few people would want to do.  If however, your server has docker installed, you can be reading your documentation in all its rendered glory in a matter of a few seconds.  Here is how:  &lt;br /&gt;
&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;archives/122-Howto-serve-a-markdown-document.html#extended&quot;&gt;Continue reading &quot;Howto serve a markdown document&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 02 Aug 2017 06:08:00 +0000</pubDate>
    <guid isPermaLink="false">archives/122-guid.html</guid>
    <category>allmark</category>
<category>docker</category>
<category>markdown</category>

</item>
<item>
    <title>Vagrant Share and Ngrok</title>
    <link>archives/121-Vagrant-Share-and-Ngrok.html</link>
            <category>Web Tech</category>
    
    <comments>archives/121-Vagrant-Share-and-Ngrok.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=121</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=121</wfw:commentRss>
    

    <author>nospam@example.com (David Rolston)</author>
    <content:encoded>
    As more and more people utilize virtualization for development the need to easily and securely share your work in progress with team members or clients can be a great boost to productivity.  Such a tool is &lt;em&gt;also not bad when your kid wants to let his friend access that local minecraft server you are running on your workstation for him&lt;/em&gt;, not that I would know anything about that.  There are several utilities that are available, and now a plug and play option that is available if you use vagrant.&lt;br /&gt;
&lt;br /&gt;
In recent versions of Vagrant, Hashcorp has added a plugin called Vagrant-share.  You can see if its installed by running  &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;vagrant&amp;#160;plugin&amp;#160;list&lt;/div&gt;
&lt;br /&gt;
And you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;vagrant-share&amp;#160;&amp;#40;1.1.9,&amp;#160;system&amp;#41;&lt;/div&gt;
&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;archives/121-Vagrant-Share-and-Ngrok.html#extended&quot;&gt;Continue reading &quot;Vagrant Share and Ngrok&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 17 Jul 2017 06:44:00 +0000</pubDate>
    <guid isPermaLink="false">archives/121-guid.html</guid>
    <category>ngrok</category>
<category>vagrant</category>
<category>vagrant share</category>

</item>
<item>
    <title>Putting Apache on a diet - how to get a lean configuration, Part 1</title>
    <link>archives/114-Putting-Apache-on-a-diet-how-to-get-a-lean-configuration,-Part-1.html</link>
            <category>Web Tech</category>
    
    <comments>archives/114-Putting-Apache-on-a-diet-how-to-get-a-lean-configuration,-Part-1.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=114</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=114</wfw:commentRss>
    

    <author>nospam@example.com (David Rolston)</author>
    <content:encoded>
    In this article I&#039;m going to go over some of the details of how Apache works, and uses memory.  As you will see, the apache processes that serve requests will grow to include the amount of memory they need for a particular request, and they will still be using that memory, even when they are serving something simple like a .css file or an image.&lt;br /&gt;
&lt;br /&gt;
For this reason, the first limitation you are likely to encounter running Apache is a limitation on memory.  I will explore this topic and show you how you can do the same.&lt;br /&gt;
&lt;br /&gt;
The first thing need to determine about Apache is what mode it is running in.  If your plan is to use Apache with php via mod_apache, then the prevailing wisdom for many years has been that there may be library extensions in PHP that are not thread safe.  For this reason, people have tended to avoid running Apache as a threaded server, for fear that scripts may randomly die producing the dreaded 500 Internal server error pages we all know and love.  &lt;br /&gt;
&lt;br /&gt;
This fear may be overstated depending on the nature of your php code, but the defaults for apache packages I&#039;ve seen, seem almost always to be using the prefork worker.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Prefork vs Worker? &lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
So the first question you might be asking yourself is, which mode is my current apache server running in?  There is a simple safe way to determine this -- run the httpd(apache) program with a specific command line switch.  There are programs like which and whereis that might help you locate it, if you don&#039;t know where it is.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;whereis&lt;/span&gt; httpd&lt;br /&gt;&amp;#160;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;

&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;httpd&amp;#58;&amp;#160;/usr/sbin/httpd.worker&amp;#160;/usr/sbin/httpd&amp;#160;/usr/sbin/httpd.event&amp;#160;/etc/httpd&amp;#160;/usr/share/man/man8/httpd.8.gz&lt;/div&gt;

&lt;br /&gt;
So let&#039;s run the /usr/sbin/httpd with the -h for help and see what happens:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;archives/114-Putting-Apache-on-a-diet-how-to-get-a-lean-configuration,-Part-1.html#extended&quot;&gt;Continue reading &quot;Putting Apache on a diet - how to get a lean configuration, Part 1&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 16 Jul 2017 04:04:00 +0000</pubDate>
    <guid isPermaLink="false">archives/114-guid.html</guid>
    <category>apache</category>
<category>pmap</category>
<category>prefork</category>
<category>webserver</category>

</item>
<item>
    <title>PHP Mysql support:  mysql or mysqlnd?</title>
    <link>archives/119-PHP-Mysql-support-mysql-or-mysqlnd.html</link>
            <category>Web Tech</category>
    
    <comments>archives/119-PHP-Mysql-support-mysql-or-mysqlnd.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=119</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=119</wfw:commentRss>
    

    <author>nospam@example.com (David Rolston)</author>
    <content:encoded>
    So you are installing a modern version of php using one of the alternative repositories, and suddenly you are confronted with a confusing choice.  You want support for mysql (mysqli or PDO-mysql)  in your php program.  But which one to choose?  &lt;br /&gt;
&lt;br /&gt;
First off, &lt;a href=&quot;http://php.net/pdo&quot; title=&quot;PDO&quot;&gt;you should probably be using PDO&lt;/a&gt;.  It&#039;s just a cleaner database interface when compared to mysqli, and also tends to be the supported option if you&#039;re using an ORM like Doctrine2.  &lt;br /&gt;
&lt;br /&gt;
But you probably have found that installing the PDO package doesn&#039;t get you support for MySQL.  &lt;br /&gt;
&lt;br /&gt;
So what are these 2 packages?  Well let&#039;s see what yum under Centos shows us, once we&#039;ve setup webtatic as a repo:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;br /&gt;&amp;#160;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;*&lt;/span&gt; webtatic: us-east.repo.webtatic.com&lt;br /&gt;============================================== &lt;br /&gt;php56w-mysql.x86_64 : A module &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;for&lt;/span&gt; PHP applications that use MySQL databases&lt;br /&gt;php56w-mysqlnd.x86_64 : A module &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;for&lt;/span&gt; PHP applications that use MySQL databases&lt;br /&gt;&amp;#160;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
In short, the mysql extension aka the mysql library is to quote Oracle/mysql  &lt;blockquote&gt;... a general-purpose client library&lt;/blockquote&gt; named libmysql.&lt;br /&gt;
&lt;br /&gt;
This was the original php approach to supporting mysql.  MySQL provided a client api library, and using that c library, a php extension was created that depends upon libmysql implementing the famous mysql_ functions that allowed php to talk to mysql.  &lt;br /&gt;
&lt;br /&gt;
The mysqlnd package (where nd stands for &quot;native driver&quot;)  is the fruit of a project to make mysql work optimally in the php language.  Again to quote the mysql site:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;The mysqlnd library is highly optimized for and tightly integrated into PHP. The MySQL Client Library cannot offer the same optimizations because it is a general-purpose client library.&lt;br /&gt;
&lt;br /&gt;
The mysqlnd library is using PHP internal C infrastructure for seamless integration into PHP. In addition, it is using PHP memory management, PHP Streams (I/O abstraction) and PHP string handling routines. The use of PHP memory management by mysqlnd allows, for example, memory savings by using read-only variables (copy on write) and makes mysqlnd apply to PHP memory limits.&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
On top of these benefits are &lt;a href=&quot;https://dev.mysql.com/downloads/connector/php-mysqlnd/&quot; title=&quot;MySQLND enhancements&quot;&gt;a number of interesting enhancements and support for plugins&lt;/a&gt; that might be of specific interest to you as a developer or sysadmin.  &lt;br /&gt;
&lt;br /&gt;
In general nothing should break in your code as the api should work the same under mysqlnd as it did with the old mysql library.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br /&gt;
&lt;h4&gt;In summary, you want to use &lt;em&gt;mysqlnd&lt;/em&gt; now and in the future.&lt;/h4&gt;&lt;br /&gt;
&lt;hr /&gt; 
    </content:encoded>

    <pubDate>Sat, 01 Jul 2017 08:05:47 +0000</pubDate>
    <guid isPermaLink="false">archives/119-guid.html</guid>
    <category>centos</category>
<category>linux</category>
<category>mysql</category>
<category>mysqlnd</category>
<category>php</category>
<category>yum</category>

</item>
<item>
    <title>More git prompt - Does it work on a Mac?</title>
    <link>archives/118-More-git-prompt-Does-it-work-on-a-Mac.html</link>
            <category>Linux</category>
    
    <comments>archives/118-More-git-prompt-Does-it-work-on-a-Mac.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=118</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=118</wfw:commentRss>
    

    <author>nospam@example.com (David Rolston)</author>
    <content:encoded>
    So a few years ago I &lt;a href=&quot;http://www.gizmola.com/blog/archives/113-Showing-your-git-branch-in-your-shell-prompt.html&quot; title=&quot;Custom Git aware shell prompt&quot;&gt;wrote this article&lt;/a&gt; about setting a custom shell prompt that is &quot;Git aware&quot; and shows you your current branch.&lt;br /&gt;
&lt;br /&gt;
The question came up as to whether or not this works on a Mac under OS/X.  &lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;I have always advocated avoiding things like WAMP or MAMP because I don&#039;t like a bunch of services running on my workstation.  I prefer using virtualization to run a *nix distro matching whatever target deployment server I&#039;m going to run under.  VMWare, Virtualbox etc. along with the popularity of Vagrant and Docker have tremendous advantages over something like MAMP in my experience.  You start the environment when you need it, and stop it when you don&#039;t, and there&#039;s no problem having 5 different VM&#039;s with different stacks and php versions.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
For this reason, I have never been all that concerned with setting a git aware shell prompt up on my macbook. But as it&#039;s a *nix-like operating system, it has the basics you need to make the shell prompt code work, albeit with 2 required tweaks.&lt;br /&gt;
&lt;br /&gt;
First you have to edit the /etc/profile script so that it will look for and read scripts in an /etc/profile.d directory.  sudo vi, nano or whatever you want to edit the /etc/profile script and add this at the bottom:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;sh&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;etc&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;profile.d&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/*&lt;/span&gt;.sh ; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;do&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-r&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;&lt;span style=&quot;color: #007800;&quot;&gt;$sh&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; . &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;&lt;span style=&quot;color: #007800;&quot;&gt;$sh&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;done&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;unset&lt;/span&gt; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;sh&lt;/span&gt;&lt;br /&gt;&amp;#160;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
This is simple bourne shell code to read in scripts in the /etc/profile.d directory when you login to a shell.  It is a system-wide script, so when you change this, you change it for all users on the system.&lt;br /&gt;
&lt;br /&gt;
Now you just have to create the /etc/profile.d directory.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;sudo&lt;/span&gt; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;mkdir&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;etc&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;profile.d&lt;br /&gt;&amp;#160;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Once this is done, you can use the same simple method &lt;a href=&quot;http://www.gizmola.com/blog/archives/113-Showing-your-git-branch-in-your-shell-prompt.html&quot; title=&quot;Showing your git branch in your shell prompt&quot;&gt;described in the original article&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Thu, 16 Jun 2016 20:41:09 +0000</pubDate>
    <guid isPermaLink="false">archives/118-guid.html</guid>
    <category>git</category>
<category>mac</category>
<category>osx</category>

</item>
<item>
    <title>Fixing PHP short open tags</title>
    <link>archives/117-Fixing-PHP-short-open-tags.html</link>
            <category>Web Tech</category>
    
    <comments>archives/117-Fixing-PHP-short-open-tags.html#comments</comments>
    <wfw:comment>wfwcomment.php?cid=117</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>rss.php?version=2.0&amp;type=comments&amp;cid=117</wfw:commentRss>
    

    <author>nospam@example.com (David Rolston)</author>
    <content:encoded>
    &lt;!-- s9ymdb:258 --&gt;&lt;img class=&quot;serendipity_image_left&quot; width=&quot;245&quot; height=&quot;379&quot;  src=&quot;uploads/images/findreplace.jpg&quot; title=&quot;Find and replace in Eclipse PDT&quot; alt=&quot;Find and replace in Eclipse PDT&quot; /&gt;A PHP block is started with the tag &lt;strong&gt;&amp;lt;?php&lt;/strong&gt;.  However, there is also an alternative known as a &quot;&lt;em&gt;short open tag&quot;&lt;/em&gt;  which is to only use &lt;strong&gt;&amp;lt;?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
The problem with using short open tags is that they conflict with xml parsers and for that reason, support for short open tags has to be enabled.  By default, it&#039;s disabled and enabling deprecated features may be impossible if hosts don&#039;t allow it. &lt;br /&gt;
&lt;br /&gt;
Every so often you may come upon a code base that was written using short open tags. &lt;br /&gt;
&lt;br /&gt;
Often people are first confronted with this problem when they have a legacy code base, and either move it to a new server or upgrade php only to find that the site is spewing errors and no longer functional.  In a worse case scenario portions of your php code will be plainly visible to end users due to the fact that the php parser is no longer parsing those blocks and simply returning them as html text.&lt;br /&gt;
&lt;br /&gt;
There are a number of different approaches you can take to solve this problem.  First you can &lt;a href=&quot;http://php.net/manual/en/language.basic-syntax.phptags.php&quot;&gt;turn on the support for short open tags&lt;/a&gt;, but as I mentioned previously, this is not recommended.  &lt;br /&gt;
&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;archives/117-Fixing-PHP-short-open-tags.html#extended&quot;&gt;Continue reading &quot;Fixing PHP short open tags&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 22 Mar 2015 16:47:37 +0000</pubDate>
    <guid isPermaLink="false">archives/117-guid.html</guid>
    <category>eclipse</category>
<category>php</category>
<category>regex</category>
<category>short open tag</category>
<category>short open tags</category>

</item>

</channel>
</rss>
