月別アーカイブ 9月 2018

著者:ym

Google Chrome の www と m が省略される機能を無効化

Google Chrome の www や m を省略する機能がうざいので無効化。

chrome://flags#omnibox-ui-hide-steady-state-url-scheme-and-subdomains

これで完了。あとは Google Chrome を再起動すれば完了です。

と思ったら、修正された?こんな記事を見つけました。せっかく設定したのに、アップデートで戻った様子。設定した所も元に戻しておきました。

  • この記事いいね! (1)
takahashi 著者:takahashi

Ubuntuのアップグレード機能を使って、16.04から18.04へアップグレードしてみる。

久々に、UbuntuのOSアップグレードを試してみました。
今回は16.04から18.04へのアップグレードです。

インターネットにつながっていて、かつ最新のパッケージリストを取得できていれば、上のようなダイアログが出現するかと思います。
出現しない場合は、

sudo apt update

を実行してみてください。

(※アップグレードは失敗するとOSが壊れる可能性のある結構リスキーな操作です。PCの強制シャットダウンなどの不正操作を行わない限り基本的に壊れることはないとは思いますが、念のためアップグレード前にバックアップを取っておくことをお勧めします。)

Ubuntuのバージョンをアップグレードする場合は”いますぐアップグレードする”をクリックします。

管理者権限が必要となるので、sudoが使えるユーザーの認証情報を入力します。

リリースノート(英文)が表示されるので、内容を確認して”アップグレード”をクリックすると、アップグレード処理が開始されます。

サードパーティのリポジトリはすべて無効化されます。
自分でリポジトリを追加した場合は、アップグレード後に再度追加する必要があります。

最終確認が出てきます。
“アップグレードを開始”をクリックすると、新しいバージョンへの上書きが実行されます。

暫く待ちます。

アップグレード後に使用するディスプレイマネージャー(GUIの動作を管理するアプリケーション)を、従来のLightDMを使うかGDM(Gnome標準)に変更するか聞かれます。
18.04でのデフォルトはGDMですが、自分の場合LightDMを選択しました。
現時点では特に不具合は出ていないようですので、ここはお好みで選択しても大丈夫かと思います。(後から切り替えることもできます。詳しくは検索してみてください。)

18.04ではサポートされない古いパッケージ(アプリやライブラリなど)を削除するか聞かれます。
対象のパッケージが一覧で確認できるので、削除されても問題ないか確認して問題なければ”削除”を選択します。

すべて完了すると、再起動を促されるので必ず再起動をクリックします。

この時点で壁紙がすでに新しいバージョンのものに差し変わってますね。
気付きましたか?

再起動してログインすると、初期画面が表示されます。
画面に従って初期設定を進めていきます。

これで更新作業は完了です。

昔のUbuntuはアップグレードすると不具合が結構出ることもあったのですが、今回はアップグレードによって発生したと思われる目立った不具合は見つけていません。
CUIでの使用がメインというのもあるかもですが、安定性はどんどん上がっている気がしますね。

興味のある方は是非お試しください。

  • この記事いいね! (0)
asaba 著者:asaba

【firebase】firebase:cloud Massegingで送信失敗した時の解決策

firebaseはcloudを使ってデバイス同士のやりとりを高速で体現できることが特徴で、主にチャットの機能にも使われています。オフラインからオンラインになったタイミングで通知を流したりとプラグインと組み合わせることで好きなタイミングで機能を追加することができるなど、モバイルアプリを開発するユーザーにとってはありがたい機能がそろっております。

今回はfirebaseのcloud massegingを使ってデバイスにプッシュ通知を送信できなかったときの対策を備忘録として書きます。

例えば、メッセージ送信の際に突然めせーじが遅れなくなり送信失敗と赤いアイコンが出てしまったとき。

そのような時は、FCM登録トークンに着目しましょう。赤く囲んだところです。

 

このエラーは、デバイスのトークンがアプリを消してしまった際に違うトークンIDに変わってしまったことが原因です。

回答としては、現在のトークンIDをconsole.log(xxx)で調べ、それを先ほどの赤く囲んだところにコピペするだけです。

開発中のアプリを新しくインストールしたりアンインストールしたり繰り返していると、トークンIDがすり替わっているのを忘れてしまいがちなので、そこは気を付けたいと感じました。

 

  • この記事いいね! (0)
著者:杉浦

javascriptの静的解析ツールESLint

ESLint – Pluggable JavaScript linter
 ESLintはjavascriptのためのlintです。lintはプログラムが動作不能になるような致命的な文法エラーのみならず様々なものを発見する目的で使用されます。発見したいものは例えば、間違いを犯しやすい記述であるアンチパターン、インデントの乱れのようなコードスタイルのぶれ、です。ESLintの特長は次の様な拡張性にあります。

  • すべての検証ルールを自由にon/offできる
  • 260個以上(5.5.0時点)の豊富なルールがある

  •  この特長のため自分のプロジェクトに合わせたカスタムルールを簡単に作ることができます。また、ECMAScript 2015 (ES6), 2016, 2017, 2018, 2019を標準サポートしており、新しくなった記法を使う様に自身を矯正することもできます。
     ESLintはnpmで導入できます。
    eslint – npm
     installはプロジェクトのルートをcdにして次のコマンドを実行です。

    npm install --save-dev eslint

     同じくプロジェクトのルートに.eslintrc.jsonを置いて、以下の記述を書き込んで簡単な初期設定が完了です。

    {
        "extends": ["eslint:recommended"],
        "parserOptions": {},
        "env": {"browser": true},
        "globals": {},
        "rules": {}
    }

     実行は

    eslint src/js

    のみです。これでsrc/js以下がeslintにかけられます。
     
     上述した通り、eslintには多数のルールがあります。その一つ一つを管理するのは手間です。そのためまずはextendsでルールセットを継承します。ここではeslintのおすすめにしてありますが、プラグインとして様々な設定が公開されています。googleなんかも公開しています。
     parserOptions,env,globalsには実行環境の構文なり、ライブラリなりを書き込みます。これを設定しないと問題が無いにも関わらず、グローバル変数、関数を宣言していない、その構文は成り立たない、と怒られます。

    //設定例
        "parserOptions": {
            "ecmaVersion": 2018
        },
        "env": {
            "browser": true,
            "es6": true,
            "jquery": true
        },
        "globals": {
            "L": false,
            "google": false,
            "cloneLayer":false
        },
    

     eslint src/jsを実行した際にsrc/js/lib以下にライブラリが入っているとなるとeslintがライブラリにも怒り始めます。.eslintignoreという設定ファイルでこれを制御できます。書き方は色々なignoreファイル同様、対象に含みたくないファイルのパスを羅列するだけです。

    **/lib/*

     eslintにかけた対象が既存のコードであったり、一気に組み立てた初期のコードであったりする場合、大量のerrorとwarningが出力されます。そしてその大半はいちいち手作業で直すのが嫌になる様な手間な部分です。–fixオプションを付けることでインデント、クォート、セミコロンの様な単純なミスをeslint側で修正してくれます。

    eslint src/js --fix
    • この記事いいね! (0)
    村上 著者:村上

    【Xcode】アプリを実機で起動した時の「iPhone is busy: Processing symbol files」エラーの対処法

    Xcodeでたまに見る実機での実行エラーについて。
    今回遭遇したのは、「iPhone is busy: Processing symbol files」というエラーでした。

    エラー全文は、以下の通りです。

    iPhone is busy: Processing symbol files(iPhoneがビジー状態:シンボルファイルの処理)
    Xcode will continue when iPhone is finished.(iPhoneが終了するとXcodeが続行されます)

     

    原因としては、シンボルファイルの処理に時間がかかっていることだったので、待っていればいつか終わるらしいです。
    なお、参考にさせていただいた記事はこちらから。

    iPhoneアプリを実機で動作させようとしたらエラー|房総ITサービス
    http://boso-it.com/xcode/iphoneアプリを実機で動作させようとしたらエラー/

    が、Macのスペックにもよりますが、だいたい処理の終了まで10分程度かかるとのこと。
    私含め、そんなに待てない!という方は、別の方法として、iPhoneの再起動をお試しください。

    再起動は、一度アプリの実行を停止し、念のため、Macと繋がるケーブルを抜いてから行ってください。
    私の環境ではこれで上手くいきました。
    こちらの方法については、下記の記事を参考にしました。

    実機デバッグで、busyエラーが出た時の対処 – ramkaの朝ごはんはピーナッツパン
    http://ramka.hateblo.jp/entry/2018/02/14/013549

     

    以上、Xcodeでアプリを実機で動かそうとしたときのエラーについてでした。
    もし、同じエラーに遭遇した場合は、参考にしていただければと思います。

    • この記事いいね! (0)
    著者:ym

    SQL命令で正規表現文字列置換

    SQL 文で正規表現で文字列置き換えした上でJOIN。

    以外と簡単にできました。

    データはこんな感じ

    www.cpoint-lab.co.jp.11111

    この文字列 .11111 が邪魔でJOINができなかったのですが、

    SELECT regexp_replace('www.cpoint-lab.co.jp.11111', '.[0-9]+$','') AS F1;

    無事できました。

    これ使えば、置換後の値で連結できますね。ざっと検索した限りだとMySQLとPostgreSQL, Oracle あたりは使える様子。

    • この記事いいね! (0)
    村上 著者:村上

    【Cordova】FCMによるプッシュ通知のアイコンが白い四角になるときの対処法

    調べていたのは別の症状についてだったのですが、これも有益そうだったので、備忘録としてまとめ。
    Cordovaで開発中のアプリに、FCM(Firebase Cloud Messaging)を利用したプッシュ通知機能を追加したのですが、Android端末に送られてきた通知のアイコンに指定した画像が反映されず、単なる四角形になってしまったときの対処法について。

    参考にさせていただいたサイトはこちらから。

    IonicでFCMによるpush通知を行う – Qiita
    https://qiita.com/saihoooooooo/items/34712738d5cc6f03cdf4

    また、使用しているプラグインはこちらです。

    GitHub – fechanique/cordova-plugin-fcm: Google FCM Push Notifications Cordova Plugin
    https://github.com/fechanique/cordova-plugin-fcm

     

    で、対処法ですが、そもそも原因はアイコン画像が指定されていないか、指定方法が間違っているのが原因です。
    そのため、下記の場所にそれぞれアイコンを保存します。

    • platforms/android/res/mipmap-ldpi
    • platforms/android/res/mipmap-mhdpi
    • platforms/android/res/mipmap-hdpi
    • platforms/android/res/mipmap-xxhdpi
    • platforms/android/res/mipmap-xxhdpi
    • platforms/android/res/mipmap-xxxhdpi

    そして、config.xml で、下記のようにアイコンの指定を行います。

    <platform name="android">
        <resource-file src="resources/android/fcm_push_icon/drawable-ldpi-icon.png" target="res/mipmap-ldpi/fcm_push_icon.png" />
        <resource-file src="resources/android/fcm_push_icon/drawable-mdpi-icon.png" target="res/mipmap-mdpi/fcm_push_icon.png" />
        <resource-file src="resources/android/fcm_push_icon/drawable-hdpi-icon.png" target="res/mipmap-hdpi/fcm_push_icon.png" />
        <resource-file src="resources/android/fcm_push_icon/drawable-xhdpi-icon.png" target="res/mipmap-xhdpi/fcm_push_icon.png" />
        <resource-file src="resources/android/fcm_push_icon/drawable-xxhdpi-icon.png" target="res/mipmap-xxhdpi/fcm_push_icon.png" />
        <resource-file src="resources/android/fcm_push_icon/drawable-xxxhdpi-icon.png" target="res/mipmap-xxxhdpi/fcm_push_icon.png" />
    </platform>
    

    なお、厳密にこのとおりでなくても良いようなので、ファイル名などは適宜変更してください。

    あとは、送信時のJSONデータに、アイコンと色を指定すればOKです。

    {
      "to": [デバイストークン],
      "priority": "high",
      "notification": {
        "icon"  : [アイコン画像],
        "color" : [色コード],
        "title" : [アプリ名],
        "body"  : [メッセージ],
        "sound" : "default",
      }
    }
    

    …が、私の環境ではまだ直っていないので、きっとどこかにミスがあります…。
    恐らくですが、アイコン画像の場所とかが怪しいかな。

     

    以上、Androidでプッシュ通知にアイコン画像が反映されていない時の対処法でした。
    意外とこういう小さな箇所って、だからこそ目についたりするので、気を付けたいですね。

    • この記事いいね! (0)
    著者:杉浦

    正規表現で行に文字列を含むことのNOT,AND,OR

     正規表現のlookaheadは文字列を消費しません。^(?=.*hoge)で行全体を先頭からlookaheadできます。この二つを用いることで、ある文字列を行に含む、含まないの組み合わせを正規表現で自由に作ることが出来ます。基本パーツは次の四つです。

    ^(?=.*hoge).*$ hogeを含む行
    ^(?!.*hoge).*$ hogeを含まない行 not A
    ^(?=.*hoge)(?=.*fuga).*$ hogeとfugaを含む行 A and B
    ^((?=.*hoge)|(?=.*fuga)).*$ hogeかfugaを含む行 A or B

     hoge,fugaにはそれぞれのかっことその中身を当てはめられます。これらを組み合わせて、好きに長い検索ができます。ABとBCの組み合わせかCDを含み、DEかCAを含まない行ならば((AB and BC) or CD) and not (DE and CA)であり、
    ^((?=.*AB)(?=.*BC)|(?=.*CD))(?!.*(?=.*DE)(?=.*CA)).*$

    となります。

    • この記事いいね! (1)
    asaba 著者:asaba

    【android Java】初心者向け・Linearlayoutの使い方

    今日は、androidstudioのレイアウトについて気づいたことを備忘録に残したいと思います。

    今回はLinearlayoutの使い方をメインに綴ります。

    お題の主役であるLinearLayoutは、ある部品を等しく一直線に並べたいと思ったときによく用いられます。Layoutの中でも最も使用頻度が高く汎用性のあるレイアウトといっていいでしょう。htmlでいうdivの役割と似ていますね。

    使い方は、シンプルで一直線に並べたい部品を中に囲むだけ。下記のように書くだけです。

    例えば、ボタン三つを横一列で中心に表示したい時は
    android:orientation="horizontal"
    
    android:layout_gravity="center"
    

    と<Linearlayout内でプロパティを決めます。
    Designタグを見て下記のようになっていれば成功です。

    これだけならすごく簡単ですね。

    複数の部品を決まった場所にそれぞれ配置したいとなってくるとRalativelayoutを使う必要がありますが、簡単なアプリを作ってみたいというかたはまずはLinearlayoutから触ってみてください。他にもTablelayoutやGridlayoutなど様々な特徴を持ったレイアウトがありますが、使う機会があったらまたやんわりと紹介していきたいと思います。

     

     

    • この記事いいね! (0)
    著者:ym

    下位ディレクトリでの RewriteRule off と認証

    Apache 2.2 へ変更して検証をしているのですが悩んでいた所が解決したので、メモがてら残します。

    ドキュメントルート (/htdocs/) に .htaccess を設置し WordPress 用の RewriteRule を入れ込んでいて、下位ディレクトリの .htaccess で AuthType Basic を指定した場合、どうしても 404 エラーとなる状況でした。

    本来であれば基本認証ダイアログを表示し、認証通過した場合のみサブディレクトリ内のページを表示してほしかったのですが、認証ダイアログは出ず、そのまま WordPress の 404 ページが表示されてしまう形です。

    調査の結果、ErrorDocument 401 /error/401.html と指定しているにもかかわらず、401 ファイルが存在せず 404 となり、そもそも認証ができていませんでした。

    基本認証を要求するサブディレクトリではAuthType Basic 関連行とは別に ErrorDocument 401 も指定。これです。

    ErrorDocument 401 "Unauthorized Access"
    RewriteRule Off
    

    かなり前からのアルアルですが、またハマったので再度書きます。

    • この記事いいね! (0)