<?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>Techchattr</title>
	<atom:link href="http://www.techchattr.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.techchattr.com</link>
	<description>Open dialogue on all things dev</description>
	<lastBuildDate>Wed, 21 Feb 2024 16:11:46 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.0</generator>
	<item>
		<title>SEO is a critical component</title>
		<link>http://www.techchattr.com/seo-critical-component</link>
		<comments>http://www.techchattr.com/seo-critical-component#comments</comments>
		<pubDate>Fri, 05 Oct 2018 15:55:53 +0000</pubDate>
		<dc:creator><![CDATA[Feras]]></dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://www.techchattr.com/?p=369</guid>
		<description><![CDATA[<p>SEO has become a critical component to the online success of businesses. Companies including Microsoft, Facebook and Netflix have all integrated SEO into their websites, in the hopes of boosting their search engine ranking, an so far it has worked wonders, just see post to start seeing the importance of SEO. Click this over here now and read... <a class="more-link" href="http://www.techchattr.com/seo-critical-component">Continue reading <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="http://www.techchattr.com/seo-critical-component">SEO is a critical component</a> appeared first on <a rel="nofollow" href="http://www.techchattr.com">Techchattr</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>SEO has become a critical component to the online success of businesses. Companies including Microsoft, Facebook and Netflix have all integrated SEO into their websites, in the hopes of boosting their search engine ranking, an so far it has worked wonders, just <a href="https://victoriousseo.com/blog/generic-anchor-texts-strengthen-seo/">see post</a> to start seeing the importance of SEO. <a href="https://diggitymarketing.com/recommended-seo-products-and-services/">Click this over here now</a> and read the article about the benefits of using SEO.</p>
<p><strong>What is SEO?</strong></p>
<p>Back in 1998, Marc Andreessen said in his manifesto that search engines are &#8220;a very narrow algorithm&#8221;. We&#8217;ve also heard others claim that SEO is like a &#8220;blueprint&#8221; or &#8220;recipe&#8221; for success for online businesses.</p>
<p><img class="aligncenter" src="https://www.pngall.com/wp-content/uploads/2016/07/SEO-Download-PNG.png" alt="SEO PNG Transparent Images | PNG All" /></p>
<p>However, there is another way to think about SEO how it impacts you and the business you want to succeed in.  There is this <a href="https://www.blaze.me/ecom/">SEO friendly ecommerce for cannabis</a> retailers with an integrated e-commerce platform that can help businesses. From a personal perspective, it is vital for building an online business to have an understanding of what SEO does and can do for you. You can also <a href="https://www.moneyempire.io/rhinorank-review/">use a link building agency</a> to boost your digital presence and to increase their search engine rankings.</p>
<p>For example, there are a number of things that can cause lower search engine rankings, and it is important to understand the key elements of that process.</p>
<p>Many SEO myths can impact your ability to be successful. The more you know, the better your understanding of the topic and how it can be implemented in your business. You may fully understand  the reasons <a href="https://quirkydigital.com/seo-agency-london/">Why your London business needs SEO</a>.</p>
<p>Additionally, there is an array of experts such as those from the <a href="https://www.candymarketing.co.uk/seo/">Candy Marketing &#8211; seo marketing</a> agency that can help you gauge your competition and can make your website appear on top.</p>
<p><strong>Getting Started with SEO</strong></p>
<p>In order to understand and adopt the principles of SEO, you&#8217;ll need to know what SEO is and how it works. There are a few things that you need to know, in order to get started and achieve your goals.</p>
<p>SEO is only one part of building a strong online presence. To truly drive value and be effective in your online business, you&#8217;ll also need to understand how to:</p>
<ul>
<li>Establish an online presence</li>
<li>Build a niche audience</li>
<li>Target keywords</li>
<li>Create content</li>
<li>Link to your website</li>
</ul>
<p><span style="text-decoration: underline;"><strong>SEO is only one part of building an online presence</strong></span></p>
<p>Recognizing that SEO is a crucial component, yet only one facet of crafting a formidable online presence, is essential for businesses aiming to maximize their digital footprint. This multifaceted approach to digital marketing becomes especially pertinent for ecommerce businesses utilizing platforms like WooCommerce. To truly harness the power of SEO within such a framework, employing <a href="https://victorious.com/platforms/woocommerce-seo/">WooCommerce SEO services</a> can be a game-changer.</p>
<p>To get started, you&#8217;ll need to figure out where you want to lead your business in the search engine results. In a digital age, customers expect businesses to offer various payment options. Choose from the <a href="https://feecheckers.com/best-merchant-services-small-businesses-solutions/">Top 20 merchant accounts</a> to optimize your payment processes.</p>
<p>Remember, SEO isn&#8217;t the only thing you need to ensure your business succeeds. Creating a positive work environment can significantly impact your employees’ experience and your organizational goals.  In a toxic work environment, employees are constantly stressed and <a href="https://hkm.com/los-angeles/hostile-work-environment/">managing escalating work conflicts</a> can be hard.</p>
<p>The post <a rel="nofollow" href="http://www.techchattr.com/seo-critical-component">SEO is a critical component</a> appeared first on <a rel="nofollow" href="http://www.techchattr.com">Techchattr</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techchattr.com/seo-critical-component/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title></title>
		<link>http://www.techchattr.com/362</link>
		<comments>http://www.techchattr.com/362#comments</comments>
		<pubDate>Wed, 23 Mar 2016 15:25:09 +0000</pubDate>
		<dc:creator><![CDATA[Feras]]></dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://www.techchattr.com/?p=362</guid>
		<description><![CDATA[<p>SD WAN&#8217;s driving principle is to simplify the way big companies turn up new links to branch offices, thereby reducing the need for extra infrastructure. With the WAN link, we eliminate the costs of redundant towers and add up to 40,000 PCV customers directly into EGB networks, and if you want to know more about... <a class="more-link" href="http://www.techchattr.com/362">Continue reading <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="http://www.techchattr.com/362"></a> appeared first on <a rel="nofollow" href="http://www.techchattr.com">Techchattr</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTeB5YxmrkWDMVUzzxZ8zs3iDmjt7vSIVhNeQ&#038;usqp=CAU" width="315" height="160" class="alignnone" /><br />
SD WAN&#8217;s driving principle is to simplify the way big companies turn up new links to branch offices, thereby reducing the need for extra infrastructure. With the WAN link, we eliminate the costs of redundant towers and add up to 40,000 PCV customers directly into EGB networks, and if you want to know more about SD WAN you can <a href="https://www.fortinet.com/resources/cyberglossary/sd-wan-explained">see here</a> more information. Once full customer connectivity is achieved, we move to 2G/3G as fast as possible. This can take up to three days in case of particularly busy branches. Instead of 10 days, we have five to 10 days (with cost savings that we can demonstrate in marketing/performance tests).</p>
<p>&#8216;The WAN bridge will enable IT to become much more efficient by providing simple, secure, interoperable connectivity. You can also add security by having a secured internet connection (visit the <a href="https://www.EATEL.com/residential/internet/">EATEL site</a> to know more). It is also designed to make EGB an instrument of change. We hope that through the WAN bridge, EGB will become the start of a new era where all G20 members will have sufficient capacity to meet their projected future demands for service, capacity and speed. We need to realise the full potential of PCV to provide digital transformation and win the battle of &#8220;internet time&#8221;. Along with speed, you should also invest in disaster recovery services if anything bad happens. Visit sites like <a href="https://www.venyu.com/disaster-recovery-services/">https://www.venyu.com/disaster-recovery-services/</a> to find more details.</p>
<p>Click here for more details about PCCWAN and to visit PCCWAN&#8217;s website.</p>
<p>WAN link structure</p>
<p>CAS G3005/1</p>
<p>Construction</p>
<p>Consolidated view</p>
<p>All views for this map are provided by European Bridge Network (EBN)</p>
<p>The main components of the WAN bridge are:</p>
<p>An orbital uplink to the WAN satellite</p>
<p>Spatial management of data transfer between the satellite uplink and the branch offices</p>
<p>Host connectivity to the satellite uplink</p>
<p>Host connectivity to the branch offices</p>
<p>EBN support to customers, including up to 40,000 PCV customers</p>
<p>CAS G3005/1 construction</p>
<p>An orbital uplink to the WAN satellite</p>
<p>Spatial management of data transfer between the satellite uplink and the branch offices</p>
<p>Host connectivity to the satellite uplink</p>
<p>Host connectivity to the branch offices</p>
<p>CAS G3005/1 Construction</p>
<p>Host connectivity to the satellite uplink</p>
<p>Host connectivity to the branch offices</p>
<p>CAS G3005/1 Construction</p>
<p>Host connectivity to the satellite uplink</p>
<p>Host connectivity to the branch offices</p>
<p>CAS G3005/1 Construction</p>
<p>Host connectivity to the satellite uplink</p>
<p>Host connectivity to the branch offices</p>
<p>CAS G3005/1 Construction</p>
<p>Host connectivity to the satellite uplink</p>
<p>Host connectivity to the branch offices</p>
<p>CAS G3005/1 Construction</p>
<p>Host connectivity to the satellite uplink</p>
<p>Host connectivity to the branch offices</p>
<p>EBN support to customers</p>
<p>Mainframe Computer Communications System</p>
<p>CAS G3005/1 : Building a Broadband Network</p>
<p>Background Information</p>
<p>This diagram represents the &#8220;primary data connection&#8221; (PDA) for a PCV branch office,</p>
<p>currently being used for PCV VAS. All IP packets are routed and monitored on the ground.</p>
<p>Locations of PCV branch offices are represented by arrows.</p>
<p>The post <a rel="nofollow" href="http://www.techchattr.com/362"></a> appeared first on <a rel="nofollow" href="http://www.techchattr.com">Techchattr</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techchattr.com/362/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Benchmark web applications alternatives</title>
		<link>http://www.techchattr.com/benchmarking-web-applications-alternatives</link>
		<comments>http://www.techchattr.com/benchmarking-web-applications-alternatives#comments</comments>
		<pubDate>Tue, 04 Feb 2014 00:21:15 +0000</pubDate>
		<dc:creator><![CDATA[Feras]]></dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[speed]]></category>
		<category><![CDATA[test]]></category>

		<guid isPermaLink="false">http://www.techchattr.com/?p=212</guid>
		<description><![CDATA[<p>Benchmark &#8211; two load testing approaches There are two roads you can take doing that: using a single machine for the load testing or distributing it. Using a single machine to run the tests is generally easier and more hassle free, since all that is required is installing the software on that one machine and... <a class="more-link" href="http://www.techchattr.com/benchmarking-web-applications-alternatives">Continue reading <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="http://www.techchattr.com/benchmarking-web-applications-alternatives">Benchmark web applications alternatives</a> appeared first on <a rel="nofollow" href="http://www.techchattr.com">Techchattr</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p class="lead drop-cap">There are a few different ways to do benchmarking and load testing on parts of your web application stack such as the web server, the database, the cache layer etc. This article shows a somewhat comprehensive list of the alternative solutions along with some pros and cons on technology options, with the <a href="https://www.varsity.co.uk/sponsored/which-industries-have-been-revolutionized-by-technology-over-the-years">ever growing technologial solutions</a> which can be used for web applications. You are encouraged to explore those more in depth and find the solution that suits you best.</p>
<p><span id="more-212"></span></p>
<h2>Benchmark &#8211; two load testing approaches</h2>
<p>There are two roads you can take doing that: using a single machine for the load testing or <em>distributing</em> it. Using a single machine to run the tests is generally easier and more hassle free, since all that is required is installing the software on that one machine and running the test suite (ensuring good internet connection). Its generally done from another server which is not in the same datacenter to avoid biased results. More recently however with the widespread adoption of the cloud many third-part service providers have appeared that offer distributed load testing services very cheap or for free (with some limitations). There are also some tools that can be used to roll out your own distributed test rather easily. For the best data management solutions and options consider having a <a href="https://www.couchbase.com/products/cloud">database as a service</a>.</p>
<p>If you want to minimize the risk of errors or omissions in your registration process that could lead to legal issues down the line, <a href="https://singapore.acclime.com/">See Singapore Acclime</a> and talk to their experts who can help you.<br />
<a class="waffle-rich-text-link" data-sheets-formula-bar-text-link="https://www.couchbase.com/downloads" data-sheets-formula-bar-text-style="font-size:13px;color:#1155cc;font-weight:normal;text-decoration:underline;font-family:'Arial';font-style:normal;text-decoration-skip-ink:none;">.</a></p>
<div class="google_ads_center"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Techtalks responsive in content -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-7884254427679400"
     data-ad-slot="2266846376"
     data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<h2>Distributed load testing tools</h2>
<p>One of the more notable providers &#8211; <strong><a title="Loader IO pricing" href="http://loader.io/pricing" target="_blank">loader.io</a>, </strong>is a service provided by <a title="Send Grid labs" href="http://labs.sendgrid.com/" target="_blank">SendGrid Labs</a>, the guys who came up with the hugely popular mail delivery service SendGrid. The nice thing about loader.io is that it has a free tier (limitations might change, so check the link above for the pricing and restrictions), but generally even with the limitations is very usable and can provide a good insight, if you are testing only one application and/or a couple of URLs and dont need anything fancy. Being a third party service, you don&#8217;t need any specific setup, but note that you will have to verify your domain (similarly to google domain verification), before you can run any tests against it. Their pro tier is currently only available with a monthly subscription and it&#8217;s not on the cheap side ($99 at the time of writing this), which makes it not very suitable for people who want to run tests ad-hoc here and there.</p>
<p>A competitive service is <a title="Blitz.io load testing service" href="https://www.blitz.io/" target="_blank">Blits.IO</a>. It&#8217;s very similar to loader.io, but their free tier is a bit worse. That said, they offer a pay-as-you go plan, based on credits, so you don&#8217;t need to subscribe in order to use the service for more comprehensive tests. Subscriptions are also based on credits, but they come up at a discount. The UI for both services is pretty good and user friendly, however the development tools and API that blitz offers is much better and comprehensive. The service is entirely oriented towards developers and integrating it in the development lifecycle, with api client libraries for most popular languages. As an added bonus, it also supports application monitoring with different types of loads.</p>
<p>If you are the kind of person who doesn&#8217;t want the fancy graphs and reports and prefers to do it himself, you may want to have a look at the <a href=" https://github.com/newsapps/beeswithmachineguns" target="_blank">beeswithmachineguns</a> python load testing tool. It was originally developed for use by the Chicago Tribune and was later open-sourced. This tool requires python (with some other dependencies) and an <strong>AWS</strong> account. It basically spins as many AWS micro instances as you need and runs ApacheBench(ab, which we will review later on) on every single one of them and provides a cumulative report from all the instances. Depending on the length of tests and number of machines, this can be the cheapest of the three approaches, but it requires some setup and is limited by all the limitations that ApacheBench has because of its reliance on it.
<div class="alert info">Note: If you are enthusiastic, it will be fairly simple to modify the code to run another benchmark tool, instead of ApacheBench and distribute it across AWS instances.</div>
<div class="google_ads_center"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Techtalks responsive in content -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-7884254427679400"
     data-ad-slot="2266846376"
     data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<h2>Local load testing tools</h2>
<p>The alternative approach is to run some applications, either on your development machine or better on some dedicated machine for that purpose with solid hardware and internet connection (depending on the amount of loads you will be putting, generally the more cores the better).</p>
<p>By far the most widely used tool for the purpose is <a href="http://httpd.apache.org/docs/2.2/programs/ab.html" target="_blank">ApacheBench (ab)</a> which ships with most Apache web server distributions. The tool is very easy to use for quick and dirty tests but has some limitations:</p>
<ul class="icons icon-minus-list">
<li>you can only test against one url at a time (there are workarounds, but they aren&#8217;t really worth it)</li>
<li>there is a hard set limit on the maximum concurrency</li>
<li>it&#8217;s quite unreliable on OSX and Windows</li>
</ul>
<p>Another alternative is <a href="http://www.joedog.org/siege-home/" target="_blank">Siege</a>. It gets around some of the ApacheBench limitations, mainly by allowing you to test multiple URL at once, specified in a text file. It supports basic authentication, http and https and can run tests both based on number of requests and time. A big limitation to siege is that its implementation is based on threads, which means you cannot run many concurrent requests (thousands) and there is quite a bit of a performance hit due to the context switching. There is no support for Windows. Generally though, Siege is good enough for most purposes and unless you are testing very high loads, it might a be a good fit for you.</p>
<p>If all you need is maximum throughput, you can try a small neat tool called <a href="https://github.com/cmpxchg16/gobench" target="_blank">gobench</a>. Its implemented in <a href="http://golang.org/" target="_blank">Go</a>, and doesn&#8217;t include any fancy features, its sole purpose is high throughput. There are some interesting benchmarks on the project page comparing results to Siege and ApacheBench.</p>
<h2>Prefer a gui?</h2>
<p>If you prefer to have nicer graphs and a decent GUI, there are a few other options that provide A LOT more flexibility and better UI for testing. The two most popular once are <a href="http://jmeter.apache.org/" target="_blank">Jmeter</a> and <a href="http://grinder.sourceforge.net/" target="_blank">Grinder</a>. Both are Java solutions, so they work cross-platform, but both are also based on threads, which means they have the same constraints as mentioned above (limit on the concurrency and performance hit with higher concurrency numbers). The two are fairly easy to run, but you will have to do some documentation reading, since they come with a tremendous amount of options. Jmeter can be customized in a million different ways to simulate a real-world application usage during testing. The same can be done with Grinder, however it also supports a built-in scripting language for even finer control over the test (you can script your tests in Python).</p>
<p>A little bit better alternative to those tools in my opinion is <a href="http://gatling-tool.org/" target="_blank">Gatling</a>. It also is a Java application, but it provides a neat web-based interface. It doesn&#8217;t have as many options as Jmeter to specify from the UI, but it has a powerful DSL language that you can use to script your tests (similar to Grinder, but simpler). The biggest advantage though, is that this application is not based on threads but on events and async IO, which means it can put higher loads with better concurrency.</p>
<div class="google_ads_center"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Techtalks responsive in content -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-7884254427679400"
     data-ad-slot="2266846376"
     data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<p>Some of the other tools that you can check out:</p>
<ul class="icons icon-hand-right-list">
<li><a href="http://pylot.org/" target="_blank">Pylot (python)</a></li>
<li><a href="http://tsung.erlang-projects.org/" target="_blank">Tsung (Erlang) </a></li>
<li><a href="https://code.google.com/p/httperf/" target="_blank">httperf ( C, originally by HP)</a></li>
</ul>
<p>The post <a rel="nofollow" href="http://www.techchattr.com/benchmarking-web-applications-alternatives">Benchmark web applications alternatives</a> appeared first on <a rel="nofollow" href="http://www.techchattr.com">Techchattr</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techchattr.com/benchmarking-web-applications-alternatives/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tmux tutorial, multiscreen terminal and a better ssh experience</title>
		<link>http://www.techchattr.com/tmux-tutorial-multiscreen-terminal-better-ssh-experience</link>
		<comments>http://www.techchattr.com/tmux-tutorial-multiscreen-terminal-better-ssh-experience#comments</comments>
		<pubDate>Tue, 24 Dec 2013 16:54:07 +0000</pubDate>
		<dc:creator><![CDATA[Feras]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[tmux]]></category>

		<guid isPermaLink="false">http://www.techchattr.com/?p=226</guid>
		<description><![CDATA[<p>Installing tmux on Centos 5.x or 6.x At the time of writing this article tmux is available in the RHEL EPEL repository. I won&#8217;t go into details explaining how to add the EPEL repository and install additional software from it, but this article from the Rackspace knowledge center gives a pretty detailed and straightforward explanation on... <a class="more-link" href="http://www.techchattr.com/tmux-tutorial-multiscreen-terminal-better-ssh-experience">Continue reading <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="http://www.techchattr.com/tmux-tutorial-multiscreen-terminal-better-ssh-experience">Tmux tutorial, multiscreen terminal and a better ssh experience</a> appeared first on <a rel="nofollow" href="http://www.techchattr.com">Techchattr</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p class="lead drop-cap">Tmux is a terminal multiplexer, that is a piece of software that allows you access to multiple terminal sessions from a single terminal window. It is extremely useful when doing maintenance on some server via SSH because it will allow you to simultaneously see the output of multiple terminal commands at the same time without having to run multiple ssh sessions.</p>
<p><span id="more-226"></span></p>
<h2>Installing tmux on Centos 5.x or 6.x</h2>
<p>At the time of writing this article <strong>tmux</strong> is available in the RHEL EPEL repository. I won&#8217;t go into details explaining how to add the EPEL repository and install additional software from it, but this article from the Rackspace knowledge center gives a pretty detailed and straightforward explanation on how to do it:</p>
<p><a title="Installing RHEL EPEL on Centos 5.x or 6.x" href="http://www.rackspace.com/knowledge_center/article/installing-rhel-epel-repo-on-centos-5x-or-6x" target="_blank">Installing RHEL EPEL repo on Centos 5.x or 6.x</a></p>
<p>After you have completed the steps outlined there you just have to run:</p>
<pre class="brush: plain; title: ; notranslate">yum install tmux</pre>
<div class="google_ads_center"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Techtalks responsive in content -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-7884254427679400"
     data-ad-slot="2266846376"
     data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<h2>Installing tmux on Ubuntu</h2>
<p>The process for Ubuntu is much more simple given that you are running a recent enough version. The &lt;strong&gt;tmux &lt;/strong&gt;package is included in the base repository so its just a matter of:</p>
<pre class="brush: plain; title: ; notranslate">
sudo apt-get update
sudo apt-get install tmux
</pre>
<h2>Using tmux</h2>
<p>After tmux is installed by following the instructions above start by typing this in the terminal</p>
<pre class="brush: plain; title: ; notranslate">tmux</pre>
<p>You will notice that the terminal slightly changes to something like the one shown in the image</p>
<div id="attachment_234" style="width: 310px" class="wp-caption aligncenter"><a href="http://www.techchattr.com/wp-content/uploads/2013/12/tmux_shell.png"><img class="size-medium wp-image-234 " src="http://www.techchattr.com/wp-content/uploads/2013/12/tmux_shell-300x187.png" alt="Tmux shell in action" width="300" height="187" /></a><p class="wp-caption-text">Tmux shell in action</p></div>
<p>This is essentially a new terminal with the default shell logged in as your current user account. It looks somewhat different from a traditional terminal session in the sense that it shows a green (by default, but can be changed) status bar with additional information such as the number of active sessions and which is the current session you are working on. The current page that you see on your screen is referred to as a &#8220;window&#8221; in the <strong>tmux</strong> context. You can have multiple windows, which operate similarly to having multiple browser tabs open and furthermore you can split each window into multiple panes and execute commands in each pane.</p>
<p>In order to interact with <strong>tmux </strong>you need to first press the control key, which by default is <code>CTRL-B</code>. After that you can press one of the following keys for the most basic actions (first press ctrl-b, then release and then press one of the following):</p>
<table style="height: 174px;" width="100%">
<tbody>
<tr>
<th>Key</th>
<th>Result</th>
</tr>
<tr>
<td>c</td>
<td>Create a new window</td>
</tr>
<tr>
<td>n</td>
<td>Change to next window</td>
</tr>
<tr>
<td>p</td>
<td>Change to previous window</td>
</tr>
<tr>
<td>&#8220;</td>
<td>Split pane horizontally</td>
</tr>
<tr>
<td>%</td>
<td>Split pane vertically</td>
</tr>
<tr>
<td>,</td>
<td>Rename current window</td>
</tr>
<tr>
<td>o</td>
<td>Move to next pane</td>
</tr>
</tbody>
</table>
<div class="google_ads_center"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Techtalks responsive in content -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-7884254427679400"
     data-ad-slot="2266846376"
     data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<p>If you choose to rename the current window, you will see the changes reflected in the status bar of <strong>tmux </strong>in the list of all current windows. That is convenient to keep track of long-running tasks you are monitoring. When using the &#8220;o&#8221; shortcut to move between panes keep in mind the order (panes are numbered left-to-right, top-down). For faster navigation you can also use the keyboard arrows to switch between panes, so if you press <code>CTRL-B</code> and then one of the keyboard arrows the pane in the direction of the arrow will be activated. You can close the current panel, by typing <strong>exit </strong>in it, which will cause the other panes in the window to adapt and fill the entire space. If you dont have any other panes in the window, typing <code>exit</code> will close that window and if it&#8217;s the last window, it will close <strong>tmux </strong>and return to the session that launched it.</p>
<h2>Advanced usage</h2>
<p>What happens under the hood is actually a bit more complicated. <b>Tmux </b>runs in a client-server mode, where each time you launch <strong>tmux </strong>a new sessions is created and the client is attached to that session. This gives you quite a bit of flexibility since you can &#8220;detach&#8221; the client from a certain session and let it run in background and then later re-attach to it and continue where you left off, having all the windows and panes saved in the same state. In order to detach from the current session hit the <span class="highlight">control key + d:</span><code>CTRL-B + D</code></p>
<p>After you have detached from a session you are returned back in the session that launched <strong>tmux.</strong> You can type:</p>
<pre class="brush: plain; title: ; notranslate">tmux list-sessions</pre>
<p>and this will give you a list of currently active sessions like the one below. Note that the left most number is the session ID, which you can use to attach back to that session. This output also gives some information about the running sessions, such as number of windows, date created, size, etc.</p>
<div id="attachment_243" style="width: 310px" class="wp-caption aligncenter"><a href="http://www.techchattr.com/wp-content/uploads/2013/12/tmux-sessions.png"><img class="size-medium wp-image-243 " src="http://www.techchattr.com/wp-content/uploads/2013/12/tmux-sessions-300x52.png" alt="Currently active tmux sessions" width="300" height="52" /></a><p class="wp-caption-text">Currently active tmux sessions</p></div>
<p>In order to attach back to a running session, look at the id of that session in the output above and type (change the 0 to the id of the desired session):</p>
<pre class="brush: plain; title: ; notranslate">tmux attach -t 0</pre>
<p>and this will bring you back to the same state that you left of, with the exact same window and panes arrangement.</p>
<h2>Scripting in tmux</h2>
<p>A really powerfull feature of <strong>tmux </strong>is that you can write scripts for it. I won&#8217;t go into details about that and the <a title="Tmux manual page" href="http://www.openbsd.org/cgi-bin/man.cgi?query=tmux&amp;sektion=1" target="_blank">man</a> page provides pretty good description of the commands and options you can use.</p>
<p>The post <a rel="nofollow" href="http://www.techchattr.com/tmux-tutorial-multiscreen-terminal-better-ssh-experience">Tmux tutorial, multiscreen terminal and a better ssh experience</a> appeared first on <a rel="nofollow" href="http://www.techchattr.com">Techchattr</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techchattr.com/tmux-tutorial-multiscreen-terminal-better-ssh-experience/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>PHP imagecreatefromjpeg memory limit error</title>
		<link>http://www.techchattr.com/php-imagecreatefromjpeg-memory-limit-error</link>
		<comments>http://www.techchattr.com/php-imagecreatefromjpeg-memory-limit-error#comments</comments>
		<pubDate>Mon, 21 Oct 2013 18:51:41 +0000</pubDate>
		<dc:creator><![CDATA[Feras]]></dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.techchattr.com/?p=148</guid>
		<description><![CDATA[<p>Sometimes when you are dealing with relatively large images, functions such as imagecreatefromjpeg, return errors like the one below. The reason behind this is that the amount of memory that needs to be allocated for the image, doesn&#8217;t depend directly on the image size in terms of KB or MB. It isrelated to other properties... <a class="more-link" href="http://www.techchattr.com/php-imagecreatefromjpeg-memory-limit-error">Continue reading <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="http://www.techchattr.com/php-imagecreatefromjpeg-memory-limit-error">PHP imagecreatefromjpeg memory limit error</a> appeared first on <a rel="nofollow" href="http://www.techchattr.com">Techchattr</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Sometimes when you are dealing with relatively large images, functions such as <a href="http://php.net/manual/en/function.imagecreatefromjpeg.php" target="_blank">imagecreatefromjpeg</a>, return errors like the one below.</p>
<p><span id="more-148"></span></p>
<div class="alert error">Allowed memory size of X bytes exhausted</div>
<p>The reason behind this is that the amount of memory that needs to be allocated for the image, doesn&#8217;t depend directly on the image size in terms of KB or MB. It isrelated to other properties such as dimensions in pixels, channels, bits, etc. One way to get around this issue would be to force the processed images to have some maximum dimensions, which will be in line with your <code>memory_limit</code> PHP setting. However if that is not an option and you need to be able to handle arbitrary image sizes, there are 2 ways to go about it:</p>
<div class="google_ads_center"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Techtalks responsive in content -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-7884254427679400"
     data-ad-slot="2266846376"
     data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<h2>Method 1</h2>
<p>Just increase the amount of memory allocated to the PHP process, by increasing the <code>memory_limit</code> either in php.ini or per request using <a href="http://php.net/manual/en/function.ini-set.php" target="_blank">ini_set</a></p>
<h2>Better way</h2>
<p>A better way of doing it, instead of increasing the memory amount to an arbitrary value (which may not be high enough in certain cases, or might be too high) is to try and dynamically calculate the amount of memory that the operation will take and then set the <code>memory_limit</code> to that pre-calculated amount. The following snippet is originally posted by K.Tamutis on the php manual and it does the job just fine:</p>
<pre class="brush: php; title: ; notranslate">
$imageInfo = getimagesize('PATH/TO/YOUR/IMAGE'); 
$memoryNeeded = round(($imageInfo[0] * $imageInfo[1] * $imageInfo['bits'] * $imageInfo['channels'] / 8 + Pow(2,16)) * 1.65); 
if (function_exists('memory_get_usage') &amp;&amp; memory_get_usage() + $memoryNeeded (integer) ini_get('memory_limit') *pow(1024, 2)) {
 ini_set('memory_limit', (integer) ini_get('memory_limit') + ceil(((memory_get_usage() + $memoryNeeded) - (integer) ini_get('memory_limit') * pow(1024, 2)) / pow(1024, 2)) . 'M'); 
}
</pre>
<p>The post <a rel="nofollow" href="http://www.techchattr.com/php-imagecreatefromjpeg-memory-limit-error">PHP imagecreatefromjpeg memory limit error</a> appeared first on <a rel="nofollow" href="http://www.techchattr.com">Techchattr</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techchattr.com/php-imagecreatefromjpeg-memory-limit-error/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Openssl not working in windows (SSLEAY32.dll error)</title>
		<link>http://www.techchattr.com/openssl-working-windows-ssleay32-dll-error</link>
		<comments>http://www.techchattr.com/openssl-working-windows-ssleay32-dll-error#comments</comments>
		<pubDate>Mon, 21 Oct 2013 18:24:20 +0000</pubDate>
		<dc:creator><![CDATA[Feras]]></dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[lamp]]></category>
		<category><![CDATA[OpenSSL]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.techchattr.com/?p=145</guid>
		<description><![CDATA[<p>It turns out that the problem is related to the built in distribution of OpenSSL that ships with some WAMP versions. In order to correct it you would need to download and install the Windows version of OpenSSL from here: http://slproweb.com/products/Win32OpenSSL.html Choose the latest 64 or 32 bit version according to your setup, the light... <a class="more-link" href="http://www.techchattr.com/openssl-working-windows-ssleay32-dll-error">Continue reading <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="http://www.techchattr.com/openssl-working-windows-ssleay32-dll-error">Openssl not working in windows (SSLEAY32.dll error)</a> appeared first on <a rel="nofollow" href="http://www.techchattr.com">Techchattr</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p class="lead drop-cap">Recently I had to setup a self signed certificate for a Windows Apache setup. This of course requires the usage of openssl. However openssl returned the following error code when trying to use it:</p>
<p><span id="more-145"></span></p>
<div class="alert error">The ordinal 296 could not be located in the dynamic link library SSLEAY32.dll</div>
<p>It turns out that the problem is related to the built in distribution of OpenSSL that ships with some WAMP versions. In order to correct it you would need to download and install the Windows version of <strong>OpenSSL</strong> from here:</p>
<p><a href="http://slproweb.com/products/Win32OpenSSL.html" target="_blank">http://slproweb.com/products/Win32OpenSSL.html</a></p>
<p>Choose the latest 64 or 32 bit version according to your setup, the light versions should be fine for our purposes. The one I used when writing this article was</p>
<p><a href="http://slproweb.com/download/Win64OpenSSL_Light-0_9_8y.exe">Win64 OpenSSL v0.9.8y Light</a></p>
<p>After <strong>OpenSSL</strong> is installed, go to the install location and copy the following three files (they might be spread across folders depending on the version and architecture):<br />
<code>ssleay32.dll</code><br />
<code>libeay32.dll</code><br />
<code>openssl.exe</code></p>
<p>and paste them to your <code>apache/bin</code> folder, overwriting any existing ones. That fixed it for me.</p>
<div class="google_ads_center"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Techtalks responsive in content -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-7884254427679400"
     data-ad-slot="2266846376"
     data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<p>The post <a rel="nofollow" href="http://www.techchattr.com/openssl-working-windows-ssleay32-dll-error">Openssl not working in windows (SSLEAY32.dll error)</a> appeared first on <a rel="nofollow" href="http://www.techchattr.com">Techchattr</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techchattr.com/openssl-working-windows-ssleay32-dll-error/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>How to read Excel files with PHP</title>
		<link>http://www.techchattr.com/how-to-read-excel-files-with-php</link>
		<comments>http://www.techchattr.com/how-to-read-excel-files-with-php#comments</comments>
		<pubDate>Mon, 02 Sep 2013 21:40:16 +0000</pubDate>
		<dc:creator><![CDATA[Feras]]></dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[csv]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[import]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[xls]]></category>

		<guid isPermaLink="false">http://www.techchattr.com/?p=102</guid>
		<description><![CDATA[<p>Installing PHPExcel The first step in working with Excel documents in PHP will be to install the PHPExcel library. I will do that by using composer. If you are not familiar, you should definitely have a look at it and use it for your project&#8217;s dependency management. The composer.json file is very simple: Then you need... <a class="more-link" href="http://www.techchattr.com/how-to-read-excel-files-with-php">Continue reading <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="http://www.techchattr.com/how-to-read-excel-files-with-php">How to read Excel files with PHP</a> appeared first on <a rel="nofollow" href="http://www.techchattr.com">Techchattr</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p class="lead drop-cap">Reading Excel files with PHP can be tricky, but fortunately there is a great library that makes this task a lot easier: <a href="http://phpexcel.codeplex.com/" target="_blank">PHPExcel</a>. In the following article I will show you how to use it to convert the excel sheets into PHP arrays and use the data in PHP.</p>
<p><span id="more-102"></span></p>
<h2>Installing PHPExcel</h2>
<p>The first step in working with Excel documents in PHP will be to install the <a href="http://phpexcel.codeplex.com/" target="_blank">PHPExcel</a> library. I will do that by using <a href="http://getcomposer.org/" target="_blank">composer</a>. If you are not familiar, you should definitely have a look at it and use it for your project&#8217;s dependency management. The composer.json file is very simple:</p>
<pre class="brush: plain; title: ; notranslate">
{
 &quot;require&quot;:
   {
      &quot;phpoffice/phpexcel&quot;: &quot;dev-develop&quot;
   }
}
</pre>
<p>Then you need to install the dependencies with composer, which will take a few seconds to complete:</p>
<pre class="brush: plain; title: ; notranslate">composer.phar install</pre>
<p>You will notice that the library was downloaded and installed in the project_root/vendor/phpexcel directory alongside with the project_root/vendor/composer directory and a vendor/autoload.php file which was automatically generated to take care of autoloading the classes for the library.</p>
<div class="google_ads_center"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Techtalks responsive in content -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-7884254427679400"
     data-ad-slot="2266846376"
     data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<h2>Step 1 &#8211; Load the file in PHPExcel</h2>
<p>There are 2 basic ways to load the file into PHPExcel by using any type of operating system on any <a href="https://www.adifferentversion.com/best-laptops-with-a-sim-card-slot/">laptops with sim card</a>. You can specify one of the supported file types manually or you can let the library determine the file type automatically based on the file that you supply. Here is the required code for both and a list of the supported file types that you can choose from if you decide to explicitly define the file type:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
require_once &quot;vendor/autoload.php&quot;;

$fileName = &quot;sample.xlsx&quot;;

/** automatically detect the correct reader to load for this file type */
$excelReader = PHPExcel_IOFactory::createReaderForFile($fileName);

/** Create a reader by explicitly setting the file type.
// $inputFileType = 'Excel5';
// $inputFileType = 'Excel2007';
// $inputFileType = 'Excel2003XML';
// $inputFileType = 'OOCalc';
// $inputFileType = 'SYLK';
// $inputFileType = 'Gnumeric';
// $inputFileType = 'CSV';
$excelReader = PHPExcel_IOFactory::createReader($inputFileType);
*/
</pre>
<h2>Step 2 &#8211; Define the reader options</h2>
<p>I won&#8217;t go into much details about the different options you can use, because they are quite a few, but I will point out the most common and useful ones.</p>
<pre class="brush: php; title: ; notranslate">//if we dont need any formatting on the data
$excelReader-&gt;setReadDataOnly();

//load only certain sheets from the file
$loadSheets = array('Sheet1', 'Sheet2');
$excelReader-&gt;setLoadSheetsOnly($loadSheets);

//the default behavior is to load all sheets
$excelReader-&gt;setLoadAllSheets();</pre>
<p><div class="google_ads_center"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Techtalks responsive in content -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-7884254427679400"
     data-ad-slot="2266846376"
     data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>These are pretty straightforward. Make sure you only load the sheets that you need to use since the library can use a lot of memory especially for large files. Also the <code>setReadDataOnly</code> method helps speed things up a bit by only loading the data from the cells without any special excel formatting. You have to be aware though that any date formatting will be lost if you use this option and dates will be loaded as numbers with no formatting.</p>
<p>A more interesting feature is the ability to add filters to the reader object. This allows to only load certain columns and rows or load the excel data in chunks, which is especially useful if you are doing some sort of a database import. I will provide a basic example of both filters. The following read filter will instruct the reader to only load the data in rows 1 to 10 from columns A to C. You can of course put much more advanced logic in the filters, making them pull different rows and columns from different sheets.</p>
<pre class="brush: php; title: ; notranslate">&lt;?php
class SampleReadFilter implements PHPExcel_Reader_IReadFilter {
    public function readCell($column, $row, $worksheetName = '') {
        // Read rows 1 to 10 and columns A to C only
        if ($row &gt;= 1 &amp;&amp; $row &lt;= 7) {
           if (in_array($column,range('A','C'))) {
             return true;
           }
        }
        return false;
    }
}</pre>
<p>After we have created the filter, we need to pass it to the reader object:</p>
<pre class="brush: php; title: ; notranslate">$sampleFilter = new SampleReadFilter();
$objReader-&gt;setReadFilter($chunkFilter);</pre>
<h2>Step 3 &#8211; Load and display the data</h2>
<p>The final step is to load the excel data into PHP.</p>
<pre class="brush: php; title: ; notranslate">$excelObj = $excelReader-&gt;load($fileName);</pre>
<p>This will produce a PHPExcel object, but in order to easily modify and transform the data to suit our needs its better to convert it to an array.</p>
<pre class="brush: php; title: ; notranslate">
$excelObj-&gt;getActiveSheet()-&gt;toArray(null, true,true,true);
</pre>
<p>Keep in mind that PHPExcel will only display the information on the currently active sheet, which is the last loaded one. You can however manually switch between sheets and get their contents or you can automate the process and get all sheets as one array:</p>
<pre class="brush: php; title: ; notranslate">//get all sheet names from the file
$worksheetNames = $excelObj-&gt;getSheetNames($fileName);
$return = array();
foreach($worksheetNames as $key =&gt; $sheetName){
//set the current active worksheet by name
$excelObj-&gt;setActiveSheetIndexByName($sheetName);
//create an assoc array with the sheet name as key and the sheet contents array as value
$return[$sheetName] = $excelObj-&gt;getActiveSheet()-&gt;toArray(null, true,true,true);
}
//show the final array
var_dump($return);</pre>
<h2>Loading data in chunks</h2>
<p>The approach outlined above is fine in most cases, but if you need to load some information for example in a database and you dont need the entire excel file loaded at once it will be much faster to split it in chunks and work with each individual chunk at a time. To do that we need a simple read filter:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
class ChunkReadFilter implements PHPExcel_Reader_IReadFilter
{
private $_startRow = 0;
private $_endRow = 0;

/** Set the list of rows that we want to read */
public function setRows($startRow, $chunkSize) {
$this-&gt;_startRow = $startRow;
$this-&gt;_endRow = $startRow + $chunkSize;
}

public function readCell($column, $row, $worksheetName = '') {
// Only read the heading row, and the configured rows
if (($row == 1) || ($row &gt;= $this-&gt;_startRow &amp;&amp; $row &lt; $this-&gt;_endRow)) {
return true;
}
return false;
}
}

/** Define how many rows we want to read for each &quot;chunk&quot; **/
$chunkSize = 2048;
/** Create a new Instance of our Read Filter **/
$chunkFilter = new chunkReadFilter();

/** Tell the Reader that we want to use the Read Filter **/
$excelReader-&gt;setReadFilter($chunkFilter);

/** Loop to read our worksheet in &quot;chunk size&quot; blocks **/
for ($startRow = 2; $startRow &lt;= 65536; $startRow += $chunkSize) {
/** Tell the Read Filter which rows we want this iteration **/
$chunkFilter-&gt;setRows($startRow,$chunkSize);
/** Load only the rows that match our filter **/
$excelObj = $excelReader-&gt;load($inputFileName);
$data = $excelObj-&gt;getActiveSheet()-&gt;toArray(null, true,true,true);
// Do some processing here - the $data variable will contain an array which is always limited to 2048 elements regardless of the size of the entire sheet

}</pre>
<div class="google_ads_center"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Techtalks responsive in content -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-7884254427679400"
     data-ad-slot="2266846376"
     data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<p>The post <a rel="nofollow" href="http://www.techchattr.com/how-to-read-excel-files-with-php">How to read Excel files with PHP</a> appeared first on <a rel="nofollow" href="http://www.techchattr.com">Techchattr</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techchattr.com/how-to-read-excel-files-with-php/feed</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Alternative Fast Android Emulator &#8211; Genymotion</title>
		<link>http://www.techchattr.com/fast-android-emulator-genymotion</link>
		<comments>http://www.techchattr.com/fast-android-emulator-genymotion#comments</comments>
		<pubDate>Sun, 11 Aug 2013 19:59:36 +0000</pubDate>
		<dc:creator><![CDATA[Feras]]></dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[emulator]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.techchattr.com/?p=89</guid>
		<description><![CDATA[<p>Introduction Some of you probably already tried an alternative approach to the stock Android emulator by installing the Android OS in a virtual machine. There are a couple of guides on how to do that with VirtualBox for example: How to install Android in VirtualBox Android 4.0 in VirtualBox Android 4.0 in VirtualBox YouTube video... <a class="more-link" href="http://www.techchattr.com/fast-android-emulator-genymotion">Continue reading <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="http://www.techchattr.com/fast-android-emulator-genymotion">Alternative Fast Android Emulator &#8211; Genymotion</a> appeared first on <a rel="nofollow" href="http://www.techchattr.com">Techchattr</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p class="lead drop-cap">There is no doubt that one of the most tedious parts of the Android development is the Android emulator that comes in the Android SDK. Its extremely slow and buggy. Fortunately the guys at Genymobile came up with a nice and easy alternative to the stock Android emulator that is much faster and responsive.</p>
<p><span id="more-89"></span></p>
<h2>Introduction</h2>
<p>Some of you probably already tried an alternative approach to the stock Android emulator by installing the Android OS in a virtual machine. There are a couple of guides on how to do that with <a href="https://www.virtualbox.org/" target="_blank">VirtualBox</a> for example:</p>
<p><a title="How to install Android in VirtualBox" href="http://www.howtogeek.com/164570/how-to-install-android-in-virtualbox/" target="_blank">How to install Android in VirtualBox</a></p>
<p><a title="Android 4.0 in VirtualBox" href="http://www.kirsle.net/blog/kirsle/android-4-0-in-virtualbox" target="_blank">Android 4.0 in VirtualBox</a></p>
<p><a href="http://www.youtube.com/watch?v=FoWCp6ZeODw" target="_blank">Android 4.0 in VirtualBox YouTube video</a></p>
<p>Although this workaround works fine its tricky to manually go over installing different versions and you usually have to restart the VM to change the resolution and other settings.</p>
<h2>Quick overview</h2>
<p>Instead you can head over to <a title="genymotion" href="http://www.genymotion.com/" target="_blank">genymotion</a> and download the genimotion emulator. It requires <a href="https://www.virtualbox.org/" target="_blank">VirtualBox</a> as a dependency in order to install its AndroVM VirtualBox package that does all the magic. After you have downloaded and installed VirtualBox and genymotion, you will be required to log in with the credentials you created to download the application in order to use it. The interface is pretty straightforward and you can easily add, delete or launch different device/screen/android version combinations.</p>
<p>Here is how the home screen looks like:</p>
<p style="text-align: center;"><a href="http://www.techchattr.com/wp-content/uploads/2013/08/Screen-Shot-2013-10-08-at-4.15.52-PM.png"><img class="size-medium wp-image-140 aligncenter" src="http://www.techchattr.com/wp-content/uploads/2013/08/Screen-Shot-2013-10-08-at-4.15.52-PM-300x232.png" alt="Genymotion Android Emulator Home Screen" width="300" height="232" /></a></p>
<div class="google_ads_center"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Techtalks responsive in content -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-7884254427679400"
     data-ad-slot="2266846376"
     data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<p>After you have setup some virtual devices in the home screen above you can proceed to launching them ( you will notice the great difference in terms of performance and responsiveness of the emulator device as compared to the original Android emulator that comes with the Android SDK ). After you have a running emulator device, you can also start the &#8220;Genymotion Shell&#8221;, to gain shell access to the device:</p>
<p style="text-align: center;"><a href="http://www.techchattr.com/wp-content/uploads/2013/08/Screen-Shot-2013-10-08-at-4.16.06-PM.png"><img class="size-medium wp-image-139 aligncenter" title="Genymotion Shell" src="http://www.techchattr.com/wp-content/uploads/2013/08/Screen-Shot-2013-10-08-at-4.16.06-PM-300x193.png" alt="Genymotion Android Emulator Shell" width="300" height="193" /></a></p>
<p>You can also search for the <code>Genymotion Plugin</code> in AndroidStudio plugins section so you can use the new emulator straight from the IDE.</p>
<p>The post <a rel="nofollow" href="http://www.techchattr.com/fast-android-emulator-genymotion">Alternative Fast Android Emulator &#8211; Genymotion</a> appeared first on <a rel="nofollow" href="http://www.techchattr.com">Techchattr</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techchattr.com/fast-android-emulator-genymotion/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Galaxy S3 USB connect to Mac OS X</title>
		<link>http://www.techchattr.com/galaxy-s3-usb-connect-to-mac-os-x</link>
		<comments>http://www.techchattr.com/galaxy-s3-usb-connect-to-mac-os-x#comments</comments>
		<pubDate>Thu, 16 May 2013 14:53:06 +0000</pubDate>
		<dc:creator><![CDATA[Feras]]></dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[galaxy s3]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[usb]]></category>

		<guid isPermaLink="false">http://www.techchattr.com/?p=76</guid>
		<description><![CDATA[<p>After installing it on your mac, connect the device and open Kies, it will show a working status and after that you will have access to both your SD card and internal storage via the Kies application, you can also install a Spy App Review for Xnspy for work or as personal use. Unfortunately the... <a class="more-link" href="http://www.techchattr.com/galaxy-s3-usb-connect-to-mac-os-x">Continue reading <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="http://www.techchattr.com/galaxy-s3-usb-connect-to-mac-os-x">Galaxy S3 USB connect to Mac OS X</a> appeared first on <a rel="nofollow" href="http://www.techchattr.com">Techchattr</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p class="lead drop-cap">This is just a quick note to <span class="highlight"><strong>Galaxy S3</strong> </span>users who have the North American version <strong>i747 </strong>and have issues connecting it to a mac. If you want to transfer all kinds of files and not only your pictures you should download the <a title="Samsung Kies" href="http://www.samsung.com/ca/support/usefulsoftware/KIES/JSP" target="_blank">Samsung Kies</a> software.</p>
<p><span id="more-76"></span></p>
<p><div class="google_ads_center"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Techtalks responsive in content -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-7884254427679400"
     data-ad-slot="2266846376"
     data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div><br />
After installing it on your mac, connect the device and open Kies, it will show a working status and after that you will have access to both your SD card and internal storage via the Kies application, you can also install a Spy App Review for <a href="https://www.pctattletale.com/blog/4128/xnspy-review-2020/">Xnspy</a> for work or as personal use. Unfortunately the application is quite buggy, very slow and has the tendency to suck laptop battery life on a mac if you leave it in the background, so as soon as you finish a transfer I would suggest to quit it.</p>
<p>If you still have trouble connecting the phone to a Mac with Kies installed, try:</p>
<ol>
<li><strong>Updating the Kies application</strong></li>
<li><strong>Enable/Disable USB debugging in the phone settings</strong></li>
<li><strong>Get a more solid USB cable ( the factory one is very unreliable and even if the phone is charging it may not connect as a storage device )</strong></li>
</ol>
<p>If everything you want is to just transfer a few photos from the phone to the Mac, you actually don&#8217;t need Kies, after you connect the phone to the computer, go to the Connection settings on the phone and instead of connected as a media device (MTP), select connected as a Camera device (PTP), at which point iPhoto will detect it automatically and allow you to manage it via the iPhoto application.</p>
<p>If you are using a custom ROM such as <code>Cyanogenmod</code> or another non-samsung device, chances are that Kies won&#8217;t work. In that case you need the <a title="Android File Transfer application" href="http://www.android.com/filetransfer/" target="_blank">Android file transfer application</a>.</p>
<p>Keep in mind <code>Android File transfer</code> and <code>Kies</code> <span class="highlight">are not compatible</span> as of the time of this post. When you install both they won&#8217;t work, which of course is a big problem if you have one mac and two Android users with devices from different vendors.</p>
<p>The post <a rel="nofollow" href="http://www.techchattr.com/galaxy-s3-usb-connect-to-mac-os-x">Galaxy S3 USB connect to Mac OS X</a> appeared first on <a rel="nofollow" href="http://www.techchattr.com">Techchattr</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techchattr.com/galaxy-s3-usb-connect-to-mac-os-x/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Setting up a new CentOS 6 web server with nginx and php-fpm</title>
		<link>http://www.techchattr.com/setting-up-a-new-centos-6-web-server-with-nginx-and-php-fpm</link>
		<comments>http://www.techchattr.com/setting-up-a-new-centos-6-web-server-with-nginx-and-php-fpm#comments</comments>
		<pubDate>Tue, 02 Apr 2013 18:53:42 +0000</pubDate>
		<dc:creator><![CDATA[Feras]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://www.techchattr.com/?p=60</guid>
		<description><![CDATA[<p>Basic SSH setup and hardening: http://wiki.centos.org/HowTos/Network/SecuringSSH http://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/ https://help.github.com/articles/generating-ssh-keys https://confluence.atlassian.com/display/BITBUCKET/Set+up+SSH+for+Git http://www.cyberciti.biz/tips/linux-unix-bsd-openssh-server-best-practices.html http://rackerhacker.com/2010/10/12/securing-your-ssh-server/ Basic firewalls and IpTables: http://wiki.centos.org/HowTos/Network/IPTables http://ifzenelse.net/en/secure-centos6-server-part1-start-iptables-firewall http://www.cyberciti.biz/faq/rhel-fedorta-linux-iptables-firewall-configuration-tutorial/ http://www.cyberciti.biz/faq/centos-rhel-shorewall-firewall-configuration-setup-howto-tutorial/ http://www.tecmint.com/install-configserver-security-firewall-csf-in-rhel-centos-fedora/ Nginx, PHP and PHP-FPM http://www.lifelinux.com/how-to-install-nginx-and-php-fpm-on-centos-6-via-yum/ https://www.mellzamora.com/install-nginx-php-5-4-php-fpm-on-centos6/ http://www.howtoforge.com/installing-nginx-with-php5-and-php-fpm-and-mysql-support-on-centos-6.0 https://www.digitalocean.com/community/articles/how-to-install-linux-nginx-mysql-php-lemp-stack-on-centos-6 http://www.lurch.org.uk/2012/06/installing-and-using-nginx-php-fpm-on-centos-6/ http://black-pixel.net/nginx-with-php-on-centos-6.html http://www.tecmint.com/install-lemp-linux-nginx-mysql-php-on-rhel-centos-5-6-fedora-12-17/ http://www.lifelinux.com/how-to-optimize-nginx-for-maximum-performance/ MySQL http://www.server-world.info/en/note?os=CentOS_6&#38;p=mysql http://centoshelp.org/servers/database/installing-configuring-mysql-server/ http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html http://dev.mysql.com/doc/mysql-security-excerpt/5.1/en/ http://www.mysqlperformanceblog.com/ http://www.mysqlperformanceblog.com/2007/11/01/innodb-performance-optimization-basics/ Memcached and Redis http://www.if-not-true-then-false.com/2010/install-memcached-on-centos-fedora-red-hat/ http://blog.codesherpas.com/on_the_path/2010/08/securing-memcache-in-2-minutes.html http://www.saltwebsites.com/2012/install-redis-245-service-centos-6 Lastly, I dont use any FTP on my servers, but... <a class="more-link" href="http://www.techchattr.com/setting-up-a-new-centos-6-web-server-with-nginx-and-php-fpm">Continue reading <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="http://www.techchattr.com/setting-up-a-new-centos-6-web-server-with-nginx-and-php-fpm">Setting up a new CentOS 6 web server with nginx and php-fpm</a> appeared first on <a rel="nofollow" href="http://www.techchattr.com">Techchattr</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p class="lead drop-cap">Sometimes as developers we have to perform some simple sysadmin tasks, such as installing a basic <code>LAMP</code> or <code>LEMP</code> stack, basic securing of the server and so on. So what I decided to do is to just gather links to various helpful resources on how to setup Nginx + PHP 5.4 + MySQL + memcached on CentOS 6. I chose this installation since its the one I happen to use the most and I personally believe the optimal one. An alternative might be <code>Apache + mod_php + Varnish + memcached</code>.</p>
<p><span id="more-60"></span></p>
<h2>Basic SSH setup and hardening:</h2>
<ul>
<li><a href="http://wiki.centos.org/HowTos/Network/SecuringSSH" target="_blank">http://wiki.centos.org/HowTos/Network/SecuringSSH</a></li>
<li><a href="http://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/" target="_blank">http://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/</a></li>
<li><a href="https://help.github.com/articles/generating-ssh-keys" target="_blank">https://help.github.com/articles/generating-ssh-keys</a></li>
<li><a href="https://confluence.atlassian.com/display/BITBUCKET/Set+up+SSH+for+Git" target="_blank">https://confluence.atlassian.com/display/BITBUCKET/Set+up+SSH+for+Git</a></li>
<li><a href="http://www.cyberciti.biz/tips/linux-unix-bsd-openssh-server-best-practices.html" target="_blank">http://www.cyberciti.biz/tips/linux-unix-bsd-openssh-server-best-practices.html</a></li>
<li><a href="http://rackerhacker.com/2010/10/12/securing-your-ssh-server/" target="_blank">http://rackerhacker.com/2010/10/12/securing-your-ssh-server/</a></li>
</ul>
<div class="google_ads_center"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Techtalks responsive in content -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-7884254427679400"
     data-ad-slot="2266846376"
     data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<h2>Basic firewalls and IpTables:</h2>
<ul>
<li><a href="http://wiki.centos.org/HowTos/Network/IPTables" target="_blank"><span style="line-height: 13px;">http://wiki.centos.org/HowTos/Network/IPTables<br />
</span></a></li>
<li><a href="http://ifzenelse.net/en/secure-centos6-server-part1-start-iptables-firewall" target="_blank">http://ifzenelse.net/en/secure-centos6-server-part1-start-iptables-firewall</a></li>
<li><a href="http://www.cyberciti.biz/faq/rhel-fedorta-linux-iptables-firewall-configuration-tutorial/" target="_blank">http://www.cyberciti.biz/faq/rhel-fedorta-linux-iptables-firewall-configuration-tutorial/</a></li>
<li><a href="http://www.cyberciti.biz/faq/centos-rhel-shorewall-firewall-configuration-setup-howto-tutorial/" target="_blank">http://www.cyberciti.biz/faq/centos-rhel-shorewall-firewall-configuration-setup-howto-tutorial/</a></li>
<li><a href="http://www.tecmint.com/install-configserver-security-firewall-csf-in-rhel-centos-fedora/" target="_blank">http://www.tecmint.com/install-configserver-security-firewall-csf-in-rhel-centos-fedora/</a></li>
</ul>
<h2>Nginx, PHP and PHP-FPM</h2>
<ul>
<li><span style="line-height: 13px;"><a href="http://www.lifelinux.com/how-to-install-nginx-and-php-fpm-on-centos-6-via-yum/" target="_blank">http://www.lifelinux.com/how-to-install-nginx-and-php-fpm-on-centos-6-via-yum/</a><br />
</span></li>
<li><a href="https://www.mellzamora.com/install-nginx-php-5-4-php-fpm-on-centos6/" target="_blank">https://www.mellzamora.com/install-nginx-php-5-4-php-fpm-on-centos6/</a></li>
<li><a href="http://www.howtoforge.com/installing-nginx-with-php5-and-php-fpm-and-mysql-support-on-centos-6.0" target="_blank">http://www.howtoforge.com/installing-nginx-with-php5-and-php-fpm-and-mysql-support-on-centos-6.0</a></li>
<li><a href="https://www.digitalocean.com/community/articles/how-to-install-linux-nginx-mysql-php-lemp-stack-on-centos-6" target="_blank">https://www.digitalocean.com/community/articles/how-to-install-linux-nginx-mysql-php-lemp-stack-on-centos-6</a></li>
<li><a href="http://www.lurch.org.uk/2012/06/installing-and-using-nginx-php-fpm-on-centos-6/" target="_blank">http://www.lurch.org.uk/2012/06/installing-and-using-nginx-php-fpm-on-centos-6/</a></li>
<li><a href="http://black-pixel.net/nginx-with-php-on-centos-6.html" target="_blank">http://black-pixel.net/nginx-with-php-on-centos-6.html</a></li>
<li><a href="http://www.tecmint.com/install-lemp-linux-nginx-mysql-php-on-rhel-centos-5-6-fedora-12-17/" target="_blank">http://www.tecmint.com/install-lemp-linux-nginx-mysql-php-on-rhel-centos-5-6-fedora-12-17/</a></li>
<li><a href="http://www.lifelinux.com/how-to-optimize-nginx-for-maximum-performance/" target="_blank">http://www.lifelinux.com/how-to-optimize-nginx-for-maximum-performance/</a></li>
</ul>
<h2>MySQL</h2>
<ul>
<li><a href="http://www.server-world.info/en/note?os=CentOS_6&amp;p=mysql" target="_blank"><span style="line-height: 13px;">http://www.server-world.info/en/note?os=CentOS_6&amp;p=mysql</span></a></li>
<li><a href="http://centoshelp.org/servers/database/installing-configuring-mysql-server/" target="_blank">http://centoshelp.org/servers/database/installing-configuring-mysql-server/</a></li>
<li><a href="http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html" target="_blank">http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html</a></li>
<li><a href="http://dev.mysql.com/doc/mysql-security-excerpt/5.1/en/" target="_blank">http://dev.mysql.com/doc/mysql-security-excerpt/5.1/en/</a></li>
<li><a href="http://www.mysqlperformanceblog.com/" target="_blank">http://www.mysqlperformanceblog.com/</a></li>
<li><a href="http://www.mysqlperformanceblog.com/2007/11/01/innodb-performance-optimization-basics/" target="_blank">http://www.mysqlperformanceblog.com/2007/11/01/innodb-performance-optimization-basics/</a></li>
</ul>
<h2>Memcached and Redis</h2>
<ul>
<li><a href="http://www.if-not-true-then-false.com/2010/install-memcached-on-centos-fedora-red-hat/" target="_blank"><span style="line-height: 13px;">http://www.if-not-true-then-false.com/2010/install-memcached-on-centos-fedora-red-hat/<br />
</span></a></li>
<li><a href="http://blog.codesherpas.com/on_the_path/2010/08/securing-memcache-in-2-minutes.html" target="_blank">http://blog.codesherpas.com/on_the_path/2010/08/securing-memcache-in-2-minutes.html</a></li>
<li><a href="http://www.saltwebsites.com/2012/install-redis-245-service-centos-6" target="_blank">http://www.saltwebsites.com/2012/install-redis-245-service-centos-6</a></li>
</ul>
<p>Lastly, I dont use any FTP on my servers, but you can easily roll out a fairly secure SFTP connection: <a href="http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/" target="_blank">http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/</a></p>
<div class="google_ads_center"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Techtalks responsive in content -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-7884254427679400"
     data-ad-slot="2266846376"
     data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<p>which will be supported by most decent FTP clients. Let me know if you have any other good resources in the comments.</p>
<p>The post <a rel="nofollow" href="http://www.techchattr.com/setting-up-a-new-centos-6-web-server-with-nginx-and-php-fpm">Setting up a new CentOS 6 web server with nginx and php-fpm</a> appeared first on <a rel="nofollow" href="http://www.techchattr.com">Techchattr</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techchattr.com/setting-up-a-new-centos-6-web-server-with-nginx-and-php-fpm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
