ステーキの戯れ言

私のブログです。アドベントカレンダーを埋めるために作りました。

URLエンコードで半角スペースがやらかす

解決法?

 デコードする前に先に+を半角スペースに置換してしまえばいい。
 そしてdecodeURIComponentを使ってデコードする。%がついていないやつはスルーしてくれた。






 論文でもブログでも、最初に結論を書いてしまえばいいのさ。






 
 URLエンコードについて、自分の書いたプログラム内でこれ何だ?って悩んでしまったので、次は忘れないようにちゃんと書いておこう。
 環境はnode.jsでjavascript

URLエンコードって?

 日本語や記号とかを%○○って感じでエンコードするやつ。htmlでformタグ使ってpostした時に、これで変換して送ってくる。ちなみに元に戻すことをデコードっていうんだぜ!

で?

 javascriptではencodeURIComponentでURLエンコード、decodeURIComponentでデコードしてくれる。

let Data = "あいaiueoうえお";
let EncodeData = encodeURIComponent(Data);
let DecodeData = decodeURIComponent(EncodeData);
console.log(Data);
console.log(EncodeData);
console.log(DecodeData);

こうなる
f:id:uragou:20180316022518p:plain
 encodeURIとdecodeURIもあるけど、こいつら「=」をちゃんと処理してくれなかった。



ここからが問題

 htmlでformタグ使ってpostすると半角スペースを「+」に変換してしまう。
f:id:uragou:20180316021754p:plain
これを

 %E3%81%82+%E3%81%84+%E3%81%86+%E3%81%88+%E3%81%8A 

にしてしまう。
%○○にせず+にしてしまうのでデコードできない

let DecodeData = decodeURIComponent("%E3%81%82+%E3%81%84+%E3%81%86+%E3%81%88+%E3%81%8A");
let DecodeData2 = decodeURI("%E3%81%82+%E3%81%84+%E3%81%86+%E3%81%88+%E3%81%8A");

console.log("Componentつき");
console.log(DecodeData);
console.log("\nComponentなし");
console.log(DecodeData2);

f:id:uragou:20180316022523p:plain
これじゃあ良くない。

とりあえずの解決法

 正規表現とかにつかうreplaceを使った。%○○になっていない部分はスルーしてくれたので(もともと英字とかはそのままだったし)デコードするまえにreplaceを使って「+」を半角スペースに変換してやればいい、いわばちょっとしたひと手間てきなもの。
 ちなみに日本語だと%○○%○○%○○で一文字表しているっぽいので、この間に何か挿入するとデコード自体出来なくなる。置換なら形式を崩さないのでOK。

let Data = "%E3%81%82+%E3%81%84+%E3%81%86+%E3%81%88+%E3%81%8A"
Data = Data.replace(/\+/g," ");
let DecodeData = decodeURIComponent(Data);
let DecodeData2 = decodeURI(Data);
console.log(Data);
console.log("Componentつき");
console.log(DecodeData);
console.log("\nComponentなし");
console.log(DecodeData2);


f:id:uragou:20180316024434p:plain
こうなる。
replaceは 変数.replace(変換前,変換後);って感じで記述する。
/ /で囲ったのは正規表現となり、「+」は何か意味を持っている感じがするので「\」をつける。
gはオプションで、これをつけないと文字列内の一番最初にマッチした部分しか変換してくれない。

じゃあもともと+のやつは?

 htmlでformタグ使ってpostした時は「%2B」になってくれるので、デコード前に置換すれば問題ない。
 ただencodeURIは+を変換してくれない。


ていうかもともとの形にそって、半角スペースは%20に置換してもいいと思う。

最後に

 一応問題は解決したけど、これ絶対もっといい方法あるだろ。

ubuntuが無線LANを認識しないとき & 第9回 ICTSC予選 感想

adventar.org

 この記事は上のアドベントカレンダーの22日目です。

 

どうも、こんにちは。

お品書きです。

  • ubuntu無線LANを認識しないとき 
    • 自分の状況
    • やったこと
    •  最終的な解決方法
  • ICTSC予選の感想
    • 問3  infrastructure Knowledge
    • 問7    MySQL

 

 

 私はこの前新しいノートPCを買いました。そして早速ubuntuを導入しましたが何故か無線LANが認識しませんでした。そのことを書いていきます。

続きを読む

未開のジャングルを開拓する 工学院大学 情報学部 システム数理学科

この記事はKogakuin Univ Advent Calendar 2017 18日目の記事です。

 

adventar.org

 

 こんにちは、私の事を知らない人も多いでしょうが覚えておいてください。 

 

 kogcoderの記事やお茶の記事で出てきた@uragouRとは私のことです。

 

 私は限度とモラルをどこかに落としてしまったのでこの記事で問題のある部分があったら、

twitterの@uragouRに連絡してください。今日明日はちゃんと見ています。

 

 私は工学院大学 情報学部 システム数理学科に入りました。最初の人柱として、この学科の中身をレポートしようと思います。

なお、思いつくままに書くと悪い所ばっか書いてしまうと思うので、できるだけ慎重に事実だけを書いていきます。

 

目次

システム数理学科とは

 詳しいことは工学院大学のページを見てください。何か色々書いてあったりしますが、要は

    時代に乗り遅れないための新しい学科

ていう感じですね。社会が何とか、ビックデータが何とか書いてあるため、プログラミングはあまりやらないのかな?と入る前思っていましたがたくさんやりますよ

 

システム数理学科のおおまかな特徴

  1.  教授陣は既存の学科から選ばれた人間
  2.  講義によっては2号館という快適な場所で授業できる
  3.  講義によっては大学の用意したノートPCを使う

 

 まず、教授陣は当たり前ですがコンピュータ科学科や情報デザイン学科の人がシステム数理学科に来てる。だから何だって話ですが。

 講義の半分以上は、工学院大学に新しくできた2号館でやります。くっそ綺麗。快適な椅子に快適な机、ちょっとじゃじゃ馬な空調に快適なトイレ、快適な廊下、図書館やSA室も兼ね備えているため、後は購買さえできてくれれば2号館から出なくてすむレベル。

 

 なお、2号館には奥のほうにエレベーターが3基並んでいますが、実は入り口付近にも1基あって、不停止階もありますが、5~6階に行くならそっちの方が早く来たりする。

 

 そしてくっそ綺麗な2号館での講義の中にはPCを使う講義もありますが、この時は大学から貸し出されるthink padを使えます。これも快適。初期ブラウザがアレだけど。

授業内容

  1. 経営情報、情報インフラ、データ科学の3つに分けられる
  2. プログラミングが多い
  3. 実験レポートは手書き(途中からPC可) 

 

 授業は選択必修で経営情報、情報インフラ、データ科学の3種をそれぞれ一定数以上取らなければならない。

 経営情報はミクロ経済学マーケティング概論など、文字通り経営情報を学びます。プログラミングはなく、特に情報特化しているわけでもないため、とっつきやすい。

 情報インフラはシステム構築論やデータベース論など、一番情報学部らしい講義がある部分。プログラミングもやるし、情報系の専門用語もいっぱい。楽しい人には一番楽しい部分。

 データ科学は多変量解析やオペレーションズリサーチなど、数字を扱う講義が多い。多変量解析などはプログラミング(python)を使う。

 

 

時間割と課題量

今の時間割、もちろんシステム数理で取れるもの全ては網羅していない。f:id:uragou:20171218222029p:plain

 

 これは私の時間割の中の課題がある授業の一覧なので、全員がこうなるわけじゃない。

 

月曜2限システム構築論 課題量★★☆

 C言語によるプログラミングが課題:途中までできているプログラムを目的の動作ができるよう手を加える

 

月曜5限 Basic English Ⅱ(再履)(必修) 課題量★☆☆

 これは再履になった私のせいなので特に何も言えない。

 

火曜2限 Basic  Academic English Ⅱ(必修) 課題量★★☆

 講師によるが宿題がでたりするし、何か調べて英語で発表することもある。資料作ったり考えるのがとても難しい。

 

水曜 1、2限 多変量解析 課題量★☆☆

 演習でjupyter notebookを使用するが、大体演習内で終わるため、課題としては微妙である。授業後にやって提出してもいいので分類的には課題?

 

水曜 3、4限 webプログラミング 課題量★★★

 javascriptでプログラミング、チームで協力したりして目的の動作を実現させる。

 

木曜 1限 データベース論 課題量★☆☆

 情報学部各学科の人が多い講義、確認問題みたいなものをやる。問題数も少なく授業をちゃんと聞いていればそこまで難しくはない。

 

木曜 2限 システム数理基礎論(必修) 課題量★★☆

 教科書にあるpythonのプログラムを書いたり変更したりして、その結果から考察する。週によって簡単な時や難しい時の差が激しい。レポートの形にする必要があるが、手書きではないので、実験ほど時間はかからない。

 

木曜 3限 ミクロ経済学 課題量★☆☆

 プリントの問題が宿題になったりする。別に間違っていてもいいからちゃんと考えることが大事。

 

金曜 1、2限 システム数理学実験 課題量★★★

 The 実験 レポートは手書きだが、途中からPCで書いて印刷でもOK、プログラミングをする実験やソフトを使う実験が多い。毎日が苦しいのは大体こいつのせい。

 

 あらためて書いてみると、半端ねぇな。でも先輩たちはもっと高難易度の課題をたくさんこなしたんだろうなー。

最後にいい所

  pythonいっぱい使いまくるから、python大好き人間がいるならばこの学科はいい環境と思えるのではないでしょうか。

 後、習う部分が意外と広いから色んな事に手を出したいミーハー精神がくすぐられるのもいい所ですね。

 

 

システム数理学科1年目、いろんなことがおこりました。

 

やたら設定に手間がかかる無線LANルータ

あれ?この内容他の講義でもやったぞ?

終わらない実験

 

そもそも現在の2年生は最初から八王子キャンパスでいろいろなことがありました。

この初代システム数理学科生たちの経験が、今後の後輩たちのキャンパスライフに良い方向で影響してくれればいいと思います。

自己紹介とか

 

 Advent Calendar記事にリンクが載せられるので、大慌てで書いた記事

 どうも、神です。

 嘘ですよ、浦郷です。自己紹介書きます。

  • 工学院大学 情報学部 システム数理学科2年
  • 電子技術研究部とKogCoder所属
  • 英語は全くできない

 何かあんまりにもわけわからないので、リンクから来た人が分からなそうな所を抜き出して書きます。

 

Q 神なの?

A 神です。自称ではありません。苗字をローマ字にしたときに

          uagou → uragod→ god

      ってなるから神と呼ばれていて、別に何かすごいことができたりはしません。

 

Q 他に呼び名はある?

A もう覚えていないのでとりあえず何か呼んでいる声がしたら反応するよう心がけて

      います。

 

Q KogCoderって何?

A 私が入った当初は競技プログラミングをする団体でした。

   今は所属している私にもわかりません。

 

Q 電子技術研究部って?

A    私が所属している部活で、PAという音響関係の事をやったり、部室とかで電子工作

   したり、PCの山の前で呻いたりします。良い部活なので来年、たくさんの新入部員

    が来ることを期待しています。(部員の人へ、全然成果が出なくてごめんなさい)

 

Q システム数理学科って?

A 工学院大学に新しくできた学科、詳しいことはAdvent Calendarの記事にするので

  お楽しみに

Q 英語ができない?

A できません。私が英語覚えるよりも世界中の人が日本語を覚えるほうが早いと思

      う。

 

Q ネットワークエンジニア?

A KogCoderのお茶が勝手に言っているだけです。今年のネスぺは多分落ちました。

 

Q 午後2何解いた?

A 問1のほう

 

Q 卒業できそう?

A 単位的には大丈夫だが、これからは分からん。

 

Q 最後に一言

A 早く新宿に行きたい。

 

追記 

Q github空っぽじゃねえか!

A この糞忙しい大学通いながら趣味のコードなんて書けるわけねえだろ!