ニックジャガー日記

勝手気ままだけど自分に素直なブログ

次の目標

今までやってきたものを

全部集約してあるプログラムを作ることにした

 

それができると、

自分も楽になるし、

今までの成果になるかな

 

勉強してきてよかったって

思えるかな

 

だから頑張ろう

 

ここまでこれたのだから

これからも少しずつ頑張ろう

 

続けることが

一番大事

 

そして

 

 自分の糧になる

 

075/100

#100DaysOfCode

苦手を克服できたら強み

どうしても認証の部分が自分で弱いと思ってる

 

vagrantで仮想環境のcentosを作って

さて、sshで繋ごうと思ったら繋がらない

 

vagrant ssh

 

は、繋がる

 

だた、

ssh  <user>@<ip>

ではaccess deniedになってしまう。

 

色々調べた

qiita.com

 

vagrantのVagrantfileがおかしいとしたらわからない

認証部分はいつも自分にとってはわからないエラーになってて

何が原因かとんと検討もつかない

 

それでいつも投げ出してしまう

 

それでもいつも気になって、何だろう?って思っている自分がいる

そして、これはOSの問題かも、って思うのだ

 

centosの最初のイメージに設定されてないんじゃないかと

で、結局SSHの設定そのものにいく

 

qiita.com

 

ここから基本に立ち返って

qiita.com

 

で、

/etc/ssh/sshd_config

に辿り着くのだ

 

AWSでec2-userと違うユーザーで接続した時にわからなかったのと同じじゃないかと 気づく

 

最終的には

PasswordAuthentication=no

これが問題だった

これをyesに変えれば問題解決

 

もっと言えば、これを設定してたつもりだったが、デフォルトのパラメータがこのnoで設定されていて、そちらが拒否してたみたい

 

ファイル中はくまなくみないといけない・・これ、苦手かも

 

苦手なものが出てくると、興味も失せて逃げ出したくなる

でも、時間は少し緩和してくれて立ち戻らせてくれる

 

やっぱり「勉強」というのはこういことかなと思う

「越える」のは「強み」ということかも

 

074/100

#100DaysOfCode

Androidでorg-mode(Emacs)

最近、Pythonを使うようになり、次は何をしようかとか

ブログは何を書こうかとか

会社で議事録を簡単に取れるメモが欲しいなとか

 

テレワークでちょっとしたメモをすぐに取れるように

手に馴染んだエディタがあればいいなと思って

最終的にEmacsになっている

 

org-modeはアイデアをまとめるには

最強のツールで、

思いつくままタイトル書いて

書きたいものをその項目に書いて、

次にタイトルが浮かんだらそれを項目にいれて

その内容を書く・・ってことが本当に簡単にできる

 

今言うかどうかはわからないけれど

イデアプロセッサというヤツだ

 

最近、ノートパソコン代わりにタブレットを使っていて

そこにどうしてもEmacsを入れたくなって、昔、この記事を書いた

 

nickjagar.hatenablog.com

 Emacsのことを知れば知るほど、

androidでやることがとても楽しくなってくる

どこでも書けるし情報の共有もできる

情報の共有はsyncthingというツールを使うとデスクトップと容易に

同期できる

 

monoworks.co.jp

これ、同一端末だけれど、今はubuntuandroidとで同期している

termuxはandroidでアイコン長押しすると新しいセッションが起動するのを今日、初めて知って、ずっと同期し続けるファイルを見て、とても嬉しく思った

 

勉強したことが、次々に連鎖反応を起こして

楽に次に進めるようになるのは

本当に嬉しいことだ

 

仕事でもこれが生かされるから

もっと嬉しい

 

 

073/100

#100DaysOfCode

楽しく思えるのが一番の進歩

Webの自動巡回を確かめようと、ubuntuVirtualBoxを入れて、Vagrantで構成して、色々試した。

 

一通り終わってから、今度はいよいよAWSへ。

これが最終的な目的だったから。

 

AWSのEC2インスタンスをAWSLinuxにして、はて、ここからseleniumを動かすには?うん?GUIがいる?

 

ってなわけで、EC2インスタンスGUI化するのに、すごく時間がかかった。

aws.amazon.com

 

公式ページに書いてある!すごいすごい。と思って、やってみた。

まずはVNCがわからない。そこでVNCを調べてみる。

www.ipentec.com

 

ちなみにAmazonLinuxは基本CentOSなのでこれでいいはず。

最初にAWSの説明書通りにやってみると、MATE(マテ)の画面が現れず、ただ青い画面が出るだけ。ここでとっても詰まった。

 

最終的にはVNCの画面セッションの番号の問題と判明。

.1というセッションでなく、思い切って.3のセッションにしたら見事にMATEの画面が出た。あと、この記述が一番大事みたい。

 

# The vncserver service unit file
#
# Quick HowTo:
# 1. Copy this file to /etc/systemd/system/vncserver@.service
# 2. Edit <USER> and vncserver parameters appropriately
#   ("runuser -l <USER> -c /usr/bin/vncserver %i -arg1 -arg2")
# 3. Run `systemctl daemon-reload`
# 4. Run `systemctl enable vncserver@:<display>.service`
#
# DO NOT RUN THIS SERVICE if your local area network is
# untrusted!  For a secure way of using VNC, you should
# limit connections to the local host and then tunnel from
# the machine you want to view VNC on (host A) to the machine
# whose VNC output you want to view (host B)
#
# [user@hostA ~]$ ssh -v -C -L 590N:localhost:590M hostB
#
# this will open a connection on port 590N of your hostA to hostB's port 590M
# (in fact, it ssh-connects to hostB and then connects to localhost (on hostB).
# See the ssh man page for details on port forwarding)
#
# You can then point a VNC client on hostA at vncdisplay N of localhost and with
# the help of ssh, you end up seeing what hostB makes available on port 590M
#
# Use "-nolisten tcp" to prevent X connections to your VNC server via TCP.
#
# Use "-localhost" to prevent remote VNC clients connecting except when
# doing so through a secure tunnel.  See the "-via" option in the
# `man vncviewer' manual page.


[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/sbin/runuser -l penta -c "/usr/bin/vncserver %i"
PIDFile=/home/penta/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

 この例ではpentaになってるけど、ここをec2-userにすると見事に動いた。

vncclientはubuntuからなので、Remminaを使用。IP:3とEC2につなぐと見事にデスクトップ画面が出て感動した。

 

MATEは動作が軽くていい。

さて、ここからまた自動実行をやってみることになる。

 

詰まるととても窒息感があるけれど、しばらく時間を置いて、もう一度何気に見てみるとわかり始めることが多くなった。

 

エラー内容を見たり、WEBで調べて違いを調べたり。

そのコツが少しずつわかってきたかな。

 

なんだかんだいって、こういうのが楽しいのである。

 

072/100

#100DaysOfCode

shell の勉強

Windows は昔からバッチファイル(.bat)を作っていた

 

もともとはUnixが始まりだろうけど、

ようやくLinuxのShellというものを使おうと思った

 

qiita.com

 

今まで手で動かしていたpythonプログラムを

バッチで動かしたら、手間が省ける省ける 笑

 

やはり、必要は進歩の母

 

bashよりもzshの方が便利と情報にはあった

qiita.com

 

気が向いたら使おう

 

 

071/100

#100DaysOfCode

理解不足が強くする

このGWは結構パソコンの前に座った

なんでも自粛生活だから

 

なので、やりたかったことが結構進んだ

 

わからないことがある度に

知識が深まることがわかる

 

前回、Web巡回をやって、その次は仮想OSの自動作成に挑んだ

 

仮想OSの自動作成と聞いて、思い出したのが、ansible

これでインスタンスを立てればいいんじゃない?

 

そう思ったのが間違いだった

 

ansibleの説明を読めば読むほどわからない・・

 

どうやったら仮想OS立てられるんだろう?

Inventoryとplaybookでなんでもできるって書いてるけど、

コマンドラインで打てるものばかり

 

これじゃ、作れないんじゃ・・

 

でも、やってみようと、まずはインストールして、環境整備

 

これでつまづく・・

 msg": "Failed to connect to the host via ssh: xxxx@yyy.yyy.yyy.yyy: Permission denied (publickey,password).",

これはローカルマシンにIPアドレス指定してやった場合。

IPアドレスlocalhostとして以下をやるとうまくいく

ansible localhost -m ping

どうも公開鍵の問題かと思って、ここからがとてもとても長くなって・・

まだ解けない 笑

 

ここから、ansibleの説明を読みまくり。

www.slideshare.net

 

これがわかりやすくて好き。

 

で、ここに出てくるVagrantで仮想OSを立てられる

 

Vagrantはansibleのテストでよく出てくる単語

VirtualBoxでOSを簡単に立てるアプリケーション

 

qiita.com

 

vagrantubuntuをホストとしてcentosを起動するところまでOK。

centosを起動して、さて、設定変えようと思ってEditorを、ってところで

Emacsが欲しくなった 笑

 

Emacsをインストールするには、最新バージョンでって思ったら、

最終的にコンパイルして入れることに・・

 

今までそこまでしたことがなかったから、逆に新鮮で、もともとLinuxとは

こういうものなんだなぁと、とても感心しながら作業した。

 

そして、最後はEmacsのinit.elのコピーをGitHubからダウンロード。

 

ansible → Vagrant → Emacsコンパイル → GitHub

 

なんてLinuxしている生活だろう?笑

 

結構スキル上がった気がしたのは、間違いだろうか?笑

たぶん、去年はできなかった。

 

それが、この100daysをやるようになって、

格段にLinuxスキルが上がった気がする

 

というか、このGW中がよかったかな

自分の好きなようにLinuxいじれたから

 

あと、一日、頑張ろう

 

今日は思いを込めて結構長文になったなぁ

 

でも、最終的にまだansible動いてないんだよねー 笑

回り道し過ぎ 爆

 

 

070/100

#100DaysOfCode

 

 

やってみるもの

seleniumは指定の仕方が簡単

Webスクレイピングは一旦URLからそのhtmlをとってきて解析が必要だけれど

自動徘徊はボタンを押すだけだから解析は必要ない

 

といってもWebのソースコードを見る必要があるけれど・・

 

f:id:nickjagar:20200425233826p:plain

こんなコードのタグ、上の例えば<article id=...
となっているところのarticleを指定する

 

その指定の仕方もXpathという指定の仕方をすると簡単。

どうして簡単かというと、いちいちフルパスを書く必要がない。

//article[@id="..."]

とすればいい。Xpathも一応勉強して、しばらく試行錯誤

 

この試行錯誤で覚える。

何度も失敗してようやく動かせるようになった頃に

はじめてXpathの意味や指定の仕方がわかる

 

なんでもやってみることが大事

 

参考にしてブログはこちら(これが元)

selenium-python.readthedocs.io

 

そして日本語での解説では、ここを参考にしました。

kurozumi.github.io

 

とりあえず、これで動かした。

これで目標は達成。なんだか思ったより早い。

 

069/100

#100DaysOfCode