[twitterAPI] botで呟く

$ php composer.phar require abraham/twitteroauth

require 'vendor/autoload.php';
use Abraham\TwitterOAuth\TwitterOAuth;

$consumerKey = '';
$consumerSecret = '';
$accessToken = '';
$accessTokenSecret = '';

$connection = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret);

$result = $connection->post("statuses/update", array("status" => "hello world"));

var_dump($result);

$ php twitter.php

### 画像をPOST

$media1 = $connection->upload('media/upload', array('media' => 'test.jpg'));

//投稿設定
$tweet = [
'status' => $postMsg,  // ツイートの内容(テキスト部分)
'media_ids' => implode(',', [  // 画像の指定
$media1->media_id_string
])
];


//投稿
$result = $connection->post('statuses/update', $tweet);

画像ファイルは、他のサーバーから取得するのではなく、自分のサーバーの画像をuploadしないといけない。
うーん、画像をDLして保存する処理が必要になる。

$file_name = 'tweet.jpg';
$image = file_get_contents($img);
$save_path = 'img/'.$file_name;
file_put_contents($save_path,$image);

こうか↓

後はURL短縮だな。

[beautifulsoup4] aタグの中身を取得

# -*- coding: utf-8 -*-
from urllib.request import urlopen
from bs4 import BeautifulSoup
from pprint import pprint

URL = 'https://news.yahoo.co.jp/'
with urlopen(URL) as res:
	html = res.read().decode("utf-8")

soup = BeautifulSoup(html, 'html.parser')

titles = soup.select('.sc-esjQYD a')
titles = [t.contents[0] for t in titles]

pprint(titles)

$ python3 title.py
[‘東京で新たに409人の感染確認’,
‘総務相 NTTと会食有無答えず’,
‘変異株 仏で新規感染の7割に’,
‘変異株感染で死亡判明 大阪’,
‘うつぶせ寝で1歳死亡 和解’,
‘ワタミ、労基署から是正勧告’,
‘ワタナベマホト容疑者逮捕’,
‘森本選手「驚いたから」供述’]

で、これを適正開示でやる

$ python3 title.py
[’16:30 36320グリー 特別利益(投資有価証券売却益)の計上(見込み)に関するお知らせ’,
’16:30 37190J-ジェクシード 代表取締役の異動に関するお知らせ’,
’16:30 41740J-アピリッツ 2021年1月期決算短信〔日本基準〕(非連結)’,
’16:30 45990M-ステムリム レダセムチドの慢性肝疾患を対象とした医師主導治験(第2相試験)の第一例目投与に関するお知らせ’,
’16:30 50110ニチレキ 行使価額修正条項付新株予約権の大量行使に関するお知らせ’,
’16:30 67720コスモス電 ‘
// 省略

うーむ、、、cronでメール送信したい。

バッチで走らせる時間にリリースされた開示情報のみ送信したいなー
dateで分岐やな

[CentOS8] beautifulsoup4を使おう

$ python3 –version
Python 3.6.8
$ pip3 –version
pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)
$ sudo pip3 install beautifulsoup4
$ sudo pip3 install requests
$ sudo pip3 install lxml

# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup

target_url = 'https://kakaku.com/pc/note-pc/itemlist.aspx?pdf_ob=0'
r = requests.get(target_url)
soup = BeautifulSoup(r.text, 'lxml')

for a in soup.find_all('a'):
      print(a.get('href'))

[CentOS8] PHP8インストールしよう

$ cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)
$ php -v
-bash: php: command not found
$ sudo yum update

$ sudo yum install epel-release
$ sudo yum update epel-release
$ sudo rpm -ivh http://rpms.remirepo.net/enterprise/remi-release-8.rpm
$ sudo rpm –import http://rpms.remirepo.net/RPM-GPG-KEY-remi

$ export LC_ALL=C
$ printenv | grep LC
$ sudo yum config-manager –set-enabled remi

$ sudo yum module reset php
$ sudo yum module install php:remi-8.0

$ sudo yum install php php-devel php-pdo php-mysqlnd php-mbstring php-gd

$ php -v
PHP 8.0.3 (cli) (built: Mar 2 2021 16:37:06) ( NTS gcc x86_64 )

ヒョエエええええええ

量子コンピュータ(quantum computer)とは

量子コンピュータは、量子力学を計算過程に用いることで圧倒的な処理能力を持つ次世代コンピュータ
「量子力学特有の物理状態を積極的に用いて高速計算を実現するコンピュータ」
量子計算は古典計算の上位互換であり、古典コンピュータで解ける問題はすべて量子コンピュータで解くことができる

1.万能量子コンピュータ
L 「回路」や「論理ゲート」の代わりに「量子回路」や「量子ゲート」を用いて計算を行うモデル
2.非万能量子コンピュータ
3.非古典コンピュータ

DockerのECSプラグインを使う

ECS PluginはDockerの拡張機能
ECSのFargate上にデプロイすることができる

$ git clone https://github.com/docker/ecs-plugin.git
$ cd ecs-plugin/example/
$ docker build app -t example
$ docker images –filter reference=example
REPOSITORY TAG IMAGE ID CREATED SIZE
example latest 31ac32e7e8dd 18 seconds ago 52.9MB

$ docker run -t -i -p 5000:5000 example

OK(※redisが起動していない為)

### AWS ECS
DockerHubの様なもの
作成したDockerイメージをECRにpushし、docker-compose使用時にpull
$ docker context use default
$ docker context ls

### ECS用のIAM作成
こちらを参考にECSのユーザを作成する
https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/get-set-up-for-amazon-ecr.html
accound_id, access_key_id, secret_access_keyをメモ

### AWS CLI install
$ dnf install python3-pip
$ pip3 install awscli –upgrade –user
$ aws –version
aws-cli/1.19.28 Python/3.6.8 Linux/4.18.0-193.19.1.el8_2.x86_64 botocore/1.20.2
$ aws configure
-> Administratorのaccess_key_id, secret_access_keyと ap-northeast-1を入力

$ timedatectl set-timezone Asia/Tokyo

$ aws ecr get-login-password –region ap-northeast-1 | docker login –username AWS –password-stdin hoge.dkr.ecr.ap-northeast-1.amazonaws.com
Login Succeeded

// レポジトリ作成
$ aws ecr create-repository \
–repository-name example \
–image-scanning-configuration scanOnPush=true \
–region ap-northeast-1
// タグ付け
$ docker tag example:latest hoge.dkr.ecr.ap-northeast-1.amazonaws.com/example:latest
// imageをpush
$ docker push hoge.dkr.ecr.ap-northeast-1.amazonaws.com/example:latest
$ aws ecr list-images –repository-name example
{
“imageIds”: [
{
“imageDigest”: “sha256:75260261d397dd588f43bd4fc16118cb2763c55c46caa313a9a2caf0202636f9”,
“imageTag”: “latest”
}
]
}

AWS console

イマイチよくわってないが、なんか出来とるな。。。

[CentOS8] docker-compose

$ sudo curl -L “https://github.com/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ docker-compose –version
docker-compose version 1.28.5, build c4eb3a1f

Dockerfile

FROM alpine
RUN apk add bash procps curl
CMD sh -c "(while :; do date; sleep 1; done) >&2"

docker-compose.yml

version: "3"

services:
  myalpine:
    build: "."
    tty: true

$ docker images
$ docker-compose up -d
$ docker ps
$ docker-compose stop

version: '3.7'

services:
  nginx:
    image: nginx
    ports:
      - 8080:80

$ docker-compose up -d

複数のコンテナ起動に威力を発揮する

[CentOS8] Docker環境構築

公式ガイドに沿って作っていきます。
1. リポジトリセットアップ
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
$ sudo yum-config-manager \
–add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum install docker-ce
$ sudo systemctl start docker
$ docker –version
Docker version 20.10.5, build 55c4c88
$ sudo docker run hello-world
Unable to find image ‘hello-world:latest’ locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete
Digest: sha256:308866a43596e83578c7dfa15e27a73011bdd402185a84c5cd7f32a88b501a24
Status: Downloaded newer image for hello-world:latest

Hello from Docker!

$ sudo docker pull centos
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d1165f221234 9 days ago 13.3kB
centos latest 300e315adb2f 3 months ago 209MB
$ sudo docker inspect 300
$ sudo docker run 300 echo “hello world”
hello world
$ sudo docker ps -a -n=5
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
79f86705caf2 300 “echo ‘hello world'” 42 seconds ago Exited (0) 40 seconds ago exciting_newton
3a66b7697532 hello-world “/hello” 16 minutes ago Exited (0) 16 minutes ago laughing_wu

// ハイフンdでバックグラウンドで走らせる
$ sudo docker run -d centos free -s 3

// コンテナの中に入って操作する -iはインタラクティブモード、-tはターミナル
$ sudo docker run -i -t centos /bin/bash

// image作成 username/${name}
$ sudo docker commit 646 hpscript/hello
$ sudo docker run -i -t hpscript/hello /bin/bash

// image -> container -> image はdocker build

vi Dockerfile

FROM centos
MAINTAINER hpscript <hoge@gmail.com>
# RUN build execute
RUN echo "now building..."
CMD ["echo", "now running..."]

// dockerfileによるbuild
$ sudo docker build -t hpscript/echo .
$ sudo docker run hpscript/echo
now running…

$ sudo docker build -t hpscript/httpd .
http://192.168.34.10:8000/
$ sudo docker login
// imageをpushする
$ sudo docker push ddddocker/test

ok
これをecsでec2にデプロイしたい

【Ubuntu 20.04】tensorflowの環境構築

最初からやりたいと思います。
$ vagrant init ubuntu/focal64
$ vagrant up
$ vagrant ssh
Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-51-generic x86_64)

$ python3 –version
Python 3.8.5
$ sudo apt update
$ sudo apt install python3-dev python3-pip python3-venv
$ pip3 –version
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)

### 仮想環境構築
$ python3 -m venv –system-site-packages ./venv
$ source ./venv/bin/activate
$ pip install –upgrade pip

$ pip install –upgrade tensorflow
$ pip install jupyter
$ python -c “import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))”
-> no moduleで上手くいかない

$ free -h
total used free shared buff/cache available
Mem: 981Mi 129Mi 787Mi 0.0Ki 63Mi 745Mi
Swap: 0B 0B 0B

### swap追加
$ sudo fallocate -l 1G /swapfile
$ ls -lh /swapfile
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
$ sudo swapon –show
$ free -h
total used free shared buff/cache available
Mem: 981Mi 130Mi 778Mi 0.0Ki 71Mi 740Mi
Swap: 1.0Gi 0B 1.0Gi

$ pip install –upgrade tensorflow
launchpadlib 1.10.13 requires testresources, which is not installed.
$ sudo apt install python3-testresources
$ sudo apt install python3-cairo-dev
$ pip check
No broken requirements found.
$ python -c ‘import tensorflow as tf; print(tf.__version__)’
2021-03-15 09:34:53.575432: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library ‘libcudart.so.11.0’; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory
2021-03-15 09:34:53.575530: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
2.4.1

1. 仮想環境に作る事
2. swapメモリを追加する事

出来たっぽいな。
さあ、Dockerやるか^^

【Ubuntu 20.04】TensorFlowを使いたいが…

TensorFlowとは?
->エンドツーエンドのオープンソース機械学習プラットフォーム

$ uname -a
Linux ubuntu-focal 5.4.0-56-generic #62-Ubuntu SMP Mon Nov 23 19:20:19 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

### cudaインストール
cudaとは?
-> NVIDIAが開発・提供している、GPU向けの汎用並列コンピューティングプラットフォーム(並列コンピューティングアーキテクチャ)およびプログラミングモデル

$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
$ nvidia-smi

Command ‘nvidia-smi’ not found, but can be installed with:

$ sudo apt-get –purge remove nvidia-*
$ sudo apt-get –purge remove cuda-*
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
$ sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ wget http://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda-repo-ubuntu1804-10-1-local-10.1.243-418.87.00_1.0-1_amd64.deb
$ sudo dpkg -i cuda-repo-ubuntu1804-10-1-local-10.1.243-418.87.00_1.0-1_amd64.deb
$ sudo apt-key add /var/cuda-repo-10-1-local-10.1.243-418.87.00/7fa2af80.pub
$ sudo apt-get update
$ sudo apt-get -y install cuda

なんかdependencyで上手くいかんな。。
もう一回環境作り直すか。。