開始108日目〜超初心者、文系、30代のスタート〜 学んだこと追記2

enumはint型、boolean型で定義されたカラムを、文字列で表現できるようにする機能です。

 

scopeはモデルに対する絞り込みの条件に名前をつけて、メソッドのように呼び出し可能にする機能です。

 

※ロジックを適切な箇所に移動させる過程で、不要な記述 が見つかることがあります。こまめにコードを整備することによって、より見通しの良いコードを残すことができるので、「ちょっとこの記述読み辛くなってきたな」と感じたら、積極的にモデルを活用してリファクタリングを行いましょう。

 

例外とは、ある処理を実行した際の結果が、期待されるものと異なる状況を指します。 RubyおよびRuby on Railsでは、Exceptionというクラスを継承する形で様々な例外が定義されています。

例)RangeError

 

例外処理とは、例外が発生した場合に実行する処理のことを指します。Ruby on Railsの開発を行う際に、よく利用するのがrescueです。

rescue:

発生した例外を捕捉し、例外が起こった際に呼び出される条件節です。

例外が発生しそうな部分をbeginから始まるブロックで囲み、ブロックの内部にrescueを記述して使用します。

 

トランザクションとは、複数のレコードの更新を1つにまとめて行うことを指します。トランザクションを用いることで、「全て実行されるか、それとも全て実行されないか」という1か0の状況を作ることができます。

 

開始108日目〜超初心者、文系、30代のスタート〜 学んだこと追記1

一口にデータベースと言っても、いくつかの種類があります。以下にその種類を示します。

  • 階層型データベース
  • ネットワーク型データベース
  • リレーショナルデータベース

この中で最も利用されているのが、リレーショナルデータベースです。
エクセルの表のような形で情報を整理し、管理することができます。

 

リレーショナル・データ・ベース・マネジメント・システム(RDBMS)と呼ばれます。

そんなRDBMSの中でも代表的なものの一つが、MySQL

 

MySQLは、Oracle社が開発・提供をしているRDBMSです。データベースの作成、編集、削除などを行うことができます。オープンソースソフトウェアとして公開されており、誰でも無償で利用することができます。

Ruby on Railsと合わせ利用することができる。

 

Unicorn

全世界に公開されるサーバ上で良く利用されるアプリケーションサーバです。rails sコマンドの代わりにunicorn_railsコマンドで起動することができます。

 

tail コマンド

指定したファイルの最後の行を表示するコマンドです。-fオプションを追加することで、そのままリアルタイムに更新されるようになります。

tail -fコマンドによる表示を終了したい場合は、ctrl + cで中断できます。

 

 

開始108日目〜超初心者、文系、30代のスタート〜

本日学んだこと:

scss修正:

link_toの色を変える。

新たにclassを作る、SCSSで色を指定すれば完了。

 

link_toで作ったリンクの 下線部を消したい

→link_toにクラスを作って、SCSS text-decoration: none;を記載することで消去できる。

 

css 重ねる position relative absoluteの関係。

1対1で使うだけではない。

 

 

コマンドライン(Command Line):

普段クリックなどをしてコンピュータを操作をするのに対して、文字だけでコンピュータを操作するためのものです。

キーボードだけで操作する画面、入力行

コマンドを用いてコンピュータを操作する開発現場では必須のスキル。

 

UNIXコマンド:

主にLinuxmacOSで利用されるコマンドの一種

 

touchコマンド

touch ファイル名」と入力して実行することで、空のファイルを作成。

 

catコマンド

cat ファイル名」と入力することでファイルの中身を表示することができる。

 

mkdirコマンド

コマンドを用いて、新たにフォルダを作成する「mkdir ディレクトリ名」

 

 

明日やること:

テスト受講。 

 

感想:

chat-spaceの納品完了、無事達成した。

しかし、もう少し修正できそうなところがあったので、時間あるときに修正してみたいと思う。

今後やること

・確認テストの受講

もくもく会への参加

転職活動準備

・やってきたことの言語化

今後の流れ

2/1 最終課題説明会参加

Channel2週間前に招待される。

メルカリのあったら良いなという機能を考える。

課題に対して、俯瞰して見る、アプリで追加する。

個人アプリ作成

・自身のスキルを増やす

例)PythonAPIを使ってRuby

学んだ言語以外にもチャレンジしてみる。

色々な会社を受けることができる。

プロゲート、Udemyなどで学習。

 

これらを実施していくと同時に、筋トレを開始する。

その前に、喉を直す必要があるか。。。

開始93日目〜超初心者、文系、30代のスタート〜 学んだこと追記

URLを通じて世界のどこかにあるコンピューターに対して見たいページを要求(リクエスト)しているのです。リクエストを受け取ったコンピューターが、そのリクエストに応じたWebページを返すことで、Webページを見ることができます。

 

クライアントとサーバーについて:

1.クライアント側がサーバ側にリクエストを送る

2.サーバ側でリクエストを解析・処理してリクエストの答えを作る

3.サーバ側がクライアント側にレスポンス を返す

 

 デプロイ

デプロイ(deploy)とは配置する、展開するといった意味の英単語。

 

アプリケーションをデプロイする流れについて:

1.アプリケーションを開発する

2.アプリケーションをデプロイするためのサーバを用意する

3.実際にアプリケーションをデプロイする

 

AWSとはAmazon Web Servisesの略で、通販で有名なあの米Amazonが提供している クラウドコンピューティングサービス の総称。

Amazon EC2(仮想サーバ)、Amazon S3(クラウドストレージ)、Amazon RDS(データベース)など。

開始93日目〜超初心者、文系、30代のスタート〜

本日学んだこと:

自動更新がうまく行くと当然だがターミナルも自動で動く
@render~の部分テンプレートでまとめたにも関わらず、一つずつ同じ記述をすると、余計に情報を取得してしまい、自動更新の際、おかしくなってしまう。
jsonbuilderのファイル位置が違うだけで、データが機能しない。その為、どのファイルがどこにあるべきかもしっかりと確認する必要があると感じた。

IPアドレスについて:

サーバーとは、サービスを提供するコンピュータのことやそのコンピュータにある様々な機能(処理)の事

 

サーバーが必要な理由:

  • サーバーをバックアップとしてデータを保存しておけば、自身のパソコンが壊れた際にデータを復旧することができる。
  • 外部のクライアントと接続する機能をサーバーに任せることによって、自身のパソコンの負担を減らすことができる。
  • 上述の接続機能の例のように、サーバーと自身のパソコンで役割分担をすることによって、自身のパソコンでアプリケーションの開発に集中することができる。

 

役割:

  • 様々なデータを管理・保存をする(データベースサーバー)
  • パソコン同士の通信を行う(WEBサーバー)

 

IPアドレスとは、コンピュータやサーバーに設定された住所

 

現行:IPv4対策IPv6というバージョンへ移行中。

 

ドメインとは、IPアドレスを文字列に変換したもの。

IPアドレスを文字列化する仕組み」のことをDNSDomain Name Systemと呼ぶ。

 

digコマンドは、ドメインを管理しているサーバー(DNSサーバー)に問い合わせをしてドメインからIPアドレスを取得し表示するコマンド。

 

ポートとは、1つのサーバと複数のサーバをつなぐもの。

 

HTTPとはWEBページやページ内で必要なCSS, JavaScript、画像などのファイルをWEBサーバにリクエストするためのフォーマットのこと。

例)「http://~」あるいは「https://~」で始まるURLUniform Resource Locator/URIUniform Resource Identifier)という形式。

 

telnetコマンドは、離れたところにあるホスト(サーバやネットワーク機器)を手元の端末から遠隔操作するために、ネットワーク接続するコマンド。

 

ターミナルにて、dig tech-camp.in +noedns

;; ANSWER SECTION:のみ注目する。

 

レスポンスヘッドとはhtmlで学習していただいた「headタグ」と同じ。

 

HTTP/1.1 200 OK

これはレスポンスが成功した際に表示されるものです。

Content-Type

HTMLファイルに使用している文字コードを示しておき、文字化けや誤動作を回避するために書いてあります。

P3P

P3Pはサイト運営者が個人情報を保護しながら、ユーザーが自分の情報をどの程度Webサイトに提供するかをコントロールできるようにする技術仕様。

 

キャッシュについての参考URL

https://qiita.com/anchoor/items/2dc6ab8347c940ea4648

 

 

Linux (リナックス)について:

Linux (リナックス)は、コンピュータ用の OS(オペレーティングシステム)の一種

 

特徴:

  • オープンソースであり、誰でも自由に無償で利用できる
  • 品質の高い多くのソフトウェアが利用できる
  • 世界中でサーバ用途として広く利用されているため信頼性が高い
  • 操作を自動化するための仕組みが用意されており、サーバの運用が行いやすい

 

ディストリビューション

OSの中核である「カーネル」と様々なソフトウェアを組み合わせて動くようになります。

その作業は一般ユーザには難易度が高い為、カーネルと様々なソフトウェアを最初から組み合わせたものを配布したもの。

 

CentOSとは、「Red Hat Enterprise Linux」(RHEL)のソースコードを元に開発が進められている無償ディストリビューション

Ubuntu(ウブントゥ) とは、「初心者にやさしい」と言われるメジャーな無償ディストリビューション

 

ディストリビューションが異なると発生する違い

  • ディレクトリの構造が異なる
  • パッケージ・マネージャが異なる
  • 標準でインストールされているアプリケーションや自動で起動するプロセスが異なる
  • コマンドやその使い方が異なる

 

パッケージ・マネージャとは、コンピュータに何のソフトウェアがインストールされたかを記録し、新しいソフトウェアのインストール・新しいバージョンへのソフトウェアの更新・以前インストールしたソフトウェアの削除を容易に行えるようにするプログラムのこと。

iosでいう、「App Store」のようなもの。CentOSAmazon Linuxではyumというコマンドを利用する。

 

Linuxサーバに対して作業したい場合は、ターミナル等を用いてコマンドを利用します。その時にユーザーの入力したコマンドを解釈するソフトウェアのことを「シェル」と呼びます。

 

ディレクトリ:

コンピュータ上で複数のファイルを整理するためのフォルダのこと。

 

カレントディレクトリとは、ターミナルで現在作業中となるディレクトリのこと。

ディレクトリ(..)とはあるディレクトリに対して、階層構造において1つ上のディレクトリ。

ホームディレクトリは新規にターミナルを立ち上げた場合に作業中となるディレクトリです。~で表されます。Macでのデフォルトのホームディレクトリは/Users/ユーザ名となります。

 

ディレクトリは階層構造になっているので、あるディレクトリは他のディレクトリに属しています。その階層構造の一番上にあるディレクトリがルートディレクトリです。

 

mv:ファイルの移動およびリネームを行うコマンド

rm:ファイルを削除するコマンド

mkdir:Linuxで新規にディレクトリ(フォルダ)を作成するコマンド

touch:指定したファイルが存在しない場合は空のファイルを新規に作成してくれるコマンド

cat:ファイルの内容を結合し、表示するコマンド

tail:ファイルの終わり部分を表示するコマンド

vi:サーバ上で設定ファイル等を編集したい場合エディタが必要になります。

CentOSAmazon Linuxには標準でviというソフトウェアがインストールされているので、特に理由がない限りこれを利用。

 

 

サーバー設定に関して:

一般ユーザーとrootユーザーの主な違いは、ファイルに対して権限レベルの違いです。一般ユーザーは自分の許可されているファイルしか操作できません。root ユーザーには他のユーザーが所有するファイルも含めて、全ての制御権限があります。

 

sudo

sudoコマンドは、現在のユーザーのまま他のユーザーに成り代わってコマンドを実行することができます。

 

su

suコマンドは、他のユーザーにログインし直す事ができます。

 

パーミッションとは、ファイル、またはディレクトリに対して「誰にどのような操作を許可するのか」という権限を規定した情報のこと。

 

chownコマンドは、ファイルやディレクトリの所有者を変更するコマンド。

 

chmodコマンドは、アクセス権限を書き換えるためのコマンド。

 

パイプ処理とは、あるコマンドの結果を次のコマンドに渡す処理のこと。

 

grepコマンドは特定の文字列が含まれる一行を抽出するためのコマンド。

 

kill <...>

プロセスIDに対して特定のコマンドを実行することで、プロセスを再起動したり、強制終了したりできます。

 

 

明日やること:

AWSの章を読み込み進める。

 

感想:

一つ壁を超えた気がするが、まだ自力では解決できるレベルが低い。

今後に向けて、しっかりと復習することはもちろん、自己紹介ページを作って最終課題に望めるように準備を進めたい

開始92日目〜超初心者、文系、30代のスタート〜

本日学んだこと:

 

this  function を呼んだ時の . の前についているオブジェクトを指している

.が無い場合、グローバルオブジェクト、ブラウザでは Window オブジェクトになる。

 

$(this).parent().remove()

取得した親要素を削除する。

この場合のthisはクリックしたユーザー名の取得、id名の取得をしている。

 

非同期通信の場合、投稿者以外のユーザーは

・リアルタイムでデータは反映しない

・サーバーにはデータが保存されているので、リロードすれば反映する

その為、リアルタイムで更新されるようにする為、自動更新は必要

例)LINEなど自動でメッセージがブラウザに反映されるようになること。

 

自動更新に必要となる機能

①何秒かおきに、JavaScriptを使ってブラウザに表示されているメッセージのうち最も新しいもののidをリクエストとして送る

Railsのコントローラのアクションにてデータベースに保存されている最新のメッセージのidと①のidを比較し、①のidよりも大きいidを持つメッセージたちをレスポンスする

JavaScriptを使って、レスポンスに含まれるメッセージたちをメッセージ一覧の最後に追加する

 

WebAPI

APIは、Application Programming Interfaceの略称で、アプリケーション開発者が外部に向けてアプリケーションの機能の一部を公開する仕組み

例えばTwitterAPIを使用すれば、Twitterアプリを使うことなくつぶやきの情報を取得するなどの機能を使うことができます。

 

WebAPIは、HTTPHTTPS通信を通じて利用するAPIのこと。

返ってくるデータ形式JSONが使われる。

 

Rubyのクラス名は、このように::で繋げて装飾することができます。これを、名前空間またはnamespaceといいます。

プログラムがクラスを判別する際はどのディレクトリに入っているかでの判別はできないため、名前空間を利用するルールになっています。こうすることで、Railsは間違えることなく2つのコントローラを区別するようプログラムされています。

 

書き方:namespace :ディレクトリ名 do ~ end

 

例)山田さんが2人以上いる場合。

  総務部の山田さん、経理部の山田さん、1つに特定できる。

 

$('.message:last')

jQueryのオブジェクトの指定方法の1つに、:lastがあります。今回の場合は.messageというクラスがつけられた全てのノードのうち一番最後のノードという意味。

 

setInterval()関数

第一引数に動かしたい関数名を、第二引数に動かす間隔をミリ秒単位で渡すことができます。
今回は、reloadMessages関数を数秒おきに呼び出します。

 

明日やること:

 自動更新機能のコード完成。

できるかぎりカリキュラムを進める。

 

今後に向けて:

・過去に予約したことのある飲食店まとめ、お気に入り機能付き様々なまとめサイト

 

・自己紹介ポートフォリオ(HTMLCSS)

 

 

知識よりもポテンシャル

どうしてやりきったのかを言葉で表現できるようにすることが大事。

 

61期開発にも合流できる可能性もある。

62期で個人アプリ開発に注力。

 

・自己紹介、パズルゲームなど

簡単なものを一旦作ってみるのも一つの手段。

 

感想:

今後に関して、技術も大事だがポテンシャルが大事ということもはっきりした。

なので、できる限り自分でできることをやりきること、そして自己紹介ポートフォリオは作ってみることに決めた。

早く終われば、前倒しで開発チームに関われることも知った。

そこを目指すのもありかもしれない。

年内は明日が最後、LGTMをもらって年内は終えよう!

開始91日目〜超初心者、文系、30代のスタート〜

本日学んだこと:

this は function を呼んだ時の . の前についているオブジェクトを指している

.が無い場合、グローバルオブジェクト、ブラウザでは Window オブジェクトになる。

$(this).parent().remove()

→取得した親要素を削除する。

→この場合のthisはクリックしたユーザー名の取得、id名の取得をしている。

 

明日やること:

インクリメンタルサーチ速攻で終わらす、自動更新も完了させる。

 

感想:

Githubを適時更新してなかったが為に、数日かけて作ったファイルがなくなった。‬
‪メンターにも探してもらったがファイルが完全に無くなっていた。ただでさえ学習が遅れているのに、また何日もかけるのかと思うと辛い。。。‬