MW211 EXIT

devlog
CSS/印刷用CSSの注意点いろいろ
2014年05月06日
・構成要素の中に「overflow:hidden;」が混じっていると
  印刷時に切れてしまう恐れがあるので、全体を表示したければ
  印刷用CSS上は「overflow:visible;」に上書するとよい

・「@page {size:landscape;}」の指定を行うと
  自動で用紙が「横」指定となるらしいが、Chromeしか効かない

・「body {zoom:50%;}」の指定を行うと全体を縮小して印刷する(値は任意)が
  これは昔のIE(IE7以前など)の専門仕様だったらしい
  ところが、IE8以降は効かないに対して、Chromeにはなぜか効いてしまう

・IEとFirefoxは「縮小して全体を印刷」的なことが既定となっているが、
  IEでは一部の場合、全体を誤認してしまい、末尾を切らしてしまう場合がある
  一方、Chromeの既定では縮小なし表示の模様
分類:CSS
CSS/印刷用CSS
2014年05月05日
「@media print {}」で囲った中で定義してあげると、印刷時のみ有効となるCSSになる。
┌──────────────────────────────────────┐
│@media print {                                                              │
│    div#header {                                                            │
│        display             :none;                                          │
│    }                                                                       │
│    div#main {                                                              │
│        top                 :0;                                             │
│    }                                                                       │
│    .noprint {                                                              │
│        display             :none !important;                               │
│    }                                                                       │
│    div#print {                                                             │
│        display             :block;                                         │
│    }                                                                       │
│}                                                                           │
└──────────────────────────────────────┘
直接その要素を(印刷時だけ)変更する方法をとる場合には、
そのセレクタを指定して定義すればよい.
上記でいえばヘッダ(div#header)を非印刷にして、
本体(div#main)をその分繰り上げている。(「position:absolute;」の場合)

また、印刷専用クラス(.noprint)を仕込んでおき、
印刷時だけ活躍させる手もある。(「!important」を付けて優先度を高めた方が安全)

非印刷とは逆に、印刷専門項目(div#print)について非表示で隠しておき、
印刷の時だけ出力させるという手法もとれる。


なお、「@media print {}」については外部ファイル指定の代替案もあり。
分類:CSS
CSS/画面全体を縮小表示する方法
2014年05月04日
CSS的には以下の通り。
┌──────────────────────────────────────┐
│body {                                                                      │
│    -webkit-transform   :scale(0.5);                                        │
│    -moz-transform      :scale(0.5);                                        │
│    -o-transform        :scale(0.5);                                        │
│    transform           :scale(0.5);                                        │
│}                                                                           │
└──────────────────────────────────────┘

jQueryに応用すると、以下のような感じ。(あ、ハッシュ化できそう)
┌──────────────────────────────────────┐
│$('body').css('-webkit-transform','scale(0.5)');                            │
│$('body').css('-moz-transform'   ,'scale(0.5)');                            │
│$('body').css('-o-transform'     ,'scale(0.5)');                            │
│$('body').css('transform'        ,'scale(0.5)');                            │
└──────────────────────────────────────┘
分類:CSS
PHP/allow_url_fopen無効時の影響
2014年05月03日
「allow_url_fopen=off」にした場合の影響
  ・以下の関数でURL指定が使えなくなる
    ・「fopen()」                →外部ファイルの読み込みができなくなる
    ・「file()」                 →外部ファイルの読み込みができなくなる
    ・「file_get_contents()」    →外部ファイルの読み込みができなくなる
    ・「filesize()」             →外部ファイルのサイズ算出ができなくなる
    ・「file_exists()」          →外部ファイルの存在判定ができなくなる
    ・「is_file()」              →外部ファイルの種別判定ができなくなる
    ・「is_readable」            →外部ファイルの読込可能判定ができなくなる
    ・「copy()」                 →外部ファイルのコピーができなくなる
    ・「unlink()」               →外部ファイルの削除ができなくなる
    ・「simplexml_load_file()」  →外部XMLファイルの読み込みができなくなる
    ・「opendir()」              →外部ディレクトリの情報を取得できなくなる
    ・「is_dir()」               →外部ディレクトリの種別判定ができなくなる
    ・「mkdir()」                →外部ディレクトリの作成ができなくなる
    ・「rmdir()」                →外部ディレクトリの削除ができなくなる
  ・以下のインクルード系関数でURL指定が使えなくなる
    (別途「allow_url_include=on」の指定も必要)
    ・「include()」              →外部ソースファイルの読み込みができなくなる
    ・「include_once()」         →外部ソースファイルの読み込みができなくなる
    ・「require()」              →外部ソースファイルの読み込みができなくなる
    ・「require_once()」         →外部ソースファイルの読み込みができなくなる
分類:PHP
PHP/ファイルコピー
2014年05月02日
以下の方法がある。
┌──────────────────────────────────────┐
│$contents = file_get_contents($入力元);                                     │
│file_put_contents($出力先, $contents);                                      │
├──────────────────────────────────────┤
│if ($handle = fopen($入力元, 'rb')) {                                       │
│    $contents = stream_get_contents($handle);                               │
│    fclose($handle);                                                        │
│    file_put_contents($出力先, $contents);                                  │
│}                                                                           │
└──────────────────────────────────────┘
「file_get_contents()」は一発で簡単にできるのに対して
「stream_get_contents()」は以下のように分割して処理することができる。
┌──────────────────────────────────────┐
│$contents = stream_get_contents($handle, $サイズ, $開始位置);               │
└──────────────────────────────────────┘
分類:PHP
Windows/「Program Files」配下設定ファイル
2014年05月01日
WindowsVistaやWindows7の場合、
「Program Files」配下の各種設定ファイルについて
メモ帳等で設定変更して更新しようとすると
「アクセスが拒否されました」となる。
ファイルを別途編集して上書しても同じ(ダメ)。

このフォルダのアクセス権限が強化されたらしい。

対策としては、メモ帳を「管理者として実行」で起動し、
「ファイル」を「開く」で開いていく。
#ファイルのドラック&ドロップでは開けない

ちなみに、秀丸エディタだと違うところに保存されて、
開き直すと一見更新されているように見えるが
本体にはまったく更新されていないというトラップにかかる場合がある。

「Program Files」配下の設定ファイルはメモ帳で更新した方がよさそうだ。
分類:Windows
JavaScript/特定の文字以降を抜き出す
2014年04月30日
┌──────────────────────────────────────┐
│GETパラメータ部分のみ = (URLアドレス.match(/\?.*$/) || [''])[0];            │
└──────────────────────────────────────┘
URLアドレスからGETパラメータ部分のみをJavaScriptで抜き出す方法。
つまり「?」を境にその後ろを抜き出すってこと。
ついでに、「?」がなければ空文字という仕様も追加。

結構厄介だ(っていうかもっと簡単な方法がありそうだが)

match()メソッドで正規表現を使って抜き出す訳だが…。

問題1:結果が配列で返ってくる
  ということで、「[0]」を後ろにつけて配列の一番目の値だけ取得するようにする。

問題2:該当がない場合にはnullになる
  「null」は「''」とは違うという根本的な問題もあるが、
  「null」を配列とみなして「[0]」なんかをつけると例外が起きてしまうのが致命的。
  ってことで、「null」の場合は「''」に変換してあげなければならないが
  その後に配列として扱うことが見えているので「['']」と
  (一番目が空文字の)配列に変換してあげる深謀遠慮が必要。
  「null」判定は「||」によるOR条件付加で一発でできる。
分類:JavaScript
PHP/file_get_contents()とセキュリティ
2014年04月28日
「file_get_contents()」を使って、別サーバの情報を入手するには、
「php.ini」の設定で「allow_url_fopen=on」としなければならない。

これはファイルマニピュレーション機能を可能にするということで、
システム上のファイルの更新を許すということになる。

つまり、セキュリティ的によろしくない。

よって、「allow_url_fopen=off」設定とすることが望まれる。

そうなると別サーバのURLを指定して「file_get_contents()」で
そこの内容を取得するってことができなくなる。

でも、結構これは便利で使いたい。
ということで、代案。
curlってのを使って、以下のような感じにすればよい。
┌──────────────────────────────────────┐
│function fileGetContents代替($url) {                                        │
│    $session = curl_init($url);                                             │
│    curl_setopt($session, CURLOPT_HEADER        , FALSE);  // ヘッダ不要    │
│    curl_setopt($session, CURLOPT_RETURNTRANSFER, TRUE );  // 文字列で返却  │
│    $return = curl_exec($session);                                          │
│    curl_close($session);                                                   │
│    return $return;                                                         │
│}                                                                           │
└──────────────────────────────────────┘

「file_get_contents()」で「allow_url_fopen」の設定の影響を受けるのは
あくまで別サーバをリモートで参照する場合のみ。
自サーバ(のファイル)を参照する分には影響を受けないので
「allow_url_fopen=off」設定で上記代案を併用している場合でも
自サーバに対しては「file_get_contents()」が使用できる。
分類:PHP
JavaScript/配列操作いろいろ
2014年04月24日
配列中から特定の値を除外する。
┌──────────────────────────────────────┐
│配列 = 配列.filter(function(v) {                                            │
│    return v != 値;                                                         │
│});                                                                         │
└──────────────────────────────────────┘

配列中の重複した値を除外する。
┌──────────────────────────────────────┐
│配列 = 配列.filter(function (x, i, self) {                                  │
│    return self.indexOf(x) === i;                                           │
│});                                                                         │
└──────────────────────────────────────┘
分類:JavaScript
jQuery/$.postと論理型データ
2014年04月21日
jQueryの「$.post」で、bool値(論理型)を送信すると、文字型に変換されるようだ。

送信側でこのように送信して…。
┌──────────────────────────────────────┐
│$.post(受信先, {"test":true});                                              │
└──────────────────────────────────────┘

受信側で、ダンプ表示してみた場合。
┌──────────────────────────────────────┐
│var_dump($_POST);                                                           │
├──────────────────────────────────────┤
│array(1) {                                                                  │
│  ["test"]=>                                                                │
│  string(4) "true"                                                          │
│}                                                                           │
└──────────────────────────────────────┘
「true」は文字型で認識されている。

途中で変換をかけているのであろうか。

「jQuery1.10.1」でのお話(なので最新もそんなはず)。

URLエンコードが施されたURLクエリーの文字列に変換されるのが原因の模様。
分類:jQuery
前へ 1 … 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 … 156 次へ