<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	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/"
	>

<channel>
	<title>Sami Elkady</title>
	<atom:link href="https://www.samielkady.com/feed" rel="self" type="application/rss+xml" />
	<link>https://www.samielkady.com</link>
	<description>Coding, Software and Tech Reviews</description>
	<lastBuildDate>Fri, 07 Feb 2025 13:33:20 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>
	<item>
		<title>Backup and Restoring MySQL database</title>
		<link>https://www.samielkady.com/backup-restoring-mysql-database</link>
		
		<dc:creator><![CDATA[Sami Elkady]]></dc:creator>
		<pubDate>Fri, 07 Feb 2025 13:33:20 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">http://www.samielkady.com/?p=420</guid>

					<description><![CDATA[Back up From the Command Line (using mysqldump) If you have shell or telnet access to your web server, you can backup your MySQL data by using the mysqldump command. This command connects to the MySQL server and creates an SQL dump file. The dump file contains the SQL statements necessary to re-create the database. Here...]]></description>
										<content:encoded><![CDATA[<p class="articleheader">Back up From the Command Line (using mysqldump)</p>
<p>If you have shell or telnet access to your web server, you can backup your MySQL data by using the mysqldump command. This command connects to the MySQL server and creates an SQL dump file. The dump file contains the SQL statements necessary to re-create the database. Here is the proper syntax:</p>
<div class="plaincode">$ mysqldump &#8211;opt -u [uname] -p[pass] [dbname] > [backupfile.sql]</div>
<ul class="square">
<li><span class="smallfont"><b>[uname]</b></span> Your database username</li>
<li><span class="smallfont"><b>[pass]</b></span> The password for your database (note there is no space between -p and the password)</li>
<li><span class="smallfont"><b>[dbname]</b></span> The name of your database</li>
<li><span class="smallfont"><b>[backupfile.sql]</b></span> The filename for your database backup</li>
<li><span class="smallfont"><b>[&#8211;opt]</b></span> The mysqldump option</li>
</ul>
<p>For example, to backup a database named &#8216;Tutorials&#8217; with the username &#8216;root&#8217; and with no password to a file tut_backup.sql, you should accomplish this command:</p>
<div class="plaincode">$ mysqldump -u root -p Tutorials > tut_backup.sql</div>
<p>This command will backup the &#8216;Tutorials&#8217; database into a file called tut_backup.sql which will contain all the SQL statements needed to re-create the database.</p>
<p>With mysqldump command you can specify certain tables of your database you want to backup. For example, to back up only php_tutorials and asp_tutorials tables from the &#8216;Tutorials&#8217; database accomplish the command below. Each table name has to be separated by space.</p>
<div class="plaincode">$ mysqldump -u root -p Tutorials php_tutorials asp_tutorials > tut_backup.sql</div>
<p>Sometimes it is necessary to back up more that one database at once. In this case you can use the &#8211;database option followed by the list of databases you would like to backup. Each database name has to be separated by space.</p>
<div class="plaincode">$ mysqldump -u root -p &#8211;databases Tutorials Articles Comments > content_backup.sql</div>
<p>If you want to back up all the databases in the server at one time you should use the &#8211;all-databases option. It tells MySQL to dump all the databases it has in storage.</p>
<div class="plaincode">$ mysqldump -u root -p &#8211;all-databases > alldb_backup.sql</div>
<p>The mysqldump command has also some other useful options:</p>
<p><span class="smallfont"><b>&#8211;add-drop-table:</b></span> Tells MySQL to add a DROP TABLE statement before each CREATE TABLE in the dump.</p>
<p><span class="smallfont"><b>&#8211;no-data:</b></span> Dumps only the database structure, not the contents.</p>
<p><span class="smallfont"><b>&#8211;add-locks:</b></span> Adds the LOCK TABLES and UNLOCK TABLES statements you can see in the dump file.</p>
<p>The mysqldump command has advantages and disadvantages. The advantages of using mysqldump are that it is simple to use and it takes care of table locking issues for you. The disadvantage is that the command locks tables. If the size of your tables is very big mysqldump can lock out users for a long period of time.</p>
<p class="articleheader"><a name="compress"></a>Back up your MySQL Database with Compress</p>
<p>If your mysql database is very big, you might want to compress the output of mysqldump. Just use the mysql backup command below and pipe the output to gzip, then you will get the output as gzip file.</p>
<div class="plaincode">$ mysqldump -u [uname] -p[pass] [dbname] | gzip -9 > [backupfile.sql.gz]</div>
<p>If you want to extract the .gz file, use the command below:</p>
<div class="plaincode">$ gunzip [backupfile.sql.gz]</div>
<p class="articleheader"><a name="restore"></a>Restoring your MySQL Database</p>
<p>Above we backup the Tutorials database into tut_backup.sql file. To re-create the Tutorials database you should follow two steps:</p>
<ul class="square">
<li>Create an appropriately named database on the target machine</li>
<li>Load the file using the mysql command:</li>
</ul>
<div class="plaincode">$ mysql -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]</div>
<p>Have a look how you can restore your tut_backup.sql file to the Tutorials database.</p>
<div class="plaincode">$ mysql -u root -p Tutorials < tut_backup.sql</div>
<p>To restore compressed backup files you can do the following:</p>
<div class="plaincode">gunzip < [backupfile.sql.gz] | mysql -u [uname] -p[pass] [dbname]</div>
<p>If you need to restore a database that already exists, you&#8217;ll need to use mysqlimport command. The syntax for mysqlimport is as follows:</p>
<div class="plaincode">mysqlimport -u [uname] -p[pass] [dbname] [backupfile.sql]</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>VMware ESXi step-by-step Installation Guide with Screenshots</title>
		<link>https://www.samielkady.com/vmware-esxi-step-by-step-installation-guide-screenshots</link>
		
		<dc:creator><![CDATA[Sami Elkady]]></dc:creator>
		<pubDate>Fri, 07 Feb 2025 13:33:20 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">http://www.samielkady.com/?p=446</guid>

					<description><![CDATA[As part of the on-going VMware article series, earlier we discussed about VMware virtualization fundamentals, and how to install VMware Server 2. In this article, let us discuss about how to install VMware ESXi. VMware ESXi is free. However, the software comes with a 60 days evaluation mode. You should register on VMware website to...]]></description>
										<content:encoded><![CDATA[<p>As part of the on-going VMware article series, earlier we discussed about <a href="http://www.thegeekstuff.com/2010/06/vmware-server-and-vmware-esxi-introduction/">VMware virtualization fundamentals</a>, and how to <a href="http://www.thegeekstuff.com/2010/06/how-to-install-vmware-server-2-on-linux/">install VMware Server 2</a>.</p>
<p>In this article, let us discuss about how to install VMware ESXi.</p>
<p>VMware ESXi is free. However, the software comes with a 60 days evaluation mode. You should register on VMware website to get your free license key to come out of the evaluation mode. Once the ESXi is installed, you can either user vSphere Client on the Direct Console User Interface to administer the host.<br />
<span id="more-4736"></span><br />
VMware ESXi is based on hypervisor architecture that runs directly on top of a hardware as shown below.<br />
<a href="http://static.thegeekstuff.com/wp-content/uploads/2010/05/vmware-esxi.png"><img fetchpriority="high" decoding="async" class="aligncenter size-medium wp-image-4657" title="VMWare ESXi" src="http://static.thegeekstuff.com/wp-content/uploads/2010/05/vmware-esxi-300x187.png" alt="" width="300" height="187" /></a></p>
<h3>1. Download ESXi server</h3>
<p>Get the software from the <a href="https://www.vmware.com/products/esxi/">VMware ESXi download page</a>.</p>
<p>Following are the various download options available. Select “ESXi 4.0 Update 1 Installable (CD ISO) Binary (.iso)” and burn a CD.</p>
<ul>
<li>ESXi 4.0 Update 1 Installable (CD ISO)</li>
<li>Upgrade package from ESXi Server 3.5 to ESXi Server 4.0 Update 1</li>
<li>Upgrade package from ESXi Server 4.0 to ESXi Server 4.0 Update 1</li>
<li>VMware vSphere Client and Host Update Utility</li>
</ul>
<h3>2. VMware VMvisor Boot Menu</h3>
<p>Once you insert the ESXi CD and reboot the server, it will display a boot menu with an option to launch “ESXi Installer” as shown below.<br />
<img decoding="async" class="aligncenter size-full wp-image-4738" title="esxi boot menu" src="http://static.thegeekstuff.com/wp-content/uploads/2010/06/1-vmvisor-boot-menu.png" alt="" width="590" height="177" /></p>
<h3>3. VMware ESXi Installer Loading</h3>
<p>While the installer is loading all the necessary modules, it will display the server configuration information at the top as shown below. In this example, I was installing VMware ESXi 4.0 on a Dell PowerEdge 2950 server.</p>
<p><img decoding="async" class="aligncenter size-full wp-image-4739" title="vmware esxi 4 installer loading" src="http://static.thegeekstuff.com/wp-content/uploads/2010/06/2-vmware-esxi-installer-loading.png" alt="" width="481" height="288" /></p>
<h3>4. New ESXi Install</h3>
<p>Since this is a new installation of ESXi, select “Install” in the following screen.<br />
<img loading="lazy" decoding="async" class="aligncenter size-full wp-image-4743" title="VMware ESXi 4.0 Install Prompt" src="http://static.thegeekstuff.com/wp-content/uploads/2010/06/3-vmware-esxi-install-prompt.png" alt="" width="679" height="286" /></p>
<h3>5. Accept VMware EULA</h3>
<p>Read and accept the EULA by pressing F11.<br />
<a href="http://static.thegeekstuff.com/wp-content/uploads/2010/06/4-vmware-esxi-accept-eula.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-4744" title="VMware ESXi Server EULA" src="http://static.thegeekstuff.com/wp-content/uploads/2010/06/4-vmware-esxi-accept-eula-300x258.png" alt="" width="300" height="258" /></a></p>
<h3>6. Select a Disk to Install VMware ESXi</h3>
<p>VMware ESXi 4.0.0 Installer will display all available disk groups. Choose the Disk where you would like to install the ESXi. It is recommended to choose the Disk0.<br />
<img loading="lazy" decoding="async" class="aligncenter size-full wp-image-4749" title="VMware ESXi howto Select Disk for Install" src="http://static.thegeekstuff.com/wp-content/uploads/2010/06/5-vmware-esxi-select-disk.png" alt="" width="594" height="442" /></p>
<h3>7. Confirm ESXi Installation</h3>
<p>Confirm that you are ready to start the install process.<br />
<a href="http://static.thegeekstuff.com/wp-content/uploads/2010/06/6-vmware-esxi-confirm-install.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-4750" title="ESXi Virtual Machine Confirm Install" src="http://static.thegeekstuff.com/wp-content/uploads/2010/06/6-vmware-esxi-confirm-install-300x80.png" alt="" width="300" height="80" /></a></p>
<h3>8. Installation in Progress</h3>
<p>The installation process takes few minutes. While the ESXi is getting installed, it will display a progress bar as shown below.<br />
<img loading="lazy" decoding="async" class="aligncenter size-full wp-image-4751" title="ESX Server Installing" src="http://static.thegeekstuff.com/wp-content/uploads/2010/06/7-vmware-esxi-installing.png" alt="" width="570" height="147" /></p>
<h3>9. ESXi Installation Complete</h3>
<p>You will get the following installation completed message that will prompt you to reboot the server.</p>
<p><a href="http://static.thegeekstuff.com/wp-content/uploads/2010/06/8-vmware-install-complete.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-4752" title="VM Ware Installation Completed" src="http://static.thegeekstuff.com/wp-content/uploads/2010/06/8-vmware-install-complete-300x201.png" alt="" width="300" height="201" /></a></p>
<h3>10. ESXi Initial Screen</h3>
<p>After the ESXi is installed, you’ll get the following screen where you can configure the system by pressing F2.<br />
<img loading="lazy" decoding="async" class="aligncenter size-full wp-image-4755" title="VMware hypervisor esxi 4.0 initial screen" src="http://static.thegeekstuff.com/wp-content/uploads/2010/06/10-vmware-esxi-launched1.png" alt="" width="511" height="343" /><br />
In the next article, let us review how to perform the initial ESXi configuration.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Publishing Content to Multiple Sites, Manage from a Single Location</title>
		<link>https://www.samielkady.com/publishing-content-multiple-sites-manage-single-location</link>
		
		<dc:creator><![CDATA[Sami Elkady]]></dc:creator>
		<pubDate>Fri, 07 Feb 2025 13:33:20 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">http://www.samielkady.com/?p=441</guid>

					<description><![CDATA[  August 2014: Publishing Content to Multiple Sites, Manage from a Single Location A growing organization had requirements for ongoing communications to client teams compromised of internal employees as well as customers on the client side. Communications were coming from varied sources on a multitude of channels without uniformity and often without adherence to corporate...]]></description>
										<content:encoded><![CDATA[<p> </p>
<h2><a title="August 2014: Publishing Content to Multiple Sites, Manage from a Single Location" href="http://www.abelsolutions.com/totm/publishing-content-to-multiple-sites-manage-from-a-single-location/">August 2014: Publishing Content to Multiple Sites, Manage from a Single Location</a></h2>
<p>A growing organization had requirements for ongoing communications to client teams compromised of internal employees as well as customers on the client side. Communications were coming from varied sources on a multitude of channels without uniformity and often without adherence to corporate standards.</p>
<p>One of the channels the company was using to communicate to these teams was the individual, secure portals they were employing for collaboration – uploading content and sharing of information.</p>
<p>This premise of publishing to these portals was ideal but the effort often took days to complete and so the organization approached Abel Solutions for help minimizing the time to author and publish content via an individualized, secure space.</p>
<p>A major requirement was that a content editor would need to manage company announcement content in a single location publishing to many consuming sites. The author should be able to set an expiration date, tag an announcement as active or archived as well as limit the number of announcements displayed at a time. The company envisioned their announcements as an image with a short description. Upon clicking on the announcement title, it would render the full article for reading. This required the company to restrict authoring content to a subset of employees.</p>
<p>To simplify content management, there was an expectation that someone could author once and walk away—not having to reproduce the same information multiple times. SharePoint 2013 proved to be an ideal solution for their portals and for increasing productivity, eliminating administrative overhead, securing content, and publishing compliant content to all client sites with a single click of the mouse.</p>
<p><strong>Solution</strong><br />
The SharePoint 2013 Product Catalog feature was implemented to achieve this goal. In this article, you will learn how to implement a product catalog solution for publishing content from a single location out to multiple site collections.</p>
<p><em>NOTE: This solution was designed and implemented for SharePoint 2013 Enterprise [On-Premise].</em></p>
<p><strong>Implementation Requirements:</strong></p>
<ol>
<li>SharePoint Server 2013 Enterprise [On-Premise]</li>
<li>At minimum, two site collections – an authoring site and publishing site</li>
<li>Managed Metadata Service</li>
<li>Administrative permissions</li>
</ol>
<p><strong>Authoring Site</strong><br />
Let’s begin by designing the Authoring site collection that will be used to manage content for the announcements (i.e., image library and announcement lists).</p>
<ol>
<li>Create a site collection</li>
<li>Go to <strong>Site Settings</strong></li>
<li>Under Site Collection Administration, select <strong>Site Collection Features</strong></li>
<li>Find <strong>Cross-Site Collection Publishing</strong>, click <strong>Activate</strong></li>
</ol>
<p>Next, let’s create a <strong>Term Set</strong> that will be used to determine whether an announcement is Active or Archived.</p>
<ol>
<li>Access the <strong>Term Store Management Tool</strong> via <strong>Site Settings</strong>.</li>
<li>Under <strong>Site Administration</strong>, select <strong>Term Store Management</strong></li>
<li>Create a term set with terms defining announcements <strong>Active</strong> or <strong>Archived</strong>.</li>
<li>For this term set, under the <strong>Intended Use</strong> tab, select <strong>Available for Tagging</strong>.</li>
<li>Select <strong>Save</strong>.</li>
</ol>
<p>In the meantime, proceed to create a SharePoint list for managing announcement content. Create an announcements list creating and adding appropriate columns as needed. It is important to remember the columns and their associated <strong>Managed Properties</strong> for search capabilities. <strong>Managed Properties</strong> are what the <strong>Search Engine</strong> uses to find information or values, not columns themselves. Map a field to the term set created above.</p>
<p>1. Access the <strong>List Settings</strong>, the select <strong>Catalog Settings</strong>.<br />
<img loading="lazy" decoding="async" class="alignleft wp-image-1523 size-full" src="http://www.abelsolutions.com/wp-content/uploads/2014/08/enable-library.jpg" alt="enable-library" width="628" height="218" /><br clear="all" />2. Select <strong>Enable this library as a catalog</strong> and other appropriate settings (i.e., Navigation Hierarchy) and fields as necessary.</p>
<p>Now, you’re ready to inform SharePoint 2013 Search that new columns are available. Through Central Admin or from <strong>List Settings</strong> > <strong>Reindex List</strong>, continue to initiate a <strong>Full Crawl</strong>.</p>
<p><img loading="lazy" decoding="async" class="alignleft wp-image-1525 size-full" src="http://www.abelsolutions.com/wp-content/uploads/2014/08/reindex-list.jpg" alt="reindex-list" width="628" height="313" /><br clear="all" /><strong>Publishing Site</strong><br />
As for the Publishing Site, create a site collection with preferred template of choice. Accessing <strong>Site Settings > Manage Catalog Connections</strong>.</p>
<p><img loading="lazy" decoding="async" class="alignleft wp-image-1521 size-full" src="http://www.abelsolutions.com/wp-content/uploads/2014/08/connect.jpg" alt="connect" width="175" height="228" /><br clear="all" />Click <strong>Connect</strong> for your published Catalog</p>
<p><img loading="lazy" decoding="async" class="alignleft wp-image-1522 size-full" src="http://www.abelsolutions.com/wp-content/uploads/2014/08/connect-search-web-part.jpg" alt="connect-search-web-part" width="628" height="57" /><br clear="all" />Designate desired location to publish announcements, insert a <strong>Content Search Web Part</strong> onto the page. Select <strong>Change Query</strong> to build your query for search results. In the web part panel, select a <strong>Display Template</strong> best fit for your needs. In some instances, you may have to create a custom Display Template if out of the box options are not sufficient. Select the appropriate <strong>Property Mappings</strong> for available fields.<em>NOTE: Please remember to restrict the search results on only the published catalog.</em></p>
<p><img loading="lazy" decoding="async" class="alignleft wp-image-1524 size-full" src="http://www.abelsolutions.com/wp-content/uploads/2014/08/property-mapping.jpg" alt="property-mapping" width="628" height="418" /><br clear="all" /><strong>Summary</strong><br />
If there is a need to manage content from a centralized, secure location to other information websites in a time-efficient way, SharePoint 2013 Product Catalog feature is an excellent, easy-to-implement solution. This solution lessens the strain on resources responsible for the process of managing content to multiple websites.</p>
<p><em>This TOTM was contributed by SharePoint Consultant, Recortis Echols.</em></p>
<p> </p>
<p> </p>
<p>https://technet.microsoft.com/en-us/library/jj635883.aspx</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ASP.NET Web Application Project Deployment Overview</title>
		<link>https://www.samielkady.com/asp-net-web-application-project-deployment-overview</link>
		
		<dc:creator><![CDATA[Sami Elkady]]></dc:creator>
		<pubDate>Fri, 07 Feb 2025 13:33:20 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">http://www.samielkady.com/?p=437</guid>

					<description><![CDATA[https://msdn.microsoft.com/library/dd394698(v=vs.100).aspx http://www.asp.net/mvc/overview/deployment/visual-studio-web-deployment/deploying-to-iis]]></description>
										<content:encoded><![CDATA[<p>https://msdn.microsoft.com/library/dd394698(v=vs.100).aspx</p>
<p>http://www.asp.net/mvc/overview/deployment/visual-studio-web-deployment/deploying-to-iis</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>HOW DO UBUNTU SERVER AND WINDOWS SERVER 2012 COMPARE?</title>
		<link>https://www.samielkady.com/ubuntu-server-windows-server-2012-compare</link>
		
		<dc:creator><![CDATA[Sami Elkady]]></dc:creator>
		<pubDate>Fri, 07 Feb 2025 13:33:20 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">http://www.samielkady.com/?p=432</guid>

					<description><![CDATA[In the home computing world, Windows is the dominant force, Mac comes in second, and Linux plays third fiddle. In the server world things are a bit different, however. Linux still outranks Windows, though not quite as badly as it did a few years ago. When it comes to Linux servers, Debian and Ubuntu are...]]></description>
										<content:encoded><![CDATA[<p>In the home <a id="itxthook0" class="itxtrst itxtrsta itxthook" href="http://www.eyeonwindows.com/2013/03/11/how-do-ubuntu-server-and-windows-server-2012-compare/#" rel="nofollow"><span id="itxthook0w" class="itxtrst itxtrstspan itxtnowrap">computing</span></a> world, Windows is the dominant force, Mac comes in second, and Linux plays third fiddle. In the server world things are a bit different, however. Linux still outranks Windows, though not quite as badly as it did a few years ago.</p>
<p>When it comes to Linux servers, Debian and Ubuntu are probably two of the more popular distros out there. Since Ubuntu also is the most popular standard consumer OS, let’s compared Ubuntu to Windows Server 2012 to figure out which is right for your business.</p>
<p>Whether you are considering switching from Linux to Windows, or even are currently using Windows Server but thinking about Linux over an upgrade to Server 2012 – this will help give you an idea of what both are about.</p>
<p>The overview might miss a few big hitters or features, but it at least helps paint a picture.</p>
<p>Let’s start with Ubuntu:</p>
<h2>UBUNTU FOR SERVER</h2>
<p>Ubuntu has become a big force in the Linux world, despite the fact that many Linux purists don’t care much for the UnityUI that has brought more of a mainstream look and feel to Linux.</p>
<p>Some of the best features for Ubuntu on Servers include the following:</p>
<p><strong>Ubuntu Software Center</strong></p>
<p>When it comes to finding programs for managing your server, USC makes life easier. The terminal still is the preferred way for doing many things in Linux, but this certainly comes in handy as well.</p>
<p><strong>Raid Configurations</strong></p>
<p>Making raid arrays is actually pretty cheap and easy in Ubuntu, thanks to the mdadm tool. You don’t need to use CLI and there is even a tool that tells you if the raid is degrading and will even help you rebuild the array.</p>
<p><strong>File Sharing &#038; Storing</strong></p>
<p>Although you might be considering Linux (or currently using it) for your server, it is still more than likely that many, if not all, of your workstations will run on Windows <a id="itxthook1" class="itxtrst itxtrsta itxthook" href="http://www.eyeonwindows.com/2013/03/11/how-do-ubuntu-server-and-windows-server-2012-compare/#" rel="nofollow"><span id="itxthook1w" class="itxtrst itxtrstspan itxtnowrap">PCs</span></a>. That is why the ability to share files and storage with Windows PCs is important – luckily Linux handles this well enough.</p>
<p><strong>Security &#038; Data Protection</strong></p>
<p>Ubuntu has built-in firewalls turned on by default and has automatic security updates with file encryption support. There are also advanced features like password vaults and due to the nature of Linux, it is relatively malware and virus proof (though not completely).</p>
<p><strong>Ubuntu Server Cost</strong></p>
<p>If your organization doesn’t mind “being on its own” when it comes to customer support and aide, Ubuntu Server is totally free. Looking for support? Canonical offers it starting at $320 per server, per year.</p>
<h2>WINDOWS SERVER 2012</h2>
<p>Windows Server 2012 hasn’t been out for that long yet but it truly brings many great new features to the table. This time around there is the new MetroUI (as seen with Windows 8) alongside the traditional <a id="itxthook2" class="itxtrst itxtrsta itxthook" href="http://www.eyeonwindows.com/2013/03/11/how-do-ubuntu-server-and-windows-server-2012-compare/#" rel="nofollow"><span id="itxthook2w" class="itxtrst itxtrstspan itxtnowrap">desktop</span></a>. There is also a much stronger cloud focus in the latest server version, as well as many new features.</p>
<p><strong>Windows Apps</strong></p>
<p>From the Windows App Store to commercial Windows <a id="itxthook3" class="itxtrst itxtrsta itxthook" href="http://www.eyeonwindows.com/2013/03/11/how-do-ubuntu-server-and-windows-server-2012-compare/#" rel="nofollow"><span id="itxthook3w" class="itxtrst itxtrstspan itxtnowrap">apps</span></a>, there is a ton of software that works for Windows. While Linux also has quite a bit of software (most open-source), Windows Server has even more.</p>
<p><strong>Raid Configurations</strong></p>
<p>If Raid configurations are important to you, you’ll be happy to know that<a id="itxthook4" class="itxtrst itxtrsta itxthook" href="http://www.eyeonwindows.com/2013/03/11/how-do-ubuntu-server-and-windows-server-2012-compare/#" rel="nofollow"><span id="itxthook4w" class="itxtrst itxtrstspan itxtnowrap">Microsoft</span></a> put a lot of focus into this with Server 2012. The latest version of Windows Server includes a brand new feature called “Storage Pool and Spaces”.</p>
<p>What is that exactly? It is like a raid0 but without needing to strip the data across all disks. If one drive fails, you simply replace it and keep your data. Unlike raid-5 it doesn’t take half the space for backup drives and also utilizes the very efficient ReFS file system.</p>
<p><strong>File Sharing &#038; Storing</strong></p>
<p>There probably isn’t much to say here, sharing and storing is ultra-simple with Windows Server 2012. Ubuntu does a good job here, but Server 2012 does a better one.</p>
<p><strong>Security &#038; Data Protection</strong></p>
<p>Windows Server 2012 goes along way into making the experience more secure than past versions of Windows Server, merging their security suit into a comprehensive anti-virus/malware system called Windows Defender. There is also Bitlocker Protection to encrypt your data.</p>
<p>All in all, this is one of the most secure Windows experiences to date, but Linux is admittedly stronger in this aspect.</p>
<p><strong>Other Unique Windows Advantages</strong></p>
<p>As seen in <a href="http://www.windowsservernews.com/2012/12/five-reasons-why-you-should-upgrade-to-windows-server-2012/" target="_blank" rel="nofollow noopener">one of our other articles</a>, some of the more unique aspects of Server 2012 includes its major push towards Hyper-V, its ability to turn off and on a GUI at will, and a unique ability to ‘stream’ intensive apps to low power Windows devices – including making it possible to run x86 desktop apps on your network even on Windows RT devices like the Surface RT.</p>
<p><strong>Price</strong></p>
<p>Depending <a href="http://www.windowsservernews.com/2012/12/windows-server-2012-understanding-the-different-editions-available/" target="_blank" rel="nofollow noopener">on the version your business needs,</a> you are likely <a id="itxthook5" class="itxtrst itxtrsta itxthook" href="http://www.eyeonwindows.com/2013/03/11/how-do-ubuntu-server-and-windows-server-2012-compare/#" rel="nofollow"><span id="itxthook5w" class="itxtrst itxtrstspan itxtnowrap">talking</span></a> about close to $1000, if not tons more than that. Obviously if you are a DIY kind of organization that doesn’t need the customer support, Ubuntu is a lot cheaper.</p>
<p>While Ubuntu (and any Linux server distro for that matter) has a lot to offer, Microsoft also has many unique features that make it work great in an existing Windows environment. Ultimately it is up to you to decide which OS works better for your business, though.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ten Reasons to Dump Windows and Use Linux</title>
		<link>https://www.samielkady.com/ten-reasons-dump-windows-linux</link>
		
		<dc:creator><![CDATA[Sami Elkady]]></dc:creator>
		<pubDate>Fri, 07 Feb 2025 13:33:20 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">http://www.samielkady.com/?p=430</guid>

					<description><![CDATA[Now is a particularly good time to ditch Windows for good, for workstations as well as servers. For instance, now that Microsoft stopped supporting Windows Server 2003 on July 13, you&#8217;ll need to find something different to use for your servers. Whether it&#8217;s switching from Windows Server 2003 to 2008 or to Linux-based servers&#8211;or changing...]]></description>
										<content:encoded><![CDATA[<p>Now is a particularly good time to ditch Windows for good, for workstations as well as servers. For instance, now that Microsoft stopped supporting Windows Server 2003 on July 13, you&#8217;ll need to find something different to use for your servers. Whether it&#8217;s switching from <a href="http://www.microsoft.com/windowsserver2008/en/us/default.aspx">Windows Server 2003</a> to 2008 or to Linux-based servers&#8211;or changing out tired and faulty Windows Vista desktops for the alien Windows 7 or something more user-friendly&#8211;Linux provides you with freedom and freedom of choice.</p>
<p>You might believe that dumping Windows and switching to Linux is a difficult task, but the change in thought and the perception of that switch are the most difficult. If you&#8217;ve attempted an upgrade from Windows XP to Windows 7, you know what pain is.</p>
<p><a href="http://www.pcworld.com/businesscenter/article/147879/move_your_business_from_windows_to_linux.html">Business owners find that Linux</a>, for what was once a &#8220;niche&#8221; operating system, provides the necessary components and services on which many rely. Linux continues its entry into the world&#8217;s largest data centers, onto hundreds of thousands of individual desktops, and it represents a near 100 percent domination of the cloud services industry. Take the time to discover Linux and use it in your business. Here are ten reasons to give <a href="http://www.pcworld.com/article/138720/how_to_switch_from_windows_to_linux.html">Linux at least a second look</a>:</p>
<p><strong>1. Commercial Support</strong></p>
<p>In the past, businesses used the lack of commercial support as the main reason for staying with Windows. <a href="http://www.redhat.com/">Red Hat</a>, <a href="http://www.novell.com/">Novell</a> and <a href="http://www.canonical.com/">Canonical</a>, the &#8220;big three&#8221; commercial Linux providers, have put this fear to rest. Each of these companies offers 24x7x365 support for your mission-critical applications and business services.</p>
<p><strong>2. .NET Support</strong></p>
<p>Businesses that have standardized on Microsoft technology, specifically their .NET web technology, can rely on Linux for support of those same .NET applications. Novell owns and supports the <a href="http://www.pcworld.com/article/201731/%E2%80%9Dhttp://www.mono-project.com%E2%80%9D">Mono</a> project that maintains .NET compatibility. One of the Mono project’s goals is to provide businesses the ability to make a choice and to resist vendor lock-in. Additionally, the Mono project offers Visual Studio plugins so that .NET developers can easily transfer Windows-based .NET applications without changing their familiar development tools. Why would Novell and others put forth the effort to create a .NET environment for Linux? For real .NET application stability, Linux is a better choice than Windows.</p>
<p><strong>3. Unix Uptimes</strong></p>
<aside id="" class="nativo-promo smartphone tablet desktop"></aside>
<p>Linux stability offers business owners the peace of mind that their applications won’t suffer lengthy outages due to operating system instability. Linux enjoys the same high uptimes (often measured in years) that its Unix cousins do. This stability means that Linux can support your &#8220;99.999 percent available&#8221; service requirements. Rebooting after every patch, service pack, or driver change makes Windows an unstable and unreliable choice for those who need nonstop support for their critical applications and services.</p>
<p><strong>4. Security</strong></p>
<p>No operating system is 100 percent secure and Linux is no exception. But, Linux offers excellent security for its users. From regular kernel updates to an almost daily list of security patches, Linux code maintainers keep Linux systems very secure. Business owners who rely on commercially supported Linux systems will have access to every available security fix. With Linux, you have a worldwide community providing security fixes, not a single company with closed source code. You are completely dependent on the response of one company to provide you with timely security fixes when you use Windows.</p>
<p><strong>5. Transferable skills</strong></p>
<p>One barrier to Linux adoption was the idea that Linux isn’t enough like Unix, and therefore Unix administrators couldn’t successfully use their knowledge when making the switch to Linux. The Linux filesystem layout looks like any commercial version of Unix. Linux also uses a standard set of Unix commands. There are some Linux commands that do not transfer, but this is also true of any version of Unix.</p>
<p>Windows administrators might find that using a keyboard instead of a mouse is a difficult part of the transition, but once they discover the power of the command line, they might never click again. Don&#8217;t worry, though, for you GUI-bound Windows types, Linux has several desktop managers from which to choose&#8211;not just one.</p>
<p><strong>6. Commodity hardware</strong></p>
<p>Business owners will like the fact that their “out-of-date” systems will still run Linux and run it well. Fortunately for Linux adopters, there’s no hardware upgrade madness that follows every new version of the software that’s released. Linux runs on x86 32-bit and 64-bit architectures. If your system runs Windows, it will run Linux.</p>
<p><strong>7. Linux is free</strong></p>
<p>You may have heard that Linux is free. It is. Linux is free of charge and it is free in the sense that it is also free of patents and other restrictions that make it unwieldy for creative business owners who wish to edit and enhance the source code. This ability to innovate with Linux has helped create companies like Google, who have taken that ability and converted it into big business. Linux is free, as in freedom.</p>
<p><strong>8. Worldwide community</strong></p>
<p>Linux has the support of a worldwide community of developers who contribute to the source code, security fixes and system enhancements. This active community also<a href="http://www.pcworld.com/businesscenter/article/181983/open_source_software_ready_for_big_business.html">provides businesses</a> with free support through forums and community sites. This distributed community gives peace of mind to Linux users, because there&#8217;s no single point of failure and no single source for Linux support or development.</p>
<p><strong>9. Linux Foundation</strong></p>
<p><a href="http://www.pcworld.com/article/201731/%E2%80%9Dhttp://www.linuxfoundation.org%E2%80%9D">The Linux Foundation</a> is a corporate collective of platinum supporters (Fujitsu, Hitachi, HP, IBM, Intel, NEC, Novell and Oracle) and members who, through donations and membership dues, sponsor Linus Torvalds and others who work on Linux full time. Their purpose is to &#8220;promote, protect and standardize Linux to fuel its growth around the world.&#8221; It is the primary source for all things Linux. The Linux Foundation is a big positive for Linux users and adopters because its existence assures continued development of Linux.</p>
<p><strong>10. Regular Updates</strong></p>
<p>Are you tired of waiting for a <a href="http://www.pcworld.com/businesscenter/article/200975/what_to_expect_from_new_windows_service_pack_betas.html">Windows service pack</a> every 18 months? Are you also tired of the difficulty in upgrading your Windows systems every few years because there’s no clear upgrade path? (<a href="http://www.pcworld.com/article/201731/%E2%80%9Dhttp://www.ubuntu.com%E2%80%9D">Ubuntu</a> Linux offers new, improved versions every six months) and long-term support (LTS) versions every two years. Every Linux distribution offers regular updates of its packages and sources several times per year and security fixes as needed. You can leave any upgrade angst in your officially licensed copy of Windows because it&#8217;s easy to <a href="http://www.pcworld.com/article/198545/ubuntu_1004_upgrade_best_practices_checklist.html">upgrade and update Linux</a>. And, the best part? No reboot required.</p>
<p>If you’d like to give Linux a try, there are several distributions that are free to download and use without the need for any commercial support contract:</p>
<p>• <a href="http://www.pcworld.com/article/201731/%E2%80%9Dhttp://www.centos.org%E2%80%9D">CentOS</a> – Red Hat Enterprise Linux-based free distribution</p>
<p>• <a href="http://www.pcworld.com/article/201731/%E2%80%9Dhttp://www.ubuntu.com%E2%80%9D">Ubuntu</a> – Free, enterprise Linux distribution (Commercial support available).</p>
<p>• <a href="http://www.pcworld.com/article/201731/%E2%80%9Dhttp://www.fedoraproject.org%E2%80%9D">Fedora</a> – The Fedora Project is the free, community-supported version of Red Hat Linux.</p>
<p>• <a href="http://www.pcworld.com/article/201731/%E2%80%9Dhttp://www.opensuse.org%E2%80%9D">OpenSUSE</a> – The free, community-supported version of Novell’s SUSE Linux.</p>
<p>• <a href="http://www.pcworld.com/article/201731/%E2%80%9Dhttp://www.debian.org%E2%80%9D">Debian</a> – The parent distribution for many Linux distributions including Ubuntu and<a href="http://www.pcworld.com/article/201731/%E2%80%9Dhttp://www.linuxmint.com%E2%80%9D">Linux Mint</a>.</p>
<p>You can find information regarding switching from Windows to Linux through the Linux Foundation or any of its platinum members. When it comes to increasing your efficiency, saving money, and providing non-stop services to your business and its customers, how many reasons do you need?</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Can Drupal Sites Run Effectively on a Windows Server?</title>
		<link>https://www.samielkady.com/drupal-sites-run-effectively-windows-server</link>
		
		<dc:creator><![CDATA[Sami Elkady]]></dc:creator>
		<pubDate>Fri, 07 Feb 2025 13:33:20 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">http://www.samielkady.com/?p=427</guid>

					<description><![CDATA[http://www.dagency.co.uk/drupal-blog/can-drupal-sites-run-effectively-on-a-windows-server It’s not uncommon for us to receive requests to build, maintain and/or host Drupal websites on Windows servers. Here are the main reasons why: Familiarity – The client is aware of the Windows brand and trusts it. Experience – The client has existing IT staff, well versed in administrating and maintaining Windows servers. Costs...]]></description>
										<content:encoded><![CDATA[<p>http://www.dagency.co.uk/drupal-blog/can-drupal-sites-run-effectively-on-a-windows-server</p>
<p>It’s not uncommon for us to receive requests to build, maintain and/or host Drupal websites on Windows servers.</p>
<p>Here are the main reasons why:</p>
<p><strong>Familiarity –</strong> The client is aware of the Windows brand and trusts it.</p>
<p><strong>Experience –</strong> The client has existing IT staff, well versed in administrating and maintaining Windows servers.</p>
<p><strong>Costs –</strong> The client wants to make use of their existing Windows environment to save costs.</p>
<p><strong>Integration –</strong> The project needs integration between a Drupal solution and Windows specific software such as a back-end office, ERP or CRM.</p>
<h3>Considerations</h3>
<p>Setting up Drupal on Windows server might seem like the logical solution, but here are a few things to consider when considering deploying Drupal on a platform that is not naturally optimized for this use:</p>
<ul class="rteindent1">
<li>If set-up, deployment, development and testing tasks take longer, then development costs will be higher.</li>
<li>If core updates, security patches and contributed module work takes longer to implement, then ongoing maintenance costs will be higher. If these tasks are skipped because they’re difficult to implement efficiently, then the chances of a security breach are increased.</li>
<li>Drupal is a big beast and performance optimization is essential to a successful project. Slow loading pages increase friction, create stress, cause abandonment, and may affect your visibility in Google search.</li>
</ul>
<h3>Challenges</h3>
<p><strong>1. Development Skills Crossover</strong></p>
<p>The Drupal community now numbers over a million individuals (based on active <a href="http://drupal.org/">drupal.org</a> member accounts).  Let’s be conservative and say that a quarter of that number is developers.</p>
<p>That’s a pretty healthy talent pool to dip into but is dwarfed by the number of skilled Windows technicians there are out there.  The problem is that there is not as much overlap as you might hope between the two.</p>
<p>No developers are well versed in every available technology, and most will focus on a number of associated technologies or disciplines, so a Drupal developer is likely to be highly up to speed with PHP, MySQL, Apache, Linux, and quite possibly other CMS’s, programming languages, etc that go together with other parts of that knowledge base, (e.g. WordPress, node.js, etc).</p>
<p>Likewise someone who has the skills to administrate a Windows server is quite likely to have experience with .NET, SQL Server, IIS, etc.</p>
<p>Unfortunately, the reverse is also true… An individual that’s dedicated a large amount of their career to open source development (which is probably the case if they’ve ended up being a Drupal Developer) is less likely to have the same skills as a Microsoft certified technician and vice versa.</p>
<p>Now I’m being careful to use words such as ‘likely’ here, since there will be many exceptions; highly talented and technologically agnostic individuals who can fit into both sets of shoes, but it’s safe to say these are very much a minority.</p>
<p>Which means that the large talent pool we were looking at before has now shrunk significantly.  There’s no reliable source of numbers here but I’m guessing that you’d be looking at most a few thousand individuals worldwide… many of whom will not be available to contract in.</p>
<p>You can imagine that it will be difficult to find the right people and probably more costly when you do.</p>
<p>If you do already have any tame Drupal Developers who are also Windows server administrators on the side then you’re in a fortunate position, but bear in mind that you would be in the same position if they become unavailable or the relationship breaks down.</p>
<h3>2. Robustness</h3>
<p>Drupal can and does run on Windows… There are almost certainly examples of Drupal sites on Windows out there.</p>
<p>However installations on Windows will be a significant minority.  Again it&#8217;s difficult to get hard numbers on this but I wouldn&#8217;t be surprised if less that 1% of Drupal sites run on Windows.</p>
<p>If the proportion is 1% then that means only 1% of site building and maintenance time is occurring on Windows based builds, and if we assume that Windows sites get the same average traffic then only 1% of end user interaction occurs on Windows hosted sites.</p>
<p>In addition, the vast majority of development of the code within Drupal itself and contributed modules and themes is likely to have been done on a LINUX/UNIX based operating system running Apache.</p>
<p>The upshot of this is that if there are issues with Drupal (or it&#8217;s modules/themes) that only appear on one operating system or server software then they are far more likely to have been found and solved already on say a LAMP stack then on Windows/IIS.</p>
<h3>3. Optimization</h3>
<p>During the process of putting together any software, including content systems such as Drupal, hard decisions have to be made based on performance.</p>
<p>An optimization that might improve performance in one set of circumstances could reduce it in another, and sometimes in these situations the developers end up join deciding that the improvement for the many trumps the degradation for the few.  In the case of Windows / Linux / Anything else, it&#8217;s pretty easy to imagine which system will end up getting the most benefit from optimization.</p>
<p>The individual decisions may not make much difference on their own, but the combined effect of many such performance decreases across a system as large as Drupal will likely be significant.</p>
<p>Additionally, there&#8217;s far more chance that performance issues that exist in Drupal on Windows may not have been identified / isolated / resolved purely because of the much smaller amount of time that can go into testing and developing on Windows.</p>
<h3>4. Support</h3>
<p>I&#8217;m talking about support from Drupal core developers, module maintainers and the community in general here.</p>
<p>If you encounter an issue that occurs in Drupal on Windows and is down to some low level difference in the way that Windows or IIS works, and it cannot be solved without Drupal core or a module being modified then you may find it difficult to get the help you need.</p>
<p>This could be because the relevant people (e.g. the maintainer of the module in question) don&#8217;t…</p>
<p>Have the relevant experience in the differences that are causing the issue to identify or resolve it</p>
<p>Have the facilities readily available and set up to replicate it</p>
<p>Regard it as a priority This may seem churlish but in reality if they have an issue queue with 20 open issues which could all effect 99% of users then how much priority do you think they will give to issues that only effect 1%?</p>
<h3>Summary</h3>
<p>Whilst Drupal can run on Windows, it may not be possible to run your particular project as efficiently on Windows over a Drupal tuned hosting stack or cloud instance such as Acquia.</p>
<p>If you can’t, then less efficiency means more development and maintenance cost, less reliability in certain instances, and a potential increase in friction between everyone involved in making the project a success.</p>
<p>Just to be clear, we don&#8217;t have any kind of anti-Windows agenda here. There’s no suggestion that Windows is in any way inferior as a hosting environment, you just need a very unique combination of expertise to match what’s possible with a Drupal specific environment that’s been designed to make workflow, performance and security as good as it can be.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Compare and Synchronize Databases with MySQL Utilities</title>
		<link>https://www.samielkady.com/compare-synchronize-databases-mysql-utilities</link>
		
		<dc:creator><![CDATA[Sami Elkady]]></dc:creator>
		<pubDate>Fri, 07 Feb 2025 13:33:20 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">http://www.samielkady.com/?p=425</guid>

					<description><![CDATA[The mysqldiff and mysqldbcompare utilities were designed to produce a difference report for objects and in the case of mysqldbcompare the data. Thus, you can compare two databases and produce a report of the differences in both object definitions and data rows. While that may be very useful, would it not be much more useful...]]></description>
										<content:encoded><![CDATA[<div id="post-body-3973032454519382820" class="post-body entry-content">
<p>The mysqldiff and mysqldbcompare utilities were designed to produce a difference report for objects and in the case of mysqldbcompare the data. Thus, you can compare two databases and produce a report of the differences in both object definitions and data rows.</p>
<p>While that may be very useful, would it not be much more useful to have the ability to produce SQL commands to transform databases? Wait no longer! The latest release of MySQL Utilities has added the ability to generate SQL transformation statements by both the mysqldiff and mysqldbcompare utilities.</p>
<p>To generate SQL transformations in either utility, simply use the &#8211;sql option to tell the utility to produce the statements.</p>
<p><b>Object Transformations with mysqldiff</b></p>
<p>If you would like to compare the schema of two databases (the objects and their definitions), mysqldiff can do that for you and produce a difference report in a number of formats including CSV, TAB, GRID, and Vertical (like the mysql client’s \G option).</p>
<p>However, its greatest feature is the ability to generate transformation statements to alter the objects so that they conform. Best of all, mysqldiff works on all object types including the ability to recognize renames so you can get a true transformation path for all objects. For even greater flexibility, you can generate the difference in both directions. This means you can generate transformations for db1-to-db2 as well as db2-to-db1 in the same pass. Cool.</p>
<p>The following shows an example of running mysqldiff on two servers where some of the objects have diverged. It also shows how you can generate the reverse transformation statements.</p>
<p>$ mysqldiff &#8211;server1=root@localhost &#8211;server2=root@otherhost \<br />
&#8211;changes-for=server1 &#8211;show-reverse util_test:util_test \<br />
&#8211;force &#8211;difftype=SQL<br />
# server1 on localhost: &#8230; connected.<br />
# server2 on localhost: &#8230; connected.<br />
# WARNING: Objects in server1.util_test but not in server2.util_test:<br />
# EVENT: e1<br />
# Comparing util_test to util_test [PASS]<br />
# Comparing util_test.f1 to util_test.f1 [PASS]<br />
# Comparing util_test.p1 to util_test.p1 [PASS]<br />
# Comparing util_test.t1 to util_test.t1 [PASS]<br />
# Comparing util_test.t2 to util_test.t2 [PASS]<br />
# Comparing util_test.t3 to util_test.t3 [FAIL]<br />
# Transformation for &#8211;changes-for=server1:<br />
#<br />
ALTER TABLE util_test.t3<br />
DROP COLUMN b,<br />
ADD COLUMN d char(30) NULL AFTER a<br />
ENGINE=MyISAM;<br />
#<br />
# Transformation for reverse changes (&#8211;changes-for=server2):<br />
#<br />
# ALTER TABLE util_test.t3<br />
# DROP COLUMN d,<br />
# ADD COLUMN b char(30) NULL AFTER a,<br />
# ENGINE=InnoDB;<br />
#<br />
# Comparing util_test.trg to util_test.trg [FAIL]<br />
# Transformation for &#8211;changes-for=server1:<br />
#<br />
DROP TRIGGER IF EXISTS `util_test`.`trg`;<br />
CREATE DEFINER=root@localhost TRIGGER util_test.trg BEFORE UPDATE ON util_test.t1<br />
FOR EACH ROW INSERT INTO util_test.t1 VALUES(&#8216;Wax on, wax off&#8217;);<br />
#<br />
# Transformation for reverse changes (&#8211;changes-for=server2):<br />
#<br />
# DROP TRIGGER IF EXISTS `util_test`.`trg`;<br />
# CREATE DEFINER=root@localhost TRIGGER util_test.trg AFTER INSERT ON util_test.t1<br />
# FOR EACH ROW INSERT INTO util_test.t2 VALUES(&#8216;Test objects count&#8217;);<br />
#<br />
# Comparing util_test.v1 to util_test.v1 [FAIL]<br />
# Transformation for &#8211;changes-for=server1:<br />
#<br />
ALTER VIEW util_test.v1 AS<br />
select `util_test`.`t2`.`a` AS `a` from `util_test`.`t2`;<br />
#<br />
# Transformation for reverse changes (&#8211;changes-for=server2):<br />
#<br />
# ALTER VIEW util_test.v1 AS<br />
# select `util_test`.`t1`.`a` AS `a` from `util_test`.`t1`;<br />
#<br />
Compare failed. One or more differences found.</p>
<p><b>Generating Data Transformation with mysqldbcompare</b></p>
<p>The mysqldbcompare utility provides all of the object difference functionality included in mysqldiff along with the ability to generate transformation SQL statements for data. This means you can make sure your test or development databases are similar to your production databases or perhaps even your offline, read only databases match your online databases. Like mysqldiff, you can also get the reverse transformations at the same time. Very cool, eh?</p>
<p>The following shows an example of running mysqldbcompare to generate differences in data.</p>
<div>$ mysqldbcompare &#8211;server1=root@localhost &#8211;server2=root@otherhost \</div>
<div>inventory:inventory -a &#8211;difftype=sql &#8211;changes-for=server1 \</div>
<div>&#8211;show-reverse</div>
<div># server1 on localhost: &#8230; connected.</div>
<div># server2 on localhost: &#8230; connected.</div>
<div># Checking databases inventory on server1 and inventory on server2</div>
<div>#</div>
<div># WARNING: Objects in server1.inventory but not in server2.inventory:</div>
<div># VIEW: finishing_up</div>
<div># VIEW: cleaning</div>
<div>#</div>
<div></div>
<div>[&#8230;]</div>
<div></div>
<div></div>
<div># TABLE supplier pass FAIL FAIL</div>
<div>#</div>
<div># Row counts are not the same among inventory.supplier and inventory.supplier.</div>
<div>#</div>
<div># Transformation for &#8211;changes-for=server1:</div>
<div>#</div>
<div># Data differences found among rows:</div>
<div>UPDATE inventory.supplier SET name = &#8216;Wesayso Corporation&#8217; WHERE code = &#8216;2&#8217;;</div>
<div>INSERT INTO inventory.supplier (code, name) VALUES(&#8216;3&#8217;, &#8216;Never Enough Inc.&#8217;);</div>
<div>#</div>
<div># Transformation for reverse changes (&#8211;changes-for=server2):</div>
<div>#</div>
<div># # Data differences found among rows:</div>
<div># UPDATE inventory.supplier SET name = &#8216;Never Enough Inc.&#8217; WHERE code = &#8216;2&#8217;;</div>
<div># DELETE FROM inventory.supplier WHERE code = &#8216;3&#8217;;</div>
<div>#</div>
<div># Database consistency check failed.</div>
<div>#</div>
<div># &#8230;done</div>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Comparing Databases with mysqldbcompare</title>
		<link>https://www.samielkady.com/comparing-databases-mysqldbcompare</link>
		
		<dc:creator><![CDATA[Sami Elkady]]></dc:creator>
		<pubDate>Fri, 07 Feb 2025 13:33:20 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">http://www.samielkady.com/?p=423</guid>

					<description><![CDATA[If you have two or more database servers containing the same data, how do you know if the objects are identical. Furthermore, how can you be sure the data is the same on all of the servers? What is needed is a way to determine if the databases are in synch &#8211; all objects are...]]></description>
										<content:encoded><![CDATA[<p>If you have two or more database servers containing the same data, how do you know if the objects are identical. Furthermore, how can you be sure the data is the same on all of the servers? What is needed is a way to determine if the databases are in synch &#8211; all objects are present, the object definitions are the same, and the tables contain the same data. Synchronizing data can become a nightmare without the proper tools to quickly identify differences among objects and data in two databases. Perhaps a worst case (and more daunting) is trying find data that you suspect may be different but you don’t have any way of finding out.</p>
<p>This is where the new &#8216;mysqldbcompare&#8217; utility comes in handy. The mysqldbcompare utility uses the mysqldiff functionality (mysqldiff allows you to find the differences in object definitions for two objects or a list of objects in two databases) and permits you to compare the object definitions and the data among two databases. Not only will it find the differences among database objects and their definitions, it will also find differences in the data!</p>
<p>The databases can reside on the same server or different servers. The utility performs a consistency check to ensure two databases are the same defined as having the same list of objects, identical object definitions (including object names), and for tables the same row counts and the same data.</p>
<p>Some scenarios where mysqldbcompare can be employed include:</p>
<ul>
<li>checking master and slave for consistency</li>
<li>checking production and development databases for consistency</li>
<li>generating a difference report for expected differences among new and old data</li>
<li>comparing backups for differences</li>
</ul>
<p><b>Running the Utility</b></p>
<p>Let us take a look at the utility in action. Below are two examples of the utility comparing what should be the same database on two servers. I am using a simple detail shop inventory database used to manage supplies. It consists of two tables (supplier, supplies) and three views (cleaning, finishing_up, and tools).</p>
<p>In the first example, we see an example where the databases are consistent. When you examine the output, you will see each object is inspected in three passes. First, the object definitions are compared. Any discrepancies would be displayed as a difference in their CREATE statements. If the object is a table, a row count test is performed followed by a comparison of the data. Surely, if the row count test fails we know the data check will fail.</p>
<p>Note: This is the same output (and indeed the same code) that is used for mysqldiff. The mysqldbcompare utility has all of the same features with respect to difference type presented (unified, differ, and context) which you can select with the same option named ‘&#8211;difftype’.</p>
<p><span class="Apple-style-span">mysqldbcompare &#8211;server1=root@localhost &#8211;server2=root@backup_host:3310 inventory:inventory</span><br />
<span class="Apple-style-span"># server1 on localhost: &#8230; connected.</span><br />
<span class="Apple-style-span"># server2 on localhost: &#8230; connected.</span><br />
<span class="Apple-style-span"># Checking databases inventory on server1 and inventory on server2</span><br />
<span class="Apple-style-span"><br />
</span><br />
<span class="Apple-style-span">Defn Row Data </span><br />
<span class="Apple-style-span">Type Object Name Diff Count Check </span><br />
<span class="Apple-style-span">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; </span><br />
<span class="Apple-style-span">TABLE supplier pass pass pass </span><br />
<span class="Apple-style-span">TABLE supplies pass pass pass </span><br />
<span class="Apple-style-span">VIEW cleaning pass &#8211; &#8211; </span><br />
<span class="Apple-style-span">VIEW finishing_up pass &#8211; &#8211; </span><br />
<span class="Apple-style-span">VIEW tools pass &#8211; &#8211; </span><br />
<span class="Apple-style-span"><br />
</span><br />
<span class="Apple-style-span">Databases are consistent.</span><br />
<span class="Apple-style-span"><br />
</span><br />
<span class="Apple-style-span"># &#8230;done</span></p>
<p>Normally, the mysqldbcompare utility will stop on the first failed test. This default means you can run the utility as a safeguard on data that you expect to be consistent. However, if you suspect or know there will be differences in the database objects or data and want to run all of the checks, you can use the ‘&#8211;run-all-tests’ option. This option will run the tests on all objects even if some tests fail. Note that this does not include system or access errors such as a down server or incorrect login &#8211; those errors will cause the utility to fail with an appropriate error message.</p>
<p>In the second example, we expect the databases to be different and we want to know which data is different. As you can see, the utility found differences in the object definitions as well as differences in the data. Both are reported.</p>
<p><span class="Apple-style-span">mysqldbcompare &#8211;server1=root@localhost &#8211;server2=root@backup_host:3310 inventory:inventory &#8211;run-all-tests</span><br />
<span class="Apple-style-span"># server1 on localhost: &#8230; connected.</span><br />
<span class="Apple-style-span"># server2 on localhost: &#8230; connected.</span><br />
<span class="Apple-style-span"># Checking databases inventory on server1 and inventory on server2</span><br />
<span class="Apple-style-span"><br />
</span><br />
<span class="Apple-style-span">WARNING: Objects in server1:inventory but not in server2:inventory:</span><br />
<span class="Apple-style-span">VIEW: finishing_up</span><br />
<span class="Apple-style-span">VIEW: cleaning</span><br />
<span class="Apple-style-span"><br />
</span><br />
<span class="Apple-style-span">Defn Row Data </span><br />
<span class="Apple-style-span">Type Object Name Diff Count Check </span><br />
<span class="Apple-style-span">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; </span><br />
<span class="Apple-style-span">TABLE supplier pass FAIL FAIL </span><br />
<span class="Apple-style-span"><br />
</span><br />
<span class="Apple-style-span">Row counts are not the same among inventory.supplier and inventory.supplier.</span><br />
<span class="Apple-style-span"><br />
</span><br />
<span class="Apple-style-span">Data differences found among rows:</span><br />
<span class="Apple-style-span">&#8212; inventory.supplier</span><br />
<span class="Apple-style-span">+++ inventory.supplier</span><br />
<span class="Apple-style-span">@@ -1,2 +1,2 @@</span><br />
<span class="Apple-style-span">code,name</span><br />
<span class="Apple-style-span">-2,Never Enough Inc.</span><br />
<span class="Apple-style-span">+2,Wesayso Corporation</span><br />
<span class="Apple-style-span"><br />
</span><br />
<span class="Apple-style-span">Rows in inventory.supplier not in inventory.supplier</span><br />
<span class="Apple-style-span">code,name</span><br />
<span class="Apple-style-span">3,Never Enough Inc.</span><br />
<span class="Apple-style-span"><br />
</span><br />
<span class="Apple-style-span">TABLE supplies pass FAIL FAIL </span><br />
<span class="Apple-style-span"><br />
</span><br />
<span class="Apple-style-span">Row counts are not the same among inventory.supplies and inventory.supplies.</span><br />
<span class="Apple-style-span"><br />
</span><br />
<span class="Apple-style-span">Data differences found among rows:</span><br />
<span class="Apple-style-span">&#8212; inventory.supplies</span><br />
<span class="Apple-style-span">+++ inventory.supplies</span><br />
<span class="Apple-style-span">@@ -1,4 +1,4 @@</span><br />
<span class="Apple-style-span">stock_number,description,qty,cost,type,notes,supplier</span><br />
<span class="Apple-style-span">-11040,Leather care,1,9.99,other,,1</span><br />
<span class="Apple-style-span">-11186,Plastic polish,1,9.99,polishing,,1</span><br />
<span class="Apple-style-span">-11146,Speed shine,1,9.99,repair,,1</span><br />
<span class="Apple-style-span">+11040,Leather care,1,10.00,other,,1</span><br />
<span class="Apple-style-span">+11186,Plastic polish,1,10.00,polishing,,1</span><br />
<span class="Apple-style-span">+11146,Speed shine,1,10.00,repair,,1</span><br />
<span class="Apple-style-span"><br />
</span><br />
<span class="Apple-style-span">Rows in inventory.supplies not in inventory.supplies</span><br />
<span class="Apple-style-span">stock_number,description,qty,cost,type,notes,supplier</span><br />
<span class="Apple-style-span">11104,Interior cleaner,1,9.99,cleaning,,1</span><br />
<span class="Apple-style-span">11056,Microfiber and foam pad cleaner,1,9.99,cleaning,,1</span><br />
<span class="Apple-style-span">11136,Rubber cleaner,1,9.99,cleaning,,1</span><br />
<span class="Apple-style-span">11173,Vinyl and rubber dressing,1,9.99,cleaning,,1</span><br />
<span class="Apple-style-span">11106,Wheel cleaner,1,9.99,cleaning,,1</span><br />
<span class="Apple-style-span">11270,Carpet cleaner,1,9.99,cleaning,,1</span><br />
<span class="Apple-style-span"><br />
</span><br />
<span class="Apple-style-span">Rows in inventory.supplies not in inventory.supplies</span><br />
<span class="Apple-style-span">stock_number,description,qty,cost,type,notes,supplier</span><br />
<span class="Apple-style-span">11269,Microfiber spray on car wash towel,3,16.99,cleaning,,1</span><br />
<span class="Apple-style-span">11116,Microfiber wax removal towel,3,16.99,waxing,,1</span><br />
<span class="Apple-style-span">10665,Glass polish pad,3,10.00,polishing,,1</span><br />
<span class="Apple-style-span"><br />
</span><br />
<span class="Apple-style-span">VIEW tools FAIL &#8211; &#8211; </span><br />
<span class="Apple-style-span"><br />
</span><br />
<span class="Apple-style-span">&#8212; inventory.tools</span><br />
<span class="Apple-style-span">+++ inventory.tools</span><br />
<span class="Apple-style-span">@@ -1,1 +1,1 @@</span><br />
<span class="Apple-style-span">-CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `inventory`.`tools` AS select `inventory`.`supplies`.`stock_number` AS `stock_number`,`inventory`.`supplies`.`description` AS `description`,`inventory`.`supplies`.`qty` AS `qty`,`inventory`.`supplies`.`cost` AS `cost`,`inventory`.`supplies`.`type` AS `type`,`inventory`.`supplies`.`notes` AS `notes`,`inventory`.`supplies`.`supplier` AS `supplier` from `inventory`.`supplies` where (`inventory`.`supplies`.`type` = &#8216;tool&#8217;)</span><br />
<span class="Apple-style-span">+CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `inventory`.`tools` AS select `inventory`.`supplies`.`stock_number` AS `stock_number`,`inventory`.`supplies`.`description` AS `description`,`inventory`.`supplies`.`qty` AS `qty`,`inventory`.`supplies`.`cost` AS `cost`,`inventory`.`supplies`.`type` AS `type`,`inventory`.`supplies`.`notes` AS `notes`,`inventory`.`supplies`.`supplier` AS `supplier` from `inventory`.`supplies` where (`inventory`.`supplies`.`type` in (&#8216;tool&#8217;,&#8217;other&#8217;))</span><br />
<span class="Apple-style-span"><br />
</span><br />
<span class="Apple-style-span">Database consistency check failed.</span></p>
<p>Take a moment to read through the report above. At the top of the report (the first object tested), we see a critical error in the suppliers table. Here we can see that there are two different names for the same supplier_id. All relational database theory aside, that could spell trouble when it comes time to reorder supplies.</p>
<p>Notice the report for the supplies table. In this example, the utility identified three rows that were different among the two databases. It also identified rows that were missing from either table. Clearly, that could help you diagnose what went wrong where in your application (or your data entry).</p>
<p>Lastly, we see a possible issue with the tools view. Here the view definition differs slightly. Depending the use of the view this may be acceptable but it is nice to know nonetheless.</p>
<p><b>What Does This All Mean?</b></p>
<p>If data consistency is important to you or if you need a way to quickly determine the differences among data in two databases, the mysqldbcompare utility is a great addition to your toolset. But don’t take my word for it &#8211; try it out yourself.</p>
<p><b>Download and Try It Out!</b></p>
<p>The MySQL Utilities project is written in Python and is a component of the MySQL Workbench tool. You can download the latest release of the MySQL Workbench here:</p>
<p><a href="http://dev.mysql.com/downloads/workbench/">http://dev.mysql.com/downloads/workbench/</a></p>
<p>There are some limitations in this first release. Currently, if the storage engines differ among the tables in the compare, the object definitions will show this difference – which is exactly what you would expect. However, the utility will stop and report the object definition test as a failure. You can still run the data consistency check by using the &#8211;force option which instructs the mysqldbcompare utility to run all tests unless they fail from an internal exception (for example, the table files are corrupt).</p>
<p><b>Got Some Ideas or Want to See New Features?</b></p>
<p>One really cool feature would be if the utility generate SQL statements for synchronizing the data and objects. Would this be something you would want to see incorporated?</p>
<p>If you’re intrigued by this new utility and in your course of use find new features or new uses that you would like to see incorporated in future revisions, please email me and let me know!</p>
<p><b>Related Material</b></p>
<p>Th latest MySQL Utilities development tree (including mysqldbcompare) can be found here:</p>
<p><a href="https://launchpad.net/mysql-utilities">https://launchpad.net/mysql-utilities</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>IIS Sharepoint Performance tips</title>
		<link>https://www.samielkady.com/iis-sharepoint-performance-tips</link>
		
		<dc:creator><![CDATA[Sami Elkady]]></dc:creator>
		<pubDate>Fri, 07 Feb 2025 13:33:20 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">http://www.samielkady.com/?p=416</guid>

					<description><![CDATA[http://www.monitis.com/blog/2011/06/13/top-8-application-based-iis-server-performance-tips/ http://sharepointpromag.com/sharepoint-2010/top-10-sharepoint-2010-configuration-mistakes-and-how-fix-them https://www.leansentry.com/Guide/IIS-AspNet-Hangs http://forums.iis.net/t/1147420.aspx?Intermittent+Slow+Response+Times http://blog.fpweb.net/troubleshooting-sharepoint-sluggishness-server-side-issues/#.VhgNrROqpBc  ]]></description>
										<content:encoded><![CDATA[<p>http://www.monitis.com/blog/2011/06/13/top-8-application-based-iis-server-performance-tips/</p>
<p>http://sharepointpromag.com/sharepoint-2010/top-10-sharepoint-2010-configuration-mistakes-and-how-fix-them</p>
<p>https://www.leansentry.com/Guide/IIS-AspNet-Hangs</p>
<p>http://forums.iis.net/t/1147420.aspx?Intermittent+Slow+Response+Times</p>
<p>http://blog.fpweb.net/troubleshooting-sharepoint-sluggishness-server-side-issues/#.VhgNrROqpBc</p>
<p> </p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
