投稿

ITエンジニアがUdemyとCourseraに入門した結果

UdemyとCourseraについて それぞれの紹介 Udemy Coursera まとめ UdemyとCourseraについて 技術に詳しい人が作った(大体の場合)動画形式の有料のコースを買い、自分のペースで講義を受けるというもの。 修了時には一応証明書が貰えるので、LinkedInとかに載っけることも可能。 ITエンジニアがこれらを受講する目的としては、技術力を高めたい時やキャリアアップのために特定の技術について興味があるという時な気がする。 なお、どれくらい効果があるかは謎。 この記事で紹介するのは僕が受講したことのあるプラットフォームとコースについてです。 それぞれの紹介 今回紹介するのはタイトル通り以下の二つ。 Udemy Coursera それぞれの印象としては、 Udemy 買切り制。 何も知らずにページを見ると10000円超えのコースばかりでたっか!!となるかもしれないが、何かにつけてセールをやっているのでその時に買いましょう。大体のコースが2000円しないくらいで買えるので、興味があるコースはセールの時にまとめて買うべき。 講義の全体的な質としては、個人が投稿しているものが多いためか、そこまで高くはない印象です。 また、厳密な試験がほとんどない為、習熟度を試験形式で測りたいという人には物足りないです。 ただ、最近流行っているのか分からないですが、日本人の投稿が他のサイトに比べてかなり多いため、英語アレルギーの方にはオススメできます。 講義のレベルとしても、あくまで入門レベルが多いため、発展的な内容を学びたい!という人よりは、新しい技術を学びたい人にオススメしたいサイトです。 ちなみに英語がある程度出来る方に限るのですが、海外でトップクラスの評価を受けているコースはかなり信頼できます。 個人的に受講したコースは以下の通り。 Build Responsive Real World Websites with HTML5 and CSS3 The Complete JavaScript Course 2020: Build Real Projects! 2020 Complete Python Bootcamp: From Zero to Hero in Python Ja

ゼロから始めるLeetCode Day106「209. Minimum Size Subarray Sum」

概要 問題 解法 概要 海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。 どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。 早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。 と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。 ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。 Leetcode Python3で解いています。 ゼロから始めるLeetCode 目次 前回 ゼロから始めるLeetCode Day105「111. Minimum Depth of Binary Tree」 次回 ゼロから始めるLeetCode Day107「98. Validate Binary Search Tree」 Twitter やってます。 問題 209. Minimum Size Subarray Sum 難易度はMedium。 コーディング面接対策のために解きたいLeetCode 60問 からの抜粋です。 問題としては、 n 個の正の整数の配列 nums と正の整数 s が与えられたとき、連続する nums の和が s を超える部分配列の最小の長さを求めなさい、というものです。 なお、仮にそのような部分配列が存在しない場合は 0 を返してください。 解法 class Solution : def minSubArrayLen ( self , s : int , nums : List [ int ] ) - > int : index , num , low = 0 , 0 , float ( "inf" ) for i in range ( len ( nums ) ) :

ゼロから始めるLeetCode Day105「111. Minimum Depth of Binary Tree」

概要 問題 解法 概要 海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。 どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。 早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。 と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。 ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。 Leetcode Python3で解いています。 ゼロから始めるLeetCode 目次 前回 ゼロから始めるLeetCode Day104「103. Binary Tree Zigzag Level Order Traversal」 次回 ゼロから始めるLeetCode Day106「209. Minimum Size Subarray Sum」 Twitter やってます。 問題 111. Minimum Depth of Binary Tree 難易度はEasy。 コーディング面接対策のために解きたいLeetCode 60問 からの抜粋です。 問題としては、二分木が与えられた場合、その最小深度を求めよ、というものです。 なお、最小深度とは、ルートノードから最も近い葉までの最短経路に沿ったノードの数である。 注意:葉とは,子を持たないノードのことである。 解法 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution : def

ゼロから始めるLeetCode Day104「103. Binary Tree Zigzag Level Order Traversal」

概要 問題 解法 概要 海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。 どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。 早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。 と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。 ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。 Leetcode Python3で解いています。 ゼロから始めるLeetCode 目次 前回 ゼロから始めるLeetCode Day103「122. Best Time to Buy and Sell Stock II」 次回 ゼロから始めるLeetCode Day105「111. Minimum Depth of Binary Tree」 Twitter やってます。 問題 103. Binary Tree Zigzag Level Order Traversal 難易度はMedium。 コーディング面接対策のために解きたいLeetCode 60問 からの抜粋です。 問題としては、二分木が与えられた場合、そのノードの値のジグザグレベル順のトラバーサルを返すという問題です。 (左から右へ、次のレベルでは右から左へ、その間では交互に)。(つまり、左から右へ、そして次のレベルは右から左へ、そしてその間を交互に) For example: Given binary tree [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 return its zigzag level order traversal as: [ [3], [20,9], [15,7] ] 解法 # Definition for a binary tree

楽しく解くCpawCTF Level1

目的 環境 CpawCTF Level1 Q1.[Misc] Test Problem Q6.[Crypto] Classical Cipher Q7.[Reversing] Can you execute ? Q8.[Misc] Can you open this file ? Q9.[Web] HTML Page Q10.[Forensics] River Q11.[Network]pcap Q12.[Crypto]HashHashHash! Q14.[PPC]並べ替えろ! まとめ 目的 ネットワークやセキュリティなどの勉強はしたいが実際に何から手をつけたら良いのか分からない・・・ 無料でコンテスト形式の何かに取り組みたい といった人におすすめなのがCTF! 基本的にはチーム形式でセキュリティやネットワークの問題を解く、というコンテストで頻繁に開催されているため、楽しく学べます。 僕も最近始めたばかりで、ひとまず基本的なことを学ぶために一人で簡単なものから解いています。 環境 MacOS Catalina 10.15.4 Ubuntu 64-bit(VM) CpawCTF Level1 現在解いているのはこちらの CpawCTF で、初学者でも楽しくクイズ形式で学ぶことができます。 今回はLevel1を全て埋めたので内容について触れていきたいと思います。 なお、解答については触れません。 どういう風に解いたかに焦点を当てていきたいと思います。 Q1.[Misc] Test Problem この問題の答え(FLAG)は、 cpaw{this_is_Cpaw_CTF} です。 下の入力欄にFLAGを入力してSubmitボタンを押して、答えを送信しましょう! 記念すべき第一問。どういった形式で解答すればよいかを教えてくれます。 このコンテストでは基本的に cpaw{flag} といった形式で、 cpaw の部分は固定で、それ以降の {} の中にそれぞれの問題を解いた時に得られる flag を入れることで正解かどうかを判定します。 これがCTFがCatch the flagと呼ばれる所以ですね。 とにもかくにも解答の方法は基本的にこういった形なので理解するにはうってつけ

ゼロから始めるLeetCode Day103「122. Best Time to Buy and Sell Stock II」

概要 問題 解法 概要 海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。 どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。 早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。 と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。 ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。 Leetcode Python3で解いています。 ゼロから始めるLeetCode 目次 前回 ゼロから始めるLeetCode Day102「322. Coin Change」 次回 ゼロから始めるLeetCode Day104「103. Binary Tree Zigzag Level Order Traversal」 Twitter やってます。 問題 122. Best Time to Buy and Sell Stock II 難易度はEasy。 コーディング面接対策のために解きたいLeetCode 60問 からの抜粋です。 問題としては、 ith の要素が i 日目に指定された株式の価格である配列の価格を与えられます。 最大の利益を見つけるためにアルゴリズムを設計します。あなたは好きなだけ多くのトランザクションを完了することができます。 なお、再び購入する前に株式を売却する必要があります。 Example 1: Input: [7,1,5,3,6,4] Output: 7 Explanation: Buy on day 2 (price = 1) and sell on day 3 (price = 5), profit = 5-1 = 4. Then buy on day 4 (price = 3) and sell on day 5 (price = 6), profit = 6-3

ゼロから始めるLeetCode Day102「322. Coin Change」

概要 問題 解法 概要 海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。 どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。 早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。 と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。 ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。 Leetcode Python3で解いています。 ゼロから始めるLeetCode 目次 前回 ゼロから始めるLeetCode Day101「387. First Unique Character in a String 次回 ゼロから始めるLeetCode Day102「322. Coin Change」 Twitter やってます。 問題 322. Coin Change 難易度はMedium。 コーディング面接対策のために解きたいLeetCode 60問 からの抜粋です。 問題としては、異なる額面のコインと合計金額が与えられます。その金額を作るのに必要なコインの数が最も少ないコインを計算する関数を実装してください、という問題です。なお、コインのどの組み合わせでもその金額を作ることができない場合は、-1を返す。 Example 1: Input: coins = [1, 2, 5], amount = 11 Output: 3 Explanation: 11 = 5 + 5 + 1 Example 2: Input: coins = [2], amount = 3 Output: -1 解法 典型的なナップザック問題ですね。 ちなみにナップザック問題というのは このような もので、与えられた条件の中から最適な場合を求めるための例として挙げられる問題群のことです。 そして、それら