ドットインストールで学習 のメモが文字数が多すぎて保存しきれなかったので、
こちらに残しておく
◆ 詳解PHP ビルトイン関数編
詳解PHP ビルトイン関数編 (全32回) - プログラミングならドットインストール
2020/12/22 - 2020/12/29
#01 - #32
配列から重複を取り除く array_unique([1, 1, 4, 4, 2]);
マッチした検索結果をすべて取得 preg_match_all($pattern, $input, $matches);
配列の先頭に要素を追加 array_unshift($scores, 10, 20);
配列の末尾に要素を追加 array_push($scores, 60, 70);
配列の一部を切り出し $partial = array_slice($scores, 2, 3);
配列の一部を削除 array_splice($scores, 2, 3);
配列に要素を追加・削除 array_splice($scores, 2, 0, [100, 101]);
配列のソート sort($scores);
配列のシャッフル shuffle($scores);
配列のキーをランダムに取り出す $picked = array_rand($scores, 2); echo $scores[$picked[0]] . PHP_EOL; echo $scores[$picked[1]] . PHP_EOL;
配列に対して一括で変更
$prices = [100, 200, 300];
$newPrices = array_map(
// function ($n) { return $n * 1.1; },
fn($n) => $n * 1.1,
$prices
);
配列からキーの取得 $keys = array_keys($scores);
配列から値の取得 $values = array_values*1;
配列にキーが存在するか確認 array_key_exists('taguchi', $scores) === true) {
配列に値が存在するか確認 in_array(80, $scores) === true) {
配列内に指定した値があるか検索してキー取得 array_search(70, $scores)
配列の値でソート asort($scores); arsort($scores);
配列のキーでソート ksort($scores); krsort($scores);
多次元配列のソート
$scores = array_column($data, 'score');
$names = array_column($data, 'name');
array_multisort(
$scores, SORT_DESC, SORT_NUMERIC,
$names, SORT_DESC, SORT_STRING,
$data
);
fopenを使わずにfileに書き込み
file_put_contents('names.txt', $contents); file_get_contents('names.txt');
配列でfileから取得 file('names.txt', FILE_IGNORE_NEW_LINES);
1日後のUNIX TIME strtotime('2020-05-07 +1 day')
◆ jQuery入門
【サポート終了】 jQuery入門 (全20回) - プログラミングならドットインストール
2020/12/29 - 2020/12/29
#01 - #20
$(document).ready(function() { は $(function() { に省略できる
直下の子要素のみ指定 $("#main > .item").css('color', 'red');
下の子要素すべて $("#main .item").css('color', 'red');
itemの隣にあるitemのみ $(".item + .item").css('color', 'red');
フィルタ
一致するものの2番目のみ $("#sub > li:eq(2)").css('color', 'red');
より大きい $("#sub > li:gt(1)").css('color', 'red');
奇数のみ $("#sub > li:odd").css('color', 'red');
値に含むもの $("#sub > li:contains('4')").css('color', 'red');
DOM要素の指定
対象の子要素を指定 $("#sub").children().css('color', 'red');
対象の次の要素を指定 $("#sub > li:eq(2)").prev().css('color', 'red');
同列の兄弟要素 $("#sub > li:eq(2)").siblings().css('color', 'red');
属性のセレクタ
googleと一致 $('a[href="http://google.com"]').css('background', 'red');
を含む *=
先頭から始まる ^=
末尾が対象のもの $=
値の取得 console.log($('p').css('color'));
既存クラスをタグに付与 $('p').addClass('myStyle');
属性の取得 console.log($('a').attr('href'));
属性の変更 $('a').attr('href', 'http://google.co.jp');
dataの取得
<a href="http://google.com" data-xxxxx="google">google</a>
console.log($('a').data('xxxxx'));
テキストの変更 $('p').text('just changed');
HTMLに変更 $('p').html('<a href="">click me!</a>');
要素の中を消す $('p').empty();
要素自体を消す $('p').remove();
要素の追加 var li = $('<li>').text('just added'); $('ul > li:eq(1)').before(li);
末尾に追加 $('ul').append(li);
コールバック関数 処理後に実行
$('#box').fadeOut(800, function() {
alert("gone!");
});
クリックでアラート
$('#box').click(function() {
alert("hi!");
});
$('#box')
マウスオーバーで色変更
.mouseover(function() {
$(this).css('background', 'green');
})
マウスアウトで色変更
.mouseout(function() {
$(this).css('background', 'red');
})
マウスを動かすとX座標を表示
.mousemove(function(e) {
$(this).text(e.pageX);
});
$('#name')
マウスが要素に当たると
.focus(function() {
$(this).css('background', 'red');
})
マウスが要素から外れると
.blur(function() {
$(this).css('background', 'white');
});
値が変わると
$('#members').change(function() {
alert('changed!');
});
読み込み後に追加した要素に対して操作
$('button').click(function() {
var p = $('<p>').text('vanish!').addClass('vanish');
$(this).before(p);
});
$('body').on('click', '.vanish', function() {
$(this).remove();
});
もっと読み込むボタン
<button>もっと読む</button>
<div id="result"></div>
$(function() {
$('button').click(function() {
$('#result').load('more.html');
});
});
ajaxは非同期
処理が終わる前に次の処理をする
コールバック関数で処理を追加すれば、読み込んだ対象に対して処理が可能
$(function() {
$('button').click(function() {
$('#result').load('more.html', function() {
$('#message').css('color', 'red');
});
});
});
jqueryでget取得
<input type="text" name="name" id="name">
<input type="button" id="greet" value="Greet!">
<div id="result"></div>
$('#greet').click(function() {
$.get('greet.php', {
name: $('#name').val()
}, function(data) {
$('#result').html(data.message + '(' + data.length + ')');
});
});
greet.php
$rs = array(
"message" => htmlspecialchars("hi! " . $_GET['name'], ENT_QUOTES, "utf-8"),
"length" => strlen($_GET['name'])
);
header('Content-Type: application/json; charset=utf-8');
echo json_encode($rs);
◆ Node.js
Node.js入門 (全16回) - プログラミングならドットインストール
2020/12/29 - 2020/12/30
#01 - #16
スレッドモデル 処理ごとに新規でスレッドを立ち上げるモデル
イベントループ キューにリクエストを溜めて行き、イベントループでずっと高速に処理継続
node.jsはイベントループ式
処理をブロックするやり方はNG、whileとか
一つの処理が止まると全部止まる
コールバック関数を使いノンブロッキングで作成する
npm ノードパッケージマネージャ
server.jsで処理を行い、hello.ejsでHTMLを表示
エスケープする場合 <%= title %>
エスケープしない場合 <%- content %>
node.js ってつまりは、サーバー側で使えるJavascriptってことか。
◆ TypeScript入門
TypeScript入門 (全19回) - プログラミングならドットインストール
2020/12/30 - 2020/12/30
#01 - #19
Javascriptの拡張版
ts拡張子のタイプスクリプトファイルをコンパイルすることで、jsファイルが出来る。
それをnode.jsで実行する。
public name: string;
constructor(name: string) {
this.name = name;
}
上記の省略が以下
constructor(public name: string) {
}
アクセス修飾子
private => Class内でのみ使用可能
protected => 継承している(extendsしている)クラスでも使用可能
interfaceで宣言して、classにimplementsで埋め込む
interface内のプロパティをclass内で利用必須とできる
◆ Java 8入門
Java 8入門 (全43回) - プログラミングならドットインストール
2020/12/30 - 2020/12/31
#01- #43
型の宣言
String msg = "Hello World Again!";
文字列はダブルクォーテーション Hello World
文字はシングルクォーテーション a
コンパイル javac MyApp.java
出来るファイル MyApp.class
実行コマンド java MyApp
キャストする = データ型を変換すること
staticメソッド:インスタンスを生成しなくても呼び出せるメソッド
static変数:インスタンス化の影響を受けない変数
配列番号のこと => 添え字、インデックスと呼ぶ
配列の宣言から代入まで一気にやる方法 int sales = {100, 200, 300};
基本データ型(プリミティブ型) int , float , char 領域に対して具体的な値が入る
参照型 String , Array , Class 宣言した時点で領域には番地だけが入る
String型のみ基本データ型のように動く(番地の領域に、番地を入れた場合に、新たな領域を確保)
メソッド
public static void sayHi(String name) {
public static String sayHi(String name) {
sayHi("Steve"); ← 引数
引数の数や型が違えば、同じ名前のメソッドを作ることが出来る → メソッドのオーバーロードと呼ぶ
Classの中にメソッド
クラスに属する変数をフィールドと呼ぶ
newすることをインスタンス化するという
コンストラクタ => クラスがインスタンス化される時に必ず呼ばれるメソッド
継承元のクラス => 親クラス、スーパークラス
継承したクラス => 子クラス、サブクラス
パッケージ化
アクセス修飾子(public , private , protected)で制限できるようになる
冒頭で宣言が必要
package com.dotinstall.myapp;
import com.dotinstall.myapp.model.User;
インポートで他のパッケージのクラスを読み込める
getter ゲッター getする用のメソッド
setter セッター setする用のメソッド
staticを付けたフィールドやメソッドは、クラスに属しているという意味でクラス変数や、クラスメソッドと呼ぶ。
クラスが使われる際に必ず行われるconstructorのようなもの => staticイニシャライザ
static {
User.count = 0;
System.out.println("Static initializer");
}
インスタンスイニシャライザ => インスタンス化される前に実行される
{
System.out.println("Instance initializer");
}
public User(String name) {
this.name = name;
User.count++;
System.out.println("Constructor");
}
final修飾子 変更できない宣言
変数は定数にできる
メソッドはオーバーライドできなくなる
// 抽象クラス -> 具象クラス
abstract class User {
public abstract void sayHi(); // 抽象メソッド
}
class JapaneseUser extends User {
@Override
public void sayHi() {
System.out.println("こんにちは!");
}
}
インターフェース
interface Printable {
// 定数
double VERSION = 1.2;
// 抽象メソッド
void print();
// defaultメソッド
public default void getInfo() {
System.out.println("I/F ver. " + Printable.VERSION);
}
}
あらかじめ、デフォルト設定のようなものを指定しておく
使う時はimplements
class User implements Printable {
@Override
public void print() {
System.out.println("Now printing user profile...");
}
}
列挙型
定数として利用できる
enum Result {
SUCCESS, // 0
ERROR, // 1
}
public class MyApp {
public static void main(String args) {
Result res;
res = Result.ERROR;
例外処理
class MyException extends Exception {
public MyException(String s) {
super(s);
}
}
public class MyApp {
public static void div(int a, int b) {
try {
if (b < 0) {
throw new MyException("not minus!");
}
System.out.println(a / b);
} catch (ArithmeticException e) {
System.err.println(e.getMessage());
} catch (MyException e) {
System.err.println(e.getMessage());
} finally {
System.out.println(" -- end -- ");
}
}
public static void main(String[] args) {
div(3, 0);
div(5, -2);
}
}
ラッパークラス
必要性の意味がわからない
int じゃなくて、Integerを使う意味
格納している領域の場所を指し示していること理由っぽいけど、よくわからない
型を無視、どんな型でもいけるようにする
class MyData<T> {
public void getThree(T x) {
スレッドで並行処理が可能
Thread t = new Thread(r);
// ラムダ式
// (引数) -> {処理}
乱数
import java.util.Random;
Random r = new Random(); クラスからインスタンス化
System.out.println(r.nextDouble()); メソッドを呼び出し
System.out.println(r.nextInt(100));
Javaは基本は、クラスを作って、
使う時はそれを呼び出してインスタンス化して、
そのインスタンス(元はクラス)の中のメソッドを実行して処理をする
◆◆◆◆ 学習期間 ◆◆◆◆◆
2020/11/07 - 2020/12/31
累計 15日間
学習時間は80時間くらいかな。
39レッスン
1レッスンあたり20件の動画があるとすると、
20 × 39 = 780動画
780 × 3分 = 2340分(39時間)
*1:$scores