名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。アクセス解析のためGAを利用、Googleに情報を送信しています。商品紹介のためAmazonアフィリエイトを利用、Amazonに情報を送信しています。記事に関しては私が書いていない引用文を除いて自由にご利用ください。

ネットワークスペシャリストの勉強がダメダメだったので振り返り

日曜日に試験を受けてきましたが、いろいろ駄目だったと思うので備忘録として残しておきます。 午後の出来を考えると、質問に正しく答えられていなかったように感じたので、来年再挑戦することになりそうです。

振り返り

Y

  • 参考書を買った
  • テキストベースメインで勉強した
    • 結果から言うと全体の1/3~1/2程度しか終わらなかった
      • 仕事が思った以上に忙しくなってしまい、3月中ほとんど勉強できず、そこでモチベーションが下がってしまった
  • インフラ関連の書籍を読んだりした
    • 下に紹介しておく
    • ミドルウェアをいじる機会はあるけど、ネットワークやプロトコルVPNを使ったネットワーク構築とかは実業務経験がなかったので、イメージをつけるため
    • 商用サービスに対する考え方と、業務システムに対する考え方の2軸が存在していると感じた
      • 試験も実際、その両方が問われる形であったと思っている
  • 試験を受けた
    • もろもろ合ってコンディションが最悪だったが、最後まで受けてきた

参考書はこちらです

インフラの実業務イメージをつけるために読んだのはこの2冊です。どっちも面白かった。

W

  • プロトコルの奥深さやデータの持ち方の奥深さ
    • いわゆる普段自分がやっているのは、本当にコンテンツやデータ部分というところで、それがどう伝わるのか、どうデータを判別するのかを深く知ることができた
    • 多くのプロトコルの種類を知ることができたし、勉強になった
  • 覚えるものがデータベーススペシャリストに対して多い
    • データベースが実践に即したデータの分割などであるなら、ネットワークは着実に組み合わせて設計していく、という印象だった
    • なのでワード的にそもそも押さえてないといけないものが多く、概念を理解しているだけでなく、ワードも使いこなせないとだめだと感じた
    • この辺り、勉強時間が確保できなかったことが悔やまれる
  • 勉強時間が足りなかった
    • FP終わってから最大限努力はしてきたが、3~4月はかなり仕事が忙しく、気持ち的にも体力的にも持たなかった
      • 体を休めることで手一杯になってしまうと勉強まで手が回らない
    • 予測不可能なものに対してのバッファが小さかったと思うが、期間的には3か月は妥当ではあったと思う
      • バッファ2週間くらい置いていたが、3月動けなかったことによって何も順調に行かなかった
    • スケジュールを今回ざっくり立てて、必要時間見積もったのは良かった
      • ある程度の指標になった、10ページ1時間だなーとか、600ページあるので60時間はミニマム必要なんだなーとか
      • 写経ベースでやっていたけど、かなり頭に入ったし、読むより手を動かすのが大事なんだなと改めて実感
  • 勉強する時間が取れないとモチベーションが下がりがち
    • どうせ無理では? みたいな精神になってくる
    • これが起きないように振舞わないといけない
  • 試験を受けるのは大事
    • 思ったよりわかるところもあったので、勉強は無駄にはなっていなかった
      • ちょっとびっくりした
    • ただ期待する答えできてないなと思ったところが多かったので、勉強不足ではあった
  • セキュリティや一般的な業務プロセスみたいなところも問題として出ないわけではない
    • データの流出に対して敏感
    • セキュリティの勉強や業務に対する勉強も並行しておくと、対策になりそうな気はする
      • テレワーク状況下でのネットワーク構築とか
        • 実際そういう問題は午後に出てきた
      • 大きめの本屋をあさりたい

T

  • 2か月くらいがっつり勉強する
    • 来年の1~4月はこの勉強に充てたい
  • 業務的な部分についても理解を深める
    • 本を読む、やり方を知る
    • 今回勉強してみて面白いなと感じたことはいっぱいあったので、実際に動いているものを眺めたい
  • 対策になるかはわからないが、クラウドに対しても知識をつけたい
    • クラウドネットワークやコンテナ技術・仮想環境のネットワーク通信についても問われる機会がある
    • AWSの資格をそろそろ取りたい気持ちでいたので、今年中にはいくつか合間塗って取りたい

まとめ

面白いなと思って勉強していた部分もあるんですが、勉強不足が響いておそらく落ちてしまったと思います。 とても悔しいので来年リベンジしたいのと、来年に向けて周辺分野の知識もつけながら頑張っていきたいです。

これネットワークの勉強として面白いですよ!みたいな情報があればツイッターとかで教えてください。

Perl入学式のテキストを完走した感想

1つ前の記事でも触れていましたが、Perl入学式のテキストやったので雑な感想を…。

namonakimichi.hatenablog.com

きっかけは YAPC::Japan::Online 2022 に参加したことでした。 そこでは普通のWeb開発のセッションや技術選定のセッションを中心に聞いていましたが、Perl自体をそんなに触ったことがなかったので(コードゴルフのコード読んだりしてやべーって言ってた程度)これを機会に一回くらい書いてみようかなと思い、入門してみました。

使った資料

講義資料 - Perl入学式 | Perl Entrance から2021年度以降の資料を見ながら進めました。スライドの利用とGitHubのテキスト本文を両方見るような感じでやってます。 (そして今 practice.md の存在に気が付いた。これはやってないです。練習問題みたい)

サイト自体のトップは Perl入学式 プログラミング初心者のためのPerl入門講座 から。

感想した感想

ざっと覚えている範囲で書きます。

  • シジルっていう独自の変数宣言システムが興味深かった
    • $ ならスカラー変数、 @ 配列、など
    • ぱっと見でどういうものを保持してるのかわかりやすかったと思う
  • 変数宣言が my
    • このスタイルで宣言するの新鮮だった
  • サブルーチンに仮引数を取るみたいな概念がない
    • my $d = shift; とか my ($f, $s) = @_; とかでとる
    • これ明示的じゃなくてこわいって感じ、ひやひやする
  • リファレンス・デリファレンスの概念が難しい
    • 配列を操るための機能
    • これ書きなれないと難しそう、練習問題は雰囲気何回か動かしてみて動かすことには成功した
      • 理解はあいまい
    • シジルで型がある程度わかるのに~とか思ってたけど幻想なのかもと思いつつある
  • 正規表現便利そう
    • というか最近 grep 書いてて GNU 系か、BSD 系か意識するのがめんどくさくなってきた
    • LinuxならPerl入ってるでしょ前提で、Perlで書いてもいいのかもと思った
    • ( ripgrep 使う手もあるが、自分の環境ならまだしも他人の環境に入っているとは限らないので)
  • Web APIデフォルトで入ってるのはいい感じ
    • JSONのパースもあるのはうれしい
    • ただ自分が前回書いた記事の通り、ライブラリのアップデートが必要なケースがある
    • DiscordのWebhookへさっと投げれたので面白かった
  • 日本語の取り扱いが難しい
    • これはまあ… うまく付き合うしかない問題の1つ
    • 後方互換性とか考えてこの作りなんだろうけど、日本語文字列の意識とか長さ見ないといけないとか考えるとめんどくさくなりそう
      • この辺はPython, Rubyの古いバージョンでも昔ひたすらハマってきた問題ではあるので、めんどくさいけどやらなきゃいけないことだと思ってる

総評として今のところ思っているのが Shell の大体として使えそうだなと思いました。 というもの Perl ってLinuxならまずはいっているし、他の人に軽く動かしてもらう分にはちょうどよさそうな言語。 で、人の環境のShellの設定やLinux OSの環境とかにも影響少なさそうだし、いいかなと(後方互換性が強いのが素晴らしい)。

今回学んでみて小さいスクリプトだけど、パワフルな印象を受けました。いつかしれっとどこかで使いたいです。

そのほか

perl-entrance-org/Perl-Entrance-Textbook が2017年の資料らしいけど、他にもやれそうなことが書いてあるので時間があったら読んでみようかなーと思う。

環境構築は asdf で最新版を結局入れてやりました。try/catchとか、数値比較の新しい文法を試して見たかったので。

chrolis/asdf-perl: Perl plugin for asdf version manager

これでさっとやれば入ります。

WEBHOOK取るところは変数にURL直書きしたくなかったので下記のような形にして、実行時に DISCORD_WEBHOOK_URL=うぇぶふっくのURL perl webhook.pl みたいな形で実行してました。

# webhook URLは環境変数からとる
my $webhook_url = $ENV{DISCORD_WEBHOOK_URL};

他に調べるときは metacpan ってサイトが良かったです。 検索性もいいなーと思ったし、めっちゃわかりやすい。英語だけど。

https://metacpan.org/

まとめ

いろいろな意見が散見していますが、実際書いてみて悪くない言語だなと思いました。愛好者がいるのもわかるし、特にCLI環境との相性はよさそうに思います。

一方でモダンな言語と比較すると時代背景的な部分もあり、ちょっととっつきにくいなと思う部分もありました(サブルーチンとか、日本語とか)。IDEのサポートとかでなんとかできる部分もありそうな気がするので、次はそのへんも少し意識出来たらなーと思います(ちなみに IntelliJ IDEA Ultimate で書いてたんですが、直近でコンフィグが壊れていて?起動しなくなってしまって、何とか復旧して書いたみたいな状態だったので、今回そこまで何か準備して意識して、みたいなことができませんでした)

正規表現周りは便利なので、これから活用していきたいです(ライブラリ使うとさらにいい感じにできるとかもあるのかなーと思いつつ、未調査)。

HTTP::Tinyの通信がうまくいかなかったのでメモ

perl入学式の資料を一人で黙々と読んでいるのだが、うまくいかなかったのでメモ。

具体的にはこの辺の話。

https://github.com/perl-entrance-org/workshop-basic-online/blob/master/3rd/slide.md#web-api-%E3%82%92%E4%BD%BF%E3%81%86get-9

起きていたこと

デコードに失敗していた。具体的に調べていくとhttps通信に問題がありそうなことがわかる。

調べていくと、下記の記事を見つけた。

squareperl.com

これに従って、 ssl が有効かどうかを調べる。

my ($can_ssl, $why) = HTTP::Tiny::can_ssl();
print "$can_ssl" . "\n";
print "$why" . "\n";

するとこのような結果になった。

0
IO::Socket::SSL 1.42 must be installed for https support
Net::SSLeay 1.49 must be installed for https support

つまり SSL 通信が有効ではない。

解決方針

perldocの元をたどって英語版の記事を読む。

metacpan.org

Direct https connections are supported only if IO::Socket::SSL 1.56 or greater and Net::SSLeay 1.49 or greater are installed. An error will occur if new enough versions of these modules are not installed or if the SSL encryption fails. You can also use HTTP::Tiny::can_ssl() utility function that returns boolean to see if the required modules are installed.

とあるので、ライブラリをアップデートすればよさそうだ。

解決する

squareperl.com

この記事を再度参考に、 cpanm IO::Socket::SSL したところライブラリがアップデートされ、正しく動くようになった。

起きていたことのコード片の実行結果も下記のようになり、有効になったことがわかる。

1

まとめ

情報にありつくのが意外と難しかったです。 でもデフォルトで https クライアントや json が扱いやすい形なのは perl のいいところかもしれませんね。

それにしても入学式のドキュメントはよくできていると感じます。今まで触ってこなかった言語ですが、シジルの仕組みは面白いですね。 リファレンスは難しかったり、サブルーチンは引数の取り出しがそんな方法で…! みたいなところ思うところありますが、ベターshellというか活用できそうな亜場所はまだまだありそうな言語だなーと感じていて、話題に上がることは少なくなったけど魅力もある言語だなと思ってます。

早いところ入学式を終わらせたい(一応、書いたものを非公開リポジトリに上げてコード管理だけはしてる)。