ドメイン超えに一日を費やした話

こんばんは・・・
毎度おなじみガナリヤです!

今回は、NodeJsのクロスドメイン超えの話です。
初めての技術系ブログになるんですかね・・・

宣伝

現在、昔TNPにあったらしいICPC対策室なるものが、再び復活しようとしています。
活動内容としては、競技プログラミングを行い、実装力・アルゴリズム力をつけるというものです。
・・・正直、大学生からプログラミングを初めている身としては、アルゴリズムが世知辛いのじゃぁ〜

そんなこんなで、ICPU対策室復活に向けて、Discordの秋田大学ICPU対策室サーバーを立て、現在競技プログラミングを便利にするBotを製作中です。

問題

DiscordのBotはいろいろなプログラミング言語で作れますが、ガナリヤは現在Javascriptで記述しています。
Javascriptの特徴は何と言っても、クライアント側のブラウザで動くというところです。
最近では、NodeJsというサーバー側で実行するエンジンを使用することで、クライアント側だけでなく、サーバー側までJavascriptで制作出来るようになりました。
もしかしたら、世の中世知辛くないのかもしれないのじゃ・・・

そんなNodeJsとJavascriptで、HackerRankから、一ヶ月後までのコンテスト情報を取得するコマンドを作成しようとしていました。
HackerRankの情報はxml形式で取得できるため

  1. jQueryでxml形式で取得
  2. 取得したxml形式をxml2jsでJSON形式へ
  3. JSONからmomentを使って適切なコンテストのみ取得

という工程で行おうと思っていました・・・

事件発生

jQueryがガバガバでした。
おじさんが、jQueryで外部サイトの情報を取得しようとすると「それ以上はいけない」と、xmlが取得できませんでした。
取得できない理由はクロスドメイン問題にあります。

理想としては上のような状態です。
自分のクライアントとサーバーと、欲しい情報があるサーバーがそれぞれ通信できています。
しかし、最近のjQueryはクソみたいな発展を果たし(最近はほぼ使われなくなってきている)、他のサーバーとの通信が行えず、同じドメインしか通信できなくなりました。
これがクロスドメイン問題です。

改善策

改善策を色々と探した結果最初の改善策は以下のものでした。
1. phpファイルを利用してデータ取得のみをphpで行う。
2. 人力でxml形式を取得しておき、サーバーにためておく。

1の方法はうまく行きませんでした。理由としては、使用しているデプロイ先が基本的にjsのみであり上手に動作しなかったのが原因です。
2の方法は取りたくありませんでした。人力はクソ。さてはウンチだなおめー

結局・・・

npmモジュールでいいのないかなと探していたら、やっぱありました(最初からやr)
こちらのcheerioです。
クロスドメインも、モジュール内でいい感じにうまくやってくれているらしく、非常にありがたいですね・・・
コードは、きれいにしてからあげます・・・////

 

これもうわかんねえな

 改行がうまくwordpress内でされないので改善したい。

「TNPとは?」ページを更新しました!

 こんにちえるえる〜。
 ついに三年生になってしまったガナリヤです・・・
 時間たつの早すぎィ!
 そろそろ技術系も書いていかないといけませんね・・・

 今更かよ!?って言われそうなのですが・・・
 「TNPとは?」ページを更新しました(今更とか言うのは申し訳ないがNG)!!!
 ページの内容は
・TNPの概要
・TNP活動内容
・TNP活動時間
・TNPイベント
 が主な内容ですね!

 だいぶ自分なりにはかしこまって書けたような気がしますね・・・
 ここはブログなのでぶっちゃけトークをしてしまうと、TNPというサークル名の由来としては、先に卑猥な言葉があってから、なんとかうまいことこじつけてTNPという略語がでk・・・
 ・・・ん?誰か来たようだ

 でもまあTNPはアットホームな場所というのはホントのホントですね・・・
 この二年間とても楽しく過ごせています。
 しかし、おおよそのメンバーが淫夢とかアニメ知ってるとかこれもうわかんねえな・・・
 
 更新遅くなって申し訳ありません・・・
 そして何より速さが足りない(更新しろ)。
 というわけで、どんどんページを更新していこうと思います。
 自分がTNPの代として活動出来る最後の年になり、10月を過ぎると老害の仲間入りを果たします。
 残り時間の間に自分のできることを精一杯やっていきたいと思います。
 今週中におおまかなページは作成して、そこから構造やサイトの最適化を図っていこうと思います。
 ここまでお読みいただきありがとうございます!

P.S
 やっぱVTuberだとにじさんじ押しかなーwwwやっぱwwww
 その中だと月ノ美兎が一番好き(聞いてないwww)
 

Top