「クエリ」を含む日記 RSS

はてなキーワード: クエリとは

2018-08-12

anond:20180812171555

いや、まさにアンチパターンその1の話なんやで。

ORMでそういう複数グルーピング順位づけをしようとすると

まず全レコードを手元に持ってきてそれをコードの中で振り分けみたいな作業しか実質方法はない。

レコードが100や200ならいいけど、実際のamazonだったりすれば億を余裕で越す。

それを一括で持ってこようとするのはハゲからいくつか方法を練る必要があるんだが、

ORMしか使えない環境での最適解はグループを分割して逐次クエリを打つ方法

だが、最適解だがこれ以上最適化できないという時点で負け。

SQLであればこれを一発で取ってくる方法はある。そういう話や。

anond:20180812165929

今回の設定だとグループA,B,C,Dそれぞれにランク1-10までのデータを取ってこいって話なわけだが、

このクエリだとグループAしか取ってこれてねえだろうって話なんやが、ワシ間違っとるか?

anond:20180812145639

んじゃ、以下のテーブルがあると仮定して、どの言語のどのORMでもいいか仮想コード書いてみ。

CREATE TABLE M_ITEM( /*アイテムマスタ*/

ID INTEGER UNIQUE,

NAME STRING,

PRICE INTEGER

);

CREATE TABLE T_STOCK(/*在庫*/

ITEM_ID INTEGER UNIQUE,

STOCK_COUNT INTEGER

);

必要要件は「PRICEが0のものグループA、PRICEが50未満のものグループB,PRICEが100以上のものグループC、それ以外をグループDとした上で

それぞれのグループ内で在庫数が多いものトップ10を取得するクエリな。

SQLでやるとクッソ簡単だぞ。ORMだとどうだ?

さあやってみろ。

anond:20180812144456

まともなORMを知らんのであれだが、だいたいこういうクエリはORMを使いつつ生SQLを書いてるのと変わらん感じになる。

だいたいraw〜みたいなメソッドをチェインする羽目になって、「だったら生で書かせろや」感たっぷりになる。

anond:20180812143809

あ? ORMで「値段が100以上ならグループA、50未満ならグループB,0ならグループC」みたいに分けた後に

そのグループ内で最大個数の在庫10個ずつ並べるみたいなクエリが書けんのか? ああん

2018-07-29

エクセル表計算ソフト「ではない」

ある物が何であるかは設計思想ではなく使われ方の実態をもって決まる。

設計思想通りに使ってもらえないのは設計が徹底していないからだ。

エクセルは明らかに表計算ソフトとして使われていない。

いや、表計算は数ある機能のうちのひとつとして重宝されてはいるが、実体もっと複雑で、

DTPソフトでもあり、DBでもあり、メモ帳でもあり、電卓でもあり、プログラミング言語でもあるような

エクセル」というオンリーワン統合ビジネスソフトになり果てている。

そもそも表計算ソフトとはなんなのか?

エクセル表計算ソフトです!」と主張する人に限ってそれを説明できていない。

取引記録や伝票のようなマスタを保持するのはデータベース仕事だ。

それに対し適当な加工をかけるのも本来クエリでやるような話である

まり、「エクセル表計算ソフトからDTPとして使うんじゃねえ!」と叫ぶ人は、

まったく同じ理屈により、エクセルデータベースとして使うことも否定しなければならない。

文書ワードで、DTPパブリッシャーでと言うのなら、マスタはアクセス管理しなさいとなる。

それならもはやエクセル仕事なんてない。

表計算ソフトとは「表」+「計算ソフトなのだ

表とはただデータを保持するものではない。データを「表示」するものである

まりその概念には見栄えという要素も含まれる。

表はデータを整列し、計算し、出力する全ての機能を備えていなければならない。

当然、DTP的な要素もあればDB的な要素もあってしかるべきだ。

そういった全ての要素が結びつき、さらにその上にVBAが乗っかることによってエクセル

エクセル以外のどのソフトにも互換できないような唯一無二の使い勝手を生み出しているのだ。

実際上手いエクセルユーザーの作ったブックは芸術的だ。

表計算でもDTPでもDBでもスクリプトでもあることによって発生する独特の使い方のコツというのがあり、

それはそれぞれ単体のソフトだけを連携させている時には絶対に役立たないようなセンスだ。

自動車の操縦のように、エクセルというソフトを手に馴染ませる必要がある。

からDTP的な使い方しかできていないようなエクセルユーザーに対して指摘する時は

表計算ソフトとして使え」ではなく、「エクセルとして使え」というべきだ。

DB計算ソフトとしてしかエクセルを使っていないのであれば、実のところDTP使いしかできない人と大差がない。

2018-05-27

吾輩は無職である。暇だから初めてWebサービスを作ったのである

吾輩は無職である。職はまだ無い。どこで無職になったか、とんと見当けんとうがつかぬ。

何でも薄暗いじめめした所で手斧を投げられていた事だけは記憶している。

吾輩はここで始めて増田というものを見た。

しかもあとで聞くとそれは増田という人間中で一番獰悪な種族であったそうだ。

・・・

まぁ、前置きの冗談はこの辺までとして、前々から作りたいな思っていた

Webサービスを中々時間が取れず作るのを諦めていたのだけど、

まぁ無職になって時間も取れたので作った次第です。

自身プログラミング生業とする職業では無く、学生時代特にプログラミングついて何か

勉強をしていた訳では無かったので一から勉強になりました。

始めたのが昨年末大晦日ちょい前なので、約5ヶ月掛かり、当初想定していた期間より

かなりの時間が掛かってしまい、反省点等含めその辺の事を書けたらなと思います

■やりたい事(実装した事)

ゲームユーザー同士を繋げるマッチングサイト出会い系ではないよ。)

ログイン機能

タスクベースでのチケット管理

・簡易コメント機能

・簡易評価機能ポイント

ステータス動作変更処理

タグをつける

上記DB管理

構成を書いた方が良いと思うので

以下になります

構成

--------------------------------------------

サーバさくらVPS 2G

OS:CentOS 7.5

WebサーバNginx 1.14

WSGI:uWSGI 2.017

FW:Flask 1.0.2

RDBSQLite3 3.7.17

ORM:SQLAlchemy 1.2.7

言語Python 3.6

フロントPure JavaScriptのみ

その他ツール等:Let's Encrypt/fail2ban/等々

--------------------------------------------

上記を見て貰えれば分かるかと思いますが、最近流行りの

フロントエンド技術等は一切入ってはいないです。

ほぼ、既存ベーシックサーバーサイド側の制御のみです。(jsで非同期通信はしてます

SPAとかVueとかの言葉最近知りました。。。

ほぼ開発終わりかけに知ったので、流石に今から構成

変えるのもなと思い、取り敢えず上記です。

■選定理

まずWebサービス作るにあたり、何が必要だろうと思い

まずは開発言語だろうと、プログラミング言語の選定で

RubyPythonかで悩みました。

Rails名前を良く聞くのでRuby on Rails触ったのですが、

Railsには馴染めなかった(扱えなかった)ので

何かマイクロFWの方が良いのだろうと、Sinatraいこうか思いましたが

Railsの印象が強く残った為、Rubyは止めてPythonに移りました。

今度は初っ端からマイクロFWが良いだろうとFlaskのサンプルを試すと

比較プログラミング学者でも扱いやすく覚える事も少ないので、PythonとFlask

の組み合わせで決定。

(気軽にプログラムを書け、自分イメージしている処理や制御を素直に実現できる点が

 書いていて気持ちが良いです。まぁ分からない所も有りますが、そう思わせてくれる点

 が良いです。モチベーション的に)

NginxとuWSGIの組み合わせはFlaskで検索すると一番でてくるのでこれに決定。

SQLite3 はマイクロFWから軽めのDBでたぶん大丈夫だと思ったのでこれに決定

ORM(SQLAlchemy)も検索で一番出てくる為。

■開発概要

・まずPythonの開発環境を整えようとなり、WindowsVagrantインストールして

 仮想マシン環境構築。ゲストOSの中にPyenv等を入れPython環境構築

上記構築後に取り敢えず小さなサンプルから作ろうとなり、簡単CRUDをFlaskで行える様にしました。

 これができた時は嬉しかったです

上記が出来てから、本番の開発に移りCRUDベースにひたすら肉付けていく

ユーザー登録機能作成/ログイン機能作成/ユーザー情報表示/編集機能/チケット作成/及び編集/バリデーション

上記平行してDB機能作成実装/検索機能作成

・細かいViewの調整とスマホ用のView作成レスポンシブルでは無いので)

・本番用のさくらVPS環境構築とセキュリティ用のツール導入とLet's Encryptでhttps

上記以外の細かい調整等含め、約5ヶ月になります

■悩んだ点/反省

・悩んだのがタグ機能周りになるとどうすればよいか、かなり悩みました。

結論を言うとToxi法を使用しましたのですがここにたどり着き、理解するのに結構時間がとられました。

また、実装したらしたで、今度はそのタグ機能検索するとなると検索ワードが1つとは限らないので

クエリーを動的に生成する必要が有り、これも実装するのにかなり時間が掛かりました。

SQL文だけならば比較的すぐに検索でヒットしますが、それをSQLAlchemyでどう実現すれば良いかから

かなり時間が掛かりました。DB設計SQLAlchemyの文法に自信は無いですねぇ。。

・1次情報リファレンスから情報得ることがほとんど出来ず(たまにはできたが)、

他人咀嚼した情報からしか情報を得る事ができなかった。

(恥ずかしながら、咀嚼されなければ理解がおぼつかない状態

Stack OverflowQiita個人ブログが無ければこのサイトできなかったので

自信の咀嚼力強化が必須だと思いました。

作成結構時間が掛かったのでもっと短くしたい

総評

・5ヶ月と時間が掛かりまた反省点も多々有るが、とりあえずサービス公開まで

もっていけた事が嬉しいです。ただただ嬉しい。

・FlaskとSQLAlchemyの情報日本語が少ないので公式リファレンスとStack Overflow

行ったり来たりしたおかげで英語アレルギーがそこまで無くなった。

成果物

・で、作った成果物は以下になります

https://gamesanka.com/

ゲームサンカと言います

オンラインゲーマー向け(e-sports)のマッチングサイトになります

名前安直小学生が5秒で考えたような名前ですが、安直で気に入っています

作った理由は、僕はBF1が好きなのでオペレーションキャンペーンと言うモード

やろうとしたのですが、時間帯が悪いのか過疎なか分からないが全然マッチングしないのですよ。

やりたいのにマッチングしないので出来ないどうしよう、と。

また、昔セールFarCry3をかなり昔に購入した時(既に4が発売済み)にCO-OPモード全然マッチしない事が有り

旬が過ぎたオンラインゲームは中々マッチしなくてほぼシングルモードしか出来ない事は割とあると思うんです。

今だとBF4もかなり人数がいない状態なので特定マップのみとか。

なのでオンラインゲームマルチプレイCo-opで人を集めたい時、PUBGやFORTNITE等バトロワゲームスクワッドを

募集する時、オンラインゲーム大会e-sports)を開きたい時に利用して貰えると嬉しいです。

主に想定ユーザーと考えているのは、FPS/TPS/RTS/MOBA等のPCゲーマーをメインに考えていますCS機やTCGでも

使って貰えると嬉しいです。

あとViewレスポンシブでは無く、PC用とスマホしかなくタブレット用の中サイズViewが無いのでご了承下さい。

タブレット解像度が高い方はPC用で見て頂ける助かります

最後にお願いがあります

僕と一緒に以下のゲームを遊んで頂ける方を募集しています

遊んでも良いよという奇特な方がいましたら当該サイト内でコメント頂けると幸いです

・BF1(PC版)

・Dead by Daylight(PC版)

それでは長々とありがとうございました。

・・・

無職はただ楽である。いな楽そのものすらも感じ得ない。

日月を切り落し、天地を粉韲して不可思議無職に入る。吾輩は死ぬ

死んでこの無職を得る。無職は死ななければ得られぬ。

南無阿弥陀仏なむあみだぶつ南無阿弥陀仏

ありがたいありがたい。

2018-05-18

再帰クエリ使えるならわざわざ閉包テーブルとか採用せんでもよくね?

2018-04-17

Google検索、急に質が落ちた

医療ワード対策の流れか、非常に検索の質が落ちて困っている。久々にBingを使ってしまうというどうしようもなさ。

一般クエリーではわからないだろうけど。

2018-03-20

文系エンジニアなんて死ねばいいのに

文系エンジニアなんて死ねばいいのに

俺、Webサービス作ったんすよ(Rails

俺、iOSアプリ作ったんすよ(Swift

俺、Macbook使ってるんすよ(タッチバー付13インチPro

俺、プログラミングスクールプログラミング教えるアルバイトしてるんすよ(そいつはそのスクール卒業生

これぞ量産型文系エンジニア()

懇親会で「皆さん嫌いな言語とかフレームワークはありますか?」と話題になると私は即座にRailsと言う。

すると文系エンジニアはみんな嫌な顔をする。

そこでちょっとお話をすると皆怯んじゃう。

「あのコマンドを打つと中で何が起きてるか知ってますか?」(知らない

ActiveRecord?生でクエリいたことあるインデックス意味くらい知ってるよね?」(書いたことない、適当なこと言う

へーその作ったサービスURL教えてよ

3分

「alert('XSS')」

Session?Cookie?(何それどんな味のクッキー

CSRF?(企業理念か何か?

百歩譲って学生エンジニアならまあセキュリティ無知なのは分かる。

しかしだな、文系エンジニアは「俺もハッキングしたい(笑)」な勢いで詳しく解説することを要求してくる。非常にウザい。

"

お前はよぉ!自分で探すってことをできねぇのかよ!?

"

しょうがないので優しく解説すると「君ってハッキングとかしてそう(笑)」「君将来ハッカーになりそうだわ(笑)クラッキング的な意味で)」

死ねよ。

文系エンジニアはこれだけではない

俺、Git使って開発したんすよ(GUIのSourcetree

え?バグちゃんテストしたんだけどなぁ(完全手動テスト()

デプロイ先は9割Heroku。(HTTPS対応

AWSGCP登録はしたものの使い方が分からなくて結局放置

SSH証明書を使わずパスワードオンリー

pwdcdしか知らない(Makefileを作ったことないからいつもネットコピペコマンド

見た目重視のTerminal(ネットコピペ設定)

最近聞いた文系エンジニアもっと面白い

新規事業を開発してる文系エンジニア集団がいた。

開発は順調、プロモーションをかけていざリリース

はいゴールデンタイム鯖落ち。復旧した時にはゴールデンタイム終了のお知らせ

理由CDNを刺してない、貧弱なプランの鯖(勿論ロードバランサなんか使ってない)

噂による無線LANルーターの設定も出来ないレベルらしい。

でも彼らは一応優秀な文系エンジニア高学歴サービスも作ったこともある、それなりの実績も持っている。しか文系だ。

こういう奴らがいるかちゃんとしたエンジニアを軽視される。黙って営業職に転職してこい。

まあでも大学じゃ作者の気持ちしか考えてないのだから当然のなのかもな(笑)


追記

残念な理系名前を書くだけ一発採用派遣SIer対象としてない。論外だ。

給料が安い?

そんなことは無い。400万以上貰える会社内定もらっているか嫉妬も不満も特に無い。

だがしかし、ムカつく。

そんな奴が同期にいたら蹴り飛ばしてやりたくなる。

そうさ、今はSwiftiOS時代だ。

だが見てみろ、あいつらのアプリバックエンドが無いんだぞ?意欲は認める。だがそれで胸を張ってiOSエンジニアなんて無理があるだろ?

2017-12-06

お前らの読解力ってゴミかよ

都合の良いもの見方しかしないってのはみんなそうなんだけど

お前らにはちょっと期待してたから残念だわ

所詮おまえらも他のおバカさんたちと一緒なんだな

健康系のアフィサイトGoogleに殺されたって記事あっただろ?

俺もアフィ嫌いだから喜んでたんだけど、記事見たら内容は俺が思ってた内容とは全然違った

もし、あなた医療関係者で、一般ユーザーに向けたウェブでの情報発信に携わる機会がありましたら、コンテンツを作る際に、ぜひ、このような一般ユーザー検索クエリ訪問考慮に入れてください。

これを読む限りではどう考えても、信頼の置けるサイトから引用だったりリンクを元にコンテンツを作ってくれっていうGoogleのお願いにしか読めないだろ

現状は専門用語が並ぶ一般向けにはわかりにくい内容を表示を優先してるけど、一般向けに分かりやすコンテンツを作ったやつがこの後からは勝ちにするからねって内容だろ

結果、ウェルク問題と変わらない

企業がお抱えの専門家をこしらえて、現在上位表示されてるサイトソースにして一般向けゴミサイトを量産するだけの話

当然、それにはアフィもくっついてくるかんな

お前らって本当こんなことも読み解けないのかよ

本当にがっかりだわ

2017-11-25

アカウント名にvimを含むユーザを除外して検索する

vim OR @検索に混ぜても問題無いID

検索に混ぜても問題無いIDは「vimsearch」とか「vimfind」みたいな存在しないIDでもいい。

リプライ先がvimを含むIDツイートは弾けない、Vimの人だけど名前Vimを含んでる人も弾いてしまう、他に演算子使ってたりするとちょっとクエリ書くのが面倒、とかあるけど。

(多分だが検索してる人は「lang:ja」も付けてるだろうからと思って書くけど、混ぜるなら「vim lang:ja OR @vimsearch」とかになる)

追記

このツイート経由で知った → https://twitter.com/noumin_T/status/934394301559095296

2017-10-23

クエリってサッと炙ってポン酢食べたくなる感じの語感

2017-09-25

クエリ

アクセスクエリの集計は必ず使えるように教育すべきだと思いました。

あ、ちなみに私下請けデータの集計をしたりします。

「これクエリで集計したら1分で終わるけど、うちでやります?」みたいな

案件も多いので。

お金になるからいいけどさ。

2017-09-19

anond:20170919021207

googleクエリ結果はこれ

https://trends.google.com/trends/explore?date=all&q=programming%20python,programming%20ruby,programming%20C%2B%2B,programming%20java

原因はおそらく大学の授業で使ってるから

http://gigazine.net/news/20140715-python-most-popular-language/

ヨーロッパ大学については調べたけどそれっぽい結果は出てこなかったけど多分ヨーロッパ高等教育でもpython採用されてるっぽい

C++凋落はともかく2017年時点でjavaよりpythonの方が検索回数多いのにはびっくりした

データサイエンスがこれからもっと伸びること考えるとpythonさらにこれから伸びていくと思う

2017-08-09

スラック(笑) 証跡(笑)

頑張りが正当に評価されなくてすごく辛いって言ってる奴から連絡が来て「(そっちから要望たらこっちから一瞬で結果が出てくる茶番をやるので)チャットに書いておいてください」って口頭で依頼したら元気よく返事だけが届いて宙に向かって熱となって消えていって、後で横から「何か唐突文書が増えてるんですがこれは何ですか」ってクエリが来て経緯説明要件の再伝達が発生した

2017-07-24

AIに対する恐怖

弊社にエクセルはいいけどアクセスクエリとかVBAは何か怖いから使わない強者社員がいる。

その社員が、「この間ツイッターAIが謎の言語を生み出して怖いっていうリツイートがきた。AIは信用できない」って憤慨していた。


AIって暴走して人類を脅かすみたいなイメージあるよなー。

確かに色々な作品暴走してるもんなー。

(実際マイクロソフト社のTayは暴走?したけど)


パッと思いつく作品は……

・ARM

ターミネーター

エルゴプラクシーイギー暴走は違う?)

BEATLESS

2001年宇宙の旅

アニマトリックス

火の鳥

AIの遺電子

これだけ。

いや、もっとあるだろ。

ちなみに私のチンポウチンコウも暴走している。

2017-07-06

無知無理解プロジェクトが殺されそうだ

当方フリーIT 技術者。ある Web ベースシステムを開発しているのだが、プロジェクトマネージャーリーダーをはじめとするメンバー無知無理解のおかげで作業が進まずに困っています

ブラウザーキャッシュの仕組みを少しでも知っている人なら、非 IT 系の方でも読めるように書きました。ぜひ助言をお願いします。

登場人物

私は発注元(A 社)に客先常駐している。私が契約しているのは A 社のグループ会社である B 社だ。

A 社内のチームメンバーは以下のとおり。

さて、今開発しているシステム(以下システム P)はもともとスタンドアローン運用する形態だったが、最近クラウドバージョン提供も始まり現在スタンドアローンバージョンクラウドバージョンの並行開発となっている。X さん、Y さん、Z さんは主にクラウドサーバー管理や、私や W さんが作った部分のテスト担当している。

問題発覚

クラウドバージョンの初めてのアップデートを控えた 6 月に問題が発覚した。コードアップデートすると、ブラウザーキャッシュが効いていて表示がおかしくなるというのだ。

プログラマー以外の 4 人は実は Web システム案件は初めてで、ブラウザーキャッシュの仕組みすら理解していない。X さんから相談を受け、「Web アプリケーションからブラウザーキャッシュクリアーすることはできない。代わりに、HTML から読み込まれる外部リソースの後ろに『?v=3.14』のようなダミークエリ文字列をつければよい。アップデートのたびに数字を変える。これは一般的採用されている手法で、これ以外の解決策はない」ということを伝えた。具体的にコードエディター上で修正イメージを見せて、すべてに対応するのに 1 日あればできる、とも。

これで「そうですか、ではお願いします」となれば、テストを含めて 2、3 日で終わった話なのだが、ここから長い混乱が始まる。

前回リリースから変更のあったファイルの洗い出しを命じられる

X さんから、「変更箇所をなるべく少なくしたいので、前回リリース分と今回リリース分で変更のあったファイルリストを出してほしい」と言われる。変更のないリソースにはクエリ文字列をつけたくないらしい。

内心呆れつつ、Git (ソースコード管理システム)でファイルの変更履歴を調べ、一覧表を提出した。X さんに「それぞれのページでソースコード確認し、この一覧表に載っているファイルにはクエリ文字列がついていることをひとつひとつ確認するのですよね。却って手間が掛かりますよ。それよりも、すべてのファイル対象にしたほうが作るほうもテストするほうも楽です」と伝えた。

問題発生箇所の調査を命じられる

6 月も残り 1 週間を切ったある日、Z さんから、「実際に問題になっているのはどのファイルのどの部分か、スタイルシートのどのクラスID 指定が効いていないのか、V さんが知りたがっている。原因解明に必要なので調べるように」と指示が出る。

私は「ブラウザーキャッシュが効いているためで、キャッシュを消すか無効にすれば直る。今までも修正のたびにテストではキャッシュを消してもらっていたでしょう」と説明するが、調べろ調べろと繰り返すばかり。「そんなことを調べて何になるんですか。キャッシュ問題ですよ?」と言うと、Z さんは手をわなわな震わせて、「お客さまが知りたいと言っているのに、『そんなことを調べて何になるんですか』とはどういうことですか!」と声を荒らげる。しまいには「お客さまのご要望にお応えして私たちお金をもらっている。お客さまからの依頼なら応えるのが当たり前」と言い出す。技術的に意味がないことをいくら説明するも理解されない。

ブラウザーキャッシュの仕組みを基本から説明する

プログラマー 4 氏の知識底上げをしないといつまで経っても平行線だと思い、Redmine (課題管理システム)にブラウザーキャッシュの仕組みを解説する文書投稿した。ほぼ同じものを以下に掲載する。非技術者にも分かりやすく書いたつもりだ。あまりかいことを説明しても混乱させるだけだと思い、リクエストヘッダーの Cache-Control や Expires などは説明を省いた。

キャッシュとは

キャッシュ(cache) とは、一度読み込んだデータを内部に保存しておく機構のことです。2 回目以降の読み込み時はキャッシュを読み込むことで、処理時間の短縮を図ります

ウェブブラウザーにおけるキャッシュ一般に、HTML ファイルおよび HTML から読み込まれる外部リソース(スタイルシートファイルJavaScript ファイル画像ファイルなど)に対して適用されます

キャッシュが作られるタイミング

ブラウザーがあるファイルを読み込もうとする時、キャッシュがなければ実ファイルを読み込んだ上でそのファイルの内容をキャッシュします。

キャッシュが破棄されるタイミング

キャッシュがいつ破棄されるのかは完全にブラウザー依存です。異なるファイルキャッシュが同じ期間だけ存在するかどうかも分かりません。

キャッシュユーザーブラウザー操作で明示的に削除(クリアー)することはできますが、 サーバーからクライアント(ブラウザー)のキャッシュクリアーすることはできません。

ウェブアプリケーションキャッシュ対策

ウェブアプリケーションアップデートした際、クライアントキャッシュ無効にするために、以下の手法がよく使われます

link rel="stylesheet" type="text/css" href="style.css" >
< script type='text/javascript' src='script.js' >< /script >
< img src="picture.jpg" alt="" width="640" height="480" >

このような外部リソース読み込みについて、ファイル名の後ろにクエリ文字列を追加します。

link rel="stylesheet" type="text/css" href="style.css?v=2.4.0" >
< script type="text/javascript" src="script.js?v=2.4.0" >< /script >
< img src="picture.jpg?v=2.4.0" alt="" width="640" height="480" >

スクリプトでない静的ファイルクエリ文字列を付加しても、読み込まれファイルは同じです。つまりstyle.cssstyle.css?v=2.4.0 は同じ style.css というファイルを指します。

ブラウザーが style.cssキャッシュしている状態で、この行を読み込んだとします。

link rel="stylesheet" type="text/css" href="style.css?v=2.4.0" >

ブラウザーは「style.css?v=2.4.0 というファイルキャッシュにない」と判断し、style.css?v=2.4.0 というファイルを読み込みます。結果として、ディスク上の style.css が読み込まれスタイルシート更新されます

この HTML をまた読み込んだ時は、「style.css?v=2.4.0 というファイルキャッシュ済み」と判断し、ディスク上のファイルではなくキャッシュを利用します。

ウェブアプリケーションバージョン 2.5.0 にアップデートする時には、「?v=2.4.0」の部分を「?v=2.5.0」に書き換えてリリースします。

link rel="stylesheet" type="text/css" href="style.css?v=2.5.0" >
< script type="text/javascript" src="script.js?v=2.5.0" >< /script >
< img src="picture.jpg?v=2.5.0" alt="" width="640" height="480" >

同様の仕組みで、2.4.0 時代キャッシュがあっても 2.5.0 用に書き換えられたファイルが読み込まれキャッシュ問題は起こりません。

この手法は、キャッシュ問題解決する手段としては一般的に用いられているものです。俗に「キャッシュバスター (cachebuster)」とも呼ばれます

上記に長々と書いた内容を踏まえ、今回の問題についてご説明します。

「暫定対応」の指示が出る

日経った日の午後。Y さんが A4 判数ページにもなる「調査報告書」を作成した。問題になっているスタイルシートについて前回リリース分と今回リリース予定分の差分を取り、それぞれの行について「新規」「変更」「削除」の印をつけ、「とりあえず、このクラス指定が効いていないだけなので、HTML 中にインラインスタイル(< div style="..." >)で指定すればよい」と結論づけていた。

報告書には「状況から見て、変更・削除されたスタイル指定は影響が出るらしい。新規に追加した部分については影響がないようだ」とも。私が書いた説明を読んでいないのか、理解できなかったのか。

この報告書を元に、X さんから「この行とこの行にインラインスタイル指定してください。これで暫定対応します」と指示が出た。

私は「この修正は何ら根本的な対策になっていないことは理解していますか。『現状で問題になっている箇所』は、この環境たまたまそうなっているだけの話で、ほかのお客さまの環境では別の画面が崩れるかもしれないのです。それを承知の上で、これを暫定対応としてよいのですね」と X さんに確認。X さんは「はい」とだけ答えたので、黙って作業完了した。Gitコミットメッセージに「この方法は何の効果もないこと、それでも作業をしてよいのかを X さんに確認の上、作業」と書いてコミットした。

しばらくすると X さんから「うまく表示されていますOK です」と報告があった。

その日のうちに問題再発

夕方、私が帰ろうとすると、X さんが Y さんに「画面がおかしい」と言っている。横から覗くと、先ほど「暫定対応」とやらを入れた画面で、表示は正常だがボタンを押しても何の反応もない。私は静かに「JavaScriptキャッシュですね」。

聞けば、Y さんは「キャッシュスタイルシートにだけ効く」と思い込んでいたらしい。やはり先の説明を読んでいないようだ。そして、Y さんの環境ではボタン有効だったとも。

私は「Y さんの環境では(JavaScript の)古いキャッシュは効いていなかった。X さんのところではキャッシュが効いていた。これが、私が言っている『環境依存』の意味です。昼の暫定対応ではダメなんです。半月から私が言っているように、すべての外部リソース読み込みにキャッシュバスターをつけないと解決にならないんです」と伝える。

Y さんは観念した様子で、「キャッシュバスターって、一部分にだけ適用することもできますか」と聞く。この人、理解してないなと思いつつ、「はい、できますよ」と返すと、「では、問題の発生している範囲調査して、問題が起こっているファイルにだけキャッシュバスターを……」。やはり何も分かっていない。

私は繰り返し、ブラウザーキャッシュ環境依存なのですべての外部リソース読み込みにキャッシュバスターを付加しないと無意味だと説明した上で、こう付け加えた。

「指示されたことだけを黙ってやっていれば、そりゃあそっちのほうがラクですよ。でも、喧嘩をしてでも、場の雰囲気を悪くしてでも自分意見を主張するのは、技術者としてのちっぽけな良心からです。お願いですから専門家の言うことを聞いてください。私の意見が信用ならないのでしたら、ほかの技術者意見を聞いてください」

対応が先送りになる

この数日後、本件の対応を先送りにすることが決まったと X さんから報告があった。

聞けば、リリースを急いでいるのは特定顧客要望によるものらしい。その顧客スタンドアローンバージョンを利用しているので、アップデートの現地作業の際にブラウザーキャッシュを消してくればいいとのこと。

リリースに間に合わない間に合わないとあれだけ騒いでいたのに。プロジェクト管理がまるでできていない。

レビュー開催

そして今日夕方、この件についてレビューを開きたいとプロジェクトマネージャーの V さんから言われる。レビューって、何をやればいいんだろう。何をすれば気が済むんだろう。Redmine に書いた説明を読んで理解してもらえれば、やるべきことはひとつしかないと分かろうものなのに。

X さんから質問を受ける。「例の件、ほかの方法はないんでしょうか。『こういう方法もあるけれど、工数が掛かるので採用しません』というのがもしあれば話が進めやすいかと」。残念ながらありません、せいぜいファイル名そのものを変更するくらいですが、本質的には同じことですし管理の手間が増大します、と伝えた。

ついでに、X さんに「あの説明を読んで、よく分からない部分があったら教えてください」と尋ねると、実は忙しくて斜め読みしかしていないと白状された。その状態対応策を一生懸命協議していたのですな。

レビューの席でまた一悶着ありそうだ。どうやったら彼らを納得させられるのだろうか。信用できない技術者説明してもらったって、信じないんだったら意味がないのにねえ。

追記

文字数制限に引っかかってしまい、末尾が切れてしまっていました。続きはこちらに書きました。

https://anond.hatelabo.jp/20170706122924

2017-07-01

はてなアンテナを某サイトCloudflareがはじいているので

更新通知されないのが

Dan's source viewCF画像認証captcha画面らしきものが出てきたり

URLに?なんとかかんとか だかクエリーに(修正→)記号は半角で &なんとかかんとか だかつけて新規登録しようとしてもページ?が存在しないエラー

だったりしたらそんな感じかな

2017-06-06

逆SEO活動をしている人間によりブクマ強制プライベートにされた

昨日、夜に自分ブクマを開くと、鍵のマークがついていた。

色々手繰って調べると、プライベートモードになっているようだ。

いぶかしみながらも思い当たる節はあるので、メール確認すると、はてなからの「重要おしらせメールが来ており、ISP責任制限法に基づく削除申立に対して照会を行ったが、反論も削除も無いので送信防止措置を執ったとの事。

で、更に手繰ると1週間以上前に照会メールがあった。

しまった。

メールをあまり確認する癖が無い。だからメールがたくさん溜ってしまい、見落としてしまったようだ。

この申立をした人物は同様の行為しまくっている。

過去行為を消す為だ。

例えば有名どころだと、ネット上のスキャンダル事件を扱う「楽しくないブログ」がかの人物行為過去掲載し、削除申請を受けた。

これに対し、楽しくないブログ管理人記事を削除し、削除に至った理由、申立の内容に差し替えた。

ところがこれは、過去出来事類型が推測できることわりの文章であり、これにも削除申立が来たようだ。

今はエントリが完全削除されている。

エントリも無いし、ブクマにも何もコメントが無く、一切の事実が判らないのでURLを示すが、これだ。

http://b.hatena.ne.jp/entry/nvmzaq.blog.fc2.com/blog-entry-284.html

ほかにも記事はあったが、全て同様の経緯で削除されている。

これなども同様にエントリも見れず、ブクマにも一切のコメントキャッシュもないので示すが、これだ。

http://b.hatena.ne.jp/entry/nvmzaq.blog.fc2.com/blog-entry-342.html

ねこら氏も同様の申請を受けて削除をした事件があった覚えがあるが、ちょっと記憶が定かではない(あったとしても記事は消えているか確認が難しい)

そもそも、私にしろ、楽しくないブログしろ過去の事を問題として記事を書いたりブクマしたのではない。

この人物過去を消す為に逆SEO手法を使っている事に注目したのだ。

今はGoogleの対スパムアルゴリズムが強化されてgoogle八分されているが、この人物のことを書いた大量のスパムblogがあった。

検索汚染の為だ。

殆どblogエントリが1つか2つだけ。

そこでこの人物ポジティブ履歴ワードサラダ的に並べた文章投稿されていた。

更にコメントスパム的な方法も行なわれていた。

blog記事にもエントリにも全く関係が無いコメントをじゅうたん爆撃していたのだ。

友人同士でやり取りしているblogゲームblog趣味blog旅行blog日本舞踏blog、全くのべつまくなしに、過去出来事を書いた文章が下がるように同じようなコメントをじゅうたん爆撃していたのである

これは今でも大量に残っていて、逆SEOの役目をしている。

googleで「学生時代法学者セミナーを見て凄いと思いました。」とのクエリ検索するとじゅうたん爆撃の様子を見ることが出来る。

猛烈な数を見ることが出来る。

更にWikipedia編集にも不審で不穏なものがあった。

人物過去記述のうち、不都合記述が何度も削除されていた。

これ自体は「忘れられる権利」として社会復帰必要編集と言えるかもしれない。

だが、これを行っているのはある一人のユーザーなのだ

で、このユーザーは加筆も行っているのだが、この人物の新著の発売を履歴に書き加えているのである

こうなってくると公益個人名誉を秤に載せた編集はいえない。

この編集者動機については、ブックマーカーなら好物であろう。

私が削除申立され、強制プライベート化された原因のブクマはこれらのうちどれかだ。

逆SEOスパムについては、一人でやるとは考えにくい。

業者に依頼した可能性がある。

そうなるとどこの会社か?どうやって営業たか、が気になるところだ。

まり広告打って依頼が舞い込むのを待つのか?過去を消したい人に営業を掛けるスタイルなのか?

いずれにしても、blog乱立はやや迷惑行為だが責められないと言えるが、blogコメント爆撃ははっきりと迷惑行為だ。

私にしろ楽しくないblogしろ逆SEOが行われている、更に迷惑方法であるという点に注目したのに、当該人物過去記述という点に触れていた為に、名誉毀損として削除申立をうける事になった。

なお、はてなによると、指定された期間に反論権利行使を行わなかったのでもう異見は聞かない、との事である

申立の内容に沿うように編集しても不可であると。

要するに、申立が削除なので、削除以外では強制プライベートからの復帰はしないよとの事なのだろう。

これに対し色々言いたいことはあるが、まずはメールはこまめにチェックするのが大事だと学んだ。

2017-05-31

http://anond.hatelabo.jp/20170530233852

SQL意識して書かないと死ぬほど読みにくくなるのが気に入らない。

前の職場には何もかも全部大文字表記し、ろくに改行も入れないバカが居て死ぬほどつらかった。あろうことか、読みづらいクエリを書ける自分プライドを持ってるっぽかった。ああいう奴とは二度と仕事をしたくないよ。

SELECT COL0,COL1,COL2 FROM TABLE0 WHERE COL0=1000 AND COL2 IN (100,102)

これを少しでも読みやすくするために予約語大文字カラム名テーブル名を小文字表記している (カラム名テーブル名が大文字で決め打ちされているなら、予約語を小文字統一している)。

SELECT col0,col1,col2
FROM table0
WHERE col0=1000
  AND col2 IN (100,102)

しかしこの方法も万全ではなくて、例えば複数テーブルが関連するクエリ

SELECT t0.col0, t0.col1, t0.col2, t1.col0
FROM table0 t0
  LEFT OUTER JOIN table1 t1 ON t0.col3=t1.col3
WHERE t0.col0=1000
  AND t0.col2 IN (100,102)

みたくなってしまう (テーブル名のtable0、仮名t0、カラム名col0が全部小文字になっているため、なかなか読みづらい)。

皆さん、どうやって工夫されてますか?

2017-05-30

SQLが好きになれない

たまにSQLを書くのだが、やはりSQLが好きになれない。

構文によって書き方が違うのがわかりにくい。

SELECTはまだいい。問題はINSERTとUPDATEである

INSERTはVALUESで書くくせに、UPDATEになるとSETで=でつなげているのモヤモヤする。

さらに()が必要な構文だったり必要ではないものであったり統一感がないのが混乱する。

INTOで文章らしさを出しているのかしらないが、どちらにしろ文章にならないので中途半端なのでいらないのではないだろうか。

長ったらしいSQLを書かされるのがとてもクレイジー

ちょっとした検索したい場合はいいかもしれないが、プログラムの一部としての長ったらしいSQLは可読性も悪ければ保守性も悪いで誰も得しない。

さら解決される順番が未だによくわからない。特にGROUP BYを使う場合にどういったタイミングでされるのか非常にわかりにくい。

サブクエリ無駄に重ねたり、ON DUPLICATED KEY UPDATEをわざわざ書いたりとなぜ1文で完結させようとするのだろうか。

どっちみちトランザクション複数文になるのならば、最初から複数文となることを前提した仕様としてもいいのではないか

そもそもコードから呼ぶ場合フレームワーク周りでなんとかしろという話ではありますが)

他にもストアドプロシージャやSQL高速化問題もあるとは思うが、自分自身が未熟者でそこまで語れないので書けない。

プログラミング言語については様々な文句が噴出するにもかかわらずSQLについて文句が出ないのはどういう了見なのだろうか。

反対にNoSQLRDBMSのようなことを始める本末転倒な人たちも見かけるがそれぞれ適材適所な使い方をするべき。

体系的に学んでいれば今よりもっとすっきりと理解できるものかもしれないが、嫌悪感を抱いてしまった以上は学ぶことなくずっと憎み続けていくことになるのだろう。

そういうわけでやはり僕はSQLが好きになれない。

http://anond.hatelabo.jp/20170529142727

みなさん、返事ありがとうございます。初めてで書き方が悪く、答えようがなかったですね。皆さんの質問に答える形で補足させて頂きます

名古屋から1時間ちょっと人口8万人の都市。全国の普通チェーン店がある、普通田舎テレビは7CH映ります自然うまいバランスで住みやす都市だと思う。

年齢は45歳くらいまでがいい。もちろん若くてもいいです。

スキルレベル

【具体的な業務

サーバーメンテナンス作業

・各種開発作業

主に、以下のような開発作業があります

1)サーバー側で稼動してる、パワコンデータ受信プログラムPHP / sh

2)端末側で稼動している、データ取得送信プログラムC++ / PHP / ash

3)Web管理画面HTML、およびCGIプログラムHTML / CSS / PHP

データメンテナンス作業

データベースMySQL採用しております

MySQLクライアントアプリより既存データ修正や削除、データ入れ替え等を行います

大量件数場合は、SQLクエリ作成し一括で操作を行います

などです。まあ、実際は今のサービスは開発よりも、運用保守重視。主にサーバー上のプログラムデータの整理が主です。

上記よりも、使い始めた人からちょくちょく問い合わせが来るのでその対応がメインになると思います

仰るとおり、美しいプログラムでほぼソフトウエア的な保守必要ないです。

仕様変更機能追加もその方にやってもらうので。

上記まで(ほぼ問い合わせ)が一日1時間くらい。

残りの時間を使って、新しいサービスを僕と二人で考えたい。

から求めるスキル新サービスを何とか形にしようとする意識情熱グーグル先生に聞いて自分問題解決しようという気があればいいです。

もちろん、あるに越したことはないですよ。その分しっかりお支払いします。

フィロソフィーすごく、言葉に突き刺さります

具体的には 下請け仕事はしない。自分たち面白いと思うことしかやらない。(開発しない)

エンジニアの人にはアイデアは僕が出すから形にして欲しい。それか一緒にアイデア出しあって、面白いサービスリリースしよう。マネタイズ経営者(僕)が考えるから

上記スキルがあって

年収は400万~

勤務地名古屋から電車で1本 1時間半。

いざとなったら出社は週に2-3回でもいい。

都会から弊社の近くに引っ越してくれるなら、アパートくらい用意します。

釣りスキーロードバイクアウトドアが好きなら、申し分ない環境だと思います

はてなはじめてで、ここでいきなり全部書くのはちょっとと思って、ふわっとした最初で、様子見でごねんなさい。

さて、これくらい書けばちょっとはおっ!って思ってくれるのであろうか?

前回意見頂いた皆様含めて、もっと意見下さい。

意見くれた人たち!ありがとう!これにも意見下さい。

希望者は僕にコンタクトして下さい。

あー、実際のサービスアドレス書けば一発なんだけどな。このもどかしさ。

2017-05-08

クエリを信用しない上司

上司からこういう感じで集計したエクセルが欲しいと言われたので、

クエリ抽出してエクセルに書き出して渡したら、

上司「え、早くない?」

私「アクセス使用しましたけど?」

上司「あー……。俺アクセス信用してないんだよね。エクセルでやってくれない?」

私「あsgじゃgkぁっががkl(涎)」

こんな上司日本全国に1人しかいないと思いたい……。

というか手作業至上主義みたいな奴はなんなのよ……。

アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん