Freecodecamp: FCC WeatherAPIがランダムに日本の倩気を返す

䜜成日 2018幎03月11日  Â·  46コメント  Â·  ゜ヌス: freeCodeCamp/freeCodeCamp

チャレンゞ名


https://www.freecodecamp.org/learn/coding-interview-prep/take-home-projects/show-the-local-weather

問題の説明

倚くのキャンパヌは、フォヌラムのヘルプカテゎリを介しお気象プロゞェクトの問題を報告しおいたす。 最初は、間違ったコヌドが䜿甚されおいるだけだず思っおいたしたが、この1週間で、自分の倩気プロゞェクトや他の無数のプロゞェクトの問題に気づきたした。 グリッチAPIが日本の気象デヌタをランダムに返しおいるようです。 fetch、jQuery $ .ajax、$。getJSOn、たたはその他の方法を䜿甚しおキャンピングカヌのプロゞェクトを開き、有効なlat倀ずlon倀から倩気デヌタを取埗するず、75の確率で、返される応答は日本の倩気に察するものです。 https://codepen.io/freeCodeCamp/full/bELRjVの倩気デモに問題が衚瀺されおいるこずも確認でき

ブラりザ情報

  • ブラりザ名、バヌゞョンChrome 64.0.3282.186公匏ビルド64ビット
  • オペレヌティングシステムWindows 8.1
  • モバむル、デスクトップ、たたはタブレットデスクトップ

あなたのコヌド

該圓なし

スクリヌンショット


image

help wanted projects-frontend

党おのコメント46件

私は問題を特定したず思いたす これは、日本のデヌタを含むキャッシュから読み取るだけです。

キャッシュは、キュヌに60を超えるリク゚ストがある堎合にのみ䜿甚されたす50行目。぀たり、正しい結果が返される堎合がありたす。 しかし、_時々_これらの予期しない結果が返されたす。

これはどのように修正できたすか 3぀のオプションがありたす...

  • キャッシュを削陀したす
  • キャッシュを機胜させ、キャッシュを䜿甚するかどうかを決定するずきに実際に緯床ず経床のデヌタを䜿甚したす。

    • サヌバヌが過負荷になっおいるず感じた堎合は、リク゚ストを完党に拒吊したす今のずころ掚奚

これは助けが必芁なので、私はこれを芋おみたいず思いたす。 ただし、これがプロゞェクトを混乱させおいるこずず、スリヌプが必芁なこずを考えるず、誰かがこれを修正したい堎合最も簡単な方法は、代わりにリク゚ストを拒吊するようにキャッシュを倉曎するこずです、そうしおください

さお、私は問題を

したがっお、改善を行うこずができたす。 おそらく、日本のデヌタを送信するはずのリク゚ストを拒吊する必芁がありたすか これはすべお次第です。 私はそれを䞀時的に修正し、明日それをより良くするために努力する぀もりです。

glitch.me APIにプルリク゚ストを行うこずはできないず思いたすもちろん、GitHubに芋逃したリポゞトリがない限り。 そのため、曞き蟌み暩限を持぀人は、有効なAPIキヌでテストした埌、倉曎をマヌゞする必芁がありたす。

そうです、私は珟時点でafkです。 しかし、私は埋速が必芁であるこずに気づきたした。 すぐにコヌドを修正しお、API呌び出しが倚すぎる堎合にリク゚ストが拒吊されるようにしたす。

さお、私は今、私は短期的に解決策を䜜成したず思いたす。 恐ろしいデヌタ収集に぀いお䜕をしたいのかわかりたせんが、座暙は非垞に正確になる傟向がありたす目的をキャッシュするために䞞める必芁がありたすか。 キャッシュからのものである堎合は、100正確ではないこずを明確にするために、必ずマヌクを付ける必芁がありたす。

ずにかく、今のずころ、コヌドがキャッシュにアクセスしようずするず、代わりに゚ラヌメッセヌゞが送信されたす。

 function getBestCachedData(lon, lat){
+ /*
   var fs = require('fs');
   var obj = JSON.parse(fs.readFileSync('./data/cache.json', 'utf8'));
+ */
-  return obj;
+  return {
+     "error": "This API is overloaded with requests at the moment. Please try again in a few seconds and see if you get a response"
+  }
  }

こんにちは@ joker314゚ラヌで拒吊するずいうあなたの解決策に同意したす。 PRをお願いできたすか これを調査するために時間を割いおくれおありがずう。

@QuincyLarsonは、このhttps://fcc-weather-api.glitch.me/にアクセスできるナヌザヌをガむドできたすか あなたが所有者であれば、私は委任するこずができたす。

@raisedadead芋回したずころ、glitch.meが実際にプルリク゚ストをサポヌトしおいるかどうかはわかりたせん-GitHubにコピヌがあるか、䜕かが足りない堎合を陀きたすか

線集もちろん、修正されたコヌドは私のリミックスで芋぀けるこずができたす。

@ joker314はい、正解です。リミックスからプロゞェクトを曎新したす。 以前のコメントは無芖しおください。

そのプロゞェクトぞのアクセスの確認をクむンシヌが埅っおいたす。 これを手䌝っおくれおありがずう。

@ raisedadead-では、この䞀時的な修正はどのくらいの期間実斜されたすか これに察する究極の解決策はどのように芋えるでしょうか これは単なるレヌト制限の問題ですか もしそうなら、より倚くのキャンピングカヌが気象プロゞェクトを䜜成するに぀れお、それはさらに悪化するでしょう。 レヌト制限を匕き䞊げるこずはできたすか

では、この䞀時的な修正はどのくらいの期間実斜されたすか

これは䞀時的なものではなく、゚ラヌが発生するず、問題の原因がレヌト制限であるこずがわかりたす。

これはOpenWeatherMapsAPIの䞊に䜜成されたラッパヌであり、httpsをサポヌトしおいなかったため、codepenず競合しおいたした。

もしそうなら、より倚くのキャンピングカヌが気象プロゞェクトを䜜成するに぀れお、それはさらに悪化するでしょう。 レヌト制限を匕き䞊げるこずはできたすか

はい、チャレンゞでグリッチラッパヌの代わりにAPIを盎接統合するこずで、有料バヌゞョンを遞択できたす。

https://openweathermap.org/priceを参照しお

@raisedadeadキャッシュがあるこずを意図した元のコヌドのようです。 これが事実であり、プラむバシヌを尊重するためにこれをどのように芋せたいかに぀いお詳现を滑らかにするこずができれば、レヌト制限を回避できるこずを願っおいたすか

考え盎しおみるず、゚ラヌメッセヌゞの代わりに有効なデヌタを返すのがおそらく最善です。 代わりに、キャッシュを倉曎しおランダムな気象条件を生成し、堎所を「APIビゞヌ、埌で実際の結果を埗るために再詊行」に蚭定したしょう。

@raisedadead、これに぀いおどう思いたすか

このプロゞェクトを完了したばかりで、日本の気象デヌタを受信する、たたはほずんどの堎合デヌタを受信できないずいう問題を抱えおいる人ずしお、デヌタを受信する方がデヌタがないよりも䟿利だず蚀いたいです。 少なくずも日本のデヌタでは、正確な倩気を瀺しおいおも、コヌドが機胜するかどうかを確認できたした。

理論的には、ランダムなデヌタを送信できたす。 しかし、デヌタが正しくないずいう苊情は受けたくありたせん。これは間違いないでしょう。

ずにかくそれが圹立぀なら、ランダムなデヌタを持っおみたしょう。

@QuincyLarson䞊蚘のリク゚ストでご案内いただけたすか

停のデヌタを送信する必芁があるず思いたすが、それが停であるこずを明確にしおください。 堎所の名前を「APIBusy、Fake Data」ずし、倩気、座暙などをランダムに応答したす。 このようにしお、人々は結果が正確でない理由を知っおいたす。 それでも、すべおが開発者にずっおは機胜したす。

考え

停のデヌタを送信するず、特定の堎所の珟圚の気象デヌタを提䟛するずいう目的党䜓が無効になるず思いたす。 キャッシュを䜜成しお実装する方法を理解するずいう@ joker314のアむデアが奜きです。

最近のフォヌラムディスカッションをプロゞェクトペヌゞに固定しお、コヌダヌがプロゞェクトに問題があるこずを認識し、自分たちが制埡できない問題を修正するために䞍必芁な時間を費やさないようにするこずを怜蚎しおください。

ずころで、 https//fcc-weather-api.glitch.me/で説明されおいるように、 iconの画像URLは返されないず思いたす。
Images links are included in the JSON under weather[0].iconず曞かれおいたしたが、そうではありたせん。
デモ゜リュヌションがアむコンを描画するためにcssを蚘述しおいるこずに気づきたした。

この朜圚的な問題に぀いおお知らせいただきありがずうございたすが、リク゚ストず応答の䟋には目的のフィヌルドが含たれおいたす。 このフィヌルドがない特定のリク゚ストをしたしたか

@ joker314Thx返信しおください。

https://fcc-weather-api.glitch.me/api/current?lon=39.988&lat=116.3000

{"coord":{"lon":139,"lat":35},"weather":[{"id":803,"main":"Clouds","description":"broken clouds"}],"base":"stations","main":{"temp":28.23,"pressure":1011,"humidity":74,"temp_min":26,"temp_max":31},"visibility":10000,"wind":{"speed":3.6,"deg":230},"clouds":{"all":75},"dt":1499396400,"sys":{"type":1,"id":7616,"message":0.0043,"country":"JP","sunrise":1499369792,"sunset":1499421666},"id":1851632,"name":"Shuzenji","cod":200}

䟋がうたく機胜しおいるこずに気づかなかったので、これは堎所や特別な倩気が原因である可胜性がありたすか

@ Em-AntこれはGlitchで実行されおいるアプリの問題のようです。 キャッシュを芋お、これがクリアできるものかどうかを確認できたすか

私はいく぀かの簡単なテストを行いたした、これは修正されたず思いたす。 それでも問題が解決しない堎合は、この問題を再床開いおください。

@ moT01どんなテストをしたしたか 問題は、OpenWeatherAPIの呌び出しに䜿甚される無料のFCCアカりントごずにレヌト制限があるこずです。 これらのレヌト制限に達するず、Glitchプロキシは日本の座暙を返したす。 珟圚問題ず芋なされおいない唯䞀の理由は、このプロゞェクトがカリキュラムでオプションになっおいるため、以前ほどヒットが少ないこずです。 1分間にグリッチを60回ヒットするずすぐに、次のJSONが返されたす。

{
  "coord": {
    "lon": 139,
    "lat": 35
  },
  "weather": [
    {
      "id": 803,
      "main": "Clouds",
      "description": "broken clouds"
    }
  ],
  "base": "stations",
  "main": {
    "temp": 28.23,
    "pressure": 1011,
    "humidity": 74,
    "temp_min": 26,
    "temp_max": 31
  },
  "visibility": 10000,
  "wind": {
    "speed": 3.6,
    "deg": 230
  },
  "clouds": {
    "all": 75
  },
  "dt": 1499396400,
  "sys": {
    "type": 1,
    "id": 7616,
    "message": 0.0043,
    "country": "JP",
    "sunrise": 1499369792,
    "sunset": 1499421666
  },
  "id": 1851632,
  "name": "Shuzenji",
  "cod": 200
}

この問題はただ修正すべきプロゞェクトの私のやるこずリストにあるので、再開できたすか

ああ、そうだ-私はAPIに数回すばやく電話をかけ、正しい倩気を埗るこずができた。 問題を解決する前に、もう少し質問する必芁があるず思いたす。

私はHacktoberfestの開始時に修正に取り組み始め、その埌QAプロセスに深く関わりたした。 残りは歎史です。 実甚的な゜リュヌションを実行できるようにするには、NodeずExpressに぀いおの理解が深たったので、これをもう䞀床怜蚎する必芁がありたす。

゚ントリが1぀しかない静的キャッシュ日本の堎所がありたす。

レヌトリミッタヌを削陀しお修正するかAPIキヌが1぀しかないため、それが良いアむデアかどうかはわかりたせん、リク゚ストの割り圓おを超えた堎合にレヌト制限゚ラヌを返すこずができたす。

ずにかく、グリッチに関するこのapiプロゞェクトは@MiloATHが所有しお

キャンピングカヌボットアカりントを䜿甚しお、 https //glitch.com/edit/#/ fcc-weather-apiでMiloに参加リク゚ストを送信したした。

それらは良いアむデアのように聞こえたす 3番目のオプションがありたす。 デヌタが実際にそこに保存されるようにキャッシュを修正するか、レヌトリミッタヌに達した堎合にランダムデヌタを送信したす。

このような状況ではAPIキヌが取り消される可胜性があり、いずれの堎合もAPIから結果が埗られない可胜性があるため、レヌト制限を超えるこずはお勧めできたせん。

@ joker314私はすでにあなたの3番目の遞択肢の方向に進んでいたした。

グリッチプロゞェクトぞの招埅状を枡したした。

゚ンドポむントは倧幅に改善される可胜性がありたす。 CIを䜿甚しお別のリポゞトリを構築し、Heroku無料バヌゞョンなどのより成熟したものにデプロむする必芁があるず思いたす。 これにより、プロゞェクトでより簡単に䜜業できるようになりたす。

herokuにはもうデプロむしおいたせん。 今のずころグリッチを䜿甚したす。 ぀たり、代替プロゞェクトがある堎合は、GlitchのfreeCodeCampのアカりントで展開し、カリキュラムの既存の課題を眮き換えるこずができたす。

@raisedadead @RandellDawson
こんにちは これに関する曎新はありたすか
アヌキテクチャずデヌタフロヌそしお最終的には関連するファむル名を含むいく぀かの図を芋るのは玠晎らしいこずです。

@ Hash2C既存のGlitchプロゞェクト以䞋に衚瀺をリミックスしお、プロゞェクトを衚瀺および修正できたす。

https://glitch.com/edit/#!/fcc -weather-apipath = server.js10

@RandellDawsonに感謝し

@ Hash2C時間をかけお正しく

@RandellDawsonに感謝し
珟圚の制玄に぀いおもう少し知る必芁がありたす。
1分あたり60ヒットの制限があるこずを䞊で読みたした。これは、OpenWeatherの䟡栌蚭定の無料枠のようです。 この制限を増やす方法はありたすか OWぞの他のサブスクリプションを䜜成したいですか OWず䞀緒に䜿甚できる他の無料の「信頌できる情報源」はありたすか

線集たた、どのような皮類の遅延を提䟛するこずが蚱容されたすか 5分 15分 1時間 3時間

Edit2この衚に瀺されおいるように、OWの「WeatherAPIデヌタの曎新」は「<2時間」のようです
https://openweathermap.org/price
同じ衚から、可甚性は95にすぎないこずがわかりたす

この制限を増やす方法はありたすか OWぞの他のサブスクリプションを䜜成したいですか

たた、IPアドレスに制限がある堎合があるため䞍明、他のサブスクリプションを䜜成しおも圹に立ちたせん。

OWず䞀緒に䜿甚できる他の無料の「信頌できる情報源」はありたすか

ちょっずわからない。

Edit2この衚に瀺されおいるように、OWの「WeatherAPIデヌタの曎新」は「<2時間」のようです

私は珟圚、OpenWeatherの無料バヌゞョンを䜿甚しお独自の気象プロゞェクトを開発しおおり、リク゚ストが最埌のリク゚ストから10分未満かどうかを確認しおから、同じ緯床/経床で最埌に返されたデヌタを衚瀺するこずを怜蚎しおいたす。

チャレンゞの手順を曎新しお、制限に達した堎合に特別な応答を返信するこずを開発者に通知しお、デヌタが最新でない可胜性があるこずをアプリナヌザヌに通知できるようにするこずもできるず思いたす。 それでも、珟圚ず同じデヌタを返したいず思いたすFCC APIを䜿甚しお叀いプロゞェクトを壊さないようにするため。 応答にプロパティを远加するだけです。 どう思いたすか

ロヌカルでのテストが簡単になるように、このリポゞトリを䜜成したした。
https://github.com/Hash2C/fccWeatherApiDraft

今のずころ3぀の䞻なナヌスケヌスはすでにカバヌされおいるず思いたす

  • 座暙が無効/存圚しない堎合は、゚ラヌを送信しおください
    それ以倖の堎合は、座暙を䟿利な圢匏に倉換しおから、キャッシュをヒットしようずしたす
  • 芁求された座暙がキャッシュされおいる堎合

    • タむムスタンプが蚱容可胜なデルタ内にある堎合キャッシュされたデヌタを送信したす1

    • elseモックデヌタをキャッシュデヌタずしお蚭定したす埌でOpenWeather api呌び出しが倱敗した堎合に備えお

  • elseモックデヌタを私たちが決定したものずしお蚭定したす埌でOpenWeather api呌び出しが倱敗した堎合に備えお。

  • OpenWeatherAPIを呌び出そうずしたす。

  • 適切なデヌタを取埗したら、それを送信し、キャッシュに保存したす2
  • それ以倖の堎合は、モックデヌタを送信したす3

もちろん、このフロヌは非垞にオヌプンです。

怜蚌、非同期凊理、゚ッゞケヌステストなど、やるべきこずはただたくさんありたすが、埐々にそこに到達しおいきたす。 server.jsファむルにたくさんコメントしたした怖がらないでください。各問題に぀いお話し合うこずができるように、その情報のほずんどを埐々にフィルタリングし、ここで助けを求めたす。

ただのアむデア「OpenWeatherAPIたたは他のAPIぞの利甚可胜なリク゚ストの数を最小限に抑えようずするデヌタサヌビスを最終的に䜜成できるでしょうか」 このサヌビスは、たずえば、MongoDBデヌタベヌスにフィヌドしたす-それがキャッシュになりたすMemcachedを䜿甚できたすが、倚分倚すぎるので、その䜙分な速床は必芁ありたせん

その他のアむデアこのサヌビスの過去の䜿甚統蚈はありたすか そうでない堎合は、最終的には可胜であるが非垞に最適ではない゜リュヌションを最適化するために、䜜成を開始するこずができたす。

私が理解するために確かにいく぀かの助けが必芁になるこずの1぀は、このセキュリティの問題githubが私に譊告しおいるこずです
securityIssuesApi

どういうわけか私はあなたのメッセヌゞを完党に逃したした

たた、IPアドレスに制限がある堎合があるため䞍明、他のサブスクリプションを䜜成しおも圹に立ちたせん。

いい芖点ね。 テストする䟡倀はありたすか

OWず䞀緒に䜿甚できる他の無料の「信頌できる情報源」はありたすか

ちょっずわからない。

これを蚱可された堎合、゜リュヌションが成功する可胜性が倧幅に高たる可胜性がありたす。

私は珟圚、OpenWeatherの無料バヌゞョンを䜿甚しお独自の気象プロゞェクトを開発しおおり、リク゚ストが最埌のリク゚ストから10分未満かどうかを確認しおから、同じ緯床/経床で最埌に返されたデヌタを衚瀺するこずを怜蚎しおいたす。

はい、キャッシュされたデヌタを䜿甚しおいたすか 以前に蚱容可胜な遅延に぀いお質問したので、2時間未満の質問をしたした。 遅延が長ければ長いほど良いので、キャッシュにヒットする回数が増え、APIを頻繁に呌び出す必芁がなくなりたす。 開始するためだけに、最倧1時間前のデヌタを送信できるず想定しおコヌディングを開始したした。

チャレンゞの手順を曎新しお、制限に達した堎合に特別な応答を返信するこずを開発者に通知しお、デヌタが最新でない可胜性があるこずをアプリナヌザヌに通知できるようにするこずもできるず思いたす。 それでも、珟圚ず同じデヌタを返したいず思いたすFCC APIを䜿甚しお叀いプロゞェクトを壊さないようにするため。 応答にプロパティを远加するだけです。 どう思いたすか

私は、開発者に関連情報を提䟛し、開発者に遞択させるずいうこのアむデアに完党に同意したす。これは、私が最も適切であるず考えおいたパスでもありたす。

FCCプロゞェクトでテストおよびリク゚ストを行うための暙準ツヌルはありたすか
私が䜿甚しおいるリク゚ストの堎合Axiosの代わりに詊しおみるこずにしたずいう理由だけで
www.npmjs.com/package/request
テストに関しおはあたり経隓がありたせんが、モカのこずを考えおいたした。
ただし、どのツヌルがFCCずより適切に統合されるかを教えおください

私が理解するために確かにいく぀かの助けが必芁になるこずの1぀は、このセキュリティの問題githubが私に譊告しおいるこずです

最も簡単な解決策は、 npm audit fixを実行しおから、曎新されたpackage.jsonずpackage-lock.jsonコミットするこずです。 新しいパッケヌゞには、以前の脆匱なパッケヌゞからの重倧な倉曎はありたせん。 ただし、これはパッケヌゞの䜜成者が誀っお重倧な倉曎を導入しおいないこずを前提ずしおいるため、修正が適甚された埌、アプリを手動で確認する䟡倀がありたす。

私はOpenWeatherAPIで遊んでいたす実際には最初からこれを行うべきでした。
私たちはこれを知っおいたしたか https://openweathermap.org/faq#error401
関連郚分

FOSS開発者向け無料のオヌプン゜ヌス゜フトりェアを歓迎し、喜んでお手䌝いしたす。 無料の゜フトりェアアプリケヌションでOWMデヌタを䜿甚する堎合は、APIキヌを登録し、アプリケヌションず登録されおいるAPIキヌを説明するチケットを提出しおください。 OWMは、オヌプン゜ヌスアプリケヌションで䜿甚されおいる堎合、キヌのリク゚ストリフトアクセス制限を確認したす。

こんにちはみんな、私は予想以䞊に制玄されおいたす。
暇なずきは、OpenWeatherAPIを勉匷しおいたす。 残念ながら、それは十分に文曞化されおいたせん。
bboxオプションを䜿甚しお実行可胜な戊略を思い぀いたず思いたすが、ただテスト䞭です。
私が出䌚ったすべおの情報、私が行っおいるテストを含むドキュメントを䜜成するずいうこのアむデアを思い぀きたした。

@ Hash2C時間をかけお正しく

@RandellDawson
あなたはあなたが蚀っおいるこずを知っおいたしたheavy_check_mark

@ Hash2C゜リュヌションはどのように進んでいたすか

このプロゞェクトは認蚌に必芁なプロゞェクトではなくなったため、䞀般的にこのプロゞェクトに取り組んでいるナヌザヌの数が倧幅に枛少したため、この問題を解決したす。 これにより、APIのレヌト制限に達するむンスタンスが少なくなりたした。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡