ライフログ

全ての記事を時系列でまとめています。

WatsonのUIをLINEに設定する2

の続きの記事です。

httpノードをフロー1に置く。

ノードをクリックすると編集画面になるので、プロパティを下記のように入力する。

functionノードを同じように置いてダブルクリックします。

エディタが開くので下記のように入力し「完了」します。

flow.set(“replyToken”,msg.payload.events[0].replyToken);
return msg;

ノードとノードを接続します。

http responseノードを下記のようにfunctionノードと繋ぎます。

changeノードを置いて、編集画面で下記のように入力して「完了」します。

(値の代入 msg.)
payload
(対象の値 mag.)
payload.events.0.message.text

functionノードとchangeノードを下記のように繋げます。

次にassistantノードを下記のように繋ぎます。

changeノードを置きます。

changeノードに下記を入力して「完了」します。名前はなんでも良いのでわかりやすいものにしてください。

(値の代入 msg.)
payload.optext
(対象の値 mag.)
payload.output.text0

また繋げます。

functionノードを追加して、名前は自分でわかるように、コードには下記のように入力し、「{LINEアクセストークン}」部分は一旦このままで「完了」する。

var output_text = flow.get("text");

var post_request = {
    "headers": {
        "content-type": "application/json; charset=UTF-8",
        "Authorization": " Bearer " + "{LINEアクセストークン}"
    },
    "payload": {
        //"replyToken": msg.payload.events[0].replyToken,
        "replyToken": flow.get("replyToken"),
        "messages": [
            {
                "type": "text",
                "text": msg.payload.optext
            }
        ]
    }
};
return post_request;

http requestノードを作って、メソッドは「POST 」、URLは下記の文字列、出力形式はJSON、名前は「Reply Message」として「完了」する。

URL
https://api.line.me/v2/bot/message/reply

ここまでで、一旦Node-REDは置いておきます。次に、IBM Cloudのダッシュボードに戻ります。

ダッシュボードのサービスからWatsonのSkillsを開発した名前をクリックします。Watson Assistantの画面から「ツールの起動」をクリックします。

メニューから「Skills」を選択します。すでに設定してあるSkillsが表示されたら、縦に・が並んだアイコンをクリックして、「View API Details」をクリックします。

Workspace IDが表示されるので、それをコピーする。

Assistantノードをダブルクリックし編集画面を表示する。

先ほどのWorkspace IDを入力し、「完了」する。

次は、LINE側のAPIをいじります。LINE Developersに戻り、「Massaging API」の「チャネルを作成する」をクリックする。

その後、チャネルの名前などを決めていきます。

チャネルが作成されると、新規チャネル「@@@@」が作成されました。と表示され、プロバイダーリストの下位レイヤーにチャネルが作成されます。

LINE系の言葉がたくさん出てきたので整理します。LINE Developersは、通常の個人LINEアカウントと紐づけることができます。レイヤーで見ると、

LINE Developers – 個人LINEアカウント
 ∟プロバイダー
    ∟チャネル

また、ややこしいのは、LINE@ MANAGERでこれらを開くと、

LINE@MANAGER(アカウント一覧)
 ∟プロバイダー
 ∟チャネル

と、プロバイダーとチャネルのアカウントが並列に表記されているので、行ったり来たりするとよくわからなくなるかもしれません。

新チャネルを開くと、「チャネル基本設定」画面にたどり着きます。


ここで、
・Webhook送信を「利用する」
・Botのグループトーク参加を「利用する」
にします。(*画像は利用しないになっていますが、「利用する」に変更してください。もし、グループトークに招待してテストなどをした後、退室させたい場合は、ここを一時的に「利用しない」に変更してください)

LINEで送る
[`evernote` not found]
LinkedIn にシェア

WatsonのUIをLINEに設定する1

Node-RED 編集 LINE Watson接続

の続きの記事です。

Watsonの設定が終わったら、UIで悩むと思います。そんな時の選択肢の一つとして、LINEがあります。今回は、LINEとWatsonを連携させてみましょう。

ます、IBM Cloudのメニューからカタログを選択し、フィルターに「Node-Red」と入力します。私が行った時は、「node red」ではヒットされませんでしたので、正しく入力してください。

選択すると、下記の画面になりNode-RED Starterを作成できます。赤枠に必要事項を入力し、作成をクリックしてください。

作成をクリックすると、下記の画面に遷移し、しばらくサークルが回っていると思います。この画面は開いたままにして、次にLINEアカウントの設定をします。LINEでは個人のアカウントを持っている前提で進めます。もし、個人でも利用されていない場合は、アカウントを取得しておいてください。

まず、LINE@https://at.line.me/jp/)の画面を開きます。そこから「LINE@アカウントを作成する」をクリックしてください。

次に、「一般アカウントを作成する」をクリックして進めます。

この先は、一般的なアカウント作成と同じなので説明は省略します。チャットボットに合うアカウント名で作ります。

アカウントが出来上がるとLINE@MANAGERを開くことができます。この画面では、アカウント一覧に今まで作ったことがあるLINE@のアカウントが並びます。一つ目の場合はそれを選択します。

次に、LINE Developersでアカウント登録をします。

アカウントが作成できたら、新規プロバイダー作成をします。トップページから、アカウントアイコンにカーソルを合わせると「+プロバイダー新規作成」を選択できます。

次のページでプロバイダー名にチャットボットに関する名前をつけて次に進みます。新規に作成したプロバイダー名は、作成が完了すると左のプロバイダーリストに並びます。ここまでで、一旦LINEでの画面は置いておきます。

IBM Cloudに続きLINEがたくさん出てきたのでIBM CloudとLINE関係でやったことを整理しておきます。
・IBM Cloud上のNode-REDでアプリを作成
・個人のLINEアカウントでLINE@アカウントにログイン
・LINE@内にアカウントを作成
・LINE Developersアカウントを作成しログイン
・LINE Developers内に新規プロバイダーを作成

次に、IBM Cloud上でダッシュボードを開きます。
先ほど作ったアプリが、Cloud Foundryアプリケーションの欄に載っていると思います。これをクリックしてください。

画面が切り替わったら、左カラム内に「接続」があるのでクリックしてください。

次の画面で前回作ったWatson Assistantを繋げるため、「接続の作成」をクリックします。

赤枠をクリックして進めていきます。

次に「再ステージ」をクリックして接続を完了させます。ここでしばらく時間がかかることがあります。

下記の表示が

稼働中になるまで待ちます。

稼働中になったら「アプリURLにアクセス」をクリックします。

ここは「Next」で進めます。

ここでは、Node-REDのUsernameとPasswordを作り、「Next」で進みます。

ここでも「Next」で進めます。

やっと最後の画面です。ここで「Finish」で進めます。

しばらく待機してください。

画面が切り替わったら、「Go to your Node-RED flow editor」をクリックし進めます。

先ほど設定したユーザ名とパスワードを入力し、ログインします。

これで、Node-REDの編集画面にログインできました。

次回は、LINEとの接続を行います。

LINEで送る
[`evernote` not found]
LinkedIn にシェア

Watson Assistant(チャットボット)の設定3

Watson Assistant(チャットボット)の設定2の続きです。

ここでは、会話(ダイアログ)の設定を行います。まず、前回の続きの画面の赤枠部分から「Dialog」をクリックしてください。

Dialogの画面が会話を設定する主な操作画面となります。「Create」をクリックしてください。

「ようこそ」と「その他」と記載されているボックスが表示されます。この一つ一つがノードと呼ばれます。

「ようこそ」のボックスをクリックすると、下記のように、このノードの中身を見ることができます。

「If assistant recognizes:」に「welcome」と表示されているのが、Watson Assistantが「これはwelcomだぞ」と認識すると、「Then respond with:」の部分にある反応をする、となります。
*welcomeは、最初にユーザーが訪れた時に表示されるインテントで固定されている。

ノードの中身をスクロールすると、「And finally」と表示が出てきます。これは、Watson Assistantが反応した後、何をするかという意味ですが、デフォルトでWait for user input(ユーザーの入力を待て)となっていますので、通常はこのままでオッケーです。

それでは、試しに「Try it」をクリックしてください。

下記の画面が表示されます。Then respond withに入力された文字列と、Chat botの最初の会話文が同じだと思います。Try it outを×で閉じて、この文字列を変更したりして試してみてください。

それでは、会話を作成します。まず、会話の起点となるインテントをクリックします。この画面で新しいインテントを作るので、「Add intent」をクリックします。

そして、「Intent name」には、作りたい会話のインテントを入力し、「Description」にはその説明を入力します。「Add example」に思いつく限りのユーザーの問いかけを入力していきます。

この場合は、挨拶でユーザーが入力するであろう単語をどんどん追加していきます。

そして、「Dialog」画面に戻ります。次に「Add node」をクリックして、「ようこそ」と「その他」の間に空のノードが追加されます。

ノード名に「挨拶」と入力し、インテントに「#挨拶」と入力します。この時のボットの反応をThen respond with:の下に入力します。ここでは、「こんにちは。アルボットです。」と入力しました。

先ほどと同じように、Try it outで正常に動くか試してみてください。

「こんにちは」「こんばんわ」は認識しましたが、「こんちは」と入力すると、認識できないようです。インテント画面で、挨拶インテントに、「こんちは」を追加しておくと反応するようになります。

次に、会社やサービス、事業説明のダイアログを追加したいと思います。説明についての会話では、色々な文字列で尋ねられることが想定されるため、あらかじめ全てを入力しておくことが難しくなります。

そこで有用になるのが、エンティティです。例えば、会社名であるアアル株式会社について聞かれた場合を想定します。

まずは「アアル株式会社」と同義語(Synonym)の単語をあらかじめ登録しておき、例え文章に「アアル株式会社」がなくとも、登録した文字列ならば「アアル株式会社」と同義と判断してくれるようになります。

まず、Entitiesをクリックし、Add entityをクリックしてください。

Entity nameには、ここでは「アアル」と入力します。そして、Value nameも同様に「アアル」と入力します。Synonymsに思いつく限りの「アアル」の同義語を入力していきます。よく間違えられる「アルル」も加えておきます。

Fuzzy Matchingをオンにしておくことで、多少スペルミスなどがあっても判断がうまくいくことがあります。

続いて、作ったエンティティをダイアログに設定します。Dialogに戻って、ノード追加のAdd nodeをクリックします。

追加されたノードのタイトルを「会社説明」とし、If assistant recognizes:の空欄にエンティティの「@アアル」を選択するか、直接入力します。

インテントは「#」
エンティティは「@」

で指定されます。

次に、Then respond with:のTextに@アアルで反応した場合に表示される文章を記入します。

Try itをクリックし、いくつか登録したエンティティを試し、正常に動くか確かめます。「アアルって何?」「アアル株式会社はなに?」でも「アルルって何?」でも正常に動くようです。

ここまでで、Watson Assistantのチャットボットの会話の基本的な作成方法がわかると思います。

会社説明の次に、サービスの利用方法や商品の購入画面の説明や掲載されているリンクを指示する機能を追加するなど、基本的なWebサイトの内容を網羅したチャットボットを作りながら操作方法に慣れていくと良いと思います。

それでは、ここまでの成果物をTry itではなく、Assistantsというチャット画面のようなところから見てみましょう。

上記の画像の左上の「←」マークをクリックすると、下記の画像のように今作成したSkillsを確認できます。ここでメニューからAssistantsをクリックしてください。


「Create new」をクリックします。

NameとDescriptionを設定して、Createをクリックします。ここでは、

・Name:アルボット
・Description:アアル株式会社のチャットボットです

と入力しました。

Assistantができたら、「Add Dialog Skill」をクリックします。

Add Dialog Skillの画面に移ると、メニューにAdd existing skillがあるのでクリックしてください。

先ほど作成した「挨拶」Skillが表示されるので選択します。

Skillに「挨拶」Skillが追加されました。それでは、「 Preview Link」をクリックしてください。

よく見るチャット画面のように、チャットボットのテストをすることができます。

基本ができたら、次は、APIを使ってUI(ユーザーインターフェース)を作ります。

LINEで送る
[`evernote` not found]
LinkedIn にシェア

Watson Assistant(チャットボット)の設定2

Watson Assistant(チャットボット)の設定1の続きです。
ここでは、チャット(会話)の設定をします。

まず、チャットボットの設定独特の機能を覚えます。WatsonだけでなくGoogleのDialogflowなどでも必要な用語なので是非ここで覚えましょう。明確な定義は他サイトで参照できますが、わかりにくいので個人的に覚えやすい表現で記載します。

・インテント(Intents):ユーザーがチャットボットを使用する目的で、Watson Assistantがユーザーのインテントが何かを判断し、反応するためのトリガーのような役割をもつ
・エンティティ(Entities):会話の中の単語や文と近い意味の単語や文をここで登録しておく
 例、Mac,マック,Macbook,MacBook Pro
・ダイアログ(Dialog):質問に対する返答をここで設定する

次に前回設定した画面から左上の「管理」をクリックする。
*前回の画面を閉じてしまった場合は、ダッシュボードからサービス名のところに設定したアプリケーションが確認できます。

管理をクリックすると下記の画面になり、「ツールを起動」をクリックして先に進めます。下にあるAPIの資格情報は、チャットボットの会話を設定した後に他のアプリケーションにWatson Assistantを連携する場合に必要になります。いつでも戻ってこれるので今メモを取る必要はありません。

先に進めると、次の画面になり、少しだけ下にスクロールすると「Create a Skill」というボタンが見えるのでクリックする。

次の画面で「Create new」をクリックする。

Add Dialog Skillの画面が表示されたら空欄に必要事項を入力します。終わったら「 Create」をクリックします。
例、
・Name:挨拶
・Description:挨拶と簡単な説明
・Language:Japnese

Skillsの画面が表示されると、先ほどのインテント、エンティティ、ダイアログを確認することができます。Content Catalogというものもありますが、これはあらかじめ想定された会話をWatsonが用意しくれているものを設定することができます。

次からは、会話の設定に移ります。

Watson Assistant(チャットボット)の設定3

LINEで送る
[`evernote` not found]
LinkedIn にシェア

Watson Assistant(チャットボット)の設定1

Watsonでチャットボットを設定します。

まず、IBM Cloudのアカウントを作成します。https://www.ibm.com/watson/jp-ja/
こちらからアクセスし、アカウントを作成してください。

アカウント作成後に、https://console.bluemix.net/dashboard/apps/
にアクセスすると、下記のダッシュボード画面になります。
ダッシュボード画面へは、console.bluemixから左上の≡のアイコンをクリックして選択するといつでも戻ることができます。

ここでは、メニューからカタログを選択してください。

カタログから左のカラムのカテゴリーのAIを選択し、中央のWatson Assistantを選択します。

Watson Assistantの設定画面で、サービス名、ロケーション、価格プランを決めます。サービス名は、自分で管理できる名前、ロケーションは使用する地域(サーバーがその地域にある)、プランは無料プランがライトプランになります。それぞれ選択して、最後に作成をクリックしてください。

作成をクリック後、下記の画面に移れば準備は完了です。

次は、チャット(会話)の設定です。

Watson Assistant(チャットボット)の設定2

LINEで送る
[`evernote` not found]
LinkedIn にシェア

別シートからIMPORTRANGEできない時の対処法

googleスプレッドシートIMPORTRANGE

Googleスプレッドシートのファイルをまたいだ引用をしたい時に、IMPORTRANGEが用意されています。

引用元のファイルに複数のシートが用意されている時に、トップのシートからしか引用できなくハマりました。

 

解決策は

引用元

https://docs.google.com/spreadsheets/d/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/edit#gid=xxxxxxxxxxxxxx

がトップのシートのURLの場合、

引用先のシートのセルへ=importrange(https://docs.google.com/spreadsheets/d/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/edit#gid=xxxxxxxxxxxxxx, “a:z”)

このように記載すれば、このシートが反映されます。

(”a:z”の部分は、引用元のA列からZ列の情報を取ってくるという意味。)

 

しかし、トップ以外の別シートを引用する場合は、

別シートのURLを挿入してもトップのシートがなぜか反映されてしまいます。

*Googleスプレッドシートは、同じファイルでもシートを変更するとURLが変わるため、下記のようにやってしまいがち。

例えば、

引用先

=importrange(“https://docs.google.com/spreadsheets/d/別シートのURL”, “a:z”)
*そのまま引用したいシートのURLを挿入する場合

=importrange(“https://docs.google.com/spreadsheets/d/別シートのURL”, “別シート名!a:z”)
*シート名を引用したいシートに変更し、範囲指定にそのシートのシート名を挿入する場合

上記の2つはうまくできない例です。

 

解決策は

引用先=importrange(ここはトップのシートのURLのまま, 引用したいシート名!a:z”)

このように、URLはトップのシートのまま、シート名!を該当箇所に追加すればうまくいきます。

*引用したいシート名!は、URLの最後の「edit#gid=xxxxxxxxxxxxxx」部分ではなく、そのままシートの名前をコピペして「!」をつけます。

 

これでうまく、IMPORTRANGEを使用できると思います。

 

 

LINEで送る
[`evernote` not found]
LinkedIn にシェア


現在、ファイルを開くことができません。(GAPGoogle Apps Script)

現在、ファイルを開くことができません。

現在、ファイルを開くことができません。

GoogleドキュメントからScript(Google Apps Script)を開くと突然この画面が開きました。

ファイルオーナーアカウントで開けば大丈夫だろうと思ってアカウントを変えてみても、使用したいアカウントでファイルをコピーしてオーナーを変えてみても解決しない。

 

原因は、

「複数のGoogleアカウントでログイン中の場合、デフォルトアカウントではないアカウントでGASにアクセスしているため。」です。

 

解決策は、

GAS デフォルトアカウントとは

・Googleにログインしているアカウントのうち、上記の赤枠のような(デフォルト)と表示のあるアカウントに設定を切り替える。

です。

複数アカウントでログインしている場合は、デフォルトアカウント一つだけがScriptを作成できるというのが仕様のようです。

LINEで送る
[`evernote` not found]
LinkedIn にシェア


WordPressで勝手にリダイレクトするScriptコードに感染。

WordPress リダイレクト

追記2018/09/27

前回記事を書いた後も色々調べてみると、取りきれていないScriptコードがあったりとわかって来ました。前回の記事を残しつつも、なるべくわかりやすく再編集します。

—————-

もう、最悪でした。勝手に海外のサイトに飛ばされる症状が出るので、同じサーバで管理している他のサイトも調べてみたら案の定やられてました。症状としては、障害が出ているサイトのリンクに行くと、他のサイトにリダイレクトされ、3つか4つのリダイレクトが連続した後に広告のあるサイトにたどり着きます。

不思議なことに、感染しているファイルが違ったり、症状が一定ではないのもあり、探すのに苦労しました。ダッシュボードから確認できる異常は下記の通りです。

・投稿ページの投稿の最後にScriptコードが挿入されている。
・固定ページの最後にScriptコードが挿入されている。
・メディアの説明などのどこかにScriptコードが挿入されている。

投稿、固定ページはこんな感じのコードが最後に挿入される。

これで、「cdn.examhome.net」と言うサイトにリダイレクトされることになってしまう。

メディアの「説明」部分は見つけにくいです。こんな感じ。↓

問題はこれだけではなかったので、Search Regexによる投稿ページなどの文字列の消去だけでは対応できません。

サーバ内の<head>〜</head>の最初と最後に下記のコードが挿入されます。

*対応とは関係ないですが、これはユニコードをデコードすると文字列になります。

まず、やるべきことは、データベースサーバ内のWordPressファイルに問題と解決を分けて考えることです。

データベース内の対応について

 

1、レンタルサーバのPHPのところからphpMyAdminにアクセスし、該当のデータベースを選択します。
2、wp_postsを選ぶとデータベースにどんな情報が入っているのかを確認できます。
3、下記の画像のように特定のリンクに飛ぶようなScriptの文字列が確認できます。

Wordpress 急にリダイレクト

5、これを全てこの画面から消すのは現実的ではないので、wp_postsだけをダウンロードして、Atomなどテキストエディタで全て検索して一気に消します。*新しいphpMyAdminの場合はSQL上で消去することができますが、バックアップの意味もありダウンロードファイルから修復します。

やり方は、wp_postsをダウンロードしたら、複製して感染ファイルと改善ファイルの2つに分けます。

Atomの場合は、wp_postsを下記のようにOpenで開いたら

Wordpress 急にリダイレクト

Findのメニューから、Find in Projectを選択します。

Wordpress 急にリダイレクト

すると、下記のように検索するフィールドと置換(Replace)するフィールドが画面右下に現れます。

Wordpress 急にリダイレクト

検索するフィールドに上記のように、投稿ページや固定ページ、メディアに挿入されてしまったScriptコードを消去できます。挿入されたコードをここにコピペしてFind Allし、発見されたかを確認してReplace Allすれば、全て入れ替えられます。

改善したファイルを再度上書きでアップロードすればデータベースは完了です。

*念のため、全てのファイルをダウンロードして検索をかけておくといいとも思います。このファイルだけでも、<script>のみ検索して他にコードが埋め込まれていないか、色々調べてみてください。

もし、wp_posts以外にも不審な書き込みが見つかったら、この記事に書き込みをお願いします。また、一点注意ですが、phpMyAdminのアップロードに容量制限がかかっている場合、重たいファイルだと「ダウンロードして直してアップロード」ができません。容量を確認してからこの作業を行なってください。

サーバ内のWordPressファイルについて

1、まず、下記のファイルか、拡張子の無い怪しいファイルはないかルートフォルダを探してください。もし、あればすぐにローカルにコピーしてサーバにあるものは消去してください。
*ローカルにコピーするのは、この中の文字列をあとで検索にかけて消去するためです。

中身はこんな感じで、重要なファイルのヘッダー(<head></head>で囲まれた最初と最後の2箇所)にユニコードの文字列を埋め込んで来ます。不具合のあるサイトの中でも、これがあるものとないものがあります。

Wordpress 急にリダイレクト*クリックで拡大します。

2、次に同じ階層の下記の2つのファイルを確認してください。

・wp-config.php
・wp-login.php

wp-config.phpの中身をみると、以下の部分は、’put your unique phrase here’が明らかにおかしいコードに書き換えられています。*これは正常なもの。

* @since 2.6.0
*/
define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');

/**#@-*/

「wp-login.php」内には、中にscriptが挿入されて

(118, 97, 114, 32, 115, 111, 109, 101, 115, 116, 114, 105, 110, 103, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 99,

から始まる数列がびっしり追加されていました。他にもいろんなフォルダ内のファイルにおかしな文字列が追加されていました。

もし、上記のような文字列がある場合は、他の階層のファイルにも書き込まれている場合が考えられるので、FTPソフトで一旦全てダウンロードして、データベースの修復と同じように対応します。

3、WordPressファイル内の修復

ルートフォルダに入っているファイルとフォルダを全てダウンロードして、一つのフォルダにまとめます。これを複製して感染バージョンと改善バージョンに分けます。

改善バージョンをこれまでと同じく、Atomで修復します。1ファイルではなく、フォルダを一気に選択したいので、Atomのメニューから下記を選択します。そのまま、改善バージョンのフォルダごと選択します。

そうすると、指定フォルダないのファイルをすべて検索できます。Find Allのフィールドに、<head></head>内にある不具合を起こしているコードをFind Allで検索して見つかれば、そのうちの一つの詳細を調べます。その中の<script>〜</script>までをコピーして、Find Allの中に改めてペーストしReplace Allで消去していきます。

Wordpress 急にリダイレクト

また、同じように文字列の一部をFind Allで検索して、検索に引っかかったものの詳細を表示して、<script>〜</script>の部分を消去していきます。

なぜ、このようにするかというと、

(118, 97, 114, 32, 115, 111, 109, 101, 115, 116, 114, 105, 110, 103, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 99,

から始まる文字列にいくつかパターンがあり、一回のReplaceでは消去しきれないためという理由と、

eval(String...

から始まる文字列もあり、何回かにわけて確実に不審なコードを消すためです。

4、改善バージョンの入れ替え

このように、改善バージョンが出来上がったら、その中でローカル上で更新できるフォルダを最新のものに入れ替えます。例として下記のようなものです。

・プラグイン
・テーマ

これらは元のフォルダを一度消去してから新しい最新のフォルダを入れ替えます。

これで、改善バージョンのサイトが一つのフォルダにまとまりました。FTPソフトでサーバにアップロードして、一旦修復は完了です。

今後の対応として

この次に、今後の対応として、

・サーバへのアクセスを国内のみに限定する(レンタルサーバのコントロールパネルから設定)
・Wordfenceプラグインの導入(エラー原因を特定して知らせてくれる)
・miniOrange 2-Factorプラグインの導入(2段階認証の導入)

まずは、アクセスを国内に限定すれば大抵の攻撃は収まるでしょう。ただ、国外からのアクセスが必要な場合も多々あるので、その場合は、WP-Banのような特定の国からのアクセスを防げるプラグインの導入を考えるか、他の特定のIPアドレスからのアクセスを防ぐ手段を講じる必要があります。

Wordfenceは、データベースとサーバ内の対策をする前に導入すると、プラグインごと感染するので綺麗にしてから入れましょう。

https://ja.wordpress.org/plugins/wordfence/出典:https://ja.wordpress.org/plugins/wordfence/

綺麗になるまで、Scanを繰り返し怪しいファイルを見つけましょう。無料機能で検知できます。

miniOrange 2-Factorは、スマホのアプリと連携して、いつものパスワードの他に、ログインパスワードを生成できるようになるため、ブラウザを介したログインをより強固にできます。

————————————–

調べてみると、まだほとんど情報がなく、ホスティングサービスのサポートに連絡しても、そもそも「外部からの攻撃への対応は全部消して、データベースも綺麗にしてから再構築してください。」とのこと。

最終手段を最初に言うのね。。。

 

LINEで送る
[`evernote` not found]
LinkedIn にシェア


Tensorboardが動かない。(動かすには)

Tensorboard 動かない

Tensorboardがうまく表示されなかったり、そもそもどのタイミングで表示されるのかよくわからないこともあると思います。
そんな時のメモです。

まず、タイミングはTensorFlowを使った学習を行なった後になります。
学習時に

$ cd [ディレクトリ名]

か、その他の方法で、学習用のファイルが置かれているフォルダ(ディレクトリ)を指定していると思います。

TensorFlowで学習(トレーニング)するときは、

$ python train.py

などで、学習を行い、その際にファイルを書き出すと思います。
それを、学習後に下記で指定してTensorboardを起動します。

$ tensorboard --logdir [データの入っているディレクトリ]

[データの入っているディレクトリ]は、

$ cd

で指定したディレクトリから数えてどこにあるかの相対的な位置になります。前後に/(スラッシュ)は不要です。

次に、ターミナル上に、下記の表示が出ます。

TensorBoard 1.9.0 at http://[コンピュータ名].local:6006 (Press CTRL+C to quit)

これをそのままブラウザに貼り付けるのではなく、↓こっちを貼り付けることでTensorboardによるグラフィカルな表示を確認できます。

http://localhost:6006/


こんな風な表示も見ることができます。

LINEで送る
[`evernote` not found]
LinkedIn にシェア


【エラー】NameError: name ‘xrange’ is not defined

NameError: name 'xrange' is not defined

Pythonのバージョン違いのエラーのようです。

Python3からは、

for i in xrange(100):
    print i

のような、xrange関数が廃止されrangeになったため、古いプログラムを現在のPythonのバージョンで動かすとこのようなエラーが出るようです。

1、プログラム中のxrange関数を全てrangeに入れ替える、
2、Python3環境をPython2環境にして実行する。

のどちらかでエラーが解決します。

1の場合は、
プログラム中の関数の中の、

xrange

を、エディタ上でコマンド+fで検索し、全て

range

にリプレイスすれば良いです。

2の場合は、
今のPython3環境のパッケージのバージョンを色々変えるのは大変なので、
新しい環境を作ったほうが早いでしょう。

LINEで送る
[`evernote` not found]
LinkedIn にシェア