<?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: Takahiro Fukushima</title>
    <description>The latest articles on DEV Community by Takahiro Fukushima (@takahiro_82jp).</description>
    <link>https://dev.to/takahiro_82jp</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%2F838765%2Fc337100a-c1be-4c9e-9bce-00ec44c155d2.jpg</url>
      <title>DEV Community: Takahiro Fukushima</title>
      <link>https://dev.to/takahiro_82jp</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/takahiro_82jp"/>
    <language>en</language>
    <item>
      <title>How to make Slack Workflow input form</title>
      <dc:creator>Takahiro Fukushima</dc:creator>
      <pubDate>Sun, 30 Jun 2024 03:24:33 +0000</pubDate>
      <link>https://dev.to/takahiro_82jp/how-to-make-slack-workflow-input-form-4doa</link>
      <guid>https://dev.to/takahiro_82jp/how-to-make-slack-workflow-input-form-4doa</guid>
      <description>&lt;p&gt;Hi I'm Tak.&lt;br&gt;
This article theme is how to make Slack Workflow input form.&lt;/p&gt;

&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;I recently used Slack workflow for AWS resource management.&lt;br&gt;
It is a useful tool, So It's required for Devops and Platform engineering.&lt;/p&gt;

&lt;p&gt;This article teach you how to create input form and save its contents to 　Google spreadsheet.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to make Slack Workflow input form
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Click "More" and "Automations"&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F184pob1mmz8uw82nxisp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F184pob1mmz8uw82nxisp.png" alt="Image description" width="761" height="475"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click "New Workflow" and "Build Workflow", Next you see display to build workflow&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F88aa9y0ut7azp0c81mkb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F88aa9y0ut7azp0c81mkb.png" alt="Image description" width="800" height="195"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click "Form a link in Slack"&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz4ww94r741f8yb1mk9dz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz4ww94r741f8yb1mk9dz.png" alt="Image description" width="800" height="358"&gt;&lt;/a&gt;&lt;br&gt;
You build start hook to call workflow.&lt;br&gt;
There are others, schedule, to use emoji, to join menber and so on.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click "Forms"&lt;br&gt;
You click "Forms".&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbh7kq6ume7zz0tgrws6x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbh7kq6ume7zz0tgrws6x.png" alt="Image description" width="800" height="522"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click "Collect info in a form"&lt;br&gt;
You click "Collect info in a form", You display create form page.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F63lljfbegcu959eo294o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F63lljfbegcu959eo294o.png" alt="Image description" width="800" height="310"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create form&lt;br&gt;
You can look "Collect info in a form", You input "Form title".&lt;br&gt;
Next Click "Add Question", Create form Question.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7whq3hj8d1n20441ktzq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7whq3hj8d1n20441ktzq.png" alt="Image description" width="800" height="481"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create Question&lt;br&gt;
First You input question, then select Question type, input description, check required or not.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjwpahduys28o0ld0iw6k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjwpahduys28o0ld0iw6k.png" alt="Image description" width="800" height="737"&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;br&gt;
There are a lot of "Question tupe".&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq7fsbwzilmkzv7vnve6j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq7fsbwzilmkzv7vnve6j.png" alt="Image description" width="800" height="763"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Save form&lt;br&gt;
You return page. You finish to form, so click "Save".&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5x5e1rjzqrbsucyx136d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5x5e1rjzqrbsucyx136d.png" alt="Image description" width="800" height="599"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Connect Google Spreadsheet&lt;br&gt;
You send inputed form info to Google Spreadsheet, You connect it.&lt;br&gt;
Click "Google Sheets".&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhjmhmv56lm1fcaaqboz0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhjmhmv56lm1fcaaqboz0.png" alt="Image description" width="800" height="529"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click "Add to spreadsheet"&lt;br&gt;
You click "Add to spreadsheet", so You look connect Google Spreadsheet page for add info.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft25e0m86pjojyrqvpc7k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft25e0m86pjojyrqvpc7k.png" alt="Image description" width="800" height="481"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Connect Google Spreadsheet&lt;br&gt;
Choose your Google account, then select spreadsheet file name and sheet name.&lt;br&gt;
Next, Check Column and Value.&lt;br&gt;
You finish to check, so you click "Save".&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcc2ca0ywz4vq7wnl3172.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcc2ca0ywz4vq7wnl3172.png" alt="Image description" width="800" height="647"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fepp8ybfl84aehk4j8pzp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fepp8ybfl84aehk4j8pzp.png" alt="Image description" width="800" height="929"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Finish to create form&lt;br&gt;
You finish to create form, so Click "Finish Up".&lt;br&gt;
You set config, If you customize it.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0j2acjgb9bmcocyxylrz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0j2acjgb9bmcocyxylrz.png" alt="Image description" width="800" height="519"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Last
&lt;/h2&gt;

&lt;p&gt;You can use input form created slack workflow.&lt;br&gt;
There are a lot of customization pattern.&lt;/p&gt;

&lt;p&gt;Slack have CI/CD and Git repository service web hooks.&lt;br&gt;
Addition of you can use Slack Workflow, It seem to perfect environment DevOps and Platform engineering. &lt;/p&gt;

&lt;p&gt;I keep learning Slack Workflow.&lt;/p&gt;

</description>
      <category>slack</category>
      <category>devops</category>
      <category>serverless</category>
      <category>nocode</category>
    </item>
    <item>
      <title>Memo to pass AWS Certified Security Specialty(SCS-C02)</title>
      <dc:creator>Takahiro Fukushima</dc:creator>
      <pubDate>Sat, 29 Jun 2024 06:25:11 +0000</pubDate>
      <link>https://dev.to/takahiro_82jp/memo-to-pass-aws-certified-security-specialtyscs-c02-3o2c</link>
      <guid>https://dev.to/takahiro_82jp/memo-to-pass-aws-certified-security-specialtyscs-c02-3o2c</guid>
      <description>&lt;p&gt;Hi, I'm Tak.&lt;/p&gt;

&lt;p&gt;I passed AWS Certified Security Specialty(SCS-C02) at June 22, 2024.&lt;br&gt;
I got 844 point, my score is higher than I expected.&lt;/p&gt;

&lt;p&gt;So I write memo that how to learn AWS Certified Security Specialty for test passed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use Text and Contents
&lt;/h2&gt;

&lt;h3&gt;
  
  
  AWS Skill Builder
&lt;/h3&gt;

&lt;p&gt;It cost US $29 per a month, but I took official pre test 65 questions.&lt;br&gt;
It Similar to a real exam, so It's useful for me.&lt;/p&gt;

&lt;p&gt;There are few scs-c02 books, so I paid money.&lt;br&gt;
But I get Certification.&lt;/p&gt;

&lt;h3&gt;
  
  
  Udemy
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Ultimate AWS Certified Security Specialty [NEW 2024] SCS-C02
&lt;/h4&gt;

&lt;p&gt;I watched this video to get an overview of the exam.If you want to understand the scope of the exam first, this video is for you.&lt;br&gt;
&lt;a href="https://www.udemy.com/course/ultimate-aws-certified-security-specialty"&gt;https://www.udemy.com/course/ultimate-aws-certified-security-specialty&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Pre exams SCS-C02 in Japanese
&lt;/h4&gt;

&lt;p&gt;I learned exams pattern similar to a real exam, but I think it was a little difficult.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test
&lt;/h2&gt;

&lt;p&gt;There're few long text questions and long text selection.&lt;br&gt;
But there're many questions are difficult to select, so I took 170  minutes.&lt;/p&gt;

&lt;p&gt;And there're few questions with KMS than I expected.&lt;br&gt;
Though I learned a lot about KMS.&lt;br&gt;
You learn various services.&lt;/p&gt;

&lt;h2&gt;
  
  
  Last
&lt;/h2&gt;

&lt;p&gt;It is good to learn about AWS security services.&lt;br&gt;
But that is all.&lt;/p&gt;

&lt;p&gt;I don't change coding and design skills and so on.&lt;br&gt;
I get certification little more, I start to learn others.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>security</category>
      <category>scsc02</category>
      <category>scs</category>
    </item>
    <item>
      <title>As a matter of fact AWS Chatbot uses us-east-2 region</title>
      <dc:creator>Takahiro Fukushima</dc:creator>
      <pubDate>Sun, 16 Jun 2024 01:24:44 +0000</pubDate>
      <link>https://dev.to/takahiro_82jp/as-a-matter-of-fact-aws-chatbot-uses-us-east-2-region-2ghk</link>
      <guid>https://dev.to/takahiro_82jp/as-a-matter-of-fact-aws-chatbot-uses-us-east-2-region-2ghk</guid>
      <description>&lt;p&gt;Hi, I'm Tak.&lt;/p&gt;

&lt;p&gt;Today's point is AWS Chatbot.&lt;br&gt;
It's trouble that I use AWS Chatbot.&lt;/p&gt;

&lt;p&gt;There is AWS Chatbot in global region.&lt;br&gt;
It is written AWS document.&lt;br&gt;
I think too.&lt;/p&gt;

&lt;p&gt;When I use AWS Chatbot, It happen Error.&lt;br&gt;
Then I watch Error message, Message says "to use us-east-2".&lt;/p&gt;

&lt;p&gt;I said "Why?"&lt;br&gt;
So I research it.&lt;/p&gt;

&lt;p&gt;One of the reasons is　regional restrictions.&lt;br&gt;
I can not use us-east-2 region.&lt;/p&gt;

&lt;p&gt;Second of the reasons is this document link.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;For example, the policy below allows AWS Chatbot in us-east-2 but denies other services by using a NotAction element.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/chatbot/latest/adminguide/chatbot-troubleshooting.html#:%7E:text=across%20your%20account.-,I%20get%20AccessDenied%20or%20permissions%20errors.,-I%20get%20an"&gt;https://docs.aws.amazon.com/chatbot/latest/adminguide/chatbot-troubleshooting.html#:~:text=across%20your%20account.-,I%20get%20AccessDenied%20or%20permissions%20errors.,-I%20get%20an&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I allow us-east-2, so I use AWS Chatbot.&lt;/p&gt;

&lt;p&gt;But Why?&lt;/p&gt;

&lt;p&gt;I guess AWS Chatbot use resources in us-east-2 region.&lt;/p&gt;

&lt;p&gt;You use AWS Chatbot, Be careful regional restrictions.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>chatbot</category>
    </item>
    <item>
      <title>How to easily start Backstage</title>
      <dc:creator>Takahiro Fukushima</dc:creator>
      <pubDate>Thu, 13 Jun 2024 13:06:36 +0000</pubDate>
      <link>https://dev.to/takahiro_82jp/how-to-easily-start-backstage-1ie0</link>
      <guid>https://dev.to/takahiro_82jp/how-to-easily-start-backstage-1ie0</guid>
      <description>&lt;p&gt;Hi, I'm Tak.&lt;br&gt;
Today's topic is Backstage.&lt;/p&gt;

&lt;p&gt;I'm interested Platform engineering, DevOps, Cloud Native.&lt;br&gt;
So I selected it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is  “Backstage” ?
&lt;/h2&gt;

&lt;p&gt;Backstage is an open source IDP (Internal Developer Portal) developed by Spotify to improve developer productivity. &lt;/p&gt;

&lt;h2&gt;
  
  
  Point
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;To build Backstage&lt;/li&gt;
&lt;li&gt;To make GitHub repository from Backstage&lt;/li&gt;
&lt;li&gt;To add software template&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Condition
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;node v20.11.1&lt;/li&gt;
&lt;li&gt;yarn v1.22.22&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  1. To build Backstage
&lt;/h2&gt;

&lt;p&gt;Type this command in terminal.&lt;/p&gt;

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

npx @backstage/create-app@latest


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

&lt;/div&gt;

&lt;p&gt;Type input app name, for example "test-backstage"&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%2Fz7tkbsv9i3hgbwgnn3f3.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%2Fz7tkbsv9i3hgbwgnn3f3.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Type this command&lt;/p&gt;

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

cd test-backstage &amp;amp;&amp;amp; yarn dev


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

&lt;/div&gt;

&lt;p&gt;Go to &lt;code&gt;localhost:3000&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Take a look this display.&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%2Fajlwdo8zkn5enanmhui1.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%2Fajlwdo8zkn5enanmhui1.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. To make GitHub repository from Backstage
&lt;/h2&gt;

&lt;p&gt;First, Set GitHub access token in &lt;code&gt;app-config.local.yaml&lt;/code&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%2F722pnt5oaj6zruwtpnem.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%2F722pnt5oaj6zruwtpnem.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You make it, Go to &lt;a href="https://github.com/settings/tokens/new" rel="noopener noreferrer"&gt;https://github.com/settings/tokens/new&lt;/a&gt;, &lt;br&gt;
So make access token.&lt;/p&gt;

&lt;p&gt;And add this code in &lt;code&gt;/package/backend/src/index.ts&lt;/code&gt;&lt;/p&gt;

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

backend.add(import('@backstage/plugin-scaffolder-backend-module-github'));


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

&lt;/div&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%2Fhwju93u0bk3k8jsfo07t.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%2Fhwju93u0bk3k8jsfo07t.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;in some cases, type this command in terminal.&lt;/p&gt;

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

export NODE_OPTIONS=--no-node-snapshot


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

&lt;/div&gt;

&lt;p&gt;Then, Click "Create..." in sidebar.&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%2Fb77t1r1mk1824we8z8dt.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%2Fb77t1r1mk1824we8z8dt.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, Click "CHOOSE",&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%2Fkjlvbsutn8khffnpgq1g.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%2Fkjlvbsutn8khffnpgq1g.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Input Component name, then click "NEXT"&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%2Fkzgjwrcewzyov910whuv.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%2Fkzgjwrcewzyov910whuv.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Input owner name and repository name, then click "REVIEW"&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%2Fiepag5b75q2n2vpipepw.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%2Fiepag5b75q2n2vpipepw.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You check no problem, click "CREATE"&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%2Faueprjlznndwaqn26rqj.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%2Faueprjlznndwaqn26rqj.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's Created.&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%2Fjspdxzvyzdme6li0ou5t.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%2Fjspdxzvyzdme6li0ou5t.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Go to GitHub, check repository list.&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%2F9lkptb647dgpjh8i21k1.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%2F9lkptb647dgpjh8i21k1.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's source code in repository.&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%2Fqumtn0qivyokad7qeqbo.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%2Fqumtn0qivyokad7qeqbo.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Where are files in Backstage codes?&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%2Fso3au28rclwlpi36qxk5.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%2Fso3au28rclwlpi36qxk5.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are it in &lt;code&gt;/examples/template/content&lt;/code&gt; directory.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. To add software template
&lt;/h2&gt;

&lt;p&gt;So add software template Laravel code.&lt;/p&gt;

&lt;p&gt;For example, make &lt;code&gt;/laravel-example/template&lt;/code&gt;directory.&lt;/p&gt;

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

cd /laravel-example/template
composer create-project laravel/laravel content --prefer-dist


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

&lt;/div&gt;

&lt;p&gt;Copy &amp;amp; Paste from &lt;code&gt;/examples/template/content/catalog-info.yaml&lt;/code&gt; to &lt;code&gt;/laravel-example/template/content/catalog-info.yaml&lt;/code&gt;,&lt;br&gt;
And Copy &amp;amp; Paste template.yaml, entities.yaml, org.yaml.&lt;/p&gt;

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

.
├── entities.yaml
├── org.yaml
└── template
    ├── content
    │   ├── README.md
    │   ├── app
    │   ├── artisan
    │   ├── bootstrap
    │   ├── catalog-info.yaml
    │   ├── composer.json
    │   ├── composer.lock
    │   ├── config
    │   ├── database
    │   ├── package.json
    │   ├── phpunit.xml
    │   ├── public
    │   ├── resources
    │   ├── routes
    │   ├── storage
    │   └── tests
    └── template.yaml


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

&lt;/div&gt;

&lt;p&gt;Then, add this code in &lt;code&gt;app-config.yaml&lt;/code&gt;&lt;/p&gt;

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

    - type: file
      target: ../../laravel-example/template/template.yaml
      rules:
        - allow: [Template]


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

&lt;/div&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%2Fww9bbdexpj208qn56ptu.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%2Fww9bbdexpj208qn56ptu.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kill yarn process, next &lt;code&gt;yarn dev&lt;/code&gt;.&lt;br&gt;
Take a look Create a new componet display.&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%2Fogdhv9pb0eimglj4zhtw.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%2Fogdhv9pb0eimglj4zhtw.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So you can create laravel code repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finish
&lt;/h2&gt;

&lt;p&gt;Are you interested Backstage?&lt;br&gt;
It's easily to build and use Backstage.&lt;br&gt;
I'm learning it now, so I'd like to use it more.&lt;/p&gt;

&lt;p&gt;Thanks to read it.&lt;br&gt;
Have a good engineer life!!&lt;/p&gt;

</description>
      <category>backstage</category>
      <category>devops</category>
      <category>platform</category>
      <category>sre</category>
    </item>
    <item>
      <title>Why can't I set "merged" Pull Request trigger on GitHub Actions?</title>
      <dc:creator>Takahiro Fukushima</dc:creator>
      <pubDate>Fri, 07 Jun 2024 13:07:54 +0000</pubDate>
      <link>https://dev.to/takahiro_82jp/why-cant-i-set-merged-pull-request-trigger-on-github-actions-48ab</link>
      <guid>https://dev.to/takahiro_82jp/why-cant-i-set-merged-pull-request-trigger-on-github-actions-48ab</guid>
      <description>&lt;p&gt;I recently used GitHub Actions the first time, then I felt strange.&lt;br&gt;
I often used Bitbucket Pipeline, but I didn't feel strange.&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;
&lt;h2&gt;
  
  
  To feel strange
&lt;/h2&gt;

&lt;p&gt;I used GitHub Actions first time, so I ran it through various settings.&lt;/p&gt;

&lt;p&gt;The first, I made &lt;code&gt;.github/workflows&lt;/code&gt; directory, then I wrote easy code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: example
on:
  push:
    branches:
    - main
    - develop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I push code to main branch or develop branch, Pipeline run.&lt;br&gt;
It's ok, I set push prohibition to main branch or develop branch.&lt;/p&gt;

&lt;p&gt;Next, I'd like to pipeline run after pull request is permitted.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: example
on:
  pull_request:
    types:
      - closed
    branches:
      - main
      - develop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Just a moment, this code is pipeline run by permission or rejection if pull request is closed.&lt;/p&gt;

&lt;p&gt;Let's research...but I can't find it.&lt;/p&gt;

&lt;p&gt;For example, I'd like to get "merged" value,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: example
on:
  pull_request:
    types:
      - merged   &amp;lt;＝＝＝ This
    branches:
      - main
      - develop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But this value is nothing.&lt;br&gt;
Oh,,,&lt;/p&gt;

&lt;p&gt;Blow link, same question as mine.&lt;br&gt;
&lt;a href="https://github.com/orgs/community/discussions/26724"&gt;https://github.com/orgs/community/discussions/26724&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Why feel strange
&lt;/h2&gt;

&lt;p&gt;When I used Bitbucket Pipeline, I don't care about it.&lt;br&gt;
For example Bitbucket Pipeline code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pipelines:
  branches:
    main:
      - step:
    develop
      - step:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pipeline run after main branch or develop branch merge.&lt;br&gt;
So pull request is rejected, pipeline don't run.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;pull request close&lt;/li&gt;
&lt;li&gt;pipeline don't run&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I don't feel strange order of thinking.&lt;/p&gt;

&lt;p&gt;but,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;pull request close&lt;/li&gt;
&lt;li&gt;pipeline run &amp;lt;=== Why it run?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I have no choice, let's just accept it.&lt;/p&gt;
&lt;h2&gt;
  
  
  Countermeasure
&lt;/h2&gt;

&lt;p&gt;This code is countermeasure.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if: github.event.pull_request.merged == true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So pipeline run, then pipeline stop.&lt;br&gt;
But history of pipeline remains,,,It's ok.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finally
&lt;/h2&gt;

&lt;p&gt;I learn behavioral differences at similar services.&lt;br&gt;
I'd like you to teach me same situation, programming language, tech services etc...&lt;/p&gt;

&lt;p&gt;Have a good day.&lt;/p&gt;

</description>
      <category>github</category>
      <category>git</category>
      <category>devops</category>
    </item>
    <item>
      <title>Use git pull --rebase origin develop when you pull latest develop branch</title>
      <dc:creator>Takahiro Fukushima</dc:creator>
      <pubDate>Sat, 01 Jun 2024 07:34:40 +0000</pubDate>
      <link>https://dev.to/takahiro_82jp/use-git-pull-rebase-origin-develop-when-you-pull-latest-develop-branch-gmi</link>
      <guid>https://dev.to/takahiro_82jp/use-git-pull-rebase-origin-develop-when-you-pull-latest-develop-branch-gmi</guid>
      <description>&lt;p&gt;&lt;code&gt;git pull --rebase origin develop&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;What a useful command!&lt;br&gt;
When you join develop team, you　always use git.&lt;br&gt;
But...&lt;br&gt;
When you complete code and push it to remote repository, you look conflict message, so it slightly sad.&lt;/p&gt;

&lt;p&gt;Then Whenever you use &lt;code&gt;git pull --rebase origin develop&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  Condition
&lt;/h3&gt;

&lt;p&gt;Development team must follow &lt;code&gt;Git-Flow&lt;/code&gt;.&lt;br&gt;
It's branch strategy.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;main branch
develop branch
feature branch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  When use it
&lt;/h3&gt;

&lt;p&gt;First you create new feature branch.&lt;br&gt;
Second you're coding.&lt;br&gt;
Third you enter &lt;code&gt;git pull --rebase origin develop&lt;/code&gt;, after Lunch.&lt;br&gt;
So develop branch may have been updated.&lt;/p&gt;

&lt;p&gt;It's also good when coding is done, you enter it.&lt;/p&gt;

&lt;p&gt;If there is nothing else,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Successfully rebased and updated xxxx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OK, No Conflict.&lt;br&gt;
Let's push it.&lt;/p&gt;

&lt;p&gt;But you catch conflict message, you fix code.&lt;/p&gt;

&lt;p&gt;You enter blow command after you fix it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git add fixed file
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You enter blow command.&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;If it's no conflict,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nothing to commit, working tree clean
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ok, next you enter blow command, so you finish rebase.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git rebase --continue
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If It's no problem,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Successfully rebased and updated xxxxxx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;How about it?&lt;br&gt;
It's easy way.&lt;br&gt;
But you carefully research &lt;code&gt;rebase&lt;/code&gt; and &lt;code&gt;pull&lt;/code&gt;, so you use command.&lt;/p&gt;

&lt;p&gt;Have a good engineer life.&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
    </item>
    <item>
      <title>What is in PHP-FPM configuration file?</title>
      <dc:creator>Takahiro Fukushima</dc:creator>
      <pubDate>Wed, 29 May 2024 14:10:54 +0000</pubDate>
      <link>https://dev.to/takahiro_82jp/what-is-in-php-fpm-configuration-file-2na6</link>
      <guid>https://dev.to/takahiro_82jp/what-is-in-php-fpm-configuration-file-2na6</guid>
      <description>&lt;p&gt;Hi I'm Tak Fukushima, Software Engineer.&lt;br&gt;
This article, I'll write PHP-FPM configuration file.&lt;/p&gt;

&lt;p&gt;I often use PHP-FPM with Nginx, they say unix domain socket connection.&lt;br&gt;
I frequently modify PHP-FPM configuration file that time.&lt;br&gt;
But first time it is difficult to read this file.&lt;br&gt;
So Let me explain.&lt;/p&gt;
&lt;h3&gt;
  
  
  Condition
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;use Ubuntu 24.04 on Container&lt;/li&gt;
&lt;li&gt;installed PHP-FPM
Be careful, it depends on the environment.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  What is in PHP-FPM configuration file?
&lt;/h3&gt;

&lt;p&gt;Let's take a look at PHP-FPM configuration file inside.&lt;br&gt;
Hit bles command.&lt;br&gt;
&lt;code&gt;cat /etc/php/8.3/fpm/pool.d/www.conf&lt;/code&gt;&lt;br&gt;
&lt;code&gt;www.conf&lt;/code&gt; is PHP-FPM configuration file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;; Start a new pool named 'www'.
; the variable $pool can be used in any directive and will be replaced by the
; pool name ('www' here)
[www]

; Per pool prefix
; It only applies on the following directives:
; - 'access.log'
; - 'slowlog'
; - 'listen' (unixsocket)
; - 'chroot'
; - 'chdir'
; - 'php_values'
; - 'php_admin_values'
; When not set, the global prefix (or /usr) applies instead.
; Note: This directive can also be relative to the global prefix.
; Default Value: none
;prefix = /path/to/pools/$pool

; Unix user/group of the child processes. This can be used only if the master
; process running user is root. It is set after the child process is created.
; The user and group can be specified either by their name or by their numeric
; IDs.
; Note: If the user is root, the executable needs to be started with
;       --allow-to-run-as-root option to work.
; Default Values: The user is set to master process running user by default.
;                 If the group is not set, the user's group is used.
user = www-data
group = www-data

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on
;                            a specific port;
;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses
;                            (IPv6 and IPv4-mapped) on a specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = /run/php/php8.3-fpm.sock

; Set listen(2) backlog.
; Default Value: 511 (-1 on Linux, FreeBSD and OpenBSD)
;listen.backlog = 511

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: Owner is set to the master process running user. If the group
;                 is not set, the owner's group is used. Mode is set to 0660.
listen.owner = www-data
listen.group = www-data
;listen.mode = 0660

; When POSIX Access Control Lists are supported you can set them using
; these options, value is a comma separated list of user/group names.
; When set, listen.owner and listen.group are ignored
;listen.acl_users =
;listen.acl_groups =

; List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect.
; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
; must be separated by a comma. If this value is left blank, connections will be
; accepted from any ip address.
; Default Value: any
;listen.allowed_clients = 127.0.0.1

; Set the associated the route table (FIB). FreeBSD only
; Default Value: -1
;listen.setfib = 1

; Specify the nice(2) priority to apply to the pool processes (only if set)
; The value can vary from -19 (highest priority) to 20 (lower priority)
; Note: - It will only work if the FPM master process is launched as root
;       - The pool processes will inherit the master process priority
;         unless it specified otherwise
; Default Value: no set
; process.priority = -19

; Set the process dumpable flag (PR_SET_DUMPABLE prctl for Linux or
; PROC_TRACE_CTL procctl for FreeBSD) even if the process user
; or group is different than the master process user. It allows to create process
; core dump and ptrace the process for the pool user.
; Default Value: no
; process.dumpable = yes

; Choose how the process manager will control the number of child processes.
; Possible Values:
;   static  - a fixed number (pm.max_children) of child processes;
;   dynamic - the number of child processes are set dynamically based on the
;             following directives. With this process management, there will be
;             always at least 1 children.
;             pm.max_children      - the maximum number of children that can
;                                    be alive at the same time.
;             pm.start_servers     - the number of children created on startup.
;             pm.min_spare_servers - the minimum number of children in 'idle'
;                                    state (waiting to process). If the number
;                                    of 'idle' processes is less than this
;                                    number then some children will be created.
;             pm.max_spare_servers - the maximum number of children in 'idle'
;                                    state (waiting to process). If the number
;                                    of 'idle' processes is greater than this
;                                    number then some children will be killed.
;             pm.max_spawn_rate    - the maximum number of rate to spawn child
;                                    processes at once.
;  ondemand - no children are created at startup. Children will be forked when
;             new requests will connect. The following parameter are used:
;             pm.max_children           - the maximum number of children that
;                                         can be alive at the same time.
;             pm.process_idle_timeout   - The number of seconds after which
;                                         an idle process will be killed.
; Note: This value is mandatory.
pm = dynamic

; The number of child processes to be created when pm is set to 'static' and the
; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'.
; This value sets the limit on the number of simultaneous requests that will be
; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
; CGI. The below defaults are based on a server without much resources. Don't
; forget to tweak pm.* to fit your needs.
; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand'
; Note: This value is mandatory.
pm.max_children = 5

; The number of child processes created on startup.
; Note: Used only when pm is set to 'dynamic'
; Default Value: (min_spare_servers + max_spare_servers) / 2
pm.start_servers = 2

; The desired minimum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.min_spare_servers = 1

; The desired maximum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.max_spare_servers = 3

; The number of rate to spawn child processes at once.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
; Default Value: 32
;pm.max_spawn_rate = 32

; The number of seconds after which an idle process will be killed.
; Note: Used only when pm is set to 'ondemand'
; Default Value: 10s
;pm.process_idle_timeout = 10s;

; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries. For
; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default Value: 0
;pm.max_requests = 500

; The URI to view the FPM status page. If this value is not set, no URI will be
; recognized as a status page. It shows the following information:
;   pool                 - the name of the pool;
;   process manager      - static, dynamic or ondemand;
;   start time           - the date and time FPM has started;
;   start since          - number of seconds since FPM has started;
;   accepted conn        - the number of request accepted by the pool;
;   listen queue         - the number of request in the queue of pending
;                          connections (see backlog in listen(2));
;   max listen queue     - the maximum number of requests in the queue
;                          of pending connections since FPM has started;
;   listen queue len     - the size of the socket queue of pending connections;
;   idle processes       - the number of idle processes;
;   active processes     - the number of active processes;
;   total processes      - the number of idle + active processes;
;   max active processes - the maximum number of active processes since FPM
;                          has started;
;   max children reached - number of times, the process limit has been reached,
;                          when pm tries to start more children (works only for
;                          pm 'dynamic' and 'ondemand');
; Value are updated in real time.
; Example output:
;   pool:                 www
;   process manager:      static
;   start time:           01/Jul/2011:17:53:49 +0200
;   start since:          62636
;   accepted conn:        190460
;   listen queue:         0
;   max listen queue:     1
;   listen queue len:     42
;   idle processes:       4
;   active processes:     11
;   total processes:      15
;   max active processes: 12
;   max children reached: 0
;
; By default the status page output is formatted as text/plain. Passing either
; 'html', 'xml' or 'json' in the query string will return the corresponding
; output syntax. Example:
;   http://www.foo.bar/status
;   http://www.foo.bar/status?json
;   http://www.foo.bar/status?html
;   http://www.foo.bar/status?xml
;
; By default the status page only outputs short status. Passing 'full' in the
; query string will also return status for each pool process.
; Example:
;   http://www.foo.bar/status?full
;   http://www.foo.bar/status?json&amp;amp;full
;   http://www.foo.bar/status?html&amp;amp;full
;   http://www.foo.bar/status?xml&amp;amp;full
; The Full status returns for each process:
;   pid                  - the PID of the process;
;   state                - the state of the process (Idle, Running, ...);
;   start time           - the date and time the process has started;
;   start since          - the number of seconds since the process has started;
;   requests             - the number of requests the process has served;
;   request duration     - the duration in µs of the requests;
;   request method       - the request method (GET, POST, ...);
;   request URI          - the request URI with the query string;
;   content length       - the content length of the request (only with POST);
;   user                 - the user (PHP_AUTH_USER) (or '-' if not set);
;   script               - the main script called (or '-' if not set);
;   last request cpu     - the %cpu the last request consumed
;                          it's always 0 if the process is not in Idle state
;                          because CPU calculation is done when the request
;                          processing has terminated;
;   last request memory  - the max amount of memory the last request consumed
;                          it's always 0 if the process is not in Idle state
;                          because memory calculation is done when the request
;                          processing has terminated;
; If the process is in Idle state, then informations are related to the
; last request the process has served. Otherwise informations are related to
; the current request being served.
; Example output:
;   ************************
;   pid:                  31330
;   state:                Running
;   start time:           01/Jul/2011:17:53:49 +0200
;   start since:          63087
;   requests:             12808
;   request duration:     1250261
;   request method:       GET
;   request URI:          /test_mem.php?N=10000
;   content length:       0
;   user:                 -
;   script:               /home/fat/web/docs/php/test_mem.php
;   last request cpu:     0.00
;   last request memory:  0
;
; Note: There is a real-time FPM status monitoring sample web page available
;       It's available in: /usr/share/php/8.3/fpm/status.html
;
; Note: The value must start with a leading slash (/). The value can be
;       anything, but it may not be a good idea to use the .php extension or it
;       may conflict with a real PHP file.
; Default Value: not set
;pm.status_path = /status

; The address on which to accept FastCGI status request. This creates a new
; invisible pool that can handle requests independently. This is useful
; if the main pool is busy with long running requests because it is still possible
; to get the status before finishing the long running requests.
;
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on
;                            a specific port;
;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses
;                            (IPv6 and IPv4-mapped) on a specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Default Value: value of the listen option
;pm.status_listen = 127.0.0.1:9001

; The ping URI to call the monitoring page of FPM. If this value is not set, no
; URI will be recognized as a ping page. This could be used to test from outside
; that FPM is alive and responding, or to
; - create a graph of FPM availability (rrd or such);
; - remove a server from a group if it is not responding (load balancing);
; - trigger alerts for the operating team (24/7).
; Note: The value must start with a leading slash (/). The value can be
;       anything, but it may not be a good idea to use the .php extension or it
;       may conflict with a real PHP file.
; Default Value: not set
;ping.path = /ping

; This directive may be used to customize the response of a ping request. The
; response is formatted as text/plain with a 200 response code.
; Default Value: pong
;ping.response = pong

; The access log file
; Default: not set
;access.log = log/$pool.access.log

; The access log format.
; The following syntax is allowed
;  %%: the '%' character
;  %C: %CPU used by the request
;      it can accept the following format:
;      - %{user}C for user CPU only
;      - %{system}C for system CPU only
;      - %{total}C  for user + system CPU (default)
;  %d: time taken to serve the request
;      it can accept the following format:
;      - %{seconds}d (default)
;      - %{milliseconds}d
;      - %{milli}d
;      - %{microseconds}d
;      - %{micro}d
;  %e: an environment variable (same as $_ENV or $_SERVER)
;      it must be associated with embraces to specify the name of the env
;      variable. Some examples:
;      - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e
;      - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e
;  %f: script filename
;  %l: content-length of the request (for POST request only)
;  %m: request method
;  %M: peak of memory allocated by PHP
;      it can accept the following format:
;      - %{bytes}M (default)
;      - %{kilobytes}M
;      - %{kilo}M
;      - %{megabytes}M
;      - %{mega}M
;  %n: pool name
;  %o: output header
;      it must be associated with embraces to specify the name of the header:
;      - %{Content-Type}o
;      - %{X-Powered-By}o
;      - %{Transfert-Encoding}o
;      - ....
;  %p: PID of the child that serviced the request
;  %P: PID of the parent of the child that serviced the request
;  %q: the query string
;  %Q: the '?' character if query string exists
;  %r: the request URI (without the query string, see %q and %Q)
;  %R: remote IP address
;  %s: status (response code)
;  %t: server time the request was received
;      it can accept a strftime(3) format:
;      %d/%b/%Y:%H:%M:%S %z (default)
;      The strftime(3) format must be encapsulated in a %{&amp;lt;strftime_format&amp;gt;}t tag
;      e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t
;  %T: time the log has been written (the request has finished)
;      it can accept a strftime(3) format:
;      %d/%b/%Y:%H:%M:%S %z (default)
;      The strftime(3) format must be encapsulated in a %{&amp;lt;strftime_format&amp;gt;}t tag
;      e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t
;  %u: remote user
;
; Default: "%R - %u %t \"%m %r\" %s"
;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{milli}d %{kilo}M %C%%"

; A list of request_uri values which should be filtered from the access log.
;
; As a security precuation, this setting will be ignored if:
;     - the request method is not GET or HEAD; or
;     - there is a request body; or
;     - there are query parameters; or
;     - the response code is outwith the successful range of 200 to 299
;
; Note: The paths are matched against the output of the access.format tag "%r".
;       On common configurations, this may look more like SCRIPT_NAME than the
;       expected pre-rewrite URI.
;
; Default Value: not set
;access.suppress_path[] = /ping
;access.suppress_path[] = /health_check.php

; The log file for slow requests
; Default Value: not set
; Note: slowlog is mandatory if request_slowlog_timeout is set
;slowlog = log/$pool.log.slow

; The timeout for serving a single request after which a PHP backtrace will be
; dumped to the 'slowlog' file. A value of '0s' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
;request_slowlog_timeout = 0

; Depth of slow log stack trace.
; Default Value: 20
;request_slowlog_trace_depth = 20

; The timeout for serving a single request after which the worker process will
; be killed. This option should be used when the 'max_execution_time' ini option
; does not stop script execution for some reason. A value of '0' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
;request_terminate_timeout = 0

; The timeout set by 'request_terminate_timeout' ini option is not engaged after
; application calls 'fastcgi_finish_request' or when application has finished and
; shutdown functions are being called (registered via register_shutdown_function).
; This option will enable timeout limit to be applied unconditionally
; even in such cases.
; Default Value: no
;request_terminate_timeout_track_finished = no

; Set open file descriptor rlimit.
; Default Value: system defined value
;rlimit_files = 1024

; Set max core size rlimit.
; Possible Values: 'unlimited' or an integer greater or equal to 0
; Default Value: system defined value
;rlimit_core = 0

; Chroot to this directory at the start. This value must be defined as an
; absolute path. When this value is not set, chroot is not used.
; Note: you can prefix with '$prefix' to chroot to the pool prefix or one
; of its subdirectories. If the pool prefix is not set, the global prefix
; will be used instead.
; Note: chrooting is a great security feature and should be used whenever
;       possible. However, all PHP paths will be relative to the chroot
;       (error_log, sessions.save_path, ...).
; Default Value: not set
;chroot =

; Chdir to this directory at the start.
; Note: relative path can be used.
; Default Value: current directory or / when chroot
;chdir = /var/www

; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environment, this can cause some delay in the page
; process time (several ms).
; Default Value: no
;catch_workers_output = yes

; Decorate worker output with prefix and suffix containing information about
; the child that writes to the log and if stdout or stderr is used as well as
; log level and time. This options is used only if catch_workers_output is yes.
; Settings to "no" will output data as written to the stdout or stderr.
; Default value: yes
;decorate_workers_output = no

; Clear environment in FPM workers
; Prevents arbitrary environment variables from reaching FPM worker processes
; by clearing the environment in workers before env vars specified in this
; pool configuration are added.
; Setting to "no" will make all environment variables available to PHP code
; via getenv(), $_ENV and $_SERVER.
; Default Value: yes
;clear_env = no

; Limits the extensions of the main script FPM will allow to parse. This can
; prevent configuration mistakes on the web server side. You should only limit
; FPM to .php extensions to prevent malicious users to use other extensions to
; execute php code.
; Note: set an empty value to allow all extensions.
; Default Value: .php
;security.limit_extensions = .php .php3 .php4 .php5 .php7

; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
; the current environment.
; Default Value: clean env
;env[HOSTNAME] = $HOSTNAME
;env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
;env[TEMP] = /tmp

; Additional php.ini defines, specific to this pool of workers. These settings
; overwrite the values previously defined in the php.ini. The directives are the
; same as the PHP SAPI:
;   php_value/php_flag             - you can set classic ini defines which can
;                                    be overwritten from PHP call 'ini_set'.
;   php_admin_value/php_admin_flag - these directives won't be overwritten by
;                                     PHP call 'ini_set'
; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.

; Defining 'extension' will load the corresponding shared extension from
; extension_dir. Defining 'disable_functions' or 'disable_classes' will not
; overwrite previously defined php.ini values, but will append the new value
; instead.

; Note: path INI options can be relative and will be expanded with the prefix
; (pool, global or /usr)

; Default Value: nothing is defined by default except the values in php.ini and
;                specified at startup with the -d argument
;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
;php_flag[display_errors] = off
;php_admin_value[error_log] = /var/log/fpm-php.www.log
;php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 32M
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Oh...I don't like it.&lt;br&gt;
It's magic word, I did think when I look first time.&lt;/p&gt;

&lt;p&gt;But Look carefully.&lt;br&gt;
It's mostly commentout.&lt;br&gt;
It's all right.&lt;/p&gt;
&lt;h3&gt;
  
  
  Explane
&lt;/h3&gt;

&lt;p&gt;Okay, I explain.&lt;/p&gt;
&lt;h4&gt;
  
  
  pool
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;; Start a new pool named 'www'.
; the variable $pool can be used in any directive and will be replaced by the
; pool name ('www' here)
[www]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This is pool name.&lt;br&gt;
It's process set. so you use &lt;code&gt;ps&lt;/code&gt; command, you can look www pool name.&lt;/p&gt;
&lt;h4&gt;
  
  
  log output
&lt;/h4&gt;

&lt;p&gt;Blow, It's log output settings for each pool.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;; Per pool prefix
; It only applies on the following directives:
; - 'access.log'
; - 'slowlog'
; - 'listen' (unixsocket)
; - 'chroot'
; - 'chdir'
; - 'php_values'
; - 'php_admin_values'
; When not set, the global prefix (or /usr) applies instead.
; Note: This directive can also be relative to the global prefix.
; Default Value: none
;prefix = /path/to/pools/$pool
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You change prefix when specifying log output destination.&lt;br&gt;
I basically don't change it.&lt;/p&gt;
&lt;h4&gt;
  
  
  process execution
&lt;/h4&gt;

&lt;p&gt;Blow, It's process execution user and group.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;; Unix user/group of the child processes. This can be used only if the master
; process running user is root. It is set after the child process is created.
; The user and group can be specified either by their name or by their numeric
; IDs.
; Note: If the user is root, the executable needs to be started with
;       --allow-to-run-as-root option to work.
; Default Values: The user is set to master process running user by default.
;                 If the group is not set, the user's group is used.
user = www-data
group = www-data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;if you use nginx, you change blew line.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;user = nginx
group = nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  specify port or unix domain socket
&lt;/h4&gt;

&lt;p&gt;Blow, It specifies port or unix domain socket to listen for requests.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on
;                            a specific port;
;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses
;                            (IPv6 and IPv4-mapped) on a specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = /run/php/php8.3-fpm.sock
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now It set unix domain socket to listen.&lt;br&gt;
If you use TCP socket, For example, It change blow line.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;listen = 127.0.0.1:9000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  backlog
&lt;/h4&gt;

&lt;p&gt;Blow, It set backlog.&lt;br&gt;
But I've never changed it, so linux parameter. I'll learn it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;; Set listen(2) backlog.
; Default Value: 511 (-1 on Linux, FreeBSD and OpenBSD)
;listen.backlog = 511
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  permissions for unix socket
&lt;/h4&gt;

&lt;p&gt;Blow, It's permissions for unix socket.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: Owner is set to the master process running user. If the group
;                 is not set, the owner's group is used. Mode is set to 0660.
listen.owner = www-data
listen.group = www-data
;listen.mode = 0660
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Blow is for Nginx and unix socket connection.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;listen.owner = nginx
listen.group = nginx
listen.mode = 0660
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  access controle
&lt;/h4&gt;

&lt;p&gt;Blow, It's POSIX Access Control Lists.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;; When POSIX Access Control Lists are supported you can set them using
; these options, value is a comma separated list of user/group names.
; When set, listen.owner and listen.group are ignored
;listen.acl_users =
;listen.acl_groups =
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It seems that php-fpm restarts periodically and owner of socket reverts to root.&lt;br&gt;
So It change blew line for nignx.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;listen.acl_users = nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  IP address restrict
&lt;/h4&gt;

&lt;p&gt;Blow, It's list of addresses allowed to connect.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;; List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect.
; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
; must be separated by a comma. If this value is left blank, connections will be
; accepted from any ip address.
; Default Value: any
;listen.allowed_clients = 127.0.0.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Default is to accept all connections, So it restrict FastCGI client connections to IP.&lt;/p&gt;

&lt;h3&gt;
  
  
  Last
&lt;/h3&gt;

&lt;p&gt;There are more than I expected, So I stop here.&lt;br&gt;
Just read them one by one and don't be afraid configuration file.&lt;/p&gt;

&lt;p&gt;Let's read　it.&lt;/p&gt;

</description>
      <category>php</category>
      <category>phpfpm</category>
      <category>laravel</category>
    </item>
    <item>
      <title>What types of Nginx configuration files exist?</title>
      <dc:creator>Takahiro Fukushima</dc:creator>
      <pubDate>Sun, 26 May 2024 12:45:38 +0000</pubDate>
      <link>https://dev.to/takahiro_82jp/what-types-of-nginx-configuration-files-exist-3o72</link>
      <guid>https://dev.to/takahiro_82jp/what-types-of-nginx-configuration-files-exist-3o72</guid>
      <description>&lt;p&gt;I have experience creating infrastructure environments using Nginx.&lt;/p&gt;

&lt;p&gt;However, I can't figure out configuration file, no matter how many times I look at it.&lt;/p&gt;

&lt;p&gt;So I'll leave a note on this article.&lt;/p&gt;

&lt;p&gt;I'd like you to refer it, if you use Nginx first time.&lt;/p&gt;

&lt;h3&gt;
  
  
  what are conditions?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;I use Ubuntu on container&lt;/li&gt;
&lt;li&gt;I use Nginx 1.18&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What are Nginx configuration files?
&lt;/h3&gt;

&lt;p&gt;First, you hit below command.&lt;br&gt;
&lt;code&gt;ls /etc/nginx&lt;/code&gt;&lt;br&gt;
and then, you look below line.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;conf.d      mime.types  nginx.conf   uwsgi_params
fastcgi_params  modules     scgi_params
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So let's move on.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. default.conf
&lt;/h3&gt;

&lt;p&gt;First, you hit below command.&lt;br&gt;
&lt;code&gt;ls /etc/nginx/conf.d/&lt;/code&gt;&lt;br&gt;
and then, you look below line.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;default.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, you hit below command.&lt;br&gt;
&lt;code&gt;cat /etc/nginx/conf.d/default.conf&lt;/code&gt;&lt;br&gt;
and then, you look below line.&lt;br&gt;
This is default server setting file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I often use this file, so I link Nginx and PHP on FastCGI, setting SSL and port number.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. mime.types
&lt;/h3&gt;

&lt;p&gt;Second, you hit below command.&lt;br&gt;
'cat /etc/nginx/mime.types'&lt;br&gt;
and then, you look below line.&lt;br&gt;
This is mime type and extension combination setting file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;types {
    text/html                                        html htm shtml;
    text/css                                         css;
    text/xml                                         xml;
    image/gif                                        gif;
    image/jpeg                                       jpeg jpg;
    application/javascript                           js;
    application/atom+xml                             atom;
    application/rss+xml                              rss;

    text/mathml                                      mml;
    text/plain                                       txt;
    text/vnd.sun.j2me.app-descriptor                 jad;
    text/vnd.wap.wml                                 wml;
    text/x-component                                 htc;

    image/avif                                       avif;
    image/png                                        png;
    image/svg+xml                                    svg svgz;
    image/tiff                                       tif tiff;
    image/vnd.wap.wbmp                               wbmp;
    image/webp                                       webp;
    image/x-icon                                     ico;
    image/x-jng                                      jng;
    image/x-ms-bmp                                   bmp;

    font/woff                                        woff;
    font/woff2                                       woff2;

    application/java-archive                         jar war ear;
    application/json                                 json;
    application/mac-binhex40                         hqx;
    application/msword                               doc;
    application/pdf                                  pdf;
    application/postscript                           ps eps ai;
    application/rtf                                  rtf;
    application/vnd.apple.mpegurl                    m3u8;
    application/vnd.google-earth.kml+xml             kml;
    application/vnd.google-earth.kmz                 kmz;
    application/vnd.ms-excel                         xls;
    application/vnd.ms-fontobject                    eot;
    application/vnd.ms-powerpoint                    ppt;
    application/vnd.oasis.opendocument.graphics      odg;
    application/vnd.oasis.opendocument.presentation  odp;
    application/vnd.oasis.opendocument.spreadsheet   ods;
    application/vnd.oasis.opendocument.text          odt;
    application/vnd.openxmlformats-officedocument.presentationml.presentation
                                                     pptx;
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
                                                     xlsx;
    application/vnd.openxmlformats-officedocument.wordprocessingml.document
                                                     docx;
    application/vnd.wap.wmlc                         wmlc;
    application/wasm                                 wasm;
    application/x-7z-compressed                      7z;
    application/x-cocoa                              cco;
    application/x-java-archive-diff                  jardiff;
    application/x-java-jnlp-file                     jnlp;
    application/x-makeself                           run;
    application/x-perl                               pl pm;
    application/x-pilot                              prc pdb;
    application/x-rar-compressed                     rar;
    application/x-redhat-package-manager             rpm;
    application/x-sea                                sea;
    application/x-shockwave-flash                    swf;
    application/x-stuffit                            sit;
    application/x-tcl                                tcl tk;
    application/x-x509-ca-cert                       der pem crt;
    application/x-xpinstall                          xpi;
    application/xhtml+xml                            xhtml;
    application/xspf+xml                             xspf;
    application/zip                                  zip;

    application/octet-stream                         bin exe dll;
    application/octet-stream                         deb;
    application/octet-stream                         dmg;
    application/octet-stream                         iso img;
    application/octet-stream                         msi msp msm;

    audio/midi                                       mid midi kar;
    audio/mpeg                                       mp3;
    audio/ogg                                        ogg;
    audio/x-m4a                                      m4a;
    audio/x-realaudio                                ra;

    video/3gpp                                       3gpp 3gp;
    video/mp2t                                       ts;
    video/mp4                                        mp4;
    video/mpeg                                       mpeg mpg;
    video/quicktime                                  mov;
    video/webm                                       webm;
    video/x-flv                                      flv;
    video/x-m4v                                      m4v;
    video/x-mng                                      mng;
    video/x-ms-asf                                   asx asf;
    video/x-ms-wmv                                   wmv;
    video/x-msvideo                                  avi;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I wouldn't set it too much.&lt;br&gt;
It depends on the project, I suppose.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. nginx.conf
&lt;/h3&gt;

&lt;p&gt;Third, you hit below command.&lt;br&gt;
'cat /etc/nginx/nginx.conf'&lt;br&gt;
and then, you look below line.&lt;/p&gt;

&lt;p&gt;It's overall Nginx configuration.&lt;br&gt;
You configure log output destination and the number of connections, etc.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. uwsgi_params
&lt;/h3&gt;

&lt;p&gt;Fourth, you hit below command.&lt;br&gt;
'cat /etc/nginx/uwsgi_params'&lt;br&gt;
and then, you look below line.&lt;/p&gt;

&lt;p&gt;I have never used uwsgi, It's application Server for Python.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;uwsgi_param  QUERY_STRING       $query_string;
uwsgi_param  REQUEST_METHOD     $request_method;
uwsgi_param  CONTENT_TYPE       $content_type;
uwsgi_param  CONTENT_LENGTH     $content_length;

uwsgi_param  REQUEST_URI        $request_uri;
uwsgi_param  PATH_INFO          $document_uri;
uwsgi_param  DOCUMENT_ROOT      $document_root;
uwsgi_param  SERVER_PROTOCOL    $server_protocol;
uwsgi_param  REQUEST_SCHEME     $scheme;
uwsgi_param  HTTPS              $https if_not_empty;

uwsgi_param  REMOTE_ADDR        $remote_addr;
uwsgi_param  REMOTE_PORT        $remote_port;
uwsgi_param  SERVER_PORT        $server_port;
uwsgi_param  SERVER_NAME        $server_name;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. fastcgi_params
&lt;/h3&gt;

&lt;p&gt;Fifth, you hit below command.&lt;br&gt;
'cat /etc/nginx/fastcgi_params'&lt;br&gt;
and then, you look below line.&lt;/p&gt;

&lt;p&gt;I used to watch it a lot, so I often use Laravel and PHP.&lt;br&gt;
But I have never changed this file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REQUEST_SCHEME     $scheme;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  6. scgi_params
&lt;/h3&gt;

&lt;p&gt;Sixth, you hit below command.&lt;br&gt;
'cat /etc/nginx/scgi_params'&lt;br&gt;
and then, you look below line.&lt;/p&gt;

&lt;p&gt;SCGI is Simple Common Gateway Interface, I don't Know.&lt;br&gt;
SCGI is designed to be simpler than FastCGI.&lt;br&gt;
I'll learn it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;scgi_param  REQUEST_METHOD     $request_method;
scgi_param  REQUEST_URI        $request_uri;
scgi_param  QUERY_STRING       $query_string;
scgi_param  CONTENT_TYPE       $content_type;

scgi_param  DOCUMENT_URI       $document_uri;
scgi_param  DOCUMENT_ROOT      $document_root;
scgi_param  SCGI               1;
scgi_param  SERVER_PROTOCOL    $server_protocol;
scgi_param  REQUEST_SCHEME     $scheme;
scgi_param  HTTPS              $https if_not_empty;

scgi_param  REMOTE_ADDR        $remote_addr;
scgi_param  REMOTE_PORT        $remote_port;
scgi_param  SERVER_PORT        $server_port;
scgi_param  SERVER_NAME        $server_name;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  7. modules
&lt;/h3&gt;

&lt;p&gt;Seventh, you hit below command.&lt;br&gt;
'ls /etc/nginx/modules'&lt;br&gt;
and then, you look below line.&lt;/p&gt;

&lt;p&gt;Let me see, it seems to country access restrictions and XML　filter.&lt;br&gt;
I have never used it, so I will learn it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ngx_http_geoip_module-debug.so         ngx_http_xslt_filter_module-debug.so
ngx_http_geoip_module.so           ngx_http_xslt_filter_module.so
ngx_http_image_filter_module-debug.so  ngx_stream_geoip_module-debug.so
ngx_http_image_filter_module.so        ngx_stream_geoip_module.so
ngx_http_js_module-debug.so        ngx_stream_js_module-debug.so
ngx_http_js_module.so              ngx_stream_js_module.so
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There are a lot of scary files when you see them first time.&lt;br&gt;
But if you get used to it, you can edit it.&lt;/p&gt;

&lt;p&gt;No Problem!!&lt;/p&gt;

</description>
      <category>nginx</category>
      <category>devops</category>
    </item>
    <item>
      <title>How to transfer forked repository which original is private in GitHub</title>
      <dc:creator>Takahiro Fukushima</dc:creator>
      <pubDate>Fri, 24 May 2024 14:00:16 +0000</pubDate>
      <link>https://dev.to/takahiro_82jp/how-to-transfer-forked-repository-which-original-is-private-in-github-8gg</link>
      <guid>https://dev.to/takahiro_82jp/how-to-transfer-forked-repository-which-original-is-private-in-github-8gg</guid>
      <description>&lt;p&gt;I'm Tak, Software engineer.&lt;/p&gt;

&lt;p&gt;GitHub Transfer, Is a Very useful feature.&lt;br&gt;
So you can easily transfer the repository to another account.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;click "Settings" in GitHub repository&lt;/li&gt;
&lt;li&gt;click "Transfer"
&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flpmmjij1lazfrhb9gv9s.png" alt="Image description" width="800" height="618"&gt;
&lt;/li&gt;
&lt;li&gt;Select the new owner account
&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmigvvzpsr64o9cd1bkmf.png" alt="Image description" width="800" height="696"&gt;
&lt;/li&gt;
&lt;li&gt;click "I understand, transfer this repository"&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It's so easy.&lt;br&gt;
In addition settings, wiki, and issues can be automatically transferred.&lt;br&gt;
And of course, you can transfer forked repository.&lt;/p&gt;

&lt;p&gt;But if the original repository is private, you can not transfer the forked repository.&lt;/p&gt;

&lt;p&gt;You read the official document.&lt;br&gt;
&lt;a href="https://docs.github.com/en/repositories/creating-and-managing-repositories/transferring-a-repository"&gt;https://docs.github.com/en/repositories/creating-and-managing-repositories/transferring-a-repository&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Oh...how do I transfer...&lt;/p&gt;

&lt;p&gt;Don't worry, there is a solution.&lt;br&gt;
First, you detach forked repository from private original, so you transfer repository.&lt;/p&gt;

&lt;p&gt;You use GitHub Support.&lt;br&gt;
&lt;a href="https://support.github.com/request/fork"&gt;https://support.github.com/request/fork&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You select "detach forked".&lt;br&gt;
Next, you contact GitHub Support.&lt;/p&gt;

&lt;p&gt;The support ticket title is "Detach Fork".&lt;br&gt;
The support ticket message is&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;In the below repository, I'd like to unfork and turn it into a standalone repository.
* https:// want to detach repository url
and I never merge to this repository.
* https:// original private ripojitory url
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;8 hours later,　GitHub Support detach repository.&lt;br&gt;
But there is condition, so You have administrator role in original ripository Github account.&lt;br&gt;
If you don't have administrator role, original ripository Github account administrator contact GitHub Support, so detach repository.&lt;/p&gt;

&lt;p&gt;Finally, you can transfer repository.&lt;br&gt;
It's a little tough.&lt;/p&gt;

&lt;p&gt;But this article will help you.&lt;/p&gt;

&lt;p&gt;Thanks to read this article.&lt;/p&gt;

</description>
      <category>github</category>
      <category>git</category>
      <category>devops</category>
      <category>sre</category>
    </item>
    <item>
      <title>How to delete all AWS resources using aws-nuke</title>
      <dc:creator>Takahiro Fukushima</dc:creator>
      <pubDate>Wed, 22 May 2024 14:15:30 +0000</pubDate>
      <link>https://dev.to/takahiro_82jp/how-to-delete-all-aws-resources-using-aws-nuke-1bm6</link>
      <guid>https://dev.to/takahiro_82jp/how-to-delete-all-aws-resources-using-aws-nuke-1bm6</guid>
      <description>&lt;p&gt;Hi, I'm Takahiro, a Software Engineer.&lt;/p&gt;

&lt;p&gt;I've recently discovered a powerful tool.&lt;br&gt;
It's aws-nuke.&lt;/p&gt;

&lt;p&gt;aws-nuke is extremely powerful, but it can be very dangerous.&lt;br&gt;
Because it deletes all AWS resources.&lt;/p&gt;

&lt;p&gt;So, if you're careful of your usage, you can effectively manage your resource costs.&lt;/p&gt;

&lt;p&gt;aws-nuke isn't an official AWS tool.&lt;br&gt;
But The official document introduces it. Please see the link below.&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/automate-deletion-of-aws-resources-by-using-aws-nuke.html"&gt;https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/automate-deletion-of-aws-resources-by-using-aws-nuke.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The automation architecture is very helpful.&lt;/p&gt;

&lt;p&gt;So I demonstrate how to use aws-nuke.&lt;/p&gt;
&lt;h2&gt;
  
  
  How to install
&lt;/h2&gt;

&lt;p&gt;In the case of Mac,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew install aws-nuke
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the case of Amazon Linux,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wget https://github.com/rebuy-de/aws-nuke/releases/download/v2.25.0/aws-nuke-v2.25.0-linux-amd64.tar.gz
tar -zxf aws-nuke-v2.25.0-linux-amd64.tar.gz
mv aws-nuke-v2.25.0-linux-amd64 aws-nuke
chmod u+x aws-nuke
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How to make config file
&lt;/h2&gt;

&lt;p&gt;The file name is nuke-config.yml, Write in yaml format.&lt;/p&gt;

&lt;p&gt;For Example,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;regions: # specify region for deletion
- global
- ap-northeast-1
account-blocklist: # not to delete account　list
- 000000000
resource-types:
  excludes: # not to delete service
  - IAMRole
accounts:
  1111111111: # to delete account
    filters: # not to delete filtering resources by specific tag
      EC2Instance:
      - type: exact
        property: tag:DoNotNuke
        value: "True"
feature-flags:
  disable-deletion-protection: # force delete protected resources
    RDSInstance: true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Execute
&lt;/h2&gt;

&lt;p&gt;You need to set up an Account Alias in advance as it is required.&lt;/p&gt;

&lt;p&gt;First, Dry run.&lt;br&gt;
In the case of Mac,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws-nuke --config nuke-config.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the case of Amazon Linux,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;./aws-nuke --config nuke-config.yml

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

&lt;/div&gt;



&lt;p&gt;you check resources to be deleted.&lt;/p&gt;

&lt;p&gt;Next, you delete resources.&lt;br&gt;
In the case of Mac,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws-nuke --config nuke-config.yml --no-dry-run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the case of Amazon Linux,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;./aws-nuke --config nuke-config.yml --no-dry-run

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

&lt;/div&gt;



&lt;p&gt;If you write &lt;code&gt;--force&lt;/code&gt; option, there is no confirmation message.&lt;br&gt;
Be careful.&lt;/p&gt;

&lt;h2&gt;
  
  
  Last
&lt;/h2&gt;

&lt;p&gt;aws-nuke is a very useful tool, but very dangerous.&lt;br&gt;
Handle with care.&lt;/p&gt;

</description>
      <category>nuke</category>
      <category>devops</category>
      <category>aws</category>
      <category>sre</category>
    </item>
  </channel>
</rss>
