<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: AstroCode</title>
    <description>The latest articles on DEV Community by AstroCode (@astocode).</description>
    <link>https://dev.to/astocode</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F507958%2F20fc6750-a0d1-4cf8-92b8-a41f1fedce69.jpg</url>
      <title>DEV Community: AstroCode</title>
      <link>https://dev.to/astocode</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/astocode"/>
    <language>en</language>
    <item>
      <title>Understanding Auto-Merge in Dependency Management Tools</title>
      <dc:creator>AstroCode</dc:creator>
      <pubDate>Tue, 10 May 2022 19:07:49 +0000</pubDate>
      <link>https://dev.to/astocode/understanding-auto-merge-in-dependency-management-tools-2g04</link>
      <guid>https://dev.to/astocode/understanding-auto-merge-in-dependency-management-tools-2g04</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uKS7GuQy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh6.googleusercontent.com/v3faQJ_hQTkn63HGgbutjuItTs0Ai_d5eVFF0f5ZijtQtrqCDsfjl7Vc4LAP9rVi-Uha8dDZ1yVpE9fQ2AoLs2ru7bMriVwcZ58D3JP5Aox3k-0YufVLa9iAwGv-A43dJFKFamVRpL5sdsiTnw" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uKS7GuQy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh6.googleusercontent.com/v3faQJ_hQTkn63HGgbutjuItTs0Ai_d5eVFF0f5ZijtQtrqCDsfjl7Vc4LAP9rVi-Uha8dDZ1yVpE9fQ2AoLs2ru7bMriVwcZ58D3JP5Aox3k-0YufVLa9iAwGv-A43dJFKFamVRpL5sdsiTnw" alt="Cover image" width="880" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Photo by&lt;a href="https://unsplash.com/@fantasyflip?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;  Philipp Katzenberger&lt;/a&gt; on&lt;a href="https://unsplash.com/s/photos/cyber-security?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;  Unsplash&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every day, a large number of applications are deployed by developers. These applications may be developed using a content management system (CMS) or from scratch. Still, the majority of them use dependencies in the form of open-source materials to improve the application's functionality or save time by avoiding repetitive code. &lt;/p&gt;

&lt;p&gt;For example, for user tracking applications,  developers may choose to employ a dependency that leverages predefined attributes and can be implemented simply without writing new code. The software would hypothetically use that dependency to generate various file formats, such as converting or generating a pdf file from a specified format.&lt;/p&gt;

&lt;p&gt;Dependencies are typically derived from third parties rather than created within the company. The majority of these dependencies are open source, which means that other developers can examine them and utilise them however they see fit. However, because of their open-source nature, it is possible to find security weaknesses in them -- they may be outdated, or the developer who created the open-source project may not have plugged every loophole. Even a singular severe vulnerability in a dependency can make the final application vulnerable. An RCE, for example, was discovered in the open-source logging library of Java, causing the entire internet to tremble. &lt;/p&gt;

&lt;p&gt;Because of this, it is critical that these dependencies be checked for security vulnerabilities on a regular basis, and if any vulnerabilities are discovered, a patch must be issued to mitigate the risks associated with them.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Auto-Merge in Dependency Management?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--x1yJA5F5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh4.googleusercontent.com/oGkY7p-lHnDoXdM0nzzrR_eBzXsaz9JC38hZ0vva-dHAvr6Q4VF8N_K9n76MFLHlXzO9LJXhEBbSh-jsI0u3uk60StE9KO4OiDLcAzPdMgEKxcwyje68Qk2PceiixgqsthDlVe9cfgIEZqxz5A" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--x1yJA5F5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh4.googleusercontent.com/oGkY7p-lHnDoXdM0nzzrR_eBzXsaz9JC38hZ0vva-dHAvr6Q4VF8N_K9n76MFLHlXzO9LJXhEBbSh-jsI0u3uk60StE9KO4OiDLcAzPdMgEKxcwyje68Qk2PceiixgqsthDlVe9cfgIEZqxz5A" alt="Screenshot of allowing auto-merge" width="768" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository"&gt;Source&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most code hosting platforms, such as GitLab and GitHub, offer users an "auto-merge" feature. Enabling auto-merge means that your pull request will automatically merge once all relevant reviews and status checks have been completed. Auto-merge eliminates the need to sit around and wait for prerequisites to be met, allowing you to go on to other tasks. It can be valuable when someone finds a vulnerable dependency and needs to patch it as soon as possible.&lt;/p&gt;

&lt;p&gt;Inadequately patching insecure dependencies threatens the overall security of an application, as hackers may exploit the unpatched vulnerabilities to compromise the application or even an entire organization's architecture. Most organizations use a manual approach to assess dependencies; however, manually evaluating and merging such updates can be highly time-consuming and impact other resources. It is now possible to automate the updating of dependencies.&lt;/p&gt;

&lt;p&gt;Numerous organizations use several dependencies in their projects, and they cannot keep track of every update that is made available for each of those dependencies. As a result, specific dependencies may contain substantial weaknesses and are neglected. &lt;/p&gt;

&lt;p&gt;When we talk about tools, they provide an automatic way for auto merging the vulnerable dependencies with the new updated ones, which in the vast majority of situations fixes the previously present vulnerabilities in the dependent libraries. As a result, they ought to be taken into consideration as well. Furthermore, they can prevent teams from becoming subject to critical problems since they typically alert them in time to fix the vulnerabilities or update the vulnerable dependencies that are being used. &lt;/p&gt;

&lt;p&gt;Several tools also permit auto-merge for dependency management. This article will briefly discuss three: WhiteSource Renovate, Dependabot, and Doppins.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.whitesourcesoftware.com/free-developer-tools/renovate/"&gt;WhiteSource Renovate&lt;/a&gt; is a free tool developers can use to update dependencies in real-time. When a dependency is susceptible, Renovate can be triggered automatically to build a new pull request with the necessary details about the update and vulnerability it fixes. This tool offers developers accurate information about the vulnerable dependency and contextually visible pull requests for third-party vulnerabilities in real-time. &lt;/p&gt;

&lt;p&gt;It also can auto-merge the request, which resolves any vulnerabilities that may exist in the dependencies, making it one of the best-in-class solutions for managing dependencies in the market. In addition, it provides certain additional advantages, such as vulnerability detection through the scanning of public and private repositories.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--trSRQly8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh4.googleusercontent.com/zZMH2PwVfVeq__fb5upSA5GZA-gdfDEATX9FFGqY5_0Y5ZjrnkcE6TZ3Lp2S1BfvLzMZI-_mGlJgOBXs3NwF_Ff09puLh737SR_fWMzU-lZk638qB9TVMl-t2Q-Ovm4Q5RkqzR0hkKWG6eBt7w" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--trSRQly8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh4.googleusercontent.com/zZMH2PwVfVeq__fb5upSA5GZA-gdfDEATX9FFGqY5_0Y5ZjrnkcE6TZ3Lp2S1BfvLzMZI-_mGlJgOBXs3NwF_Ff09puLh737SR_fWMzU-lZk638qB9TVMl-t2Q-Ovm4Q5RkqzR0hkKWG6eBt7w" alt="Renovate screenshot" width="880" height="482"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/dependabot"&gt;Dependabot&lt;/a&gt; is a GitHub native tool that also searches through dependencies in an application for updated versions; if there are new versions, it will typically show or open a new pull request. In that case, we can enable auto-merge, but it will necessitate a significant amount of configuration effort because we will need to add a couple of files and much more, which is not straightforward. In addition, it will only conduct dependency scanning and will not perform vulnerability scans.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TgQztPm_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh5.googleusercontent.com/vjep7h3bY1pv1s9Dk_DvnyTQSMe842DQcbsIZAz4Ul2EhMdEtyh9_sgI9msolSJcIkKsnIkg65-xL-3FbKJuDKJnzgxjueH9erdpg2AqJVB8Azjs70Fj0Y2b6I6Gi_Q8gLn9ae6J9_FdcuERrw" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TgQztPm_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh5.googleusercontent.com/vjep7h3bY1pv1s9Dk_DvnyTQSMe842DQcbsIZAz4Ul2EhMdEtyh9_sgI9msolSJcIkKsnIkg65-xL-3FbKJuDKJnzgxjueH9erdpg2AqJVB8Azjs70Fj0Y2b6I6Gi_Q8gLn9ae6J9_FdcuERrw" alt="Dependabot screenshot" width="880" height="486"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, &lt;a href="https://doppins.com/"&gt;Doppins&lt;/a&gt; is another option for managing dependencies. Doppins automatically upgrades your dependencies by submitting pull requests to the GitHub repository. It can be enabled on a project with simply a few clicks, as you only need to log in once, after which it will be allowed as an app with no need for any other settings. As soon as it is activated, it will scan all of the dependencies used in the project and give you essential information on the status of your dependencies promptly. In addition, it generates informative pull requests that include the changelog of the released version, if one is available, and commit messages that are delivered on time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_j4pJlk1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh6.googleusercontent.com/OfG8kLDT19RG9eAu8_uXiXBNNz47cB3r6j957K1JOyFlYCtfVULqL_wuaZ2T2Dz374TVztes0x2R9bPrPLDtE63jqvhDQTDhdrve-Oe6_7OS8k7MHYGl3NYugQgkT2MU9vXiU0-BInICMrW5OA" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_j4pJlk1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh6.googleusercontent.com/OfG8kLDT19RG9eAu8_uXiXBNNz47cB3r6j957K1JOyFlYCtfVULqL_wuaZ2T2Dz374TVztes0x2R9bPrPLDtE63jqvhDQTDhdrve-Oe6_7OS8k7MHYGl3NYugQgkT2MU9vXiU0-BInICMrW5OA" alt="Doppins screenshot" width="880" height="486"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Dependencies are becoming a source of concern because they are being used in many projects. Because of the large number of dependencies, not every company can keep track of all of them. Threat actors are exploiting a large number of high severity vulnerabilities that have been discovered in those dependencies to acquire access to various organizations, their source code, and a variety of other things. As a result, auto-merge can be a lifesaver because it will save time while protecting the company from potential vulnerabilities. Hence it is always recommended to have a dependency-updating tool with the auto-merge within the organization.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>vulnerability</category>
      <category>security</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Advantages of Software Identification Tagging</title>
      <dc:creator>AstroCode</dc:creator>
      <pubDate>Wed, 20 Apr 2022 15:04:18 +0000</pubDate>
      <link>https://dev.to/astocode/advantages-of-software-identification-tagging-3f52</link>
      <guid>https://dev.to/astocode/advantages-of-software-identification-tagging-3f52</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---JJJ9aDL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh6.googleusercontent.com/e4-WV00sVjY7AW-f2a0vVfQveZF8FNpWSuNFBly6Chv2TAPkx8_6a3DTY9LT3014z8MzowLGAij_5FzxSc_vwizeON4lE_q-TL5rxBBSI76Fkkak0ISkRxIYBeiXttqwLXKBw20k" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---JJJ9aDL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh6.googleusercontent.com/e4-WV00sVjY7AW-f2a0vVfQveZF8FNpWSuNFBly6Chv2TAPkx8_6a3DTY9LT3014z8MzowLGAij_5FzxSc_vwizeON4lE_q-TL5rxBBSI76Fkkak0ISkRxIYBeiXttqwLXKBw20k" alt="" width="500" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://unsplash.com/photos/C6T6vr1sQI0"&gt;Photo&lt;/a&gt; by &lt;a href="https://unsplash.com/@windows"&gt;Windows&lt;/a&gt; on Unsplash&lt;/p&gt;

&lt;p&gt;Understanding exactly what licensable entities have been installed is one of the most difficult aspects of controlling software across a network. And the two criteria --- what's deployed against what's licensable -- don't always line up.&lt;/p&gt;

&lt;p&gt;Many software suites and apps, for example, share installers between versions. As a result, it can be difficult to tell exactly what edition of a software application has been installed or how that application should be licensed using traditional software identification techniques (which are usually based on some kind of finger-printing methodology, the sophistication of which varies from one inventory solution to the next).&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Software Identification Tagging?
&lt;/h2&gt;

&lt;p&gt;As part of the contemporary world's key infrastructure, software is critical to our economy and way of life. Too frequently, cost and complexity make it impossible to efficiently maintain software, leaving it vulnerable to attack. Enterprises must keep accurate software inventories of their managed devices to correctly manage software in support of higher-level business, information technology, and cybersecurity tasks.&lt;/p&gt;

&lt;p&gt;As a result, the concept behind SWID Tags is simple: software producers 'embed' metadata into software installs that inventory systems can read to improve the accuracy of essential information such as software publisher, product name, and version identification. SAM managers will be able to distinguish between complete and trial versions of software, network vs stand-alone installer, and track &lt;a href="https://azure.microsoft.com/en-us/overview/what-is-saas/"&gt;SaaS&lt;/a&gt; and cloud apps much more easily as a result of this.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://csrc.nist.gov/Projects/Software-Identification-SWID/guidelines"&gt;SWID Tag&lt;/a&gt; standardized the structure of this data so that, theoretically, any inventory tool should be able to read it and utilize it in the software recognition process. But hold on, there's a catch.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NAWY7IuA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh4.googleusercontent.com/kRFBoyU8ZIpRdD4jzyzgvQtZvlL5NGblbY0AwHJD2pccbmCdtIEVVViHRrBm8QO0CN29eqrr7_UbcU7OP7mPyxjqtL9tr3J2Uz2ZpBbrhhx6TEjgyksQT2gukLzrJ5ki6Cm-oG4o" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NAWY7IuA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh4.googleusercontent.com/kRFBoyU8ZIpRdD4jzyzgvQtZvlL5NGblbY0AwHJD2pccbmCdtIEVVViHRrBm8QO0CN29eqrr7_UbcU7OP7mPyxjqtL9tr3J2Uz2ZpBbrhhx6TEjgyksQT2gukLzrJ5ki6Cm-oG4o" alt="" width="500" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learning.oreilly.com/library/view/software-life-cycle/9781849282062/xhtml/chapter10.html#chapter10section04"&gt;Source&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Software bill of materials (SBOM) and SWID
&lt;/h2&gt;

&lt;p&gt;Organizations in a variety of sectors rely on open source and third-party software, but often have no access over the quality, security, or originator of the components. Software supply chains are vulnerable to assaults due to a lack of openness. To tackle this, the &lt;a href="https://scribesecurity.com/sbom/"&gt;software bill of materials&lt;/a&gt; (SBOMs) was introduced so software components can be identified and described.&lt;/p&gt;

&lt;p&gt;A software Bill of Materials (SBOM) is a list of all open source and third-party components that are included in a codebase. An SBOM also includes the licenses that govern those components, as well as the versions and patch status of the components utilized in the codebase, allowing security teams to immediately discover any security or license problems.&lt;/p&gt;

&lt;p&gt;Because SBOMs are meant to be shared across enterprises and communities, having a standard structure (both human and machine readable) with consistent information is essential. SPDX, CycloneDX, and SWID are some of the recommended formats available.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits
&lt;/h2&gt;

&lt;p&gt;SWID ensures that software license agreements are followed. Knowing what software has been installed and utilized assists companies in avoiding paying for licenses that aren't needed. It also makes sure all software assets in use are compliant with company policy. &lt;/p&gt;

&lt;p&gt;The attack surface area can be reduced by reducing and regulating an organization's software footprint. SWID tags verify that any software assets deployed are up to date and devoid of known exploitable flaws. Countering cyber dangers is as simple as making sure all software is patched and updated. They also assist in ensuring that all deployed software assets are configured in accordance with the security rules of the business. &lt;/p&gt;

&lt;p&gt;Configuring defensive measures, limiting the number of services exposed, and restricting software features can all help to lower the attack surface and harden systems against assaults. Accurate software inventories identify essential software assets, allowing for focused and monitored inspections. &lt;/p&gt;

&lt;p&gt;Finally, SWID plans for any softwares and resources needed to enable legacy system upgrades and replacements. Budgeting for IT investments can be made easier if you know what commercial and bespoke software the company employs.&lt;/p&gt;

&lt;h2&gt;
  
  
  SWID Life Cycle
&lt;/h2&gt;

&lt;p&gt;While some vendors provide tools for managing licenses, updates, patches, and settings for their products, businesses must monitor and employ a variety of such tools to accommodate the wide range of products they use. &lt;/p&gt;

&lt;p&gt;The great variety of technologies available, human error, and a lack of resources can restrict an organization's capacity to support active software management, preventing timely patching and causing settings to drift. Instead, a single method is required to assist enterprises in understanding the current condition of all software throughout the organization, independent of the vendor.&lt;/p&gt;

&lt;p&gt;SWID Tags, as specified by the ISO/IEC 19770-2:2015 standard, promise to be a significant step in achieving this aim. Organizations may use SWID Tags to track the software installed on their controlled devices in a transparent manner. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zTawWTrQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh6.googleusercontent.com/SEEURUZs0XvNKa1tx9CuleSvtfbKKklw7y7X6WZcxmOj-5aXzhbFNPD-nrX8b-mhqCXIOp63gzd2P2ZIE6vofjrepYAjDb5JnBDAAf6nv4_Boo8JoAnXkvco9E5aMN-DGznx9rWI" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zTawWTrQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh6.googleusercontent.com/SEEURUZs0XvNKa1tx9CuleSvtfbKKklw7y7X6WZcxmOj-5aXzhbFNPD-nrX8b-mhqCXIOp63gzd2P2ZIE6vofjrepYAjDb5JnBDAAf6nv4_Boo8JoAnXkvco9E5aMN-DGznx9rWI" alt="" width="880" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://csrc.nist.gov/projects/software-identification-swid/lifecycle"&gt;Source&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SWID Tag files contain descriptive information about a software product's unique release. The SWID standard describes a life cycle in which a SWID Tag is applied to an endpoint during the installation phase of a software product and then removed during the uninstall process.&lt;/p&gt;

&lt;p&gt;SWID Tags are used in multiple standards bodies, including the Trusted Computing Group (TCG) and the Internet Engineering Task Force (IETF). The National Institute of Standards and Technology recommends that software producers adopt the SWID Tag standard.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security Considerations
&lt;/h2&gt;

&lt;p&gt;Since SWID tags include public information about software components, they do not need to be safeguarded from endpoint exposure. Similarly, SWID tags are designed to be easily discoverable by applications and users on an endpoint so that all of the endpoint's SWID tags may be identified and collected. As a result, any security concerns around SWID tags are limited to the use of SWID tags to solve security problems and the potential disclosure of the outcomes of such applications.&lt;/p&gt;

&lt;p&gt;If the SWID tag was produced by the software supplier, it is regarded as "authoritative". The maintainer of a software component, who is supposed to be an expert in their own programme, provides information about the software component in an official SWID tag. As a result, authoritative SWID tags may be relied upon to reflect authoritative software component information.&lt;/p&gt;

&lt;p&gt;A verified signature on a signed SWID tag may be trusted to remain unmodified after it was signed. Unsigned tags, on the other hand, cannot be guaranteed to carry unaltered data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;In this article, we discussed software identification tagging, briefly discussed SWID tagging and its lifecycle, and its advantages with respect to license agreements, adhering compliance etc.&lt;/p&gt;

&lt;p&gt;I hope you found this article informative and interesting.&lt;/p&gt;

</description>
      <category>software</category>
      <category>swid</category>
    </item>
    <item>
      <title>Continuous Application Profiling in Python Production - All You Need to Know</title>
      <dc:creator>AstroCode</dc:creator>
      <pubDate>Tue, 22 Jun 2021 06:27:22 +0000</pubDate>
      <link>https://dev.to/astocode/why-continuous-profiling-can-improve-your-python-application-cea</link>
      <guid>https://dev.to/astocode/why-continuous-profiling-can-improve-your-python-application-cea</guid>
      <description>&lt;p&gt;Cover Photo by &lt;a href="https://unsplash.com/@ffstop?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Fotis Fotopoulos&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/programming?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Profiling?
&lt;/h2&gt;

&lt;p&gt;'Profiling' in programming refers to finding and upgrading those resources that require modification. The resources responsible for enhancing reaction time, response time, and cache time are referred to as modifications. So, we're studying the behavior and making a judgment based on it.&lt;/p&gt;

&lt;p&gt;The main goal of profiling is to reduce CPU resource use once it's been found, so we can improve the program's response time and make it faster than before.&lt;/p&gt;

&lt;p&gt;Ideally, we must only pay for the time we use the resources, as we know from cloud architecture. As a result, if we consume resources for a shorter period of time, we pay less. Thus, &lt;a href="https://granulate.io/introduction-to-continuous-profiling/"&gt;continuous profiling&lt;/a&gt;, that is, profiling during production, leads to cost optimization.&lt;/p&gt;

&lt;h2&gt;
  
  
  How is Profiling Done?
&lt;/h2&gt;

&lt;p&gt;Sometimes, it is critical to track how long a code takes to execute after implementing optimization techniques. To measure the time and memory used to execute a code, we use a time profiler and the memory profiler.&lt;/p&gt;

&lt;h3&gt;
  
  
  Time Profiler
&lt;/h3&gt;

&lt;p&gt;In Python, we have inbuilt time profilers---"time" and " &lt;a href="https://docs.python.org/3/library/timeit.html"&gt;timeit&lt;/a&gt;"---which can measure the time taken to execute a code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--E8CYrWSw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh6.googleusercontent.com/1GuVr0LQospCRnU6ICdQY0mR1pIK4O2XipwM273adrtoDMTdYDh6xCX1OJODwUtpwc4qszgrDO1S0uGCxipIMNxTh9sVcaP-GNZZ1Av2ZVFAhWCTNdLQp6eB9-yIS5vS8vjm92Ze_tZTCBACLg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--E8CYrWSw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh6.googleusercontent.com/1GuVr0LQospCRnU6ICdQY0mR1pIK4O2XipwM273adrtoDMTdYDh6xCX1OJODwUtpwc4qszgrDO1S0uGCxipIMNxTh9sVcaP-GNZZ1Av2ZVFAhWCTNdLQp6eB9-yIS5vS8vjm92Ze_tZTCBACLg" alt="Output"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;a. Time.time(): We are going to use the &lt;a href="https://www.geeksforgeeks.org/python-time-time-method/"&gt;time.time()&lt;/a&gt; function of Python. This measures the time that a specific function or program takes to execute. It shows us whether the complete code was slow in the execution or if a particular program was slow. Sometimes, there might be a problem that is causing the code to execute slowly. There might be a situation in which the CPU is busy running or processing other instructions, so the execution of the Python code becomes slow. In such cases, the wrong time will be returned.&lt;/p&gt;

&lt;p&gt;b. Timeit.repeat(): This function executes the same code multiple times and shows up the average time derived from all the executions. Since the code is getting executed numerous times, it provides a more accurate estimate of the execution time.&lt;/p&gt;

&lt;p&gt;c. Time.clock(): If you want to know the time that the CPU takes to execute the code, you can use this function. It shows the total execution time that a CPU takes in processing the statements.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fCoYvL3k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh5.googleusercontent.com/0d5f3vPW2ndUyXSaKTiqPqChsP9LeisI6TkVtkDSgyfYm2ccDK63Ns__HB48sjCou5uGi1y7xRWUPhf94Bvdpj2Myf5rbleE-VIxFF0zzOO3ohoQPQ7S98rdmXrHAR-t00ZxrZUNV0U36VQZIA" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fCoYvL3k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh5.googleusercontent.com/0d5f3vPW2ndUyXSaKTiqPqChsP9LeisI6TkVtkDSgyfYm2ccDK63Ns__HB48sjCou5uGi1y7xRWUPhf94Bvdpj2Myf5rbleE-VIxFF0zzOO3ohoQPQ7S98rdmXrHAR-t00ZxrZUNV0U36VQZIA" alt="Output"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Memory Profiler
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://pypi.org/project/memory-profiler/"&gt;Memory profilers&lt;/a&gt; are used to calculate the memory usage of each and every line and the functions used in the Python program. It helps in optimizing the code, so it takes less memory in the execution.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;It results in lower power consumption and hardware damage.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It allows users to run small instances also.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It allows for extra capacity in the event of a traffic jam.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BOQ3Y4oo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh6.googleusercontent.com/uxMYXz3Dju3NU2vFL6_gnR3h81bIeP1okr0DZPSWSEl-8BHHC5kDX66ppitK-Nz5CwtWj1-mjoOx5RdQBjkjwM-uEriA1_zO0itRCiJZ_IR0sD6J_ZzY_Nrmq9yWkmfFuOo9bIhcCY6pcSibJg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BOQ3Y4oo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh6.googleusercontent.com/uxMYXz3Dju3NU2vFL6_gnR3h81bIeP1okr0DZPSWSEl-8BHHC5kDX66ppitK-Nz5CwtWj1-mjoOx5RdQBjkjwM-uEriA1_zO0itRCiJZ_IR0sD6J_ZzY_Nrmq9yWkmfFuOo9bIhcCY6pcSibJg" alt="Output"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To get an output from the memory_profiler, we have to run a command like this in the terminal:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Python --m memory_profiler &amp;lt;name of snippet&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Gni3Kayz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh4.googleusercontent.com/GKQS0F2xMkCTRMAOwIYQI5OSYF3Z6KO9bcmhPUflvwJphsa-_5q4s_rJ2OtnaAJNUNhFAQ-UJKGWd0PbRa5xDPrQo4cgZcl0FvbCyWiF1T98niqBKfazxM3rIzBJ-X4xYzPdzkbrqZMDmLjOvg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Gni3Kayz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh4.googleusercontent.com/GKQS0F2xMkCTRMAOwIYQI5OSYF3Z6KO9bcmhPUflvwJphsa-_5q4s_rJ2OtnaAJNUNhFAQ-UJKGWd0PbRa5xDPrQo4cgZcl0FvbCyWiF1T98niqBKfazxM3rIzBJ-X4xYzPdzkbrqZMDmLjOvg" alt="Output"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every column in the output has its own significance.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The first column represents lines.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The second column represents the memory usage.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The third column represents the difference in memory between the current line and the previous line.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The fourth column represents how many times it occurred.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The last column represents the printed contents.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Why Profiling is Necessary
&lt;/h2&gt;

&lt;p&gt;Profiling is critical for cost optimization and delivering a faster response time to users.&lt;/p&gt;

&lt;p&gt;Whenever we run a code or program, whether on the cloud or a server on your premises, it is critical to optimize it since functions utilize a lot of memory. Not doing so in the cloud environment might cost you money because you will be using many resources, and the more resources you use, the more you will have to pay. And not doing so in the case of a local server may cause disruptions in other applications as they will have fewer resources for their execution.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Profile Python Code in Production
&lt;/h2&gt;

&lt;p&gt;Until now, we have seen so many inbuilt profilers in Python, but every profiler has its own specifications---some work on a time basis and some on a memory basis. If we use them continuously, they will take up a lot of resources. Thus, it is not possible to run them continuously. &lt;/p&gt;

&lt;p&gt;To remove this obstacle, we can use software like &lt;a href="https://profiler.granulate.io/"&gt;gProfiler&lt;/a&gt;. It doesn't block up all your resources because it runs in the background, using very few resources. It provides extensive details on its dashboard, like memory used and CPU stats, and it supports a variety of languages like Java, GO, and others.&lt;/p&gt;

&lt;p&gt;Even if you run a profiler using built-in python functions, you still need to make changes in the code. This makes the code more complicated, making it harder for the profiler to understand at times. Thus, it uses a lot of memory and resources and shows significantly fewer stats. In such cases as well, gProfiler helps you because it is able to perform continuous profiling and provide a lot of stats about the program using fewer resources.&lt;/p&gt;

&lt;p&gt;Let's understand how gProfiler works.&lt;/p&gt;

&lt;p&gt;To use the gProfiler while in production, we can install it on the production server. For this, &lt;a href="https://profiler.granulate.io/"&gt;create an account&lt;/a&gt; so you can get an API key that will bind to your server.&lt;/p&gt;

&lt;p&gt;After creating an account, create a service name that you want to monitor, such as client website, internal website, etc.&lt;/p&gt;

&lt;p&gt;Run these commands to download and install gProfiler on your server.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MIAfG5K---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh3.googleusercontent.com/7Yr3legEpbvdp7oacxJ195C104atuj_fkNPfSnCD8z1hkQbJzkkTvX9ho1XkI1kWY-41pTZCoLIAa19VUD1wl4uvJBEernQjmBRlCPJ65s3hhOgJpSfVbYCfHX9GXxm9-1s4egTA" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MIAfG5K---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh3.googleusercontent.com/7Yr3legEpbvdp7oacxJ195C104atuj_fkNPfSnCD8z1hkQbJzkkTvX9ho1XkI1kWY-41pTZCoLIAa19VUD1wl4uvJBEernQjmBRlCPJ65s3hhOgJpSfVbYCfHX9GXxm9-1s4egTA" alt="Code - click on link"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://carbon.now.sh/?bg=rgba%28171%2C+184%2C+195%2C+1%29&amp;amp;t=seti&amp;amp;wt=none&amp;amp;l=auto&amp;amp;ds=true&amp;amp;dsyoff=20px&amp;amp;dsblur=68px&amp;amp;wc=true&amp;amp;wa=true&amp;amp;pv=56px&amp;amp;ph=56px&amp;amp;ln=false&amp;amp;fl=1&amp;amp;fm=Hack&amp;amp;fs=14px&amp;amp;lh=133%25&amp;amp;si=false&amp;amp;es=2x&amp;amp;wm=false&amp;amp;code=wget%2520https%253A%252F%252Fgithub.com%252FGranulate%252Fgprofiler%252Freleases%252Flatest%252Fdownload%252Fgprofiler%2520%250Asudo%2520chmod%2520%252Bx%2520gprofiler%2520%250Asudo%2520.%252Fgprofiler%2520-cu%2520--token%2520%2522%253CAPI_TOKEN_HERE%253E%2522%2520--service-name%2520%2522Service%2520name%2522"&gt;Source&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once gProfiler has been installed, it will start running as soon as you run the last command.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HQHW0XHV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh5.googleusercontent.com/sOygS0ct9Ae9ncllt1AIxObF-ObrsRQ6osSOdMBO_lYKbTjtHtFVVgS7XuGvYjX_wiSBihvln6ED2RNVbQKH90bRJ47MKdrFcJ88PZATr4EFgeA1hxNPuth6QmibvE4-EAfEbxHU" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HQHW0XHV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh5.googleusercontent.com/sOygS0ct9Ae9ncllt1AIxObF-ObrsRQ6osSOdMBO_lYKbTjtHtFVVgS7XuGvYjX_wiSBihvln6ED2RNVbQKH90bRJ47MKdrFcJ88PZATr4EFgeA1hxNPuth6QmibvE4-EAfEbxHU" alt="Output"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As soon as you run anything on the system, it will start profiling that code. And since it is a plug-and-play software, it needs no code modifications and provides seamless production profiling.&lt;/p&gt;

&lt;p&gt;And you will have all the information on your dashboard.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--d2dM1SDp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh5.googleusercontent.com/Ch184I-OAqbTgsb4BWvolJPYcLGtPXBTSmCMA9J6t2H8l4bsVdocTF7nJE0ZRrSBDaWmVX2m9bIg3Zu10gtdj8TLFFq7z8Mk-sZi-zQV1NoAsq0tEpTmxJKdJyV69oiUT0vF1ots" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--d2dM1SDp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh5.googleusercontent.com/Ch184I-OAqbTgsb4BWvolJPYcLGtPXBTSmCMA9J6t2H8l4bsVdocTF7nJE0ZRrSBDaWmVX2m9bIg3Zu10gtdj8TLFFq7z8Mk-sZi-zQV1NoAsq0tEpTmxJKdJyV69oiUT0vF1ots" alt="gProfiler Demonstration"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TDaDIxIc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh4.googleusercontent.com/cmDogt8u8ROHBS82Gwg0C8JO_A424vSjxRWAhQa1W20EMk3qMZxD1hv1ooNzBTpJPpNM17fZXsqifcqYWusJrj5avYE0HwtqTpuRzFSi3G2ZGvgGhOhDrPwBTpaeLX31MbMAv1YA" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TDaDIxIc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh4.googleusercontent.com/cmDogt8u8ROHBS82Gwg0C8JO_A424vSjxRWAhQa1W20EMk3qMZxD1hv1ooNzBTpJPpNM17fZXsqifcqYWusJrj5avYE0HwtqTpuRzFSi3G2ZGvgGhOhDrPwBTpaeLX31MbMAv1YA" alt="gProfiler Demonstration"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;We have discussed how profiling codes on Python can be done using inbuilt functions. We also discussed their drawbacks and limitations---they consume too many resources, have limited capabilities, and cannot be run during production. We also discussed gProfiler as a tool that provides a better profiling solution and overcomes the limitations of the in-built functions.&lt;/p&gt;

</description>
      <category>python</category>
      <category>performance</category>
      <category>profiling</category>
      <category>optimization</category>
    </item>
    <item>
      <title>5 Tools That Integrate With Your IDE for Application Safety</title>
      <dc:creator>AstroCode</dc:creator>
      <pubDate>Tue, 23 Mar 2021 11:55:49 +0000</pubDate>
      <link>https://dev.to/astocode/5-tools-that-integrate-with-your-ide-for-application-safety-4hd6</link>
      <guid>https://dev.to/astocode/5-tools-that-integrate-with-your-ide-for-application-safety-4hd6</guid>
      <description>&lt;p&gt;Building a secure application is a vital requirement for any application you build. Poor security leaves the door open for attackers who can manipulate your users, the application, or the owners. That is why it is important to run security checks on your application before publishing them for use.&lt;/p&gt;

&lt;p&gt;Such testing ensures that your applications are not open to security threats. It involves testing for weaknesses, poor coding practices, and vulnerabilities or dependencies used in the app, and some also provide fixes for the issues found.&lt;/p&gt;

&lt;p&gt;There are numerous ways to test the security of your application. Some platforms require you to give them access to your source code to find vulnerabilities, and some require that your application is already in production. Some of them work even when your code is just static (not running)---these are called &lt;a href="https://en.wikipedia.org/wiki/Static_application_security_testing"&gt;SAST&lt;/a&gt; (static application security testing) tools. You can integrate some of these SAST tools into the IDEs you use while building applications.&lt;/p&gt;

&lt;p&gt;An IDE is an environment for your application development. Discovering security issues within this environment itself can be very beneficial in building secure applications. They may not resolve every security error, but the insights they provide can be a great starting point to keep you on the right track to building a safe product.&lt;/p&gt;

&lt;p&gt;There are a lot of tools that you can integrate into your IDE for this purpose. In this article, we'll look at 5 of them.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. WhiteSource
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nwxI7ViW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_3DF00496DFFE804D77B8226EC94236210F7FA538E6CBB95C039BE05000C8953D_1612865739674_Screenshot%2B2021-02-09%2Bat%2B3.44.25%2BPM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nwxI7ViW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_3DF00496DFFE804D77B8226EC94236210F7FA538E6CBB95C039BE05000C8953D_1612865739674_Screenshot%2B2021-02-09%2Bat%2B3.44.25%2BPM.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.whitesourcesoftware.com/ide-integration/"&gt;WhiteSource&lt;/a&gt; is a free software used to automate security checks in your application and ensure that your code complies with official security standards. With this IDE integration, you can easily detect open source issues. This addresses poor practices that occur during development. It supports Microsoft Visual Studio, Visual Studio Code, IntelliJIDEA, WebStorm, PyCharm, and Eclipse. It also provides solutions for the discovered errors.&lt;/p&gt;

&lt;p&gt;The WhiteSource plugin does its security checks by inspecting direct and transitive dependencies used within an application and, on discovering vulnerabilities, highlights the dependencies as they have been used in the application and suggests fixes.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. HCL AppScan
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--y-V3w2N3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_3DF00496DFFE804D77B8226EC94236210F7FA538E6CBB95C039BE05000C8953D_1612865730451_Screenshot%2B2021-02-09%2Bat%2B3.43.12%2BPM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--y-V3w2N3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_3DF00496DFFE804D77B8226EC94236210F7FA538E6CBB95C039BE05000C8953D_1612865730451_Screenshot%2B2021-02-09%2Bat%2B3.43.12%2BPM.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.hcltechsw.com/products/appscan"&gt;HCL &lt;/a&gt;&lt;a href="https://www.hcltechsw.com/products/appscan"&gt;AppScan&lt;/a&gt; is used for detecting application vulnerabilities while developing applications. They also provide remedies for the vulnerabilities and ensure that your coding complies with security regulations. AppScan can be integrated into several development environments. It supports IDEs such as Eclipse, IntelliJ IDEA, Microsoft Visual Studio, and Visual Studio Code.&lt;/p&gt;

&lt;p&gt;AppScan has several tools like AppScan Standard for &lt;a href="https://en.wikipedia.org/wiki/Dynamic_application_security_testing"&gt;DAST&lt;/a&gt; (dynamic application security testing), AppScan on Cloud, which is a cloud-based platform for running test suites on applications, and many more.&lt;/p&gt;

&lt;p&gt;AppScan discovers vulnerabilities by analyzing open-source packages used within applications and coding standards.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Snyk Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DkcF2DBs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_3DF00496DFFE804D77B8226EC94236210F7FA538E6CBB95C039BE05000C8953D_1612865746550_Screenshot%2B2021-02-09%2Bat%2B3.44.38%2BPM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DkcF2DBs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_3DF00496DFFE804D77B8226EC94236210F7FA538E6CBB95C039BE05000C8953D_1612865746550_Screenshot%2B2021-02-09%2Bat%2B3.44.38%2BPM.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://snyk.io/product/snyk-code/"&gt;Sn&lt;/a&gt;&lt;a href="https://snyk.io/product/snyk-code/"&gt;y&lt;/a&gt;&lt;a href="https://snyk.io/product/snyk-code/"&gt;k Code&lt;/a&gt; provides a platform for finding and fixing code vulnerabilities while developing applications. It is a SAST tool for testing applications before they are run.&lt;/p&gt;

&lt;p&gt;Snyk Code supports IDEs such as Android Studio, AppCode, WebStorm, PyCharm, and many more. It provides real-time scan results, which are usually faster than other solutions. It also uses AI to draw meanings from code implementations to discover security and performance bugs.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. ThunderScan
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Iz_L1E8c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_3DF00496DFFE804D77B8226EC94236210F7FA538E6CBB95C039BE05000C8953D_1612865753983_Screenshot%2B2021-02-09%2Bat%2B3.44.46%2BPM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Iz_L1E8c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_3DF00496DFFE804D77B8226EC94236210F7FA538E6CBB95C039BE05000C8953D_1612865753983_Screenshot%2B2021-02-09%2Bat%2B3.44.46%2BPM.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.defensecode.com/thunderscan-sast/"&gt;ThunderScan&lt;/a&gt; by DefenseCode is a SAST tool used for performing security analysis of the application source code. It can be integrated into development environments such as Eclipse, Microsoft Visual Studio, and IntelliJ IDEA. It supports numerous languages like PHP, C#, JavaScript, and TypeScript, to name a few.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. 42Crunch
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RKgff5sS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_3DF00496DFFE804D77B8226EC94236210F7FA538E6CBB95C039BE05000C8953D_1612865769583_Screenshot%2B2021-02-09%2Bat%2B3.44.55%2BPM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RKgff5sS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_3DF00496DFFE804D77B8226EC94236210F7FA538E6CBB95C039BE05000C8953D_1612865769583_Screenshot%2B2021-02-09%2Bat%2B3.44.55%2BPM.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://42crunch.com/"&gt;42&lt;/a&gt;&lt;a href="https://42crunch.com/"&gt;C&lt;/a&gt;&lt;a href="https://42crunch.com/"&gt;runch&lt;/a&gt; is a security platform for APIs from design to production. Many apps use APIs to interact with third-party systems. These APIs can be vulnerable. 42Crunch audits API integrations for security vulnerabilities and suggests fixes during application development.&lt;/p&gt;

&lt;p&gt;42Crunch also supports IDE integration. The supported IDEs include Microsoft Visual Studio and IntelliJ IDEA. The plugins for the IDEs let you audit your open API definitions while working on them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;There are so many ways to discover and fix security issues. You'll find many DAST and SAST tools that support different languages and frameworks. While SAST testing tools may not be 100% effective, as they are limited to static code, they are a great and effective starting point to building secure applications as they discover and provide insights into vulnerabilities during development itself. What better time to discover such vulnerabilities than during development?&lt;/p&gt;

&lt;p&gt;Many tools offer SAST. And You can integrate some of them into IDEs to make the security testing process even faster. In this article, we've looked at 5 SAST tools that you can integrate into various IDEs to ensure the development of secure applications.&lt;/p&gt;

&lt;p&gt;Cover Photo by &lt;a href="https://unsplash.com/@christinhumephoto?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Christin Hume&lt;/a&gt; on Unsplash&lt;/p&gt;

</description>
      <category>security</category>
      <category>ide</category>
      <category>testing</category>
      <category>software</category>
    </item>
    <item>
      <title>Tools for Static Application Security Testing</title>
      <dc:creator>AstroCode</dc:creator>
      <pubDate>Mon, 25 Jan 2021 12:35:46 +0000</pubDate>
      <link>https://dev.to/astocode/tools-for-static-application-security-testing-1ido</link>
      <guid>https://dev.to/astocode/tools-for-static-application-security-testing-1ido</guid>
      <description>&lt;p&gt;Static Application Security Testing (SAST) is a set of technologies used to inspect the source code of any application to discover security vulnerabilities. SAST is classified under white-box testing because the tester has access to the codes and the internal structure of the application.&lt;/p&gt;

&lt;p&gt;This is in contrast with Dynamic Applications Security Testing (DAST) where which the application is tested while running. The purpose of DAST is to discover loopholes that can cause the application to be attacked.&lt;/p&gt;

&lt;p&gt;These security vulnerabilities found after testing can be SQL Injections, Cross-site Scripting, vulnerabilities from other components, and many more as listed in the &lt;a href="https://owasp.org/www-project-top-ten/"&gt;OWASP Top Ten Security Risks&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Application attackers use the potential vulnerabilities in your application to push their attacks. These vulnerabilities may not be obvious to the developer until the harm is done. With SAST tools, developers or administrators get a quick evaluation of their application's security before it is deployed to production.&lt;/p&gt;

&lt;p&gt;Static Application Security Testing is a best practice to help teams deliver reliable applications in short periods.&lt;/p&gt;

&lt;p&gt;There are a lot of &lt;a href="https://www.perforce.com/blog/kw/what-is-sast"&gt;SAST&lt;/a&gt; tools out there, each unique in its own way. In this article, we'll look at the top 8 of them.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. CodeSonar
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.grammatech.com/codesonar-cc"&gt;CodeSonar&lt;/a&gt; is a SAST tool that is fast and scales easily. It is integrated into software development environments to speed up the development of applications.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hiIaXXW0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_DDE424E1D0C0472969C3CB86BCAD778168FF778EAC196B9D55FB9B35383B52F6_1603080334793_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hiIaXXW0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_DDE424E1D0C0472969C3CB86BCAD778168FF778EAC196B9D55FB9B35383B52F6_1603080334793_image.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CodeSonar does not only detect problems but also provides more information on the problems to help developers understand the problem better and resolve it.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. CodeScan
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.codescan.io/"&gt;CodeScan&lt;/a&gt; is made exclusively for Salesforce Developers - developers who work on salesforce platforms or salesforce cloud technology.&lt;/p&gt;

&lt;p&gt;CodeScan ensures compliance with coding standards, coding quality, and increased development.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LeziTzAA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_DDE424E1D0C0472969C3CB86BCAD778168FF778EAC196B9D55FB9B35383B52F6_1603081062528_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LeziTzAA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_DDE424E1D0C0472969C3CB86BCAD778168FF778EAC196B9D55FB9B35383B52F6_1603081062528_image.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Codescan can be used as a self-hosted solution, a cloud solution, and can also be integrated into IDEs which provides feedback as you code.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Klockwork
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.perforce.com/products/klocwork"&gt;Klockwork&lt;/a&gt; is a SAST tool for*&lt;em&gt; C, C++, C#, and Java. &lt;/em&gt;*KlockWork provides rapid results while maintaining accuracy. Klockwork integrates seamlessly with CI/CD pipelines thereby supporting continuous automation of tests with security standards. This means on every commit, you get an immediate evaluation of your application's security level.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BW2Ig_yd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_70937417B616BEF51E8E2820A051D8F7A4F7E60FE004E0A7FFA55DE2611A8896_1601893065957_Klocwork_Server_Analysis_Screenshot.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BW2Ig_yd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_70937417B616BEF51E8E2820A051D8F7A4F7E60FE004E0A7FFA55DE2611A8896_1601893065957_Klocwork_Server_Analysis_Screenshot.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Klockwork can also be integrated with IDEs. This makes it even easier to detect security flaws during the development of your application.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. PT Application Inspector
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.ptsecurity.com/ww-en/products/ai/"&gt;PT Application Inspector&lt;/a&gt; combines several scanning methods like SAST, DAST, and so on to provide accurate results and ensure reliable applications. The inspector can be used on small applications like static websites to big applications that involve cloud services.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Xef_RcUK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_DDE424E1D0C0472969C3CB86BCAD778168FF778EAC196B9D55FB9B35383B52F6_1603081176286_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Xef_RcUK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_DDE424E1D0C0472969C3CB86BCAD778168FF778EAC196B9D55FB9B35383B52F6_1603081176286_image.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With this inspector, vulnerabilities can be prioritized depending on their exploitation potential, that is, if a vulnerability cannot be exploited, it is not prioritized over those that can.&lt;/p&gt;

&lt;p&gt;PT AI achieves this by testing (imitating an exploit) vulnerabilities, This way, you focus more on harmful vulnerabilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Coverity
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.synopsys.com/software-integrity/security-testing/static-analysis-sast.html"&gt;Coverity&lt;/a&gt; helps to detect security issues early in the software development life cycle of an application. It also tracks and manages risks of vulnerabilities. It also helps to ensure that the application's source code complies with security and coding standards.&lt;/p&gt;

&lt;p&gt;It can be integrated into development environments thereby providing real-time feedbacks and solution recommendations for errors discovered during development.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fEMe63LF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_DDE424E1D0C0472969C3CB86BCAD778168FF778EAC196B9D55FB9B35383B52F6_1603081494943_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fEMe63LF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_DDE424E1D0C0472969C3CB86BCAD778168FF778EAC196B9D55FB9B35383B52F6_1603081494943_image.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Coverity can also be integrated into CI/CD pipelines and it interacts well with API integrations.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Checkmarx
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.checkmarx.com/products/static-application-security-testing"&gt;Checkmarx&lt;/a&gt; is an enterprise tool for identifying and providing solutions for vulnerabilities in enterprise applications. There are over hundreds of vulnerabilities that Checkmarx can identity.&lt;/p&gt;

&lt;p&gt;Checkmarx supports over 25 languages and frameworks and requires no configurations to start scanning.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iF_M1ouc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_DDE424E1D0C0472969C3CB86BCAD778168FF778EAC196B9D55FB9B35383B52F6_1603081843584_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iF_M1ouc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_DDE424E1D0C0472969C3CB86BCAD778168FF778EAC196B9D55FB9B35383B52F6_1603081843584_image.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Checkmarx also has a "Best Fix Location" feature which allows developers to resolve multiple vulnerabilities at one point.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. HCL AppScan CodeSweep
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=HCLTechnologies.hclappscancodesweep"&gt;HCL AppScan CodeSweep&lt;/a&gt; is a lightweight and free SAST tool used as an extension in development environments to detect security vulnerabilities during application development. It supports various languages and frameworks from PHP, to Kotlin, to JavaScript, and so on.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lNM4q_nQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_DDE424E1D0C0472969C3CB86BCAD778168FF778EAC196B9D55FB9B35383B52F6_1603082127135_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lNM4q_nQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_DDE424E1D0C0472969C3CB86BCAD778168FF778EAC196B9D55FB9B35383B52F6_1603082127135_image.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  8. HCL AppScan Source
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.hcltechsw.com/wps/portal/products/appscan/offerings/source"&gt;HCL AppScan&lt;/a&gt; performs security vulnerability testing directly in your development environment. It also has a comprehensive report and management of your application's source code.&lt;/p&gt;

&lt;p&gt;It can also be integrated into IDEs and CI/CD pipelines to scan applications before they are moved to production.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FLh8RaGH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_DDE424E1D0C0472969C3CB86BCAD778168FF778EAC196B9D55FB9B35383B52F6_1603082277508_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FLh8RaGH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_DDE424E1D0C0472969C3CB86BCAD778168FF778EAC196B9D55FB9B35383B52F6_1603082277508_image.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With machine learning, AppScan can quickly identify critical security vulnerabilities and the best solutions for them. This helps to prevent costly fixes later in the development cycle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion 
&lt;/h2&gt;

&lt;p&gt;In this article, we looked at what SAST is and briefly looked at DAST. Also, we looked at the top 8 SAST tools.&lt;/p&gt;

&lt;p&gt;SAST tools are very important for applications. The manual methods may not be reliable and these SAST tools are automated, thereby making them better. Attackers use vulnerabilities to exploit companies through the applications and this can also affect the users.&lt;/p&gt;

&lt;p&gt;With SAST solutions like above, you can build applications rapidly with security in check. Most of these tools have free options and these free options may be more than enough for your application.&lt;/p&gt;

&lt;p&gt;Cover Photo by &lt;a href="https://unsplash.com/@oskaryil?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Oskar Yildiz&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/computer-programming?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>testing</category>
      <category>security</category>
      <category>hacking</category>
      <category>sast</category>
    </item>
    <item>
      <title>How to Manage an Object Storage Data Lake</title>
      <dc:creator>AstroCode</dc:creator>
      <pubDate>Tue, 05 Jan 2021 07:07:28 +0000</pubDate>
      <link>https://dev.to/astocode/how-to-manage-an-object-storage-data-lake-1lnd</link>
      <guid>https://dev.to/astocode/how-to-manage-an-object-storage-data-lake-1lnd</guid>
      <description>&lt;p&gt;You might have dealt with computer data storage mechanisms like file systems and block storage. The file system usually saves data in files, while block storage stores it in blocks within tracks and sectors.&lt;/p&gt;

&lt;p&gt;There's another type of data storage system in computers called &lt;a href="https://lakefs.io/object-storage/"&gt;object storage&lt;/a&gt;. What it does is that it stores your data as an object with some metadata and unique identifiers. The main advantage of object storage is that it allows you to store unstructured data easily and intuitively.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Timeline of Object Storage
&lt;/h2&gt;

&lt;p&gt;As the adoption of AI becomes widespread, there's also an increased demand for solutions where we can store our data without worrying about the techniques needed to clean it or extract some insights out of it.&lt;/p&gt;

&lt;p&gt;Object storage data lakes thus began as a place to dump the data irrespective of its type. It provided an easy to manage and scalable solution for companies to store raw data there. Notable Cloud providers like IBM, AWS, Azure, and GCP provide Object Storage solutions that make it easier for you to search and query to get your desired data from the data lake. &lt;/p&gt;

&lt;h2&gt;
  
  
  Managing Object Storage Data Lakes
&lt;/h2&gt;

&lt;p&gt;Management of Object Storage Data Lakes is a primary concern for many companies. Let's explore some solutions that make it easier for you:&lt;/p&gt;

&lt;h3&gt;
  
  
  Ready-Made Object Storage Solutions
&lt;/h3&gt;

&lt;p&gt;Everyone knows that Amazon is an industry leader for cloud computing-related solutions. So, we do have &lt;a href="https://aws.amazon.com/s3/"&gt;Amazon's Simple Storage Service&lt;/a&gt;, commonly known as S3. It allows you to retrieve and save your data by a simple web interface leveraging the fast, scalable, and performant infrastructure that Amazon uses to run its global network.&lt;/p&gt;

&lt;p&gt;Others are Google Cloud Storage by Google, Azure Blob Storage by Microsoft, IBM's Cloud Object Storage, and Alibaba Object Storage Service. There are other options by smaller players in the market like Cloudian, Zadara Storage, Wasabi Hot Cloud Storage, and Aura Object Store.&lt;/p&gt;

&lt;p&gt;These solutions take care of all performance- and scalability-related issues and provide you a high-level API to interact with your data seamlessly, leveraging the power of these platforms. Usually, the difference between cloud providers is in terms of prices and downtime. So, if you have a reasonable budget and want the best uptime, you can go with top providers like AWS, Azure, and Google. However, if it's not an issue, then you can choose a cheaper provider.&lt;/p&gt;

&lt;h2&gt;
  
  
  Different Tools Used
&lt;/h2&gt;

&lt;p&gt;There are many tools capable of managing Object Storage Data Lakes effectively. Here are a few:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://hadoop.apache.org/"&gt;Apache Hadoop&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IWXArXAZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/61324unmquos95zg9j8e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IWXArXAZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/61324unmquos95zg9j8e.png" alt="A screenshot of Apache Hadoop's website"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models.&lt;/p&gt;

&lt;p&gt;It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than relying on hardware to deliver high-availability, the library can detect and handle failures at the application layer. What you get is a highly-available service on top of a cluster of computers, each of which may be prone to failures.&lt;/p&gt;

&lt;p&gt;Hadoop provided a solution to manage the big data workloads that traditional RDBMS (Relational DB Management Systems) cannot handle efficiently.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://spark.apache.org/"&gt;Apache Spark &lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bgYFhOEn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/74kf17smxxj3ubstp2k6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bgYFhOEn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/74kf17smxxj3ubstp2k6.png" alt="A screenshot of Apache Spark's website"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apache Spark is an analytics engine built for processing large datasets. It's built on the top of Hadoop MapReduce and further extends it. The main advantage of using Spark is that it not only supports the Map and Reduce but also supports Queries, Machine Learning, Streaming Data, and Graph algorithms.&lt;/p&gt;

&lt;p&gt;Those four features also form the core Spark components, namely Spark SQL, Spark Streaming, MLlib, and GraphX.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://lakefs.io/"&gt;LakeFS&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uJaDTfs---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/xg3tgr7aetvaxbjnj49t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uJaDTfs---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/xg3tgr7aetvaxbjnj49t.png" alt="A screenshot of LakeFS' website"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;lakeFS is an open-source platform that delivers resilience and manageability to your existing object-storage based data lake. With LakeFS, you can build repeatable, atomic, and versioned data lake operations -- from complex ETL jobs to data science and analytics.&lt;/p&gt;

&lt;p&gt;The best thing about LakeFS is that it integrates seamlessly with your existing tech stack and tools like Hive, Mahour, Spark, or whatever you are using.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;We usually need different toolsets to manage and scale data lakes efficiently. Although the underlying concepts are almost similar, the big data toolset has other APIs which every practitioner needs to master.&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Cover Photo by &lt;a href="https://unsplash.com/@sortino?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Joshua Sortino&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/data?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

</description>
      <category>datascience</category>
      <category>database</category>
      <category>storage</category>
      <category>datalake</category>
    </item>
    <item>
      <title>3 Considerations While Automating Your Mobile App Tests</title>
      <dc:creator>AstroCode</dc:creator>
      <pubDate>Wed, 09 Dec 2020 08:21:26 +0000</pubDate>
      <link>https://dev.to/astocode/3-considerations-while-automating-your-mobile-app-tests-1fm1</link>
      <guid>https://dev.to/astocode/3-considerations-while-automating-your-mobile-app-tests-1fm1</guid>
      <description>&lt;p&gt;Mobile app testing isn't that much different from testing desktop or web apps. Though there may be other intricacies in terms of device-specific aspects, we can assume that the principles that work for web and desktop will also be applicable for mobile.&lt;/p&gt;

&lt;p&gt;One such principle is that of automating tests.&lt;/p&gt;

&lt;p&gt;While &lt;a href="https://www.perfecto.io/blog/what-is-test-automation"&gt;test automation&lt;/a&gt; will surely make a developer's workflow faster and more efficient, there are a few critical things we still need to consider to up the testing game.&lt;/p&gt;

&lt;p&gt;In this article, we discuss three of these considerations. While there are certainly a lot more, this list outlines the most important ones. &lt;/p&gt;

&lt;h2&gt;
  
  
  1.  Testing on real devices rather than emulators
&lt;/h2&gt;

&lt;p&gt;Emulators are widely used to test the performance of native mobile apps. However, it's wiser to use real devices because your users will use the app on actual devices.&lt;/p&gt;

&lt;p&gt;While emulators are good to use up to a certain degree, it's still best to be getting on a real device. Emulators don't possess the same capacity as an actual device. Hence, the resources that the app will be using for an emulator will not show reflect similarly on a mobile.&lt;/p&gt;

&lt;p&gt;Another aspect to understand when it comes to comparing emulators to real devices is the network connection. An emulator can only use the host device's network connectivity (i.e., a laptop), while a real device can use wifi and cellular connectivity.&lt;/p&gt;

&lt;p&gt;So the question now is: when should a developer start using a real device in the process? The answer is: as early as possible. &lt;a href="https://en.wikipedia.org/wiki/Test-driven_development"&gt;Test-Driven Development&lt;/a&gt; (TDD) on devices compatible with the app will point out bugs at a higher accuracy than using an emulator will.&lt;/p&gt;

&lt;p&gt;However, it's important to say that emulators also have their merits. Using emulators when only conducting unit tests on key functions in the code is much faster to execute than connecting devices.&lt;/p&gt;

&lt;h2&gt;
  
  
  2.  Security
&lt;/h2&gt;

&lt;p&gt;Your mobile app must be very secure - this is crucial in this increasingly digital world. Users nowadays are more sensitive and protective of their data. Rightfully so, as many data breaches have occurred over the past few years, even with big names like Facebook.&lt;/p&gt;

&lt;p&gt;Therefore, mobile apps need to be tested thoroughly with regards to security vulnerabilities. For instance, a banking app should be tested to validate that the application's authentication system can catch potentially malicious login attempts quickly and accurately.&lt;/p&gt;

&lt;p&gt;Having said that, here are a few more factors that should be tested to make sure the application is as secure as possible:&lt;/p&gt;

&lt;h3&gt;
  
  
  Confidentiality of information
&lt;/h3&gt;

&lt;p&gt;It's important to check whether the app will keep sensitive information private and has end-to-end encryption.&lt;/p&gt;

&lt;h3&gt;
  
  
  Data integrity during transfer
&lt;/h3&gt;

&lt;p&gt;Concerning confidentiality, data should be safe from modification, especially unauthorized ones when in transit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Proper authentication and authorization
&lt;/h3&gt;

&lt;p&gt;Specific users should only be able to access certain data. Also, some parts of an application should only be accessed by registered and logged in users. These two aspects should be thoroughly tested to ensure data is safeguarded.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Tests That Are Normally Automated
&lt;/h3&gt;

&lt;p&gt;Below are a few tests that are commonly automated through scripts. You should only automate tests that will speed up the application development process.&lt;/p&gt;

&lt;h3&gt;
  
  
  Unit tests
&lt;/h3&gt;

&lt;p&gt;This is testing in isolation a function or a method in the application. Test data is used and mocked (if using some third party library). The purpose of this kind of test is to ensure that such a unit (function or method) will function properly and not be affected by other units in the app. Unit tests are usually conducted early in the development process.&lt;/p&gt;

&lt;h3&gt;
  
  
  Integration tests
&lt;/h3&gt;

&lt;p&gt;Integration tests check how separate units work together when logically combined. The main objective of this is to ensure that the functions properly communicate with each other.&lt;/p&gt;

&lt;h3&gt;
  
  
  Regression tests
&lt;/h3&gt;

&lt;p&gt;When there are changes in the codebase, it's important to perform regression testing. This is to ensure that such code change doesn't affect the features of the application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Testing an application well will ensure that the users will have a pleasant experience with the product. This will then translate to a better bottom line for the company. Ensure that your development and testing team has all the &lt;a href="https://www.perfecto.io/blog/what-to-look-for-in-automation-testing-tools"&gt;tools&lt;/a&gt; they need to help them execute this process better.&lt;/p&gt;

&lt;p&gt;--&lt;/p&gt;

&lt;p&gt;Cover Image: &lt;span&gt;Photo by &lt;a href="https://unsplash.com/@glvrdru?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Maxim Ilyahov&lt;/a&gt; on &lt;a href="https://unsplash.com/?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

</description>
      <category>testing</category>
      <category>mobile</category>
      <category>application</category>
      <category>development</category>
    </item>
  </channel>
</rss>
