WebStorageを取り扱っていて、悩ましい事案が発生したので日記のネタにしちゃいましょう。(笑)
やりたいこととしては、以下のようなものです。
【やってること】
javascriptで配列をPOST送信、ソートデータをget送信する。
問題点:「戻る」ボタンによりアクセスした場合POSTデータが吹っ飛ぶ
(※動的に更新されるWebStorageの値を用いるので、データ送信はjavascriptを使わざるを得ない)
てっきりPOST送信が絡んでる場合はブラウザの方で再送信してくれるものだと思っていたのですが、そういうわけでもないようで。
get送信が絡んでるからか、formから送信していないからか、原因はどちらかよく分かりませんが、なんとかしなくてはなりませんね。
で
寝ながら解決策を考えてみたんですが、この問題を解決するにはいくつか方法があります。
1.全部getで渡す
まぁそのまんまです。デメリットはURLが汚くなることもありますが
直アクセスで結果が出せないということがあります。
直アクセスで色々いじくるのは検索フォームの値は可用性があって便利だと思われますが、リストまで渡す意味って正直よくわかんないかなぁ。
まぁそれはそれでアリか・・・・・・そうであってもでも選択的にすべきですし、それをデフォルトにするのはちょっとアレかな。作りやすいけどさ。
2.諦めてクッキーを使う
リストが送信されてきた場合はそれを読み込みクッキーに保存し、リストが送信されてきていない場合(getパラメータしか渡ってこない場合)クッキーから保存しておいたリストを読み込む、というものです。
と思ったら、「リスト内の曲を削除してから更新ボタン押す」時の挙動を想像すると、削除した曲が復活すると思われるのでダメですね。つまり
LocalStorageの更新時にクッキーも同時更新するべきって話でございます。
LocalStorageと値がカブってるので非効率というか、じゃあ最初からクッキーでいいじゃんと言いたくなるのですが、仕方ありません。まぁクッキーは5年経つと消えますし差別化はできてるんじゃないかな・・・・・・。
5年もリスト寝かせるやついないと思うけどさ・・・・・・。
過去の演奏曲とかそういうよくわかんない用途に使われるかも知れませんしね!!!まぁそういうのは外部ファイル保存とか
旧Muselにある機能でもいけるんじゃないかな・・・・・・。外部に公開するとかそんなのはフォローする必要ないと思うし・・・・・・。
まぁ無駄ではありますがそうしないと別の問題が発生するので仕方ありません。
ちなみにLaravelの標準機能を使うことができないので、クッキーいじりは自分でjavascriptで書くことになります。
数字しか入る予定ないので、バリデーションさえすれば無害なので暗号化などセキュリティは考える必要ないかな。
3.ブラウザ側で検索する
要するに
全件取得して必要な分だけ表示させてしまえというものです。
でもぶっちゃけこれは最終手段です。だって全部の曲データを取得してくると結構なサイズになると思いますし
そもそも無駄なので、やっぱ必要な分だけ取り出したいわけですよ。
ということで、とりあえず(2)の方法で実装してみることにします。
Cookieとjavascriptが無効化されていた場合は完全に機能停止するんですが、まぁ・・・・・・その場合は別のシステムに飛ばすなりやるしかないですね。
どっちにしろCookieが無効になってたらリストの保存が困難になりますし、javascriptが無効だったらそもそも動的に追加とかできなくなっちゃいますしね。この辺は切り分けたほうがたぶんラクでしょう。
Cookieに関しては
WebStorageへの書き込み時及び読み込み時に更新するという手でいきます。
で
Cookieの読み込みを前提とすることにします。
なんかWebStorage使わなくていいじゃんって感じになってきましたね
こうすることで、ページ遷移関係なしに流れてくるCookieを読みこめば良いわけですからね。
で、読み込み時更新の理由としては、無更新の場合Cookieが更新されないため、なんか問題が出てきそうなので。まぁ少なくとも
5年経ったらデータが飛ぶので、データが飛ばないLocalStorageからの読み込み時にクッキーを都度上書きしちゃいましょうっていう。
で、Cookieの取り扱いって結構めんどくさいらしくてですね。
ただ、不便なものには便利なものが開発されていることが多いわけで、調べてみると
jquery.cookie.jsというプラグインが開発されてるみたいで。
使い方はググれば良いでしょう。便利に使わせていただきましょう。
・・・・・・と、ここで問題が発生しました。
このjquery.cookie.jsというのは、何らかの事情でjs-cookieというものに変貌を遂げており・・・・・・まぁこれは良いのです。
なんとですね。
ネット上に正しい情報がないんです。
どういうことかというと、
$.cookie(~~)でアクセスできるとかよく書かれてるんですけど
これ全部ウソです。
嘘というか、古い情報・・・・・・なんですかね。わかりません。
このプラグインが動かなくてあれこれ試してたんですが、半ば心折れた状態でふと、
配布元のGitHubのページに再び訪れ、何気なしに下にスクロールしていくと・・・・・・
基本的な使用法が書いてますね。
あれなんか違くね。
なんか知りませんが
いつの間にかメソッドじゃなくてオブジェクトで定義されてるらしく、書き換えたら一発で動きました。
腹たちますね。
むかし
日本人はマニュアルを読まない民族だみたいなことを見かけたことがあるのですが、まさにそれが原因で苦労する羽目になったという話です。
英語をずらずら読む気がそもそもなかったので、下に使用法が書いてあることを初めて知ったんですが、やっぱプラグインとか使う時はちゃんとマニュアルから見たほうが良かったですね・・・・・・。ネット上に正しい情報があるとは限らないわけでございます・・・・・・。
プラグインのソースコード見ても、やっぱ上級者向けの書き方されると読めないんですよ・・・・・・。
オブジェクト指向とかもっとちゃんと勉強したら読めるようになるのかな・・・・・・。まぁ、その辺は今のプロダクトが完成してからでいいや・・・・・・。
無駄な時間を過ごしてしまったなあ。
新作あげました。
このサイトに誘導とか全然してないので書きますけど
動画の趣旨を理解しないヤツがいるのがちょっとムカついてる(笑)んですが、僕の説明ってそんなわかりにくいかなぁ・・・・・・。
まぁ、フォローを入れてくださってる方も居てそれが凄く嬉しかったりするんですけどね。ということで今回の動画の説明文は嫌らしくねちねち書いてみたつもりです。趣旨に合わないコメントされてもイラっとするだけで終わっちゃいますからね。
お上品なお料理は他の方々がたくさん上げられていて僕の付け入る余地がないので、手抜きすることに尖った動画を作り続けたいと思ってます。
っていうかこの牛丼のメニュー、作ってみたら意外と美味しかったんでまた気が向いたら作ろうかな。所要時間短いし。
次回はボロネーゼの予定ですが、レシピを完全に忘れております。赤ワインとか持ってないですが、買ってないから多分以前作った時は使ってないんでしょう。バターも同様に。
省ける材料は全部省いて作りたいというのもありますし、ちょっと以前見たレシピを頑張って探して作ってみたいなぁと思います。これに関しては結構美味しかった記憶はあります。
後輩と長話していて気分が乗ったので活動後に1年生とガスト行ってきました。ついでにばったり遭遇した1年生も巻き込んでみました。2000円近くの出費でございます。いたいー。(笑)
今度覆面調査に付きあわせて補填させてもらおう・・・・・・
1年生とOBがこう仲良くお話してる関係ってそうそうないと思うのでございますよ。私の人徳は深いのでございます(笑)(笑)
ま、楽しかったです。(笑)
失踪事件が起こった。
いや、失踪というか
パトリが勝手に家に帰っただけなんですけど(笑)前代未聞の事態にみんな心配してましてね。
みんな、善意のつもりが彼を傷つけてしまったのかも知れないと心配して、人によっては泣いてまでくれる人も数人いた。
僕は、君が羨ましいよ。
僕が傷ついても誰も泣いてくれなかったし、それらしい気持ちが溢れでてしまった時も誰も心配すらしてくれなかった。
たぶん、僕が絶望と戦っていたことなんて誰も知りはしない。彼のように各所でアピールしたとしても、たぶん誰も本気で僕のことを心配してくれない。
僕を傷つけた本人達でさえ、僕のことなんか知らんぷりだ。
僕はそれを見て、常に傷つき続けている。でも、僕は大人だから我慢する。今は、耐え忍ぶ時だ。
人間なんて薄情な生き物なことぐらい理解してる。僕が傷ついて困る人はいないもんね。僕が悲しい思いをしても、僕以外が楽しいならば僕のわがままとしてしか扱われない。僕が悪いのだ。幸せを自分で掴み取れない僕がよくないだけ。
でも、こうやって境遇の違いをまざまざと見せつけられると、やっぱり嫉妬しちゃうな。
君は幸せだよ。その幸せに気づいてほしい。助けを乞えばみんな真摯に助けてくれる。君が辛かったら一緒に泣いてくれる人もいる。
そんな幸せに気づいて欲しい。そのために、僕も君にできるだけのことはやってあげたい。余計なお世話かもと、今は躊躇してるけど。僕は君の気持ちが分からないからね。
本当は、僕だって泣きたいよ。
でも、泣いても誰も心配してくれないし、僕が助けを求めてもただ迷惑をかけるだけだ。
今日だって、なんだか自分は蚊帳の外に置かれている気がしてとても寂しかった。自分がそこにいる意味が段々理解できなくなってきた。
いや、たぶん不運の積み重ねで、未だにあまり正常な精神状態じゃないからそう感じるだけなのかも知れない。たぶん、そうだと思いたい。
でも、楽しくない。自分は彼のように愛されてないことを感じてしまう。まぁ、仕方ないよね。
まぁ、羨んでも仕方ない。そう、仕方ないことなのだ。
それよりも、いつか僕のことを本気で心配してくれるような、そんな素敵な女性のために、何かしてあげられるような男性になることを目指すべきだ。
そんな人がこの世に存在するかどうかは、今は分からない。でも、夢を持たないと生きている意味がなくなっちゃうからね。
・・・・・・こんな風に、悲しい物の考え方をするような人間に、僕は彼になってほしくない。だから僕は、彼の味方でいたいと、陰ながら思っているよ。
以前、悩みを打ち明けるのは親友程度じゃ無理だと、突き放されちゃったからね。(笑)