カテゴリー別アーカイブ: 未分類

Lazarusでメール送信

Lazarusでメール送信してみた

環境
Ubuntu 16.04 LT (VirtalBoxにて)
Lazarus 2.0.10

手順
パッケージ「indy」を読み込む
パッケージ>OnlinePackageManager

検索
indy
Indy10にチェック
install
From repository

参考
http://oto.chu.jp/a.oto.chu.jp/kujira/text/delphi/mail/sendmail.htm
https://www.migaro.co.jp/contents/support/technical_report_search/no06/tech/06_01_04.pdf
https://www.petitmonte.com/bbs/answers?question_id=29625

必要な情報
メールサーバのアカウントとパスワード(x-sreverなどにて取得)

smtp.HOST:=’svxxxx.xserver.jp’;
smtp.PORT:=587;
smtp.Username:=’xxx@xxx.jp’;
smtp.Password:=’xxxxx’;

IdIMAP4,IdSMTP, IdSSLOpenSSL, IdMessage
を、設置

プログラム

var
smtp: TIdSMTP;
msg : TIdMessage;

begin
//*** 変数を初期化する ***/
smtp := nil;
msg := nil;
try
try
smtp := TIdSMTP.Create(nil);
smtp.HOST:=’xxxx.xserver.jp’;
smtp.PORT:=587;
smtp.Username:=’xxxx@xxxxx.com’;
smtp.Password:=’xxxx’;
smtp.Connect;
//*=== メッセージオブジェクトの作成 ===*/
msg := TIdMessage.Create(smtp);
msg.Subject := ‘Subject’;
msg.From.Name := ‘Name’;
msg.From.Address := ‘xxxxxx@gmail.com’;
msg.Recipients.EMailAddresses := ‘xxxxxx@gmail.com’;
msg.Body.Text := ‘Text’;

//*=== メール送信 ===*/
smtp.Send(msg);
except
// Result := False; // 異常終了
end;
finally
//*=== メッセージオブジェクトの破棄 ===*/
if msg <> nil then msg.Free;

//*=== SMTPサーバの切断 ===*/
if smtp <> nil then
begin
smtp.Disconnect;
smtp.Free;
end;

end;
end;

無事送信できました

Conoha VPS Ubuntu16 GUI

Conoha VPS Ubuntu16 GUI環境を構築

環境の選択

東京
2GB
Ubuntu 16.04 (64bit)

パスワード
ネームタグ変更

rootのパスワードを設定し

オプション ssh key

起動したら、IPを調べ

ssh -i /home/xxx/key-xxx-xx-xx-xx-xx.pem root@xx.xx.xx

で、端末に入る

root
XXXXパスワードでログイン

apt-get update
apt-get upgrade
Could not get lock /var/lib/dpkg/lock-frontend

のエラーがでたら

sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/lib/dpkg/lock

などで回避(一度に行わず、1行づつ確認)

たまに、問い合わせがあるが(y)で、回答

ポップアップ画面で問い合わせがでるが
そのまま「TAB」でOK

apt-get upgrade
の途中で、一度画面が切れたら
再度、ログインしなおし

アカウント作成

adduser xxx

Enter password
Retype password

sudoを使えるようにする

usermod -G sudo xxxxxx

ユーザに切り替える

su - xxx

sudoが使えるか調べる

sudo ls /
sudo tasksel

Ubuntu Desktop
をスペースで選択しTABでOKをリターン
(Ubuntu Cloud Image (instance) に入っているチェックはそのまま)

設定がはじまる

設定が完了したら

sudo sh -c 'echo 127.0.1.1 $(hostname) >> /etc/hosts'
sudo reboot

画面がリセットされた場合は
再度ログイン

データのやり取り
端末は

ssh -i /home/xxx/key-2015-xx-xx-xx-xx.pem root@150.xx.xx.xx
sftp -i /home/xxx/key-2015-xx-xx-xx-xx.pem root@150.xx.xx.xx
cd /home/xxx

Python環境を構築

$ python -V
Python 2.7.12

$ python3 -V
Python 3.5.2
python3 -m venv env

エラーにが出た場合は、メッセージに従い

apt-get install python3-venv

仮想環境構築の有効化

python3 -m venv env
source env/bin/activate

seleniumを組み込んでみる

pip install selenium

サンプルを起動

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time

def main():
    print ('start_main')
    browser = webdriver.Chrome('/usr/lib/chromium-browser/chromedriver')
    time.sleep(5)
    browser.get('https://google.co.jp')
    time.sleep(4)
    print ('end_main')

main()
print ('end')

chromedriver エラーになる

chromedriverの場所を探す

 sudo find ./ -name chromedriver
#   browser = webdriver.Chrome('/usr/lib/chromium-browser/chromedriver')
   browser = webdriver.Chrome('/home/kon/env/lib/python3.5/site-packages/chromedriver')
Message 'chromedriver' executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home

https://sites.google.com/a/chromium.org/chromedriver/home

から、ドライバーをダウンロード

chromedriver_linux64.zip

解凍し、フォルダーをドライバーとして指定

unzip chromedriver_linux64.zip

# browser = webdriver.Chrome(‘/usr/lib/chromium-browser/chromedriver’)
# browser = webdriver.Chrome(‘/home/kon/env/lib/python3.5/site-packages/chromedriver’)

browser = webdriver.Chrome(‘/home/kon/Downloads/chromedriver’)

に、変更、でうまく行った。
設置場所は後で、変更しておこう

参考
Chromeのバージンと合わせる方法として

pip install chromedriver-binary==xx.x.xxx.xx

にて、インストールする方法がある

https://qiita.com/hanzawak/items/2ab4d2a333d6be6ac760

各種バージョンのドライバは

https://sites.google.com/a/chromium.org/chromedriver/home
https://chromedriver.storage.googleapis.com/index.html

Chromeをヴァージョンアップする方法は

sudo apt-get --only-upgrade install google-chrome-stable

参考
https://qastack.jp/superuser/130260/how-to-update-google-chrome-in-ubuntu

問題がなければ、
最新のChromeにバージョンアップしてそれにあった
Driverを入れるといい

ubuntu14 にlazarusをインストール

ubuntu14 にlazarusをインストールしてみました。

http://je7tsc.blogspot.com/2019/01/ubuntu17lazarusinstall.html
を、参考にしましたが

https://www.lazarus-ide.org/
からのDownloadNowより

lazarus-project
fpc-src
fpc-laz
を、ダウンロード
lazarus-project_2.0.10-0_amd64.deb
fpc-src_3.2.0-1_amd64.deb
fpc-laz_3.2.0-1_amd64.deb

となっていました。

フォルダーを作り、ダウンロードしたものを移動

cd
mkdir lazarus
cd lazarus

sudo dpkg -i lazarus-project_2.0.10-0_amd64.deb
sudo dpkg -i fpc-src_3.2.0-1_amd64.deb
sudo dpkg -i fpc-laz_3.2.0-1_amd64.deb

にて、インストール

sudo apt-get install build-essential
sudo apt-get install libgtk2.0-dev
を、しておいたが、不要だったかもしてません。

startlazarus
で、起動

ボタンを配置して
ダブルクリックをして

begin
Button1.caption := ‘lazarus’;
end;

として、実行してみましょう(beginとend;は、記述済)

参考の

sudo apt install ./lazarus-project_2.0.10-0_amd64.deb
sudo apt install ./fpc-src_3.2.0-1_amd64.deb
sudo apt install ./fpc-laz_3.2.0-1_amd64.deb

が、うまくいきませんでした。

再度
sudo apt-get install build-essential
なしで行った時

linker: /usr/bin/ld: -lcairo が見つかりません
などのエラーがでた

sudo apt-get install build-essential
をしたら、エラーが出て、メッセージに従い
sudo apt-get -f install
をおこなったらインストールできた

再起動したら、コンパイルができた
sudo apt-get install build-essential
は、必要のようだ。

Djangoで外部DB(Mysql)に接続 django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module 対策

DjangoのDBをSqligthからMysqlへ切り替える

ローカルではうまくいくのに、サーバで切り替えがうまく行かない

migrateを実施してみたら
Mysqlが入っているのに

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module
と、エラーが出る

Django: 解決法 Error loading MySQLdb module.


を、参考にして
対策したらうまくいった

切り替えの流れ

■Settingを変更
https://docs.djangoproject.com/en/1.11/ref/settings/#databases
を、参考にDBを追加

DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.postgresql’,
‘NAME’: ‘mydatabase’,
‘USER’: ‘mydatabaseuser’,
‘PASSWORD’: ‘mypassword’,
‘HOST’: ‘xxx.xxx.xxx.xxx’,
‘PORT’: ‘3306’,
}
}

WSGI_APPLICATIONの設定をDATABASESの前に追加
WSGI_APPLICATION = ‘[app_name].wsgi.application’

■Mysqlライブラリーを追加
pip install pymysql

■migrateを実施
python manage.py makemigrations
python manage.py migrate

ローカルでできたが、サーバ端末でエラー
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?

Django: 解決法 Error loading MySQLdb module.


を、参考にして
app_root_folder/app_name/__init__.py
へ、
import pymysql
pymysql.install_as_MySQLdb()
を、追加

無事切り替え完了

conoha に外部からアクセスできるMysqlを設置

conoha に外部からアクセスできるMysqlを設置してみました。

■Conohaへの接続

キー接続で設定し、sshで接続

ssh -i /home/xxxx/key-20xx-0x-xx-0x-xx.pem root@xxx.xxx.xxx.xxx

■バージョン
# cat /etc/os-release
NAME=”Ubuntu”
VERSION=”18.04.4 LTS (Bionic Beaver)”

■参考
https://qiita.com/houtarou/items/a44ce783d09201fc28f5

■インストール
# apt install mysql-server mysql-client

■インストールされたMysqlのバージン
# mysql –version
mysql Ver 14.14 Distrib 5.7.31, for Linux (x86_64) using EditLine wrapper

■サーバ状態確認
# service mysql status

■サーバ起動
# service mysql start

■サーバ停止
# service mysql stop

■rootユーザーの設定
# mysql_secure_installation

■DB作成

# mysql -u root
パスワード入力

show databases;

CREATE DATABASE [データベース名] CHARACTER SET utf8mb4;

show databases;

■ユーザと権限設定
grant all privileges on [データーベース名].* to ‘[ユーザ名]’@’%’ identified by ‘[password]’ with grant option;

すでに、ユーザがある場合は、権限付与
GRANT all ON [データーベース名].* TO '[ユーザ名]’@’%’;

全てのデータベースに権限付与する場合は
GRANT all ON *.* TO '[ユーザ名]’@’%’;
(一度行っておくと、DBを追加した時は、設定は不要となるがセキュリティーが緩くなる)

select user,host from mysql.user;

■ユーザで確認(ローカル)

exit

# mysql -u [新しいユーザ名] -p

show databases;

exit

■ユーザで確認(外部から確認)
同じ端末で

# mysql -h [ip] -u [新しいユーザ名] -p

(111)のエラー

exit

vim /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address = 127.0.0.1
これを
#bind-address = 127.0.0.1
に変更

iで、編集モードに入り、カーソルで移動#を追加し
し[esc]:wqで、保存終了

# service mysql stop
# service mysql start

で、
# mysql -h [ip] -u [新しいユーザ名] -p
にて確認

サーバIP確認は
# ifconfig
eth0: flags=4163 mtu 1500
inet xxx.xxx.xxx.xxx netmask 255.255.254.0 broadcast xxx.xxx.xxx.xxx

確認ができたら
外部ツールから接続確認を行う

django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.8.2)

Django 起動時に
django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.8.2)

sqlite のバージョンアップ手順

https://qiita.com/rururu_kenken/items/8202b30b50e3bfa75821
を参考にして

wget https://www.sqlite.org/2020/sqlite-autoconf-3310100.tar.gz
tar xvfz sqlite-autoconf-3310100.tar.gz

cd sqlite-autoconf-3310100
./configure --prefix=/usr/local
make
sudo make install
sudo find /usr/ -name sqlite3

sudo mv /usr/bin/sqlite3 /usr/bin/sqlite3_old
sudo ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3

vim ~/.bashrc
export LD_LIBRARY_PATH=/usr/local/bin:$LD_LIBRARY_PATH

:wq

source ~/.bashrc

参考
https://teratail.com/questions/194159

python ftp text読み込み

python ftp text読み込みを作ってみる

x-serverで、フォルダーpublic_html/xxxx/data/にある
*.json
を取得

直接ファイルに落とす場合

from ftplib import FTP
import glob

ftp = FTP(
    "sv22xx.xserver.jp",
    "aaa@xxxx.xsrv.jp",
    passwd="xxxx"
)

def mid(text, n, m):
  return text[n-1:n+m-1]

items = ftp.nlst('/xxxx.xsrv.jp/public_html/xxxx/data/*.json')
print(items)
for row in items:
#                f.write(row + '\n') # 標準出力に惑わされないようファイルにも出力
    st1 = mid(row, len("/xxxx.xsrv.jp/public_html/xxxx/data/")+1 , len(row)-len("/xxxx.xsrv.jp/public_html/xxxx/data/") )
    print(st1)
    print(row)
    with open("data2/"+st1, "w") as f:
        ftp.retrlines("RETR "+row, f.write)

# フォルダー内のファイル一覧表示
filelist=glob.glob('data2/*.json')
print (filelist)
for file in filelist:
    print(file)

ファイルにおとさずに、変数に取り込む場合
参考

python – FTPでのファイル取得

from ftplib import FTP
import glob

ftp = FTP(
    "sv22xx.xserver.jp",
    "aaa@xxxx.xsrv.jp",
    passwd="xxxx"
)

def mid(text, n, m):
  return text[n-1:n+m-1]

items = ftp.nlst('/xxxx.xsrv.jp/public_html/xxxx/data/*.json')
print(items)
for row in items:
    st1 = mid(row, len("/xxxx.xsrv.jp/public_html/xxxx/data/")+1 , len(row)-len("/xxxx.xsrv.jp/public_html/xxxx/data/") )
    print(st1)
    print(row)
    ret = list()
    with open("data2/"+st1, "w") as f:
        #retに読み込んだ内容を追加
        ftp.retrlines("RETR "+row, ret.append)
    for line in ret:
        print(line)

Ubuntu 14 youtube-dlを使う

youtube-dl を使って見る

youtube-dl を使って見る

https://www.youtube.com/watch?v=xxxxxx

エラー

インストールされていない

sudo apt-get install youtube-dl

エラーだ

youtube-dl --version

古いバージョンだ

sudo youtube-dl -U

バージョンアップできない

https://www.howtoforge.com/tutorial/install-and-use-youtube-dl-on-ubuntu-1604/

に従い

sudo curl -L https://yt-dl.org/latest/youtube-dl -o /usr/bin/youtube-dl
sudo chmod 755 /usr/bin/youtube-dl

バージョンを調べる

sudo youtube-dl -U

新しくなった

https://www.youtube.com/watch?v=xxxxxx

うまく行った