メンチカツには醤油でしょ!!

AWS/Java/Node.js/Spreadsheets/Docker/Jenkins/コミュニティ・勉強会レポを主とした技術系ブログ

POSTするurlをブックマークしたい

最初にひとこと: POSTをブックマークすることはできません

経緯

最近また本業でWebサービスの開発とかやってます(しかもJava)。

で、Webサービスの画面って当然ログイン画面があって、開発中は対象の画面だけテストしたいんですが、毎回毎回ログインするのが大変なんですよね。

解決方法としては、PuppeteerでE2Eテストを自動化したり、デバッグ(開発中)モードであればログインをすっ飛ばすという仕組みを実装するというのもアリなんですが、そもそもユーザーIDとパスワードを付けてブックマークできたらクリックするだけで手軽なのになぁという考えから。

つまり
http://localhost:8080/your-apps/login?method=POST&user=admin&password=pass
みたいなことをやりたいって話です。
ただクエリストリングにmethod=POSTって書いてもPOSTにはなりません^^;

なので、POSTをブックマークすることは当然できないんですよね。

それなら、代わりにPOSTしてくれるページに、パラメーターをGETで渡してあげればいいじゃん、という発想から実装したものがコチラです。

 

github.com

 

細かいソースはGitHubを見てもらうとして。

file:///C:/your-local-directory/get-to-post/index.html#http://localhost:8080/your-apps/login?username=admin&password=pass

というようなURLでアクセスすれば、
#以降の内容を解釈してPOSTしてくれるというものです。
なお、formのパラメーターはクエリストリングで指定します。

また、デバッグモードも搭載しており

file:///C:/your-local-directory/get-to-post/index.html?debug#http://localhost:8080/your-apps/login?username=admin&password=pass

というような指定で、送信前のform内容可視化・自動submitオフ(submitボタン表示)で動作します。つまり、送信前のページにformが表示されるだけ。

注意

注意書きにも書きましたが、指定されたurlにどこへでもPOSTしますので、攻撃の踏み台にもなりかねないため、このindex.htmlをパブリックにアクセスできるような場所に配置・公開しないようにしてくださいね。

npmのメールアドレスが公開な件について #NodeJS

npmとは

Node.jsのパッケージ管理システムであり、Node Package Managerの略です。
また、それらモジュール郡をホスティングしているサイトもnpmです(npmjs.com)
Mavenで言えばセントラルリポジトリ的な役割でしょう。

作成したモジュールをnpmで公開するにはnpmjs.comにサインアップする必要があります。

www.npmjs.com

npmjs.comへのアカウント登録

こちらがサインアップ画面です。

f:id:ryoichi0102:20171005213450p:plain

Public Emailという入力欄があり、登録ボタンの直前には
"Your email address will show on your profile page, but npm will never share or sell it."
とあります。
表示はするけど、引き渡したり売ったりはしないよ、ということですね。

登録後のプロフィール画面でも表示されています。

f:id:ryoichi0102:20171004092302p:plain

いやいやいやいや、これスクレイピングしたら簡単に収集できるじゃないっすか!
全世界にメールアドレスを公開するのはイヤですね。

なぜこうなっているのか調べた感じは以下の通り

・メールアドレスが公開になっているのはユーザー間でモメた時などの連絡に使用するためpublicになっている。
・だが、npmjsにフォーラム機能やサイトを通じて本人にメールが送信されるような仕組みを用意すれば良いだろうと、メールアドレス公開に反発してる人が多いのも事実。(私もそう思う)
・または、画面上にjsでレンダリングしてクローラーの収集を回避するなど。
・そしてGitHubでは、メールアドレスをprivateにしたり、コミット時に使用するメールアドレスはダミーのメールアドレス(noreply)が用意されており それを設定することも推奨されていることにまで言及され、とにかくPublic反対派が大多数。
・結局みんな、npm専用のメールアカウントを作ることになり、そのメールボックスspamでいっぱいに…初期のphp forumの頃のように。

まとめ

解決されなさそうなので、npm用のメールアカウントを作成しましょう。。

参考

github.com

github.com

JavaScriptで数値表現するならNumeral.js一択

タイトルの通りです。

var string = numeral(1000).format('0,0'); // '1,000'
var string = numeral(1).format('0.00'); // '1.00'

このようにフォーマットしたり、

var string = numeral().unformat('($10,000.00)'); // 10000

このように戻したり。

他にもいろいろありますが、公式のサンプル見ればやりたいことはきっとある。