投稿

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

Gmail で さくらのレンタルサーバーから SSL で POP3 受信

イメージ
Gmail から さくらレンタルサーバー のメールを SSL で POP3 で受信するメモ POPサーバ:  さくらの初期ドメインでドメインを記載 ←重要 ポート番号:  995 メールの取得にセキュリティで保護された~ にチェックを入れる

楽天が通信キャリア事業に進出

楽天が通信キャリア事業に 進出 新規で進出するくらいなら、イー・アクセスの買収(ソフトバンクが総額 3600億円)でもうちょっと頑張っておけばよかったものの、いつもの出遅れが楽天らしい所です すっかりソフトバンクも横並びになり、マンネリ化した通信業界に新規参入は利用者にとってプラスになることは間違いないでしょう 個人的には、Amazonとの差を埋めるために運送業でもやったほうが良かったのではと思いますが...

PHP の PDO で debugDumpParams の出力をファイルなどに保存

SQL の実行結果を確認しようにも bindValue や bindParam を使っていると、実行内容を取得できない debugDumpParams を利用すると SQL へ渡った情報を標準出力に吐き出すことが出来る その内容をファイルなどに保存する $stmt -> execute (); if ( ob_start ( 'callback' ) ){      try {          $stmt -> debugDumpParams ();     } finally {          // ob_end_flush();          ob_end_clean (); // callback からの戻り値を出力しない     } } function callback ( $buffer ){      file_put_contents ( 'sqlresult.txt' , $buffer );      return $buffer ; } 通常は execute() の直後に debugDumpParams() を呼び出せば、標準出力に吐き出されますが ob_start(関数名) で、内容をコールバック関数へ渡しています。今回は 標準出力へ表示する必要が無いので、ob_end_clean() を用いていますが、callback の戻り値を出力する場合は ob_end_flush() を利用します。 $stmt -> execute (); if ( ob_start ( 'callback' ) ){      try {        ...

PHP の call_user_func_array + bind_param で参照渡し

call_user_func_array で mysqli の bind_param を呼び出しをまとめつつ、汎用性をもたせたい bind_param は 第2引き数以降が参照渡しでなければならないので、渡す配列を作成する段階で参照渡しを入れておく必要があるが、毎回面倒なので配列を再生成することで落ち着く // 警告が出るパターン // Warning: Parameter 2 to mysqli_stmt::bind_param() expected to be a reference, value given in $params = array ( 'i' , 2 ); call_user_func_array ( array ( $stmt , 'bind_param' ), $params ); // 引き数を意識するパターン $id = 2 ; $params = array (); $params [] = 'i' ; $params [] = & $id ; // パラメータは参照渡し call_user_func_array ( array ( $stmt , 'bind_param' ), $params ); // お手軽なパターン $params = array ( 'i' , 2 ); for ( $i = 1 ; $i < count ( $params ); $i ++){ // 2番目以降を参照渡しに書き換え      $params [ $i ] = & $params [ $i ]; } call_user_func_array ( array ( $stmt , 'bind_param' ), $params ); ここで $params を作成する時に foreach($data as $key => $value){ $params[] = &$value } の様に行ってはいけません 上記は $value 参照を代入することになり、次のループで $value が書き換えられ、結果的に配列の最後の値を全てが参照することになります for...

Nintendo Switch を Amazon から3時間くらいで購入したメモ

イメージ
Nintendo Switch を転売屋の餌食にならず Amazon から3時間くらいで購入したメモ ただし、サンタさんの手柄 転売屋対策なのか Amazonでは switch 本体のみよりも、ポーチやダウンロード版との組み合わせの方が、入荷が多いような気がします ポーチやマリオオデッセイ等、いずれ購入する予定があれば、それらの抱合せ商品を狙うと、より容易に購入できると思われます ちなみに、switch本体に30GB程度のメモリ空き領域があるので、いくつかのダウンロード版を利用するのであれば SDカードは無くても利用可能です 下準備 スマホに Twitter アプリを入れて、通知の設定をする Twitter の switch販売速報bot 等をフォローして、モバイル通知をオンにする Amazonで switchの商品構成と価格をチェック Amazon で 1-Click注文 を有効 にする 購入編 購入したい商品のページを開いておく(候補が複数あればそれらも) スマホの Twitter アプリでプッシュ通知がくる 【重要】ここで、商品が何かをTwitter画面で確認するのは時間の無駄です 購入したい商品のページをリロード、 金額とAmazonが販売 していることを確認 1-Click注文 → NG or 注文完了 あとは、2~4 を繰り返す 本体の商品構成 本体のみ 本体 + ポーチ等 本体 + ソフト

Firefox 57 Quantum アップデート開始

イメージ
新Firefox Quantum 登場 旧形式のアドオンは利用不能(代替えを探す機能あり) メモリ使用量は、そんなに減ってない(と思う) 進む・戻る がもたつく スクリーンショット機能を標準で搭載 Firefox Sync は継続利用可能 Shockwave Flash はプラグインに残っている 先日、久々にOpera(blink)を試してみましたが、昔のサクサク感がまったくなくて非常に残念だったので、Quantumには頑張って欲しいところです レンダリング速度と体感速度は違うって事を Operaは知っていたはずだけど...

Python ディクショナリの keys や values の順序

Python のディクショナリを keys() や values() で独立して読み取った場合、取得される順序が同じかどうか 「python keys values same order」というキーワードで質問が散見され、各バージョン( 2系 , 3系 )共にその間ディクショナリに手が加えられなければ、オーダーが保持されるだそうです SQL の INSERT 文なんかに便利に使えたりする ちなみに、配列をカンマ区切りの文字列で返すには下記のようにすると簡単です s = ', ' .join(data.keys())

Python コメント coding:utf-8 の記述位置

Python + apache で UTF8の情報を扱っていたら SyntaxError: Non-ASCII character のエラーが多発、どうも # -*- coding: utf-8 -*- の記述位置が悪かったようで 途中に記述していたコメントを移動させて #!~/python # -*- coding: utf-8 -*- pythonのパスが先頭、次の行にcodingを記述したら動作するようになった マジックコメントって必要な場所より上にあればいいと思っていた・・・

Python + MySql で execute paramでテーブル名は渡せない

Python + MySql で execute paramでテーブル名は 渡せない そうです cur.execute( "DELETE FROM %s WHERE ( %s = %s );" , ( "myTable" , "myKey" , 10 )) # NG cur.execute( "DELETE FROM %s WHERE ( %s = %s );" % ( "myTable" , "myKey" , 10 )) # OK

Firefox アドオンの Stylish がついにアップデートされて Chromeと同じ仕様に

イメージ
Firefox アドオンの Stylish がついにアップデートされて Chromeと同じ仕様になった 閲覧サイトの送信問題とかいろいろあるわけですが 少し前から、Firefox版も URL同期が使えなくなり不便になっていましたが、結局 Chromeと不完全にもjson形式のエクスポートファイルが共通になりました で、不完全なのは Chromeでエクスポートしたファイルに ANSI以外を含む場合、Firefox側でインポートすると文字化けします また、Firefoxでエクスポートした際にファイル名が謎なのと、改行が殆ど無いエクスポートファイルになり、まだまだ不完全な感じが強いです

Python で可変長引数を関数の戻り値で返す

Python で可変長引数を関数の戻り値で返す def db_connect_config ():      return { 'user' : 'root' , 'password' : 'passwd' , 'host' : 'localhost' , 'database' : 'myDB' } # ::: conn = mysql.connector.connect(**db_connect_config()) 利用側で **

Python で日本語を含む MySQL の select 結果を json で出力

Python で日本語を含む MySQL の select 結果を json で出力する最小限のコードをメモ Python2.7系 #!~\python2.7 # -*- coding: utf-8 -*- # utf8 output import sys import codecs sys.stdout = codecs.getwriter( 'utf_8' )(sys.stdout) # header print ( "Content-type: text/plain; charset=utf-8" ) print ( "" ) # mysql import mysql.connector import json conn = mysql.connector.connect( user = 'root' , password = 'passwd' , host = 'localhost' , database = 'myDB' ) cur = conn.cursor( dictionary = True ) try :     cur.execute( "select * from myTable;" )     rows = cur.fetchall()      print (json.dumps(rows, ensure_ascii = False )) finally :     cur.close()     conn.close() sys.stdout = codecs.getwriter('utf_8')(sys.stdout) で出力を UTF8に cursor で dictionary=True を指定することで、fetch内容に列名が入ってくるので jsonで利用しやすくなります MySQLdb を利用している場合は、cursor(MySQLdb.cursors.DictCursor) json.dumps で ensure_ascii=False を入れないと、"\u4e0d\u660e" みたいに ...

Python の mysql.connector.connect でカラム名を取得

Python の mysql.connector.connect でカラム名を取得 cursor の引き数に dictionary=True を入れる cur = conn.cursor(dictionary=True) が、カラムの並びが???→宿題

Visutl Studio Code で Python だけタブを4スペースにする

Visutl Studio Code のタブ動作をデフォルトのスペースからタブに変更しているが、Pythonは4スペースにしたい Ctrl + Shift + P → Preferences: Configure language specific settings Python(下の方)を選択するか入力 表示されるpython設定に "editor.insertSpaces": true と "editor.tabSize": 4 を追加 {      "workbench.welcome.enabled" : false ,      "files.autoSave" : "off" ,      "editor.insertSpaces" : false ,      "typescript.check.npmIsInstalled" : false ,      "python.linting.enabledWithoutWorkspace" : false ,      "editor.renderWhitespace" : "boundary" ,      "[python]" : {          "editor.insertSpaces" : true ,          "editor.tabSize" : 4     } }

UniServer(Uniform Server) Zero で Python を動かす

簡単に Apache + PHP + MySQL の環境が作れる UniServer Zero で Python を動かしたメモ Pythonを ダウンロード + インストール 必要によって python.exe ディレクトリへパスを通す(cgiとしては通す必要ないです) インストールディレクトリ\PythonXX\ やら \PythonXX\Scripts に通しておくと便利です UniServerZ\core\apache2\conf\httpd.conf を開く py拡張子でスクリプト動作させる場合 httpd.conf の AddHandler cgi-script .cgi ↓ AddHandler cgi-script .cgi .py wwwフォルダでも cgi を動作させる場合 httpd.conf の <Directory "{$US_ROOTF_WWW}"> を探して Options Indexes Includes の下に Options +ExecCGI を書き加える test.py なんかを作って置いてみる※pythonのパスはそれぞれで #!C:\Python27\python.exe print("Content-type: text/plain") print("") print("Hello Python World!")

Amazon Echo 日本発売(米国での発売時期)

Amazon Echo が日本国内でも発売されたが、本国での発売時期は歴史が古いだけあってかなり前だったりする まぁ、ハードウェアよりソフトウェアが要なので、それほど気にしなくていいのかもしれないけど、サポート終了の時期が気になりますな 国内で発売された Amazon Echo は、デザインから米国の Echo 2 と思われるが、色の数などが本国と違っている Amazon Echo 米国発売時期 タイプ 米国発売 Echo Dot 2015/06/23 Echo (2nd gen) 2017/10/31 Echo Plus 2017/10/31 ちなみに後発の Google Home は タイプ 米国発売 Google Home 2016/11/04 Google Home Mini 2017/10/19

Raspberry Pi OS書き込みメモ(SD初期化, SSH有効化, ログイン, ホスト名)

イメージ
Raspberry Pi の SDを初期化して、再セットアップした時のメモ Raspberry Pi で使用していた SD の初期化 → Raspberry Pi 用のSDカードを初期化する方法 Raspbian OS イメージ  ダウンロード OSイメージの書き込み → Win32 Disk Imager 初期でSSH有効のための空ファイル設置場所( /boot/ssh ) ログイン情報 --> ホスト raspberrypi.local ユーザー pi パスワード raspberry コンフィグ $ sudo raspi-config

Dialogflow + Actions on Google で作成したアプリが「Sorry, this action is not available in simulation」

イメージ
Dialogflow + Actions on Google で作成したアプリがいつの間にか呼び出せなくなっていて、エミュレータから呼び出しても「Sorry, this action is not available in simulation」と表示されて起動しない エミュレータ画面から、CHANGE VERSION を押して、バージョンを更新する

bit.ly の spam報告先

url短縮サービス bitly(bit.ly) を利用した spam が多い事と、spamに対して全く対応していないのでは?と思われるため、うちでは bit.ly のリンクを含む == spam 扱いで完了していますが 一応、 bit.ly 利用 spam リンクの報告先 メールで support@bitly.com へ、件名に spam を含め、本文に受け取った状況と問題のリンクを記入しろ だそうです↓ https://support.bitly.com/hc/en-us/articles/231247908-I-ve-found-a-bitlink-that-directs-to-spam-what-should-I-do-

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/mdn...

「【楽天カード】ご請求予定金額のご案内」 マルウェアリンクの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 ...

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"           ...

Galaxy S7 Edge がフリーズして起動不可能に

Galaxy S7 Edge (SC-02H SCV33) が VR使用中にフリーズして、電源ボタン長押しでも再起動しない ボリュームUP + ボリュームDown + 電源 を長押で再起動

Fragment に置いた WebView が真っ白のまま

Android で Fragment に置いた WebView がロードしても真っ白なまま @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_browser, container, false); webView = (WebView)view.findViewById(R.id.webView1); // : return inflater.inflate(R.layout.fragment_browser, container, false); } 原因は inflater.inflate を2回呼び出していた @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_browser, container, false); webView = (WebView)view.findViewById(R.id.webView1); // : return view; }

「ヨドバシ・ドット・コム」配送遅延て日本郵便が原因?

イメージ
ヨドバシ・ドット・コムで、2017年9月20日(水)頃から 出荷作業に遅れ が生じているとか ちょうど 21日(木)の夜に注文していたので、その履歴 21日(木)21時頃に注文した商品は、6時間後の22日(木)3:00には引受してる 注文時から、到着予定日が 26日(火)と記載されていたので、おかしいと思っていたら、何故か荷物には「着日指定」が行われており、最寄りの郵便で3日も保管という始末 これって、ヨドバシの注文を 日本郵便がさばききれないので、配達日を分散させて均等化を図った って事じゃないのでしょうか 私の所に到着する Amazonの荷物も半分くらい日本郵便になっているし、忙しさが移動しているのかもね ガンバレ  ヨドバシ×日本郵便

iCloudメールで受信拒否

iCloudメールから転送元が拒否され The original message was received at Thu, 21 Sep 2017 08:00:00 +0900 (JST) from **********.ne.jp [***.***.***.***]    ----- The following addresses had permanent fatal errors ----- <*******@icloud.com>     (reason: 550 5.7.0 Blocked - see https://support.proofpoint.com/dnsbl-lookup.cgi?ip=***.***.***.***) なメールが返された https://support.proofpoint.com/dnsbl-lookup.cgi?ip=***.***.***.*** のURLから解除申請しろという事なワケだが、それじゃ「迷惑メール」フォルダは何のためにあるんだろうかと そもそも iCloudメールはフィルタが貧弱でspam非判定が利用できないとか、片手間な感じが強い

Gear VR がインストールできない

イメージ
Galaxy S7 Edge でもらった Gear VR を久々に出してきて Oculus アプリを起動したら、Gear VRアプリをインストールしろとの指示、しかしインストール画面に進んでも「サーバに接続中」の後、一瞬インストールが表示されるが元の画面に戻ってしまう Oculusアプリの自動更新設定をオンにして、端末を再起動・しばらく放置するとアップデートが完了して利用可能になる アップデート通知もオフにしていたので、数回のアップデートをスキップしていたためだろう

NTTは加入電話を2本以上申し込むと違う局番を持ってくる

ひかり電話を推し進めるようになってから NTTは、加入電話(メタル系のアナログやISDN)を2本以上申し込むと、違う市内局番を持ってくる ※03- xxxx -yyyy の xxxx の所 市内局番が違う電話番号は、 ISDNのiナンバーに組み込めない 加入電話(アナログ、INS64, INS1500)のダイヤルインに組めない これらの問題を回避できる事から「ひかり電話」のセールスへと繋がるワケです ちなみに、回線申込時に同じ局番にして欲しいといえば、同じ局番の番号をくれるくらいの事はしてくれますので、将来どちらへ転んでもいいように、同じ局番で揃えておくことをオススメします。 あと、ひかり電話で追加番号を頼むと、ひかり電話専用の市内局番が割り振られます。この番号は今のところ、加入回線や他社のサービスへ番号ポータビリティできませんので、注意が必要です。 この場合、予算と時間があれば、加入回線を新規で引いて、すぐにひかり電話の追加番号へ移行するという方法で、何処へでもポータビリティ可能な番号で運用することが可能です。

Android VPN の通知をロック画面から消す

イメージ
Android で VPN接続の通知を、ロック画面から消す 設定→通知→詳細設定→全てのアプリ(システムアプリを表示)で 「Androidシステム」の通知設定を変更 他の通知に影響が有るかと思ったが、今のところ問題なし

Time4vps の障害情報ページ

リトアニアの VPS サービス Time4vps の障害情報ページ (サーバが再起動されていたので、調べたら Kernel upgrade と記載されていた) https://billing.time4vps.eu/status/ カレンダーの赤い所がソレです

「support.Microsoft.com は言う」偽マイクロソフトのページでブラウザがフリーズ

イメージ
重いjavascriptを処理させて、ブラウザクラッシュを誘うページ 「**お使いのコンピュータは、BLOCKEでした。」 【閲覧注意・javascriptをオフにして閲覧】 http://www.support.microsoft9063yjpmschs7577.com.s3-website-ap-northeast-1.amazonaws.com/ ブラウザがメモリを使いまくって停止したようになるだけなので、特に問題はありません support.microsoft をサブドメインに含むサイトはブロックすべきかもね まぁ、上記を放置している amazonaws.com やリンク元の www.cpm20.com を hosts ファイルに登録しておいてもいいです

Windows10 のスタートでアプリが検索できなくなった時の対処

イメージ
Windows10 のスタートメニューで、アプリケーションが検索できなくなることがしばしば ストアアプリ以外を検索させる方法は、 コチラ 今回は、全てのアプリケーションが検索できなくなった場合(インデックス破損とかそういうの) OS再起動とかかったるいので、タスクマネージャーを起動(ctrl+shift+esc)して、詳細から SearchUI.exe を選択→タスクの終了で、強制終了 → しばらくすると SearchUI.exe は自動で起動する これで、スタートをからアプリケーションを検索してみる

モバイルdポイントカードかざすだけだが、音にセンスが無いドコモ

イメージ
dポイントカードをおサイフケータイへ入れおけば、ローソン等でかざすだけでdポイントが付与される「モバイルdポイントカード」 iD決済をスマートフォンで行う場合、dポイント付与とiD決済を連続して行えるわけだが、モバイルdポイントの音が「プヒ」みたいな音で、とても恥ずい ここにも、ドコモのセンスの無さが漂ってきます

デスクトップOSの Google Drive アプリ終了で「バックアップと同期」への移行が簡単だった

イメージ
デスクトップOS の Google Drive アプリが 終了予定 で、 バックアップと同期 (Backup and Sync) へ移行しろとの事 コレ、Google Drive が終了するんじゃなくて、バックアップと同期に Google Drive への同期機能が含まれてるから、そっちを使えという意味で、サービスそのものや Android や iOS の Driveアプリは継続 今回移行する「バックアップと同期」は、Drive同期とフォトアップロード等、Google ストレージへの接続アプリの統合版という事になる Google Drive からの移行は、 Google Drive を削除せずに バックアップと同期を ダウンロード してインストールするだけ Google Drive を削除せずに上記をインストールすれば、接続情報なども引き継がれるので、再認証も不要です

Nova Launcher のフォルダ + サイレントモードPRO でカメラ無音が解除されてしまう

イメージ
サイレントモードPRO を有効にした端末で、 Nova Launcher のフォルダに置いてあるアイコンを開くと、数秒でカメラの消音状態が解除されてしまう フォルダスワイプ( Nova Launcher Prime 機能)では症状が出ないので、フォルダアイコンが閉じる等の状態変化にサイレントモードPROが反応している様子 アイコンやショートカットをフォルダから出すか、フォルダ先頭においてスワイプ起動することで消音状態を継続させられる

北朝鮮ミサイル発射のお知らせでやるべきこと

北朝鮮のミサイルが発射されてから、北海道の東沖に着水するまでの時間が 14分 なので 何をやっても無駄 ですな 迎撃による破片を避けるために、屋内に居るというくらいだろうか どこかへ避難するにも、着弾位置が確定できないなら移動しても無駄だし 冷蔵庫の好きなものを急いで食べる とかか 人生最後の食事になるかもしれないので

Google Chrome プルダウンメニューのショートカット

イメージ
Google Chrome 設定関連メニューをプルダウンさせるショートカット Chrome のキーボード ショートカット には、ホットキーだからか載っていないのか Alt + F でプルダウンメニューが開く

懐かし Windowsの カット・コピー・ペースト

オレが Windowsを使い始めた頃、Ctrl+Insertがコピーで、Shift+Insert が貼り付け、Shift+Delete が切り取りだった わかるかなぁ~ わかんねーだろーなぁ~ 昔と今のショートカット 動作 昔 今 切り取り Shift+Delete Ctrl+X コピー Ctrl+Insert Ctrl+C 貼り付け Shift+Insert Ctrl+V ※今でも使えます

cuenote.jp 使うなら spf くらい設定したらどうよ

cuenote.jp 経由でお知らせを送ってくるサービスが多数ある (基本的に どうでもいい お知らせメールなので、うちではspamスコアが上がるように設定しているわけだが) しかし、spfも設定せずに cuenote.jp 経由でお知らせを送ってくるような 銀行 があったりするわけで・・・ 一斉送信するサービスないか?→ cuenoteてのがあr → それで送ろう みたいな、テキトーな社内の動きがあるんだろうよ

急ぎの仕事で pgAdmin4 が糞すぎて気絶するかと思った

イメージ
接続先が Oracle から PostgreSQL に変更となったので、ソース変更という急ぎ(6時間くらい)の仕事を受け取ったのだが、PostgreSQL が入っていなかったので、インストールして付属の pgAdmin4 を使って、疑似テーブルを作成しようとしたが、あまりの糞加減に気絶しそうだった インストール後、pgAdmin4 を起動してテーブルを作成しようとしたが Schemas の中身にDBが表示されるとか意味不明~、再起動で通常の表示に んで、テーブルを作成してテキトーなカラムを作って、View/Edit Data からデータを入れようとしたが、データが入りません・・・・・・ この View/Edit Data でテーブルを編集するには、そのテーブルに プライマリキーが存在しないと編集できないんだそうな(まぁ、キーがないとレコードが特定できないからね) 画面内からユーザーパスワード変更したら、そっから先何も出来ないとか、ずいぶんと足を引っ張ってくれました

Djangoのバージョン選択

イメージ
Python のフレームワーク Django を利用した際のバージョン選択のメモ まずは、Pythonで 2.7を利用するか 3系統を利用するかを決定 Django はどちらもサポートしているわけですが、 ここ の対Python対応バージョンを見てみる 3系統なら Django2.0移行でもいいんじゃね。とか思ってしまうわけですが、 こちら に Django バージョンごとのサーポート期間てのがあり LTSとついているのが、ロングサポートになります つまり、Django 1.11が Python2.7系でも3系(3.7移行でなければ)でも、現状で最も長くサポートされるという事になります プロジェクトが 2019年以降に稼働するなど、ターゲットを Django 2.2 とした場合 2.0や2.1を選択する必要があるかもしれません

ひかり電話→ISDN への番号通知

ひかり電話から、ナンバー・ディスプレイ契約なしの NTT ISDN(INS64, INS1500)回線へ着信させた場合、 番号が通知されます 一般的に通知される発呼側の回線 ISDN回線 ひかり電話 050 IP電話 携帯電話 PHS 加入回線(一般的なアナログ電話)以外といった感じです 2016年12月末の総務省 データ をまとめると、加入電話の割合は 9%を切っており ISDN回線でナンバー・ディスプレイ契約を行う意味が微妙になってきています 2016年12月末 電話回線加入者数 種別 加入数(万加入) 割合 加入電話 2,028 8.89% ISDN 318 1.39% IP(0ABJ) 3,206 14.05% IP(050) 834 3.66% 携帯電話 16,068 70.45% PHS 356 1.56% 合計 22,810 100.00%