tag:crieit.net,2005:https://crieit.net/feed Crieitの最近の投稿 - Crieit Crieitの最近の投稿 2021-04-23T15:32:31+09:00 https://crieit.net/feed tag:crieit.net,2005:PublicArticle/16992 2021-04-23T15:32:31+09:00 2021-04-23T15:32:31+09:00 https://crieit.net/posts/IP-ROUTE IP ROUTEによるスタティックルート設定 <h1 id="スタティックルートの設定"><a href="#%E3%82%B9%E3%82%BF%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%E3%83%AB%E3%83%BC%E3%83%88%E3%81%AE%E8%A8%AD%E5%AE%9A">スタティックルートの設定</a></h1> <p>とあるパケットトレーサーの課題を行った。</p> <p>その課題には、「スタティックルーティングを使ってPC間で通信ができるようにしてください。」とあった。</p> <p>PCの間には、ルーターが4つ。</p> <p>PC = 172.16~<br /> ルーター = 10.0.~</p> <p>とあった。</p> <p>このPC間の通信を行えるようにするには、あいだにある4つのルーターが、延長線上の経路を知る必要がある。</p> <p>PC1 - RT1 - RT2 -RT3 - RT4 - PC2</p> <p>この順番で作業を行っていくのだが、RTたちは、例えばRT1はRT4のことを知らない。隣同士であれば問題ないが、その一個隣、お向かいさんのことは知っているはずがない。</p> <p>PC1からPC2へと行くには、間のルーターたちの経路を知らなくては無事にたどり着けないのだ。</p> <p>地図を持たないものが、やみくもに目的地へと行けるわけがないのだ。</p> <hr /> <p>私はこの時、この間のルーターたちに互いが周知の中であれば仲良くなるだろうと思っていた。</p> <p>つまり、ルーター一台一台に他のルーターの情報を植え付けたのだ。</p> <p>そして、それは間違いだった。</p> <hr /> <p>周知の中になってpingは通るようになった、それも全てのアドレスがリプライありだ。</p> <p>だが課題としては受け入れなれなかった。</p> <p>誤字はない、ケーブルも正しい、pingは通る、、何が違う?</p> <p>結局、クリアした方に聞いたところ、私のip routeへの認識が間違っていたのだ。</p> <p>周知の中にするべきではない、端っこのPCにいたる方法だけを知っていればいいと。</p> <p>まるで水面下にて行われる交友関係、意外とあのルーターとPCは知り合いなのよって?</p> <p><strong>怖いですね</strong></p> <hr /> <p>ip routeの仕組みは、ざっくり言うと、<strong>目的地に至るまでの最初の道を教える能力</strong>ということが分かった。</p> <p>最初に入力するアドレスがPC(目的地)のどちらか、</p> <p>この時、第4オクテットは0とする。</p> <p>そのあとにその目的地のサブネットマスク</p> <p>最後に、その目的地へと至る際の最初の町、ポートのアドレスを素直に入力する。</p> <p>例)<br /> ip route 172.16.〇.〇 255.255.〇.〇. 10.0.2.〇.〇.</p> <p>あとは、このような設定を他のルーターにもすればいい。</p> <p>もっとも、<strong>必要な</strong>モノだけだ。</p> TFI tag:crieit.net,2005:PublicArticle/16990 2021-04-23T12:05:32+09:00 2021-04-23T12:06:10+09:00 https://crieit.net/posts/d3f9cff6706e957dd211d62ab7ec8f99 パケットトレーサーメモ <h1 id="簡易的まとめ"><a href="#%E7%B0%A1%E6%98%93%E7%9A%84%E3%81%BE%E3%81%A8%E3%82%81">簡易的まとめ</a></h1> <ol> <li>PC、ルータなどを出せと言われた数全部出す</li> <li>MDI、MDI-Xを見極めコードつける</li> <li>PCのIPアドレス、サブネットマスク、デフォルトゲートウェイ入力</li> <li>ルータの中にIPアドレスを入力(インターフェースへの情報入力)</li> <li>直接つながれていない部分をルータのルーティングテーブルに入力</li> <li>コマンドプロンプトにてpingコマンドを実行して帰ってくるか確かめる</li> </ol> <h1 id="モード変更"><a href="#%E3%83%A2%E3%83%BC%E3%83%89%E5%A4%89%E6%9B%B4">モード変更</a></h1> <p>ユーザーモード(>)<br /> ↓<br /> 特権モードenable(#)<br /> ↓<br /> グローバルコンフィギュレーションモードconfigure terminal(config)<br /> ↓      |<br /> インターフェースコンフィギュレーションモードinterface (インタフェース名)fastEthernetとか(config-if)      |<br />        ↓<br /> ルータコンフィギュレーションモード(まだ使ったことない)</p> <p>exitで一個前のモードに戻る。<br /> endで最初の状態に戻る</p> <h1 id="モードごとのできること"><a href="#%E3%83%A2%E3%83%BC%E3%83%89%E3%81%94%E3%81%A8%E3%81%AE%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%93%E3%81%A8">モードごとのできること</a></h1> <h2 id="特権モード(名前の横に#)"><a href="#%E7%89%B9%E6%A8%A9%E3%83%A2%E3%83%BC%E3%83%89%EF%BC%88%E5%90%8D%E5%89%8D%E3%81%AE%E6%A8%AA%E3%81%AB%EF%BC%83%EF%BC%89">特権モード(名前の横に#)</a></h2> <p><strong>基本的に何かを表示して確認するモード</strong></p> <h3 id="コマンド"><a href="#%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89">コマンド</a></h3> <p>conf t:グローバルコンフィギュレーションモードに遷移<br /> show ip interface brief:インターフェースの名前と状態の確認<br /> show ip route :ルートテーブル確認<br /> show running-config:起動中のコンフィグが表示される<br /> show startup-config:起動時のコンフィグ表示</p> <h2 id="グローバルコンフィギュレーションモード(名前の横にconfig)"><a href="#%E3%82%B0%E3%83%AD%E3%83%BC%E3%83%90%E3%83%AB%E3%82%B3%E3%83%B3%E3%83%95%E3%82%A3%E3%82%AE%E3%83%A5%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%A2%E3%83%BC%E3%83%89%EF%BC%88%E5%90%8D%E5%89%8D%E3%81%AE%E6%A8%AA%E3%81%ABconfig%EF%BC%89">グローバルコンフィギュレーションモード(名前の横にconfig)</a></h2> <p><strong>デバイス全体目線での設定変更できるモード</strong></p> <h3 id="コマンド"><a href="#%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89">コマンド</a></h3> <p>inteface インターフェース名(例:fastEthernet 0/0):インターフェースコンフィギュレーションモードに遷移<br /> ip route (最終目的地のIPアドレス 最終目的地のサブネットマスク 最終目的地に行く際に最初に通る経由点のIPアドレス):ルートテーブルの追加(スタティックルーティングでのルーティング)</p> <h2 id="インターフェースコンフィギュレーションモード(名前の横にconfig-if)"><a href="#%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%B3%E3%83%95%E3%82%A3%E3%82%AE%E3%83%A5%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%A2%E3%83%BC%E3%83%89%EF%BC%88%E5%90%8D%E5%89%8D%E3%81%AE%E6%A8%AA%E3%81%ABconfig-if%EF%BC%89">インターフェースコンフィギュレーションモード(名前の横にconfig-if)</a></h2> <p><strong>ルータ等インターフェースに設定ができるモード</strong></p> <h3 id="コマンド"><a href="#%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89">コマンド</a></h3> <p>ip address IPアドレス サブネットマスク:IPアドレスが設定できる<br /> no shutdown:インターフェースを有効化する</p> tobara tag:crieit.net,2005:PublicArticle/16989 2021-04-22T23:13:13+09:00 2021-04-22T23:15:18+09:00 https://crieit.net/posts/d51c348b6c4ce585f6bc31d6c6c56277 初投稿! <p>これから駆け出しエンジニアとして、セキスペを目標に、技術やトレンドを通して、能動的に学んでいけたらいいなぁ~、なんて考えています!<br /> 文章を書くのは得意ではないので読み辛い点もあるかと思いますが、アウトプットの場として自分気ままに書いていきます!<br /> それでは、よろしくお願いします!</p> go tag:crieit.net,2005:PublicArticle/16988 2021-04-22T21:05:49+09:00 2021-04-22T21:06:07+09:00 https://crieit.net/posts/NW-NAT 【研修振り返り】NW研修~NAT,URL,DNS~ <h2 id="NAT"><a href="#NAT">NAT</a></h2> <p>NATとは(Network Address Translation)の略でインターネットに接続するためにプライベートIPアドレスをグローバルIPアドレスに変換しています。</p> <h2 id="URLとDNS"><a href="#URL%E3%81%A8DNS">URLとDNS</a></h2> <p>よく耳にするURLは(Uniform Resource Locator)の略でHTMLファイルの場所を示しています。<br /> 人間にわかりやすいようにこの形になっていますがコンピュータは0と1しかわかりません、そのためにURLとIPアドレスを<br /> 変換する役割を担っているのがDNS(Domain Name System)です。</p> MSK tag:crieit.net,2005:PublicArticle/16987 2021-04-22T20:12:14+09:00 2021-04-22T20:12:14+09:00 https://crieit.net/posts/Windows-R Windowsキー+Rでファイル名を指定して実行のファイル名メモ <h4 id="cmd→コマンドプロンプト起動(ctrl+shift+enterで管理者として起動)"><a href="#cmd%E2%86%92%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88%E8%B5%B7%E5%8B%95%EF%BC%88ctrl%2Bshift%2Benter%E3%81%A7%E7%AE%A1%E7%90%86%E8%80%85%E3%81%A8%E3%81%97%E3%81%A6%E8%B5%B7%E5%8B%95%EF%BC%89">cmd→コマンドプロンプト起動(ctrl+shift+enterで管理者として起動)</a></h4> <h4 id="ncpa.cpl→ネットワーク接続確認画面の表示"><a href="#ncpa.cpl%E2%86%92%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E6%8E%A5%E7%B6%9A%E7%A2%BA%E8%AA%8D%E7%94%BB%E9%9D%A2%E3%81%AE%E8%A1%A8%E7%A4%BA">ncpa.cpl→ネットワーク接続確認画面の表示</a></h4> tobara tag:crieit.net,2005:PublicArticle/16986 2021-04-22T20:12:10+09:00 2021-04-23T10:59:23+09:00 https://crieit.net/posts/111816d62f18fa3319b7e9b409aa16d0 コマンドプロンプトのコマンドメモ <h4 id="ipconfig"><a href="#ipconfig">ipconfig</a></h4> <p>→接続されているIPアドレス情報が確認できる</p> <h4 id="ipconfig/all"><a href="#ipconfig%2Fall">ipconfig/all</a></h4> <p>→接続されているIPアドレスの詳細情報が確認できる。<br /> MACアドレスも見れる</p> <h4 id="nslookup (ドメイン名)"><a href="#nslookup%E3%80%80%EF%BC%88%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E5%90%8D%EF%BC%89">nslookup (ドメイン名)</a></h4> <p>→手動で名前解決(ドメイン名からIPアドレス取得)ができる</p> <h4 id="ping(IPアドレス)"><a href="#ping%28IP%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%29">ping(IPアドレス)</a></h4> <p>→ちゃんとデータの送受信ができるかチェック</p> <h4 id="tracert (IPアドレス)"><a href="#tracert+%28IP%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%29">tracert (IPアドレス)</a></h4> <p>→目的のIPアドレスまでちゃんと接続できているかの確認ができる。もしちゃんとできてなくても途中までのルートが出てくるのでどこからダメなのかもわかるようになっている。</p> <h4 id="netstat (-n)"><a href="#netstat+%28-n%29">netstat (-n)</a></h4> <p>→使っているポート番号の表示<br /> プロトコル ローカルアドレス 外部アドレス 状態<br />              ↓<br /> 使っているプロトコル どこから どこまで  接続できているか否か</p> tobara tag:crieit.net,2005:PublicArticle/16985 2021-04-22T19:23:45+09:00 2021-04-22T19:23:45+09:00 https://crieit.net/posts/ruby-minitest-runner テストメソッドを1つだけ実行するための minitest_runner.rb というスクリプトを書いてみた <p><a target="_blank" rel="nofollow noopener" href="https://github.com/seattlerb/minitest">minitest</a> では次のように <code>-n</code> オプションを使うことでテストメソッド(テストケース)1個だけを実行することができます。</p> <pre><code>ruby test/test_foo.rb -n {メソッド名} </code></pre> <p>このときファイル名はシェルの補完が効くのでスッと入力できますが、メソッド名はシェルの補完が効きません。</p> <p>で、手入力したり、エディタで開いているテストコードやファイルを grep した結果からコピペしてくることになるのですが、いずれにしてもめんどくさく……。</p> <p>というわけでやっつけスクリプトを書いてみました。</p> <h1 id="使い方"><a href="#%E4%BD%BF%E3%81%84%E6%96%B9">使い方</a></h1> <ul> <li>(1) プロジェクトのルートディレクトリで <code>ruby minitest_runner.rb</code> を実行する</li> <li>(2) テストファイルが番号付きで列挙されるので、番号を入力して選択</li> <li>(3) 選択したファイル内のテストメソッドが番号付きで列挙されるので、番号を入力して選択</li> <li>(4) 選択したテストメソッドが実行される</li> </ul> <p>というのが基本ですが、</p> <pre><code>ruby minitest_runner.rb {ファイルの番号} {メソッドの番号} </code></pre> <p>のように引数でファイルとメソッドの番号を指定した場合は非対話的に実行されるようにしています。すでに番号が分かっていて何度も繰り返したい場合はこれで。</p> <h1 id="実行の例"><a href="#%E5%AE%9F%E8%A1%8C%E3%81%AE%E4%BE%8B">実行の例</a></h1> <p>例として <a target="_blank" rel="nofollow noopener" href="https://github.com/ruby/rake">Rake</a> でやってみたもの。</p> <pre><code>$ ruby minitest_runner.rb ---- files: (0) . / test / test_private_reader.rb (0) (1) . / test / test_rake.rb (1) (2) . / test / test_rake_application.rb (2) ... 長いので途中省略 ... (43) . / test / test_rake_win32.rb (43) (44) . / test / test_thread_history_display.rb (44) (45) . / test / test_trace_output.rb (45) Select item: 44 ... 番号を入力する ---- methods: (0) test_banner (0) (1) test_item_queued (1) (2) test_item_dequeued (2) (3) test_multiple_items (3) (4) test_waiting (4) (5) test_continue (5) (6) test_thread_deleted (6) (7) test_thread_created (7) Select item: 6 ... 番号を入力する ---- bundle exec ruby ./test/test_thread_history_display.rb -n test_thread_deleted ... 実際に実行されるコマンド ---- Run options: -n test_thread_deleted --seed 62390 # Running: . Finished in 0.001000s, 999.5052 runs/s, 1999.0104 assertions/s. 1 runs, 2 assertions, 0 failures, 0 errors, 0 skips </code></pre> <h1 id="ソース"><a href="#%E3%82%BD%E3%83%BC%E3%82%B9">ソース</a></h1> <p>10分くらいで適当に書いたものなのでプロジェクトによっては動かせなかったりすると思いますが、必要になったらその都度いじればいいかなと。</p> <pre><code class="ruby"># minitest_runner.rb def select_item(title, items) puts "----" puts "#{title}:" # 候補一覧を表示 items .map { |item| item.gsub("/", " / ") } # パスの区切りを見やすく .each_with_index { |item, i| puts " (#{i}) #{item} (#{i})" } # ユーザの入力を受け取る puts "" print "Select item: " input = $stdin.gets raise if /\d+/ !~ input items[input.to_i] end def select_file(idx) files = Dir.glob("./test/**/test_*.rb").sort if idx files[idx.to_i] else select_item("files", files) end end def select_method(file, idx) method_lines = File.read(file).each_line .select { |line| /def test_.+/ =~ line } .map { |line| line.sub(/def /, "").strip } method_line = if idx method_lines[idx.to_i] else select_item("methods", method_lines) end md = method_line.match(/(test_[a-z0-9_]+)/) md[1] end # -------------------------------- file_idx, method_idx = ARGV file = select_file(file_idx) method = select_method(file, method_idx) cmd = "" cmd << "bundle exec " if File.exist?("./Gemfile") cmd << "ruby #{file} -n #{method}" puts "----" puts cmd puts "----" system cmd exit $?.exitstatus unless $?.success? </code></pre> <h1 id="Ruby関連で他に書いたもの"><a href="#Ruby%E9%96%A2%E9%80%A3%E3%81%A7%E4%BB%96%E3%81%AB%E6%9B%B8%E3%81%84%E3%81%9F%E3%82%82%E3%81%AE">Ruby関連で他に書いたもの</a></h1> <p><a target="_blank" rel="nofollow noopener" href="https://memo88.hatenablog.com/archive/category/Ruby">https://memo88.hatenablog.com/archive/category/Ruby</a></p> sonota88 tag:crieit.net,2005:PublicArticle/16981 2021-04-22T14:31:19+09:00 2021-04-22T22:32:21+09:00 https://crieit.net/posts/IP-60810a2784c99 IPアドレス基礎 <h1 id="IPアドレスとは"><a href="#IP%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%81%A8%E3%81%AF">IPアドレスとは</a></h1> <p><strong>インターネットの中でいう住所</strong><br /> IPv4とIPv6の2種類がありIPv4が古くて数が少なくIPv6は新しくて数に余裕がある。<br /> IPv4では2進数の32ビット(8ビットで1セット×4)で表示される。(1セットのことを1オクテットという)<br /> 2進数の計算方法は2で繰り上がるので1111 1111だった場合右から順に1+2+4+8+16+32+64+128=255となる<br /> 1110 1100だと0のところはないものと思って右から順に4+8+32+64+128=236となる<br /> この計算が4オクテット分あるイメージ</p> <h1 id="グローバルIPアドレスとプライベートIPアドレス"><a href="#%E3%82%B0%E3%83%AD%E3%83%BC%E3%83%90%E3%83%ABIP%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%81%A8%E3%83%97%E3%83%A9%E3%82%A4%E3%83%99%E3%83%BC%E3%83%88IP%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9">グローバルIPアドレスとプライベートIPアドレス</a></h1> <h2 id="グローバルIPアドレス"><a href="#%E3%82%B0%E3%83%AD%E3%83%BC%E3%83%90%E3%83%ABIP%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9">グローバルIPアドレス</a></h2> <ol> <li>これがないとインターネットに接続ができない(YOUTUBEとかが見れない)。</li> <li>世界的に管理がされている。</li> <li>プロバイダ等の契約が必要</li> </ol> <h2 id="プライベートIPアドレス"><a href="#%E3%83%97%E3%83%A9%E3%82%A4%E3%83%99%E3%83%BC%E3%83%88IP%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9">プライベートIPアドレス</a></h2> <p>1.自分が管理できるIPアドレス<br /> 2.使用できる範囲が決まっている</p> <h3 id="範囲"><a href="#%E7%AF%84%E5%9B%B2">範囲</a></h3> <p>10.0.0.0〜10.255.255.255</p> <p>172.16.0.0〜172.31.255.255</p> <p>192.168.0.0〜192.168.255.255</p> <h1 id="NAT"><a href="#NAT">NAT</a></h1> <p><strong>プライベートIPアドレスをグローバルIPアドレスに変換してくれる</strong><br /> LANケーブルでいっぱいつながってるPC達はそれぞれグローバルIPアドレスを持ってるわけではなくそのPCが持っているプライベートIPアドレスを<strong>NAT</strong>が変換してくれているおかげでインターネットにつながるようになっている。</p> <h1 id="DNS"><a href="#DNS">DNS</a></h1> <p><strong>ドメインネーム(yahoo.co.jpみたいなやつ)からIPアドレスを割り振ってくれる</strong></p> <h1 id="構造"><a href="#%E6%A7%8B%E9%80%A0">構造</a></h1> <p><strong>ネットワーク部</strong>(どのネットワークに所属しているのか)と<strong>ホスト部</strong>(どの端末か)の二つで構成される<br /> どこからどこまではネットワークでどこからどこまでがホスト部を見極めるには<strong>サブネットマスク</strong>、または<strong>CIDR</strong>(サイダー)というものを見て判断する</p> <h2 id="サブネットマスクで判断する場合"><a href="#%E3%82%B5%E3%83%96%E3%83%8D%E3%83%83%E3%83%88%E3%83%9E%E3%82%B9%E3%82%AF%E3%81%A7%E5%88%A4%E6%96%AD%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88">サブネットマスクで判断する場合</a></h2> <p>大体10進数の255.255.255.0といった表記になっているがこれより2進数に直した方が視覚的にわかりやすいので直してみる。<br /> <strong>255 . 255 . 255 . 0<br /> ↓変換<br /> 11111111 11111111 11111111 00000000<br />    [ネットワーク部]   [ホスト部]</strong><br /> この場合オクテット1~3がどのネットワークに所属してるかを識別する部分<br /> オクテット4でどの端末かを識別する部分となる</p> <h2 id="CIDRで判断する場合"><a href="#CIDR%E3%81%A7%E5%88%A4%E6%96%AD%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88">CIDRで判断する場合</a></h2> <p>CIDRの場合<strong>IPアドレスの後ろに/24といった/の後に数字が書かれている(プレフィックス長)</strong>。<br /> この24という数字がネットワーク部、つまり<strong>左から24個の数字までがネットワーク部。それ以外がホスト部である</strong>ことを示している。</p> <h1 id="特殊なホスト部の値"><a href="#%E7%89%B9%E6%AE%8A%E3%81%AA%E3%83%9B%E3%82%B9%E3%83%88%E9%83%A8%E3%81%AE%E5%80%A4">特殊なホスト部の値</a></h1> <h2 id="ネットワークアドレス"><a href="#%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9">ネットワークアドレス</a></h2> <p><strong>ホスト部がすべて0の場合ネットワークアドレスと呼ばれる。</strong><br /> ネットワークそのものを表す際に使用。</p> <h2 id="ブロードキャストアドレス"><a href="#%E3%83%96%E3%83%AD%E3%83%BC%E3%83%89%E3%82%AD%E3%83%A3%E3%82%B9%E3%83%88%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9">ブロードキャストアドレス</a></h2> <p><strong>ホスト部がすべて1の場合ブロードキャストアドレスと呼ばれる。</strong><br /> そのネットワークに属しているすべての端末にデータを送信する際に使用</p> <h3 id="ブロードキャスト通信とそれ以外の通信方法"><a href="#%E3%83%96%E3%83%AD%E3%83%BC%E3%83%89%E3%82%AD%E3%83%A3%E3%82%B9%E3%83%88%E9%80%9A%E4%BF%A1%E3%81%A8%E3%81%9D%E3%82%8C%E4%BB%A5%E5%A4%96%E3%81%AE%E9%80%9A%E4%BF%A1%E6%96%B9%E6%B3%95">ブロードキャスト通信とそれ以外の通信方法</a></h3> <p><strong>1.ブロードキャスト通信</strong><br /> 一つのネットワーク内にあるすべてのホストにデータを送信する通信<br /> <strong>1-2マルチキャスト通信</strong><br /> 一つのマルチキャストグループに属しているすべてのホストにデータを送信する通信<br /> マルチキャストグループは同じネットワークとは限らないのでブロードキャスト通信とは少し違う</p> <p><strong>2.ユニキャスト通信</strong><br /> 特定のアドレスにデータを送信する通信</p> tobara tag:crieit.net,2005:PublicArticle/16980 2021-04-22T13:33:58+09:00 2021-04-23T09:31:27+09:00 https://crieit.net/posts/Raspberry-Pi-APRS-I-GATE-Raspberry-Pi-USB 【Raspberry Pi】APRS I-GATE局をRaspberry PiとUSBワンセグチューナーで構築する その1【アマチュア無線】 <h1 id="APRSとは?"><a href="#APRS%E3%81%A8%E3%81%AF%EF%BC%9F">APRSとは?</a></h1> <p>Automatic Position Reporting Systemの略。</p> <p>最近マイブームとなっているAPRS。<br /> 名称の通り自動的に一定間隔で位置情報を送信してくれます。<br /> アマチュア無線の主に144MHz帯が使われていて1200bpsは144.66MHz、9600bpsは144.64MHzを使うという慣習があります。</p> <h1 id="I-GATE局について"><a href="#I-GATE%E5%B1%80%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6">I-GATE局について</a></h1> <p>この位置情報をインターネット上に流して<a target="_blank" rel="nofollow noopener" href="https://ja.aprs.fi/#!lat=35.9489&lng=139.6444">googleマップに表示させることができます。</a><br /> ネットと無線のインターフェイスの役割を果たすのがI-GATE局で、ほかにもパケットを中継するデジピーターというものもあります。</p> <p>従来はWindows PCに専用のソフトを入れて無線機や受信機に繋ぐ必要があったのですが<br /> この方法では消費電力が大きく場所も取りPCも無線機も高価です。<br /> そこで比較的安価で低消費電力なRaspberry PiとUSBワンセグチューナーを利用しI-GATE局を構築します。</p> <h1 id="用意するもの"><a href="#%E7%94%A8%E6%84%8F%E3%81%99%E3%82%8B%E3%82%82%E3%81%AE">用意するもの</a></h1> <ul> <li>Raspberry pi       なんでもいいですzeroでも動きます。</li> <li>microSDカード      容量はそんなに大きくなくていいです。</li> <li>ACアダプター      ちゃんと2A以上のものを使いましょう。</li> <li>USBワンセグチューナー RTL2832かそれと同等なチップが積んであるもの</li> <li>延長USBケーブル    なくてもいいですがラズパイにチューナー直刺しだと<br />              精神衛生上よくないので気になる方にはお勧めです。<br /> <a href="https://crieit.now.sh/upload_images/1d3fa3a1adac65d1080698a43b2fd1d46080e04d8c022.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1d3fa3a1adac65d1080698a43b2fd1d46080e04d8c022.jpg?mw=700" alt="SDR" /></a><br /> ↑ワンセグチューナーと同じチップを積み無線受信用にカスタマイズされたUSBドングル。</li> </ul> <h1 id="ソフトウェアのインストール"><a href="#%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">ソフトウェアのインストール</a></h1> <h2 id="rtl_sdrのインストール"><a href="#rtl_sdr%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">rtl_sdrのインストール</a></h2> <p>Raspberry Piのセットアップはほかのサイトを見ていただくとしてこのページでは<br /> ソフトウェアのインストールから説明します。</p> <p>まずUSBワンセグチューナーを受信機として動作させるためにrtl_sdrというソフトを入れます。</p> <pre><code class="sh">sudo apt-get install rtl_sdr </code></pre> <p>正しくインストールできたかテストするためにFM放送を聞いてみましょう。<br /> TOKYO FM 80.0MHzを受信する場合。</p> <pre><code class="sh"> rtl_fm -M wbfm -f 80000000 -g 42 | aplay -r 32k -f S16_LE -t raw -c 1 </code></pre> <p>これでラジオが流れてくればインストールは成功です。</p> <h2 id="DireWolfのインストール"><a href="#DireWolf%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">DireWolfのインストール</a></h2> <p>次にAPRS信号の復調とパケットの転送を行うソフトをインストールします。</p> <pre><code class="sh"> sudo apt-get install direwolf </code></pre> <h1 id="次回予告"><a href="#%E6%AC%A1%E5%9B%9E%E4%BA%88%E5%91%8A">次回予告</a></h1> <p>今回はいったんここまで。<del>やる気の糸が切れた</del><br /> 次回はDire Wolfの設定とラズパイを起動したときにDire Wolfとrtl_sdrが自動起動するようにします。</p> MSK tag:crieit.net,2005:PublicArticle/16978 2021-04-22T11:48:02+09:00 2021-04-22T11:48:38+09:00 https://crieit.net/posts/Markdown-6080e3e2b3607 Markdown練習2 <h1 id="CentOS7にWebサーバーをインストールしよう"><a href="#CentOS7%E3%81%ABWeb%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%82%88%E3%81%86">CentOS7にWebサーバーをインストールしよう</a></h1> <p>CentOS7に <strong>Webサーバ(Apache)</strong> をインストールし、テストWebページを公開してみよう</p> <hr /> <hr /> <h2 id="インストール手順"><a href="#%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E6%89%8B%E9%A0%86">インストール手順</a></h2> <hr /> <ol> <li>Apache(Webサーバソフト)をインストールする</li> </ol> <pre><code>$ sudo yum -y install httpd </code></pre> <ol start="2"> <li>Apache(Webサーバソフト)を起動する</li> </ol> <pre><code>$ sudo systemctl start httpd </code></pre> <ol start="3"> <li>Apache(Webサーバソフト)の起動状態を確認する</li> </ol> <pre><code>$ sudo systemctl atatus httpd </code></pre> <p><em>出力結果に <strong>Active:active(running)</strong> が表示されていれば、正常に起動しています</em></p> Yso tag:crieit.net,2005:PublicArticle/16977 2021-04-22T11:28:36+09:00 2021-04-22T11:28:36+09:00 https://crieit.net/posts/LAN-6080df54d8ded LANケーブル基礎 <h1 id="LANケーブルとは"><a href="#LAN%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB%E3%81%A8%E3%81%AF">LANケーブルとは</a></h1> <p>LANケーブルは簡単に言うと「ネットワークを作る際の架け橋となる部分」である。<br /> PCとPC、PCとネットワーク機器を接続する際に使われる。<br /> 特徴は<br /> 1.8本の銅線が入っている<br /> 2.銅線は一本一本色分けがされている<br /> 3.繋がっているかどうかはリンクランプで確認が取れる</p> <h1 id="ストレートケーブルとクロスケーブル"><a href="#%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%83%88%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB%E3%81%A8%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB">ストレートケーブルとクロスケーブル</a></h1> <p>LANケーブルには長さや断線のしにくさなどの違いを抜いた大々的な種類分けとしてストレートケーブルとクロスケーブルがある。</p> <h1 id="違い、特徴"><a href="#%E9%81%95%E3%81%84%E3%80%81%E7%89%B9%E5%BE%B4">違い、特徴</a></h1> <h2 id="ストレートケーブル"><a href="#%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%83%88%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB">ストレートケーブル</a></h2> <p>1.色の並びが変わることなく同じ極同士でつながるようになっている<br /> 2.MDIとMDI-Xを接続するときに使う</p> <h2 id="クロスケーブル"><a href="#%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB">クロスケーブル</a></h2> <p>1.1番目⇔3番目、2番目⇔6番目が逆転している<br /> 2.同じ規格のLANポート同士を接続するときに使う(MDIとMDI、MDI-XとMDI-X)</p> <p>同クロ違スト</p> tobara tag:crieit.net,2005:PublicArticle/16976 2021-04-22T11:14:14+09:00 2021-04-22T11:14:14+09:00 https://crieit.net/posts/MDI-MDI-X MDIとMDI-X基礎 <h1 id="MDI、MDI-Xとは?"><a href="#MDI%E3%80%81MDI-X%E3%81%A8%E3%81%AF%3F">MDI、MDI-Xとは?</a></h1> <p>簡単に言うとLANポート(LANケーブルの差込口)の規格の種類である<br /> それぞれ機器によって少し違うらしい<br /> 送信のことをTX、受信のことをRXと書く</p> <h2 id="MDI"><a href="#MDI">MDI</a></h2> <p><strong>ルータ</strong>、<strong>PC</strong>の規格が該当する<br /> 1,2番が送信<br /> 3,6番が受信</p> <h2 id="MDI-X"><a href="#MDI-X">MDI-X</a></h2> <p><strong>スイッチ</strong>、<strong>HUB</strong>の規格が該当する<br /> 1,2番が受信<br /> 3,6番が送信</p> tobara tag:crieit.net,2005:PublicArticle/16975 2021-04-22T11:04:04+09:00 2021-04-22T22:41:16+09:00 https://crieit.net/posts/Anki Web単語帳「Anki」を使った効率的な学習法 <h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1> <p>何か覚えたいものがあるとき、単語帳を使う人も多いと思います。今回はWeb上で利用できる単語帳サービス「Anki」をご紹介します。</p> <h1 id="準備"><a href="#%E6%BA%96%E5%82%99">準備</a></h1> <p>AnkiのWebサイトは<a target="_blank" rel="nofollow noopener" href="https://ankiweb.net/about">こちら</a>です。<br /> 右上の「Sign up」よりアカウントを作成します。</p> <p>Web版と<a target="_blank" rel="nofollow noopener" href="https://apps.ankiweb.net/">PCソフト</a>(対応OS: Windows / Mac / Linux)、<a target="_blank" rel="nofollow noopener" href="https://play.google.com/store/apps/details?id=com.ichi2.anki&hl=ja&gl=US">Androidアプリ</a>は無料で利用できますが、<a target="_blank" rel="nofollow noopener" href="https://apps.apple.com/jp/app/ankimobile-flashcards/id373493387?mt=8&ign-mpt=uo=4">iOSアプリ</a>は有料アプリ(買い切り)です。</p> <h1 id="使い方"><a href="#%E4%BD%BF%E3%81%84%E6%96%B9">使い方</a></h1> <p>今回はWeb版のAnkiの使い方を説明します。アプリ版などは使い方が少し異なります。</p> <p>Anki Webの「Add」で新規カードが追加できます。「Deck」で作りたいデッキ名を入力し(既定はデフォルト)、「表面」「裏面」にそれぞれ入力するだけです。</p> <p>覚える際は、「Decks」でデッキを選択、表面が表示されるので、裏面に書いたことを思い出します。<br /> 「Show Answer」で解答が表示されます。<br /> その際、下部に3つのボタンが現れます。覚えていなかった場合は「Agein」を、覚えていた場合は「Good」を、覚えていて、簡単だった場合は「Easy」を選択しましょう。</p> <p>「Agein」は1分後に、「Good」は10分後に、「Easy」は4日後に再度出題されます。<br /> 簡単な問題は解く回数を減らし、覚えていない問題は何度も繰り返し解くことで効率的な学習が可能です。</p> <h1 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h1> <p>Ankiでは、Web上で手軽に効率的な学習ができます。受験勉強や英語学習、プログラミング学習などあらゆる場面で使えます。<br /> また、Web版とアプリ版など違う端末の間で単語帳を同期することができ、PCで作成した問題をスマホで解くといったことも可能です。</p> <p>この記事が少しでも学習の手助けになれば幸いです。</p> pocketdays tag:crieit.net,2005:PublicArticle/16974 2021-04-22T11:00:07+09:00 2021-04-22T11:00:07+09:00 https://crieit.net/posts/Markdown-1-6080d8a79d9d7 Markdown練習1 <h1 id="アウトプットしよう"><a href="#%E3%82%A2%E3%82%A6%E3%83%88%E3%83%97%E3%83%83%E3%83%88%E3%81%97%E3%82%88%E3%81%86">アウトプットしよう</a></h1> <h2 id="アウトプットには「早すぎる」はない"><a href="#%E3%82%A2%E3%82%A6%E3%83%88%E3%83%97%E3%83%83%E3%83%88%E3%81%AB%E3%81%AF%E3%80%8C%E6%97%A9%E3%81%99%E3%81%8E%E3%82%8B%E3%80%8D%E3%81%AF%E3%81%AA%E3%81%84">アウトプットには「早すぎる」はない</a></h2> <hr /> <p>「勉強始めたばかりで、アウトプットなんてできない」、「他人に教えられる知識なんかない」と思っているそこのあなた、<strong>それは違います!</strong></p> <p>初心者でも、<strong>学習した内容や経験した事</strong>を情報発信することには、以下の大きな意義があります。</p> <hr /> <ul> <li><strong>記憶の定着</strong>を促し、知識の棚卸になる</li> <li>情報発信することで、<strong>同じ興味を持つ人と繋がる</strong>きっかけが生まれる</li> <li>目に見える形で<strong>反応が得られるので</strong>、モチベーションが高まる</li> </ul> <hr /> <h2 id="アウトプット方法は色々ある"><a href="#%E3%82%A2%E3%82%A6%E3%83%88%E3%83%97%E3%83%83%E3%83%88%E6%96%B9%E6%B3%95%E3%81%AF%E8%89%B2%E3%80%85%E3%81%82%E3%82%8B">アウトプット方法は色々ある</a></h2> <ol> <li><strong>勉強会</strong>を開催する</li> <li><strong>技術同人誌</strong>を書く</li> <li>技術カンファレンスに参加して<strong>レポート記事</strong>を書く</li> <li><strong>技術ブログ</strong>を書く</li> </ol> Yso tag:crieit.net,2005:PublicArticle/16973 2021-04-22T10:12:28+09:00 2021-04-22T10:12:28+09:00 https://crieit.net/posts/3f79d2544f4a12740331d4392c61eccf 練習1 <h1 id="アウトプットしよう"><a href="#%E3%82%A2%E3%82%A6%E3%83%88%E3%83%97%E3%83%83%E3%83%88%E3%81%97%E3%82%88%E3%81%86">アウトプットしよう</a></h1> <h2 id="アウトプットには「早すぎる」はない"><a href="#%E3%82%A2%E3%82%A6%E3%83%88%E3%83%97%E3%83%83%E3%83%88%E3%81%AB%E3%81%AF%E3%80%8C%E6%97%A9%E3%81%99%E3%81%8E%E3%82%8B%E3%80%8D%E3%81%AF%E3%81%AA%E3%81%84">アウトプットには「早すぎる」はない</a></h2> <p>「勉強始めたばかりで、アウトプットなんてできない」、「他人に教えられる知識なんかない」と思っているそこのあなた、<strong>それは違います!</strong></p> <p>初心者でも、<strong>学習した内容</strong>や<strong>経験したこと</strong>を情報発信することは以下の大きな意義があります。</p> <hr /> <ul> <li><strong>記事の定着</strong>を促し、 <strong>知識の棚卸</strong>になる</li> <li>情報発信することで、<strong>同じ興味を持つ人と繋がる</strong>きっかけが生まれる</li> <li>目に見える形で<strong>反応が得られる</strong>ので、モチベーションが高まる</li> </ul> <h2 id="アウトプット方法はいろいろある"><a href="#%E3%82%A2%E3%82%A6%E3%83%88%E3%83%97%E3%83%83%E3%83%88%E6%96%B9%E6%B3%95%E3%81%AF%E3%81%84%E3%82%8D%E3%81%84%E3%82%8D%E3%81%82%E3%82%8B">アウトプット方法はいろいろある</a></h2> <ol> <li><strong>勉強会</strong>を開催する</li> <li><strong>技術同人誌</strong>を書く</li> <li>技術カンファレンスに参加して<strong>レポート記事</strong>を書く</li> <li><strong>技術ブログ</strong>を書く</li> </ol> Matsuda_A tag:crieit.net,2005:PublicArticle/16972 2021-04-22T09:51:58+09:00 2021-04-22T09:51:58+09:00 https://crieit.net/posts/PowerPoint-6080c8aee5e18 PowerPointのコツ <h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1> <p>皆様はPowerPointを使いこなしていますか?<br /> ちなみにブログを作成した本人は使いこなしていません。<br /> そこで今回は、PowerPointにおける重要だと思う要素を、初心者ならではの目線でまとめました。</p> <ul> <li><h2 id="1スライド1メッセージ"><a href="#1%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%891%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8">1スライド1メッセージ</a></h2> <p><strong>1枚のスライドの中に1メッセージまで</strong>ということです。<br /> 1枚のスライドの中に何点も説明する要素があると、結局そのスライドでは何を伝えたかったのか相手に伝わりません。<br /> なので、1枚のスライドの中は1メッセージまでにしましょう。</p></li> <li><h2 id="統一性"><a href="#%E7%B5%B1%E4%B8%80%E6%80%A7">統一性</a></h2> <p>文字のフォントや大きさなどをそろえることでスライドの見やすさは大きく変わります。<br /> <a href="https://crieit.now.sh/upload_images/b3e93a7062b8d505e8c4d47940486720607fdcd358a21.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b3e93a7062b8d505e8c4d47940486720607fdcd358a21.png?mw=700" alt="image" /></a></p></li> </ul> <p>このの写真を見ればわかる通り<strong>統一性を出すことで文字は見やすく</strong>なります。</p> <ul> <li>## 使用する色は3色まで<br /> 見る人に<strong>情報の重要度を判別するため</strong>にも3色程度に抑えたほうが見やすいです。<br /> <a href="https://crieit.now.sh/upload_images/250a1d480a6ace8dc2317fd940820428607fda3a1990c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/250a1d480a6ace8dc2317fd940820428607fda3a1990c.png?mw=700" alt="image" /></a><br /> このように配色が多すぎたら、どの情報が重要でどの部分を主張したいのかがわかりません。</li> </ul> <h2 id="なので、使用する色は3色までにしたほうが見やすいです。"><a href="#%E3%81%AA%E3%81%AE%E3%81%A7%E3%80%81%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E8%89%B2%E3%81%AF3%E8%89%B2%E3%81%BE%E3%81%A7%E3%81%AB%E3%81%97%E3%81%9F%E3%81%BB%E3%81%86%E3%81%8C%E8%A6%8B%E3%82%84%E3%81%99%E3%81%84%E3%81%A7%E3%81%99%E3%80%82">なので、使用する色は3色までにしたほうが見やすいです。</a></h2> <p>いかがでしたか?<br /> このようにPowerPointは簡単そうで実は難しいスキルだと思います。<br /> なので、お互い頑張りましょう。</p> ryypngrr tag:crieit.net,2005:PublicArticle/16970 2021-04-22T00:38:46+09:00 2021-04-22T00:38:46+09:00 https://crieit.net/posts/Jenkins-Pipeline-Best-Practices JenkinsのPipeline Best Practicesを邦訳したので後で読み直す <p>最近Jenkinsを使うようになり、Jenkinsfileの書き方などをちょっと勉強するようになりました。</p> <p><a target="_blank" rel="nofollow noopener" href="https://www.jenkins.io/doc/book/pipeline/pipeline-best-practices/">Pipeline Best Practices</a>という有用そうな記事を後で読み直したいので日本語訳して残します。もう少し勉強して記事の内容がわかるようになったら、もう一度読み直すつもりです。</p> <hr /> <h1 id="Pipeline Best Practices"><a href="#Pipeline+Best+Practices">Pipeline Best Practices</a></h1> <p>このガイドはいくつかのパイプラインのベストプラクティスを示し、最もありがちな間違いを指摘します。</p> <p>ゴールは、パイプラインの作成者およびメンテナーがより良いパイプラインの実行となるパターンを目指し、知らず識らずに嵌ってしまう落とし穴を避けるようにすることです。このガイドは考えられるすべてのパイプラインのベストプラクティスを網羅したリストではなく、一般的な手法を見出すために有用ないくつかの具体的な事例を紹介します。一般的に「これをおこなう」ということを知るために利用し、驚くほど詳細な「ハウツー」としては利用しないでください。</p> <h2 id="一般"><a href="#%E4%B8%80%E8%88%AC">一般</a></h2> <h3 id="パイプラインの接着剤としてGroovyコードを使用する"><a href="#%E3%83%91%E3%82%A4%E3%83%97%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AE%E6%8E%A5%E7%9D%80%E5%89%A4%E3%81%A8%E3%81%97%E3%81%A6Groovy%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B">パイプラインの接着剤としてGroovyコードを使用する</a></h3> <p>パイプラインの主たる機能としてではなく、一連のアクションをつなげるためにGroovyコードを利用してください。言い換えると、ビルドプロセスを進めるためにパイプラインの機能性(Groovyやパイプラインステップ)に依存するのではなく、ビルドの複数のパートを完了させるためにシングルステップ(<code>sh</code>のような)を使ってください。複雑性の増したパイプライン(Groovyコードの量、使用されるステップ数など)は、コントローラにより多くのコンピューターリソース(CPU、メモリ、ストレージ)を必要とします。ビルドのコアではなく、ビルドを完了させるためのツールとしてパイプラインを捉えてください。</p> <p>例:単一のMavenビルドステップを使い、build/test/deployプロセスのビルドを進める</p> <h3 id="パイプラインで複雑なGroovyコードを避ける"><a href="#%E3%83%91%E3%82%A4%E3%83%97%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%A7%E8%A4%87%E9%9B%91%E3%81%AAGroovy%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E9%81%BF%E3%81%91%E3%82%8B">パイプラインで複雑なGroovyコードを避ける</a></h3> <p>パイプラインのため、Groovyコードは<strong>常に</strong>コントローラで実行され、コントローラのリソース(メモリおよびCPU)を使用します。それゆえ、パイプラインで実行されるGroovyコードの量(パイプラインにインポートされるクラスで呼び出されるメソッドを含む)を減らすことは非常に重要です。以下は、利用を避けるべき最も一般的なGroovyメソッドの例になります:</p> <ol> <li><strong>JsonSlurper</strong>:この機能(およびXmlSlurperやreadFileのような類似した機能)はディスク上のファイルを読み取り、ファイルのデータをJSONオブジェクトに変換し、JsonSlurper().parseText(readFile("$LOCAL_FILE"))のようなコマンドを利用してパイプラインにオブジェクトを注入します。このコマンドはコントローラのメモリにローカルファイルを2回ロードします。ファイルが非常に大きい場合やコマンドが頻繁に実行される場合、大量のメモリが必要となります。<br /> a. ソリューション:JsonSlurperを使用する代わりに、シェルステップを使用して標準出力を返してください。このシェルは以下のようになります:<code>def JsonReturn = sh label: '', returnStdout: true, script: 'echo "$LOCAL_FILE"| jq "$PARSING_QUERY"'</code>。これはファイルの読み取りのためにエージェントのリソースを使い、$PARSING_QUERYはファイルをより小さいサイズに変換することに役立ちます。</li> <li><strong>HttpRequest</strong>:このコマンドは外部ソースからデータを取得し、変数に格納するためによく利用されます。このプラクティスは理想的ではありません。コントローラから直接リクエストが発行される(コントローラに証明書が存在しない場合、HTTPリクエストに対して正しくない結果が返ってくる)だけでなく、リクエストに対するレスポンスが2回格納されます。<br /> a. ソリューション:エージェントからHTTPリクエストを実行させるためにシェルステップ、必要に応じて<code>curl</code>や<code>wget</code>のようなツールを使用します。結果がパイプラインの後半で必要な場合、エージェント側で可能な限り結果をフィルダリングし、最小限の必須情報をJenkinsコントローラに返すべきです</li> </ol> <h3 id="類似したパイプラインステップの繰り返しを減らす"><a href="#%E9%A1%9E%E4%BC%BC%E3%81%97%E3%81%9F%E3%83%91%E3%82%A4%E3%83%97%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%86%E3%83%83%E3%83%97%E3%81%AE%E7%B9%B0%E3%82%8A%E8%BF%94%E3%81%97%E3%82%92%E6%B8%9B%E3%82%89%E3%81%99">類似したパイプラインステップの繰り返しを減らす</a></h3> <p>パイプラインの複数のステップを単一のステップに結合することは、パイプラインの実行エンジン自体のオーバーヘッドを減らすためにしばしば利用されます。例えば、連続して3つのシェルステップを実行する場合、ステップごとに開始と停止をしなければならず、作成と片付けのためにはエージェントとコントローラのコネクションとリソースが必要となります。しかし、すべてのコマンドを単一のシェルステップに入れる場合、たった1つのステップを開始および停止することが必要です。</p> <p>例:<code>echo</code>や<code>sh</code>ステップの作成を避け、それらを1つのステップまたはスクリプトに結合する。</p> <h3><code>Jenkins.getInstance</code>の呼び出しを避ける</h3> <p>パイプラインや共有ライブラリでJenkins.instanceやそのアクセッサメソッドを利用することは、パイプラインや共有ライブラリ内でのコードの誤用を表します。サンドボックス化されていない共有ライブラリからのJenkins APIの呼び出しは、その共有ライブラリが共有ライブラリであると同時にある種のJenkinsプラグインであることを意味します。パイプラインでのJenkins APIの呼び出しは重大なセキュリティ問題およびパフォーマンス問題を避けるため、非常に注意深くなる必要があります。ビルド時にJenkins APIを利用しなければならない場合、推奨アプローチはパイプラインのステップAPIを利用し、アクセスしたいJenkins APIを安全なラッパーでくるむように実装したJavaの小さいプラグインを作成することです。サンドボックス化されたJenkinsfileからJenkins APIを直接使用するということは、パイプラインを編集できる人によってサンドボックス保護をバイパスできるようなメソッドをホワイトリストに登録する必要があることを意味します。これは重大なセキュリティリスクです。ホワイトリストに登録されたメソッドは管理者権限を持つシステムユーザによって実行され、開発者が意図しているよりも大きな権限で実行されることになります。</p> <p>ソリューション:ベストソリューションは呼び出しをおこなわないことですが、実行する必要がある場合には必要なデータを収集できるJenkinsプラグインを実装することを推奨します。</p> <h2 id="共有ライブラリを利用する"><a href="#%E5%85%B1%E6%9C%89%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B">共有ライブラリを利用する</a></h2> <h3 id="組み込みパイプラインステップをオーバーライドしない"><a href="#%E7%B5%84%E3%81%BF%E8%BE%BC%E3%81%BF%E3%83%91%E3%82%A4%E3%83%97%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%86%E3%83%83%E3%83%97%E3%82%92%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%83%A9%E3%82%A4%E3%83%89%E3%81%97%E3%81%AA%E3%81%84">組み込みパイプラインステップをオーバーライドしない</a></h3> <p>可能な限り、カスタマイズ/上書きされたパイプラインステップを避けるべきです。組み込みパイプラインステップのオーバーライドは、<code>sh</code>や<code>timeout</code>のような標準パイプラインAPIを上書きするような共有ライブラリを利用する処理を指します。パイプラインAPIはいつでも変更できるため、この処理は危険です。カスタムコードが壊れたり、期待と異なる結果をもたらしたりします。パイプラインAPIの変更によってカスタムコードが破壊されたとき、カスタムコードが変更されてなくともAPIの変更後に同じように動作するわけではないため、トラブルシューティングが難しくなります。カスタムコードが変更されなかった場合でさえ、API更新後に同じように動作するわけではありません。最後に、パイプライン全体でこれらのステップが広く使われているため、何かが正しく実装されていない/非効率に実装されている場合にJenkinsに壊滅的な結果をもたらします。</p> <h3 id="巨大なグローバル変数宣言ファイルを避ける"><a href="#%E5%B7%A8%E5%A4%A7%E3%81%AA%E3%82%B0%E3%83%AD%E3%83%BC%E3%83%90%E3%83%AB%E5%A4%89%E6%95%B0%E5%AE%A3%E8%A8%80%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E9%81%BF%E3%81%91%E3%82%8B">巨大なグローバル変数宣言ファイルを避ける</a></h3> <p>巨大な変数宣言ファイルを持つことは、メリットがわずかもしくは全くない代わりに変数の必要有無に関わらずすべてのパイプラインにファイルがロードされるため膨大なメモリを必要とします。現在のジョブに関連する変数だけを含んだ小さな変数ファイルを作成することを推奨します。</p> <h3 id="非常に巨大な共有ライブラリを避ける"><a href="#%E9%9D%9E%E5%B8%B8%E3%81%AB%E5%B7%A8%E5%A4%A7%E3%81%AA%E5%85%B1%E6%9C%89%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%82%92%E9%81%BF%E3%81%91%E3%82%8B">非常に巨大な共有ライブラリを避ける</a></h3> <p>パイプラインで巨大な共有ライブラリを利用することは、パイプラインを開始する前に非常に巨大なファイルをチェックアウトし、実行中のジョブごとに同じ共有ライブラリをロードすることを必要とします。これはメモリオーバーヘッドを増やし、実行時間を遅くすることになります。</p> <h2 id="追加のFAQへの回答"><a href="#%E8%BF%BD%E5%8A%A0%E3%81%AEFAQ%E3%81%B8%E3%81%AE%E5%9B%9E%E7%AD%94">追加のFAQへの回答</a></h2> <h3 id="パイプラインでの並列処理"><a href="#%E3%83%91%E3%82%A4%E3%83%97%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%A7%E3%81%AE%E4%B8%A6%E5%88%97%E5%87%A6%E7%90%86">パイプラインでの並列処理</a></h3> <p>複数のパイプライン実行または複数の異なるパイプライン同士でワークスペースを共有しないようにしてください。このプラクティスは、各パイプラインまたはワークスペースでの改名を含む予期しないファイル変更を引き起こす可能性があります。</p> <p>理想的には、共有ボリュームやディスクは別の場所にマウントされ、その場所から現在のワークスペースにファイルがコピーされます。そして、ビルドが完了すると、更新があった場合にファイルをコピーして戻すことができます。</p> <p>必要なリソースをスクラッチで作成する個別のコンテナでビルドすべきです(クラウドタイプのエージェントはこれに最適です)。これらのコンテナをビルドすることは、いつでもビルド処理を開始し、簡単に繰り返せることを保証します。コンテナのビルドが機能しない場合、パイプラインで同時実行を無効にするか、Lockable Resourcesプラグインを使用し、実行時にワークスペースをロックし、ロック中は他のビルドがワークスペースを利用できないようにしてください。<strong>注意</strong>:同時実行を無効にしたり、実行中にワークスペースをロックしたりすることは任意のリソースがロックされている場合、リソースの待機中にパイプラインがロックされます。</p> <p><strong>また、これらの両方の手法はジョブごとに一意のリソースを利用するよりもビルド結果が出るまでに時間がかかることになります。</strong></p> <h3><code>NotSerializableException</code>を避ける</h3> <p>パイプラインコードはCPS変換されるため、パイプラインはJenkins再起動後に再開することができます。パイプラインがスクリプトを実行している間、Jenkinsをシャットダウンしたり、エージェントとの接続を切断したりすることができます。再開したとき、Jenkinsは何を実行していたのかを覚えており、パイプラインのスクリプトは中断されなかったかのように処理を再開できます。「<a target="_blank" rel="nofollow noopener" href="https://en.wikipedia.org/wiki/Continuation-passing_style">continuation-passing style(CPS)</a>」実行として知られるテクニックはパイプラインの再開で重要な役割を果たします。しかし、いくつかのGroovy表現はCPS変換の結果として正しく動作しません。</p> <p>内部的には、CPSはパイプラインの現在の状態とともに実行予定のパイプラインの残りがシリアライズ化可能であることに依存します。これはシリアライズ化できないオブジェクトをパイプラインで利用することは、パイプラインが状態を永続化しようとするとき、<code>NotSerializableException</code>をスローさせることに意味します。</p> <p>詳細な情報と問題となりうるいくつかの例は、<a target="_blank" rel="nofollow noopener" href="http://jenkins.io/redirect/pipeline-cps-method-mismatches">Pipeline CPS method mismatches</a>を御覧ください。</p> <p>以下では期待するようにパイプラインが機能することを保証するテクニックを紹介します。</p> <h3 id="永続変数がシリアライズ可能であることを保証する"><a href="#%E6%B0%B8%E7%B6%9A%E5%A4%89%E6%95%B0%E3%81%8C%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%A9%E3%82%A4%E3%82%BA%E5%8F%AF%E8%83%BD%E3%81%A7%E3%81%82%E3%82%8B%E3%81%93%E3%81%A8%E3%82%92%E4%BF%9D%E8%A8%BC%E3%81%99%E3%82%8B">永続変数がシリアライズ可能であることを保証する</a></h3> <p>ローカル変数は、シリアライズ化中にパイプラインの状態の一部としてキャプチャされます。これは、パイプライン実行に変数内のシリアライズ化できないオブジェクトを保存する際に<code>NotSerializableException</code>がスローされることを意味します。</p> <h3 id="変数にシリアライズ不可オブジェクトを割り当てない"><a href="#%E5%A4%89%E6%95%B0%E3%81%AB%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%A9%E3%82%A4%E3%82%BA%E4%B8%8D%E5%8F%AF%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%92%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%81%AA%E3%81%84">変数にシリアライズ不可オブジェクトを割り当てない</a></h3> <p>シリアライズ化できないオブジェクトを使う手法の1つは、値を計算して変数に格納する代わりに常に「ジャストインタイム」で値を推測させることです。</p> <h3><code>@NonCPS</code>を利用する</h3> <p>必要であれば、CPS変換されると正しく実行できなくなる特定のメソッドのために<code>@NonCPS</code>アノテーションを利用してCPS変換を無効化できます。これは、Groovy関数が変換されていないため、完全に再実行させる必要があることに注意してください。</p> <p>非同期なパイプラインステップ(<code>sh</code>や<code>sleep</code>のような)は常にCSP変換され、<code>@NonCPS</code>アノテーションがついたメソッドの内部で利用することができません。一般的に<code>@NonCPS</code>アノテーション付きメソッドの内部でパイプラインステップを利用することを避けるべきです。</p> <h3 id="パイプラインの耐久性"><a href="#%E3%83%91%E3%82%A4%E3%83%97%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AE%E8%80%90%E4%B9%85%E6%80%A7">パイプラインの耐久性</a></h3> <p>パイプラインの耐久性を変更することは、スローされるはずの箇所で<code>NotSerializableException</code>がスローされないことは注目に値します。PERFORMANCE_OPTIMIZEDによってパイプラインの耐久性を低下させることはパイプラインの現在の状態を永続化させる頻度を大幅に低下させることを意味するからです。つまり、パイプラインはシリアライズ化できない値をシリアライズ化しようとしなくなり、結果として例外がスローされなくなります。</p> <p>このメモは、この操作の根本的な原因についてユーザに。パイプラインの耐久性の設定はパフォーマンス最適化のためだけに操作し、シリアライズ化問題を避けるためにおこなうことは推奨されません。</p> s1r-J tag:crieit.net,2005:PublicArticle/16969 2021-04-21T23:09:49+09:00 2021-04-21T23:18:26+09:00 https://crieit.net/posts/DB-02 情報系資格対策兼DB復習の足跡🐈 🐾02 <p>``<br /> 初日から飛ばしてしまい、奇々怪々な投稿してしまったこと、お詫び申し上げます。</p> <p>さて、前回の続きです。今回はわりかし真面目にいきます😢</p> <hr /> <p><strong>v目次にゃv</strong></p> <ol> <li>スクレイピングでWEBからデータを抽出</li> <li>Excelでクエリ作成</li> <li>テーブル作成</li> </ol> <hr /> <p><strong>スクレイピングでWEBからデータを抽出だニャー(=✧ω✧=)</strong><br /> 今回は<a target="_blank" rel="nofollow noopener" href="https://www.ap-siken.com/kakomon/02_aki/">応用情報.com</a>さんのサイトから午前問題の答えを抽出しました。<br /> Pythonを用いてスクレイピングです。<br /> ライブラリをインポートしたら手早く作っちゃいますにゃんこ~🐱<br /> <a href="https://crieit.now.sh/upload_images/0bb758cb98240094b30817f9181bd7716080342f8f957.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0bb758cb98240094b30817f9181bd7716080342f8f957.png?mw=700" alt="プログラム" /></a><br /> プログラムを組むと作業で楽でいいニャー•v-v•<br /> (下の”エウウウ”が抽出している回答です)</p> <hr /> <p><strong>Excelでクエリ作成</strong><br /> 1文ずつ手入力してしまうと、猫の手も借りたい現象が起きてしまうので、今回はExcelを活用します。<br /> 今回は既にExcelにて材料がテーブルとして用意してあるので、<strong>CONCATENATE関数</strong>を用いてSQL文と結合してクエリを作成するぎょぴよฅ^•ω•^ฅ<br /> <a href="https://crieit.now.sh/upload_images/84e69cb2d3e3bf65b1a8fc1c18180ca760802e8117ef0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/84e69cb2d3e3bf65b1a8fc1c18180ca760802e8117ef0.png?mw=700" alt="クエリ作成" /></a><br /> 先程、抽出した回答をExcelテーブル”originalans”列にコピペ。<br /> その後、必要なSQL文の文字を空きセルに用意し結合するキツネ~🦊</p> <hr /> <p><strong>テーブル作成</strong><br /> 上の工程で出来たクエリをMySQLにコピペするにゃ~<br /> にゃっ!テーブルを1つ作成完了ねこ!!!<br /> <a href="https://crieit.now.sh/upload_images/bae0ea547af64d5113c540f1532e36b960802fd1747cf.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/bae0ea547af64d5113c540f1532e36b960802fd1747cf.png?mw=700" alt="SQL" /></a><br /> (スペルミス、命名規約、正規化不足、語訳、見づらさについては大目にみていただけると幸いです。)</p> <hr /> <p>今日はここまで🐾<br /> 今回使用したスクレイピング、DB等々、詳しく知りたいとご要望があれば、猫でもわかるように説明するかもです。</p> <p>これからも頑張るきんぎょー<br /> ``</p> keito_woood tag:crieit.net,2005:PublicArticle/16968 2021-04-21T22:37:06+09:00 2021-04-22T13:57:11+09:00 https://crieit.net/posts/NW-IP 【研修振り返り】NW研修振り返り ~IPアドレスって?~ <h2 id="IPアドレスって?  "><a href="#IP%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%81%A3%E3%81%A6%EF%BC%9F%E3%80%80%E3%80%80">IPアドレスって?  </a></h2> <p>IPアドレスという言葉はITに疎い人でも耳にしたことがある言葉でしょう。<br /> これは現実世界でいう住所のようなものです。</p> <p>これがなくてはどこに情報を送ればいいかわからないですし<br /> どこから送られてきたかもわかりません。<br /> しかしIPアドレスだけで送れるわけでもないのですがここでは割愛して次に行きます。</p> <h3 id="IPアドレスの種類"><a href="#IP%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%81%AE%E7%A8%AE%E9%A1%9E">IPアドレスの種類</a></h3> <p>IPアドレスには2種類あります。<br /> <strong>IPv4</strong>と<strong>IPv6</strong>です。</p> <p>IPv4は32bitsの2進数で表されますが人が扱いやすくするために1オクテットずつ10進数で<br /> 表記しています。ちなみに1オクテットは8bitsです。</p> <p>次にIPv6についてです。私たちのテキストでは始まりの章ということもあり割愛されていますが<br /> せっかくなのでここでは少し説明をします。</p> <p>IPv6は128bitsの2進数で表されます。これをIPv4のように1オクテットずつ10進数で表記すると<br /> 冗長になるので2オクテットずつ16進数で表記します。<br /> IPv6はIPv4が枯渇した場合に備えて考えられ2の128乗個あるので枯渇することはないと<br /> 言われています。</p> <h3 id="グローバルアドレスとプライベートアドレス"><a href="#%E3%82%B0%E3%83%AD%E3%83%BC%E3%83%90%E3%83%AB%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%81%A8%E3%83%97%E3%83%A9%E3%82%A4%E3%83%99%E3%83%BC%E3%83%88%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9">グローバルアドレスとプライベートアドレス</a></h3> <ul> <li><p>グローバルIPアドレス<br />  インターネット接続に使われるアドレスで世界にただ1つしかないユニークなものです。</p></li> <li><p>プライベートIPアドレス<br />  LAN内で使われるアドレスです。<br />  ユニークではないので閉鎖された環境下でしか使えません。<br />   </p></li> </ul> MSK tag:crieit.net,2005:PublicArticle/16967 2021-04-21T21:50:36+09:00 2021-04-22T13:56:46+09:00 https://crieit.net/posts/NW-2-LAN 【研修振り返り】NW研修振り返り ~2種類のLANケーブル~ <p>今日からNW研修に突入しました。</p> <p>早速ですがLANケーブルには<strong>ストレート</strong>と<strong>クロス</strong>の2種類があると<br /> なんとなく知っていましたが何故2種類あるのか、どんな場面で使うのか<br /> という疑問がやっと解消されました。(さっさとggrという話ですが...)</p> <p>さて、そもそもなぜストレートのみではいけないのかという話ですが<br /> LANポートには以下の二種類があるからです。</p> <p><strong>MDI</strong> <strong><em>(Medium Dependent Interface)</em></strong></p> <p><strong>MDI-X</strong> <strong><em>(Medium Dependent Interface Crossover)</em></strong></p> <p>ルータとPCはMDIがスイッチとHUBにはMDI-Xが使われています。<br /> MDIの場合は1,2がTXで3,6がRXになっています。<br /> MDI-Xの場合は1,2がRXで3,6がTXになっています。</p> <p>なのでMDI同士やMDI-X同士の機器をつなぐときにストレートケーブルをつなぐと<br /> TX同士或いはRX同士が繋がり通信ができないのでクロスケーブルの必要となるのです。</p> MSK