ラベル 備忘 の投稿を表示しています。 すべての投稿を表示
ラベル 備忘 の投稿を表示しています。 すべての投稿を表示

2015年7月19日日曜日

iOS設定の備忘など

またちょっと趣を変えて
iOS(8.4)の設定でよくどうだったっけと忘れるので備忘とか
適当にまとめてみました
  • 一般設定
  • バッテリー%表示

    設定>一般>使用状況>バッテリー残量(%)をon これがないとわかりにづらい

    Appのバックグラウンド更新

    設定>一般>Appのバックグラウンド更新>Appのバックグラウンド更新off アプリ起動した時で十分。通信料、バッテリーを節約できる。データ同期では便利かもしれないけど、そこまでの必要性が感じられない

    キーボード数設定

    設定>一般>キーボード>キーボード>【日本語-かな フリックのみ】、【英語】 絵文字いらないし、qwertyで日本語入力も不要。切り替えミスも減り快適

    キーボード-音声入力

    設定>一般>キーボード>音声入力をoff

    音声入力ボタンが消えるのでキーボードレイアウトが少しすっきり スマホに話しかけるのはちょっと・・・

    キーボード-フリックのみ

    設定>一般>キーボード>フリックのみon

    ”あああ”を連続入力可能 同文字連続入力をフリックで行える。

    キーボード-英語-自動大文字入力

    設定>一般>キーボード>自動大文字入力off

    英語入力時の頭文字を大文字にさせない iPhoneで英文なんて書かないですから

    キーボード-英語-自動修正

    設定>一般>キーボード>自動修正off

    英語入力時の修正候補を表示させない 横の×押そうとして、候補が選択されてイライラするのが軽減。商品名などの名詞はわざと捻った名前が多く自動候補に向かない気がする

    メール フェッチorプッシュ

    設定>メール/連絡先/カレンダー>アドレス毎に設定

    すぐ見ないといけないアドレスだけプッシュ。それ以外はフェッチですると通信料、バッテリーにやさしい ちなみにGmailはフェッチのみ。専用アプリいれればプッシュになるけれども、一元管理できなくなるのは困る

  • プライバシー
  • 位置情報サービス

    設定>一般>プライバシー>位置情報サービス>必要なアプリ以外は全てoff、もしくは使用中のみに限定 カメラの必ず位置情報は切っておいた方がいい。画像のExifからすぐ場所特定される。でも旅行先とかではonにしておくと楽しいアルバムが作れる。デジカメ別持ちなら切っておいていいかな

    追跡型広告を制限

    設定>一般>プライバシー>広告>追跡型広告を制限をon 追跡?なにそれ怖い

  • Tips
  • モバイルデータ通信

    設定>モバイルデータ通信>各アプリでoff

    LTE、3G回線で通信する必要がないものを制限して通信料節約。

    例えば無料アプリでメモリ解放してくれるけど広告表示される場合、モバイル通信を切っておけば

    メモリ解放はできるけど広告の通信はしないから微妙にお得 あとクラウドサービスで巨大ファイルをモバイル通信で同期する必要ないので切ってます。wifi環境でやれば十分です

    safari-パソコン用ページを楽に表示

      safariでパソコン用ページを表示したいのにボタンが見つからないなどを解決

    括弧を楽に入力する

    いつからできるようになったんだろ?

    メッセージの時刻表示

    意外と気づかない

    スクリーンショット

    電源押しながらホームボタン押すと撮れる さすがに知ってると思うけど一応



2015年7月16日木曜日

Google Apps ScriptでGmail取得するとメール内容によって異常に重かった時の対処

以前、Gmailの未読メールの件数を表示する投稿
   
をしましたが
今度はメールの内容を一部表示するよう対応しようとした際に
1メッセージに4秒もかかってしまうものがあり
なぜ????と悩んでしまったので備忘録です。
コード.gsにLogger.logを至る所に差し込んでみたところ
原因は getMessages()
   
でした
Threadに対してgetMessages()でメッセージを取得するのですが
なにかしらの条件に当てはまる内容?であると
異常に重くなるようです。

でなんでやーと色々やってみた結果
getMessagesForThreadsを使えば早くなりました!

以前の遅いコードは以下です
//未読メール取得関数
function getMail(){
  var datReturn =new Object();
 
  //スレッド取得
  var thds = GmailApp.search("is:unread", 0, 500);

  var i = 1;
  var cFrom = '';
  var cSub = '';
  var cMsgid='';
  var cThdurl='';
  for(var n in thds){
    var thd = thds[n];
    //*** こいつが遅い! ***
    var msgs = thd.getMessages(); 
    //******************
    cThdurl = thd.getPermalink();
    for(m in msgs){
      var msg = msgs[m];
      cFrom =msg.getFrom();
      var searchchar = Session.getActiveUser().getEmail();
      var searchidx = cFrom.search(searchchar);
      if (searchidx <= 0 && msg.isUnread() === true){
      cTo = msg.getTo();
      cSub = msg.getSubject();
      cMsgid = msg.getId();
      datReturn['from' + i] =cFrom;
      datReturn['subject' + i] = cSub;
      datReturn['msgid' + i] = cMsgid;
      datReturn['url' + i] = cThdurl;
      i++;
      }
    }
  }
  datReturn['count'] = i;
  return(datReturn)
}
  

以下は速度改善したコードです。
//コード.gsのトップに以下の1行だけ記載しておく
var cachedata = CacheService.getScriptCache();
  
//未読メール取得関数
function getMail(){
  var datReturn =new Object();
  var key = "MailAdress"
  
  //スレッド取得
  var thds = GmailApp.search("is:unread", 0, 500); //
  var k = 1;
  var cFrom = '';

//  メールアドレスはキャッシュしておく
  var searchchar = suna_cache.get(key);
  if (searchchar === null){
    searchchar = Session.getActiveUser().getEmail();
    suna_cache.put(key,searchchar);
  }
  //一括取得しgetMessages()を使わない!
  var msgs = GmailApp.getMessagesForThreads(thds);
  for (var i = 0 ; i < msgs.length; i++) {
   for (var j = 0; j < msgs[i].length; j++) {
     cFrom = msgs[i][j].getFrom();
     var searchidx = cFrom.search(searchchar);
     if (searchidx <= 0 && msgs[i][j].isUnread() === true){
      datReturn['from' + k] =cFrom; 
      datReturn['subject' + k] = msgs[i][j].getSubject();
      datReturn['msgid' + k] = msgs[i][j].getId();
      datReturn['url' + k] = msgs[i][j].getThread().getPermalink();
      k++;
     }
   }
  }
  datReturn['count'] = k;
  return(datReturn)
}
//キャッシュ
var suna_cache = {
  put: function(key,data){
    cachedata.put(key,data,60*60*48); //
  },
  get: function (key){
     return cachedata.get(key);
  }
};
  

いずれも同じ結果を取得します。
遅いコード側は遅くなるメールがあると1件4秒でしたが
速い方は遅くなるメールがいても0.5秒程度で完了してます
重くなる原因のメール内容はGoogleからくるお知らせなんですが
なんなんでしょうねぇ
まぁgetMessagesForThreads
   
で一括取得するのなんて
当たり前なのかもしれませんが;

ついでにメール表示するテストページを作ってみました
もちろんGoogleにログインしてないと見れませんし
ボタンが表示されておりますので押して承認して頂いたあと
リロードする必要があります
悪さなどしておりませんが
承認してもいいよ~って方だけ見てください
テストページへ
   

2015年6月19日金曜日

divのidにむけてLoading表示をしてみる

指定のdivのidにむけてLoadingアイコン表示をやってみたので備忘です
サンプルが昨日は動作しなかったんだけど、今日同じコードを書くととちゃんと動いてますね。。謎だ。。

SAMPLE


吾輩は猫である。名前はまだ無い。
どこで生れたか頓(とん)と見當がつかぬ。
何でも薄暗いじめじめした所でニヤーニヤー泣いて居た事丈は記憶して居る。
吾輩はこゝで始めて人間といふものを見た。
然(しか)もあとで聞くとそれは書生といふ人間中で一番獰悪(だうあく)な種族であつたさうだ。
此書生といふのは時々我々を捕(つかま)へて煮て食ふといふ話である。
然し其當時は何といふ考(かんがへ)もなかつたから別段恐しいとも思はなかつた。
但(たゞ)彼の掌(てのひら)に載せられてスーと持ち上げられた時何だかフハフハした感じが有つた許(ばか)りである。
掌の上で少し落ち付いて書生の顔を見たのが所謂(いはゆる)人間といふものゝ見始(みはじめ)であらう。
此時妙なものだと思つた感じが今でも殘つて居る。第一毛を以て装飾され.....

次はsyntaxhighlighterにLoading表示
    function hogehoge() {
      var hoge = "hongeee";
      return hoge;
    }
    function hoghog3() {
    var hoge1 ="";
    var hoge2 ="";
    var hoge3 ="";
    var hoge4 ="";
    var hoge5 ="";
    }
    
まず文章部分のコードです。
    <!--文章部分-->
      <div id="loading1"></div>
      <div id="container1" style="border-style:solid; border-width:2px; border-color:#ddd;">
        吾輩は猫である。名前はまだ無い。<br>
        どこで生れたか頓(とん)と見當がつかぬ。<br>
        何でも薄暗いじめじめした所でニヤーニヤー泣いて居た事丈は記憶して居る。<br>
        吾輩はこゝで始めて人間といふものを見た。<br>
        然(しか)もあとで聞くとそれは書生といふ人間中で一番獰悪(だうあく)な種族であつたさうだ。<br>
        此書生といふのは時々我々を捕(つかま)へて煮て食ふといふ話である。<br>
        然し其當時は何といふ考(かんがへ)もなかつたから別段恐しいとも思はなかつた。<br>
        但(たゞ)彼の掌(てのひら)に載せられてスーと持ち上げられた時何だかフハフハした感じが有つた許(ばか)りである。<br>
        掌の上で少し落ち付いて書生の顔を見たのが所謂(いはゆる)人間といふものゝ見始(みはじめ)であらう。<br>
        此時妙なものだと思つた感じが今でも殘つて居る。第一毛を以て装飾され.....<br>
      </div>
    <!--syntaxhighlighter部分-->
      <div id="loading2"></div>
        <div id="container2">
          <pre class="brush: js;">
            function hogehoge() {
              var hoge = "hongeee";
              return hoge;
            }
            function hoghog3() {
            var hoge1 ="";
            var hoge2 ="";
            var hoge3 ="";
            var hoge4 ="";
            var hoge5 ="";
            }
          </pre>
        </div>
    
HTML部では loadingとcontainerのidを持つdivを必ず準備して下さい
    /* 文章部分 */
    #container1{
      display:none;
    }
     #loading1{
      position:absolute;
      display: inline-block;
      background: url("301.GIF") 50% 80% no-repeat; /*画像は用意してください*/
      left: 0;
    }
    
    /* syntaxhighlighter部分 idが違うだけです */
    #container2{
      display:none;
    }
     #loading2{
      position:absolute;
      display: inline-block;
      background: url("301.GIF") 50% 80% no-repeat; /*画像は用意してください*/
      left: 0;
    }
    
    //Jquery必須
    
      
    
    
JavaScriptではgifを表示する場所の指定とフェードアウトと表示したい内容をフェードインします。
ちなみに上記のコードサンプルにはブラウザの幅や高さを変更した時の処理を書いていません。


2015年6月14日日曜日

テキストファイルをjavascriptで読み込む

ローカルのテキスト(shift-jis)ファイルを
html上で使用することがあったのでメモ

まずはファイル選択ができるHTMLを作成します。
    <head>
    </head>
    <body>
    <input id="file" type="file" value="ファイル選択" />
    <div id ="finfo"></div>
    <div id ="result"></div>
    </body>
    
次にFileAPIを使います。対応しているブラウザじゃないと動きませんが
chrome、FireFoxあたりは動作確認しました

サンプルコードでは選択可能ファイルは1つだけです
shift-jis以外の場合は8行目の'Shift-Jis’を変更してください
デフォルトUTF-8です
ファイル選択ボタンからファイル選択するとすると 変数outputにファイル内容が格納されます
<script>
document.querySelector("#file").addEventListener('change', function(e) {
  // File APIを利用できるかをチェック
  if (window.File) {
    var input = document.querySelector('#file').files[0];
    var reader = new FileReader();
    // ファイルの内容をテキストとして取得
    reader.readAsText(input, 'Shift-Jis');
    reader.addEventListener('load', function(e) {
      var output = reader.result;
      if (output === null){
        output = "";
      }
      var header = "[FileName] :" + input.name;
      header +="[size]" + input.size + "bytes";
      document.querySelector("#finfo").innerHTML = header;
      document.querySelector("#result").innerHTML = escbr(output);
      }
    }, true);
  }
}, true);

//HTMLエスケープと改行
function escbr(str) {
return str
        .replace(/&/g, '&amp;')
        .replace(/</g, "&lt;")
        .replace(/>/g, "&gt;")
        .replace(/"/g, '&quot;')
        .replace(/'/g, '&#039;')
        .replace(/\r?\n/g, "<br />");
}
</script>
  

SAMPLE

エンコード:

ここにファイルをドロップ
【結果】

2015年6月10日水曜日

Google Apps Scriptでキャッシュを使ってみる

Google Apps Scriptのキャッシュが
簡単に使えそうだったのでやってみました


種類は以下の3種類のようです。
違いはリンク先のリファレンスで確認してください
  • getDocumentCache()
  • getScriptCache()
  • getUserCache()
  • ───────────────────────────
    ちなみにgetPublicCache() は今後は使用不可になるのかな?
    リファレンスのサンプルコードにはまだ載ってますし使用可能でした

    下記のサンプルはREDというキーから
    Appleというデータをキャッシュから取得します
    キャッシュにデータがあればそのままログ出力し
    なければキャッシュに保持するというものです
    var cachedata = CacheService.getScriptCache();
    function myFunction() {
      var key = "RED";
      //cachedata.remove(key); //キャッシュ削除
      
      var sbuf = suna_cache.get(key);
      if (sbuf === null){
        //キャッシュに無いから保持
        sbuf = "Apple";
        suna_cache.put(key,sbuf);
      }
      Logger.log(sbuf);
     
    }
    //関数でもいいけどなんとなくクラス的なものにした
    var suna_cache = {
      put: function(key,data){
        cachedata.put(key,data,60*60*24); //24時間保持します。7日間が最大?のようです。
      },
      get: function (key){
         return cachedata.get(key);
      }
    };
      
    時間内はずっと使える連想変数みたいですね
    getDocumentCache()を使用してSpreadSheetに変化が少ないマスタのような
    データを保持している場合などは
    非常に有効になるんじゃないでしょうか
    たぶん配列で入るのか・・な?やったことないので時間があればやってみたいと思います
    キャッシュは便利な反面、バグを含んだままキャッシュに保持すると
    時間内はキャッシュがクリアされない限りバグったままになるので
    取り扱いは注意が必要です

    2015年6月6日土曜日

    syntaxhighlighterでのautoloader使用時の問題

    以前、HTMLと他言語をsyntaxhighlighterで表示する方法
    を投稿しましたがshAutoloader.jsを使用した場合に
    syntaxhighlighter表示にならず、かなりハマりましました・・・

    ならばautoloaderを使用しないようにしたら良いのですが
    こちらは多数のshBrush.jsを使用する場合に重かったり
    以前のIEでの表示問題があるようですね

    しかしshBrush.jsは今のとこ4種類くらいしか使わない、IE11では動作してた
    もうすぐEdgeだろう?などの理由でとりあえずautoloaderやめました

    そのうち公式で修正が当たんないかなぁ~;

    2015年6月3日水曜日

    syntaxhighlighter htmlとの混合記載など

    よく忘れそうな記載方法
    ・htmlと他言語の混合での表示
    <pre class="brush: js; html-script: true">
    <boby>
    <div>Hi!</div>
    </body>
    <scrpit>ほげほげ</script>
    </pre>
    
    ・タイトル部表示方法
    <pre class="brush: js;" title="タイトル" >
    </pre>
    

    2015年6月2日火曜日

    引き続きsyntaxhighlighterのCSS調整まとめ

    1. Mobileブラウザで表示崩れを補正
    2. safariなどで行番号が消えてたりするのを改善します
      .syntaxhighlighter {
        /*safariで行番号が消えるのを修正*/
        -webkit-text-size-adjust: 100%;
      }
      
    3. 縦スクロール表示無し
    4. 縦スクロールは邪魔と思ったので消します。
      .syntaxhighlighter {
       /* 縦スクロール非表示 */
        overflow-y: hidden !important;
      }
      
    5. 表示枠線調整
    6. .syntaxhighlighter table {
        /* 表示枠の線種 線色と線の太さ調整 */
        border:solid 1px #EEE !important;
      }
      
    7. IE用調整
    8. /* 元々はこれ
       .syntaxhighlighter.ie {
        font-size: .9em !important;
        padding: 1px 0 1px 0 !important;
      } を以下のように変更 */
      .syntaxhighlighter.ie {
        /*IEフォントサイズ*/
        font-size: 1em !important;
        /*IE横スクロール対策*/
        padding: 0 0 1.4em !important;
      }
      
    9. はみ出し対策
    10. 横に長いCodeが枠外へ突き抜けるのを防止
      .syntaxhighlighter .line.alt1 {
        word-break: break-all !important;
      }
      .syntaxhighlighter .line.alt2 {
        word-break: break-all !important;
      }
      
    11. 奇数行の背景色変更
    12. 行の見通しよくします
      .syntaxhighlighter .line.alt2 {
        background-color: #F8F8F8 !important;
      }
      /*偶数行の背景色は以下*/
      .syntaxhighlighter .line.alt1 {
        background-color: white !important;
      }
      
    13. タイトル枠の表示調整
    14. .syntaxhighlighter table caption {
        color: white !important;
        background-color: #848484 !important;
        line-height: 0.50em !important;
        font-size: 12px !important;
        margin-left:2em;
      }
      

    Bloggerでsyntaxhighlighter表示してみた

    1. syntaxhighlighter version 3.0.83をdownload
    2. 落としてきたzipを解凍する
    3. 必要なcss(stylesフォルダ内の最低1つ以上)
    4. 必要なjs(scriptsフォルダ内)
      • shCore.js(必須)
      • shAutoloader.js(任意だが今回の例では必要)
      • shBrushJScript.js(任意) 他にもcss php sql vb perl delphiと色々あるが必要分だけでok
    5. cssとjsをGoogleDriveにUpload
      (他にもupload先はGoogle Apps Site等でも可能そうですがとりあえず)
    6. uploadしたファイルを共有します(オン・ウェブ上で一般公開)

    Bloggerのテンプレートをhtmlで編集します。
        <head>の上部に記載(他のCSSより上)
    
    <head>
    
    
    
    </head>
    
        </body>の直前に記載
    
    
    </body>
    
    Bloggerのテンプレート保存をします
    これでとりあえず完了です
    あとは以下のようにhtmlコードを投稿してみます
    <pre class="brush:html;" title="htmlサンプル">
    <head>
    <title>ほげほげ</title>
    </head>
    <body>
    
    </body>
    </pre>
    
    classの値をbrush:js とすればJavaScriptでの表示になります
    あとはuploadしたcssを細かく調整していくのみです
    これが大変でした。。