<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Tutorial on Shafiq Alibhai</title>
    <link>https://www.shafiq.in/zh/tags/tutorial/</link>
    <description>Recent content in Tutorial on Shafiq Alibhai</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <copyright>© 2009-2026 All rights reserved.</copyright>
    <lastBuildDate>Wed, 26 Jul 2023 11:30:03 +0000</lastBuildDate>
    <atom:link href="https://www.shafiq.in/zh/tags/tutorial/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>How to install Postgresql Client using Homebrew</title>
      <link>https://www.shafiq.in/zh/blog/how-to-install-postgresql-client-using-homebrew/</link>
      <pubDate>Wed, 26 Jul 2023 11:30:03 +0000</pubDate>
      <guid>https://www.shafiq.in/zh/blog/how-to-install-postgresql-client-using-homebrew/</guid>
      <description>&lt;p&gt;Psql is a command-line interface for interacting with PostgreSQL, a powerful and open source relational database system. Brew is a package manager for macOS that makes it easy to install and manage software. Here are the steps to install psql with brew:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;First, install the brew package manager if you don&amp;rsquo;t have it already. You can do this by running the following command in your terminal:&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/bin/bash -c &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;Second, update brew by running the following commands:&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew doctor&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew update&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;Third, install libpq by running the command:&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install libpq&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Libpq is a library that contains psql and other PostgreSQL client utilities.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to avoid other pods from being scheduled on your node in Kubernetes</title>
      <link>https://www.shafiq.in/zh/blog/how-to-avoid-other-pods-from-being-scheduled-on-your-node-in-kubernetes/</link>
      <pubDate>Thu, 13 Jul 2023 11:30:03 +0000</pubDate>
      <guid>https://www.shafiq.in/zh/blog/how-to-avoid-other-pods-from-being-scheduled-on-your-node-in-kubernetes/</guid>
      <description>&lt;p&gt;Kubernetes is a powerful platform for managing containerized applications across a cluster of nodes. However, sometimes you may want to have more control over which pods are scheduled on which nodes, for various reasons such as performance, security, or cost.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-are-taints-and-tolerations&#34;&gt;What are taints and tolerations?&lt;a class=&#34;anchor&#34; href=&#34;#what-are-taints-and-tolerations&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Taints and tolerations are a feature of Kubernetes that allow you to mark nodes with certain attributes or conditions, and then specify which pods can or cannot be scheduled on those nodes based on those attributes or conditions. Taints are applied to nodes, and tolerations are applied to pods.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How To Install PHP (7.4, 7.3 &amp; 5.6) on Debian 9 Stretch</title>
      <link>https://www.shafiq.in/zh/blog/how-to-install-php-7.4-7.3-5.6-on-debian-9-stretch/</link>
      <pubDate>Tue, 14 Jul 2020 09:11:45 +0000</pubDate>
      <guid>https://www.shafiq.in/zh/blog/how-to-install-php-7.4-7.3-5.6-on-debian-9-stretch/</guid>
      <description>&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;a class=&#34;anchor&#34; href=&#34;#prerequisites&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Login to your Debian 9 system using shell access. For remote systems connect with SSH. Windows users can use Putty or other alternatives applications for SSH connection.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ssh root@debian9&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Run below commands to upgrade the current packages to the latest version.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt upgrade&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Let&amp;rsquo;s execute the following commands to install the required packages first on your system. Then import packages signing key. After that configure PPA for the PHP packages on your system.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Navigating Terraform Modules Stored in Package Subdirectories</title>
      <link>https://www.shafiq.in/zh/blog/navigating-terraform-modules-stored-in-package-subdirectories/</link>
      <pubDate>Wed, 24 Oct 2018 13:16:15 +0000</pubDate>
      <guid>https://www.shafiq.in/zh/blog/navigating-terraform-modules-stored-in-package-subdirectories/</guid>
      <description>&lt;p&gt;In the realm of Infrastructure as Code, Terraform modules can play a significant role in making your life easier. Sometimes, however, these modules don&amp;rsquo;t live at the root directory of their source package. Instead, they reside in sub-directories. Thankfully, Terraform has a smart way to help you access these nested modules.&lt;/p&gt;&#xA;&lt;p&gt;Terraform employs a unique double-slash (&lt;code&gt;//&lt;/code&gt;) syntax to help pinpoint the exact sub-directory where the module is located. The path that follows this double-slash syntax is considered to be a sub-directory within the package or repository.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Merging Unrelated Git Histories - A Simple Guide</title>
      <link>https://www.shafiq.in/zh/blog/merging-unrelated-git-histories-a-simple-guide/</link>
      <pubDate>Tue, 04 Sep 2018 13:48:55 +0000</pubDate>
      <guid>https://www.shafiq.in/zh/blog/merging-unrelated-git-histories-a-simple-guide/</guid>
      <description>&lt;p&gt;Are you stuck with two Git repositories or branches that have completely different histories, but you need to merge them? You may be hitting a roadblock because Git is designed to prevent this kind of operation by default. However, there&amp;rsquo;s a workaround for this, and it&amp;rsquo;s simpler than you might think.&lt;/p&gt;&#xA;&lt;h3 id=&#34;the-problem-unrelated-git-histories&#34;&gt;The Problem: Unrelated Git Histories&lt;a class=&#34;anchor&#34; href=&#34;#the-problem-unrelated-git-histories&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;Imagine you&amp;rsquo;re working on a project where you have a &lt;code&gt;main&lt;/code&gt; branch, and someone else has a completely separate project with its own history. Now, you want to combine both projects into a single repository. If you try to perform a regular &lt;code&gt;git merge&lt;/code&gt; or &lt;code&gt;git rebase&lt;/code&gt;, Git will likely stop you with an error message, something like:&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Simple Guide to Using Ansible with Packer</title>
      <link>https://www.shafiq.in/zh/blog/a-simple-guide-to-using-ansible-with-packer/</link>
      <pubDate>Tue, 04 Sep 2018 11:08:49 +0000</pubDate>
      <guid>https://www.shafiq.in/zh/blog/a-simple-guide-to-using-ansible-with-packer/</guid>
      <description>&lt;h1 id=&#34;what-is-the-ansible-provisioner-in-packer&#34;&gt;What is the Ansible Provisioner in Packer?&lt;a class=&#34;anchor&#34; href=&#34;#what-is-the-ansible-provisioner-in-packer&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;If you&amp;rsquo;re dabbling in the DevOps world, chances are you&amp;rsquo;ve come across Ansible and Packer. But how about combining them? The Ansible provisioner in Packer lets you run Ansible playbooks while creating your machine images. In simpler terms, it helps you set up your server environment automatically, just the way you like it, while Packer goes about its business creating a machine image.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Simple Guide to Installing SSHPass on Ubuntu and macOS</title>
      <link>https://www.shafiq.in/zh/blog/a-simple-guide-to-installing-sshpass-on-ubuntu-and-macos/</link>
      <pubDate>Sun, 02 Sep 2018 10:33:49 +0000</pubDate>
      <guid>https://www.shafiq.in/zh/blog/a-simple-guide-to-installing-sshpass-on-ubuntu-and-macos/</guid>
      <description>&lt;h1 id=&#34;introduction&#34;&gt;Introduction&lt;a class=&#34;anchor&#34; href=&#34;#introduction&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;SSHPass is a nifty little tool that lets you automate SSH login by bypassing the usual password prompt. While it&amp;rsquo;s super convenient for scripting, bear in mind that it&amp;rsquo;s not ideal for a multi-user setup due to security concerns. However, if you&amp;rsquo;re using it on your personal development machine, it&amp;rsquo;s pretty harmless.&lt;/p&gt;&#xA;&lt;h2 id=&#34;how-to-install-sshpass-on-ubuntu&#34;&gt;How to Install SSHPass on Ubuntu&lt;a class=&#34;anchor&#34; href=&#34;#how-to-install-sshpass-on-ubuntu&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Installing SSHPass on Ubuntu is as straightforward as it gets. All you need to do is open up your terminal and run the following command:&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Simple Guide to Installing Docker CE on Ubuntu</title>
      <link>https://www.shafiq.in/zh/blog/a-simple-guide-to-installing-docker-ce-on-ubuntu/</link>
      <pubDate>Sun, 02 Sep 2018 09:09:10 +0000</pubDate>
      <guid>https://www.shafiq.in/zh/blog/a-simple-guide-to-installing-docker-ce-on-ubuntu/</guid>
      <description>&lt;h2 id=&#34;what-you-need-before-you-begin&#34;&gt;What You Need Before You Begin&lt;a class=&#34;anchor&#34; href=&#34;#what-you-need-before-you-begin&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;operating-system-requirements&#34;&gt;Operating System Requirements&lt;a class=&#34;anchor&#34; href=&#34;#operating-system-requirements&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;First things first, make sure you&amp;rsquo;re running one of the following 64-bit Ubuntu versions to install Docker CE:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Ubuntu 18.04 (Bionic) - LTS&lt;/li&gt;&#xA;&lt;li&gt;Ubuntu 17.10 (Artful)&lt;/li&gt;&#xA;&lt;li&gt;Ubuntu 16.04 (Xenial) - LTS&lt;/li&gt;&#xA;&lt;li&gt;Ubuntu 14.04 (Trusty) - LTS&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Docker CE is compatible with these architectures: &lt;code&gt;x86_64&lt;/code&gt;, &lt;code&gt;armhf&lt;/code&gt;, &lt;code&gt;s390x&lt;/code&gt; (IBM Z), and &lt;code&gt;ppc64le&lt;/code&gt; (IBM Power).&lt;/p&gt;&#xA;&lt;blockquote class=&#39;book-hint &#39;&gt;&#xA;&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: For IBM Z and Power architectures, you&amp;rsquo;ll need at least Ubuntu 16.04 (Xenial) or higher.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Beginner&#39;s Guide to Perl Expect Bindings - A Simple Walkthrough</title>
      <link>https://www.shafiq.in/zh/blog/a-beginners-guide-to-perl-expect-bindings-a-simple-walkthrough/</link>
      <pubDate>Tue, 21 Feb 2012 07:18:05 +0000</pubDate>
      <guid>https://www.shafiq.in/zh/blog/a-beginners-guide-to-perl-expect-bindings-a-simple-walkthrough/</guid>
      <description>&lt;h2 id=&#34;basic-perl-hello-world-script-hellopl&#34;&gt;Basic Perl &amp;ldquo;Hello World&amp;rdquo; Script (hello.pl)&lt;a class=&#34;anchor&#34; href=&#34;#basic-perl-hello-world-script-hellopl&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s start with the basics. Here is a straightforward &amp;ldquo;Hello World&amp;rdquo; script written in Perl. Create a new file and name it &lt;code&gt;hello.pl&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-perl&#34; data-lang=&#34;perl&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;ch&#34;&gt;#!/usr/bin/perl&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;use&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;strict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;use&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;warnings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;use&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;diagnostics&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;-----------\n&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s&#34;&gt;&amp;#34;Hello World\n&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s&#34;&gt;&amp;#34;-----------\n&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In this script, we&amp;rsquo;re using Perl&amp;rsquo;s built-in modules for error handling (&lt;code&gt;use strict; use warnings; use diagnostics;&lt;/code&gt;) to make sure the code is robust.&lt;/p&gt;&#xA;&lt;h2 id=&#34;introducing-expect-bindings-with-perl-testpl&#34;&gt;Introducing Expect Bindings with Perl (test.pl)&lt;a class=&#34;anchor&#34; href=&#34;#introducing-expect-bindings-with-perl-testpl&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Now, let&amp;rsquo;s dive into the main topic: how to use Expect bindings in a Perl script. Create another file, &lt;code&gt;test.pl&lt;/code&gt;, and add the following code:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Best Practices for Crafting an Efficient Build Script</title>
      <link>https://www.shafiq.in/zh/blog/best-practices-for-crafting-an-efficient-build-script/</link>
      <pubDate>Mon, 09 May 2011 18:31:40 +0000</pubDate>
      <guid>https://www.shafiq.in/zh/blog/best-practices-for-crafting-an-efficient-build-script/</guid>
      <description>&lt;h2 id=&#34;disablehljs-false&#34;&gt;disableHLJS: false&lt;a class=&#34;anchor&#34; href=&#34;#disablehljs-false&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;When it comes to software development, a robust and efficient build script can be a game-changer. Whether you&amp;rsquo;re working on a Java project or any other type of application, the right build script can streamline the whole process and make life a whole lot easier for developers. Here&amp;rsquo;s a rundown of some best practices to keep in mind when you&amp;rsquo;re writing your build script:&lt;/p&gt;&#xA;&lt;h3 id=&#34;platform-independence&#34;&gt;Platform Independence&lt;a class=&#34;anchor&#34; href=&#34;#platform-independence&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;Choose a programming language that is compatible across multiple platforms, especially if you&amp;rsquo;re working on a Java project. This flexibility will save you from a lot of headaches down the line when dealing with different operating systems.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Identify Your Linux Distribution and Version with Simple Commands</title>
      <link>https://www.shafiq.in/zh/blog/how-to-identify-your-linux-distribution-and-version-with-simple-commands/</link>
      <pubDate>Tue, 23 Mar 2010 05:10:33 +0000</pubDate>
      <guid>https://www.shafiq.in/zh/blog/how-to-identify-your-linux-distribution-and-version-with-simple-commands/</guid>
      <description>&lt;p&gt;If you are using a Linux-based operating system and you want to know which specific distribution and version you have installed, there is a simple command that can help you with that. Just open a terminal window and type the following:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat /etc/issue&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This will display the name and the release number of your Linux distribution. For example, if you are using Debian 4.0, the output will look like this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Debian GNU/Linux 4.0 &lt;span class=&#34;se&#34;&gt;\n&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\l&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;\n&lt;/code&gt; and &lt;code&gt;\l&lt;/code&gt; are special characters that represent the current date and the name of the terminal device, respectively. They are not part of the distribution name.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Implement Scrum Development Model in 8 Steps</title>
      <link>https://www.shafiq.in/zh/blog/how-to-implement-scrum-development-model-in-8-steps/</link>
      <pubDate>Mon, 22 Mar 2010 06:52:15 +0000</pubDate>
      <guid>https://www.shafiq.in/zh/blog/how-to-implement-scrum-development-model-in-8-steps/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;Goa&lt;/li&gt;&#xA;&lt;li&gt;Management&lt;/li&gt;&#xA;&lt;li&gt;Requirement&lt;/li&gt;&#xA;&lt;li&gt;Requirements&lt;/li&gt;&#xA;&lt;li&gt;shafiq&lt;/li&gt;&#xA;&lt;li&gt;Development&lt;/li&gt;&#xA;&lt;li&gt;Sprint&lt;/li&gt;&#xA;&lt;li&gt;Stand-up meeting&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;disablehljs-false&#34;&gt;disableHLJS: false&lt;a class=&#34;anchor&#34; href=&#34;#disablehljs-false&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Scrum is an agile development model that allows teams to deliver software products faster and with higher quality. Scrum involves breaking down the product into small and manageable pieces called backlog items, and working on them in short iterations called sprints. Here are the 8 steps you need to follow to implement Scrum successfully:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Step 1: Prepare your product backlog.&lt;/strong&gt; The product backlog is a list of features and requirements that you want to include in your product. You need to involve the stakeholders, such as the customers, users, or managers, to create and prioritise this list. You also need to get the approval of the product owner, who is the person responsible for defining and managing the product vision and goals.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Perl – How to Read a Text File into a Variable – 6 ways to do it</title>
      <link>https://www.shafiq.in/zh/blog/perl-how-to-read-a-text-file-into-a-variable-6-ways-to-do-it/</link>
      <pubDate>Mon, 15 Mar 2010 09:04:20 +0000</pubDate>
      <guid>https://www.shafiq.in/zh/blog/perl-how-to-read-a-text-file-into-a-variable-6-ways-to-do-it/</guid>
      <description>&lt;p&gt;6 Ways to Read a Text File into a Variable&lt;/p&gt;&#xA;&lt;p&gt;If you are working with large file(s) you might consider using File::Slurp.&#xA;It is much fast than the conventional:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-perl&#34; data-lang=&#34;perl&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;local&lt;/span&gt; &lt;span class=&#34;vg&#34;&gt;$/&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;undef&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FILE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;myfile&amp;#34;&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;die&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Couldn&amp;#39;t open file: $!&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;binmode&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FILE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;$string&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;ow&#34;&gt;lt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;FILE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;close&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FILE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;local&lt;/span&gt; &lt;span class=&#34;vg&#34;&gt;$/&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;undef&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FILE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;myfile&amp;#34;&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;die&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Couldn&amp;#39;t open file: $!&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;$string&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;ow&#34;&gt;lt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;FILE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;close&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FILE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FILE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;myfile&amp;#34;&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;die&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Couldn&amp;#39;t open file: $!&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$string&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;join&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;ow&#34;&gt;lt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;FILE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;close&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FILE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FILE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;myfile&amp;#34;&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;die&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Couldn&amp;#39;t open file: $!&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;ow&#34;&gt;lt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;FILE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;){&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;nv&#34;&gt;$string&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;close&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FILE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FH&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;sample.txt&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;die&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Error: $!\n&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;read&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;FH&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;close&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FH&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The format for the read function is:&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
