<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Brandon Checketts</title> <link>http://www.brandonchecketts.com</link> <description>Web Programming, Linux System Administation, and other geeky stuff</description> <lastBuildDate>Sat, 12 May 2012 19:21:21 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.2</generator> <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/BrandonChecketts" /><feedburner:info uri="brandonchecketts" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>MySQL Error: Client requested master to start replication from impossible position</title><link>http://feedproxy.google.com/~r/BrandonChecketts/~3/5EWcgozs2BQ/mysql-error-client-requested-master-to-start-replication-from-impossible-position</link> <comments>http://www.brandonchecketts.com/archives/mysql-error-client-requested-master-to-start-replication-from-impossible-position#comments</comments> <pubDate>Sat, 12 May 2012 19:05:19 +0000</pubDate> <dc:creator>Brandon</dc:creator> <category><![CDATA[General]]></category><guid isPermaLink="false">http://www.brandonchecketts.com/?p=514</guid> <description><![CDATA[I&#8217;ve had this error occur when something went terribly wrong on a master server and it had to be rebooted. It appears that the master&#8217;s binary log file was not completely written to the server before it was rebooted. However part of the master log file was transmitted to the slave before that time. The [...]]]></description> <content:encoded><![CDATA[<p>I&#8217;ve had this error occur when something went terribly wrong on a master server and it had to be rebooted.   It appears that the master&#8217;s binary log file was not completely written to the server before it was rebooted.  However part of the master log file was transmitted to the slave before that time.     The error is coming from the slave server when it tried to reconnect to the master.  It is trying to connect to the master server and start copying the binary log file from a position which the master does not have.</p><p>The <strong>proper</strong> way to fix this error is to completely resync the data from the master and begin replication over again.  However, in many cases, that is impractical, or not worth the hassle, so I was able to fix the problem by setting the slave back to a valid position on the master and then skipping forward over the missing entries.</p><p>First, you need to find out what the last valid position is on the master.  Run &#8216;SHOW SLAVE STATUS&#8217; on the slave to figure out which master log file it was reading when the master crashed.   You&#8217;ll need the value of the <strong>Relay_Master_Log_File</strong> parameter.   Also take note of the <strong>Exec_Master_Log_Pos</strong> value.</p><p>Next, go to the master, and ensure that log file exists in the MySQL data directory.  The file size will probably be less than the Exec_Master_Log_Pos value that the slave had stored.   To find the last valid position in the log file use the <strong>mysqlbinlog</strong> utility.   The command<pre>mysqlbinlog [LOGFILE] |tail -n 100</pre><p> should show the final entries in the binary log.   Find the last line in the file that looks similar to this:</p><pre>
#120512 13:30:44 server id 3  end_log_pos 8796393       Query   thread_id=138884124     exec_time=0     error_code=0
</pre><p>The number after <strong>end_log_pos</strong> is the last valid entry that the master has available.   The difference between the master log position that the slave had, and this highest one on the master will give you some idea how far ahead the slave got before the master crashed.</p><p>You can now go back to the slave and issue the commands:</p><pre>
STOP SLAVE;
CHANGE MASTER TO MASTER_LOG_POS=8796393;
START SLAVE;
</pre><p>This will tell the slave to try to start from that valid position, and continue from there.</p><p>There is a strong possibility that you&#8217;ll run into some duplicate key errors if the slave was very far ahead of where the master&#8217;s log ended.  In that case, you can issue this command to bypass those one at a time (or more if you want to skip more than one)</p><pre>
STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
START SLAVE;
</pre><p><strong>!! Note that if you have to do this, then your data between the master and slave is almost certainly inconsistent !!    Be sure to understand your data to make sure that this is something you can live with.</strong></p> <img src="http://feeds.feedburner.com/~r/BrandonChecketts/~4/5EWcgozs2BQ" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.brandonchecketts.com/archives/mysql-error-client-requested-master-to-start-replication-from-impossible-position/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://www.brandonchecketts.com/archives/mysql-error-client-requested-master-to-start-replication-from-impossible-position</feedburner:origLink></item> <item><title>Fix For Amazon API Error: Your request is missing required parameters. Required parameters include AssociateTag.</title><link>http://feedproxy.google.com/~r/BrandonChecketts/~3/za-v01y2VQ0/fix-for-amazon-api-error-your-request-is-missing-required-parameters-required-parameters-include-associatetag</link> <comments>http://www.brandonchecketts.com/archives/fix-for-amazon-api-error-your-request-is-missing-required-parameters-required-parameters-include-associatetag#comments</comments> <pubDate>Thu, 03 Nov 2011 21:09:41 +0000</pubDate> <dc:creator>Brandon</dc:creator> <category><![CDATA[Amazon APIs]]></category> <category><![CDATA[PHP]]></category><guid isPermaLink="false">http://www.brandonchecketts.com/?p=509</guid> <description><![CDATA[Users of Amazon&#8217;s Product Advertising API will begin seeing the following error as of about November 1st: Your request is missing required parameters. Required parameters include AssociateTag. This is due to changing requirements to the Product Advertising API. The AssociateTag parameter is now a required and validated field. You can see in the list of [...]]]></description> <content:encoded><![CDATA[<p>Users of Amazon&#8217;s Product Advertising API will begin seeing the following error as of about November 1st:</p><p>Your request is missing required parameters. Required parameters include AssociateTag.</p><p>This is due to changing requirements to the <a
href="https://affiliate-program.amazon.com/gp/advertising/api/detail/main.html">Product Advertising API</a>.  The AssociateTag parameter is now a required and validated field.  You can see in the <a
href="https://affiliate-program.amazon.com/gp/advertising/api/detail/api-changes.html">list of changes</a> that it is the first thing mentioned.</p><p>These changes are made to keep the Product Advertising API in line with its purpose of driving affiliate sales through the Amazon.com website.   The AssociateTag is a tag generated from your <a
href="https://affiliate-program.amazon.com/gp/associates/network/main.html">Amazon Associates account</a>.</p><p>So far, it looks like the tag is not entirely validated to your account.  I&#8217;ve had luck using fictitious tags such as <strong>aztag-20</strong>.</p> <img src="http://feeds.feedburner.com/~r/BrandonChecketts/~4/za-v01y2VQ0" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.brandonchecketts.com/archives/fix-for-amazon-api-error-your-request-is-missing-required-parameters-required-parameters-include-associatetag/feed</wfw:commentRss> <slash:comments>2</slash:comments> <feedburner:origLink>http://www.brandonchecketts.com/archives/fix-for-amazon-api-error-your-request-is-missing-required-parameters-required-parameters-include-associatetag</feedburner:origLink></item> <item><title>Upgrading Disks in a Software Raid System</title><link>http://feedproxy.google.com/~r/BrandonChecketts/~3/Q4N36sC6erM/upgrading-disks-in-a-software-raid-system</link> <comments>http://www.brandonchecketts.com/archives/upgrading-disks-in-a-software-raid-system#comments</comments> <pubDate>Mon, 29 Aug 2011 01:04:07 +0000</pubDate> <dc:creator>Brandon</dc:creator> <category><![CDATA[General]]></category> <category><![CDATA[Linux System Administration]]></category><guid isPermaLink="false">http://www.brandonchecketts.com/?p=498</guid> <description><![CDATA[I have a system at home with a pair of 640 GB drives, that are getting full. The drives are configured in a Linux Software RAID1 array. Replacing those drives with a pair of 2 TB drives is a pretty easy (although lengthy process). First, we need to verify that our RAID system is running [...]]]></description> <content:encoded><![CDATA[<p>I have a system at home with a pair of 640 GB drives, that are getting full.  The drives are configured in a Linux Software RAID1 array.   Replacing those drives with a pair of 2 TB drives is a pretty easy (although lengthy process).</p><p>First, we need to verify that our RAID system is running correctly.  Take a look at /proc/mdstat to verify that both drives are online:</p><pre>
root@host:~# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sdb3[1] sda3[0]
      622339200 blocks [2/2] [UU]

md0 : active raid1 sdb1[1] sda1[0]
      192640 blocks [2/2] [UU]
</pre><p>After verifying that the system is running, I powered the machine off and removed the second hard drive and replaced it with the new drive.  Upon starting it back up, Ubuntu noticed that the RAID system was running in degraded mode and I had to hit yes at the console to have it continue booting.</p><p>Once the machine was running, I logged in and created a similar partition structure on the new drive using the fdisk command.  On my system, I have a small 200 partition for /boot as /dev/sdb1, a 1 GB swap partition, and then the rest of the drive is one big block for the root partition.   The I copied the partition table that was on /dev/sda, but for the final partition, made it take up the entire rest of the drive.  Make sure to set the first partition as bootable.  The partitions on /dev/sdb now look like this:</p><pre>
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1          24      192748+  fd  Linux raid autodetect
/dev/sdb2              25         146      979965   82  Linux swap / Solaris
/dev/sdb3             147      243201  1952339287+  fd  Linux raid autodetect
</pre><p>After the partitions match up, I can now add the partitions on /dev/sdb into the RAID array</p><pre>
root@host:~# mdadm --manage /dev/md0 --add /dev/sdb1
root@host:~# mdadm --manage /dev/md1 --add /dev/sdb3
</pre><p>And watch the status of the rebuild using</p><pre>watch cat /proc/mdstat</pre><p>After that was done, I installed grub onto the new /dev/sdb</p><pre>
grub /dev/sdb
root (hd1)
setup (hd1,0)
</pre><p>Finally, reboot once and make sure that everything works as expected.</p><p>The system is now running with one old drive and one new drive.    The next step is to perform the same steps with removing the other old drive and rebuilding and re-adding it to the raid system.   The steps are the same as above, except performing them with /dev/sda.  I also had to change my BIOS to boot from the second drive.</p><p>Once both drives are installed and working with the RAID array, the final part of the process is to increase the size of the file system to the full size of our new drives.   I first had to disable the EXT3 file system journal.   This was necessary so that the online resize doesn&#8217;t run out of memory.</p><p>Edit /etc/fstab and change the file system type to ext2, and the arguments to include &#8220;noload&#8221; which will disable the file system journal.  My /etc/fstab looks like this:</p><pre>
# /etc/fstab: static file system information.
#
# &lt;file system&gt; &lt;mount point&gt;   &lt;type&gt;  &lt;options&gt;       &lt;dump&gt;  &lt;pass&gt;
proc            /proc           proc    defaults        0       0
# /dev/md1
UUID=b165f4be-a705-4479-b830-b0c6ee77b730 /               <strong>ext2</strong>    <strong>noload</strong>,relatime,errors=remount-ro 0       1
# /dev/md0
UUID=30430fe0-919d-4ea6-b3c2-5e3564344917 /boot           ext3    relatime        0       2
# /dev/sda5
UUID=94b03944-d215-4882-b0e0-dab3a8c50480 none            swap    sw              0       0
# /dev/sdb5
UUID=ebb381ae-e1bb-4918-94ec-c26e388bb539 none            swap    sw              0       0
</pre><p>You then have to run `mkinitramfs` to rebuild the initramfs file to include the desired change to the mount options</p><pre>
root@host:~# mkinitramfs -o /boot/initrd.img-2.6.31-20-generic 2.6.31-20-generic
</pre><p>Reboot to have the system running with journaling disabled on the root partition.  Finally, you can actually increase the RAID device to the full size of the device:</p><pre>
root@host:~# mdadm --grow /dev/md3 --size=max
</pre><p>And then resize the file system:</p><pre>
root@host:~# resize2fs /dev/md1
resize2fs 1.41.9 (22-Aug-2009)
Filesystem at /dev/md1 is mounted on /; on-line resizing required
old desc_blocks = 38, new_desc_blocks = 117
Performing an on-line resize of /dev/md1 to 488084800 (4k) blocks.
</pre><p>The system is now up and running with larger drives <img
src='http://www.brandonchecketts.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .   Change the /etc/fstab, rebuild the initramfs, and reboot one more time to re-enable journaling and be running officially.</p> <img src="http://feeds.feedburner.com/~r/BrandonChecketts/~4/Q4N36sC6erM" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.brandonchecketts.com/archives/upgrading-disks-in-a-software-raid-system/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://www.brandonchecketts.com/archives/upgrading-disks-in-a-software-raid-system</feedburner:origLink></item> <item><title>Quick Fix for Dovecot’s “save failed to INBOX: Timeout while waiting for lock”</title><link>http://feedproxy.google.com/~r/BrandonChecketts/~3/ZHyvkmQQnfo/quick-fix-for-dovecots-save-failed-to-inbox-timeout-while-waiting-for-lock</link> <comments>http://www.brandonchecketts.com/archives/quick-fix-for-dovecots-save-failed-to-inbox-timeout-while-waiting-for-lock#comments</comments> <pubDate>Thu, 14 Jul 2011 04:27:56 +0000</pubDate> <dc:creator>Brandon</dc:creator> <category><![CDATA[Mail]]></category><guid isPermaLink="false">http://www.brandonchecketts.com/?p=496</guid> <description><![CDATA[I had a mail server lock up and die on me tonight. The data center replaced some hardware in order to get it to power back up. Everything started up fine, but I was unable to retrieve my own email. My mail client was complaining about timeouts on a single account. In looking at the [...]]]></description> <content:encoded><![CDATA[<p>I had a mail server lock up and die on me tonight.  The data center replaced some hardware in order to get it to power back up.   Everything started up fine, but I was unable to retrieve my own email.  My mail client was complaining about timeouts on a single account.  In looking at the log, I found some lines similar to these in the dovecot mail logs:</p><pre>
Jul 13 04:19:09 secure deliver(user@domain.com): msgid=&lt;20110713105301.E4C2C3293DC@myserver.com>: save failed to INBOX: Timeout while waiting for lock
Jul 13 04:19:09 secure deliver(user@domain.com): msgid=&lt;20110713105702.817483293E5@myserver.com>: save failed to INBOX: Timeout while waiting for lock
Jul 13 04:19:09 secure deliver(user@domain.com): msgid=&lt;20110713105802.3F68E3293E7@myserver.com>: save failed to INBOX: Timeout while waiting for lock
Jul 13 04:19:09 secure deliver(user@domain.com): msgid=&lt;20110713105402.B5DBA3293DE@myserver.com>: save failed to INBOX: Timeout while waiting for lock
Jul 13 04:19:09 secure deliver(user@domain.com): msgid=&lt;20110713102202.6045E3293A6@myserver.com>: save failed to INBOX: Timeout while waiting for lock
</pre><p>Googling the error message didn&#8217;t find any quick results, so I attempted a more brute-force method. Inside the user&#8217;s maildir, I just moved some dovecot files out of the way:</p><pre>
[root@host /vmail/domain/user/]# mv dovecot-uidlist.lock dovecot.index dovecot.index.cache dovecot.index.log /tmp/badfiles
</pre><p>After moving those files out of the way, I restarted dovecot with<pre>/etc/init.d/dovecot restart</pre><p> and my client was able to connect without problems.</p> <img src="http://feeds.feedburner.com/~r/BrandonChecketts/~4/ZHyvkmQQnfo" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.brandonchecketts.com/archives/quick-fix-for-dovecots-save-failed-to-inbox-timeout-while-waiting-for-lock/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://www.brandonchecketts.com/archives/quick-fix-for-dovecots-save-failed-to-inbox-timeout-while-waiting-for-lock</feedburner:origLink></item> <item><title>Map of Amazon Fulfillment Centers</title><link>http://feedproxy.google.com/~r/BrandonChecketts/~3/I7ULpWQkmKg/map-of-amazon-fulfillment-centers</link> <comments>http://www.brandonchecketts.com/archives/map-of-amazon-fulfillment-centers#comments</comments> <pubDate>Thu, 14 Jul 2011 03:57:52 +0000</pubDate> <dc:creator>Brandon</dc:creator> <category><![CDATA[General]]></category><guid isPermaLink="false">http://www.brandonchecketts.com/?p=493</guid> <description><![CDATA[I was doing some research into Amazon&#8217;s fulfillment centers today and had trouble finding them. After finding their addresses, I put them all on a Google Map here Amazon Fulfillment Centers View Amazon Fulfillment Centers in a larger map]]></description> <content:encoded><![CDATA[<p>I was doing some research into Amazon&#8217;s fulfillment centers today and had trouble finding them.   After finding their addresses, I put them all on a Google Map here</p><p><a
href="http://maps.google.com/maps/ms?ie=UTF8&#038;authuser=0&#038;hl=en&#038;oe=UTF8&#038;msa=0&#038;msid=214321102161815585315.0004a7fee1b3e22765024">Amazon Fulfillment Centers</a></p><p><iframe
width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps/ms?msa=0&amp;msid=214321102161815585315.0004a7fee1b3e22765024&amp;ie=UTF8&amp;t=h&amp;ll=36.932337,-97.415709&amp;spn=7.982437,43.593644&amp;output=embed"></iframe><br
/><small>View <a
href="http://maps.google.com/maps/ms?msa=0&amp;msid=214321102161815585315.0004a7fee1b3e22765024&amp;ie=UTF8&amp;t=h&amp;ll=36.932337,-97.415709&amp;spn=7.982437,43.593644&amp;source=embed" style="color:#0000FF;text-align:left">Amazon Fulfillment Centers</a> in a larger map</small></p> <img src="http://feeds.feedburner.com/~r/BrandonChecketts/~4/I7ULpWQkmKg" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.brandonchecketts.com/archives/map-of-amazon-fulfillment-centers/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://www.brandonchecketts.com/archives/map-of-amazon-fulfillment-centers</feedburner:origLink></item> <item><title>APISigning Now Works with Amazon Simple Email Service (SES)</title><link>http://feedproxy.google.com/~r/BrandonChecketts/~3/KKZCP9rKMCQ/apisigning-now-works-with-amazon-simple-email-service-ses</link> <comments>http://www.brandonchecketts.com/archives/apisigning-now-works-with-amazon-simple-email-service-ses#comments</comments> <pubDate>Tue, 26 Apr 2011 20:15:58 +0000</pubDate> <dc:creator>Brandon</dc:creator> <category><![CDATA[Encryption]]></category> <category><![CDATA[General]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Websites]]></category><guid isPermaLink="false">http://www.brandonchecketts.com/?p=490</guid> <description><![CDATA[APISigning.com has been signing Amazon Product Advertising requests for a couple of years now. Amazon recently announced their Simple Email Service that makes it easy to send emails via an API. The SES API requires that requests be authenticated using some cryptographic functions that are not easily available on all platforms or programming languages. In [...]]]></description> <content:encoded><![CDATA[<p>APISigning.com has been signing Amazon Product Advertising requests for a couple of years now.  Amazon recently announced their <a
href="http://aws.amazon.com/ses/">Simple Email Service</a> that makes it easy to send emails via an API.  The SES API requires that requests be authenticated using some cryptographic functions that are not easily available on all platforms or programming languages.   In those cases, developers can use the <a
href="http://apisigning.com/ses-usage.html">APISigning SES Service</a> to calculate the correct signature and perform the request on their behalf.</p><p>APISigning has free accounts that effectively allows 10k signing requests each month.  Users who require additional requests can subscribe to a paid account with higher limits.</p> <img src="http://feeds.feedburner.com/~r/BrandonChecketts/~4/KKZCP9rKMCQ" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.brandonchecketts.com/archives/apisigning-now-works-with-amazon-simple-email-service-ses/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://www.brandonchecketts.com/archives/apisigning-now-works-with-amazon-simple-email-service-ses</feedburner:origLink></item> <item><title>How to shrink a partition with unmovable files in Windows 7</title><link>http://feedproxy.google.com/~r/BrandonChecketts/~3/KC4KKihG76w/how-to-shrink-a-partition-with-unmovable-files-in-windows-7</link> <comments>http://www.brandonchecketts.com/archives/how-to-shrink-a-partition-with-unmovable-files-in-windows-7#comments</comments> <pubDate>Sun, 03 Apr 2011 22:56:39 +0000</pubDate> <dc:creator>Brandon</dc:creator> <category><![CDATA[General]]></category><guid isPermaLink="false">http://www.brandonchecketts.com/?p=488</guid> <description><![CDATA[For some reason Windows can&#8217;t figure out how to move some files around on disk. When attempting to shrink a volume, it will only allow you to shrink it to where the last immovable file is located. These are some things I found necessary to temporarily get rid of those immovable files so that an [...]]]></description> <content:encoded><![CDATA[<p>For some reason Windows can&#8217;t figure out how to move some files around on disk.   When attempting to shrink a volume, it will only allow you to shrink it to where the last immovable file is located.  These are some things I found necessary to temporarily get rid of those immovable files so that an NTFS volume could be shrunk</p><p>1- Disable System Restore  (Right click on Computer => Properties => System Protection => System Restore)<br
/> 2- Disable Virtual Memory (Right click on Comptuer => Properties => Advanced System Settings => Performance (Settings) => Advanced Tab => Virtual Memory (Change) => No Paging File => Set.<br
/> 3- Run Disk Cleanup to get rid of Thumbnails, Temporary Internet Files, and a bunch of other files that it makes no sense why they are immovable.<br
/> 4- Restart the computer to have #1 and #2 take effect</p><p>Try to shrink the volume again.  If it still is unreasonably large, you will then have to look at Event Viewer to find which file is at the boundary.<br
/> 1- Right click on Computer => Manage => Event Viewer => Windows Logs => Application.<br
/> 2- Click on Filter Current Log, and put &#8217;259&#8242; for the Event ID<br
/> 3- Click on the latest event and look through the detail to find the problematic file.  You can then attempt to delete that file (or set of files) manually.   You may have to restart into safe mode to delete some files</p><p>It took me about 5 loops of doing the above before I was finally able to shrink my volume to the size that I wanted.   After successful, you can then re-enable the features that you want (namely System Restore and Virtual Memory)</p> <img src="http://feeds.feedburner.com/~r/BrandonChecketts/~4/KC4KKihG76w" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.brandonchecketts.com/archives/how-to-shrink-a-partition-with-unmovable-files-in-windows-7/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://www.brandonchecketts.com/archives/how-to-shrink-a-partition-with-unmovable-files-in-windows-7</feedburner:origLink></item> <item><title>KnitMeter.com Has Been Upgraded</title><link>http://feedproxy.google.com/~r/BrandonChecketts/~3/xQC35mbYgKI/knitmeter-com-has-been-upgraded</link> <comments>http://www.brandonchecketts.com/archives/knitmeter-com-has-been-upgraded#comments</comments> <pubDate>Fri, 25 Mar 2011 03:06:47 +0000</pubDate> <dc:creator>Brandon</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Websites]]></category><guid isPermaLink="false">http://www.brandonchecketts.com/?p=485</guid> <description><![CDATA[KnitMeter Has Been Upgraded KnitMeter.com was originally started over four years ago in December of 2007 as a small project that my wife thought would be useful. Since then, the site hasn&#8217;t changed much, but it has managed to grow to thousands of users who have knit nearly 20 thousand miles of yarn. I&#8217;ve received [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://knitmeter.com/images/logo-50x50.png" width="50" height="50" alt="KnitMeter Logo" style="float:left;" /></p><h1 style="padding-left:80px;">KnitMeter Has Been Upgraded</h1><p><a
href="http://knitmeter.com/">KnitMeter.com</a> was originally started over four years ago in December of 2007 as a small project that my wife thought would be useful.  Since then, the site hasn&#8217;t changed much, but it has managed to grow to thousands of users who have knit nearly 20 thousand miles of yarn.  I&#8217;ve received numerous requests and have finally gotten a chance to impliment what many of you have been requesting for a while now.  New features on the site include:</p><ul
class="dots"><li>Users can now add entries for <strong>knitting</strong>, <strong>crocheting</strong>, and <strong>spinning</strong></li><li>Completely new and modernized design and logo</li><li>You can customize your widgets directly on KnitMeter.com rather than editing the code for the widget on your website</li><li>The website and the <a
href="http://apps.facebook.com/knitmeter/">KnitMeter Facebook Application</a> are now completely integrated.  Entries added in one will be displayed and counted in the other</li><li>The Facebook application can (again) publish your entries to your news feed, but only when you tell it to</li><li>You can chose to make your profile public, which will display some of the most recent entries on the KnitMeter home page with a link to your website</li><li>Added several new timeframes, including specific calendar years  (ie: I knit 4.3 miles in 2010)</li><li>Numerous technical changes that should make the site faster to use and make it easier to make future changes</li></ul><p>These new features have been rolled out over the past couple of weeks.  I appreciate the patience of those who have dealt with a few bugs over that time, and I believe that everything should be pretty bug-free now.  I encourage you to check out the new site and to start adding up the mileage for your own projects.   The next major milestone will be when we have gone through enough yarn to go around the earth (about 24,901 miles).  At the present rate, we should hit that figure in about 3-5 months.</p><p>Happy Knitting, Crocheting, and Spinning,<br
/> Brandon Checketts<br
/> <a
href="http://knitmeter.com/">KnitMeter.com</a></p> <img src="http://feeds.feedburner.com/~r/BrandonChecketts/~4/xQC35mbYgKI" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.brandonchecketts.com/archives/knitmeter-com-has-been-upgraded/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://www.brandonchecketts.com/archives/knitmeter-com-has-been-upgraded</feedburner:origLink></item> <item><title>Troubleshooting OpenVZ Out of Memory and Could Not Allocate Memory Errors</title><link>http://feedproxy.google.com/~r/BrandonChecketts/~3/rVAd6CNUgWs/troubleshooting-openvz-out-of-memory-and-could-not-allocate-memory-errors</link> <comments>http://www.brandonchecketts.com/archives/troubleshooting-openvz-out-of-memory-and-could-not-allocate-memory-errors#comments</comments> <pubDate>Fri, 18 Feb 2011 19:20:25 +0000</pubDate> <dc:creator>Brandon</dc:creator> <category><![CDATA[General]]></category> <category><![CDATA[Linux System Administration]]></category><guid isPermaLink="false">http://www.brandonchecketts.com/?p=481</guid> <description><![CDATA[I will sometimes run into an error inside an OpenVZ guest where the system complains about running out of memory. This is usually seen as a message containing &#8220;Cannot allocate memory&#8221;. It may even occur when trying to enter into the container [root@host ~]# vzctl enter 908 entered into CT 908 -bash: /root/.bash_profile: Cannot allocate [...]]]></description> <content:encoded><![CDATA[<p>I will sometimes run into an error inside an OpenVZ guest where the system complains about running out of memory.  This is usually seen as a message containing &#8220;Cannot allocate memory&#8221;.   It may even occur when trying to enter into the container</p><pre>
[root@host ~]# vzctl enter 908
entered into CT 908
-bash: /root/.bash_profile: Cannot allocate memory
</pre><p>This particular error can be difficult to troubleshoot because OpenVZ has so many different limits.  The &#8220;Cannot allocate Memory&#8221; error is a pretty generic error, so Googling it doesn&#8217;t necessarily yield any useful results.</p><p>I&#8217;ve found that the best way to track down the source of the problem is to examine the /proc/user_beancounter statistics on the host server.   The far right column is labeled &#8216;failcnt&#8217; and is a simple counter for the number of times that particular resource has been exhausted.   Any non-zero numbers in that column may indicate a problem.   In this example, you can see that the dcachesize parameter is too small and should be increased</p><pre>
[root@host ~]# cat /proc/user_beancounters
Version: 2.5
       uid  resource                     held              maxheld              barrier                limit              failcnt
      908:  kmemsize                  5170890              5776435             43118100             44370492                    0
            lockedpages                     0                    0                  256                  256                    0
            privvmpages                 53561                55089              1048576              1048576                    0
            shmpages                        2                    2                21504                21504                    0
            dummy                           0                    0                    0                    0                    0
            numproc                        30                   38                 2000                 2000                    0
            physpages                    6136                 7392                    0  9223372036854775807                    0
            vmguarpages                     0                    0                65536                65536                    0
            oomguarpages                 6136                 7392                26112  9223372036854775807                    0
            numtcpsock                      8                    8                  360                  360                    0
            numflock                        5                    6                  380                  420                    0
            numpty                          0                    1                   16                   16                    0
            numsiginfo                      0                    2                  256                  256                    0
            tcpsndbuf                  140032                    0             10321920             16220160                    0
            tcprcvbuf                  131072                    0              1720320              2703360                    0
            othersockbuf               151320               156864              4504320             16777216                    0
            dgramrcvbuf                     0                 8472               262144               262144                    0
            numothersock                  107                  109                 5000                 5000                    0
            dcachesize                3408570              3413265              3409920              3624960                   81
            numfile                       724                  957                18624                18624                    0
            dummy                           0                    0                    0                    0                    0
            dummy                           0                    0                    0                    0                    0
            dummy                           0                    0                    0                    0                    0
            numiptent                      10                   10                  128                  128                    0
</pre><p>You can do a little investigation to see what each particular limit does.  I will usually not dig too deep, but just double the value and try again.   You can set a new value using the vzctl command like this:</p><pre>
[root@host ~] vzctl set 908 --dcachesize=6819840:7249920 --save
</pre><img src="http://feeds.feedburner.com/~r/BrandonChecketts/~4/rVAd6CNUgWs" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.brandonchecketts.com/archives/troubleshooting-openvz-out-of-memory-and-could-not-allocate-memory-errors/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://www.brandonchecketts.com/archives/troubleshooting-openvz-out-of-memory-and-could-not-allocate-memory-errors</feedburner:origLink></item> <item><title>Website Performance: Tables Versus CSS</title><link>http://feedproxy.google.com/~r/BrandonChecketts/~3/sD-MK3mem_8/website-performance-tables-versus-css</link> <comments>http://www.brandonchecketts.com/archives/website-performance-tables-versus-css#comments</comments> <pubDate>Sat, 16 Oct 2010 21:00:18 +0000</pubDate> <dc:creator>Brandon</dc:creator> <category><![CDATA[General]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Website Performance]]></category> <category><![CDATA[Websites]]></category><guid isPermaLink="false">http://www.brandonchecketts.com/?p=478</guid> <description><![CDATA[Most website designers have been using CSS for page layout for several years now, but I occasionally see some websites that continue to use HTML tables for layout. As I&#8217;ve been focusing on website performance lately, I&#8217;ve found some references that modern browsers render sites using tables for layout slower than they do sites that [...]]]></description> <content:encoded><![CDATA[<p>Most website designers have been using CSS for page layout for several years now, but I occasionally see some websites that continue to use HTML tables for layout.  As I&#8217;ve been focusing on website performance lately, I&#8217;ve found some references that modern browsers render sites using tables for layout slower than they do sites that use CSS.  I decided to investigate and confirmed that there are many possible situations where sites using large tables will appear to load much slower than those using CSS.  I put together two pages to confirm:</p><p><a
href="/book_samples/performance_divs.php" target="_blank">This page uses &lt;div&gt; elements for layout</a><br
/> and<br
/> <a
href="/book_samples/performance_tables.php" target="_blank">This pages uses a large table for layout</a></p><p>On both pages I&#8217;ve added a 5-second sleep near the end of the page to show what might happen if the server was slow, if there were network problems, or any other number of things may have happened.</p><p>Notice that the page created using a table changes a lot after the delay.  I&#8217;ve tried it in Firefox 3 which extends the main (yellow) content section all of the way to the right until it receives the rest of the document, at which point it has to shrink that part to make room for the section on the right.   Internet Explorer behaves even worse.  It leaves a blank white page until after the delay, at which point it draws the whole table.</p><p>By contrast, the page created with CSS positioning shows all of the content above the delay and has it in the correct position.  When the rest of the document is sent it just fills in the appropriate content, but doesn&#8217;t have to re-arrange anything on the page.</p> <img src="http://feeds.feedburner.com/~r/BrandonChecketts/~4/sD-MK3mem_8" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.brandonchecketts.com/archives/website-performance-tables-versus-css/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://www.brandonchecketts.com/archives/website-performance-tables-versus-css</feedburner:origLink></item> </channel> </rss><!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk
Database Caching 8/13 queries in 0.832 seconds using disk

Served from: www.brandonchecketts.com @ 2012-05-16 08:53:48 -->

