<?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: Hazar nenni</title>
    <description>The latest articles on DEV Community by Hazar nenni (@hazarnenni).</description>
    <link>https://dev.to/hazarnenni</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%2F631588%2F4fe330f9-b543-4b1f-a96a-5029ebb13f51.png</url>
      <title>DEV Community: Hazar nenni</title>
      <link>https://dev.to/hazarnenni</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hazarnenni"/>
    <language>en</language>
    <item>
      <title>An In-Depth Look at Hono.js for Cloud-Native Development</title>
      <dc:creator>Hazar nenni</dc:creator>
      <pubDate>Sat, 08 Jun 2024 14:10:09 +0000</pubDate>
      <link>https://dev.to/hazarnenni/an-in-depth-look-at-honojs-for-cloud-native-development-2fp8</link>
      <guid>https://dev.to/hazarnenni/an-in-depth-look-at-honojs-for-cloud-native-development-2fp8</guid>
      <description>&lt;p&gt;In the ever-evolving landscape of web development, frameworks and libraries come and go, each promising to make our lives easier and our applications more efficient. One such rising star in the realm of &lt;strong&gt;cloud-native&lt;/strong&gt; development is &lt;strong&gt;Hono.js&lt;/strong&gt;. Known for its &lt;strong&gt;minimalistic&lt;/strong&gt; approach, Hono.js is gaining traction among developers who need a &lt;strong&gt;lightweight&lt;/strong&gt;, yet powerful tool for building modern web applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Hono.js
&lt;/h2&gt;

&lt;p&gt;Hono.js is a minimalist web framework designed to help developers create fast and efficient cloud-native applications. The framework's name, Hono, is derived from the Japanese word "炎" (pronounced as "hono"), meaning "flame", symbolizing the framework’s focus on speed and performance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features of Hono.js
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Minimal FootPrint&lt;/strong&gt;
To demonstrate the minimal footprint, let's compare the size of Hono.js with another popular framework:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbfv0t76psu89979wikis.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbfv0t76psu89979wikis.png" alt="honojs"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This illustrates how Hono.js is significantly smaller, which can lead to faster load times and reduced resource usage.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Performance-Oriented&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A basic benchmark test comparing Hono.js and Express.js:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7r22po4fvtrheq5booxw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7r22po4fvtrheq5booxw.png" alt="performance"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Running a performance test using a tool like ab (ApacheBench) can show how Hono.js handles more requests per second due to its optimized performance.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cloud-Native Ready&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Deploying a Hono.js app to a cloud platform like AWS Lambda:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmh8c3546lqxeae5dfh1g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmh8c3546lqxeae5dfh1g.png" alt="aws"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This code prepares a Hono.js application to be deployed as a &lt;strong&gt;serverless&lt;/strong&gt; function on &lt;strong&gt;AWS Lambda&lt;/strong&gt; using the &lt;strong&gt;serverless-http&lt;/strong&gt; package.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;TypeScript Support&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Creating a Hono.js application with TypeScript:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy0tonb4i43e17bcdtcr3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy0tonb4i43e17bcdtcr3.png" alt="TypeScript"&gt;&lt;/a&gt;&lt;br&gt;
By using TypeScript, you get type safety and improved developer experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install Hono.js
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ogjic9tdk7fpnc2k67i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ogjic9tdk7fpnc2k67i.png" alt="install"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq4du46e31dp8xk0mggz0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq4du46e31dp8xk0mggz0.png" alt="hono"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;&lt;u&gt;&lt;strong&gt;You may visit:&lt;/strong&gt;&lt;/u&gt;&lt;/em&gt; &lt;a href="https://www.npmjs.com/package/hono" rel="noopener noreferrer"&gt;hono-npm&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This example demonstrates the simplicity and elegance of Hono.js. The framework's intuitive API allows developers to quickly set up routes and handlers without unnecessary complexity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-World Use Cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Microservices&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Example:&lt;/u&gt;&lt;/strong&gt; Building a microservice for user authentication:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp8kp8amz9pkl4ntokovd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp8kp8amz9pkl4ntokovd.png" alt="microservices"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;APIs&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Example:&lt;/u&gt;&lt;/strong&gt; Creating a simple REST API for managing tasks:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F93hamr4krz10dzsr6s29.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F93hamr4krz10dzsr6s29.png" alt="apis"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Edge Computing&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Example:&lt;/u&gt;&lt;/strong&gt; Deploying a Hono.js function to Cloudflare Workers:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvhytj9jzvfpghiupi6et.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvhytj9jzvfpghiupi6et.png" alt="cloudflare"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Serverless Applications&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Example:&lt;/u&gt;&lt;/strong&gt; Creating a serverless function for AWS Lambda:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdsmidcxd4fho3rv99jp4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdsmidcxd4fho3rv99jp4.png" alt="Serverless Applications"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Hono.js represents a new wave of minimalist web frameworks designed to meet the needs of modern cloud-native applications. Its lightweight design, combined with a focus on performance and extensibility, makes it an excellent choice for developers looking to build fast, efficient, and scalable applications. As cloud-native development continues to grow in importance, Hono.js is poised to become a valuable tool in the developer’s toolkit.&lt;/p&gt;

&lt;p&gt;Whether you're building a small microservice or a large-scale application, Hono.js offers the right balance of simplicity and power to help you achieve your goals. Give it a try and experience the blazing speed and efficiency of Hono.js for yourself. 🧠 👩🏼‍💻&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>The Power of Symfony in DevOps</title>
      <dc:creator>Hazar nenni</dc:creator>
      <pubDate>Sun, 03 Dec 2023 09:41:52 +0000</pubDate>
      <link>https://dev.to/hazarnenni/the-power-of-symfony-in-devops-55ng</link>
      <guid>https://dev.to/hazarnenni/the-power-of-symfony-in-devops-55ng</guid>
      <description>&lt;p&gt;Symfony is a potent PHP framework known for its flexibility and robust architecture, making it a popular choice in web development. Its seamless compatibility with DevOps practices underscores its relevance in modern development workflows. This blog post will explore the DevOps side of Symfony development, covering essential topics such as continuous integration, deployment strategies, and monitoring.&lt;/p&gt;

&lt;h2&gt;
  
  
  Continuous Integration with Symfony:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;- Setting the Foundation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkfh1272do9w4j9vpisp0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkfh1272do9w4j9vpisp0.png" alt="setting"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;- Building Pipelines:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn9ll8rskp25vhyg064gy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn9ll8rskp25vhyg064gy.png" alt="pipelline"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;- Versioning and Dependency Management:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxssjqp0mw9pe1a8py6i4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxssjqp0mw9pe1a8py6i4.png" alt="versioning"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Deployment Strategies for Symfony:
&lt;/h2&gt;

&lt;p&gt;Gain an understanding of various deployment strategies, such as the blue-green deployment method, which entails using two identical environments (blue and green) and redirecting traffic between them during the deployment process.&lt;br&gt;
&lt;strong&gt;- Automated Deployment with CI/CD:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F54671krkakq810pburbh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F54671krkakq810pburbh.png" alt="cicd"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;- Zero-Downtime Deployment:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiuaj1arltf8l3e7s8js8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiuaj1arltf8l3e7s8js8.png" alt="deployment"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Monitoring Symfony Applications:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What is Monitoring:&lt;/strong&gt;&lt;br&gt;
Acknowledge the critical role of monitoring in pinpointing performance bottlenecks, detecting errors, and maintaining the overall well-being of your Symfony application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Monitoring Tools:&lt;/strong&gt;&lt;br&gt;
Opt for and set up a monitoring tool such as New Relic. Refer to the tool's documentation for guidance on installing and configuring it seamlessly within your Symfony application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Issue Management:&lt;/strong&gt;&lt;br&gt;
Establish alert mechanisms within the monitoring tool to promptly receive notifications for specific events, such as elevated response times or heightened error rates. Configure automated actions or notifications to the development team, fostering a proactive approach to issue resolution.&lt;/p&gt;




&lt;p&gt;By embracing DevOps practices, Symfony developers can greatly improve the efficiency, reliability, and scalability of their projects through continuous integration, well-defined deployment strategies, and robust monitoring. Symfony continues to lead in the evolving DevOps landscape, providing a strong foundation for developing and deploying modern, high-performance web applications. 🧠​👩‍💻​&lt;/p&gt;

</description>
      <category>symfony</category>
      <category>devops</category>
      <category>webdev</category>
      <category>backend</category>
    </item>
    <item>
      <title>Docker Best Practices.</title>
      <dc:creator>Hazar nenni</dc:creator>
      <pubDate>Sun, 15 Oct 2023 18:50:15 +0000</pubDate>
      <link>https://dev.to/hazarnenni/docker-best-practices-55j0</link>
      <guid>https://dev.to/hazarnenni/docker-best-practices-55j0</guid>
      <description>&lt;p&gt;Docker has revolutionized application deployment, but to use its full potential, you need to follow best practices. Here's a concise guide with examples for efficient containerization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Start with Official Images:&lt;/strong&gt;&lt;br&gt;
Use official images as a base. For instance, if you're working with Node.js, start with &lt;strong&gt;node:14-alpine&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Optimize Your Dockerfile:&lt;/strong&gt;&lt;br&gt;
Minimize your image size by chaining commands together:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7x5ldpi5kg0taggzdjn8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7x5ldpi5kg0taggzdjn8.png" alt="dockerfile"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Use .dockerignore:&lt;/strong&gt;&lt;br&gt;
Create a &lt;strong&gt;&lt;u&gt;.dockerignore&lt;/u&gt;&lt;/strong&gt; file to exclude unnecessary files during build:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr46jas2u16zxbgxf8xtu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr46jas2u16zxbgxf8xtu.png" alt="dockerignore"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Multi-Stage Builds:&lt;/strong&gt;&lt;br&gt;
For production images, use multi-stage builds to reduce image size:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxjq7nxda1cpv60me19zl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxjq7nxda1cpv60me19zl.png" alt="dockerfile"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Environment Variables:&lt;/strong&gt;&lt;br&gt;
Use environment variables for configurations, e.g., for a Node.js app:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flsv2c73oyq7fpsyotlgh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flsv2c73oyq7fpsyotlgh.png" alt="dockerfile"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Health Checks:&lt;/strong&gt;&lt;br&gt;
Add a health check instruction to your Dockerfile:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgysztkq77d579hyzs9bj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgysztkq77d579hyzs9bj.png" alt="healthcheck"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Resource Constraints:&lt;/strong&gt;&lt;br&gt;
Define resource constraints in your &lt;strong&gt;Docker-Compose&lt;/strong&gt; file:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffnzb5fc0e61viodfp00w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffnzb5fc0e61viodfp00w.png" alt="dockerCompose"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Logging and Monitoring:&lt;/strong&gt;&lt;br&gt;
Use tools like Docker logs, ELK stack, or Prometheus for comprehensive logging and monitoring.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9. Container Registries:&lt;/strong&gt;&lt;br&gt;
Push your &lt;u&gt;custom images&lt;/u&gt; to a &lt;u&gt;private&lt;/u&gt; registry:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffawx3s949t23f79fl4cm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffawx3s949t23f79fl4cm.png" alt="registry"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;10. Versioned Images:&lt;/strong&gt;&lt;br&gt;
Tag your images for versioning:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbcbhn57t8n8u99w0sf6s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbcbhn57t8n8u99w0sf6s.png" alt="tag"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;These best practices will help you create efficient, secure, and maintainable Docker containers, improving your development and deployment workflows. 💻 &lt;/p&gt;

</description>
      <category>docker</category>
      <category>devops</category>
      <category>programming</category>
    </item>
    <item>
      <title>Getting Started with GraphQL: A Beginner's Guide</title>
      <dc:creator>Hazar nenni</dc:creator>
      <pubDate>Sun, 03 Sep 2023 11:05:17 +0000</pubDate>
      <link>https://dev.to/hazarnenni/getting-started-with-graphql-a-beginners-guide-4f1l</link>
      <guid>https://dev.to/hazarnenni/getting-started-with-graphql-a-beginners-guide-4f1l</guid>
      <description>&lt;p&gt;Do you find yourself exhausted, from dealing with API endpoints and the unnecessary retrieval of data in your applications? If so GraphQL could be the solution you've been seeking. In this guide, for beginners we will walk you through the fundamentals of GraphQL, its principles. Provide you with a roadmap to get started with this groundbreaking technology.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's GraphQl&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://graphql.org/"&gt;GraphQL&lt;/a&gt; is a data query language and server side runtime that's source. It allows you to define a type system, for your data and execute queries on your API. Originally developed by Facebook in 2012 it was made available as source in 2015.&lt;/p&gt;

&lt;p&gt;In contrast to APIs that have fixed endpoints returning data structures GraphQL provides clients the ability to request precisely the data they require without any excess or shortage. This adaptability makes it an ideal match, for web and mobile applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Core Concepts
&lt;/h2&gt;

&lt;p&gt;Before we dive into the steps lets get a grasp of some principles of GraphQL.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Schema:&lt;/strong&gt;&lt;br&gt;
The schema serves as the backbone of any GraphQL API. It outlines the data types that can be requested and their relationships. These types consist of objects (such, as User or Post). Scalars (like String, Int, Boolean).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Queries:&lt;/strong&gt;&lt;br&gt;
Clients employ queries to ask for data, from the GraphQL server. A query mirrors the structure of the response data. Can encompass fields, nested structures and arguments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Mutations:&lt;/strong&gt;&lt;br&gt;
Fundamentally different, queries retrieve information while mutations apply alterations. Within this scope are actions like record formation, alteration, and destruction.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Resolvers:&lt;/strong&gt;&lt;br&gt;
In charge of collecting essential details, resolvers serve as vital components in data retrieval processes. Linked to various data sources like databases and RESTful APIs, the GraphQL schema serves as a connection point.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You may visit the docs for more details by accessing to this link:&lt;br&gt;
&lt;a href="https://graphql.org/learn/queries/"&gt;Queries and Mutataions&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting started
&lt;/h2&gt;

&lt;p&gt;We'll dive into the realm of GraphQL and craft a fundamental server and client together.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;u&gt;Server-Side
&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;br&gt;
&lt;strong&gt;Choose a Server:&lt;/strong&gt; You can use various server libraries and frameworks to set up a GraphQL server. Popular choices include Apollo Server, Express with Express-GraphQL, and more. Install your chosen server package using npm or yarn.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Define Your Schema:&lt;/strong&gt; Create a schema that defines your data types (e.g., User, Post) and their relationships. This is usually done using GraphQL's schema definition language (SDL).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Set Up Resolvers:&lt;/strong&gt; Integrate resolver functions within each field of your schema. Each function retrieves data from its designated source.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start the Server:&lt;/strong&gt; Once you've outlined the schema and resolvers, your GraphQL server begins organically connecting to clients via APIs.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;u&gt;Client-Side
&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;br&gt;
&lt;strong&gt;Choose a Client Library:&lt;/strong&gt; Similar to the server, you can select from various GraphQL client libraries like Apollo Client, Relay, or urql. Install your chosen client package.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Set Up Queries:&lt;/strong&gt; Define your desired data from the server employing GraphQL queries. Within your JavaScript code for e.g, you can embed queries using GraphQL-tag.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Execute Queries:&lt;/strong&gt; Use your client library to execute queries against your GraphQL server. This will return the requested data&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Render Data:&lt;/strong&gt; Next, display the data in user interface components. Featured frontend frameworks like React, Vue.js, and Angular are skillfully integrated by most GraphQL client libraries.&lt;/p&gt;




&lt;p&gt;Congratulations! Just starting to dive into GraphQL's depths? By venturing further, you will find the incredible versatility and strength it holds for building innovative web and mobile applications.&lt;br&gt;
👩‍💻💡🧠&lt;/p&gt;

</description>
      <category>graphql</category>
      <category>webdev</category>
      <category>api</category>
      <category>programming</category>
    </item>
    <item>
      <title>Mastering Concurrency: Unveiling the Power of Goroutines in Go.</title>
      <dc:creator>Hazar nenni</dc:creator>
      <pubDate>Tue, 22 Aug 2023 16:57:07 +0000</pubDate>
      <link>https://dev.to/hazarnenni/mastering-concurrency-unveiling-the-power-of-goroutines-in-go-2b84</link>
      <guid>https://dev.to/hazarnenni/mastering-concurrency-unveiling-the-power-of-goroutines-in-go-2b84</guid>
      <description>&lt;p&gt;In the realm of programming languages, Go shines as a standout contender when it comes to handling concurrency. Its unique approach to concurrency, centered around goroutines and channels, has enabled developers to build highly responsive and efficient applications. In this blog post, we'll delve into the world of concurrency in Go, exploring the concepts of goroutines and channels and showcasing how they unlock new dimensions in your code.&lt;/p&gt;

&lt;p&gt;🔸 &lt;strong&gt;Concurrency vs. Parallelism: Understanding the Difference&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before we dive into the specifics of &lt;strong&gt;goroutines&lt;/strong&gt;, it's crucial to understand the distinction between concurrency and parallelism. &lt;strong&gt;&lt;u&gt;Concurrency&lt;/u&gt;&lt;/strong&gt; is the ability to execute multiple tasks seemingly at the same time, even if the tasks are not physically executing simultaneously. &lt;strong&gt;&lt;u&gt;Parallelism&lt;/u&gt;&lt;/strong&gt;, on the other hand, involves the simultaneous execution of multiple tasks on separate processors or cores. Go's concurrency model is built around managing and coordinating concurrent tasks effectively.&lt;/p&gt;

&lt;p&gt;🔸 &lt;strong&gt;Meet Goroutines: Lightweight Concurrency&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At the heart of Go's concurrency model are goroutines. A goroutine is a lightweight, independently executing function that runs concurrently with other goroutines. Unlike traditional threads, which are relatively heavy and can lead to performance overhead, goroutines are incredibly lightweight and can be spawned in the thousands without bogging down your system.&lt;/p&gt;

&lt;p&gt;Creating a &lt;strong&gt;goroutine&lt;/strong&gt; is as simple as adding the keyword go before a function call. This marks the function to be executed as a goroutine, allowing other parts of your program to continue executing concurrently.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func main() {
    go printNumbers()
    // Other code...
}

func printNumbers() {
    for i := 1; i &amp;lt;= 5; i++ {
        fmt.Println(i)
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔸 &lt;strong&gt;Synchronization with Channels&lt;/strong&gt;&lt;br&gt;
Concurrency isn't just about running multiple tasks—it's also about &lt;strong&gt;coordinating&lt;/strong&gt; their interactions. This is where channels come into play. Channels are &lt;strong&gt;communication&lt;/strong&gt; mechanisms that allow &lt;strong&gt;goroutines&lt;/strong&gt; to send and receive data in a synchronized manner. They facilitate &lt;strong&gt;safe&lt;/strong&gt; data sharing and &lt;strong&gt;synchronization&lt;/strong&gt; between goroutines.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func main() {
    ch := make(chan int)

    go sendData(ch)
    receiveData(ch)
}

func sendData(ch chan int) {
    for i := 1; i &amp;lt;= 5; i++ {
        ch &amp;lt;- i
    }
    close(ch)
}

func receiveData(ch chan int) {
    for num := range ch {
        fmt.Println("Received:", num)
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the above example, the &lt;strong&gt;sendData&lt;/strong&gt; function sends integers through the channel, and the &lt;strong&gt;receiveData&lt;/strong&gt; function receives and prints them. The &lt;strong&gt;range&lt;/strong&gt; loop gracefully terminates when the channel is closed.&lt;/p&gt;

&lt;p&gt;🔸 &lt;strong&gt;Concurrency Patterns and Best Practices&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While &lt;strong&gt;goroutines&lt;/strong&gt; and channels form the backbone of Go's concurrency model, there are various concurrency patterns and best practices to consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fan-Out, Fan-In:&lt;/strong&gt; Distribute work among multiple goroutines (fan-out) and then consolidate the results (fan-in).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Select Statement:&lt;/strong&gt; Use the select statement to wait on multiple channels simultaneously, allowing for non-blocking operations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Context Handling:&lt;/strong&gt; Utilize the context package to manage the lifecycle of goroutines and handle cancellations.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Go's concurrency model is a game-changer in the world of programming. By embracing goroutines and channels, you can write highly concurrent, responsive, and efficient applications that make the most of modern multi-core processors. Whether you're building web servers, distributed systems, or data processing pipelines, Go's concurrency features empower you to tackle complex challenges with elegance and efficiency. So, take the leap into the world of goroutines and unlock the true potential of concurrent programming in Go. 👩‍💻 🧠&lt;/p&gt;

</description>
      <category>programming</category>
      <category>go</category>
      <category>performance</category>
      <category>backenddevelopment</category>
    </item>
    <item>
      <title>Getting Started with Go: A Quick Guide.</title>
      <dc:creator>Hazar nenni</dc:creator>
      <pubDate>Sat, 19 Aug 2023 17:50:50 +0000</pubDate>
      <link>https://dev.to/hazarnenni/getting-started-with-go-a-quick-guide-1m95</link>
      <guid>https://dev.to/hazarnenni/getting-started-with-go-a-quick-guide-1m95</guid>
      <description>&lt;p&gt;&lt;strong&gt;Go&lt;/strong&gt;, also known as &lt;strong&gt;Golang&lt;/strong&gt;, is a statically typed, compiled programming language designed for simplicity, efficiency, and ease of use. Developed by Google, it has gained significant popularity for its clean syntax, strong standard library, and excellent support for concurrency. Whether you're a seasoned programmer or just starting your coding journey, this guide will help you take your first steps in the world of Go programming.&lt;/p&gt;

&lt;p&gt;🖥 &lt;strong&gt;Installation:&lt;/strong&gt; &lt;br&gt;
The first step is to install the Go programming language on your system. Visit the official Go Downloads page &lt;a href="https://go.dev/dl/"&gt;https://go.dev/dl/&lt;/a&gt; and download the installer suitable for your operating system. Follow the installation instructions to set up Go on your machine.&lt;/p&gt;

&lt;p&gt;⚙ &lt;strong&gt;Setting Up Your Workspace:&lt;/strong&gt;&lt;br&gt;
Go has a unique way of organizing your projects. You'll want to set up your workspace properly. It uses a &lt;strong&gt;GOPATH&lt;/strong&gt; environment variable to specify the &lt;strong&gt;root&lt;/strong&gt; of your workspace. Create a directory structure like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;├── src
│   └── yourApp
├── bin
└── pkg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👩‍💻  &lt;strong&gt;Your First Go Program:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;While learning a new programming language, the iconic &lt;strong&gt;"Hello, World!"&lt;/strong&gt; 🙌🏻 program serves as the inaugural step. &lt;br&gt;
So, Create a file named &lt;strong&gt;main.go&lt;/strong&gt; inside the &lt;strong&gt;src/yourapp&lt;/strong&gt; directory. Open the file in a text editor and write a simple code :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To run your program, open a terminal, navigate to the myapp directory, and execute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;go run main.go
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Go Basics:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Packages:&lt;/strong&gt;&lt;br&gt;
Go programs are composed of packages. Each file belongs to a package, and the &lt;strong&gt;'main'&lt;/strong&gt; package is required for executable programs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Imports:&lt;/strong&gt;&lt;br&gt;
Use the &lt;strong&gt;import&lt;/strong&gt; statement to include packages from the Go standard library or external packages.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Functions:&lt;/strong&gt;&lt;br&gt;
Functions are the building blocks of a Go program. The &lt;strong&gt;'main'&lt;/strong&gt; function is the entry point for executable programs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Variables and Types:&lt;/strong&gt;&lt;br&gt;
Declare variables with their type &lt;strong&gt;explicitly&lt;/strong&gt;. Go has basic types like &lt;strong&gt;int&lt;/strong&gt;, &lt;strong&gt;string&lt;/strong&gt;, &lt;strong&gt;float64&lt;/strong&gt;, and more.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Control Flow:&lt;/strong&gt;&lt;br&gt;
Go supports familiar control flow statements like &lt;strong&gt;if&lt;/strong&gt;, &lt;strong&gt;for&lt;/strong&gt;, and &lt;strong&gt;switch&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📌 &lt;strong&gt;Concurrency:&lt;/strong&gt;&lt;br&gt;
One of Go's standout features is its built-in support for concurrency using Goroutines and Channels. Goroutines are lightweight threads, and channels allow safe communication between them.&lt;/p&gt;

&lt;p&gt;🔍 &lt;strong&gt;Exploring the Standard Library:&lt;/strong&gt;&lt;br&gt;
Go comes with an extensive standard library that covers everything from file handling to networking. Familiarize yourself with the official &lt;a href="https://pkg.go.dev/"&gt;Go Documentation&lt;/a&gt; to leverage these powerful tools.&lt;/p&gt;




&lt;p&gt;With its clean syntax, strong standard library, and emphasis on concurrency, &lt;strong&gt;Go&lt;/strong&gt; is a fantastic language for both beginners and experienced developers. &lt;br&gt;
Explore the official documentation, engage with the community, and start building amazing applications with Go!.&lt;br&gt;
🧠 👩‍💻 &lt;/p&gt;

</description>
      <category>programming</category>
      <category>go</category>
      <category>performance</category>
      <category>backenddevelopment</category>
    </item>
    <item>
      <title>The benefits of using version control systems.</title>
      <dc:creator>Hazar nenni</dc:creator>
      <pubDate>Mon, 27 Mar 2023 11:35:01 +0000</pubDate>
      <link>https://dev.to/hazarnenni/the-benefits-of-using-version-control-systems-2lp9</link>
      <guid>https://dev.to/hazarnenni/the-benefits-of-using-version-control-systems-2lp9</guid>
      <description>&lt;p&gt;In any project where multiple people are working together, keeping track of changes and collaborating effectively is key to success. Version control systems help with this by keeping track of changes and allowing for collaboration in a way that's efficient and organized. &lt;br&gt;
In this blog, we'll explore the benefits of using version control systems. Whether you're a software developer, a writer, or a designer, version control systems are an important tool that can help you manage your work more effectively.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What is version control system ?&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A version control system &lt;strong&gt;&lt;em&gt;(VCS)&lt;/em&gt;&lt;/strong&gt; is a software tool that helps developers manage changes to code or other digital assets over time. It allows developers to track changes to a project, collaborate with others on the same codebase, and maintain different versions of the codebase over time.&lt;/p&gt;

&lt;p&gt;In a &lt;strong&gt;&lt;em&gt;VCS&lt;/em&gt;&lt;/strong&gt;, developers can create &lt;strong&gt;"commits"&lt;/strong&gt; to save changes to the code and add comments to describe those changes. They can also create &lt;strong&gt;"branches"&lt;/strong&gt; to work on different versions of the code in parallel, merge those branches together, and roll back changes if necessary. This makes it easier to collaborate on code with others and manage changes to the project over time.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Examples of VCS Tools:&lt;/strong&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TNP7wVt_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qy2pz3a4a0t7zybn942h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TNP7wVt_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qy2pz3a4a0t7zybn942h.png" alt="tools" width="800" height="671"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Benefits of using VCS:&lt;/strong&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here are some of the benefits of using version control systems:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;Collaboration:&lt;/u&gt;&lt;/strong&gt; VCS allows multiple developers to work on the same codebase simultaneously, without overwriting each other's changes. Developers can work on their own branches, merge changes, and review each other's work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;Automation:&lt;/u&gt;&lt;/strong&gt; VCS can be integrated with other tools, such as continuous integration (CI) and continuous deployment (CD), to automate the build, test, and deployment process.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;History tracking:&lt;/u&gt;&lt;/strong&gt; VCS keeps track of all changes made to the codebase, including who made the change, when it was made, and why. This allows developers to review the history of the project and understand the evolution of the code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;Branching and merging:&lt;/u&gt;&lt;/strong&gt; VCS allows developers to create different branches of the codebase, which can be worked on independently. Branches can be merged back into the main codebase when the work is complete.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;Code reviews:&lt;/u&gt;&lt;/strong&gt; VCS makes it easy to review code changes and provide feedback. This helps ensure that the code is of high quality and meets the project's requirements.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;Overall, version control systems are essential for modern software development, providing a way to manage complexity, reduce errors, and improve collaboration among developers.💻&lt;/p&gt;

</description>
      <category>programming</category>
      <category>tooling</category>
      <category>devops</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Create An API Using Laravel</title>
      <dc:creator>Hazar nenni</dc:creator>
      <pubDate>Tue, 10 Jan 2023 16:41:01 +0000</pubDate>
      <link>https://dev.to/hazarnenni/create-an-api-using-laravel-1jhp</link>
      <guid>https://dev.to/hazarnenni/create-an-api-using-laravel-1jhp</guid>
      <description>&lt;h2&gt;
  
  
  What is Laravel?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Laravel&lt;/strong&gt; is a PHP framework developed by &lt;strong&gt;Taylor Otwell&lt;/strong&gt;. It is a set of PHP files that will facilitate programming, thanks to its elegant and expressive syntax. &lt;br&gt;
It provides MVC implementation that helps you organizing your code for easier maintenance.&lt;br&gt;
You will be able to create modern web application, including such things such as APIs or web services.&lt;/p&gt;
&lt;h2&gt;
  
  
  RESTful APIs :
&lt;/h2&gt;

&lt;p&gt;There are many types of APIs but we will focus on RESTful APIs.&lt;br&gt;
Well, API &lt;strong&gt;(Application Programming Interface)&lt;/strong&gt;  is a set of protocols and tools that allows applications to communicate and exchanges multiple data and services. While REST stands for &lt;strong&gt;Representational State Transfer&lt;/strong&gt;.&lt;br&gt;
The picture bellow may explain more about RESTful API and how it works : &lt;/p&gt;

&lt;p&gt;👇🏻👇🏻👇🏻&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbl8hxn5cxys4v3al1edo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbl8hxn5cxys4v3al1edo.png" alt="RESTful Api"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  STEP1 : Install Laravel
&lt;/h2&gt;

&lt;p&gt;To install the latest version of Laravel, you need to run the command bellow : &lt;/p&gt;

&lt;p&gt;&lt;code&gt;composer create-project --prefer-dist laravel/laravel laravel_api_example&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Once your application has been created, you could start the local development server using the Laravel artisan CLI serve :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd laravel_api_example

php artisan serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Indeed, you have to set up your database informations in the &lt;strong&gt;.env&lt;/strong&gt; file &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkwrlynquneppi5e5a0lq.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkwrlynquneppi5e5a0lq.PNG" alt="database"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  STEP2 : Plan your API
&lt;/h2&gt;

&lt;p&gt;Try to make your base URL clear and simple.&lt;br&gt;
In our tutorial we will design API for &lt;strong&gt;Events&lt;/strong&gt;.&lt;br&gt;
📌 &lt;strong&gt;NOTE!!!! =&amp;gt; Keep verbs out of your base URLs.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Thus, if we would like for example to create an API to get your list of Events, the URL should look like that :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/events 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/getEvents
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Use of HTTP methods :&lt;/strong&gt; 
We use the HTTP verbs as action in RESTful APIs. We could operate on our URLs with HTTP verbs. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those verbs are : &lt;strong&gt;GET, POST, UPDATE, DELETE&lt;/strong&gt; .&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2nh4cf4wjqgzfaxocste.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2nh4cf4wjqgzfaxocste.png" alt="httpverbs"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  STEP3 : Migrations &amp;amp; Models
&lt;/h2&gt;

&lt;p&gt;Before moving to migration, make sure that you've created a database and added it to the &lt;strong&gt;env&lt;/strong&gt; file, like we've done in &lt;strong&gt;step1&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Now, let's start by creating our first model and migration--the Event. &lt;br&gt;
For that, we'll use the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$php artisan make:model Event -m
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The &lt;strong&gt;-m&lt;/strong&gt; refers to &lt;strong&gt;--migration&lt;/strong&gt; and it notifies the Artisan to create one for the model. &lt;/p&gt;

&lt;p&gt;A migration file will be created in the &lt;strong&gt;database/migrations&lt;/strong&gt; to generate our table. So, we have to modify the migration file to add the attributes that we're gonna work with. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flp1cstr2ra07tll10nf6.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flp1cstr2ra07tll10nf6.PNG" alt="migration"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With that done, let's go ahead and migrate by using the command below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan migrate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Going back to the models part, we'll add the two attributes to the Event model to the &lt;code&gt;$fillable&lt;/code&gt; field.&lt;/p&gt;

&lt;p&gt;📌 &lt;strong&gt;Fillable :&lt;/strong&gt; It's a protected property that help us to use a short way to insert data. For example, the create function will look like&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Event::create($request-&amp;gt;all());
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the model file that we'll end up with : &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F880vln22o76hkujnfxjm.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F880vln22o76hkujnfxjm.PNG" alt="model"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  STEP 4 : Routes &amp;amp; Controllers
&lt;/h2&gt;

&lt;p&gt;On the &lt;code&gt;routes/api.php&lt;/code&gt; file, we'll create the essentials endpoints for the application.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftm7e91guh6zuabuk3rev.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftm7e91guh6zuabuk3rev.PNG" alt="routes"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📌 &lt;strong&gt;Note:&lt;/strong&gt; All routes in &lt;strong&gt;api.php&lt;/strong&gt; are prefixed with &lt;strong&gt;/api&lt;/strong&gt; by default.&lt;/p&gt;

&lt;p&gt;Now that we have set up our application, we can proceed to create the controller that will be composed of the methods for our API, so we'll run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$php artisan make:controller EventController
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then we'll add all the functions: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Show all the Events:&lt;/strong&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuwxelyaxexcftswh7n3o.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuwxelyaxexcftswh7n3o.PNG" alt="show"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Show a specific Event:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftqv7evhyyw8bnhioy7m8.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftqv7evhyyw8bnhioy7m8.PNG" alt="show2"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Adding an Event:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6uwee9j0zvmd87xw5ifk.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6uwee9j0zvmd87xw5ifk.PNG" alt="add"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Updating an Event:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa05bew79vnpzfs0pwfek.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa05bew79vnpzfs0pwfek.PNG" alt="update"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Deleting an Event:&lt;/strong&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ttvgju2qb12l7t36kum.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ttvgju2qb12l7t36kum.PNG" alt="delete"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;=&amp;gt;&lt;/strong&gt; We've used the &lt;strong&gt;&lt;em&gt;HTTP status&lt;/em&gt;&lt;/strong&gt; to indicate whether a request has been successfully completed or not.&lt;br&gt;
There are many HTTP status that we could use, in this blog, i'll explain the ones that have existed in the project: &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;200&lt;/strong&gt; = Request succeeded.&lt;br&gt;
&lt;strong&gt;201&lt;/strong&gt; = Object created.&lt;br&gt;
&lt;strong&gt;204&lt;/strong&gt; = No content.&lt;br&gt;
&lt;strong&gt;404&lt;/strong&gt; = Resource Not found. &lt;/p&gt;
&lt;h2&gt;
  
  
  STEP 5 : Testing
&lt;/h2&gt;

&lt;p&gt;Make sure that your server is running before moving to the test phase.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$php artisan serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, you could use &lt;strong&gt;POSTMAN&lt;/strong&gt; as a test tool for your API. &lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Thanks for reading, feedbacks are appreciated.&lt;/strong&gt; 🦄&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>api</category>
      <category>laravel</category>
    </item>
    <item>
      <title>Be A Better Web Designer..</title>
      <dc:creator>Hazar nenni</dc:creator>
      <pubDate>Fri, 22 Jul 2022 14:38:00 +0000</pubDate>
      <link>https://dev.to/hazarnenni/be-a-better-web-designer-10ok</link>
      <guid>https://dev.to/hazarnenni/be-a-better-web-designer-10ok</guid>
      <description>&lt;p&gt;When you start being interested in becoming a web designer, many beginners often struggle with how to master what they've already learned. &lt;/p&gt;

&lt;p&gt;As we all know &lt;strong&gt;" practice makes perfect "&lt;/strong&gt;. Hence, in this blog, we'll explore some websites on which you could apply what you learned and improve your level : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://www.frontendmentor.io"&gt;www.frontendmentor.io&lt;/a&gt; : This site helps you to solve HTML, CSS, and JAVASCRIPT challenges. The advantage of this website is that it will give you tests based on your level.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://www.superherojs.com"&gt;www.superherojs.com&lt;/a&gt; : A collection of the best articles on creating, testing and maintaining a large JavaScript code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://www.dailyui.co/"&gt;www.dailyui.co/&lt;/a&gt; : It's a series of daily design challenges inspiration and surprise rewards.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://www.adamschwartz.co/magic-of-css/"&gt;www.adamschwartz.co/magic-of-css/&lt;/a&gt; : The magic of CSS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://www.maintainablecss.com/"&gt;www.maintainablecss.com/&lt;/a&gt; : Write CSS without worrying that overzealous, pre-existing styles will cause problems. MaintainableCSS is an approach to writing modular, scalable and of course, maintainable CSS. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://www.goodbrief.io/:"&gt;www.goodbrief.io/:&lt;/a&gt; Randomly generate smart design briefs to practice your design skills, get content for your portfolio and gain experience working off a real design brief.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://www.designbetter.co/"&gt;www.designbetter.co/&lt;/a&gt; : Introducing the best practices, stories, and insights from the world’s top design leaders.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://www.html5up.net/"&gt;www.html5up.net/&lt;/a&gt; : A great resource for HTML 5 templates. You could modify the template as you wish. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://www.refactoringui.com/"&gt;www.refactoringui.com/&lt;/a&gt; : Learn how to design awesome UIs by yourself using specific tactics explained from a developer's point-of-view.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Web design is steadily evolving. You should always keep learning and discovering new design tools and techniques. &lt;br&gt;
{ I hope that you enjoyed the list. 🦄​ }&lt;/p&gt;

</description>
      <category>tools</category>
      <category>javascript</category>
      <category>html</category>
      <category>css</category>
    </item>
    <item>
      <title>Synchronous and Asynchronous Programming</title>
      <dc:creator>Hazar nenni</dc:creator>
      <pubDate>Mon, 18 Jul 2022 12:32:26 +0000</pubDate>
      <link>https://dev.to/hazarnenni/synchronous-and-asynchronous-programming-5cb6</link>
      <guid>https://dev.to/hazarnenni/synchronous-and-asynchronous-programming-5cb6</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;Synchronicity&lt;/em&gt;&lt;/strong&gt; refers to the way our code is executed. We usually have two programming models &lt;strong&gt;Synchronous&lt;/strong&gt; and &lt;strong&gt;Asynchronous&lt;/strong&gt; ( aka sync &amp;amp; async ).&lt;br&gt;
Those models are used to build APIs , event-based architectures and helps to decide how to handle long-running tasks. &lt;br&gt;
&lt;strong&gt;📌​ &lt;u&gt;It's important to choose when and which method to use.&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
In this blog, we'll discover when we should apply async programming and when using the sync method is the best option.&lt;/p&gt;

&lt;p&gt;let’s start by identifying the difference between asynchronous and synchronous programming.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
In &lt;strong&gt;Synchronous&lt;/strong&gt; programming, code is executed sequentially. This means that tasks are processing one at a time, if one task is not completed the other once are blocked.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wszGNULi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t4xu80ge6lqqirakzoo3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wszGNULi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t4xu80ge6lqqirakzoo3.png" alt="sync prg" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;However, &lt;strong&gt;Asynchronous&lt;/strong&gt; programming guarantee that all tasks will be carried out in parallel. Which means that your code will continue to be executed no matter the status of the previous tasks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KV3aNLiO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/146v5bx8ww3uvu3x2xlp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KV3aNLiO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/146v5bx8ww3uvu3x2xlp.png" alt="async prg" width="800" height="800"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to use sync programming:&lt;/strong&gt;&lt;br&gt;
When it comes to sync programming it's relatively complex. It may over-complicate things and makes it hard to deal with code. &lt;br&gt;
On the other hand, it's fairly clear method, its code is easier to write and doesn’t require tracking and measuring process flows (as async does). It could be appropriate for a shopping app, for example.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to use async programming:&lt;/strong&gt;&lt;br&gt;
Async programming is ideal when we aim to create projects with a huge number of iterations. Thus, steps doesn't require to have fixed sequences, it assures that the process of developing is growing simultaneously. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt; &lt;br&gt;
When it comes to choosing async or sync methods, none of them is inherently better. You just need to pick the most optimal solution for your project requirements. &lt;/p&gt;

&lt;p&gt;👩‍💻​🧑‍💻​🧠​ .. &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>devjournal</category>
      <category>programming</category>
      <category>performance</category>
    </item>
    <item>
      <title>Non-Technical Skills Every Developer Needs 🖥💡</title>
      <dc:creator>Hazar nenni</dc:creator>
      <pubDate>Wed, 02 Feb 2022 11:56:38 +0000</pubDate>
      <link>https://dev.to/hazarnenni/non-technical-skills-every-developer-needs-39og</link>
      <guid>https://dev.to/hazarnenni/non-technical-skills-every-developer-needs-39og</guid>
      <description>&lt;p&gt;Every developer felt lost when they started learning to code in the beginning, but coding is a skill and skills have to be practiced. &lt;br&gt;
So many people think that technical skills are the most important factor needed to be a successful developer and skip over the non-technological ones that are equally valuable. Truth is, they are only one aspect of it. Indeed, there are several non-technical abilities that we should place importance on them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here are some of the essential non-technical skills for every developer to start working on :&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Passion for coding&lt;/strong&gt; &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Passion is energy. Feel the power that comes from focusing on what excites you.&lt;br&gt;
-Oprah Winfrey&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When people love what they do, they will definitely bring out the best in them to produce better quality work. If a developer is really committed to their job and enjoys spending time programming even outside work, there will be no power that could stop them from being the most successful ones in their fields. However, lack of passion doesn't make you a bad developer, but it'll always keep you going, motivated, and making smart decisions despite all the problems that you may face during your career.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. There's nothing called dummy questions&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;I had this thing once I started learning to code. I remember my first day as a web developer intern. I was so proud and a bit nervous. The only question that kept coming to my mind that day was:" &lt;strong&gt;am I ready? do I have the required skills?&lt;/strong&gt; " because I've always had imposter syndrome. I didn't want anyone to uncover that my knowledge and skills weren't high.&lt;br&gt;
So each time I faced a problem and something that blocked me, I kept trying to solve it without asking for help. I was afraid of people's reactions who were more experienced than me.&lt;br&gt;
&lt;strong&gt;It was only in my head!!&lt;/strong&gt; 😶&lt;br&gt;
No single person can know everything. Also, your questions aren't stupid; they show that you're interested and always open to new ideas. There is nothing wrong with that! It's part of working in your team - to share ideas and help each other.&lt;br&gt;
Seeking knowledge is a good thing. It will help you grow and become a better developer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Patience and Persistence&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The road to becoming a great developer has a lot of obstacles, challenges, and even failures. While coding you may spend a lot of time debugging or learning new things that you could apply to your current project. &lt;br&gt;
Thus, it might cause more pressure and stress on you, mostly when the deadline is approaching. &lt;br&gt;
So, you must remain patient and persistent because the price of success is high but really worth it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Time Control&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Time management is one of the most critical things and doing it the right way will help you improve in your career. As a developer, it will allow you to perfectly set priorities, allocate time for rest, family, and other activities. For example, you could set long and short time goals to make your life better; you may also collect all your tasks in a to-do list to estimate every task and set deadlines for yourself; hence you can avoid doing them at the last minute, etc...&lt;br&gt;
So, help yourself to achieve your dreams, plan and manage your time, be successful and healthy. 😊 &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Strong Work Ethic&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Work ethic refers to the set of values and beliefs based on the ideals of integrity and hard work. This quality makes all the soft skills possible. It includes Teamwork, Discipline, Responsibility, Adaptability, Professionalism, etc. It will make you more productive, give you better opportunities, and help you to excel in your job.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Being a developer is such an amazing thing, there is always new stuff to learn. Those who give importance to soft skills as well as technical competencies enhance opportunities to be effective in their role. ❤️👨‍💻&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>motivation</category>
      <category>performance</category>
      <category>leadership</category>
    </item>
  </channel>
</rss>
