ぽんこつ自由研究

備忘録的な

Chainer v3.0.0リファレンスマニュアル(日本語) / Core Functionalities

この記事については、下記ウェブサイトにまとまっています。

また、下記サイトにて他の項目についても追記中です。

Chainer v3.0.0rc Reference Manual - chainerfan ページ!

Chainerはニューラルネットワーク構築のための人気フレームワークです。国産ですが、全てのドキュメントは英語です。そこで、私のお勉強を兼ねて、Chainer v3.0のリファレンス・マニュアルをごりごり日本語にしてみたいと思います。

本当に「ごりごり」なので、翻訳について、もしくは技術的な理解について、間違いを発見した場合は、お知らせいただければ私の理解も進み、非常にありがたいです。

 

*2017/10/09現在で、文章中にリンクがある場合、リンク先は全てオリジナルの英語サイトです。

 

Chainerのライセンスページ(英語):

http://docs.chainer.org/en/stable/license.html

Chainer Reference Manual

http://docs.chainer.org/en/stable/reference/index.html

 

  • Core Functionalities/主な機能
    •  VariableとParameter
  • Function
  • LinkとChain 
  • Optimizer
    • Hook Function
  • Serializer
  • データセットの抽象化
    • Dataset representation
    • Iterator interface
    • Batch conversion function
    • Dataset management
  • 訓練ループの抽象化
    • 訓練ループの抽象化
    • Trainer
    • Updater 
    • Extension 
    • Trigger
  • デバッグモード
  • Chainerの設定

Core Functionalities/主な機能

 VariableとParameter

chainer.Variable      計算結果を保持する構造体配列オブジェクト
chainer.as_variable  配列や変数をVariableオブジェクトへ変換する関数
chainer.Parameter    Linkへ登録可能なオブジェクト
chainer.variable.VariableNode Backward計算グラフ(計算履歴)のVariableノード

 


Function

chainer.Function 異なるFunctionへの旧スタイルのインタフェース
chainer.FunctionAdapter FunctionをFunctionNodeでラップするAdapterクラス
chainer.FunctionNode 計算グラフの演算ノードクラス
chainer.force_backprop_mode バックプロパゲーション誤差逆伝播法)を有効にするコンテキストマネージャを作成する関数
chainer.no_backprop_mode バックプロパゲーション誤差逆伝播法)を無効にするコンテキストマネージャを作成する関数
chainer.grad 勾配を計算する関数

 


LinkとChain 

chainer.Link モデルを記述するためのビルディングブロック
chainer.Chain オブジェクトライクなインタフェースのコンポーザブルリンク
chainer.Parameter    Linkへ登録可能なオブジェクト

 


Optimizer

chainer.optimizer.Hyperparameter Optimizerのハイパーパラメータのセット
chainer.UpdateRule 更新ルールの基底クラス
chainer.Optimizer 数値Optimizerの基底クラス
chainer.GradientMethod 単一勾配に基づくOptimizerの基底クラス

Hook Function

chainer.optimizer.WeightDecay 荷重減衰(weight decay)正則化のためのOptimizer/UpdateRule フック関数
chainer.optimizer.Lasso Lasso正則化のためのOptimizer/UpdateRule フック関数
chainer.optimizer.GradientClipping 勾配クリッピングのためのOptimizer/UpdateRule フック関数
chainer.optimizer.GradientNoise 勾配ノイズを加えるためのOptimizer/UpdateRule フック関数.

 


Serializer

chainer.AbstractSerializer オブジェクトを直列化(serialize)、非直列化(deserialize)する抽象基底クラス.
chainer.Serializer Serializerの基底クラス.
chainer.Deserializer Deserializerの基底クラス

 


データセットの抽象化

Chainer は訓練用と評価用のデータセットの共通インタフェースをサポートしています。このデータセットのサポートは、データセット, イテレータ、バッチ変換関数の3つのコンポーネントから構成されています。

 

データセット は*学習データ群です。このインタフェースは、ユーザが使用したいと考えるイテレータの組み合わせによって決定されます。Chainerのビルトインのイテレータは、このデータ・セットに __getitem__ と__len__ メソッドをサポートするよう要求しています。 特に、 __getitem__ メソッドはIntegerとスライスの両方のインデクシングをサポートしなければなりません。 ユーザがインデクシングのために get_example() メソッドのみを実装しなければいけないような場合、DatasetMixinを継承することで、簡単にスライスインデクシングをサポートすることができます。いくつかのイテレータでは、学習データの型にも制限があります。基本的に、データセットはステートレスなオブジェクトと考えられているので、訓練処理中のチェックポイントで保存する必要はありません。(*examplesを学習データと訳しています。

 

イテレータ はデータセットと各イテレーションを反復処理し、学習データのミニバッチをリストとして生成します。イテレータPythonの標準イテレータプロトコルを含む Iterator インタフェースをサポートしなければなりません。イテレータは次にどこを読みに行くのか管理します。つまり、イテレータはステートフルです。

 

バッチ変換関数はミニバッチをニューラルネットへフィードするための配列へ変換します。 また、それぞれの配列を適切なデバイスへ送る責任があります。Chainerは、現在、  concat_examples() をバッチ変換関数の唯一の例として提供しています。

これらのコンポーネントは全てカスタマイズ可能で、データセット型とそれらを操作する方法を限定することで最小限のインターフェースを持つようにデザインされています。とはいえ、Chainer自身によって提供されている実装は、大抵の使用方法をカバーしています。

Chainerは 軽量かつ管理が簡易なシステムであり、具体的なデータセットのサンプルを含んでいます。全てのデータセットはデータセットのルートディレクトリに保存されるようになっていて、環境変数 CHAINER_DATASET_ROOT によって定義され、set_dataset_root() 関数によって、設定が可能です。

 

Dataset representation

データセットの実装については Dataset examples をご覧ください。

chainer.dataset.DatasetMixin データセット・インデクシングのためのデフォルト実装

Iterator interface

データセットイテレータの実装について Iterator examples をご覧ください。

chainer.dataset.Iterator データセットイテレータの基底クラス

Batch conversion function

chainer.dataset.concat_examples データのリストを配列にコンカチネート(結合)する関数
chainer.dataset.to_device 与えられたデバイスへ配列を送信する関数

Dataset management

chainer.dataset.get_dataset_root データセットをダウンロードしキャッシュするルートディレクトリへのパスを取得する関数
chainer.dataset.set_dataset_root データセットをダウンロードしキャッシュするルートディレクトリを設定する関数
chainer.dataset.cached_download ファイルをダウンロードし、キャッシュする関数
chainer.dataset.cache_or_load_file ファイルが存在していない場合、ファイルをキャッシュする、もしくはロードする関数

 

 


訓練ループの抽象化

訓練ループの抽象化

Chainer は chainer.trainingモジュールのもとで、訓練ループの標準実装を提供します。この実装はVariable、Function、 Link/Chain/ChainList、Optimizer、Dataset、Reporter/Summaryを含む、多くの他のChainerのコア機能の最上位に構築されています。他の機械学習ツールキットにおける訓練ループの抽象化と比較した場合、Chainerの訓練フレームワークは、柔軟性の最大化を目指すとともに、代表的な使用方法のための簡易性も維持しています。ほとんどのコンポーネントはプラガブルで、ユーザはその定義を上書き可能です。

訓練ループ抽象化のコアは  Trainerで、訓練ループ自体を実装しています。この訓練ループは2つのパートで構成されています。1つは Updaterで、これは実際に訓練のパラメータを更新するものです。 もう1つは Extensionで、パラメータ更新以外の任意の機能のためのものです。 

Updater とExtensionは chainer.dataset と Iterator をデータベーススキャンとミニバッチのロードに使用します。また、Trainer は Reporter を測定値の収集にも使用します。また、Extensionは DictSummary をExtensionの蓄積と静的な計算に使用します。

多くの訓練ユーティリティ使用のサンプルが公式のexamplesにあります。また Trainer extensionsからもExtensionの実装を検索可能です。

 

Trainer

chainer.training.Trainer    Chainerの標準訓練ループ

 

Updater 

chainer.training.Updater TrainerのUpdaterオブジェクトのインタフェース
chainer.training.StandardUpdater Updaterの標準実装
chainer.training.ParallelUpdater GPU並列処理Updaterの実装
chainer.training.updaters.MultiprocessParallelUpdater GPUのマルチプロセス並列処理Updaterの実装

 

Extension 

chainer.training.Extension Trainer extensionの基底クラス
chainer.training.make_extension

与えられた関数をTrainer extensionにするデコレータ

 

Trigger

Trigger は呼び出し可能なオブジェクトで、訓練ループ内で特定のイベントを処理するタイミングを決定します。Trainerオブジェクトを引数として扱い、イベントが発生するとTrueを返します。

主に、Extensionを呼び出すタイミングを決定するのに使用されます。また、訓練ループを終了するタイミングを決定するのにも使用されます。

 

chainer.training.get_trigger Trigger objectを取得する関数

 


デバッグモード

デバッグモードでは、 Chainerは実行時のVariablesの値をチェックし、更に詳細なエラーメッセージを表示します。 ユーザの作成したプログラムのデバッグを助けます。代わりに、追加のオーバーヘッドタイムが要求されます。

デバッグモードでは、 Chainerはfoward(順伝播)とbackward (逆伝播)の計算結果をチェックします。その値にNaN値が発見された場合、RuntimeErrorが生じます。幾つかの関数やLinkにおいても入力値の有効性をチェックします。

バージョン2.0.0と同用に、chainer.config.debugを使用してデバッグモードをオンにすることを推奨します。オブジェクト設定を利用する方法については、Configuring Chainerもご覧ください。 Chainer v1から可能である、従来の方法についてのリファレンスも下記の通り、残されています。

chainer.is_debug 現在のデバッグモードを取得する関数
chainer.set_debug デバッグモードに設定する関数
chainer.DebugMode デバッグモードコンテキスト

 


Chainerの設定

Chainerはいくつかの機能の挙動に影響を与えるグローバル設定を提供しています。このような設定は、一元的な設定システムを利用して、設定することが可能です。このシステムは各プロセス、各スレッドに対して透明性のある方法を提供します。

この設定はchainer.global_config とchainer.config という2つのグローバル・オブジェクトで構成されています。

  • global_configオブジェクトは、Pythonの処理に共有された設定を保持します。 これは、GlobalConfig クラスのインスタンスで、シンプルなオブジェクトとして用いられます。ユーザは 自由にその属性を設定できます。
  • configオブジェクトは現在のスレッドのための設定を保持します。これはLocalConfigクラスのインスタンスです。このクラスはスレッドローカルのオブジェクトのように振る舞います。どの属性への変更も、カレントスレッドから必ず可視になります。

与えられたキーにどんな値も設定されていない場合は、global_configがそのまま参照されます。この、透明性のある参照方法のおかげで、スレッドローカルのconfig設定を用いるか、そうでなければデフォルトのglobal_configの設定を利用出来るので、ユーザはどんな設定項目も常に読み込んで使用することが出来ます。

 

下記の設定項目が、現在Chainerによって提供されています。幾つかの項目は、デフォルト値が設定された環境変数によってサポートされています。デフォルト値はglobal_configに設定されることにご注意ください。

chainer.config.cudnn_deterministic
cuDNN APIsにおける決定的な計算を行うかどうか設定するフラグ。 Trueが設定されている場合、決定的モードのcuDNNを使用した畳み込み演算を行う。(つまり、演算結果に再現性がある)。True以外が設定されている場合、パフォーマンスと引き換えに、cuDNNを使用した畳込み演算の結果は非決定的なものになる可能性がある。デフォルト値は False
chainer.config.debug
デバッグモード・フラグ。 Trueが設定されている場合、Chainerはデバッグモードで動作する。デバッグモードについての詳細は、  Debug mode 参照。 デフォルト値は、環境変数 CHAINER_DEBUG が0か1で設定されてる場合それに従い、設定がない場合は False
chainer.config.enable_backprop
バックプロパゲーション誤差逆伝播法)のサポートを有効にするフラグ。  Trueが設定されている場合、 Function は Variable のバックプロパゲーション用の計算グラフを作成する。それ以外では、計算グラフは作成されない。そのため、ユーザは backward() メソッドを呼び出すことができない。 デフォルト値は True
chainer.config.keep_graph_on_report
 report() に計算グラフを保持させるかどうかを設定するフラグ。  Falseが設定されている場合、 report() は Variable オブジェクトがリポートされた時、計算グラフを保持しない。 つまり、 report() は計算グラフから切り離した Variable オブジェクトのコピーを格納する。 Trueが設定されている場合、 report() は計算グラフが付属したまま Variable オブジェクトを格納する。デフォルト値は False
chainer.config.train
訓練モードフラグ。Trueが設定されている場合、 Chainerは訓練モードで動作する。 それ以外の場合は、テスト(評価)モードで動作する。デフォルト値は True
chainer.config.type_check
型チェックモードフラグ。  Trueが設定されている場合、 Function アプリケーションに対する入力値のデータの種類と型について、Chainerは型チェックを行う。 それ以外の場合では、型チェックはスキップされる。環境変数CHAINER_TYPE_CHECK に0か1が設定されている場合は、それがデフォルト値になり、設定されていない場合は True
chainer.config.use_cudnn

cuDNNを使用するかどうかのフラグ。 'always'、 'auto'、 'never'の3つのフラグ値から選択する。各フラグの意味は下記の通り。

  •  'always'が設定されている場合、Chainer は cuDNN を可能な限り使用するよう試みる。
  •  'auto'が設定されている場合、Chainerはパフォーマンスが落ちない限り、 cuDNNを使用する。
  •  'never'が設定されている場合、Chainer は cuDNN を使用しない。

デフォルト値は 'auto'

ユーザは、2つの方法でユーザ自身の設定を定義出来ます。

  1. Chainerの configuration オブジェクトを使用する方法。この場合、Chainerに将来的に導入される設定項目との名前の競合を避けるため、プレフィックスに"user_"と付けることを強く推奨します。
  2. ユーザが作成したconfigurationオブジェクトを使用する方法。ユーザは、 chainer.configuration.GlobalConfig と chainer.configuration.LocalConfig. を利用して、自分自身のconfigurationオブジェクトを定義可能です。この場合、名前の競合について考える必要はありません。

Example

この設定をプロセス内で共有したい場合、global_configの属性を設定します。

>>> chainer.global_config.user_my_setting = 123

 この値は自動的にローカルのconfigを参照して抽出されます。

>>> chainer.config.user_my_setting
123

この属性がローカルに設定してある場合、カレントスレッドからのみ参照可能です。

>>> chainer.config.user_my_setting = 123

ときには、カレントスレッドの設定を一時的に変更したい場合があるでしょう。 その場合、 using_config()を使用します。例えば、コードのある一部分においては、デバッグモードを有効にしたいという場合、下記のようにします。

>>> with chainer.using_config('debug', True):
...     pass  # code running in the debug mode

また、評価のためにテストモードにスイッチしたいことがありますが、これも同様に書くことが出来ます。

>>> with chainer.using_config('train', False):
...     pass  # code running in the test mode

 Evaluator は自動的にテストモードにスイッチするので、評価のための損失関数において、手作業でスイッチする必要はないことに注意してください。

また、下記のようにコーディングすることで、訓練モードとテストモードで違う挙動をさせることも可能です。

if chainer.config.train:
    pass  # code only running in the training mode
else:
    pass  # code only running in the test mode
chainer.global_config Chainerのグローバル設定となるプレーンなオブジェクト
chainer.config Chainerのスレッドローカル設定
chainer.using_config スレッドローカル設定を一時的に変更するためのコンテクストマネージャ
chainer.configuration.GlobalConfig  Chainerのグローバル設定となるプレーンなオブジェクト
chainer.configuration.LocalConfig Chainerのスレッドローカル設定
続きを読む

MSI ゲーミングPCでDeepLearningしたい( Ubunt16.04 + Anaconda3 + CUDA8.0 + cuDNN6 + Chainer2.01 + α)

 

 

これまでの経緯

下記の設定済みの前提で、インストールを行っています。

  1. MSI ゲーミングPCにUbunt16.04LTSをインストールするまでの簡単な記録
  2. MSI ゲーミングPCにUbunt16.04を入れたあとの設定(Wifi, グラフィックドライバ)

1.Anaconda3

Pythonと、その他のライブラリが一式セットになってインストールされるので、便利です。また、付随するパッケージの管理もcondaというパッケージマネージャで出来るので、これも便利です。

しかし、今回、ダウンロードにかなり時間がかかりました。

 

やり方:

 

下記から、Python3.6のAnacondaをダウンロードします。

www.anaconda.com

 

ダウンロードしたフォルダに移動し、ファイルのパーミッションを変更します。

cd Downloads

chmod +x ./Anaconda3-4.2.0-Linux-x86_64.sh

その後、実行します。

bash ./Anaconda3-4.2.0-Linux-x86_64.sh

インストール終了後、

conda create -n py36 python=3.6 anaconda

2.CUDA 8.0

CUDA Toolkit Download | NVIDIA Developer

 こちらのリンク先から、CUDAをダウンロードしてきます。

 

深緑が選択したもので、今回のインストーラーは、deb(local)を使いました。

f:id:ponco2san:20170928191127p:plain

aptでインストールしてる人も見かけましたが、NIVIDIA公式に従って、apt-getでインストールします。

sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb

sudo apt update

sudo apt install cuda

環境確認します。(*必須ではない)

 lspci | grep -i nvidia

cuBLASパッチ(?)も出ていたので、入れておいた。

sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-cublas-performance-update_8.0.61-1_amd64.deb

/usr/local/cudaができてるのを見に行く。 

 

3. .bashrcにパスを追加する。

.bashrcに下記を足す。(ponco2はユーザ名が入ります)

export PATH=/home/ponco2/anaconda3/bin:/usr/local/cuda/bin${PATH:+:${PATH}}

export LD_LIBRARY_PATH=/home/ponco2/anaconda3/bin:/usr/local/cuda/bin${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

export LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib64/stubs${LIBRARY_PATH:+:${LIBRARY_PATH}}

export CUDA_HOME=/usr/local/cuda/

export CPATH=/usr/local/cuda/include${CPATH:+:${CPATH}}

export PYTHONPATH=/home/ponco2/anaconda3/lib/python3.6/site-packages${PYTHONPATH:+:${PYTHONPATH}}

 

Anaconda使わないときよりも、パス多く追加しなくてはいけません。

4.cuDNN6

下記サイトから頂いてきて、展開します。

*メンバー登録が必要になります。

https://developer.nvidia.com/rdp/cudnn-download

  tar xzf cudnn-8.0-linux-x64-v5.0-ga.tgz

その後、ライブラリとヘッダをコピーします。

sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64

sudo cp cuda/include/cudnn.h /usr/local/cuda/include/

5.Chainer2.01

特に問題なく入りますが、Chainerインストールまでpip使ってなかったので、まずpipを入れます。

sudo apt install python-pip

 それからChainerを入れます。

pip install chainer

しかし、chainer2.01はcupyが独立しているので、

pip install cupy

も いたします。

 

以上です。

なるべく時系列に書いたような気がしますが、間違いもあるかもしれません。

Anacondaのパスと、cupy独立については、あまりブログで見かけなかったので、

参考になれば。

 

 

検索のスズメ(4)エラーメッセージが出た場合

「エラーが起きるの、ほらね」

とエラーダイアログを見せて、見せた相手がエラーメッセージを読む前に忌まわしいもののようにさっとダイアログを閉じたことはありませんか?

 

こころあたりがある方だけ、以下お読みください。

 

やめてください。

 

ほんっとうにやめてください。

急いで閉じたからって、何もいいことはありません。

 

エラーはエラーであって、ホラーじゃないんだよ。

 

質問されて、どれどれ?と見に行って

読んで対策しようとしてる最中に画面を閉じられるのは、とても悲しいです。

 

エラーが起きて、質問する際のマナー

エラーダイアログは閉じない。

可能ならスクショ、そして可能なら全文コピペして、質問相手へメール。

 

質問された相手にとっては、それだけが、エラー特定のためのマシンからの(あるいは開発者からの)メッセージなのです。

PCに詳しいと貴方が思っている相手は、魔法でなんとかしているのではありません。たぶんね☆

操作したことと、メッセージから、原因を論理的に追求しようとしているだけなのです

 

エラーメッセージが出たら、おちついてください。

可能なら、メッセージをよく読んで下さい。

(実際、私がエラーメッセージを読んでるのを横で見ていた当事者が、自分でもメッセージを読みはじめ「あーなんだ」って自己解決するという事象も経験済みです。)

 

メッセージの意味がいますぐ理解できないとしても、

人間が読める文章になっているはずです。

人間が、読んで、対応するためのメッセージだからです。一応。

 

文章ではない場合は、エラーコードが書いてあります。

エラーコードとは、エラーの内容によって、紐付けするための記号や番号の並びです。

エラーコードだけ書かれている場合は、エラーコードを検索することで、紐付けされたエラー内容を発見し、解決できることがあります。

エラーが起きたソフトウエア(アプリ)名 コピーしたエラーコード

で、検索してください。

 

また、文章でメッセージが出てきたが、周りに頼るヒトがいないという方

エラーメッセージ全文で、検索してください。

文章全体を"(ダブルクォーテーション)で囲むとなお良いです。

ここに、ソフトウエア名を入れたほうが良い場合もあります。

検索例

nvidia "xrandr: Failed to get size of gamma for output default"

Ubuntu日本語フォーラム / モニタの解像度を変更する

こんなふうに日本語ページも検索されます。

 

大体のエラーメッセージはコンピュータがその都度考えて話している文章ではなく

事前に登録された定型文です。

独自のファイルパス部分やファイル名などが該当しない場合もありますが

検索に同様のエラーメッセージと、その対応が出てくるものです。

エラーメッセージが英語でも、あなたが使っているソフトウエアがマニアックなものでない限り、日本語の記事も発見出来る可能性は高いです。

 

エラーが出たら深呼吸しましょう。

そして、まず、ググるのです。

 

MSI ゲーミングPCにUbunt16.04を入れたあとの設定(Wifi, グラフィックドライバ)

Ubuntuのインストールはかんぺきに終わったはずなのに、Boot順位設定に、そもそもUbuntuのお名前がありません。

選べないよ。Windowsか〜、USBか〜、DVDとかなら起動してやんよ、ってそういう態度。

 

(ここで、他の件に忙殺されて、Ubuntuどころではなくなって数週間が流れたので、経緯はさだかでなくなってしまいました)

 

久しぶりに起動。F11押して起動。

あれ?選べる?

前回、F11無駄じゃなかったっけ?やってなかったんだっけ???(記憶喪失)

 

続きを読む

MSI ゲーミングPCにUbunt16.04LTSをインストールするまでの簡単な記録

MSI ゲーミングノート(PC GL62M-7RDX-1009JP)にUbunt16.04LTSをインストールしました。

再インストールが必要になるかもしれないので、自分用にやったことを書いておくこととします。

できるだけ簡単な方法を選んでやっています。

MSIのPCを初めて購入しましたが、開けた瞬間に「BIOSはF2」って書いてある紙が入ってるので、ちょっと好きになりました。

 

参考にしたサイト:(ありがとうございます)

やったこと

1. UEIF設定を変更する。

1.1 UEIF起動

1.2 高速スタートアップを無効にする。

1.3 セキュアブートを無効にする。

 

2. インストールUSB作成

2.1 Ubuntu のISOファイルをダウンロードする。

こちらから日本語版を入手します。

Ubuntuの入手 | Ubuntu Japanese Team

ubuntu-ja-16.04-desktop-amd64.iso をダウンロード。

 

2.2 起動ディスクにするUSBメモリFAT32でフォーマットする。

 

2.3 Windows側に、Unetbootinをインストール

ISOイメージをUSBメモリに焼くために使います。

 

公式サイトからダウンロードしてインストールします。

UNetbootin - Homepage and Downloads

 

2.4 Unetbootinを使って、USBにLiveCDを書き込む。

 

3. Ubuntu用にWindowsパーティションを縮小する

メニューから「ディスク管理」を選択して、自分好みにボリュームの縮小と新規作成、拡張など行う。

 

 

4.Bootの順番をUSBを最優先に変更

再起動して、F2を押してBIOS立ち上げる。

Bootタブの「Boot Device Priority」で、一番目がUSBになるように選択する。

 

5.再起動してインストールへ

5.1再起動

シャットダウンして、LiveCDの入ったUSBメモリを挿す。起動する。

 

 5.2 インストール

LiveCDの中にある、インストールアイコンをダブルクリックして

インストールは粛々と進んだ。

Wifiのドライバをインストール後に有線接続するか、どっかからもってきて動かさないとWifi有効にならない。

ネットワークに有線接続してインストール作業しているのでない限り、

Ubuntuのインストール準備」の画面のチェックは両方しないほうが良い。

 

インストール完了。 

grub設定したほうがいいのかもしれないけど、この時点ではとりあえずしてません。

今日の検索 〜スマホ14万台乗っ取りサイバー攻撃のニュース詳細〜

今日もゆるゆる検索していきます。

 

もう旬が過ぎてしまいましたが、数日前、NHKにこんなニュースがありました。

 

www3.nhk.or.jp

 

こういうサイバー攻撃系のニュース、うっかり読むと謎が深まることが、本当に多いです。

難しい言葉を排除した結果、何も言ってない。

「新たな手口」と書かれていますが、攻撃方法について詳細には触れていないので、結局、どんな手口なのかもわからないですし、何をどう警戒すれば良いのかまったくわかりません。

スマホ、恐ろしいというイメージを持って終了です。

 

ついでに、Akamaiはネットワーク事業社だからセキュリティとかケアしてるのであって「情報セキュリティー会社」ではないと思うのですが。アカマイ情報セキュリティー事業部の広告記事かなにかなのでしょうか。

 

これを読んだ人が、周辺の情報技術詳しい人に何か質問するとこうなります。

「ねえねえ、なんかまた新手の乗っ取りとかあったんだって?怖い〜。どうすればいいの?Androidってだめなの?どれが安全なアプリ?」

 

…知らないよ。なんの話だよ。

 

詳細が知りたいな、検索検索っと。

 

検索キーワード:Akamai Google play

 

親切な説明を見つけました。

www.itmedia.co.jp

 

こんなのも見つけました。

ESET@スロバキアが最初に発見したの?(*この記事は要確認)

www.atmarkit.co.jp

 

ソース知りたい。

元ブログ読みたい。

 

 

 検索キーワード:WireX Akamai blog

blogs.akamai.com

 

検索キーワード:WireX Cloudflare blog

blog.cloudflare.com

 

検索キーワード:WireX Flashpoint 

www.flashpoint-intel.com

 

みんなで発表したんですね。

 

自分の情報が危険にさらされるだけではなく

知らず知らずのうちに攻撃に加担する可能性があるということを認識して

対応としては、下記とか。

support.google.com

 

 

ユーザが少ないアプリは入れない。

マイナス評価レビューは読む。

アップデートは欠かさずに。

ぐらいでしょうか。

 

 

はてなブログで読みたいブログ

はてなブログって、はてなブログだけの検索がない。

 

ブログ内検索はあるのに不思議。

 

まとまった記事が多いし、なんか良いブログ探そって思うと、

 

外側から探すしかない。

 

Hatenaでメタ検索。

 

記事書く方としては良いけど、読者としては不満だなあ。