<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>エンジニア - shungo blog</title>
	<atom:link href="https://shungoblog.com/tag/engineer/feed" rel="self" type="application/rss+xml" />
	<link>https://shungoblog.com</link>
	<description>しゅんごブログ</description>
	<lastBuildDate>Fri, 02 May 2025 11:23:49 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://shungoblog.com/wp-content/uploads/2022/04/cropped-IMG_0718-32x32.jpg</url>
	<title>エンジニア - shungo blog</title>
	<link>https://shungoblog.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://shungoblog.com/tag/engineer/feed"/>
	<item>
		<title>【Rails】文字列をBooleanに変換する方法 (ActiveRecord::Type::Boolean.new.cast)</title>
		<link>https://shungoblog.com/programming/rails-string-to-boolean-cast.html</link>
					<comments>https://shungoblog.com/programming/rails-string-to-boolean-cast.html#respond</comments>
		
		<dc:creator><![CDATA[しゅんご]]></dc:creator>
		<pubDate>Tue, 14 Mar 2023 00:29:45 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[エンジニア]]></category>
		<guid isPermaLink="false">https://shungoblog.com/?p=2116</guid>

					<description><![CDATA[<p>目次 はじめにActiveRecord::Type::Boolean.new.castで変換するコードの定義についてよく使用する変換例メソッドで定義して使い回す方法クラスメソッドで定義するStringクラスのメソッドとし [&#8230;]</p>
<p>The post <a href="https://shungoblog.com/programming/rails-string-to-boolean-cast.html">【Rails】文字列をBooleanに変換する方法 (ActiveRecord::Type::Boolean.new.cast)</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">はじめに</a></li><li><a href="#toc2" tabindex="0">ActiveRecord::Type::Boolean.new.castで変換する</a></li><li><a href="#toc3" tabindex="0">コードの定義について</a></li><li><a href="#toc4" tabindex="0">よく使用する変換例</a></li><li><a href="#toc5" tabindex="0">メソッドで定義して使い回す方法</a><ol><li><a href="#toc6" tabindex="0">クラスメソッドで定義する</a></li><li><a href="#toc7" tabindex="0">Stringクラスのメソッドとして定義する</a></li></ol></li></ol>
    </div>
  </div>

<h2><span id="toc1">はじめに</span></h2>
<p>Rubyではboolean判定するには少し工夫が必要です。</p>
<p>自作でメソッドを定義することも可能ですが、<strong>ActiveRecord</strong>に便利なメソッドがあるので、</p>
<p>それを用いてBooleanに変換する方法をご紹介します。</p>
<p>&nbsp;</p>
<h2><span id="toc2"><span class="no">ActiveRecord</span><span class="o">::</span><span class="no">Type</span><span class="o">::</span><span class="no">Boolean</span><span class="p">.</span><span class="nf">new</span><span class="p">.</span><span class="nf">castで変換する</span></span></h2>
<p>下記のようにActiveRecordのメソッドを使用することで</p>
<p>文字列をBooleanに変換することができます。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-ruby" data-lang="Ruby"><code>ActiveRecord::Type::Boolean.new.cast('true') # =&gt; true
ActiveRecord::Type::Boolean.new.cast('false') # =&gt; false
</code></pre>
</div>
<p>&nbsp;</p>
<h2><span id="toc3">コードの定義について</span></h2>
<p>変換するメソッドは下記で定義されています。</p>
<p><a rel="nofollow noopener external" target="_blank" href="https://github.com/rails/rails/blob/61fb58f6a7f852d765d616d1da41d17851ec7afc/activemodel/lib/active_model/type/boolean.rb"><span>rails/activemodel/lib/active_model/type/boolean.rb</span></a></p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-ruby" data-lang="Ruby"><code>module ActiveModel
  module Type

    ...
    class Boolean &lt; Value
      FALSE_VALUES = [
        false, 0,
        "0", :"0",
        "f", :f,
        "F", :F,
        "false", :false,
        "FALSE", :FALSE,
        "off", :off,
        "OFF", :OFF,
      ].to_set.freeze

      ...
      private
        def cast_value(value)
          if value == ""
            nil
          else
            !FALSE_VALUES.include?(value)
          end
        end
    end
  end
end</code></pre>
</div>
<p>大まかな処理の流れは下記の通りです。</p>
<ol>
<li>valueが空文字&#8221;&#8221; =&gt; nil</li>
<li>valueが<code>FALSE_VALUES</code>に含まれる値 =&gt; false</li>
<li>上記でない =&gt; true<code></code></li>
</ol>
<p>&nbsp;</p>
<h2><span id="toc4">よく使用する変換例</span></h2>
<p><strong>&#8216;true&#8217;</strong>や<strong>&#8216;false&#8217;</strong>以外にもよく使用するであろう値の変換結果を載せておきます。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-ruby" data-lang="Ruby"><code>ActiveRecord::Type::Boolean.new.cast('0') # =&gt; false
ActiveRecord::Type::Boolean.new.cast(0) # =&gt; false
ActiveRecord::Type::Boolean.new.cast('false') # =&gt; false
ActiveRecord::Type::Boolean.new.cast("FALSE") # =&gt; false
ActiveRecord::Type::Boolean.new.cast("off") # =&gt; false
ActiveRecord::Type::Boolean.new.cast("OFF") # =&gt; false

ActiveRecord::Type::Boolean.new.cast('1') # =&gt; true
ActiveRecord::Type::Boolean.new.cast(1) # =&gt; true
ActiveRecord::Type::Boolean.new.cast('true') # =&gt; true
ActiveRecord::Type::Boolean.new.cast('TRUE') # =&gt; true
ActiveRecord::Type::Boolean.new.cast('on') # =&gt; true
ActiveRecord::Type::Boolean.new.cast('ON') # =&gt; true

ActiveRecord::Type::Boolean.new.cast('') # =&gt; nil
ActiveRecord::Type::Boolean.new.cast(nil) # =&gt; nil
</code></pre>
</div>
<p>&nbsp;</p>
<h2><span id="toc5">メソッドで定義して使い回す方法</span></h2>
<p>下記のようにクラスメソッドで定義すれば、かなり使いやすくなるのでオススメです！！</p>
<h3><span id="toc6">クラスメソッドで定義する</span></h3>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-ruby" data-lang="Ruby"><code>class Utility
  def self.to_bool(value)
    ActiveRecord::Type::Boolean.new.cast(value)
  end
end

&gt; Utility.to_bool('true')
true</code></pre>
</div>
<h3><span id="toc7">Stringクラスのメソッドとして定義する</span></h3>
<p>下記にようにStringクラスで定義すれば、文字列全体に適用可能です。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-ruby" data-lang="Ruby"><code>class String
  def to_bool
    ActiveRecord::Type::Boolean.new.cast(self)
  end
end

&gt; 'true'.to_bool
true</code></pre>
</div><p>The post <a href="https://shungoblog.com/programming/rails-string-to-boolean-cast.html">【Rails】文字列をBooleanに変換する方法 (ActiveRecord::Type::Boolean.new.cast)</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://shungoblog.com/programming/rails-string-to-boolean-cast.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Ruby】 クラスメソッドからプライベートメソッドを呼ぶ方法</title>
		<link>https://shungoblog.com/programming/ruby-class-and-private-method.html</link>
					<comments>https://shungoblog.com/programming/ruby-class-and-private-method.html#respond</comments>
		
		<dc:creator><![CDATA[しゅんご]]></dc:creator>
		<pubDate>Sun, 12 Mar 2023 12:59:01 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[エンジニア]]></category>
		<guid isPermaLink="false">https://shungoblog.com/?p=2105</guid>

					<description><![CDATA[<p>目次 はじめにNGなパターン1. クラスメソッドからプライベートメソッドを呼ぶ2. private内でself.methodを定義するクラスメソッドからプライベートメソッドを呼ぶ書き方 はじめに Rubyでクラスメソッド [&#8230;]</p>
<p>The post <a href="https://shungoblog.com/programming/ruby-class-and-private-method.html">【Ruby】 クラスメソッドからプライベートメソッドを呼ぶ方法</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">はじめに</a></li><li><a href="#toc2" tabindex="0">NGなパターン</a><ol><li><a href="#toc3" tabindex="0">1. クラスメソッドからプライベートメソッドを呼ぶ</a></li><li><a href="#toc4" tabindex="0">2. private内でself.methodを定義する</a></li></ol></li><li><a href="#toc5" tabindex="0">クラスメソッドからプライベートメソッドを呼ぶ書き方</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">はじめに</span></h2>
<p>Rubyでクラスメソッド内からprivateメソッドを呼び出したときに、</p>
<p>エラーが発生したのでそのときの対処法をご紹介します。</p>
<p>&nbsp;</p>
<h2><span id="toc2">NGなパターン</span></h2>
<h3><span id="toc3">1. クラスメソッドからプライベートメソッドを呼ぶ</span></h3>
<p>私が最初に書いたエラーになるパターンのコードです。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-ruby" data-lang="Ruby"><code>class Sample1
  def self.foo
    bar
  end

  private

    def bar
      puts 'bar'
    end
end

&gt; Sample1.foo
Traceback (most recent call last):
1: from test.rb:13:in `&lt;main&gt;'
test.rb:3:in `foo': undefined local variable or method `bar' for Sample1:Class (NameError)</code></pre>
</div>
<p>&nbsp;</p>
<h3><span id="toc4">2. private内でself.methodを定義する</span></h3>
<p>こちらの場合は、エラーなく実行できますが、</p>
<p>privateメソッドを直接呼び出せてしまっているのでNGですね。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-ruby" data-lang="Ruby"><code>class Sample1
  def self.foo
    bar
  end

  private

    def self.bar
      puts 'bar'
    end
end

// エラーなく実行できる
&gt; Sample1.foo
bar

// privateメソッドを呼べている
&gt; Sample1.bar
bar</code></pre>
</div>
<p>&nbsp;</p>
<h2><span id="toc5">クラスメソッドからプライベートメソッドを呼ぶ書き方</span></h2>
<p>特異クラス内でprivateを定義すれば、</p>
<p>クラスメソッドからプライベートメソッドを呼ぶことが可能になります。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-ruby" data-lang="Ruby"><code>class Sample2
  class &lt;&lt; self # クラスメソッドで定義
    def foo
      bar
    end

    private

      def bar # クラスメソッド内でprivateメソッドを定義する
        puts 'bar'
      end
  end
end

&gt; Sample2.foo
bar</code></pre>
</div>
<p>最初のように<code>def sefl.method end</code>の書き方に合わせるなら</p>
<p>下記のようになります。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-ruby" data-lang="Ruby"><code>class Sample2
  def self.foo # クラスメソッドで定義
    bar
  end
  class &lt;&lt; self

    private

      def bar # 特異クラス内でprivateメソッドを定義する
        puts 'bar'
      end
  end
end

&gt; Sample2.foo
bar</code></pre>
</div><p>The post <a href="https://shungoblog.com/programming/ruby-class-and-private-method.html">【Ruby】 クラスメソッドからプライベートメソッドを呼ぶ方法</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://shungoblog.com/programming/ruby-class-and-private-method.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Go】 import cycle not allowed (循環参照)について</title>
		<link>https://shungoblog.com/programming/go-import-cycle-not-allowed.html</link>
					<comments>https://shungoblog.com/programming/go-import-cycle-not-allowed.html#respond</comments>
		
		<dc:creator><![CDATA[しゅんご]]></dc:creator>
		<pubDate>Thu, 23 Feb 2023 13:57:43 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[go]]></category>
		<category><![CDATA[エンジニア]]></category>
		<guid isPermaLink="false">https://shungoblog.com/?p=1985</guid>

					<description><![CDATA[<p>目次 import cycle not allowed (循環参照とは？)循環参照が起こるコード例ファイル構成go.modmain.goa.gob.gomain.goを実行してみる循環参照の対策方法 import cyc [&#8230;]</p>
<p>The post <a href="https://shungoblog.com/programming/go-import-cycle-not-allowed.html">【Go】 import cycle not allowed (循環参照)について</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">import cycle not allowed (循環参照とは？)</a></li><li><a href="#toc2" tabindex="0">循環参照が起こるコード例</a><ol><li><a href="#toc3" tabindex="0">ファイル構成</a></li><li><a href="#toc4" tabindex="0">go.mod</a></li><li><a href="#toc5" tabindex="0">main.go</a></li><li><a href="#toc6" tabindex="0">a.go</a></li><li><a href="#toc7" tabindex="0">b.go</a></li></ol></li><li><a href="#toc8" tabindex="0">main.goを実行してみる</a></li><li><a href="#toc9" tabindex="0">循環参照の対策方法</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">import cycle not allowed (循環参照とは？)</span></h2>
<p><span>他のpackageにimportしたときに、こんなエラーが出た人はいるんではないでしょうか？</span></p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash"><code>import cycle not allowed</code></pre>
</div>
<p>このエラーは循環参照が起きているときの吐かれるエラーです。</p>
<p>&nbsp;</p>
<p>たとえばpackage aとbがあった場合に、</p>
<ul>
<li><strong>package aでbの関数やメソッドを参照している</strong></li>
<li><strong>package bでもaの関数やメソッドを参照している</strong></li>
</ul>
<p>と循環参照していることになり、<code>import cycle not allowed</code>というエラーが出てしまいます。</p>
<p>&nbsp;</p>
<h2><span id="toc2">循環参照が起こるコード例</span></h2>
<p>循環参照が発生する具体的なコードを書いてみます。</p>
<h3><span id="toc3">ファイル構成</span></h3>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-plain" data-lang=""><code>./app
├─ a/a.go
├─ b/b.go
├─ main.go
└─ go.mod</code></pre>
</div>
<h3><span id="toc4">go.mod</span></h3>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-go" data-lang="go.mod"><code>module app

go 1.19</code></pre>
</div>
<h3><span id="toc5">main.go</span></h3>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-go" data-lang="main.go"><code>package main

import (
  "app/a"
)

func main() {
  a.CallB()
}
</code></pre>
</div>
<p>&nbsp;</p>
<h3><span id="toc6">a.go</span></h3>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-go" data-lang="a.go"><code>package a

import (
  "fmt"
  "app/b"
)

func PrintA() {
  fmt.Println("A")
}

func CallB() {
  b.PrintB()
}</code></pre>
</div>
<p>&nbsp;</p>
<h3><span id="toc7">b.go</span></h3>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-go" data-lang="b.go"><code>package b

import (
  "fmt"
  "app/a"
)

func PrintB() {
  fmt.Println("B")
}

func CallA() {
  a.PrintA()
}</code></pre>
</div>
<h2><span id="toc8">main.goを実行してみる</span></h2>
<p>この状態で<code>main.go</code>を実行すると<code>import cycle not allowed</code>のエラーが出ます。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash"><code>% go run main.go
package command-line-arguments
        imports app/a
        imports app/b
        imports app/a: import cycle not allowed</code></pre>
</div>
<h2><span id="toc9">循環参照の対策方法</span></h2>
<p>&nbsp;</p>
<p>循環参照が起きないようにするには主に下記の方法があるようです。</p>
<ul>
<li><strong>ファイル構成を変更する</strong></li>
<li><strong>interfaceを使う</strong></li>
<li><strong>同じpackageにまとめる</strong></li>
</ul>
<p>それぞれの具体的な実装例はまた別の記事で紹介しようと思います。</p><p>The post <a href="https://shungoblog.com/programming/go-import-cycle-not-allowed.html">【Go】 import cycle not allowed (循環参照)について</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://shungoblog.com/programming/go-import-cycle-not-allowed.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【React Native】 3点リーダーで文字を省略する方法</title>
		<link>https://shungoblog.com/programming/reactnative-3dotted-reader.html</link>
					<comments>https://shungoblog.com/programming/reactnative-3dotted-reader.html#respond</comments>
		
		<dc:creator><![CDATA[しゅんご]]></dc:creator>
		<pubDate>Tue, 31 Jan 2023 09:58:41 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[react-native]]></category>
		<category><![CDATA[エンジニア]]></category>
		<guid isPermaLink="false">https://shungoblog.com/?p=1726</guid>

					<description><![CDATA[<p>&#160; 目次 ReactNativeの3点リーダーnumberOfLinesellipsizeMode参考URL普通のcssの場合 ReactNativeの3点リーダー Textで”numberOfLines”と” [&#8230;]</p>
<p>The post <a href="https://shungoblog.com/programming/reactnative-3dotted-reader.html">【React Native】 3点リーダーで文字を省略する方法</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>&nbsp;</p>

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ReactNativeの3点リーダー</a><ol><li><a href="#toc2" tabindex="0">numberOfLines</a></li><li><a href="#toc3" tabindex="0">ellipsizeMode</a></li><li><a href="#toc4" tabindex="0">参考URL</a></li></ol></li><li><a href="#toc5" tabindex="0">普通のcssの場合</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">ReactNativeの3点リーダー</span></h2>
<p>Textで”<span>numberOfLines”と”ellipsizeMode”を指定することで3点リーダーを表示することができます。</span></p>
<p>下記が使用例です。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-js" data-lang="JavaScript"><code></code><code><span>&lt;Text </span><span>numberOfLines</span><span>=</span>{<span>1</span>} <span>ellipsizeMode</span><span>="tail"</span><span>&gt;
 </span> <span>abcdefghijklmnopqrstuvwxyz
</span><span>&lt;/Text&gt;</span></code></pre>
</div>
<p>&nbsp;</p>
<h3><span id="toc2"><span>numberOfLines</span></span></h3>
<p>省略せずに表示する行数です。</p>
<p><span>numberOfLines</span><span>=</span>{<span>1</span>}の場合、1行目は表示して、2行以降になる部分を3点リーダーで省略します。</p>
<h3><span id="toc3"><span>ellipsizeMode</span></span></h3>
<p>省略するときの表示方法を指定します。</p>
<div class="scrollable-table"><table style="border-collapse: collapse; width: 100%; height: 210px;">
<tbody>
<tr style="height: 42px;">
<td style="width: 33.3333%; height: 42px;"><strong>numberOfLines</strong></td>
<td style="width: 33.3333%; height: 42px;"><strong>詳細</strong></td>
<td style="width: 33.3333%; height: 42px;"><strong>表示例</strong></td>
</tr>
<tr style="height: 42px;">
<td style="width: 33.3333%; height: 42px;">head</td>
<td style="width: 33.3333%; height: 42px;">末尾がコンテナに収まるように表示され、行の先頭のテキストは省略記号で示されます。</td>
<td style="width: 33.3333%; height: 42px;"><span>&#8230;wxyz</span></td>
</tr>
<tr style="height: 42px;">
<td style="width: 33.3333%; height: 42px;">middle</td>
<td style="width: 33.3333%; height: 42px;"><span>先頭と末尾がコンテナーに収まるように表示され、途中が省略記号で示されます。</span></td>
<td style="width: 33.3333%; height: 42px;"><span>ab&#8230;yz</span></td>
</tr>
<tr style="height: 42px;">
<td style="width: 33.3333%; height: 42px;">tail (よく使用する)</td>
<td style="width: 33.3333%; height: 42px;"><span>先頭がコンテナーに収まるように行が表示され、末尾が省略記号で示されます。</span></td>
<td style="width: 33.3333%; height: 42px;"><span>abcd&#8230;</span></td>
</tr>
<tr style="height: 42px;">
<td style="width: 33.3333%; height: 42px;">clip</td>
<td style="width: 33.3333%; height: 42px;"><span>コンテナに収まらない文字は表示されません。</span></td>
<td style="width: 33.3333%; height: 42px;">abcde</td>
</tr>
</tbody>
</table></div>
<p>&nbsp;</p>
<h3><span id="toc4">参考URL</span></h3>

<a rel="nofollow noopener external" target="_blank" href="https://reactnative.dev/docs/text#ellipsizemode" title="Text · React Native" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img decoding="async" src="https://shungoblog.com/wp-content/uploads/cocoon-resources/blog-card-cache/ef223cf76396449f77ab357128a21e16.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Text · React Native</div><div class="blogcard-snippet external-blogcard-snippet">A React component for displaying text.</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://reactnative.dev/docs/text#ellipsizemode" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">reactnative.dev</div></div></div></div></a>
<p>&nbsp;</p>
<h2><span id="toc5">普通のcssの場合</span></h2>
<p>ちなみにReact NativeでなくCSSで書く場合は下記のCSSで3点リーダーは実装可能です。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-css" data-lang="CSS"><code><span class="hljs-attribute">display</span><span>: -webkit-box;</span>
<span class="hljs-attribute">-webkit-box-orient</span><span>: vertical;</span>
<span class="hljs-attribute">-webkit-line-clamp</span><span>: </span><span class="hljs-number">3;</span>
<span class="hljs-attribute">overflow</span>: hidden;</code></pre>
</div><p>The post <a href="https://shungoblog.com/programming/reactnative-3dotted-reader.html">【React Native】 3点リーダーで文字を省略する方法</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://shungoblog.com/programming/reactnative-3dotted-reader.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>selectタグのプルダウンのデフォルト項目を灰色に変更する方法 (HTML/CSSのみ)</title>
		<link>https://shungoblog.com/programming/select-pulldown-color.html</link>
					<comments>https://shungoblog.com/programming/select-pulldown-color.html#respond</comments>
		
		<dc:creator><![CDATA[しゅんご]]></dc:creator>
		<pubDate>Thu, 24 Nov 2022 10:42:26 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[select]]></category>
		<category><![CDATA[エンジニア]]></category>
		<guid isPermaLink="false">https://shungoblog.com/?p=1682</guid>

					<description><![CDATA[<p>&#160; 目次 はじめにselectタグの未選択のみ灰色にするコードコピペでOK!!コード解説1. value=&#8221;&#8221;2. required3. select:invalidstyled-com [&#8230;]</p>
<p>The post <a href="https://shungoblog.com/programming/select-pulldown-color.html">selectタグのプルダウンのデフォルト項目を灰色に変更する方法 (HTML/CSSのみ)</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>&nbsp;</p>

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10" checked><label class="toc-title" for="toc-checkbox-10">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">はじめに</a></li><li><a href="#toc2" tabindex="0">selectタグの未選択のみ灰色にするコード</a><ol><li><a href="#toc3" tabindex="0">コピペでOK!!</a></li></ol></li><li><a href="#toc4" tabindex="0">コード解説</a><ol><li><a href="#toc5" tabindex="0">1. value=&#8221;&#8221;</a></li><li><a href="#toc6" tabindex="0">2. required</a></li><li><a href="#toc7" tabindex="0">3. select:invalid</a></li></ol></li><li><a href="#toc8" tabindex="0">styled-componentsの場合</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">はじめに</span></h2>
<p>selectタグを用いたプルダウンを実装した場合、すべての項目が黒色になります。</p>
<p>しかし、下記のように、先頭のデフォルト項目だけ灰色にしたい場合もあるはずです。</p>
<p>この記事では、HTML/CSSのみでプルダウンのデフォルト項目の色を変更する方法をご紹介します。</p>
<p class="codepen" data-height="312.701416015625" data-default-tab="html,result" data-slug-hash="GRGGdYg" data-user="shungo0525" style="height: 312.701416015625px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;"><span>See the Pen <a rel="nofollow noopener external" target="_blank" href="https://codepen.io/shungo0525/pen/GRGGdYg"><br />
select option</a> by Shungo Matsumura (<a rel="nofollow noopener external" target="_blank" href="https://codepen.io/shungo0525">@shungo0525</a>)<br />
on <a rel="nofollow noopener external" target="_blank" href="https://codepen.io">CodePen</a>.</span></p>
<p><script src="https://cpwebassets.codepen.io/assets/embed/ei.js" async=""></script></p>
<h2><span id="toc2">selectタグの未選択のみ灰色にするコード</span></h2>
<h3><span id="toc3">コピペでOK!!</span></h3>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-html" data-lang="HTML"><code>## index.html

&lt;style&gt;
  select:invalid { color: #cdcdcd; } &lt;!-- 先頭の項目の色 --&gt;
  select option { color: black; } &lt;!-- 通常の項目の色 --&gt;
&lt;/style&gt;

&lt;select name="color" required&gt;
  &lt;option value=""&gt;色を選択して下さい&lt;/option&gt;
  &lt;option value="red"&gt;赤&lt;/option&gt;
  &lt;option value="blue"&gt;青&lt;/option&gt;
  &lt;option value="green"&gt;緑&lt;/option&gt;
&lt;/select&gt;</code></pre>
</div>
<h2><span id="toc4">コード解説</span></h2>
<p>下記の3点を満たしていないと未選択のoptionの色が変わらないので注意してください。</p>
<h3><span id="toc5">1. value=&#8221;&#8221;</span></h3>
<p>灰色にしたい項目のvalueを空にしておきます。</p>
<h3><span id="toc6">2. required</span></h3>
<p>selectタグにrequiredを付けると、valueが空の項目が選択されている場合、invalid(= 無効)の状態になります。</p>
<p>そのため、「色を選択して下さい」という項目を選択を選択するとinvalidになります。</p>
<h3><span id="toc7">3. select:invalid</span></h3>
<p>selectのoptionに黒色を適用して、</p>
<p>invalidの状態のoptionにだけ、灰色を適用すると、未選択の項目だけ灰色にすることができます！</p>
<p>&nbsp;</p>
<h2><span id="toc8">styled-componentsの場合</span></h2>
<p>実際に担当した案件ではstyled-componentsを使用していたので、</p>
<p>そのときの該当コードを下記に添付します。</p>
<p>&nbsp;</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-js" data-lang="JavaScript"><code>/* Your code... */</code></pre>
<pre class="hljs javascript"><span><span class="hljs-keyword">const</span> Component = <span class="hljs-function"><span class="hljs-params">()</span> =&gt;</span> {
  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">Select</span> <span class="hljs-attr">required</span>=<span class="hljs-string">{true}</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">option</span> <span class="hljs-attr">value</span>=<span class="hljs-string">""</span>&gt;</span>選択してください<span class="hljs-tag">&lt;/<span class="hljs-name">option</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">option</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"red"</span>&gt;</span>赤<span class="hljs-tag">&lt;/<span class="hljs-name">option</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">option</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"blue"</span>&gt;</span>青<span class="hljs-tag">&lt;/<span class="hljs-name">option</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">option</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"green"</span>&gt;</span>緑<span class="hljs-tag">&lt;/<span class="hljs-name">option</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">Select</span>&gt;</span></span>
  )
}

const</span>Select = <span>styled</span>.<span>select</span><span><span class="hljs-string">`
</span></span><span><span class="hljs-string">  option {
</span></span><span><span class="hljs-string">    color:</span></span><span><span class="hljs-string">black</span></span><span><span class="hljs-string">;
</span></span><span><span class="hljs-string">  }
</span></span><span><span class="hljs-string">  :invalid {
</span></span><span><span class="hljs-string">    color: #cdcdcd;
</span></span><span><span class="hljs-string">  }
</span></span><span><span class="hljs-string">`</span></span></pre>
</div><p>The post <a href="https://shungoblog.com/programming/select-pulldown-color.html">selectタグのプルダウンのデフォルト項目を灰色に変更する方法 (HTML/CSSのみ)</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://shungoblog.com/programming/select-pulldown-color.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【CakePHP】 DBの接続先を環境ごとに切り替える方法</title>
		<link>https://shungoblog.com/programming/cakephp-change-db-per-environment.html</link>
					<comments>https://shungoblog.com/programming/cakephp-change-db-per-environment.html#respond</comments>
		
		<dc:creator><![CDATA[しゅんご]]></dc:creator>
		<pubDate>Mon, 10 Oct 2022 13:27:23 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[エンジニア]]></category>
		<guid isPermaLink="false">https://shungoblog.com/?p=1548</guid>

					<description><![CDATA[<p>目次 はじめに接続するDBを動的に変更する方法コードコードの解説 はじめに ローカル、ステージング、本番などの環境があって、それぞれ異なるDBに接続する場合があると思います。 今回はホスト名を見て、動的に接続するDBを変 [&#8230;]</p>
<p>The post <a href="https://shungoblog.com/programming/cakephp-change-db-per-environment.html">【CakePHP】 DBの接続先を環境ごとに切り替える方法</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<div>

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-12" checked><label class="toc-title" for="toc-checkbox-12">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">はじめに</a></li><li><a href="#toc2" tabindex="0">接続するDBを動的に変更する方法</a><ol><li><a href="#toc3" tabindex="0">コード</a></li><li><a href="#toc4" tabindex="0">コードの解説</a></li></ol></li></ol>
    </div>
  </div>

<h2><span id="toc1">はじめに</span></h2>
<p>ローカル、ステージング、本番などの環境があって、それぞれ異なるDBに接続する場合があると思います。</p>
<p>今回はホスト名を見て、動的に接続するDBを変更する方法をご紹介します。</p>
<h2><span id="toc2">接続するDBを動的に変更する方法</span></h2>
</div>
<div>
<h3><span id="toc3">コード</span></h3>
<p><code>”app/Config/databas.php”</code>を下記のように変更することで動的に接続先を変更できます。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-php" data-lang="app/Config/databas.php"><code>&lt;?php class DATABASE_CONFIG { 
  // ローカル環境
  public $default = array(
    'datasource' =&gt;'Database/Mysql',
    'persistent' =&gt;'false',
    'host' =&gt;'db_host',
    'login' =&gt;'user',
    'password' =&gt;'password',
    'database' =&gt;'database_name',
    'schema' =&gt;'public',
    'prefix' =&gt;'',
    'encoding' =&gt;'utf8'
  );

  // staging環境
  public $staging = array(
    'datasource' =&gt;'Database/Mysql',
    'persistent' =&gt;'false',
    'host' =&gt;'db_host',
    'login' =&gt;'user',
    'password' =&gt;'password',
    'database' =&gt;'database_name',
    'schema' =&gt;'public',
    'prefix' =&gt;'',
    'encoding' =&gt;'utf8'
  );

  // 本番環境
  public $production = array(
    'datasource' =&gt;'Database/Mysql',
    'persistent' =&gt;'false',
    'host' =&gt;'da_host',
    'login' =&gt;'user',
    'password' =&gt;'password',
    'database' =&gt;'database_name',
    'schema' =&gt;'public',
    'prefix' =&gt;'',
    'encoding' =&gt;'utf8'
  );

  // ドメインごとにDBを切り替え
  public function __construct() {
    switch (env('HTTP_HOST')) {
      case 'localhost':
        $this-&gt;default =$this-&gt;default;
        break;
      case 'staging.xxxx.jp':
        $this-&gt;default =$this-&gt;staging;
        break;
      case 'production.xxxx.jp':
        $this-&gt;default =$this-&gt;production;
        break;
    }
  }
}</code></pre>
</div>
</div>
<h3><span id="toc4">コードの解説</span></h3>
<p>ローカル環境(<code>”$default”</code>)、ステージング環境(<code>”$staging”</code>)、本番環境(<code>”$production”</code>)のDB接続情報をそれぞれ定義します。</p>
<p>動的に切り替えない場合は、常に<code>$default</code>が読み込まれます。</p>
<p>&nbsp;</p>
<p>動的に切り替えるために、コンストラクタ(<code>”<span>__construct”</span></code>)を使います。</p>
<p>コンストラクタは、新しいオブジェクトが生成されるたびに、このメソッドがコールされます。</p>
<p>そのため、オブジェクトを使用する際の初期化を行うことができます。</p>
<p>(参照: <a rel="nofollow noopener external" target="_blank" href="https://www.php.net/manual/ja/language.oop5.decon.php">コンストラクタとデストラクタ</a>)</p>
<p>&nbsp;</p>
<p>今回はホスト(<code>”<span>env</span><span>(</span><span>'HTTP_HOST'</span><span>)”</span></code>)で動的に切り替えるので、</p>
<p>ホストの値を見て、<code>”$default”</code>を</p>
<p>ローカル -&gt; <code>”$default”</code></p>
<p>ステージング -&gt; <code>”$staging”</code></p>
<p>本番 -&gt; <code>"$production”</code></p>
<p>に変更されるようにしています。</p>
<p>&nbsp;</p><p>The post <a href="https://shungoblog.com/programming/cakephp-change-db-per-environment.html">【CakePHP】 DBの接続先を環境ごとに切り替える方法</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://shungoblog.com/programming/cakephp-change-db-per-environment.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Rails】resourceとresourcesの命名規則</title>
		<link>https://shungoblog.com/programming/rails_resource_resources.html</link>
					<comments>https://shungoblog.com/programming/rails_resource_resources.html#respond</comments>
		
		<dc:creator><![CDATA[しゅんご]]></dc:creator>
		<pubDate>Fri, 30 Sep 2022 11:39:00 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[エンジニア]]></category>
		<guid isPermaLink="false">https://shungoblog.com/?p=1539</guid>

					<description><![CDATA[<p>目次 はじめに単数形resourceと複数形resourcesの命名規則命名規則一覧Railsガイドよりルーティング一覧 (/rails/info/routes)単数形resource複数形resources はじめに  [&#8230;]</p>
<p>The post <a href="https://shungoblog.com/programming/rails_resource_resources.html">【Rails】resourceとresourcesの命名規則</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-14" checked><label class="toc-title" for="toc-checkbox-14">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">はじめに</a></li><li><a href="#toc2" tabindex="0">単数形resourceと複数形resourcesの命名規則</a><ol><li><a href="#toc3" tabindex="0">命名規則一覧</a></li><li><a href="#toc4" tabindex="0">Railsガイドより</a></li></ol></li><li><a href="#toc5" tabindex="0">ルーティング一覧 (/rails/info/routes)</a><ol><li><a href="#toc6" tabindex="0">単数形resource</a></li><li><a href="#toc7" tabindex="0">複数形resources</a></li></ol></li></ol>
    </div>
  </div>

<h2><span id="toc1">はじめに</span></h2>
<p>railsのルーティングを設定するときに、単数形resourceと複数形resourcesの命名規則にハマったのでまとめてみました。</p>
<p>例として下記のようなroutes.rbで紹介します。</p>
<pre class="highlight"><span class="no"># routes.rb

Rails</span><span class="p">.</span><span class="nf">application</span><span class="p">.</span><span class="nf">routes</span><span class="p">.</span><span class="nf">draw</span> <span class="k">do
  resource :post
  resources :posts
</span>end</pre>
<h2><span id="toc2">単数形resourceと複数形resourcesの命名規則</span></h2>
<h3><span id="toc3">命名規則一覧</span></h3>
<p>それぞれの命名規則を下記の表にまとめました。</p>
<p>太字の部分がresourceとresourcesで異なる部分です。</p>
<div class="scrollable-table"><table style="border-collapse: collapse; width: 100%; height: 205px;">
<tbody>
<tr style="height: 41px;">
<td style="width: 16.6667%; height: 41px;"></td>
<td style="width: 16.6667%; height: 41px;">resource</td>
<td style="width: 16.6667%; height: 41px;">resources</td>
</tr>
<tr style="height: 41px;">
<td style="width: 16.6667%; height: 41px;">routes.rb</td>
<td style="width: 16.6667%; height: 41px;"><strong>resource :post</strong></td>
<td style="width: 16.6667%; height: 41px;"><strong>resources :posts</strong></td>
</tr>
<tr style="height: 41px;">
<td style="width: 16.6667%; height: 41px;">ファイル名</td>
<td style="width: 16.6667%; height: 41px;">posts_controller.rb</td>
<td style="width: 16.6667%; height: 41px;">posts_controller.rb</td>
</tr>
<tr style="height: 41px;">
<td style="width: 16.6667%; height: 41px;">コントローラー名</td>
<td style="width: 16.6667%; height: 41px;">PostsController</td>
<td style="width: 16.6667%; height: 41px;">PostsController</td>
</tr>
<tr style="height: 41px;">
<td style="width: 16.6667%; height: 41px;">エンドポイント(GET index)</td>
<td style="width: 16.6667%; height: 41px;"><strong>/post</strong></td>
<td style="width: 16.6667%; height: 41px;"><strong>/posts</strong></td>
</tr>
</tbody>
</table></div>
<p>&nbsp;</p>
<h3><span id="toc4">Railsガイドより</span></h3>
<p>単数形リソースを使用した場合でも、コントローラーは複数形のものに対応付けられるそうです。</p>
<p>これにより、ファイル名やクラス名も複数形になります。</p>
<blockquote><p><span>単数形リソースは複数形のコントローラに対応付けられます。これは、同じコントローラで単数形のルーティング（</span><code>/account</code><span>）と複数形のルーティング（</span><code>/accounts/45</code><span>）を両方使いたい場合を想定しているためです。従って、</span><code>resource :photo</code><span>と</span><code>resources :photos</code><span>のどちらも、単数形ルーティングと複数形ルーティングを両方作成し、同一のコントローラ（</span><code>PhotosController</code><span>）に割り当てられます。</span></p>
<p><a rel="nofollow noopener external" target="_blank" href="https://railsguides.jp/routing.html#%E5%8D%98%E6%95%B0%E5%BD%A2%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9">2.5 単数形リソース</a> (Railsガイド)</p></blockquote>
<p>&nbsp;</p>
<h2><span id="toc5">ルーティング一覧 (/rails/info/routes)</span></h2>
<h3><span id="toc6">単数形resource</span></h3>
<p><img fetchpriority="high" decoding="async" src="https://shungoblog.com/wp-content/uploads/2022/09/スクリーンショット-2022-09-30-20.18.19-300x85.png" alt="rails_route_1" width="685" height="194" class="alignnone wp-image-1540" srcset="https://shungoblog.com/wp-content/uploads/2022/09/スクリーンショット-2022-09-30-20.18.19-300x85.png 300w, https://shungoblog.com/wp-content/uploads/2022/09/スクリーンショット-2022-09-30-20.18.19-1024x291.png 1024w, https://shungoblog.com/wp-content/uploads/2022/09/スクリーンショット-2022-09-30-20.18.19-768x218.png 768w, https://shungoblog.com/wp-content/uploads/2022/09/スクリーンショット-2022-09-30-20.18.19-1536x437.png 1536w, https://shungoblog.com/wp-content/uploads/2022/09/スクリーンショット-2022-09-30-20.18.19.png 1920w" sizes="(max-width: 685px) 100vw, 685px" /></p>
<h3><span id="toc7">複数形resources</span></h3>
<p><img loading="lazy" decoding="async" src="https://shungoblog.com/wp-content/uploads/2022/09/スクリーンショット-2022-09-30-20.18.31-300x140.png" alt="rails_route_2" width="684" height="319" class="alignnone wp-image-1541" srcset="https://shungoblog.com/wp-content/uploads/2022/09/スクリーンショット-2022-09-30-20.18.31-300x140.png 300w, https://shungoblog.com/wp-content/uploads/2022/09/スクリーンショット-2022-09-30-20.18.31-1024x476.png 1024w, https://shungoblog.com/wp-content/uploads/2022/09/スクリーンショット-2022-09-30-20.18.31-768x357.png 768w, https://shungoblog.com/wp-content/uploads/2022/09/スクリーンショット-2022-09-30-20.18.31-1536x714.png 1536w, https://shungoblog.com/wp-content/uploads/2022/09/スクリーンショット-2022-09-30-20.18.31.png 1920w" sizes="(max-width: 684px) 100vw, 684px" /></p><p>The post <a href="https://shungoblog.com/programming/rails_resource_resources.html">【Rails】resourceとresourcesの命名規則</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://shungoblog.com/programming/rails_resource_resources.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Rails】Sidekiqのperformを同期的に実行する</title>
		<link>https://shungoblog.com/programming/rails_sidekiq_execute_command.html</link>
					<comments>https://shungoblog.com/programming/rails_sidekiq_execute_command.html#respond</comments>
		
		<dc:creator><![CDATA[しゅんご]]></dc:creator>
		<pubDate>Wed, 31 Aug 2022 06:36:11 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[エンジニア]]></category>
		<guid isPermaLink="false">https://shungoblog.com/?p=1522</guid>

					<description><![CDATA[<p>目次 Sidekiqの実行コマンド同期的に実行する場合非同期的に実行する場合 Sidekiqの実行コマンド 下記のようなworkerを実行することを想定しています。 class SamplTaskWorker inclu [&#8230;]</p>
<p>The post <a href="https://shungoblog.com/programming/rails_sidekiq_execute_command.html">【Rails】Sidekiqのperformを同期的に実行する</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-16" checked><label class="toc-title" for="toc-checkbox-16">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Sidekiqの実行コマンド</a><ol><li><a href="#toc2" tabindex="0">同期的に実行する場合</a></li><li><a href="#toc3" tabindex="0">非同期的に実行する場合</a></li></ol></li></ol>
    </div>
  </div>

<h2><span id="toc1">Sidekiqの実行コマンド</span></h2>
<p>下記のようなworkerを実行することを想定しています。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-ruby" data-lang="Ruby"><code>class SamplTaskWorker
 include Sidekiq::Worker
 sidekiq_options retry: 5

 def perform()
    # 処理
  end
end</code></pre>
</div>
<p>&nbsp;</p>
<h3><span id="toc2">同期的に実行する場合</span></h3>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash"><code><span>$ SampleTaskWorker</span>.new.perform
</code></pre>
</div>
<p>&nbsp;</p>
<p>同期的には実行すると、下記のように途中でデバッグすることができます。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-ruby" data-lang="Ruby"><code>def perform()
  # 処理
  binding.pry
end</code></pre>
</div>
<h3><span id="toc3">非同期的に実行する場合</span></h3>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash"><code><span>$ SampleTaskWorker</span>.perform_async</code></pre>
</div><p>The post <a href="https://shungoblog.com/programming/rails_sidekiq_execute_command.html">【Rails】Sidekiqのperformを同期的に実行する</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://shungoblog.com/programming/rails_sidekiq_execute_command.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>DockerのMySQLコンテナにSequel proで接続する方法</title>
		<link>https://shungoblog.com/programming/docker-mysql-sequel-pro.html</link>
					<comments>https://shungoblog.com/programming/docker-mysql-sequel-pro.html#respond</comments>
		
		<dc:creator><![CDATA[しゅんご]]></dc:creator>
		<pubDate>Wed, 24 Aug 2022 04:09:33 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[エンジニア]]></category>
		<guid isPermaLink="false">https://shungoblog.com/?p=1490</guid>

					<description><![CDATA[<p>目次 DockerのコンテナにSequelに接続する設定docker-compose.ymlSequel ProSequelを使用せずにDockerのMySQLに接続する方法1. コンテナに入ってからMySQLに接続する [&#8230;]</p>
<p>The post <a href="https://shungoblog.com/programming/docker-mysql-sequel-pro.html">DockerのMySQLコンテナにSequel proで接続する方法</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-18" checked><label class="toc-title" for="toc-checkbox-18">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">DockerのコンテナにSequelに接続する設定</a><ol><li><a href="#toc2" tabindex="0">docker-compose.yml</a></li><li><a href="#toc3" tabindex="0">Sequel Pro</a></li></ol></li><li><a href="#toc4" tabindex="0">Sequelを使用せずにDockerのMySQLに接続する方法</a><ol><li><a href="#toc5" tabindex="0">1. コンテナに入ってからMySQLに接続する方法</a></li><li><a href="#toc6" tabindex="0">2. 直接コンテナ内のMySQLに接続する方法</a></li></ol></li></ol>
    </div>
  </div>

<h2><span id="toc1">DockerのコンテナにSequelに接続する設定</span></h2>
<h3><span id="toc2">docker-compose.yml</span></h3>
<p>Dockerで作成するコンテナは下記の通りです。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-yaml" data-lang="docker-compose.yml"><code>version: '3'
services:
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_DATABASE: development
      MYSQL_PASSWORD: password
      MYSQL_ROOT_PASSWORD: password
    # 文字化け対応
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    ports:
     - 3308:3306</code></pre>
</div>
<p>下記コマンドでコンテナが起動します。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash"><code>$ docker-compose up</code></pre>
</div>
<p>&nbsp;</p>
<h3><span id="toc3">Sequel Pro</span></h3>
<p>下記の情報を入力して、<strong>「接続をテスト」</strong>を押します。</p>
<p>問題がなければ、「接続が成功しました」というメッセージが表示されます。</p>
<p>これで<strong>「接続」</strong>を押すと、無事にDockerのMySQLにSequelで接続できます。</p>
<p>&nbsp;</p>
<div class="scrollable-table"><table style="border-collapse: collapse; width: 100%;">
<tbody>
<tr>
<td style="width: 50%;"><strong>名前</strong></td>
<td style="width: 50%;"><strong>任意の名前</strong></td>
</tr>
<tr>
<td style="width: 50%;">ホスト</td>
<td style="width: 50%;">127.0.0.1</td>
</tr>
<tr>
<td style="width: 50%;">ユーザ名</td>
<td style="width: 50%;">root</td>
</tr>
<tr>
<td style="width: 50%;">パスワード</td>
<td style="width: 50%;">password</td>
</tr>
<tr>
<td style="width: 50%;">データベース</td>
<td style="width: 50%;">development</td>
</tr>
<tr>
<td style="width: 50%;">ポート</td>
<td style="width: 50%;">3308</td>
</tr>
</tbody>
</table></div>
<p><img loading="lazy" decoding="async" src="https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-23-21.12.56-300x257.png" alt="docker-mysql-sequel-1" width="541" height="463" class="wp-image-1501 aligncenter" srcset="https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-23-21.12.56-300x257.png 300w, https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-23-21.12.56-768x659.png 768w, https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-23-21.12.56.png 898w" sizes="(max-width: 541px) 100vw, 541px" /></p>
<p>よく使用するDBであればわかりやすい名前に変更して、「お気に入りに追加」しておくと、毎回入力する手間が省けます。</p>
<p>&nbsp;</p>
<h2><span id="toc4">Sequelを使用せずにDockerのMySQLに接続する方法</span></h2>
<h3><span id="toc5">1. コンテナに入ってからMySQLに接続する方法</span></h3>
<p>まずはMySQLのコンテナに入ります。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash"><code><span>$ docker exec -it &lt;MySQLのコンテナ名&gt; bash</span></code></pre>
</div>
<p>今回の場合、「docker-compose.yml」の「services」で「mysql」という名前のコンテナを作成しているので、下記でMySQLのコンテナに入ることができます。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash"><code><span>$ docker exec -it mysql bash</span></code></pre>
</div>
<p>&nbsp;</p>
<p>コンテナに入ったらMySQLのコマンドでDBに接続できます。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash"><code><span># mysql -u root -ppassword development</span></code></pre>
</div>
<p>&nbsp;</p>
<h3><span id="toc6">2. 直接コンテナ内のMySQLに接続する方法</span></h3>
<p>コンテナに入らずに直接コンテナ内のDBに接続する場合は下記のコマンドで接続可能です。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash"><code>$ mysql -u &lt;ユーザー名&gt; -p&lt;パスワード&gt; -h &lt;ホスト名&gt; -P &lt;ポート名&gt; &lt;DB名&gt;</code></pre>
</div>
<p>&nbsp;</p>
<p>今回のコンテナ内のDBには下記のコマンドで接続できます。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash"><code>$ mysql -u root -ppawwrod -h 127.0.0.1 -P 3308 development</code></pre>
</div><p>The post <a href="https://shungoblog.com/programming/docker-mysql-sequel-pro.html">DockerのMySQLコンテナにSequel proで接続する方法</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://shungoblog.com/programming/docker-mysql-sequel-pro.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Git】リモートブランチをローカルにcheckoutする方法</title>
		<link>https://shungoblog.com/programming/git-remote-branch-checkout.html</link>
					<comments>https://shungoblog.com/programming/git-remote-branch-checkout.html#respond</comments>
		
		<dc:creator><![CDATA[しゅんご]]></dc:creator>
		<pubDate>Sun, 31 Jul 2022 00:58:17 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[エンジニア]]></category>
		<guid isPermaLink="false">https://shungoblog.com/?p=1453</guid>

					<description><![CDATA[<p>チーム開発していると、ローカルにないリモートブランチにcheckoutするときが多くあります。 そのときの手順をご紹介します。 目次 リモートブランチをローカルにcheckoutする方法リモートからfetchするローカル [&#8230;]</p>
<p>The post <a href="https://shungoblog.com/programming/git-remote-branch-checkout.html">【Git】リモートブランチをローカルにcheckoutする方法</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>チーム開発していると、ローカルにないリモートブランチにcheckoutするときが多くあります。</p>
<p>そのときの手順をご紹介します。</p>

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-20" checked><label class="toc-title" for="toc-checkbox-20">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">リモートブランチをローカルにcheckoutする方法</a><ol><li><a href="#toc2" tabindex="0">リモートからfetchする</a></li><li><a href="#toc3" tabindex="0">ローカルにcheckoutする</a></li></ol></li></ol>
    </div>
  </div>

<h2><span id="toc1">リモートブランチをローカルにcheckoutする方法</span></h2>
<h3><span id="toc2">リモートからfetchする</span></h3>
<p><span>まずはfetchして、最新の状態を取得します。</span></p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-git" data-lang="Git"><code>% git fetch</code></pre>
</div>
<p>※ 下記コマンドでリモートブランチ一覧を確認できます。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-git" data-lang="Git"><code>% git branch -r</code></pre>
</div>
<p>&nbsp;</p>
<h3><span id="toc3">ローカルにcheckoutする</span></h3>
<p>下記コマンドでリモートのブランチをローカルにcheckoutできます。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-git" data-lang="Git"><code>% git checkout -b &lt;<span>ローカルでの表示ブランチ名</span>&gt; origin/&lt;リモートの<span>ブランチ名</span>&gt;</code></pre>
</div>
<p>ローカルでのブランチ名は任意ですが、リモートと同じ名前にするのが自然です。</p>
<p>例えば、リモートにあるdevelopブランチをローカルにcheckoutする場合は、下記のコマンドになります。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-git" data-lang="Git"><code>% git checkout -b develop origin/develop</code></pre>
</div><p>The post <a href="https://shungoblog.com/programming/git-remote-branch-checkout.html">【Git】リモートブランチをローカルにcheckoutする方法</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://shungoblog.com/programming/git-remote-branch-checkout.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
