突然ですが、Python 入門

Python には、インタプリタ(対話形式)とスクリプトの2つの方法があります。

python とだけコマンドを打つと対話型のプロンプトで実行可能になります。

$ python
>>>

プロンプトを抜けるには[Ctrl]+[D]です。
一方、テキストファイルに拡張子.py としてプログラムしたスクリプトを実行するにはpython test.py です。

$ vi test.py    # スクリプトを編集
↓ を保存。
print("Hello World!")

$ python test.py    # スクリプトを実行
Hello World!

python 入門

>>> 1+2  # 算術計算
3
>>> 6/5  # 割り算の結果はfloat型に
1.2
>>> 3*4
12
>>> type(1.4)  # データ型の問い合わせ
<class 'float'>
>>> type("hello")
<class 'str'>
>>> x=20  # 変数
>>> print(x)
20
>>> y=15  # 変数同士の演算
>>> print(x+y)
35
>>> a=[1,2,3,4,5]  # リスト
>>> print(a)
[1, 2, 3, 4, 5]
>>> len(a)  # リストの長さを取得
5
>>> a[1]  # リストの要素にアクセス
2
>>> a[4]=99  # リストに値を代入
>>> print(a)
[1, 2, 3, 4, 99]
>>> a[0:2]  # インデックスの0番から2番まで取得
[1, 2]
>>> a[1:]  # インデックスの1番から最後まで取得
[2, 3, 4, 99]
>>> a[:3]  # インデックスの最初から3番まで取得
[1, 2, 3]
>>> a[:-1]  # インデックスの最初から最後のひとつ前まで取得
[1, 2, 3, 4]
>>> a[:-2]  # インデックスの最初から最後の2つ前まで取得
[1, 2, 3]
>>> me={"height":180}  # ディクショナリを作成
>>> me["height"]  # 要素にアクセス
180
>>> me["weight"]=80  # 新しい要素を追加
>>> print(me)
{'height': 180, 'weight': 80}

ブーリアン とif for

&>>> hungry=True    # お腹すいてる?
>>> sleepy=False    # 眠い?
>>> type(hungry)    # 型取得
<class 'bool'>
>>> not hungry    # ブーリアン演算
False
>>> hungry and sleepy    # 空腹 かつ 眠い
False
>>> hungry or sleepy    # 空腹 または 眠い
True

>>> hungry=True    # if 文
>>> if hungry:
...     print("I'm hungry")    # if の中身は行頭空白4つ分インデントを空ける
......
I'm hungry
>>> hungry=False
>>> if hungry:
...     print("I'm hungry")
... else:             # else の中身も行頭空白4つ分のインデントを空ける
...     print("I'm not hungry")
...     print("I'm sleepy")
...
I'm not hungry
I'm sleepy

>>> for i in [1,2,3]:    # for 文(繰り返し)i を print
...     print(i)
...
1
2
3
>>> for i in range(1,11):    # range で指定
...     print(i)
...
1
2
3
4
5
6
7
8
9
10

>>> def hello():    # 関数を定義
...     print("Hello World!")
...
>>> hello()
Hello World!

>>> def Hello(object):    # 引数付きの関数を定義
...     print("Hello "+object+"!")
...
>>> Hello("cat")
Hello cat!
>>>

Drawboard PDF

Surface Pro などペンタブレットの強い味方、Drawboard PDF を使ってみました。Microsoft Store からダウンロード。

Surface ペンでお好みのツール設定をパレットから選んで、右のツールバーに[+] ボタンから登録すると使いやすい。

消しゴム、テキストの挿入など日本語版は今のところ用意されていませんが、こう云うものは直感的なインターフェイスを試行錯誤しながら使いこなすのでしょう。

早速、トライ。

アンダーライン、ハイライトが引けませんでした。保存したPDF ファイルを開いてテキスト選択すればいいんでしょうか。いまいち分かりませんでした。

Surface ペンがフリーズしても電池交換できるように予備の単6電池をAmazon.co.jp でストックしておくと吉。

Amazonベーシック 乾電池 アルカリ 単6形 4個パック

MS Office 2019のインストール

遅ればせながら、Office がバージョンアップして2019 になりPC2台までインストールできるオンラインコード版が買えるようにになったのでAmazon.co.jp でポチりました。

Microsoft Office Personal 2019 (最新 永続版)|オンラインコード版|Windows10|PC2台

インストールは簡単。Amazon.co.jp のサイトにログイン、ゲーム&PCソフトダウンロードライブラリのリンクから

[Office.comへ] のリンクをクリックしてインストレーションに従うだけです。

[次へ] をクリック。

[インストールする] をクリック。

Excel 2019 を起動。

特典の色々付いているOffice365 をなぜ買わないのかとお叱りを受けそうな所ですが、サブスクリプションは使わないと初期投資の元を取れないのがもったいないと思ったので・・・。機能は2016とあまり変わらないというか、変わらないところが扱いやすくて良いですね。

Anaconda3 はどこ?ここ?

Anaconda3(ディストリビューション)が入っていなかったのでPython3 のインストールやり直し。
シンボリックリンクを削除。

# rm /usr/local/python/bin/python3
# rm /usr/local/python/bin/pip3.7

パスを削除。

# vi ~/.bash_profile

↓ 行を削除
export PATH=$PATH:/usr/local/python/bin

インストールディレクトリを削除。

# rm -fr /usr/local/python/

https://www.anaconda.com/download からAnaconda 2018.12 for Linux Installer をダウンロード。

インストール方法は、Anaconda で Python 環境をインストールする Qiita – @t2y をご参考下さい。

今回は、/home/gusachan/anaconda3/ にインストールしました。パスを通して

$ export PATH=/home/gusachan/anaconda3/bin:$PATH

バージョン確認。

追記)永続的にパスを通すには、.bash_profile に以下の記述で保存。

# vi ~/.bash_profile

↓ 追記
export PATH=/home/gusachan/anaconda3/bin:$PATH

Python3 をソースからビルド

LinuxにPython3系をインストールする手順 を参考にPython3 をソースからビルド。

まず、yum から必要なパッケージをインストール。

# yum install make gcc zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel

Python3.7.2 をwget でダウンロード、保存。

# cd /usr/local/src
# wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz

圧縮ファイルを解凍、make && make install

# tar xvzf Python-3.7.2.tgz
# cd Python-3.7.2
# ./configure --prefix=/usr/local/python
# make && make install

ここでlibffi モジュールが見つかりませんのエラー。

ModuleNotFoundError: No module named '_ctypes'
make: *** [install] Error 1

yum でlibffi-devel をインストール、再チャレンジ。成功。

# yum install libffi-devel

./bash_profile にパスを追記。

# vi ~/.bash_profile
 
↓を追記
export PATH=$PATH:/usr/local/python/bin

シンボリックリンクを貼って

# ln -s /usr/local/python/bin/python3 /usr/local/bin/python
# ln -s /usr/local/python/bin/pip3.7 /usr/local/bin/pip

ターミナル再起動。パスを反映させて python –version バージョン確認。

お疲れ様でした。

過去ログ再掲 – PHP7 をソースからビルド

CentOS6にPHP7をソースからインストール – Qiita から丸写しで ビルドしたのでメモ。

# wget php-7.1.16.tar.gz http://jp2.php.net/get/php-7.1.16.tar.gz/from/a/mirror
# tar zxvf php-7.1.16.tar.gz
# cd php-7.1.16

でソースディレクトリにて作業開始。

# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --includedir=/usr/include --bindir=/usr/local/bin --with-openssl=/usr/local/ssl --with-mysqli --with-jpeg-dir=/usr --with-png-dir=/usr --with-freetype-dir=/usr --with-gd --with-zlib --with-curl --with-xsl --with-gettext --with-libxml-dir=/usr/bin/xml2-config --enable-mbstring --with-mysqli=mysqlnd --enable-mysqlnd --with-pdo-mysql=mysqlnd --enable-bcmath --enable-pcntl --enable-ftp --enable-exif --enable-calendar --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --with-gmp --with-pspell

ここでエラー。

Warnning unrecognized options --with-mysql --enable-gd-native-ttf

PHP7 ではwith-mysqli で十分とのこと。enable-gd-native-ttfも要らないようですね。改めて ./configure make && make install して

# make && make install
# /etc/init.d/mysqld restart
# /etc/init.d/httpd restart

ビルド完了。mysql apache 再起動すると『データベース接続エラー』と表示されwordpress 表示に問題発生。

Google 先生に聞くと、PHP7にバージョンを上げると、WPの「データベース接続確立エラー」が出てしまいます  にズバリ正解がありました。

# mysql_config --socket

コマンドでソケットのパスを聞いて、php.ini のmysql.default_socket、mysqli.default_socket のそれぞれに=/pass を放り込めば良いらしい。
phpinfo.php で、mysql のmysql.default_socketmysqli 、mysqli.default_socket 項目のそれぞれに正しいパスが表示されていれば作業終了。

# php -v
PHP 7.1.16 (cli) (built: Apr 18 2018 22:12:13) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies

めでたくPHP7 にバージョンアップされました。ただし、数式表示プラグイン wpmathpub との相性が悪いらしくWordpress の表示が崩れます。ここは、PHP5.6.35 にダウングレードして解決しました。

Microsoft アカウントの2段階認証

Windows PC を扱うときには何かと手間の掛かる一方、oneDrive やExcel オンラインなどプラットフォームとして使えば使うほど便利なMicrosoft アカウントですが、セキュリティ面での心配はないのか気になるところです。セキュリティに万全を期するならMicrosoft アカウントの2段階認証をしておきたいですね。

Microsoft アカウントのセキュリティの設定

 

手持ちのスマートフォンがあるなら追加認証に、Microsoft の「Authenticator アプリ」またGoogle の「認証アプリ」などが使えます。

Google やYahoo!, Amazon でもアカウントの2段階認証を提供しているのでセキュリティの強化のため、お勧めします。

CentOS6.10 GUI起動、完了です。

yum update するとグラフィックボードのドライバーが書き換わりGUI 起動ができなかったのですが、ふと他の方のブログを検索した結果、Radeon のfglrx-uninstall.sh を使えばドライバーを上書きせずにアンインストールすることができると判明。

【centos6】Radeonドライバー再設定で嵌ってしまった!

早速、試したところドライバーのアンインストール、yum によるカーネルのバージョンアップ、ドライバーの再インストールに成功した結果、件の課題をクリアすることができました。

まず [F2] 押下からBIOSを起動、 Onboad のグラフィックボードを有効にして再起動、シングルユーザーモードに入って/boot/grub/grub.conf のカーネルオプション行末の、nouveau.modeset=0 を削除、init 3 でランレベル3でroot でCUI ログインします。(ディスプレイケーブルはオンボードのVGA端子に接続する)

/etc/yum.conf でカーネルアップデートをexclude しているときは行頭を# コメントアウトして yum update 、すべての更新を掛けます。

/usr/share/ati/ ディレクトリに移動してドライバー削除スクリプト、fglrx-uninstall.sh を実行後、/usr/share/ati/ をディレクトリごと削除、再起動。

ふたたびシングルユーザーモードでgrub.conf のnouveau.modeset=0 をカーネルオプションの行末に加えて再起動。

[F2] BIOS で外付けグラフィックボード[External Video] を有効にして(ディスプレイケーブルをグラフィックボードのVGA端子に接続する)

シングルユーザーモードからinit 3 でCUI ログイン。

あらかじめユーザーディレクトリにコピーしておいた、AMD-Catalyst-15.9-Linux-installer-15.201.1151-x86.x86_64.run を実行、エラーが出たら必要なパッケージを別のPCからでもダウンロード、フラッシュドライブにコピーしておく。(ここはトライアンドエラーもやむなしです。)

エラーログから必要なドライバーに当たりをつけやっと、本体のドライバーのインストールに成功しました。最後に#aticonfig –initial して再起動するとカーネルのアップデートされたCentOS6.10 でXウィンドウが起動してGUI 表示できました。

ありがとうございました。

サーバーに接続できません

Firefox でサイトを閲覧しようとすると「アクセスしているサイトを見つけられません。」と表示される件。

コマンドプロンプトからサイトアドレスをnslookup すると、「[domain] を見つけられません」とエラー。

ルーターのDNS が間違っているのかと思い、同じくコマンドプロンプトからtracert してみましたが「ターゲットシステム名 [domain] を解決できません」となります。

ipconfig /flushdns すると一時的につながりますがブラウザを終了するとまた接続できません。ルーターの設定が間違ってると当たりをつけますが原因は見当もつかないので現状、お手上げです。

しばらくKaspersky のファイアウォールでFirefox を許可。Web トラフィックのスキャンの除外リストに登録して様子見です。

[設定] – [カスペルスキー ファイアウォールの設定] – [アプリケーションルールの設定]

[アプリケーションネットワークルール] – [信頼するアプリケーション] から[Firefox]

[アプリケーションの動作を監視しない] [子アプリケーションの動作を監視しない]

チェックを入れて [OK]。[設定] – [Web保護の詳細設定] – [危険サイト診断] – [除外リスト] と

[信頼するWeb サイトの設定] のそれぞれの例外リストに登録。一時しのぎで原因特定できていないので恥さらしですが完敗です。ああ~あああ~高降参年生~♪