アラサー転職組の新米エンジニア日記

2017年に未経験からエンジニアになったアラサーです。

python でS3にファイルを転送

pythonの学習の一環としてAWS S3をいじるコード。

S3の任意のバケットスクリプト実行日の日付のフォルダが存在することを確認し、
存在すればそのフォルダの直下にファイルを転送、
存在しなければフォルダを作成したのちそのフォルダにファイルを転送する。
S3にはそもそもフォルダという概念はなくプレフィックスを使用した論理的な階層のためあえてフォルダを準備するという処理はせずファイル名にフォルダ名を連ねる形のプレフィックスで良かったかも

import boto3
import datetime

s3_client = boto3.client('s3',
           aws_access_key_id='XXXXXXXXXXXXXX',
              aws_secret_access_key='XXXXXXXXXXXXXXXXX',
                 region_name='ap-northeast-1')


now = datetime.datetime.now()
dt_now = now.strftime('%Y%m%d')
date_time = str(dt_now) + '/'
bucket_name = 'python-test-XXXX'

result = s3_client.list_objects(Bucket=bucket_name, Prefix=date_time)

if "Contents" in result:
    exists = True
    print('there is a directory')
    print('upload local files')
    s3_client.upload_file('/home/vagrant/test-upload.txt', bucket_name , date_time+ 'test-upload.txt')
else:
    exists = False
    print('nothing a directory')
    print('making directory before transfer local files')
    s3_client.put_object(Bucket=bucket_name, Key=date_time)
    s3_client.upload_file('/home/vagrant/test-upload.txt', bucket_name , date_time + 'test-upload.txt')

SAAに合格しました。勉強内容 【AWS認定ソリューションアーキテクト アソシエイト】

久しぶりの投稿。
表題の通りSAAに合格したので勉強方法をまとめておこうと思います。

f:id:wakachann:20220313181123j:plain
画像

勉強期間について

約2か月間くらいです。
平日は1時間程度、休日は3時間程度時間をとり、
日常生活に支障をきたさないかなりゆったりしたペースで勉強をしていたと思います。

教材について

  • これだけでOK! AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座
    Udemyで販売している学習講座です。内容が幅広くハンズオンなので身に付きやすいです。
    www.udemy.com

  • AWS認定資格試験テキスト AWS認定ソリューションアーキテクト - アソシエイト
    通称オレンジ本と呼ばれているものです。
    こちら一応流しですべてざっと読みはしましたが、あくまで不明点出てきたときに調べるといった辞典的な使い方をしていました。

  • 最強WEB問題集 AWS認定ソリューションアーキテクト – アソシエイト(SAA-C02)
    ping-tで公開しているSAA専用の問題集です。
    一問一答形式なので手軽に学習出来てとてもよかったです。
    私が本資格の学習をしている途中で新しく始まったサービスでこちらの記事を書いている時も無料で利用できるサービスでした。
    現在まだ完成している問題集ではなく随時更新されているようです。
    ping-t.com

  • AWS公式模擬試験
    こちらも本資格の学習中無料になったAWSが公式で展開している模擬試験サービスです。
    テストを受けるまでの手続きがとんでもなく面倒くさいですが本番試験前に腕試しとして受けておくことをお勧めします。
    模擬試験の受験手順については以下クラスメソッドさんのブログがわかりやすいです。 dev.classmethod.jp

勉強方法について

ざっくりした流れとしては、、、
1. Udemyの授業を全部受講する(授業動画は1週だけしかしてません)
2. Ping-tで問題をすべて正解するまで解く。(未出題の問題をなくす)
3. Udemyの講座で準備されてある模擬試験とping-tの模擬試験モードを最低でも1日1回解きなおしも含めて受け、試験当日までひたすら受ける。

・Udemyの授業は結構長いので基本的に1.5倍速くらいで受講していました。
ping-tは答えの画面に各ジャンルの解説があるのでしっかりと読み込むようにしてました。LPIC受験の際もお世話になったサービスなのですが、Ping-tの解説はわかりやすいです。
・わからないことが出てきたらひたすらオレンジ本で知識を深めました。
・公式の模擬試験については、上記順番3番目の中で解く模擬試験が平均8割を超えてきたくらいで受けました。

本勉強方法の注意点について

上記の勉強方法でおそらく合格はできると思いますが、ping-tについては当時まだ未完成の問題集であり、試験の知識に必要なサービスが一部網羅できていない箇所がありました。(おそらくそれで無料だったのだと思います)

ping-tばかりで復習していたので、試験当日問題解いていてわからないなって思ったところはping-tで問題化されていない部分が多々ありました。

結果的に合格点ぎりぎりでしたが、勉強により知識を深めていった中で苦手な個所についてはUdemyの授業動画を復習がてら繰り返し見ておけばもっといい点数出せたかなと思っています。
 

1、Wordpressでサイト制作【基礎~テーマディレクトリについて】

wordpressのテーマディレクトリとは?
テーマに関するファイルが保存してあるディレクトリの場所
\wordpress\wp-content\以下に普通はありますね。
※XAMPPだと"C:\xampp\htdocs\wordpress\wp-content\themes"


☆get_template_directory_uri()
⇒テーマディレクトリまでのURLを取得する

☆esc_url()
⇒URLの無害化

☆☆esc_url( get_template_directory_uri() )
⇒テーマディレクトリまでのURLを出力
以下のようにechoで安全に取得したテーマディレクトリのURLを
取得してくれる。
<?php esc_url( get_template_directory_uri() ); ?>

http://localhost/wordpress/wp-content/themes/mvcoffee

 

画像ファイルを引き出す書き方

<img src="<?php echo esc_url(get_template_directory_uri() ); ?>/img/画像ファイル名.png" alt=""/>

wordpressの画像は"\wordpress\wp-content\themes\mvcoffee\img"以下に保存されている。

 

エスケープ関数について

esc_url() →URLを無害化してくれる

esc_html() →HTMLタグのエスケープ処理

esc_attr() → < > & " 'をエンコード

ecs_textarea() →textareaタグ内の値をエスケープする

1、Wordpressでサイト制作【基礎~サイト制作にあたって】

とりあえず題名の通りサイトを製作できるようになりたいと思って作っていくうえで学んだこと、大事なこと、思考の整理を備忘録として残していこうかと。

 

☆そもそもなぜ??

そもそもの話である。

なぜこんな気持ちになったかというと以下の点がある。

 

◆新しいウェブサービスを始めたい。

実は始めてみたい商売があってネタもあるのだがネットでの見せ方がいまいちわからない、そんなとき一から全部学んで実用できるのがこれだなって思ったわけ。しかももうボーナスと同時にレンタルサーバを契約済み(Xサーバ)。

wordpressも構築して一から作成しようにもテーマ選びからページの配置までわからないなりにやっていくうえで「これは一から勉強したほうがいいな。。」と思うようになってきた。なので目標としてはテーマを何となく形に出来るぐらいに出来ればいいかな~と、それでSEOとかその他もろもろのスキルも少し身につけばいいかな~と(←Web制作専業の人はマジで尊敬しています。これやってるんだなーって驚く毎日です。)

 

◆構築から制作リリースまでの一通り仕事でかじれるようになりたい

こう見えてインフラエンジニアなのでLINUXに一からwordpressは構築できるんだけどそこから運用もできてさらには制作もできるようになれば少しは自分の市場価値が上がるかなって気持ちがある。動的コンテンツはApacheで静的コンテンツはNginxで!みたいなのをうまく操りつつやっていけたら面白いのではないかと心のどこかのキャリア形成って書いた引き出しに漠然とした目標が入ってはある。

 

フリーランス的な感じで仕事を受注できる技術を得たい

これは2番目の動機とかなり似ている。せっかくITで技術を扱う会社で働いてるわけで

その技術を使った稼ぎ口が所属してる会社だけじゃなって思った。なんかパソコン一台で働けるようになりたいって目標を抱いて業界に移ったものの結局会社通さないとお金ももらえなのはなって不安が行動になった感じだ。

 

以上の動機である。

 

☆まず始めたこと

 

とりあえず、基本を学べる系の書籍を一冊、そしてまずはサイト制作においてのwordpressの仕組みについてネットで記事を探してみた。テーマ作成やプラグインについての知見を深める前にまずはwordpress自体の全体の仕組みを把握する必要があるなと。

なので下記を参考に知見を深めました。

 

【書籍】

ビジネスサイトをこれからつくる WordPressデザイン入門 サイト制作から納品までのはじめの一歩

 

【HP】

hijiriworld.com

 

 

 

粛々とやっていきたいと思う。

 

追伸

最後まで読んでいただきありがとうございます。

ほんとにうれしい!

wordpress初心者なのでおすすめの書籍やサイト教えていただけたら本当にうれしいです。よろしくお願いいたします。

 

 

CentOS7上でLaravelでWEBアプリケーションを作る ~CSSとjQueryをレイアウトに反映させる~

こんにちは

インフラエンジニアで勉強にもなるし勉強になるってことで環境がvirtualboxでcentOS7を入れてそれをteratermでローカル環境からコード書くって感じだったのですが、あれですねXAMPPめっちゃ便利っすね。これに乗り換えました。

今回はCSSファイルとjQueryをレイアウトで機能するようにしました。

resoses/views/layouts/testlayout.blade.php

layoutsディレクトは自分で作成してその中にファイルを作成しています。 このファイルに記載されているコードを骨組みとしてをブラウザに表示するファイルに読み込ませてる形になります。このブラウザに読み込ませるファイルにはこのレイアウトファイルを読み込むために継承させるコードを頭に書きます

@extends('layouts.testlayout')
※この'layouts.testlayout'というのはlayouts ディレクリ
 のtestlayout.blade.phpという意味これで継承してくれます。
 便利ね。

このレイアウトファイル内の<head>タグのなかにcssファイルの指定とjQueryファイルの呼び込み、</body>直前にjavascriptのファイルを指定上げるだけ

<head>
 <link rel="stylesheet" href="css/tomatoapp.css" >
 <script type="text/javascript" src="js/jquery-3.3.1.js"></script>
</head>

:
:
:
<script type="text/javascript" src="js/test.js"></script>
</body>

以上の感じ。 なんかほかに良い方法があったら教えていただきたいです。

CentOS7上でLaravelでWEBアプリケーションを作る ~DBクエリ,stdClassの値を直接参照する~

larabel初心者です。というかPHP初心者でもあります。

larabelのDBクラスから値を直接引っこ抜きたいんだけどどうもvar_dumpで表示させてみるとstdClass内に入ってて、このstdClassから直接値を参照しようと通常の連想配列から引き出すような感じで試したところ、Woooops!!ってなるので調べたところ下記で解決したのでその記録に。

select * from user;

id name old
4 sato 20
5 yamada 20
6 yoshida 20

routes/web.php

Route::get('/', function() {
  $message = DB::select('select * from user');
  echo '<pre>' . var_export($message,true) . '</pre>';
  $test= $message[0];
  print_r($message[0]);
  print '<br>'. $message[0]->name;
  print '<br>'.$message[1]->name;
  print '<br>'.$message[2]->name.'<br>';
  return 'おわり';
});

ブラウザでは下記が表示される

array (
  0 =>
  stdClass::__set_state(array(
     'id' => 4,
     'name' => 'sato',
     'old' => 20,
  )),
  1 =>
  stdClass::__set_state(array(
     'id' => 5,
     'name' => 'yamada',
     'old' => 20,
  )),
  2 =>
  stdClass::__set_state(array(
     'id' => 6,
     'name' => 'yoshida',
     'old' => 20,
  )),
)

stdClass Object ( [id] => 4 [name] => sato [old] => 20 )
sato
yamada
yoshida
OK

下記の表記でいけるっぽい

print '<br>'.$message[0]->name;
print '<br>'.$message[1]->name;
print '<br>'.$message[2]->name;

上記みたいな形で書けばいいみたい。 何かほかにいい方法知ってたら教えてください。

CentOS7上でLaravelでWEBアプリケーションを作る ~遷移先のURLにパラメータを渡す方法~

ブラウザに表を表示して、<a href=''>で特定のページに飛ばす際にアドレスにパラメータを指定してクリックと同時パラメータが指定されたアドレスURLに飛ばしたい。

blade.phpファイルに下記のように記載するとできました。
-------------------------------------------
@section('content')
<table>
<tr><th>日にち</th><th>プランID</th>
<th>&nbsp;</th></tr>
@foreach ($items as $item)
<tr>
<td>{{$item->play_day}}</td>
<td>{{$item->plan_id}}</td>
<td> <a href='deltask?id={{$item->id}}'>削除</a></td>
</tr>
@endforeach
</table>
@endsection
--------------------------------------------
これで画面の"削除"をクリックすると
"http://127.0.0.1:8000/deltask?id=番号"というアドレスに飛ぶ

f:id:wakachann:20180520142704p:plain

 

赤矢印部分の削除をクリックすると下記のURLページに飛ぶ。(遷移先のページはまだ作ってません)

f:id:wakachann:20180520142715p:plain

 

方法があまりよろしくなくほかに良い方法があればぜひ教えていただきたいです。