<?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>Concepts Archives - scmGalaxy</title>
	<atom:link href="https://www.scmgalaxy.com/tutorials/tag/concepts/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.scmgalaxy.com/tutorials/tag/concepts/</link>
	<description>A Platform for Software Engineers</description>
	<lastBuildDate>Sat, 21 Feb 2026 07:15:25 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>
	<item>
		<title>Mastering Recursion: The Power of Self-Referencing Functions in Programming</title>
		<link>https://www.scmgalaxy.com/tutorials/mastering-recursion-the-power-of-self-referencing-functions-in-programming/</link>
					<comments>https://www.scmgalaxy.com/tutorials/mastering-recursion-the-power-of-self-referencing-functions-in-programming/#respond</comments>
		
		<dc:creator><![CDATA[Vijay K]]></dc:creator>
		<pubDate>Mon, 26 May 2025 06:35:46 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[AlgorithmDesign]]></category>
		<category><![CDATA[Backtracking]]></category>
		<category><![CDATA[CallStack]]></category>
		<category><![CDATA[CodeSmart]]></category>
		<category><![CDATA[computer]]></category>
		<category><![CDATA[Concepts]]></category>
		<category><![CDATA[DataStructures]]></category>
		<category><![CDATA[DivideAndConquer]]></category>
		<category><![CDATA[DynamicProgramming]]></category>
		<category><![CDATA[Fundamentals]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Recursion]]></category>
		<category><![CDATA[Science]]></category>
		<guid isPermaLink="false">https://www.scmgalaxy.com/tutorials/?p=12407</guid>

					<description><![CDATA[<p>Introduction Recursion is one of the most powerful and conceptually elegant techniques in computer science. It refers to the process [&#8230;]</p>
<p>The post <a href="https://www.scmgalaxy.com/tutorials/mastering-recursion-the-power-of-self-referencing-functions-in-programming/">Mastering Recursion: The Power of Self-Referencing Functions in Programming</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="512" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2025/05/image-93-1024x512.png" alt="" class="wp-image-12410" srcset="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2025/05/image-93-1024x512.png 1024w, https://www.scmgalaxy.com/tutorials/wp-content/uploads/2025/05/image-93-300x150.png 300w, https://www.scmgalaxy.com/tutorials/wp-content/uploads/2025/05/image-93-768x384.png 768w, https://www.scmgalaxy.com/tutorials/wp-content/uploads/2025/05/image-93.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Introduction</h2>



<p class="wp-block-paragraph">Recursion is one of the most powerful and conceptually elegant techniques in computer science. It refers to the process where a function calls itself directly or indirectly to solve a problem. Though the concept may seem abstract at first, recursion is used in a wide range of real-world applications including algorithmic problem solving, parsing complex data structures, system design, artificial intelligence, and more.</p>



<p class="wp-block-paragraph">This document provides a comprehensive understanding of recursion, covering its fundamentals, real-world use cases, how it operates within computer architecture, a breakdown of its basic workflow, and a practical guide for beginners to get started.</p>



<hr class="wp-block-separator has-alpha-channel-opacity">



<h2 class="wp-block-heading">What is Recursion?</h2>



<p class="wp-block-paragraph">Recursion is a method of solving a problem where the solution depends on solving smaller instances of the same problem. A recursive function performs a task in part by calling itself with a subset of the original input.</p>



<p class="wp-block-paragraph">A recursive function consists of two main parts:</p>



<ul class="wp-block-list">
<li><strong>Base Case:</strong> The condition under which the function stops calling itself.</li>



<li><strong>Recursive Case:</strong> The part of the function where it calls itself with modified arguments to move toward the base case.</li>
</ul>



<h3 class="wp-block-heading">Example: Factorial</h3>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n - 1)
</pre></div>


<p class="wp-block-paragraph">In this function, <code>factorial(4)</code> results in a chain of calls: <code>4 * factorial(3)</code>, then <code>3 * factorial(2)</code>, and so on until <code>factorial(0)</code> returns 1. The calls then resolve in reverse order.</p>



<h3 class="wp-block-heading">Direct vs Indirect Recursion</h3>



<ul class="wp-block-list">
<li><strong>Direct recursion</strong>: A function calls itself explicitly.</li>



<li><strong>Indirect recursion</strong>: A function calls another function which in turn calls the first function. This chain can continue over multiple functions.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity">



<h2 class="wp-block-heading">Major Use Cases of Recursion</h2>



<p class="wp-block-paragraph">Recursion is ideal for problems that exhibit self-similar patterns or can be broken down into smaller subproblems. Below are key areas where recursion is commonly applied:</p>



<h3 class="wp-block-heading">1. Mathematical Computations</h3>



<ul class="wp-block-list">
<li><strong>Factorial</strong></li>



<li><strong>Fibonacci Series</strong></li>



<li><strong>Exponentiation</strong></li>



<li><strong>Greatest Common Divisor (GCD)</strong></li>



<li><strong>Tower of Hanoi</strong>: Solving this puzzle requires moving disks between rods using recursive logic.</li>
</ul>



<h3 class="wp-block-heading">2. Data Structures</h3>



<ul class="wp-block-list">
<li><strong>Trees:</strong>
<ul class="wp-block-list">
<li>Preorder, Inorder, Postorder Traversals</li>



<li>Finding height or depth</li>



<li>Insertion and deletion in binary search trees</li>
</ul>
</li>



<li><strong>Graphs:</strong>
<ul class="wp-block-list">
<li>Depth-First Search (DFS)</li>



<li>Topological Sorting</li>



<li>Cycle detection in directed graphs</li>
</ul>
</li>



<li><strong>Linked Lists:</strong>
<ul class="wp-block-list">
<li>Reversal</li>



<li>Printing in reverse</li>



<li>Detecting and removing loops</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading">3. Divide and Conquer Algorithms</h3>



<p class="wp-block-paragraph">These algorithms work by recursively breaking the problem into smaller subproblems:</p>



<ul class="wp-block-list">
<li><strong>Merge Sort</strong></li>



<li><strong>Quick Sort</strong></li>



<li><strong>Binary Search</strong></li>



<li><strong>Closest Pair of Points</strong></li>



<li><strong>Fast Fourier Transform (FFT)</strong></li>
</ul>



<h3 class="wp-block-heading">4. Backtracking Algorithms</h3>



<p class="wp-block-paragraph">Backtracking uses recursion to explore all potential solutions:</p>



<ul class="wp-block-list">
<li><strong>N-Queens Problem</strong></li>



<li><strong>Knight&#8217;s Tour</strong></li>



<li><strong>Sudoku Solving</strong></li>



<li><strong>String Permutations</strong></li>



<li><strong>Crossword Puzzle Solver</strong></li>
</ul>



<h3 class="wp-block-heading">5. Dynamic Programming</h3>



<p class="wp-block-paragraph">Recursive solutions with memoization are foundational in dynamic programming:</p>



<ul class="wp-block-list">
<li><strong>0/1 Knapsack Problem</strong></li>



<li><strong>Longest Common Subsequence</strong></li>



<li><strong>Edit Distance</strong></li>



<li><strong>Rod Cutting Problem</strong></li>



<li><strong>Matrix Chain Multiplication</strong></li>
</ul>



<h3 class="wp-block-heading">6. Real-World Applications</h3>



<ul class="wp-block-list">
<li><strong>File System Traversal</strong>: Navigating directories and subdirectories</li>



<li><strong>Compilers</strong>: Building and traversing abstract syntax trees</li>



<li><strong>Web Crawlers</strong>: Recursively visiting links on web pages</li>



<li><strong>Database Queries</strong>: Recursive queries in SQL (Common Table Expressions)</li>



<li><strong>Game AI</strong>: MiniMax algorithm for games like chess and tic-tac-toe</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity">



<h2 class="wp-block-heading">How Recursion Works Along with Architecture</h2>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="630" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2025/05/image-94-1024x630.png" alt="" class="wp-image-12411" srcset="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2025/05/image-94-1024x630.png 1024w, https://www.scmgalaxy.com/tutorials/wp-content/uploads/2025/05/image-94-300x185.png 300w, https://www.scmgalaxy.com/tutorials/wp-content/uploads/2025/05/image-94-768x473.png 768w, https://www.scmgalaxy.com/tutorials/wp-content/uploads/2025/05/image-94.png 1098w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Recursion relies on the system&#8217;s call stack to keep track of function calls. Each time a function is invoked, a new frame is pushed onto the call stack containing:</p>



<ul class="wp-block-list">
<li>Parameters</li>



<li>Local variables</li>



<li>Return address</li>
</ul>



<p class="wp-block-paragraph">Once the base case is reached, the call stack unwinds and frames are popped off as each function call returns.</p>



<h3 class="wp-block-heading">Visualizing the Call Stack</h3>



<p class="wp-block-paragraph">For a function call like <code>factorial(4)</code>, the stack evolves as follows:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
factorial(4)
factorial(3)
factorial(2)
factorial(1)
factorial(0)
</pre></div>


<p class="wp-block-paragraph">Upon reaching <code>factorial(0)</code>, the function returns <code>1</code> and each previous call resumes, multiplying the result accordingly.</p>



<h3 class="wp-block-heading">Stack Overflow</h3>



<p class="wp-block-paragraph">Improper recursion (e.g., missing base case) can cause the stack to overflow, leading to a runtime error.</p>



<h3 class="wp-block-heading">Tail Recursion and Optimization</h3>



<p class="wp-block-paragraph">Tail recursion is a type of recursion where the recursive call is the last action in the function. Some languages (Scheme, Elixir, Scala) optimize tail recursion to reuse stack frames:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
def tail_factorial(n, acc=1):
    if n == 0:
        return acc
    return tail_factorial(n - 1, acc * n)
</pre></div>


<p class="wp-block-paragraph">Python does not currently support tail call optimization by default, but it can be simulated or replaced with loops.</p>



<hr class="wp-block-separator has-alpha-channel-opacity">



<h2 class="wp-block-heading">Basic Workflow of a Recursive Function</h2>



<ol start="1" class="wp-block-list">
<li><strong>Understand the Problem</strong>: Break it down into repeatable, smaller components.</li>



<li><strong>Identify the Base Case</strong>: Define the smallest input that doesn&#8217;t require recursion.</li>



<li><strong>Implement the Recursive Case</strong>: The function should call itself with modified input.</li>



<li><strong>Ensure Progression</strong>: Each call should get closer to the base case.</li>



<li><strong>Combine Results</strong>: Aggregate results during the call stack unwinding.</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity">



<h2 class="wp-block-heading">Step-by-Step Getting Started Guide for Recursion</h2>



<h3 class="wp-block-heading">Step 1: Choose a Simple Problem</h3>



<p class="wp-block-paragraph">Start with examples like:</p>



<ul class="wp-block-list">
<li>Counting down from a number</li>



<li>Calculating factorial</li>



<li>Summing elements of a list</li>
</ul>



<h3 class="wp-block-heading">Step 2: Define the Base Case</h3>



<p class="wp-block-paragraph">Make sure it stops the recursion correctly:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
if n == 0:
    return 1
</pre></div>


<h3 class="wp-block-heading">Step 3: Define the Recursive Step</h3>



<p class="wp-block-paragraph">Make the problem smaller in each call:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
return n * factorial(n - 1)
</pre></div>


<h3 class="wp-block-heading">Step 4: Use Debugging Tools</h3>



<p class="wp-block-paragraph">Visualize the call stack using:</p>



<ul class="wp-block-list">
<li>Print statements</li>



<li>Stack diagrams</li>



<li>IDE debuggers</li>
</ul>



<h3 class="wp-block-heading">Step 5: Optimize</h3>



<p class="wp-block-paragraph">If the recursion depth is high:</p>



<ul class="wp-block-list">
<li>Convert to iteration</li>



<li>Use memoization (caching)</li>



<li>Explore bottom-up dynamic programming</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity">



<h2 class="wp-block-heading">Advanced Example: Recursive Directory Traversal</h2>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
import os

def list_files(path):
    for entry in os.listdir(path):
        full_path = os.path.join(path, entry)
        if os.path.isdir(full_path):
            list_files(full_path)
        else:
            print(full_path)
</pre></div>


<p class="wp-block-paragraph">This function lists all files in a directory and its subdirectories using recursion.</p>



<hr class="wp-block-separator has-alpha-channel-opacity">



<h2 class="wp-block-heading">Best Practices</h2>



<ul class="wp-block-list">
<li>Always define and test the base case thoroughly.</li>



<li>Avoid unnecessary recursive calls—use memoization.</li>



<li>Limit recursion depth to avoid overflow.</li>



<li>Use recursion when it provides clarity over iteration.</li>



<li>Test edge cases and large inputs.</li>
</ul>
<p>The post <a href="https://www.scmgalaxy.com/tutorials/mastering-recursion-the-power-of-self-referencing-functions-in-programming/">Mastering Recursion: The Power of Self-Referencing Functions in Programming</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.scmgalaxy.com/tutorials/mastering-recursion-the-power-of-self-referencing-functions-in-programming/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Understanding Strings: Key Concepts, Use Cases, and Workflow</title>
		<link>https://www.scmgalaxy.com/tutorials/understanding-strings-key-concepts-use-cases-and-workflow/</link>
					<comments>https://www.scmgalaxy.com/tutorials/understanding-strings-key-concepts-use-cases-and-workflow/#respond</comments>
		
		<dc:creator><![CDATA[Vijay K]]></dc:creator>
		<pubDate>Fri, 09 May 2025 12:12:18 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Concepts]]></category>
		<category><![CDATA[datatypes]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[ProgrammingFundamentals]]></category>
		<category><![CDATA[StringManipulation]]></category>
		<category><![CDATA[StringOperations]]></category>
		<category><![CDATA[Strings]]></category>
		<guid isPermaLink="false">https://www.scmgalaxy.com/tutorials/?p=12258</guid>

					<description><![CDATA[<p>What is String? In computer science and programming, a string is a sequence of characters, typically used to represent text-based [&#8230;]</p>
<p>The post <a href="https://www.scmgalaxy.com/tutorials/understanding-strings-key-concepts-use-cases-and-workflow/">Understanding Strings: Key Concepts, Use Cases, and Workflow</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="683" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2025/05/image-27-1024x683.png" alt="" class="wp-image-12263" srcset="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2025/05/image-27-1024x683.png 1024w, https://www.scmgalaxy.com/tutorials/wp-content/uploads/2025/05/image-27-300x200.png 300w, https://www.scmgalaxy.com/tutorials/wp-content/uploads/2025/05/image-27-768x512.png 768w, https://www.scmgalaxy.com/tutorials/wp-content/uploads/2025/05/image-27.png 1536w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">What is String?</h3>



<p class="wp-block-paragraph">In computer science and programming, a <strong>string</strong> is a sequence of characters, typically used to represent text-based data. Strings are one of the most commonly used data types in almost every programming language, including Python, Java, C++, JavaScript, and others. A string can consist of any characters: letters, numbers, symbols, spaces, and punctuation marks.</p>



<p class="wp-block-paragraph">Strings are usually enclosed in quotation marks. In many languages, double quotes (<code>"</code>) or single quotes (<code>'</code>) are used to define strings. For instance, in Python, Java, and JavaScript, both of the following are valid strings:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
&quot;Hello, World!&quot;
&#039;Hello, World!&#039;

</pre></div>


<p class="wp-block-paragraph">Internally, strings are often stored as arrays of characters in memory, though the exact implementation can vary depending on the programming language. Some languages, like Python, treat strings as immutable (i.e., they cannot be modified after they are created), while others, like C++, allow for mutable strings.</p>



<p class="wp-block-paragraph">Strings are essential for handling textual information in applications such as databases, websites, user input processing, and file manipulation.</p>



<hr class="wp-block-separator has-alpha-channel-opacity">



<h3 class="wp-block-heading">What are the Major Use Cases of String?</h3>



<ol class="wp-block-list">
<li><strong>Text Representation and Manipulation</strong>:<br>Strings are primarily used for representing text. In applications, strings are used to store and manipulate user input, such as names, addresses, emails, and other textual data. String manipulation operations like concatenation, substring extraction, and formatting are used to handle and display text dynamically.</li>



<li><strong>Data Processing</strong>:<br>Many programming tasks require processing textual data. For example, in data analysis, strings are often used to parse and process structured data formats such as CSV, JSON, or XML. String manipulation techniques like searching for substrings, splitting, and regular expressions are often employed to extract and transform relevant data.</li>



<li><strong>User Interaction</strong>:<br>In interactive programs, strings are used for prompts, messages, and responses. For example, strings can be used to ask for user input, display error messages, or provide feedback in graphical user interfaces (GUIs) or command-line interfaces (CLI).</li>



<li><strong>File Handling</strong>:<br>Strings are used to read and write textual data to and from files. File input/output (I/O) operations often involve manipulating strings to process file contents. For example, reading a file might return the contents as a string, which can then be processed or written to another file.</li>



<li><strong>Networking</strong>:<br>In networking, strings are used to represent data being transferred over a network. For instance, HTTP requests and responses in web communication are made up of strings. URLs, headers, and content bodies are all represented as strings in network protocols.</li>



<li><strong>Regular Expressions</strong>:<br>Regular expressions (regex) are patterns used to match and manipulate strings. Regex is widely used for validating inputs (like email addresses, phone numbers), searching through large bodies of text, and extracting specific data, such as dates, phone numbers, or URLs from strings.</li>



<li><strong>Database Querying</strong>:<br>Strings are used extensively in database queries, particularly in <strong>SQL</strong> (Structured Query Language), to filter and search for records. For example, a query string in SQL may look like this: <code>SELECT * FROM users WHERE name = 'John Doe';</code> This query retrieves data from a table based on a string comparison.</li>



<li><strong>Cryptography and Encoding</strong>:<br>Strings are often used in cryptographic operations where text needs to be encoded or decoded. For instance, hashing algorithms (e.g., MD5, SHA) produce strings, and data encoding schemes like Base64 use strings to represent binary data in a text format.</li>



<li><strong>Configuration Files</strong>:<br>Strings are often used to represent settings and configuration data in applications. These settings, which are typically stored in text-based formats like <code>.env</code>, <code>.json</code>, <code>.xml</code>, or <code>.ini</code> files, are read into memory as strings to configure application behavior.</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity">



<h3 class="wp-block-heading">How String Works Along with Architecture?</h3>



<p class="wp-block-paragraph">Understanding how strings work requires knowledge of their internal representation, memory allocation, and the various operations that can be performed on them. Different programming languages implement strings in different ways, but here’s a general breakdown of how strings typically work within a language’s architecture:</p>



<ol class="wp-block-list">
<li><strong>Memory Representation</strong>:<br>In most languages, strings are stored as arrays of characters. In languages like <strong>C</strong> and <strong>C++</strong>, strings are represented as arrays of characters terminated by a special null character (<code>' '</code>) to indicate the end of the string. In higher-level languages like <strong>Python</strong> or <strong>Java</strong>, strings are implemented as objects or instances of a class, with additional metadata such as the string&#8217;s length.
<ul class="wp-block-list">
<li><strong>Mutable vs. Immutable Strings</strong>: In some languages like Python or Java, strings are immutable. This means that once a string is created, it cannot be modified. If any operation alters the string, a new string is created instead. In contrast, languages like C++ and JavaScript allow strings to be mutable, meaning their contents can be directly altered.</li>
</ul>
</li>



<li><strong>String Interning</strong>:<br>Many languages optimize memory usage for strings by <strong>interning</strong> them. String interning is the practice of storing a single copy of each unique string in memory, thus preventing the duplication of identical strings. In Java, for example, string literals are automatically interned, ensuring that the same string literal in different parts of the code refers to the same memory location.</li>



<li><strong>Encoding</strong>:<br>The way characters are represented in memory is governed by an <strong>encoding scheme</strong>. The most common encoding schemes are <strong>ASCII</strong> and <strong>Unicode</strong>. While ASCII uses 1 byte per character (representing a limited set of characters), <strong>Unicode</strong> (including <strong>UTF-8</strong>, <strong>UTF-16</strong>, and <strong>UTF-32</strong>) supports characters from virtually every writing system, making it ideal for internationalization. When working with strings, programmers need to be aware of the encoding used to ensure that the text is correctly interpreted.</li>



<li><strong>String Operations</strong>:<br>Programming languages provide various methods to manipulate strings efficiently. Common string operations include:
<ul class="wp-block-list">
<li><strong>Concatenation</strong>: Joining two or more strings together. For example, in Python: <code>full_name = "John" + " " + "Doe"</code></li>



<li><strong>Substring extraction</strong>: Extracting part of a string. For example, in JavaScript: <code>let substr = "Hello, World!".substring(0, 5); // "Hello"</code></li>



<li><strong>Searching and replacing</strong>: Finding substrings within strings or replacing portions of a string.</li>



<li><strong>Splitting and joining</strong>: Splitting a string into an array of substrings or joining an array of substrings back into a string.</li>
</ul>
</li>



<li><strong>Regular Expressions (Regex)</strong>:<br>Strings are often processed using regular expressions, which are powerful patterns that help match and manipulate string data. Regex allows for advanced string matching, like searching for specific patterns in a string (e.g., phone numbers or email addresses).</li>



<li><strong>String Immutability and Memory Management</strong>:<br>In some languages, strings are immutable, meaning that any modification of the string creates a new instance of the string. This can be more memory-intensive in some cases but is often used to prevent unintended side effects, especially in concurrent applications. Immutable strings are also easier to handle in multi-threaded applications since they cannot be modified by different threads simultaneously.</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity">



<h3 class="wp-block-heading">What are the Basic Workflow of String?</h3>



<p class="wp-block-paragraph">The basic workflow of strings in a programming context generally follows these steps:</p>



<ol class="wp-block-list">
<li><strong>String Creation</strong>:<br>Strings can be created in several ways, such as:
<ul class="wp-block-list">
<li>Direct assignment (e.g., <code>"Hello, World!"</code>).</li>



<li>User input (e.g., reading input from the command line or a text field in a GUI).</li>



<li>Reading from files or network resources (e.g., reading text from a file or receiving a message via HTTP).</li>
</ul>
</li>



<li><strong>String Manipulation</strong>:<br>Once a string is created, developers perform various manipulations depending on the use case. Common manipulations include:
<ul class="wp-block-list">
<li><strong>Trimming whitespace</strong>: Removing leading and trailing spaces.</li>



<li><strong>Transforming case</strong>: Converting the string to uppercase or lowercase.</li>



<li><strong>Searching</strong>: Finding a substring within the string using methods like <code>find()</code>, <code>indexOf()</code>, or regex.</li>



<li><strong>Splitting and joining</strong>: Dividing a string into parts or combining parts into a new string.</li>



<li><strong>Replacing</strong>: Substituting parts of a string with other values.</li>
</ul>
</li>



<li><strong>String Output</strong>:<br>After manipulation, strings are typically used as output. This could be:
<ul class="wp-block-list">
<li>Displaying text to the user in a GUI or terminal.</li>



<li>Writing data to a file or sending it over a network.</li>



<li>Using the string in a database query or as part of a URL in a web application.</li>
</ul>
</li>



<li><strong>String Storage</strong>:<br>Depending on the programming language, strings are stored either as <strong>immutable</strong> or <strong>mutable</strong> objects. When strings are mutable, they can be modified directly in memory. When immutable, a new instance is created each time the string is changed, reducing the risk of side effects.</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity">



<h3 class="wp-block-heading">Step-by-Step Getting Started Guide for String</h3>



<ol class="wp-block-list">
<li><strong>Define a String</strong>:<br>In most programming languages, creating a string is as simple as enclosing the desired text in quotes. For example, in Python: <code>greeting = "Hello, World!"</code></li>



<li><strong>Manipulate the String</strong>:<br>Perform operations such as concatenation, case conversion, or substring extraction: <code>name = "Alice" message = greeting + " My name is " + name message = message.lower()</code></li>



<li><strong>Search within a String</strong>:<br>You can search for a substring or pattern in a string: <code>if "Hello" in greeting: print("Found 'Hello' in the greeting!")</code></li>



<li><strong>Use Regular Expressions</strong>:<br>Regular expressions can be used for advanced string search and manipulation: <code>import re match = re.search(r'bWorldb', greeting) if match: print("Found the word 'World'")</code></li>



<li><strong>Print the String</strong>:<br>Finally, output the string to the user or log it: <code>print(message)</code></li>
</ol>
<p>The post <a href="https://www.scmgalaxy.com/tutorials/understanding-strings-key-concepts-use-cases-and-workflow/">Understanding Strings: Key Concepts, Use Cases, and Workflow</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.scmgalaxy.com/tutorials/understanding-strings-key-concepts-use-cases-and-workflow/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>A Guide on How to Become a DevSecOps Engineer?</title>
		<link>https://www.scmgalaxy.com/tutorials/a-guide-on-how-to-become-a-devsecops-engineer/</link>
					<comments>https://www.scmgalaxy.com/tutorials/a-guide-on-how-to-become-a-devsecops-engineer/#respond</comments>
		
		<dc:creator><![CDATA[prince k]]></dc:creator>
		<pubDate>Mon, 06 Dec 2021 06:52:38 +0000</pubDate>
				<category><![CDATA[DevOps Practice and Process]]></category>
		<category><![CDATA[A guide]]></category>
		<category><![CDATA[become a devsecops engineer]]></category>
		<category><![CDATA[Concepts]]></category>
		<category><![CDATA[Devops]]></category>
		<category><![CDATA[devsecops engineer]]></category>
		<category><![CDATA[devsecops roles and responsibilities]]></category>
		<category><![CDATA[knowledge]]></category>
		<category><![CDATA[qualification]]></category>
		<category><![CDATA[salary insight in india]]></category>
		<category><![CDATA[Skills]]></category>
		<category><![CDATA[ttraining place]]></category>
		<guid isPermaLink="false">https://www.scmgalaxy.com/tutorials/?p=9592</guid>

					<description><![CDATA[<p>Who is DevSecOps The term DevSecOps is a collaborative working method that implements security over development and operations teams. This [&#8230;]</p>
<p>The post <a href="https://www.scmgalaxy.com/tutorials/a-guide-on-how-to-become-a-devsecops-engineer/">A Guide on How to Become a DevSecOps Engineer?</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="606" height="606" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2021/12/image.png" alt="" class="wp-image-9593" srcset="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2021/12/image.png 606w, https://www.scmgalaxy.com/tutorials/wp-content/uploads/2021/12/image-300x300.png 300w, https://www.scmgalaxy.com/tutorials/wp-content/uploads/2021/12/image-150x150.png 150w" sizes="auto, (max-width: 606px) 100vw, 606px" /></figure>



<h1 class="wp-block-heading"><strong><span class="has-inline-color has-vivid-red-color">Who is DevSecOps</span></strong></h1>



<p class="wp-block-paragraph">The term DevSecOps is a collaborative working method that implements security over development and operations teams. This collaboration aims to reduce the risks, into all stages of DevOps projects. </p>



<p class="wp-block-paragraph">DevSecOps believes that security should be everyone’s priority whoever is working on the project. It will help to prevent the risks which will enhance the experience of customers when they will use the product after deployed in the market.</p>



<p class="wp-block-paragraph">In other words, DevSecOps engineers ensure that the organization’s network and IT infrastructure remain free from security flaws.</p>



<p class="wp-block-paragraph">DevSecOps keep their eye on all stages whether it is development, testing, monitoring, etc for security purposes, which is why many DevSevOps choose to pursue an on-campus or <a href="https://www.degreeplanet.com/masters-in-computer-science-with-unrelated-bachelors/">online master in computer science</a>.</p>



<p class="wp-block-paragraph">The DevSecOps engineers must be aware of specific toolsets like <strong><span style="color:#000aa3" class="has-inline-color">Docker, Jenkins, Java, Python, Perl, Ruby, Scripting YAML, DAST (Dynamic Application Security Testing), SAST (Static Application Security Testing)</span>.</strong></p>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">What does a DevSecOps engineer do?</h2>



<ul class="wp-block-list">
<li>Process monitoring</li>



<li>Writing risk analyzes</li>



<li>Incident management</li>



<li>Testing, selection, and implementation of technologies, tools, and working methods</li>



<li>Automation of security controls</li>



<li>The maintenance of the system and the external and internal computer network of the company</li>



<li>Control and management of security operations</li>



<li>More broadly, they participate in the construction of a “safety culture” within the company by supporting the various teams and customers in the implementation of good safety practices.</li>



<li>Provide packaging/deployment capability to deliver products to point of need, including multiple cloud-based solutions.</li>



<li>Support multiple agile teams across various platforms, environments, and instances</li>



<li>Incorporate best practices to increase the quality &amp; velocity of deployments</li>



<li>Implement security best practices and configuration management</li>



<li>Increase system performance with a focus on high availability and scalability</li>
</ul>



<h1 class="wp-block-heading has-text-align-center"><strong><span class="has-inline-color has-vivid-red-color">How to Become a DevSecOps Engineer?</span></strong></h1>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="975" height="491" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2021/12/image-1.png" alt="" class="wp-image-9594" srcset="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2021/12/image-1.png 975w, https://www.scmgalaxy.com/tutorials/wp-content/uploads/2021/12/image-1-300x151.png 300w, https://www.scmgalaxy.com/tutorials/wp-content/uploads/2021/12/image-1-768x387.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<p class="wp-block-paragraph">To be a DevSecOps&nbsp;engineer requires a set of skills and practical experience. DevSecOps engineers should aware of how security impacts each stage of the development pipeline and the finished product or service. </p>



<p class="wp-block-paragraph">Of course, soft skills also matter to build better communication between team members to work effectively with each other.</p>



<p class="wp-block-paragraph">The work of a DevSecOps Engineer is like many other IT security professional roles but it is a little dia different in terms of DevOps. </p>



<p class="wp-block-paragraph">Both IT security professionals and DevSecOps engineers use distinctive best practice tools and methods like cybersecurity software, threat modeling, and risk assessments to recognize and analyze threats.</p>



<p class="wp-block-paragraph"> As a role of DevSecOps in projects, security isn’t an afterthought but is placed into the software at the time of the development, by using secure coding. </p>



<p class="wp-block-paragraph">During development, the software is attacked to find vulnerabilities, because it is opposed to running a scan once it is created.</p>



<p class="wp-block-paragraph">Automation tools play a key role to detect vulnerabilities, so DevSecOps should aware of such toolsets.</p>



<p class="wp-block-paragraph"><strong><span style="color:#1000a3" class="has-inline-color">Some skills that are required:-</span></strong></p>



<ul class="wp-block-list">
<li><strong>Should have knowledge of the DevOps culture and principles.</strong></li>
</ul>



<ul class="wp-block-list">
<li><strong>An understanding of programming languages such as <span style="color:#0001a3" class="has-inline-color">Docker, Jenkins, Perl, Java, Python, and PHP</span> would be helpful.</strong></li>
</ul>



<ul class="wp-block-list">
<li><strong>Strong teamwork and Soft skills (communication skills).</strong></li>
</ul>



<ul class="wp-block-list">
<li><strong>Should have knowledge of threat modeling and risk evaluation techniques.</strong></li>
</ul>



<ul class="wp-block-list">
<li><strong>Up-to-date knowledge of cyber security threats, current best practices, and the latest software.</strong></li>
</ul>



<p class="wp-block-paragraph">These skills can be obtained by either having trained through any institute that provides training or course or directly from organizational training during job roles.</p>



<p class="wp-block-paragraph"></p>



<h1 class="wp-block-heading has-text-align-center"><strong><span class="has-inline-color has-vivid-red-color">Qualification and knowledge</span></strong></h1>



<ul class="wp-block-list">
<li>Should have experience and <a href="http://www.datacamp.com" target="_blank" rel="noreferrer noopener">knowledge of programming language</a>s and automation tools.</li>



<li>People should have technical degrees such as engineering or computer science.</li>



<li>Getting certifications from a well-known platform will help you to get into this role even without having a technical degree.&nbsp;</li>



<li>Experience with common DevOps related tools, such as:-</li>
</ul>



<ul class="wp-block-list">
<li><strong>Jira</strong></li>



<li><strong>Confluence</strong></li>



<li><strong>Jenkins</strong></li>



<li><strong>Artifactory</strong></li>



<li><strong>GitHub</strong></li>



<li><strong>Docker</strong></li>



<li><strong>Kubernetes</strong></li>



<li><strong>Ansible</strong></li>



<li><strong>Terraform</strong></li>
</ul>



<ul class="wp-block-list">
<li>Should have experience with programming and scripting languages, such as <strong><span style="color:#0700a3" class="has-inline-color">C/C++, C#, Python, JavaScript, PowerShell, Bash, etc.</span></strong></li>
</ul>



<ul class="wp-block-list">
<li>Should have experience with virtualization technologies on-premise or cloud-based services such as &nbsp;<span style="color:#000fa3" class="has-inline-color"><strong>Microsoft Azure, AWS VMs, VMware vCenter/ESXi,&nbsp; and Hyper-V.</strong></span></li>
</ul>



<h2 class="wp-block-heading has-text-align-center"><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color"><strong>Salary insights of a DevSecOps Engineer</strong></mark></h2>



<p class="wp-block-paragraph">The average salary of&nbsp;DevSecOps in&nbsp;India&nbsp;is&nbsp;₹ 1,500,000&nbsp;per year or&nbsp;₹ 769&nbsp;per hour.</p>



<p class="wp-block-paragraph">Entry-level positions start with Rs 1,400,000&nbsp;per year, while experienced workers can make up to&nbsp;Rs 2,400,000&nbsp;per year.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy"  id="_ytid_57837"  width="640" height="360"  data-origwidth="640" data-origheight="360" src="https://www.youtube.com/embed/LB9D-HDdAFg?enablejsapi=1&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;rel=1&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;theme=dark&#038;color=red&#038;controls=1&#038;disablekb=0&#038;" class="__youtube_prefs__  epyt-is-override  no-lazyload" title="YouTube player"  allow="fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen data-no-lazy="1" data-skipgform_ajax_framebjll=""></iframe>
</div></figure>



<h1 class="wp-block-heading has-text-align-center"><strong><span class="has-inline-color has-vivid-red-color">Training Place</span></strong></h1>



<p class="wp-block-paragraph">I would like to tell you about one of the best places to get trained and certification in&nbsp;<strong>DevOps, DevSecOps, and SRE</strong>&nbsp;courses is&nbsp;<strong><a href="https://www.devopsschool.com/" target="_blank" rel="noreferrer noopener">DevOpsSchool</a>.&nbsp;</strong></p>



<p class="wp-block-paragraph">This Platform offers the best trainers who have good experience in DevOps and also they provide a friendly eco-environment where you can learn comfortably and free to ask anything regarding your course and they are always ready to help you out whenever you need, that’s why they provide pdf’s, video, etc. to help you.</p>



<p class="wp-block-paragraph">They also provide real-time projects to increase your knowledge and to make you tackle the real face of the working environment. It will increase the value of yours as well as your resume. So do check this platform if you guys are looking for any kind of training in any particular course and tools.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://www.scmgalaxy.com/tutorials/a-guide-on-how-to-become-a-devsecops-engineer/">A Guide on How to Become a DevSecOps Engineer?</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.scmgalaxy.com/tutorials/a-guide-on-how-to-become-a-devsecops-engineer/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Build Forge Concepts and Terminology</title>
		<link>https://www.scmgalaxy.com/tutorials/build-forge-concepts-and-terminology/</link>
					<comments>https://www.scmgalaxy.com/tutorials/build-forge-concepts-and-terminology/#respond</comments>
		
		<dc:creator><![CDATA[scmgalaxy K]]></dc:creator>
		<pubDate>Sun, 27 Jul 2014 00:00:00 +0000</pubDate>
				<category><![CDATA[BuildForge]]></category>
		<category><![CDATA[Build]]></category>
		<category><![CDATA[Build and Forge Concepts and terminology]]></category>
		<category><![CDATA[Build Forge]]></category>
		<category><![CDATA[Build Forge Concepts]]></category>
		<category><![CDATA[Build Forge Objects]]></category>
		<category><![CDATA[Build Forge Terminologies]]></category>
		<category><![CDATA[Concepts]]></category>
		<category><![CDATA[IBM Build Forge Concepts]]></category>
		<category><![CDATA[IBM Build Forge Terminologies]]></category>
		<category><![CDATA[Terminology]]></category>
		<guid isPermaLink="false">http://www.scmgalaxy.com/tutorials/2014/07/27/build-forge-concepts-and-terminology/</guid>

					<description><![CDATA[<p>Reference &#8211; http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/index.jsp?topic=%2Fcom.ibm.rational.buildforge.doc%2Ftopics%2Fjobs_run_bom__top.html Build Forge uses a simple set of objects to construct descriptions of process automation. This section gives [&#8230;]</p>
<p>The post <a href="https://www.scmgalaxy.com/tutorials/build-forge-concepts-and-terminology/">Build Forge Concepts and Terminology</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="body conbody">
<div><img loading="lazy" decoding="async" class="alignnone size-full wp-image-3663 aligncenter" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2014/07/build-forge-concepts.png" alt="build-forge-concepts-and-terminology/" width="600" height="400" srcset="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2014/07/build-forge-concepts.png 600w, https://www.scmgalaxy.com/tutorials/wp-content/uploads/2014/07/build-forge-concepts-300x200.png 300w" sizes="auto, (max-width: 600px) 100vw, 600px" /></div>
<div class="abstract"><span class="shortdesc"><strong>Reference</strong> &#8211; <a href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/index.jsp?topic=%2Fcom.ibm.rational.buildforge.doc%2Ftopics%2Fjobs_run_bom__top.html">http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/index.jsp?topic=%2Fcom.ibm.rational.buildforge.doc%2Ftopics%2Fjobs_run_bom__top.html</a></span></div>
<div class="abstract"></div>
<div class="abstract"><span class="shortdesc">Build Forge uses a simple set of objects to construct descriptions of process automation. </span></div>
<p class="p">This section gives you an overview of key concepts and objects and how they are related. Links to more detailed explanations are included for convenience.</p>
<div class="section">
<h2 class="title sectiontitle">Users and roles</h2>
<p class="p">To access Build Forge, users need to have a user object set up for them. In production systems, this is done by configuring Build Forge to access an identity management system, LDAP.</p>
<p class="p">Build Forge uses an authorization system to control user access to all objects. <em class="ph i"><a class="xref" href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/admin_access.html">Access group</a></em> objects contain lists of <em class="ph i">permissions</em>. A <em class="ph i"><a class="xref" title="You can create users and assign properties to them by using Administration &gt; Users. You can also connect your system to an LDAP/Active Directory database to get user information. You manage user security permissions by assigning users to groups, so you must create some users to test security features." href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/admin_users.html">user</a></em> belongs to one or more access groups.</p>
<p class="p">You can create your own access groups or modify the ones provided. The access groups defined in the system are:</p>
<ul class="ul">
<li class="li">Build Engineer &#8211; defines processes (creates projects and steps)</li>
<li class="li">System Manager &#8211; administers servers and other system-wide features</li>
<li class="li">Security &#8211; administers users, access, and security</li>
<li class="li">Developer &#8211; helps develop processes, runs jobs, views results</li>
<li class="li">Operator &#8211; copies projects, runs jobs, views results</li>
<li class="li">Guest &#8211; copies projects, runs jobs, views results</li>
</ul>
</div>
<div class="section">
<h2 class="title sectiontitle">Servers</h2>
<p class="p">A <a class="xref" title="A server resource in the console represents a host where you can run projects or steps." href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/servers_about.html"><em class="ph i">server</em></a> object defines a place where projects and steps can run. Projects and steps can use the same server or select one independently.</p>
<p class="p">Server objects represent hosts where work is performed. The host must be running a Build Forge agent to receive the work from the system and return results.</p>
<p class="p">Other objects are related to servers and need to be set up before defining projects and steps:</p>
<ul class="ul">
<li class="li">Server Authentications: a <em class="ph i"><a class="xref" title="Use server authentications to associate login credentials to a server." href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/servers_auth_about.html">server authentication</a></em> stores login information for the server to use to access the host specified by the server. A server authentication must be created before creating the server that uses it. In the server definition, choose the server authentication from the list of all server authentications defined in the system.</li>
<li class="li">Collectors: a <em class="ph i"><a class="xref" href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/servers_collectors__top.html">collector</a></em> object gathers specified properties of a server. The data is stored in a <em class="ph i"><a class="xref" title="You can use collectors, manifests, and selectors together to choose a server resource at run time for a project or step." href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/servers_manifest__top.html">manifest</a></em>. Servers have a default set of properties assigned. These built-in properties include information about the host architecture, network connections, and resources (CPU, memory, load). You can add other properties by defining collector objects. A collector must be created before adding it to the server. In the server definition, choose the collector from the list of all collectors defined in the system.</li>
<li class="li">Selectors: a <em class="ph i"><a class="xref" title="Selectors choose a server resource on which to run a project or step." href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/servers_selectors_about.html">selector</a></em> object defines how a server is selected for use by a project or step. A selector must be created before adding it to the project that uses it. In the project definition, choose the selector from the list of all selectors defined in the system.</li>
<li class="li">Environments: an <em class="ph i"><a class="xref" title="An environment is a named set of variables." href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/env_about.html">environment</a></em> object is a set of variables that can be used by a step. During a job, the variables are set on the server host before the step is run. Environments can be associated with server objects, project objects, and step objects. When the same variable is set to different values in different environments, an <a class="xref" href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/env_var_application_to_steps_inheritance.html">inheritance</a> scheme determines which value is used. An environment must be created before adding it to a server, project, or step. In those object definitions, choose the environment from the list of all environments defined in the system.</li>
</ul>
</div>
<div class="section">
<h2 class="title sectiontitle">Environments</h2>
<p class="p">An <em class="ph i">environment</em> is a set of variables. Environments can be specified for server, project, and step objects. When a step runs, environments set at each of those objects are combined to provide variables for the step to use. See <a class="xref" title="An environment is a named set of variables." href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/env_about.html">About environments</a>.</p>
<p class="p">Variables can be changed as a step runs. See <a class="xref" title="Variables can be changed during execution with step, project, or permanent scope." href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/env_task_changing_variable_values_during_execution_t.html">Changing variable values during step execution</a>.) The scope of the change can be local to the step, local to the project, or permanent (the variable is changed in the stored environment.</p>
<p class="p">Predefined <a class="xref" title="System-defined variables are available to use in variables." href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/env_system_vars_reference.html">system variables</a> are available as well as variables you define.</p>
</div>
<div class="section">
<h2 class="title sectiontitle">Projects</h2>
<p class="p">A <a class="xref" title="Projects are executable sets of steps, with their own environment group and server properties." href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/projects_about.html"><em class="ph i">project</em></a> defines work to be done in a process. When a project is started, it runs as a job.</p>
<p class="p">The work to be done is contained in the list of steps.</p>
<p class="p">Other objects are related to projects:</p>
<ul class="ul">
<li class="li">Selectors: a <a class="xref" title="Selectors choose a server resource on which to run a project or step." href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/servers_selectors_about.html"><em class="ph i">selector</em></a> determines where the project will be started. If a selector is not specified for the project, then it cannot run independently and is called a <a class="xref" title="The Libraries panel contains libraries, which are projects that do not have a selector specified." href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/projects_libraries_about.html">library.</a> The selector must already be defined to assign it to a job.</li>
<li class="li">Environments: an <em class="ph i"><a class="xref" title="An environment is a named set of variables." href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/env_about.html">environment</a></em> object is a set of variables that can be used by a step. During a job, the variables are set on the server host before the step is run. Environments can be associated with server objects, project objects, and step objects. An <a class="xref" href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/env_var_application_to_steps_inheritance.html">inheritance</a> scheme determines which values are used if the same variable is set to different values. An environment must be created before creating the server, project, or step that uses it. In those object definitions, choose the environment from the list of all environments defined in the system.</li>
<li class="li">Notification templates: a <a class="xref" href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/projects_notifi_about.html"><em class="ph i">notification template</em></a> defines how to send out notifications about job activity (job start, job pass, job fail, others). A notification object defines who to notify through access groups. You specify the location of your SMTP server in a system setting.</li>
<li class="li">Classes: a <a class="xref" href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/projects_classes_about.html"><em class="ph i">class</em></a> object is used to group projects for maintenance purposes. Typically classes are used to purge or archive completed jobs periodically. All jobs that have run using the project are affected by the class.</li>
<li class="li">Adaptors: an <a class="xref" href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/adaptor_def_adaptor.html"><em class="ph i">adaptor</em></a> defines an integration with an external system, typically a source code management system. Several <a class="xref" href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/adaptor_template_descriptions.html">sample templates</a> are provided as a starting point. You need to configure them further to manage the connection and perform specified actions in the system.</li>
<li class="li">Adaptor links: an <a class="xref" href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/adaptor_def_adaptor_link.html"><em class="ph i">adaptor link</em></a> defines the relationship between an adaptor and the project that uses it.</li>
</ul>
</div>
<div class="section">
<h2 class="title sectiontitle">Steps</h2>
<p class="p">A <em class="ph i">step</em> defines the smallest unit of work to be done. (See <a class="xref" href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/steps_about.html">About steps</a>.) Its key component is its Command property, which includes a command to be run on the selected server.</p>
<p class="p">The Command property can also be used to run <a class="xref" href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/dotcmd__top_using.html">dot commands</a>. Dot commands are commands that run on the process engine and provide additional functionality.</p>
<p class="p">Other objects are related to projects:</p>
<ul class="ul">
<li class="li">Selectors: a step can have its own <a class="xref" title="Selectors choose a server resource on which to run a project or step." href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/servers_selectors_about.html">selector</a>. If not specified it uses the selector of its project.</li>
<li class="li">Environments: a step can have its own <a class="xref" title="An environment is a named set of variables." href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/env_about.html">environment</a>. The environments provided by the server, the project, and the step are combined. By default they are applied in that order, so that any variables defined by the step&#8217;s environment take precedence over definitions of the same variable. Precedence can be controlled in system settings.</li>
<li class="li">Log Filters: a step can be assigned a log filter in its Result property. A <a class="xref" title="Use log filters to specify the success criteria for a step. A filter stores one or more regular expressions." href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/projects_logfilter_about.html"><em class="ph i">log filter</em></a> object is used to specify conditions that indicate if the step passes or fails. When running a Perl engine, you use regular expressions to scan the log for a particular pattern. When running a Java engine, you also use regular expressions to scan the log for a particular pattern. Normally the exit status of the command is used, but log filters provide an alternate means. A log filter must be created before specifying it in a step. In the Result property for the step, you choose the log filter from the list of all log filters defined in the system.</li>
<li class="li">Notification templates: a <a class="xref" href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/projects_notifi_about.html"><em class="ph i">notification template</em></a> defines how to send out notifications about step activity (step start, step pass, step fail, others). A notification object defines who to notify through access groups. You specify the location of your SMTP server in a system setting.</li>
<li class="li">Build Catalyst: a step can run rafmake, the key utility in <a class="xref" title="Build Catalyst accelerates make-based C and C++ software builds. It interprets and analyzes your existing make files and runs an accelerated build. The accelerated build can use techniques such as parallel builds and distributed builds to reduce overall build time." href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/buildcat_about.html">Build Catalyst</a>. Build Catalyst provides the means to accelerate make-based builds. Build Catalyst must be installed on the same host where the make builds are run, in addition to a Build Forge agent.</li>
</ul>
</div>
<div class="section">
<h2 class="title sectiontitle">Jobs</h2>
<p class="p">A <a class="xref" title="A job is a project that is executing or has finished executing." href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/jobs_about__top.html">job</a> is a running project. When the job is <a class="xref" title="There are several ways to start a job." href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/jobs_run_starting.html">started</a>, the process engine queues it and then runs it. You can check its status in the Jobs panel. When it completes, the following information is available:</p>
<ul class="ul">
<li class="li">Results: you can review the <a class="xref" href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/jobs_run_results_viewing.html">results</a> of all steps by opening the job. You can also open a running job to monitor its progress.</li>
<li class="li">Step log: the step log records extensive information about how a step was run, including information about the manifest and environment settings as well as execution results. Click the step results link in the Results page to view the log.</li>
<li class="li">Bill of Materials: the <a class="xref" href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/jobs_run_bom__top.html">Bill of Materials</a> (BOM) contains information about job steps and step manifests. You can use the <a class="xref" href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/dotcmd_bom.html">.bom</a> dot command to format additional information for the BOM and write data to it. You can use the <a class="xref" href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/dotcmd_scan.html">.scan</a> dot command to add baselines and checkpoints to the BOM.</li>
</ul>
<p class="p">You can cancel and restart jobs. You can add projects to the <a class="xref" href="http://pic.dhe.ibm.com/infocenter/bldforge/v8r0/topic/com.ibm.rational.buildforge.doc/topics/jobs_schedule__top.html">Schedule</a> to have them run at scheduled times.</p>
</div>
</div>
<p>The post <a href="https://www.scmgalaxy.com/tutorials/build-forge-concepts-and-terminology/">Build Forge Concepts and Terminology</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.scmgalaxy.com/tutorials/build-forge-concepts-and-terminology/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
