Guetzliで10回ほど圧縮を繰り返してみた

Googleが提供するJPEGエンコーダー

こちらのサイトで紹介されている手順通りに行ってみたら簡単にJPEG画像を圧縮することができました。

Google製JPEGエンコーダーGuetzliの使い方【図解で簡単】

サイズが1.5MB程度あった画像がいきなり500kbまで減ったりとなかなかの圧縮率で、しかも画質は落ちない(わけではないだろうけど、少なくとも目測ではわからないくらい)。

これはすごい!

でも圧縮に10秒以上かかるんですよね~(画像によってはもっとかかる)
そこがネック。

あと、うっかり圧縮済みの画像をもう一度圧縮しちゃったらどうなるんだろうと思ったので、ためしに10回位圧縮を繰り返してみました。

画質設定は上記のサイトで設定されているとおり88(--quality 88 ちなみに84が下限)

以下リンク先を開いてから、確認してみてください。

オリジナル(1.59MB)

(さらに…)

総合管理者 | 2017年05月16日 | コメント(0) | トラックバック(0) | WEB関連全般

WordPressのマルチサイトで参加サイトが表示されない

マルチサイト化されているWordpressのサーバーを移転したところ、参加サイトが表示されなくなってしまいました。

↓この部分

もちろんログインしたアカウントはすべてのサイトに所属しています。

プラグインのせいかと思って全部切ってみたのですが、治らず。

移転時にバージョンアップしたからかとも思いましたが、他のサイトで使っている同じバージョンのWordpressでは、こんな問題は起きたことがありません。

移転中だったのでベーシック認証をかけていたのですが、まさかこれじゃないだろうと思いながらも試しに解除してみたら、表示されるようになりました!

原因はベーシック認証!

こんなことあるのか・・・

ちなみに、一度表示されるようになったら、以降は再びベーシック認証をかけてもちゃんと表示されます。

総合管理者 | 2017年03月08日 | コメント(0) | トラックバック(0) | CMS関連

WordPressのバージョン4.7と4.7.1はヤバイ

ちょっと古い情報ですが、Wordpressのバージョン4.7と4.7.1はかなりヤバイ脆弱性があるそうです。

WordPress の脆弱性対策について:IPA 独立行政法人 情報処理推進機構

WordPress 4.7, 4.7.1 はAPIに致命的なバグがあって認証無しで誰でも記事を改ざんできちゃうっぽい! - かもメモ

上記のサイトに方法が記載されておりますが、簡単に改ざんできてしまうとのこと。

簡単過ぎる!怖い!

4.7から4.7.1へのアップデートは、PHPMailerの件ですぐにアップデートされることは予想しておりましたが、またすぐに4.7.2へのアップデートでしたので、何事?と思っておりましたが、これはかなりやばい脆弱性ですね。

すぐにアップデートするのは考えものですね・・・

ちなみに、Search Consoleでもこのような警告が出てしまう始末

貴サイトが WordPress の古いバージョンである WordPress 4.7.0 or 4.7.1 を実行していることが判明しました。古いバージョンやパッチを適用していないソフトウェアは、ハッキングやマルウェアの攻撃を受けやすくなり、貴サイトの訪問者に被害が及ぶことがあります。そのため、サイト上のソフトウェアをできるだけ早く更新することをおすすめします。

おすすめどころではない、必須事項でしょ。

自分のブログも一瞬だけ4.7.1にしておりましたが、すぐさま4.7.2にアップデートしました。

総合管理者 | 2017年02月14日 | コメント(0) | トラックバック(0) | CMS関連

robots.txtが無い場合のアクセスは404で返さねばならない

サーバとドメインを移転したお客さんのサイトが、全然インデックスされないとの連絡をいただきました。

ドメインも変わってるのだから、それはそうだろうとも思ってたんですが、移転したのは3か月くらい前だし、おかしいってことで調べてみました。

あやしいところでは、robots.txtやHTMLのmetaタグでクロール禁止設定しているあたりですが、robots.txtはそもそもないし、HTMLのmetaタグもほぼ無いに等しいほどシンプル。

リダイレクトも旧サーバ・旧ドメインから301できっちり転送しているので問題ない。

仕方ないので、Search Consoleを設定して調べてみたところ、下図のエラーが出てました。

(Search Consoleの左メニュー>クロール>robots.txtテスターを開くと出てきたエラー)

現在 Google で取得できない robots.txt ファイルがあります。この場合、Google が robots.txt を取得するまでサイトのクロールが停止されるか、前回取得した robots.txt ファイルが使用されます。

robots.txtなんてファイルは作ってないし、実際サーバ上にも無いし、おかしいなと思ってrobots.txtにブラウザからアクセスしてみたら、htaccessのリライトルールのせいで、404エラーでもない変なエラーページが開いてしまいました。

そして下の記事を発見。

robots.txtがこんなに重要だったとは。。。身をもって知りました

なんとまあ、robots.txtは存在してちゃんと設定されているか、または無いなら404エラーで返さないと、Googleはインデックスしてくれなくなるらしい。

正直、インデックスされないように設定することのほうが少ないため、robots.txtなんてあんまり気にしたことありませんでした。(通常は無いなら無いで404になるし)

気をつけねば。

総合管理者 | 2017年02月11日 | コメント(0) | トラックバック(0) | CSS関連

【WordPress】スラッグ名が重複すると、公開中の投稿ページが404になる

※これは、現在最新バージョンである4.7.1で確認しています。

 

WordPressの管理画面にログインし、以下の手順で記事を作成してみてください。

①新規投稿で、スラッグ名をhogeと設定し、公開保存する。
②再び新規投稿で、スラッグ名をhogeと設定し、下書き保存する。(実際はhoge-2に変わりますが気にせずに)

※①と②の記事は別の記事です。
※スラッグ名は手動で設定してください。

①の投稿ページを、別のブラウザか、Wordpressからログアウトして開いてみてください。
公開しているにも関わらず、エラー404ページになってしまいます。
(pre_get_postsなどで、投稿詳細ページの取得ルールを変えている場合は起こらない可能性があります)

 

原因

②の投稿を作成する際、スラッグ名を「hoge」と入力すると、重複を回避するため「hoge-2」と表示されるのですが、実際は下書き保存では「-2」はつかず、そのまま「hoge」と保存されてしまいます。(データベースを確認すると、postnameがhogeとなっているレコードが2つ確認できます)

そのため、①のページを開こうとした際、②の投稿データを取得してしまい、しかし下書きのため404ページとなってしまうわけです。

ちなみに投稿詳細ページでのデータ取得の順番は公開日時順になっているらしく、②の下書き投稿が①の公開投稿よりも過去の公開日時に設定していると、①の投稿ページは正常に表示されます。

この現象が発生する条件は正確には以下となります。

  • スラッグ名を設定することができるパーマリンク設定になっていること
    (%postname%が含まれる設定の場合)
  • 投稿タイプが「投稿」であること
    (固定ページではこの現象は起きない)
  • 投稿の作成・編集時にスラッグ名を任意に設定すること
    (WPがタイトルから自動的に生成する場合は、重複してもこの現象は起きない)
  • 設定したスラッグ名に自動的に連番がつくこと
    (すでに公開されている投稿記事が存在している場合)
  • 保存時に下書き保存すること
    (公開保存なら大丈夫)
  • 下書き保存した投稿記事と同じURLの公開中の記事が存在すること
    (連番なしのURLと完全一致する公開中の投稿記事があること。日付やカテゴリーがパーマリンクに含まれる場合で、これらが異なる場合はこの現象は起きない)
  • 公開保存されている投稿より、下書き保存した投稿の方が、公開日時が未来に設定されていること

という条件なので、投稿でも命名規則を決めてスラッグ名をきっちり設定するという運用を行っている(例えばニュースなら「news20160120」と設定する)サイトの場合以外は起きないので、なかなか見つかりづらい不具合ではあると思われます。

 

対策

ひとまず404エラーを回避する方法ですが、functions.phpに以下を追記すると、回避できます。

add_action('pre_get_posts', 'custom_pre_get_posts' );
function custom_pre_get_posts($query){
if ( is_admin() || ! $query->is_main_query() ){
return;
}
if($query->is_single && !$query->is_preview){
$query->set( 'post_status' , 'publish');
}
}

要するに、公開されているものを開けばよいのですが、なぜ下書きのものを取得しようとしてしまうのか、不思議です・・・

なお、この方法で404エラーは回避できますが、もう1つ問題があります。

該当の公開中の記事を編集すると、こっちは重複を回避しようとしてスラッグ名の後ろに「-2」がついて保存されてしまうことです。(なんでやねん)

スラッグ名が変わっても、一応リダイレクトしてくれるみたいですが、下書きの方の記事が「hoge」で公開保存されたら、完全に入れ替わっちゃいます。

結局気を付けるしかないのが現状ですね・・・

 

冒頭でも書いていますが、これはバージョン4.7.1で起こっています。

もしかしたらこれより古いバージョンでは起きないかもしれません。

また、さらにバージョンアップされたら起きなくなるかもしれません(というか起きなくなってくれ)

総合管理者 | 2017年01月20日 | コメント(0) | トラックバック(0) | CMS関連

iPhoneで撮影した写真が90度傾く

iPhoneで写真を撮影すると、Windowsのフォトビュワーなどで見ると縦横撮影した通りの角度になっているのですが、サーバにアップしてホームページに埋め込んでみると、縦横がおかしくなることがあります。

こんな感じ↓ チンアナゴ水槽が横になっちゃってます。

IMG_0052

原因はExifに回転の情報(Orientation)が入っており、Exifの情報を取得できるビュワーであればちゃんと回転して表示くれるのですが、ブラウザではその情報を取得できないため、そのままの状態で表示してしまうかららしいです。

とりあえず画像の修正方法としては、Photoshopで開いて保存し直すという方法があります。

これでExifに頼らず、画像として縦横正確な状態で保存し直されるわけです。

でもPhotoshopなんて持ってねーよという人も、もちろんいるかと思います。(というか普通は持ってない)

その場合は、Windowsであれば必ず入っているペイントを使用してみてください。

ペイントで画像を開いて保存し直せば、Photoshop同様正常な状態で保存し直してくれます。

↓ペイントで保存し直した画像

IMG_0052

参考サイト

総合管理者 | 2017年01月16日 | コメント(0) | トラックバック(0) | その他

セッションの保持時間は意外に短い

デフォルトのphp.iniの設定では、セッションの保持時間は24分だそうです。

さらにセッションが削除されるタイミングは100分の1だそうで、100回アクセスに1回のタイミングで24分すぎたセッションファイルを削除するとのこと。

長時間セッションを保持しなければならないようなプログラムの場合は注意しなくては。

php.iniに以下を設定

session.gc_maxlifetime = 14400
session.gc_divisor = 1000
session.gc_probability = 1

これで1000分の1の確率で、240分過ぎたファイルを削除するようになる。

 

参考サイト

ガベージコレクション(GC)をCakePHPで試してみる | Structured-P

 

総合管理者 | 2017年01月06日 | コメント(0) | トラックバック(0) | PHP関連

Wordで文字キーが受け付けない場合

ツイッターでも書きましたが、ここにもメモ。

OfficeのWord(自分が使っているのはOffice 365 Solo)で突然キーボードの文字入力が受け付けない現象が発生していました。

最初は大丈夫なんですが、編集している途中で受け付けなくなる感じ。

立ち上げているWordファイルを全部落として、もう一度起動すると入力できるようになるのですが、しばらくするとまた受け付けなくなる。

もちろん、Word以外ではちゃんと入力できます(メモ帳とかブラウザとか)

Windowsが10に上がったからかな?(おのれWindows・・・)と思っていたのですが、どうやらIMEが原因っぽい。

IMEはGoogleのを使用していたのですが、これをWindows標準のものに切り替えたら入力可能となりました。

相性の問題か。

総合管理者 | 2016年06月08日 | コメント(0) | トラックバック(0) | アプリ関連

Javascriptでプルダウンの選択を変更する(jQuery)

Javascriptでプルダウンの選択を変更する(getElementsByTagName)

↑過去記事のjquery版です。

headタグ内に以下を記述。


<script type="text/javascript" src="(jqueryへのパス)"></script>
<script>
function change_pulldown(value_name){
$("#hoge").val(value_name);
}
</script>

bodyタグ内に、以下の様な選択を記述。


<p>特殊車両リンクをクリックしてください。プルダウンの選択が変わります。</p>
<p><a href="javascript:void(0)" onclick="change_pulldown('p1')">イングラム</a></p>
<p><a href="javascript:void(0)" onclick="change_pulldown('p2')">グリフォン</a></p>
<p><a href="javascript:void(0)" onclick="change_pulldown('p3')">タイラント2000</a></p>
<p><a href="javascript:void(0)" onclick="change_pulldown('p4')">クラブマンハイレッグ</a></p>
<select id="hoge">
<option value="">---</option>
<option value="p1">イングラム</option>
<option value="p2">グリフォン</option>
<option value="p3">タイラント2000</option>
<option value="p4">クラブマンハイレッグ</option>
</select>

Javascript内の記述は凄まじく簡略化されましたね。

  1. 下のselectタグに、IDとして「hoge」と設定しておく。
  2. リンクには、クリック時に作成したchange_pulldown関数を呼び出す設定をする。その際、引数として、プルダウンで選択したいvalueを渡す。
  3. change_pulldown関数では、指定したID(ここではhogeとしている)のselectタグに中身(val)を入れる。

これでリンクをクリックすると指定したものが選択されるようになります。

サンプル [新しいウィンドウで開く]

 

 

総合管理者 | 2016年04月30日 | コメント(0) | トラックバック(1) | JavaScript関連

投稿一覧の各投稿のメニューをカスタマイズする方法

フック!フック!フック!

フックは便利ですね!

ということで、テーマで投稿一覧の各投稿のメニューをカスタマイズする方法のメモです。

下図のように、メニューに「サンプル」を追加する場合

WS002447

テーマのfunctions.phpに以下を追記します。


function custom_post_row_actions($actions, $post) {
//$actions['(キー)'] = '<a href="(リンク先)" title="">(ラベル)</a>';
$actions['sample'] = '<a href="/sample.php" title="">サンプル</a>';
return $actions;
}

add_filter('post_row_actions', 'custom_post_row_actions',10,2);

 

いらないものを消す場合は、unsetします。(以下クイック編集を削除する)


function custom_post_row_actions($actions, $post) {
unset($actions['inline hide-if-no-js']);    //クイック編集
return $actions;
}

add_filter('post_row_actions', 'custom_post_row_actions',10,2);

以下デフォルトのメニューです。

$actions['edit'] 編集
$actions['inline hide-if-no-js'] クイック編集
$actions['trash'] ゴミ箱
$actions['view'] 表示

 

参考サイト

投稿一覧に独自リンクを追加する:WordPress私的マニュアル

総合管理者 | 2016年03月25日 | コメント(0) | トラックバック(0) | CMS関連

Copyright(c) 2010 - 2017 ダリの雑記