移行完了

まず、はじめに。うっとおしい広告を入れてすみません(_ _) こういう賑やかし、やりたかったんです(^^;なんかブログっぽいな、と思ってgoogle adsenseに登録してみました。こんな備忘録のブログでも審査に通るんすねぇ~。

先週より、6年ほどお世話になった “wordpress.com” から 引っ越し。理由は・・・スタイルシート変更のために払っていた4000円をケチるため。

もともとwordpressを始めた頃に、スタイルシートの修正を保存できるように、と思ってカスタムスタイルシート・プランを15ドル/年で購入したんですが、3年程前から円安のせい?か倍の30ドルに値上げになって・・・スタイルシートを保存するためだけに4000円って・・・ってな感じ。

で、仕事用に使っていたVPSに移しました。さらに、ドメイン転送にも1600円/年かかり、どこまで貧乏人からむしり取るんじゃー、と愚痴りつつ、やっと移行完了。

Google AdSense もイマイチ用語が分からず、広告ユニットって何? コンバージョン? なにそれ、おいしいの? とチンプンカンプンな用語のオンパレードの管理画面をもう見る気もせず、適当に3つ配置。

サイドバーのウィジェットに表示させるのは「HTML Javascript Adder」プラグインを使って簡単に放り込めたんですが、投稿記事に貼り付ける方法がいまいち分からず、手っ取り早く、直接テーマ内の functions.php に “the_content”フィルターフックを仕込んで適当に解決。

<?php
// into functions.php 
/*******************************************************
 最初の<p>タグ(段落)の後ろに広告を表示させたいので、
 wpautop関数がコールされた後にコールされないと意味がない。
 とりあえず優先度を999で様子を見る。この辺よくわからん。
*******************************************************/
add_filter( 'the_content', 'inject_google_adsense_code' , 999);

function inject_google_adsense_code($content)
{
  global $wp_query;

  static $ads = <<<__EOL__

ここに 広告のコードを挿入。

__EOL__;

  // ループの最初の記事だけに適用
  if(!is_feed() &&  0 == $wp_query->current_post)
    {
      // 最初の段落の終わり</p>閉じタグの後ろに広告コードを挿入
      if(false !== ($pos = strpos($content,'</p>')))
       {
          $pos += strlen('</p>');
          $content = substr($content,0,$pos) . $ads . substr($content,$pos + 1);
       }
    }

  return $content;
}

//追記
// feed の中にも出てきてしまっていたので is_feed()関数で除くようにした。

ふぅ。

Surface3のMicroSDカードスロット

Windows8.1で使っていた時から超不安定だったんで、てっきりMicroSDカードのハズレを引いたのかなー、と思っていたのですが、USB3接続のカードリーダーでしばらく使っていると、ビックリするぐらい安定する。。。Surface3の裏面のカードスロットに差して使ったときは、必ず認識しなくなり、イベントビューアに、discの警告が記録されまくりだったんですが・・・。

USB接続のカードリーダーで安定している、ということは、やっぱりSurface3のMicroSDカードスロットがハード的にハズレだったんでしょうねぇ・・・。それか、SDカードのコントローラのドライバとの相性なのか・・・。

まぁ、サポートに文句言ったところで取り合ってくれないのは目に見えてるので、もう諦めることにした。

あーあ、やっぱり初期ロットはハズレだったんだなー。

Windows10にしてからトラブル続きで・・・Windows10のCM見るたびに原辰徳!!!ですよ。

で、結局、エレコムの↓を注文。差しっぱにしても、給電用のUSBコネクタがもう一個あるので無問題。

MR3-C008BK_01

あーあ、せっかくのイケてるタブレットだったのに、なんだかなー。やっぱ、MSは・・・と言われる所以だね(^^;;

そして、OneNoteは起動しなくなった・・・

標準でついてる、ストア版のアプリの方の話です。

つい、1週間前までは、Surface3 + Windows10 は機嫌良く動作していたのですが、この間からOneDrive上にある特定のノートと同期が全くされないようになりまして・・・。デスクトップ版のOneNote 2013は正常に使える。

なんだかんだ、しているうちに、タブレットモードでOneNoteをタップすると、延々とサインインに問題が発生しました、とかなんとかのメッセージが出て何もできなくなった(゚Д゚)
どうにもこうにもならなかったので、グーグル先生に問い合わせると、Powershellから一度OneNoteをアンインストールし、アプリストアから再度インストールすれば良い、という情報を得て、試してみました。

上手くいきました。。。のも、束の間、今度はOneNoteのアイコンをタップしても、全く反応なし。今度はメッセージもでません。再度アンインストールしてインストールしても一緒。

解決方法を探すと、一度のそのアカウントを削除して新たにアカウントを作れと・・・こんなん解決方法じゃねーよ。

仕方ないので、もうバンドルされているストア版のOneNoteを使うのを諦め、デスクトップ版のOneNote2013を使うことにした。

あーーーーー、もうなんかイライラする! Windows10アプリは完全に使えない。

さらにイライラするのが、バンドルされている動画プレーヤー。一時停止して、しばらくして再開させると100%落ちてしまう。なんじゃこりゃ。

Windows10アプリに、少しでも期待した、おいらがバカだった(゚Д゚)

タブレット的な使い方をしたい人はSurface3 + Windows10 の組み合わせは不幸になりますので、絶対止めましょう。素直にiPadで幸せになりましょう(笑)Office Mobileがタダで使えますしね。

パスワード 平文 管理

グーグルで検索すると、やっちゃダメだよ、という記事がいっぱい出てくる。LAN上のサーバーならまだ分からなくも無い。

今作成中のスクリプトで「パスワードは暗号化(ダイジェスト)しないでほしい!」とゴリ押しされる。いや、それはダメだ、と言っても理解してくれないらしい。別に大した情報を持っているわけでもないのと、こんなの漏洩したところで何ともないので「なんであかんの?」という論理なんでしょうね。

時間が経って、何の経緯も知らないウェブ開発者たちが、このスクリプトを見た時、パスワードを平文で保存しているシステムにどういう評価を下すか、想像に難くない。

ウェブでの受注システムでさえアカウントを暗号化せずに平文でテーブルに放り込んでるみたいで、その状況を何とも思わないような人たちですから、まぁ、しょうがない。担当者が発注者であるお客さんの言いなりで・・・中小企業のシステム営業とかSEさんってどこもこんなもんなん?(笑) たとえば、お客さんの会社が、プライバシーマークとか、○○○認証取得、とか、ISOなんちゃら・・・とか取りたいとか言い出したら、またシステム改修しないといけなくなる場合もある。結局とばっちりはSEさんとかシステムの営業さんとかじゃなくて、外注先も含めて全部作る方にかかってくるんですよねぇ。

ま、いいか。もうどーでもよくなったよ。タダでさえ持病で体調がだだ下がりなのに。。。文句言わずに「言うとおり」にしてしまおう。ラクな生き方を選ぼう。完全に開発者失格だなー。

ピリオド区切りバージョン番号の比較

Javascript(ECMAScript)で、jQueryのバージョンで分岐させる必要があったのですが、最初は、何も考えずに 等号・不等号演算子で比較してました。手抜きですね(^_^;) しばらくは何の不都合もなく動いていたのですが、使用しているjQueryのバージョンを1系列の最新バージョンにしたら動かなくなった。

当たり前ですね。最新のバージョン番号を $().jqueryで取得すると、1.11.x (xは数字) というのが返ってきます。で、単純に比較すると・・・ダメなのは明白ですね(笑)

ということで、急いで適当に書く。備忘録おわり。

/**********************************************************************
ex.)
version(jQuery().jquery,'&gt;=','1.4') returns false or true
***********************************************************************/
function version(a,op,b)
{
  a = a.split('.');
  b = b.split('.');
 
  var ia,ib;
  var limit = Math.max(a.length,b.length);
  while(limit--)
    {
      ia = parseInt(a.shift() || 0);
      ib = parseInt(b.shift() || 0);
 
      if(ia != ib)
        break;
     }
   return eval([ia,op,ib].join(' '));
}

関数名はPHPみたいに version_compare() とかだと長すぎるし、version() にするとバージョン番号を返すものと混同するし、何がいいんでしょうねぇ。まぁ、どうでもいいんですけどね。

ぐおー、perlだとpackで一発なのに・・・