vue #1

vue.jsを覚えることになりました。 せっかくだから勉強ログを取ってみようかな。 evernoteにべたーって書いたものをぺたーって貼るような感じで。 あとから補足したりしなかったり。

(ここで記事は途切れている)

にっき1

viewとかで数値を3桁区切りにしたいなー!

require 'active_support/core_ext/numeric/conversions'

Numeric#to_s(:delimited)

qiita.com

べんり!ついでにめも

<名詞>.pluralize  #=>複数形に
<名詞s>.singularize #=>単数形に

railsてちょこちょこなぞの便利メソッドあるよね。

きょうのにっき。

コードリーディングむずかしー!

Amazon CAPTCHA

これ高いけど読んだほうが良いのかなーとはおもう。 手法をある程度体系的に身につけることで、 今後の習得の下地になる気がする。

つかれてくると

勘でコード書いちゃって、効率が非常にまずい。 コード読んで切り分けて、予測立てて書く。 意識して身体に覚えさせるしかないかなー。

(WIP)はじめてのさくらvps

やりたかったこと

なんか毎回herokuにデプロイしてるの飽きるし,そろそろ他の手段でやりたい
-> rails + nginx + unicorn

今回の目標

とりあえずデプロイする!

“新しいことをするときには、試したいことだけのプログラムを書"くべきなので,
(「プログラムはこうして作られる」 p169)

railsいれて本番環境にhelloworldするまで。

取った手段

  • さくらのvps借りた 最安プランでとりあえずいいや。

ターミナルから鯖につなぐ

  • とりあえず鯖起動

  • ターミナルから

$ ssh root@IPaddr

パスワード3回ミスって繋げなくなったから,鯖OS入れ直し(ついでにcentos7にした)

再度

$ssh root@IPaddr

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
xxxxxxxxxxxxxxxxxxxxxxx
Please contact your system administrator.
Add correct host key in /Users/ユーザー名/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/ユーザー名/.ssh/known_hosts:59
ECDSA host key for サーバーIP has changed and you have requested strict checking.
Host key verification failed.

こんなの出るけど、OS再インストール前の鍵が残ってるよーってことなので 一旦鍵を取り除く。

$ ssh-keygen -R "IPaddr"

んで

$ssh root@IPaddr

これでOK .

さくらvps初期設定

dotinstallにさくらのvps入門っていう神のような動画があるので、それをなぞる。

追記 CentOS7でssh周りは変更が多いみたいで

CentOS7で初期設定やってる記事を参考にした方がいいかも

ただし動画ではCentOS6.3を使ってるので、CentOS7との相違点をメモしておく。 04 さくらのVPSへ接続してみよう

日本語化の方法はCentOS7で変更になったらしいー

# localectr set-locate LANG=ja_JP.eucjp
# source /etc/locale.conf

09 SSHの設定

CentOS 6
# service sshd restert

CentOS7
# systemctl restert サービス名.service

11 Webサーバの設定をしよう

/etc/http/conf/httpd.conf
# apache2.4.6 では記述自体がないのでファイルの末尾にでも書く

ServerTokens Prod
ServerSignature Off

14 Virtualhostの設定をしよう

hostsインストール時にmacOSバージョンチェックで弾かれる場合 (Sierraで確認,無事インストールできた) blog.tottokug.com

16 mysqlの設定をしよう
CentOS7では

yum install mysql-server

が使えないので以下の方法で対処(かみさまありがとう!!)

blog.apar.jp

初期パスワードの位置がわからず割とハマった。

qiita.com

iptabelesの設定とかはfirewalldとかで。

senoway.hatenablog.com

やったことメモ
  • 初期設定
  • 作業用user作成
  • 鍵認証,SSH設定
  • firewall設定
  • webserver設定
  • vitualhost設定(一つの鯖で複数のドメインを運用)
  • PHP, MySQL, Ruby, Rails
おもったこと

調べながらコピペしながらやると「なれる!SE」思い出します。 室見先輩に「意味もわからずコピペするな!」って怒られた場面。 このセリフはつねに頭の隅に置いておきたいなーっておもいました…

(WIP)閉包テーブルモデルを用いてTweetのreplyをスレッド化したはなし。

DOCTYPE宣言するとheight:100%が期待通りの動作をしない

tanukikawaii.hatenadiary.jp

この記事、実はPingendoで作ったページに自前で機能を追加していった際に起こった現象なのです。

で、html側のソースに

<!DOCTYPE html>

がなかったのでなんとなく追加。
すると、height:100%;なdiv(bodyの子要素)がviewportの縦全体に表示されなくなった。

  • html
    • body
      • div (height: 100%) ← ここ
      • なんちゃら
      • かんちゃら

stackoverflow.com

ほえー。記述の通り

html,
body {
  height :100%;
}

を指定してあげると期待通りの画面縦いっぱいに表示してくれた。

(html5の)DOCTYPE宣言のはたらき

<!DOCTYPE html>

すると

  • ブラウザのレイアウトエンジンが利用するモードを完全準拠モードにする

developer.mozilla.org

モード3つ

  • 後方互換(Quirks)モード
    • レイアウトは、古いブラウザのような非標準の動作をエミュレート
  • 完全標準(Full Standards)モード
    • HTMLやCSSの仕様書で書かれてる通り動作する
  • ほぼ標準(Almost Standards)モード

違いの詳細とか -> 互換モード

てことは後方互換モードにおいて、jQueryが一部期待した動作をしないことがあるのかな。
後方互換モードを想定してるソースに対しては、無理にDOCTYPE宣言追加しないほうがいいのかも(推測)

いままではー
とりあえずDOCTYPE宣言しとこう!で書いてたけど。
これの有無で動作が変わってしまうこと多々ありそうで、意識しといたほうがいいなーっておもいました。

jQuery - height / innerHeight / outerHightの違い

さっきの記事書いたついでにメモっておく。
このさき結構使いそう(なきがする)
すっごい参考にした→http://www.buildinsider.net/web/jqueryref/009

項目 padding border-width margin
height
innerHeight
outerHeight
outerHeight(true)

○ = 含む
✗ = 含まない

s/height/width/i
の場合も同様。

jQuery - $(window).innerHeight();でウィンドウの高さを超えた値が戻る

小さなことでもいいから1記事/dayは何か書くぞお

今日のテーマ,やりたかったこと

jQuery, javascriptでウィンドウの高さを取得したい
(モーダル画像を画面中央に表示したい)

こまったこと

$(window).innerHeight();

とかだと想定通りの値が帰ってこない。
ウィンドウの高さを大きく超えた値が帰ってくる。

解決法

1,

window.innerHeight;

生js使うと想定通りの値を取ってこれた。

2,

<!DOCTYPE html>

DOCTYPE宣言忘れてた。付けたら想定通りの値を取ってこれた(びっくり)

詳細、経緯

ぼくのポートフォリオサイト作成にあたり、
画像クリックを起点としたモーダルを自前で実装してみた。
参考にした→https://syncer.jp/jquery-modal-window

その際、表示されるモーダルの座標をjsで取得したかったからこんな風にかいた。

function centeringModalImg() {
    // ウィンドウの高さ,幅を取得
    let window_w = $(window).innerWidth();
    let window_h = $(window).innerHeight();

    // モーダル画像の高さ,幅を取得
    let app_w = $(".modal-app-img").width();
    let app_h = $(".modal-app-img").height();

    // 足して2で割る
    let pxleft = ((window_w - app_w) / 2);
    let pxtop = ((window_h - app_h) / 2);

    // 予めposition: fixed;を指定してある要素にleft,topを追加。
    //  画面中央に画像が表示されるように。
    $(".js-modal-app").css({"left": pxleft + "px"});
    $(".js-modal-app").css({"top": pxtop + "px"});
  }

やったー!jQuery便利だなー!画像ぽちっ。 f:id:tanukikawaii:20170505014202p:plain

はい。
なにかがおかしい。console.log。
f:id:tanukikawaii:20170505014353p:plain
(1行目が$(window).innerHeight(); の値)

解決策1

おかしい。生jsで書いてみた。

function centeringModalImg() {
    // ウィンドウの高さ,幅を取得
    let window_w = window.innerWidth;
    let window_h = window.innerHeight;
(以下略)

f:id:tanukikawaii:20170505015823p:plain f:id:tanukikawaii:20170505015842p:plain

わあい. 高さの値も上手く取ってこれた。

解決策2

<!DOCTYPE html>

をHTML側に宣言するの忘れてました…
参考→http://unguis.cre8or.jp/web/253
付けたら

$(window).innerHeight();

でも想定通りの値が戻ってきたよ(๑•̀ㅂ•́)و✧

DOCTYPE宣言、特に意識せずとも書いてて必要性に疑問を持ってたんだけど
まさかjQueryの挙動に影響を及ぼすなんて…。
重要性を痛みでもって実感したよ。

また今回、副次的にhtmlのviewportの概念を初めて知った。
これについてはcordgridに分かりやすく書いてあるから寝る前に読もう。

それと、こっちの解決策はこの記事書きながら調べてたらたどり着いたのだ。
早速ブログ書いてよかったー><!!