しぃぶろぐ。

仕事とか技術関係のこと。他色々

javascript小ネタを放出して知識のなさを露呈してみる

webエンジニアを自称しておりますが、

肝心要のフロントエンドにはとても弱いです。

というわけでここ数ヶ月でjavascriptで詰まった箇所をネタとして放出。

 

javascriptで小数点以下の0詰めをする

数値の左側を0詰め(ex. 00123)するやり方はよく見るのですが、

数値の右側、小数点以下を0詰め(ex.12.300)する方法が、ググっても出てこなかったので試行錯誤してました。

javascriptで小数点以下0詰め

 

javascriptにもオブジェクトはある

fullcalendar.jsを「時間割」として使うために、中身をガリガリ変えている途中です。

イベントの時間の「時」だけ変数に渡して、数値を計算して表示したかっただけなのに、

イベントの時間のほうまで変わっちゃってて何コレ!!!!状態でした。

あー、javascriptにもオブジェクトあるのねー……メンド(げふ

グーグル先生に聞いたら、こんなの調べないとわかんないよー!!な解決方法でした。

woshidan.hatenablog.com

woshidanさん、ありがとうございます。

1からオブジェクト宣言してられないので、jQuery使いました。jQueryすばらしい…。

ライブラリがあって初めてjavascriptは「言語」足りえる感じですね…orz。

 

fullcalendarでIE不具合

fullcalendarに関しては今度使い方まとめます。色々便利ですね、あれ。

が、Chromeだとイベントが見られるのに、IEだと見られない不具合がありました。

IEだとmoment型を正常にパースできなかったんですよ…。本家ではちゃんとできているので、こっちの書き出しかたの問題かもしれませんが…。

JSON受信部で無理やりパースしてeventにぶち込む様にしたらIEでも見られました。

 もー、各ブラウザ間のCSSとかjavascriptとかの差異はどうにかならんかなー。

あ、ちなみにedgeでも見ました、IEと同じでした。何も変わらないorz

引っ越しも落ち着いたので最近の自宅IT化について

夏バテてますが元気ですよー。

だいぶネタがたまっているので、そろそろ大放出したいところです。

そこで今日は、前回の投稿から我が家がどうなったのかをまとめます!

 

 無線LAN環境

主人に以前私が使っていたXperiaを渡してます。(主にLINE目的で)

外ではWimaxを使っているのですが、家の中ではもちろん無線LANです。

私の帰りが遅いので、夕食はパパにお任せしてます。

自然とキッチンに立つ時間が多くなるのですが、キッチンは電波が弱いんですねー…。

帰るよー、の連絡を入れても「電波なくて受信してなかったー」が多発するので、

やはり1台でカバーするのはいくら木造でも難しかったのかと…、

諦めて中継器を導入しました。

 acも中継してくれるやつでコンセント直挿しできて安くて、のコンセプトで選んだんですが、

やはり、別メーカーだとすんなりいってくれませんでした。

そこそこネットワークの知識がないと、このテの商品は導入厳しいですね。(と現役SEが言ってみる)

私の場合は、最初っからLAN直結で設定していたのですが、

設定できた!と思って設置予定箇所に持って行くと無線LAN受信強度のランプが光ってくれませんでした。

何度かやり直してどうしようもないので、とりあえず(光らないまま)設置しておいたら、

気づいたら使えるようになってたっぽいです。光るようになっていました。謎。

リビング+キッチンにも、安定的な電波が届くようになりました。

 

リビングパソコン

リビングにも電波がとどくならじゃぁ!ってことで、前々から検討していたリビングパソコンを導入しました。

ECS 小型PC LIVA MINI PC KIT OS Windows8.1 with Bing 搭載モデル 32GB LIVA-C0-2G-32G-W-OS
 

 

ついでに無線キーボード(とマウスですがマウスは余りがありました)も。

LOGICOOL ワイヤレスキーボード Unifying対応レシーバー採用 K270

LOGICOOL ワイヤレスキーボード Unifying対応レシーバー採用 K270

 

Logicoolさんの無線は良いですね!電池持ちもいいし、トラブル少ないです。

 

テレビにHDMIで接続してます。

用途としては動画とブラウジングですね。

マシンパワーが必要そうなときはリモデして、2Fのメイン機に接続しています。

これに関してはエントリを分けて詳しく語りたいと思います。

30分くらいの動画なら普通に見れるのですが、1時間こえるともうダメなんですよね…。

どうしよう…リビングでトトロを見せたかったのに!!!な状態です。現在。

 

NAS

なす。揚げびたしが好きです。

パソコンに繋げないで、ネットワークにつなげたHDDですね、ようは。

 

無線LAN機器がこれだけ増えると、スマホやらタブレットやらから直接ファイルを閲覧したいので導入。

動画やら自炊したファイルやら突っ込んでます。整理していないから主人にわかりにくいと怒られています。

ネットワーク、それも無線を経由なので基本もっさりしていますが、通常用途には無問題。

 

まとめ

無線は便利ですがそれですべてをまかなえると思ったら間違いなんだからね!

引っ越しました。

夢の一戸建てです!

インターネット開通までにえらい時間がかかってしまいました。

引っ越しついでにいろいろ環境を整えようかと画策中です。

 

とりあえず開通したところで、無線LANを購入。

できれば木造二階建て全域をカバーしたかった+有線LANが1Gほしかったのでこれにしました。

 対角線の部屋の端っこでは障害物が多いせいかギリギリですが、これ1台で家じゅうサクサクインターネットです。

 

今までのノートパソコンに加え、i7のデスクトップ1台+液晶1台を購入。

後々はもう一つ液晶を増やして2.5画面2PCにしようとしております。

キーボードは変わらずLogicoolの無線キーボード。

それにLogicoolの無線トラックボールを追加しました。

LOGICOOL ワイヤレストラックボール M570t

LOGICOOL ワイヤレストラックボール M570t

 

 今日から使い始めましたが、割と快調です。手首がやっぱり楽ですよー。

 

それに人をダメにするソファを導入。

毎晩ダメになりながらまったりしております。

 

先月あたりはエクセルマクロと大格闘していたのであんまりネタが(´・ω・`)。。。

家での開発にはphpstormを導入してみました。絶賛カスタマイズ中です。

Mysqlのプロシージャで配列を使いたかった件

すでに定形になっておりますが、お久しぶりです。元気です。

 

で、今回はMysqlのプロシージャで配列が使えなかったのでどうしたかという内容です。

というか使えないんですね…。半日ぐらいどうにかならないかと考えこんじゃいましたよorz

 

やりたかったのは、

where in (***,***,***) の*******をプロシージャの外から渡したかったのです。

最初は素直に、プロシージャのinに 111,222,333 といれたら、

in('111,222,333') とされてしまいました。

ひとまとめです。なんてこと。

色々(半日ぐらい)調べてみましたが、結局プロシージャに直接渡すことはできませんでした。

 

今やってるのは、Excelマクロ→webapi→プロシージャ→Excel

なので、webapiでごにょごにょしてみました。

Excelマクロからは111,222,333でAPIをキック

受け取ったPHPがtmpテーブルに

111
222
333

とインサート。

インサート後にプロシージャをキック。

プロシージャ側では

where なんとか in( select ごにょ from tmpテーブル) としました。

プロシージャの最後に忘れずにtmpテーブルは空にしましょう。

次のリクエストとごっちゃになってえらいことなります。

 

文字列をそのままinに放り込みたかっただけなのに、えらい遠回りです。。。

プロシージャで配列使えればいいのになぁ。

そこまでプロシージャに求めちゃだめか。。。orz

highchartであれこれ

旦那が盲腸で手術になったりしましたが、私含め元気です。

盲腸怖いですね。。。

 

最近GoogleChartから諸事情でHighchartの方にシフトしています。

Highchartはサンプルが充実しているせいか、

あまり日本語で解説されていないんですね。。。

どうやったらjsonで引っ張ってこれるのか、乏しい英語読解力で頑張りました。

参考にしたのは

How to load MySQL results to Highcharts using JSON

です。

 

今日は6時間ぐらいBluetoothと格闘して消耗しているので、キモのところだけを箇条書きにします。

元気がでたらまた別エントリでまとめますね。

PHPからJsonでHighchartにデータを渡す方法
  1. パラメータをPOST色々渡したかったので、dataを$.ajaxPHPから取得する
  2. PHPではMysqlSQL投げて配列へ格納して、ループでjson形式へ整形
  3. JS側に戻ってdataをjsonにパースする
  4. Highcharts.Chartをnewしてseriesにパースしたdataをセットする

以上です。

$.getJSONを使ったサンプルが多かったんですが、

パラメータの渡し方がイマイチわからなかったので断念しました。

$.ajaxの方法はGoogleChartのコードを流用です。(参考:グラフAPIの件、続き。 - しぃぶろぐ。

 

あと小さなポイントとしては、文字列は""で囲む。''じゃダメでした。

…あれ、これってJS界では常識なのかな…。。。

今回JSONLintにもお世話になりました。

SublimeTextにもLinter入れないとなー。職場には入れたけど、個人のには未だ入れてないんだよなー。

SublimeTextに関しても備忘録代わりにエントリ投げたいのですが力尽きたのでまた今度。

不定イコール不定は不定

先週のになりますが。現場でうぉーたー!した話です。

今の現場ではプロシージャでなんでもやっているらしく。パフォーマンスがえらい悪いわけですよ。
ある帳票の出力に1時間とかかかるんです。。。
中身みたら、ななせんぎょう以上ありました。ありえん。
しかも繰り返しが入れ子で、いくつsql発行してるんだって話ですよ。たしか三千こえてた気が…
でまぁ、中を見ると同じような文ばかりなもんで、なんじゃこりゃーーーーーーー!

前置きが長くなりました。
結局どういうことだったかと言いますと、
項目がnullの時とそれ以外の時でsqlを分けてたんですね。
調べて初めて知ったのですが、
MySQLではnull=nullがTrueにならず、nullになるんですよ!
てっきり同じだからtrueになると思ってました。
基本的にはis nullを使用すること、となっていましたが、まだるっこしくてやってられません。
そこで。
null <=> null だとtrueになります!
もちろん他の値もちゃんと比較できます。
公式に載っていなかった気がしますが、ちゃんと使えます。

これのおかげでsqlがざっくり六分の一位にできそうです。

nullという値は空ではなく、「不定」なんだと認識しましたとさ。

しぃ は prop() を おぼえた!

いい加減眠いので今日覚えたことを簡単に。

私、今日はじめてattr()以外にprop()があることを知りました。

jQueryでドロップダウンのselectedになってるoptionのインデックスを取るには、propでないとダメなんですね。

 

やりたかったのは、

「ドロップダウンのselectedを上下に動かす」です。

ついでにフォームのsubmitもしています。

jQueryでselectタグのselectedの移動