投稿

10月, 2017の投稿を表示しています

UniServer Zero で sqlite が使えない

イメージ
UniServer Zero ZIII で sqlite が使えない → php の sqlite エクステンションが有効になっていない 使用している php.iniを調べるため phpinfoを表示させる 使用している php.ini を確認→エディタで開く sqlite を検索して、利用したい extension (今回は pdo) のコメントアウトを削除 Apacheを再起動する

Android でゲストを削除する(ロック解除を無効にできない)

イメージ
Android でゲストが存在すると、ロック解除で「なし」を選択できなくなる ユーザーを決めずに利用しているタブレットなどで、間違ってゲストモードを起動させてしまうとロック解除が必要になってしまう また、設定からはゲストモードを削除する方法が見当たらない というのも、ゲストモードを削除できるタイミングは ゲストモードから本人が削除を行ってログアウトさせる ゲストモード切替時にデータを削除して初期状態にする ゲストを削除するには、画面上部のバーからゲストモードへ切り替えた後、再び画面上部のバーを開くと「ゲストを削除」が表示されるようになる または、ゲストモードへ切替時に「最初から開始」を選択すると、ゲストモードのデータを削除してロック画面へ戻るので、 ロック解除を行わずに 上部のバーから「ゲストを削除」する これで、Ownerモードから設定にロック解除なしが選択できるようになる

左寄せの div を中央に置く CSS

イメージ
左寄せの div をページ全体でセンタリングするスタイルシート /* CSS */ div.sotomi{ text-align: center; } div.nakami{ display: inline-block; text-align: left; } /* HTML */ <div class="sotomi" style="background-color:#eeeeff;"> <div class="nakami" style="background-color:#ffeeee;"> ほげほげ<br ⁄> ほげほげほげほげほげほげ<br ⁄> ほげほげ<br ⁄> </div> </div> 結果

Indy TIdHttp の デフォルト useragent - Delphi/C++Builder

Indy (10系統) TIdHttp  の デフォルト useragent Mozilla/3.0 (compatible; Indy Library)

Raspberry Pi に google-home-notifier を入れた時に躓いたメモ

Raspberry Pi に google-home-notifier を入れた時にいろいろと躓いたメモ >> 素のラズパイへ入れようとしました(一部、ディレクトリ名は伏せ字です) 【先に結論】 node.js と npm と google-home-notifier を入れる前にやっておくべき事 sudo ではなく su や sudo -s で root になっておくとトラブル少ないかも 下記が入っていない場合は、入れておく # apt-get install git # apt-get install libavahi-compat-libdnssd-dev これらをインストールしていないと、下記のような目にあいます (別の素のラズパイで、上記をインストールしてからは問題なしでした) gitが入っていなければ # apt-get install git こちら を参考に node.js と npm をインストール # apt-get update # apt-get install nodejs npm # npm cache clean # npm install npm n -g ここで ssh へ入り直したほうがよい?? # n stable 途中で README がねー とか WARN が2つほど出ますが無視(して問題無さそう) こちら  や こちら を参考に google-home-notifier をインストール としたわけですが # npm install でエラーがドバーッっと >>>>> /google-home-notifier# npm install npm WARN package.json google-home-notifier@1.2.0 No repository field. / > mdns@2.3.3 install /hogehoge/google-home-notifier/node_modules/mdns > node-gyp rebuild make: Entering directory '/hogehoge/google-home-notifier/node_modules/mdns/bui

「【楽天カード】ご請求予定金額のご案内」 マルウェアリンクのURL

下記の件名などで届く、マルウェアリンクを記載した楽天カードを偽装したメール 【楽天カード】ご請求予定金額のご案内 【重要】カスタマセンターからのご案内【楽天カード株式会社】 口座振替日のご案内【楽天カード株式会社】(楽天カード) 記載のリンクは、だいたい下記のような形式で、パスはランダムな数字だが何処を開いても(ルートでも)これらのドメイン配下は、同じ「料金明細をチェック.zip」のダウンロードとなる (www のサブドメインはフツーのサイトなので、Wordpressやファイルマネージャーを乗っ取られて、踏み台にされている様子) http://se.artlyticalmedia.com/zzzzzzz0000000/zzzzzzz0000000zzzzzzz0000000/zzzzzzz0000000 http://gw.hexadecicolors.com/zzzzzzz0000000/zzzzzzz0000000zzzzzzz0000000/zzzzzzz0000000 http://de.davidrhoderick.com/zzzzzzz0000000/zzzzzzz0000000zzzzzzz0000000/zzzzzzz0000000 http://fr.hexadecicolors.com/zzzzzzz0000000/zzzzzzz0000000zzzzzzz0000000/zzzzzzz0000000 これらにマッチする正規表現 http:\/\/[a-z][a-z]\.[^\/]+\/[a-z]+[0-9]+\/[a-z]+[0-9]+[a-z]+[0-9]+\/[a-z]+[0-9]+ また、サブドメインが 2文字という特徴があるので http:\/\/[a-z][a-z]\. だけでも良いかもしれません 他に User-Agent ヘッダに Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 が含まれている特徴もあります

Android向け Microsoft の ホームアプリと Edge

イメージ
Android向け Microsoft の ホームアプリ と Edge がリリースされ、ホームアプリはなかなかの高評価、これで bing 利用者も増えるかも?? 一方の Edge は、レンダリングエンジンは独自の Trident ではなく blink 使ってみた所、軽快さがない・・・プレビュー版だから? Windows で Edge 使ってる人のみにオススメな感じか

Google Home(Assistant) での独自コマンド所感

Google Home(Assistant) で独自コマンドを色々作ってみた所感 一発物の命令と応答 「ok,google テレビつけて」みたいなの IFTTT で this に Google Assistant that に Webhook を選択するだけ、だが this→thatが一方通行なため、Web等からのレスポンスを Assistant へ反映できない 具体的には this の Google Assistant で文字や数値を入れるタイプを選択した場合 $ を入れた所が、変化する場所(例「お父さんに $ とメールして」)で、レスポンス(例「お父さんに $ とメールしました」)には $ が使えるのみ 一方 that の Webhook では $ → {{TextField}} という置換文字を post したりして Webへ送り出すことは出来る。ただし、ここでのWebレスポンスを先程の、レスポンスに使うことが出来ない チャット形式のアプリ型 「ok,google リモコンにつないで」みたいなので、リモコンアプリに接続(そっから先は、アプリから抜けるまで、アプリとの対話になる) 詳細な流れは コチラ 上記だと、レスポンスを変えられないので物足りない 下記だと、大掛かりすぎるというかチャットを抜けるまで対象アプリとの会話になり、自然終了しない ちなみに連携サービス IFTTT, Microsoft Flow, Zaiper のうち、Google Assistant に対応するのは今のところ IFTTT のみ これ IFTTTができてるんなら、直接 Google Assistant とやり取りできるんじゃないかと思うのだが、誰かおせーてー

google_accounts_daemon: Google Compute Engine OS Login is not active. の謎ログ(未解決)

Google Cloud Platform で VM を作り直した(Centos7)ところ messages ログへ1分毎に下記が記録される google_accounts_daemon: Google Compute Engine OS Login is not active. SELinux の無効を有効に戻しても、関係なく記録され続け... いつから記録されているかと遡ってみたら、マシンを構築してすぐ、私がまだ最初にログインする前から既に記録されていた... とりあえず # systemctl stop google-accounts-daemon.service # systemctl disable google-accounts-daemon.service なんかで逃げてみたけど、他に影響出ないだろうか... そういえば、このサーバを作成し直した原因が yum update で google~ みたいなアップデートで反応がなくなって、再起動しても cpu使用率100%のまま起動不能になったことだった 詳しく調べずにマシンを作成し直したワケだが、google~daemonに問題ありなのかも

正規表現で最後のスラッシュまでを取得

正規表現でURL等の最後のスラッシュまでを取得 var urlSrc = 'http://example.com/hoge/fuga/index.html'; var urlPth = urlSrc.match(/.+\//); // ← http://example.com/hoge/fuga/

Let's Encrypt + さくらレンタルサーバー OSブラウザ別 .htaccess

Let's Encrypt にさくらのレンタルサーバーが対応したので、リダイレクト用 .htaccess を書いたメモ 非対応のブラウザ等はリダイレクトしないという感じの記述です 本来はガラケーとかも考慮すべきかもしれませんが、下記ではしてません Let's Encrypt 総合ポータル  と  userAgent一覧  を参考に、iOS, Android, Internet Explorer の旧バージョンをザックリと対象外に RewriteEngine on RewriteCond %{HTTP_USER_AGENT} !iPhone\ OS\ [2-3]\_ RewriteCond %{HTTP_USER_AGENT} !Android\ [1-2]\. RewriteCond %{HTTP_USER_AGENT} !MSIE\ [4-9]\. RewriteCond %{HTTP:X-SAKURA-FORWARDED-FOR} ^$ RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 改行を LF で記述

IFTTT で "Push Notifications failed to update" と表示されて通知をオフにできない

イメージ
IFTTT で Applet の通知をオフ or オン しようとすると "Push Notifications failed to update" とポップアップ表示されて通知を変更できない Applet を turned off で無効化した後、設定変更を行う

IFTTTで Maker (Maker Channel)が見つからない

イメージ
IFTTTで Maker (Maker Channel) を検索しても表示されない → Webhooks を使え (配置などは同じなので、Maker Channel を例にしたサイトを参考に利用できます) https://ifttt.com/maker のリンクも  https://ifttt.com/maker_webhooks へ飛ばされます

Google Home の設定に必要なアプリが動作する Android および iOS バージョン

Google Home (mini含む) の設定に必要なアプリケーションが動作する Android および iOS バージョン が見つけられにくかったのでメモ PCではいずれも設定不可、せめてChromeブラウザ拡張でできるようになれば便利だけど、初期の Wi-Fi 接続設定が困難ですな --> OS バージョン Android 4.4 以降 iOS 9.1+ 以上 Windows 設定不可 Mac OSX 設定不可 【参考】 Google Home および Google Home Mini を使用するための OS の最小要件

Google Home の独自コマンドを PHP から応答

イメージ
Google Home(Assistant) の独自コマンドを PHP(Webサーバ) から応答させたときのメモ 【注意】 ここで使用する独自コマンドは、Google Home から独自コマンドが搭載された自作アプリへ接続して、会話を行うような利用方法です。ok,google に続いて一発ものの命令を行う場合 IFTTT を利用するほうが容易です 基本的な流れは こちら を参考にさせていただきました 上記は例が python + Flask なので既存のサーバへ受け渡すのとはちょっと違ったのでPHPの場合を捕捉 大まかな流れ等 DialogFlow のアカウントを有効にするGoogleサインアップがフツーかもGoogle傘下なので Agentを作成(この中に intent を複数作成していく) Intentを作成(音声命令 = intent な感じです) 解説に有る Fulfillment のチェックボックスが見つからないのは、Fulfillment が定義されていないからです。Fulfillmentを定義すると出現します Entities は音声命令を節毎に分離して汎用性を高められます 「 テレビ の 電源   入れて 」の各節を TV とか パワー とか オンして  みたいなゆらぎを入れてクロスでマッチしてくれたりします(後で intent に組み込めるのでテストでは飛ばしてもOK) Fulfillment で呼び出す URLを指定 ここのURLは Agentと対になり Intent の Action が送られてきますので、URLが違えば Agent も違うという事になる Intent が音声等で選択されると Fulfillment で指定されたURLへ json形式のデータが送られてきて、レスポンスも json形式で返すことになります PHP の場合、 こちら の 形式で応答(Action の sayHello が該当の箇所) また、送られてくる json は、DialogFlowの右側にある「try it now」からコマンドを入力して、一番下の show json で確認できるので、ファイルに保存して 上の $update_response = file_get_contents ( "p

Android 8.0 (Oreo) 前後ショートカット作成方法の違い - Android Studio

イメージ
Android 8 (O) API26 からショートカットの作成方法が変わったのでメモ String shortcutName = "Shortcut Name"; Intent shortcutIntent = new Intent(Intent.ACTION_MAIN); shortcutIntent.setClassName(this, "com.example.myApplication"); // 呼び出すActivity shortcutIntent.putExtra("key1", "value1"); // 渡す情報() shortcutIntent.putExtra("key2", "value2"); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // Android 8 O API26 以降 Icon icon = Icon.createWithResource(getApplicationContext(), R.mipmap.ic_shortcut); ShortcutInfo shortcut = new ShortcutInfo.Builder(getApplicationContext(), shortcutName) .setShortLabel(shortcutName) .setLongLabel(shortcutName) .setIcon(icon) .setIntent(shortcutIntent) .build(); ShortcutManager shortcutManager = getSystemService(ShortcutManager.class); shortcutManager.requestPinShortcut(shortcut, null); // フツーのショート

Amazon Prime 会員向けに読み放題サービス開始

イメージ
読み放題サービス Prime Reading 開始 家族会員のアカウントにもメールが到着しているが、家族会員が利用できるかは不明(Video等も利用できないので、おそらく不可) まぁ、Videoとか有るくらいだから、読み物もあって当然かも

WebView の Basic認証 NG時にリトライさせたい - Android Studio

WebView の Basic認証をダイアログ表示させるものの、入力情報が間違っていてもリトライしてくれない 認証エラーは onReceivedHttpError イベントの errorResponse.getStatusCode() == 401 を拾うことで捕捉可能ですが、ページを初めて開いた時も同じ401のイベントが発生するので注意が必要です 下記では authRun をダイアログ入力直後とするフラグを設けて onPageFinished や onReceivedError で解除を行っていますが、もっとスマートな方法は無いものだろうか... @Override @TargetApi(Build.VERSION_CODES.M) public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) { super.onReceivedHttpError(view, request, errorResponse); if( request.isForMainFrame() && (errorResponse.getStatusCode() == 401) && authRun ){ authRun = false; view.reload(); } } 【追記】 上記コードは Android 6.0 (API 23) 以降用でで、それ以前は 同名のイベントが存在するものの... @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { // < API 23 super.onReceivedError(view, errorCode, description, failingUrl); } これが全く使えないイベントで 401時に呼ばれるはするものの errorCode に -1 が入っていたりして

ClosedXML.dll の入手

イメージ
ClosedXML.dll の入手について友人から聞かれたのでメモ ClosedXMLは 旧公式サイト から GitHub へ移動 バイナリDLLがダウンロードできるのは、旧サイトの Downloadsページ  の右の方 (ここでは、0.75.0までのバイナリがダウンロードできるらしい) 上記より新しいバイナリは、GitHubのソースからコンパイルしなさい GitHubのソースからコンパイル手順 ClosexXML(GitHub)  右の  Clone or download から zip ファイルをダウンロードして解凍 Zipファイル内の ClosedXML.sln を Visual Studio (今回は 無料の 2015 Community)で開く ソリューションをビルド(注意・デフォルトで他のプロジェクトが選択されている場合がある) ClosedXML-develop\ClosedXML\bin\Debug や ClosedXML-develop\ClosedXML\bin\Release に  ClosedXML.dll や  DocumentFormat.OpenXml.dll が生成される FastMember.Signed.dll は何でしょう??

Button のイベントを発生させる - Android Studio

ボタンのタップイベントを呼び出す ((Button)findViewById(R.id. myButton )).callOnClick();

Android ProgressBar の setAlpha は 0~1

Android で ProgressBar の setAlpha 設定を行ったメモ setAlpha の引き数 0~255 のパーツが多いみたいですが ProgressBar の setAlpha は 0(透明)~1(透過なし) の float 指定 progressBar.setApha(0.5f) とかです

Android ProgressBar のクルクルが環境によって表示されない

イメージ
Android の ProgressBar のクルクル(砂時計というのも古いのか)が実行環境によって表示されない 開発者向けオプションの「 Animator再生時間 」が オフになっていると 、そのものが 表示されません また、クルクルの速度はここの設定が反映されますが、あまり遅い 2x等にすると、ホーム画面のフォルダがモッサリしたりします

Android Studio で AdMob 導入手順が簡単になっていた

イメージ
SDKの容量がものすごいことになり(200GB)ついでに、Android Studio 2.3.3 を再インストールした環境で、久々に AdMob を利用しようとしたら、かなりやり方が変わっていたのでメモ AdMob にサインインして、広告ID(ca-app-pub-XXXXXXXXX みたいなの)を受け取るのは同じです 上記取得で、 Google Mobile Ads SDK をダウンロードしてください。 と出ますがリダイレクトループでダウンロードできませんし、よく手順解説で見かける  google-services.json へのダウンロードリンクもなくなってます という事で プロジェクトへの追加 は File - Project Structure を開いて、Ads の AdMob にチェックを入れて OK を押すだけ 必要なものがダウンロード?され build.gradle に項目が追加されます(たぶん) あとは AndroidManifest.xml に権限を追加 (無ければ)     <uses-permission android:name="android.permission.INTERNET">     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"> レイアウトに広告ブロックを追加         <com.google.android.gms.ads.AdView             android:id="@+id/adView"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:layout_centerHorizontal="true"             android:layout_alignParentBottom="true&quo