しぃぶろぐ。

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

職場と家での開発(ハード的な)環境

年が明けてます。

結構経ちましたが、お元気ですか?

私は昨日の大雪騒動でへとへとです。

 

最近の開発環境+あるふぁについてまとめておきます。

あるふぁってひらがなだとちからがぬけますね。

 

@職場

古(くもないけど型落ちていた)Let'sNoteから変わりまして、

Thinkpadになりました。

赤ポチ大好きです!!!が、通常入力は東プレの外付けキーボードなのであまり出番がありません。

軽くて薄くてメモリが20Gもあります。

仮想環境だってさくさくだもんね!ぜんぜん使ってないけど!!!

ちょっと、この辺りは近いうちにどうにかしたいです。

xamppだと激重なので、vargrantにしてみたい…。

↓まとめ。

 

  • PC(Thinkpad
  • CPU:i75600
  • メモリ20G
  • SSD
  • IDE:phpstorm(便利です
  • rlogin
  • mysqlWorkbench
  • Boostnote(入れてみました。記法覚えたい…)
  • evernote
  • executer
  • clcl
  • 他いろいろ

 

@家

家ではデスクトップのメイン機が1台。

そこにリモートデスクトップして開発する端末として、

リビングPC1台、旧メインのノートパソコンが1台あります。

開発部屋が寒いので、最近は暖房の効いたリビングか寝室でお布団に入ってカチャカチャやっています。

メイン機

cpu:i7(世代忘れた…

メモリ:8G

リビングPC

以前紹介したECSLIVAのWin8モデルです。

shiranuik.hatenablog.jp

自力で無事にWin10にアップグレードしました。

(アップグレード前に処理が必要です。気になる方はこちらを見てください)

chromeとかいろいろ入れてましたが、一旦削除しないとアプデ用領域確保できませんでした。

最近はamazonプライムビデオのおかげで、主な用途は

息子たちがテレビでドラえもんを見る

になっております。

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

ノートパソコン(たしかFaith製

cpu:i7(これも世代忘れた…

メモリ:たぶん4Gくらい…?

旧メインなのでstormさんとかいろいろ入っていますが、今はもう使っていません。

リモデ専用機になっています。

 

最後の旧メイン機に、モニタの接触不良がおこりはじめております(がくぶる

それ以前にでっかいノートパソコンを(家の中だけでも)持ち歩くのが面倒になってきました。

な・の・で!

新しい小型ノートパソコン買っちゃいましたw

vaio.com

えへww

小さくて軽いは正義です。

来週末に届く予定なので、現在首をながーーーーーーーくして待っています。

XAMPP環境でmysqldumpslowをする。

年の瀬ですね。

私も今日で仕事納めです。

 

気づいたら8月末頃から4ヶ月もあいてしまいました。

基本的にネタが微妙で出せなかったせいです。

日常小ネタだけでも出しときゃよかったかなー。

 

本題です。

今日のネタはMySQLの分析ですよー。

 

本番DBのデータ量が増えてきたせいで、パフォーマンスがおちるわロック待ちtimeoutするわで大問題中。

そのため、まあまずはスロークエリでも分析すっかね、と思ったところ。

本番DBでmysqldumpslowしても、そんなコマンドないよ!って怒られてしまいました。

あれー?と思いつつ、じゃぁ本番鯖でやるのも何だしローカルでやるかねと思って落としてきてコマンドプロンプトでmysqldumpslowしてみたら、

やっぱりそんなコマンドないよ!って怒られました。

おこっちゃいやん。

 

世の方々は「Mysqlが入ってるLinuxならふつーに使えるYO」みたいなこと書いてるのになんでぇぇぇええええ。

と、小一時間悩んでしまいました。

結論を申しますと。

mysqldumpslowは.plファイルでした。

perlにパスを通していない(他もいろいろ)ので実行できませんでしたよ。

ということ…なんてこと…。

 

Windows環境変数増やしたくないので、以下のように実行しましたよ。

フォルダ構成
C:\
 ├work
 │├ slow.log(mysqlで出しておいたスロークエリログ※本番のもの)
 │└ analytics.log(分析後のファイル)←これを生成したい
 └xampp
    ├perl
    │└bin
    │  └perl.exe
    └mysql
        └bin
            └mysqldumpslow.pl (←実行したい)
 
コマンド
C:\xampp\perl\bin>perl -f c:\xampp\mysql\bin\mysqldumpslow.pl -s l c:\work\slow.
log > c:\work\analytics.log
 
わかってしまえばなんだぁな結果でしたとさ。
 
 
ちゃんちゃん。

ブラウザの戻るボタンを押すと<select>の選択がおかしくなるのをjQueryで解決

まず大前提としてフォームのある画面では「ブラウザの戻るボタン」は極力押さないでいただきたい!

…のではありますが、まぁ、あれば押すのが人情ですよね。

今回はブラウザの戻るボタンを押して戻ったら、表示されているデータとフォームの選択値がずれちゃった、を解決する話です。

気づいたきっかけ

お客様からの指摘ですorz

普段自分が開発しているサイトではもちろん、ブラウザの戻るボタンなんて押さないので、気づかなかったですよ。

指摘のあったサイトは、検索フォームと結果データが一緒の画面なので発覚。

症状

初期表示(デフォルト検索結果含む):A→選択を変更して検索⇒結果表示:B→ブラウザの戻るボタン

の一連の処理を行うと、最後の画面が以下のようになります。

  • 結果表示⇒A
  • ソース上のフォーム選択状態⇒A
  • 画面上のフォーム選択状態⇒B

おそらく、妙な具合にキャッシュされちゃっているんだと思われます。

グーグル先生に聞いてみた

ら、解決策は「戻る使うな」という至極ごもっともな結果に。

それでも頑張る先人たちの足跡をたどるに、以下の点がポイントっぽい。

  • フォームキャッシュの削除
  • ブラウザによって削除され方に違いがある。
  • onloadとonunload=""を仕込めば、全ブラウザでフォームキャッシュが削除される
  • defaultSelectead と selected
  • form.reset() の方法⇒コレは使えなかった
  • defaultSelected==trueのoptionにselectedを付け直す(ループが必要)

最終的にこうなった

jQueryでブラウザ戻るボタンによるフォームずれ対応

 結果的には3行ですが、そこに至るまでの道のりが…長かった…。

defaultSelectedとselectedの違いとか、

option[selected]とoption:selected の違いも知らなかったです。

参照:

ブラウザの戻るボタンで戻ったときに呼ばれるイベントとかキャッシュとかそこらへんのこと - koumiyaの日記

jquery - Find default selected option in HTML select tag? - Stack Overflow (英語注意:真ん中のあたり)

 

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