ラベル freeCodeCamp の投稿を表示しています。 すべての投稿を表示
ラベル freeCodeCamp の投稿を表示しています。 すべての投稿を表示

2021年12月1日水曜日

freeCodeCamp Staff チームに加入しました。

この度、freeCodeCampにスタッフとして加わることになりました。

今年の3月頃から日本語翻訳コントリビューターとして活動し始めたのですが、あれよあれよという間に色々と話が進み、自分でもまだ何が起きているのか信じられないような気持ちです。

私自身、約4年前、どうしても開発者・プログラマーになる夢が諦められず、なんとかその道に進む方法を探す中で見つけた教材の一つがfreeCodeCampでした。
まさに、freeCodeCampがなければここにいなかったと思います。

そして、翻訳者というのも頭に浮かんだことのある夢のひとつでした。
その両方に繋がるような、最適な機会に巡り合えたように感じています。

翻訳に限らず、日本語ローカリゼーション、日本語コミュニティの活性化に関わるさまざまな業務を行うことになりそうです。

より、日本でもプログラミング教育にアクセスしやすくなるよう、少しでも力になれればと思います。

2020年7月5日日曜日

MongoDBで "_id" フィールドの値で検索する

MongoDBにこういうデータがあって、findOneでIDを指定してこの1件を取得したい。

{
    "_id": {
        "$oid": "5f00f8d2e2b54b54646cac19"
    },
    "title": "new book"
}

最初こんな感じで書いてみたけどダメだった。検索結果がnullになってしまう。

var bookid =  '5f00f8d2e2b54b54646cac19';

// NG例1
collection.findOne({ "_id": bookid }, function(err, doc){ 
  // do something
}

// NG例2
collection.findOne({ "_id": { "$oid": bookid } }, function(err, doc){ 
  // do something
}

2020年6月18日木曜日

freeCodeCamp Data Visualization certification

I hadn't been doing freeCodeCamp lessons for a while, but finally I earned my Data Visualization certification!

One more certification to go!

2018年11月10日土曜日

#100DaysOfCode Day80

Day 80 November 10, 2018

Today's Progress:

  • File Metadata Microservice

Thoughts:
Completed freeCodeCamp's File Metadata Microservice project and earned APIs and Microservices certification!

Link to work:
File Metadata Microservice
GitHub Repo

2018年11月8日木曜日

#100DaysOfCode Day77

Day 77 November 8, 2018

Today's Progress:

  • Exercise Tracker
    • Finished building getLogs function
    • Add validations to user input values
    • Modify CSS

Thoughts:
Completed #freeCodeCamp 's Exercise Tracker project! One more project to get the Apis And Microservices Certification!

Link to work:
Exercise Tracker
Exercise Tracker: Code

2018年11月7日水曜日

#100DaysOfCode Day76

Day 76 November 7, 2018

Today's Progress:

  • Exercise Tracker
    • Started building getLogs function

Thoughts:
I realized that Model.find() in mongoose returns an array of objects [{key: value}] (even if there is only 1 object) but Model.findOne() returns an object {key: value}
This was what I got stuck on Day 71!

Link to work:
Exercise Tracker: Code

2018年11月6日火曜日

#100DaysOfCode Day75

Day 75 November 6, 2018

Today's Progress:

  • Exercise Tracker
    • Add exercise log

Thoughts:
Completed user story 3: add an exercise log.

Today I learned:

  • When I want to export multiple modules from a file I need to use exports.propertyName instead of module.exports
  • Validation for subdocument is not so simple. It seems when I do findOneAndUpdate the validation does not work. If I do find and save separately it worked.

Now I have done 3/4 of the challenge. 25 more days to go!

Link to work:
Exercise Tracker: Code

2018年11月5日月曜日

#100DaysOfCode Day74

Day 74 November 5, 2018

Today's Progress:

  • Exercise Tracker
    • Retrieve all users

Thoughts:
Exercise Tracker project. Created a function to get all users.
I accidentally had an unnecessary field indexed as unique (I'm not sure when I did it) and was getting an error on save. I could check and fix that problem on "Indexes" page on mLab.

Link to work:
Exercise Tracker: Code

2018年11月2日金曜日

#100DaysOfCode Day71

Day 71 November 1, 2018

Today's Progress:

  • Completed URL Shortener Microservice project at freeCodeCamp

Thoughts:
It took me so long to figure out the response from mLab DB was not an object { original: "www.google.com" } but an object in an array [{ original: "https://www.freecodecamp.com" }]
I was trying to retrieve the original URL value by result.original or result['original'] but kept getting undefined . I needed to do result[0]['original']

But thinking about callback was fun. It's difficult, but fun.

Link to work:
URL Shortener Microservice
URL Shortener Microservice: Code

2018年11月1日木曜日

#100DaysOfCode Day70

Day 70 October 31, 2018

Today's Progress:

  • URL Shortener Microservice project at freeCodeCamp
    • Receive the URL posted from the form
    • Validate its format
    • Connect to the DB on mLab

Thoughts:
I used 'url-regex' library to check if the URL is in a valid format, but it can't be used to check if the URL begins with http(s):// (it accepts URL without http(s):// if it begins with www). So I added a regex to check that part.

function isValidUrl(url) {
  // 'url-regex' cannot check if the URL begins with 'http(s)://'
  const httpRegex = /^https?\:\/\//i;
  // Check if the URL begins with 'http(s)://' AND is in a valid URL format checked with 'url-regex'
  return httpRegex.test(url) && urlRegex({exact: true, strict: true}).test(url);
};

Useful link: JavaScript regex checker
RegExr

Link to work:
URL Shortener Microservice: Code

2018年10月31日水曜日

#100DaysOfCode Day69

Day 69 October 30, 2018

Today's Progress:

  • Revision on Timestamp Microservice project & Request Header Parser project

Thoughts:
Compared my code and the example code and reviewed on what I thought I didn't understand clearly (where to write the code (which was server.js), callbacks and error handling). The video below helped me.

Link to work:
None

2018年10月28日日曜日

#100DaysOfCode Day68

Day 68 October 28, 2018

Today's Progress:

  • freeCodeCamp's Request Header Parser project

Thoughts:
I could accomplish the user stories by adding just a few lines so I'm not sure if I'm doing it right...

Link to work:
Request Header Parser
Code

#100DaysOfCode Day67

Day 67 October 27, 2018

Today's Progress:

  • freeCodeCamp's Timestamp Microservice project

Thoughts:
まだよくわからないけどできた感がすごくて狐につままれたようってまさにこういう気持ちだなと…(笑)

Link to work:
Timestamp Microservice
Timestamp Microservice: Code

2018年10月26日金曜日

#100DaysOfCode Day66

Day 66 October 26, 2018

Today's Progress:

  • Completed the setup of freeCodeCamp dev environment

Thoughts:
Finally, I have freeCodeCamp running on my local! There is no first timers welcome issue now but I'm hoping to contribute someday.

I also completed the freeCodeCamp lessons of "Managing Packages with Npm" and "Basic Node and Express" in these 2 days.

Link to work:
None

The successful output of npm run commands

These are what the terminal should look like when the npm run commands in the freeCodeCamp installation process go successfully. (They take long time to complete!)

freeCodeCamp をローカルにセットアップするときのnpm runコマンドが上手くいったときの表示。画面に変化がないままめっちゃ時間かかって、成功してるのか失敗したのか分からなかったので…参考になれば。

npm run bootstrap
npm run seed
npm run develop

2018年10月24日水曜日

#100DaysOfCode Day64

Day 64 October 24, 2018

Today's Progress:

  • Set up freeCodeCamp locally (Work in progress)
    • Solved an error and completed npm run bootstrap

Thoughts:
I solved the error in npm run bootstrap but now I'm facing another error in the next step npm run seed. The same error has been filed as an issue in freeCodeCamp's GitHub repo recently so I might wait a few days to see how it goes. I will work on something else while waiting for it.

I solved the error in npm run bootstrap by globally installing opencollective beforehand by npm install -g opencollective

The error I was seeing
error commitizen@2.10.1 postinstall: `opencollective postinstall`
error Exit status 1
error Failed at the commitizen@2.10.1 postinstall script.

Set up freeCodeCamp locally

Link to work:
Commented on GitHub issue

2018年10月13日土曜日

#100DaysOfCode Day53: Earned Front End Libraries Certification!!

Day 53 October 13, 2018

Today's Progress:

  • freeCodeCamp's Pomodoro Clock project
    • Implement responsive layout
    • Apply Google Fonts
    • Change background color according to Session/Break state
    • Changed the variable isRunning to one of the state properties

Thoughts:
Finished the Pomodoro Clock project and earned the Front End Libraries Certification!!

Link to work:
CodePen
GitHub: sidemt/pomodoro-clock
GitHub Pages: Pomodoro Clock

2018年6月20日水曜日

正規表現/Regular Expressions (JavaScript)

freeCodeCamp の Regular Expressions に関するレッスンのメモ。
Regular Expressions | freeCodeCamp

基本

  • regex もデータ型の一つ
  • .test() メソッド: regex.test(テストしたいString); の形でチェックできる

let testStr = "somethingToTest";
let testRegex = /Test/;
testRegex.test(testStr);
 // Returns true
  • .match() メソッド: string.match(regex); でマッチしたStringを取り出す

Flag

  • /freecodecamp/ii の部分をflagという
  • i は大文字小文字どちらもマッチするようにするflag (case insensitive flag)
  • g は何回でもマッチするようにするflag (global flag)
  • /freecodecamp/gi みたいに複数書ける

よく使いそうなもの

  • .: wildcard character 何にでもマッチする
  • [aiu]: a, i, u のどれにでもマッチする
  • [a-z]: a から z の範囲の文字にマッチする
  • [a-z0-9]: a-zと0-9の全て
  • [^aeiou]: a, e, i, o, u 以外の 文字にマッチする
    • ※けど、., !, [, @, / と white space にはマッチしない(何故?)
    • → そもそも[] が示すのが character set だからかな?そこに記号は含まれてない?
  • [^something] は、character set からsomethingを除外する
  • [] の外で ^ が使われたときは意味が変わる。
  • [] の外の ^ →Stringの最初でだけマッチする

shorthand character classes

  • \w: [A-Za-z0-9_] と同じ(全てのアルファベット大文字小文字、数字、とアンダーバー) (="alphanumeric characters" というのはこれっぽい?)
  • \W: 上の逆。 [^A-Za-z0-9_]
  • \d: [0-9]
  • \D: 上の逆。 [^0-9]
  • a+: aが1回以上続けて出てくる
  • a*: aが0回位以上続けて出てくる(下の例の /t[a-z]*?i/ で"ti"にマッチさせるときに効果を発揮する)
  • Regular expressions はデフォルトでは greedy match (一番長いものにマッチする)
  • ? でlazy match(一番短いものにマッチする)にできる

let text = "titanic";
text.match(/t[a-z]*i/); // ["titani"]
text.match(/t[a-z]*?i/); // ["ti"]

※上記の例はfreeCodeCampより

チェックツール

正規表現のチェックができるツール

Online regex tester and debugger: PHP, PCRE, Python, Golang and JavaScript

2018年6月12日火曜日

コールバック関数を自分のために解説 (JavaScript)

ここまで理解したことのメモ。

主な解説はfreeCodeCampから
https://guide.freecodecamp.org/javascript/callback-functions/

  • JavaScript では、functionも first-class object。変数に格納したり、引数として渡したりできる。

  • Callback Functions (コールバック関数)とは
    • 他の関数に引数として渡される関数。 後で実行する( いつ 実行されるかは後述)
      • 他の関数を引数として受け取る関数を higher-order function (高階関数) という
      • このhigher-order function に、 いつ コールバック関数を実行するかを書く

  • 引数として渡すときは、関数名の後に()を付けない。渡した時点で今すぐ実行するのではなく、関数の定義をhigher-order functionに渡すだけなので。
    • 実際に実行する場所で、引数を渡す
  • 無名関数も、callbackとして(引数として)渡すことができる。(下記Gistのuse_anonymous_function.js)

2018年5月24日木曜日

Codepen が画面幅を表示してくれるのが Bootstrap の Grid 対応に便利だった話

そんなのできるツール色々あるよって話かもしれないんですけれど。

freeCodeCamp のプロジェクトで CodePen を使うんですけど、今回 Bootstrap の Grid を使うことにチャレンジしたので、ドラッグしてブラウザのウィンドウのサイズを変えると現在の画面幅を表示してくれるのが便利でした。

こんな感じ。

まだ Grid の仕組みがよくわかってない中で、画面幅を確認しながら表示がどう変わるか確認できるのがすごくわかりやすくて。同じ画面でコードもすぐ書き変えて試せるし。

2018年5月21日月曜日

Wikipedia API で、検索と本文を1度に取得する方法

Wikipedia Viewer」の続き。(前回の記事

freeCodeCampの見本のページが"extract"(本文のテキスト)というプロパティを表示しているようなので同じことをしようとしたのですが、検索結果のJSONを見てみるとextractはここに入ってこない。
extractを取得するには、最初のリクエストで検索をしてtitleなりpageidなりのリストを取得して、それを元にもう一回ページ内容を取得するAPIを呼ばないと出来なさそう…?に見えたのですが。
ありました。

Querying query results in one request
https://www.mediawiki.org/wiki/API:Page_info_in_search_results#Querying_query_results_in_one_request

「generator」という機能を使えばできる様子。