「演算子」を含む日記 RSS

はてなキーワード: 演算子とは

2018-10-24

群論

群論教科書数学所のコーナーから何気なく手をとった。あとでこれは全くの無駄(不効率)だと分かった。

群にも色々あり、馴染んでいるのは回転群とか並進群とかだけど、純粋群論カバー範囲もっと広い。加法群とかまである

目標を不変にする群って具体的な形は何?行列で表されないのか?

基底の対象化についてはなんとなく光明が見えてきた。射影だ!!!!!しかし射影演算子公式に具体的に何を代入して射影すればいいのか分からない

2018-10-20

増田プログラマー養成講座 その8 OOPの仕組み(後半)

前回に続いて、今回もオブジェクト指向プログラミングOOP)の基本的な仕組みを見ていこう。

 

教材は、ドットインストールPHP入門です。

OOP関係してる#18から#24までのうち、後半の#22から#24までを一緒に見てみよう!

 

#22 staticキーワードを使ってみよう

動画でこんな用語が出て来た。

 

 

static

クラスベースOOPオブジェクトを使う場合普通は「クラスからインスタンスオブジェクトの具体的な実体)を作ってから使う」と説明した。

実は、newでいちいちインスタンスを作らなくても、クラスメンバープロパティーやメソッド)を直接呼び出して使える仕組みも用意されている。

それが「static」(静的)という仕組みだ。

 

「静的」(static)という言葉は、「動的」(dynamic)の対義語になっている。

newでインスタンスポンポン作っていくのが「動的」なら、new無しでコッソリとメンバーを呼び出すのが「静的」というかんじ?

 

PHPでは、インスタンスを作らなくても、直接(静的に)呼び出せるメンバーには「static」という目印を付けておく、という文法になってる。

さらに、

 

それではstaticなメンバーを入れたクラス定義してみよう。

class User {

 // プロパティー:インスタンス変数(staticなし。newした後じゃないと使えない)

 public $name;

 // プロパティー:静的変数(staticあり。newなしでいきなり使える)

 public static $count;

}

 

文法的には「static」という印を付けるか、付けないかの違いしかない。簡単だ!

次は、staticなメンバーの呼び出し方を見てみよう。

 

::演算子

ちょっと待った!「演算子」という言葉は初めて出てきたね?意味確認しておこう。

1+2は3になる等、対象(1とか2とかの数値データ)を操作(=演算)して、3という結果を得られる。

 

「::」はスコープ定義演算子とか、ダブルコロンと呼ばれている。PHPマニュアルでは以下のように説明されている。

static, 定数 およびオーバーライドされたクラスプロパティメソッドアクセスすることができます

静的メンバーを呼び出す専用の記号として「::」という演算子記号)が用意されている、というわけだ。

まり、「::」という演算子を使うことで、静的メンバー操作できる。

 

それでは、「::」を使って、静的メンバーを呼び出してみよう。

class User {

 // プロパティー:インスタンス変数(staticなし。newした後じゃないと使えない)

 public $name;

 // プロパティー:静的変数(staticあり。newなしでいきなり使える)

 public static $count;

}

 

// new無しでいきなり使える!

User::$count = 1; // 1を代入する。

echo User::$count; // 1と表示される。

 

実験で以下のコードも追加してみよう。

// staticが付いてないインスタンス変数(new無しで使えない)を呼び出す。(本来は呼び出せない)

User::$name = "yamada";

echo User::$name;

実行すると

PHP Fatal error: Uncaught Error: Access to undeclared static property: User::$name

というエラーメッセージが表示された。

「staticなプロパティーとして定義されてないから、アクセスできないよ!」と怒られた~~~(涙)

staticじゃないメンバーには、ちゃんとnewしてインスタンスを作ってからアクセスしないと、使えないんですね。(面倒)

 

キーワード「self」

オブジェクトメンバープロパティー、メソッド)に、オブジェクトの中のメンバーアクセスするとき

という使い分けになってる。単にこれはPHP文法なので、特に悩む余地はない。

 

this=インスタンスメンバー操作する場合

class User {

 // 普通プロパティー:インスタンス変数(staticなし。newした後じゃないと使えない)

 public $name; // ←この$nameをこの下にあるをhello()から使いたい

 // 普通メソッド

 public function hello() {

  echo "Hello, " . $this->name; // this->で指定する

 }

}

$taro = new User;

$taro->name = "Yamada Taro";

$taro->hello(); // Hello, Yamada Taro

「this」が自分自身オブジェクトを指し示す。

$this->nameで、オブジェクト(この場合インスタンス)内の$nameアクセスできる。

 

self=クラスの静的メンバー操作する場合

class User {

 // staticなプロパティー:静的変数(staticあり。newなしでいきなり使える)

 public static $name; // ←この$nameをこの下にあるをhello()から使いたい

 // staticなメソッド

 public static function hello() {

  echo "Hello, " . self::$name; // self::で指定する

 }

}

// new無しでいきなり使える!

User::$name = "Suzuki Hanako";

User::hello(); // Hello, Suzuki Hanako

「self」が自分自身オブジェクトを指し示す。

self::$nameで、オブジェクト(この場合クラス)内の静的な(staticな)$nameアクセスできる。

言ってる意味、分かる?(説明が分かりにくい?)

 

スコープとは?

「this」とか「self」とか、いちいち使い分けていて面倒くさいなーと思うだろう。

なんでこんなことをやってるか?というと「スコープ」という仕組みが関係してる。

ドットインストールPHP入門でも、#16でちょっとスコープについて説明してあった。

PHPスコープの種類は3種類しかありません

  1. ローカルスコープ
  2. グローバルスコープ
  3. スーパーグローバル

 

スコープ有効範囲

スコープ」(scope, 可視範囲)は、元々は潜水艦に付いてる望遠鏡(潜望鏡)のこと。

プログラミングでは、あるデータ変数とか)がどこまで見えるか、覗けるか、という範囲のことを「スコープ」と呼んでる。

変数関数がどの範囲まで有効なのか、使えるのかは、その変数関数スコープで決まっている。

Wikipediaで「スコープ」の説明を見ると、ゴチャゴチャ書いてあるけど、要するにスコープには、広い範囲や狭い範囲があるってこと。

 

thisやselfをわざわざ使い分けているのは、範囲を指し示すときに、

それとも

という場所の違いをハッキリと区別するためなんだ。

 

クラスオブジェクト設計図)を眺めたときに、

thisを使ってたら、「ああ、newしてインスタンスを作らないと使えないんだな」と分かる。(インスタンスの中の話)

staticとselfを使ってたら、「newしないで、静的に使えってことだな」と分かる。(クラスの中の話)

 

太郎の$nameとか、花子の$nameとか、インスタンス場合は、各インスタンスメンバーは、明確に分かれていて、両者が混ざることはない=別々のスコープになってる。

クラスの静的メンバーは、そのクラスに1個しかないので、そのクラスをnewしないで(インスタンス無しで直接呼出しときは)、いろんなところから呼び出されても、共通の中身になってしまう=スコープが1個、同じスコープになってる。

 

インスタンス変数クラスの静的変数は別物なので、thisとselfで使い分けてる、というわけだな!

 

ここまで読むと「staticって面倒くさいやつだな!なくてもいいじゃん!」と思っただろう。その通り!

staticは使わなくて済むなら、なるべく使わない方がいい。

「static 欠点」で検索してもらえば、staticを使った場合問題点が紹介されている。

どうしてもstaticじゃないと実現できないこと、staticの方が便利な場合だけ、staticを使うようにしよう。

 

(参考)PHPのstaticの使い方

 

#23 抽象クラスを使ってみよう

動画でこんな用語が出て来た。

 

 

抽象クラス

これはドットインストール説明そのままでOKですね。

 

具象クラス(今まで勉強してきた普通クラス)だけではなく、「抽象クラス」という特殊クラスを作る仕組みも用意されている。

抽象クラスは、継承してその子クラスを作るとき、「必ずこのメソッド自分で作れよ!」などと強制できる。

まりクラスの利用方法継承とか)について、プログラマーに指示を出せる働きがある。

 

抽象クラスの特徴として、具象クラス(通常のクラス)との違いを挙げます

 

1. 抽象メソッド定義する事ができる。

抽象メソッドとは、実際の処理を自身にではなく子クラス記述させるためのメソッドです。

この抽象メソッド記述できることが、抽象クラスの最大の特徴です。

抽象クラス継承したクラスは、この抽象メソッドを必ず「オーバーライド」しなければなりません。(オーバーライドしないとコンパイルエラーとなります。)

 

2. 抽象クラス単体でインスタンスを生成する事はできません。

抽象メソッド定義している。

まり、実際の処理を記述していない訳ですから当然インスタンスを生成して使用する事は出来ません。

JavaPHPも同じですね。

 

#24 インターフェースを使ってみよう

OOP継承には、「単一継承」と「多重継承」という種類がある。

普通は、「単一継承」といって、親クラスからクラス継承して作るとき、親クラスは1個だけしか指定できない。(1:1)

クラスA、クラスB、クラスCの3つを親クラスとして、クラスZという子クラス継承して作る仕組みは、「多重継承」という。多重継承可能場合、子クラス複数の親クラスを持てる。(多:1)

 

PHPJavaでは、多重継承ができない代わりに、「インターフェース」という仕組みが用意されている。

インターフェースを使うと、多重継承と似たようなことができる。

 

↑ここにクラスインターフェースの相違点がまとめられてたので、参考にしてみてください。

 

インターフェースの使い方、文法を見ておきましょう。

  • class」の代わりに「interface」を使う。
  • 「extends」の代わりに「implements」を使う。
  • 継承する」という代わりに「実装する」という言い方をする。

interface sayHi {

 public function sayHi();

}

interface sayHello {

 public function sayHello();

}

class User implements sayHi, sayHello {

 public function sayHi() {

  echo "hi!";

 }

 public function sayHello() {

  echo "hello!";

 }

}

$taro = new User; // コンストラクターに渡す初期データがない場合「new User();」みたいに「()」を付けなくてもOK

$taro->sayHi(); // hi!

$taro->sayHello(); // hello!

 

PHPOOP機能

#22から#24までを見て、PHPOOP基本的な仕組み~使える機能について見てきました。

PHPには、他にもいろんなOOPで使える機能が用意されています

 

その他のOOP機能

Javaなど他のプログラム言語には、PHPにはないOOP機能も用意されています

オブジェクトを利用するときの仕組みとして、いろんな方法が考えられてます

 

使う機会があれば調べてみましょう。

 

ここまでで、やっとOOP基本的な仕組み、用意されている機能テクニックを学びました。

次回は、なぜこんなOOPの仕組みが考え出されたのか?どうやってOOP活用していくのか?を見ていきましょう。

 


anond:20181015215004 未経験からプログラマーなんだが全然からない

anond:20181016015826 増田プログラマー養成講座 その1 パソコンの用意

anond:20181016164341 増田プログラマー養成講座 その2 プログラムデータ+処理、プログラム言語の種類

anond:20181016180059 増田プログラマー養成講座 その3 構造プログラミングの基本(順次、反復、分岐

anond:20181016193144 増田プログラマー養成講座 その4 子ども向け教材「Scratch」で構造プログラミング練習

anond:20181017161003 増田プログラマー養成講座 その5 オブジェクトとは何か?

anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備

anond:20181019181549 増田プログラマー養成講座 その7 OOPの仕組み(前半)

anond:20181020230044 増田プログラマー養成講座 その8 OOPの仕組み(後半) ←★今ここ★

anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう

anond:20181023184616 増田プログラマー養成講座 その10 OOP参考書

anond:20181024214737 増田プログラマー養成講座 コンテンツ一覧

2018-10-19

増田プログラマー養成講座 その7 OOPの仕組み(前半)

前回は「オブジェクトとは何か?」を説明した。

今回はオブジェクトの使い方=オブジェクト指向プログラミングOOP)で用意されている仕組みを見てみよう。

とりあえずPHPで仕組みを学習してみよう。(PHPJavaより簡単なので理解やすい)

OOPでは用語概念がたくさん出てくるので、まずは用語意味を押さえよう。(英単語ばっかだね。日本語にして欲しいね。)

 

注意点:文字化けエスケープ)について (修正済)

以下の説明で、半角文字の「>」(不等号の記号)が「>」という表示に変わってしまっている。

「->」となってるところは「->」(>は本来は半角文字)なので、読み替えてください。

 

ドットインストールPHP入門でOOP学習

 

元増田は、もう一通り全部見てくれたかな?

OK、それじゃOOP関係してる#18から#24を一緒に見てみよう!

 

#18 クラスインスタンス理解しよう

動画でこんな用語が出て来た。

 

 

クラスとは?=オブジェクト定義

クラスベースOOPJavaPHPなど)は、オブジェクトを作るときに、「クラス」という仕組みで用意する。

プロトタイプベースOOPJavaScriptでは、「プロトタイプ」という仕組みで用意できる。=別の機会に使ってみよう)

 

クラスベースOOPで「オブジェクト」と言った場合クラスインスタンスの両方を指し示すことができる。

 

 

クラスメンバー

クラスには「プロパティー」(データ)と「メソッド」(処理)を入れられる。

も作れる。

クラスの中に入っている「プロパティー」や「メソッド」のことをまとめて「メンバー」と呼ぶ。

からメンバーってのは、クラス構成員だね。プロパティーやメソッドメンバーになれる。

 

// クラスオブジェクト設計図オブジェクトデータと処理をまとめて入れられる箱。

class クラス名 {

 // プロパティー(データ)の部分

 public $name = ''; // 名前 // ※「public」の使い方は後で説明

 public $age = ''; // 年齢

 // メソッド(処理)の部分

 public function get_name() { // 名前を取得する

  return $this->name; // ※「this」の使い方は後で説明

 }

 public function set_name($new_name) { // 名前を設定する

  $this->name = $new_name;

 }

}

 

コンストラクター

コンストラクター」は特別メソッドで、クラスからインスタンスが作られるときに、自動的に呼び出される。

コンストラクターを使えば、インスタンスを作るとき自動的に実行しておきたい処理(下準備=初期化とか)をやらせられる。

class User {

 // プロパティー(データ)の部分

 public $name = '';

 public $age = '';

 // コンストラクタークラスからインスタンスを作る(new)とき自動的に実行される特別メソッド

 public function __construct($name, $age) { // PHPコンストラクター名は「__construct」と書く。

  $this->name = $name;

  $this->age = $age;

 }

 // メソッド(処理)の部分

 public function get_name() {

  return $this->name;

 }

 public function set_name($new_name) {

  $this->name = $new_name;

 }

}

 

デストラクター

説明には出てこなかったけど、コンストラクターと反対に、デストラクターという仕組みもある。

 

インスタンス

インスタンスクラスオブジェクト設計図から作ったオブジェクトの(具体的な)実体のこと。

インスタンスは「new」で作る。

$taro = new User('taro', 20); // name='taro', age=20コンストラクターでセットしたい。

これで「太郎」(顧客の1人)という具体的なインスタンスが、User利用者クラスから作られた。

太郎($taro)というインスタンスを作った後は、これで太郎に関するいろいろな操作ができるようになる。

 

アロー演算子

インスタンス太郎」の中にあるメンバープロパティーやメソッド)を使いたい場合アロー演算子「->」(矢印)で指定する。

 

echo $taro->name; // 太郎nameを表示せよ

$taro->name = 'yamada taro'; // 太郎nameを「yamada taro」にせよ

$taro->set_name('タロウ'); // 太郎のset_nameメソッドで「タロウ」という名前を設定せよ

等という操作ができる。

 

レシーバー

OOP用語で、

$taro->set_name('タロウ');

この「$taro」の部分=「->」の前の部分を「レシーバー」と呼びます

後で「this」とか「self」というOOPで使う汎用的なレシーバーが登場するので、記憶の片隅に「レシーバー」という言葉を覚えておいてください。

 

#20 クラス継承してみよう | PHP入門

動画でこんな用語が出て来た。

 

 

extends(継承

OOPでは、あるクラスオブジェクト設計図から、別のクラスを作りだすことができる。これを「継承」と言う。

 

// 元にするクラス

class User {

 // プロパティ

 public $name;

 public $age;

 // メソッド

 public function hello() {

  echo "Hello, " . $this->name;

 }

}

// 継承して新しく作るクラス

class Special_user extends User {

 // プロパティ

 public $point; // 特別会員のポイント

 // メソッド

 public function your_point() {

  echo "あなたポイントは".$this->point."点集まりました。";

 }

}

 

上記の例だと、基になった「User」が親クラスUser継承して新たに作った「Special_user」が子クラスとなる。

 

オーバーライド

オーバーライドとは「上書き」という意味

継承して新しい子クラスを作るとき、親クラスにあるメソッド機能を一部改造したい場合がある。そんなときは上書きして、中身を入れ替えることができる。

オーバーライド簡単で、単に同じ名前メソッドを用意すればいいだけ。新たに用意したメソッドで中身が上書きされる。

 

// 元にするクラス

class User {

 // プロパティ

 public $name;

 public $age;

 // メソッド

 public function hello() {

  echo "Hello, " . $this->name;

 }

}

// 継承して新しく作るクラス

class Special_user extends User {

 // プロパティ

 public $point; // 特別会員のポイント

 // メソッド

 public function your_point() {

  echo "あなたポイントは".$this->point."点集まりました。";

 }

 // 親クラスにあったメソッドと同名のメソッドを用意すれば、上書きして中身を変更できる。

 public function hello() {

  echo "こんにちは、".$this->name."様";

 }

}

 

final

オーバーライドして中身を変更されてしまうと困るメソッドがあった場合オーバーライドできないように設定しておくこともできる。

その場合は、メソッド名の前に「final」と書いておけば、最終的な決定形となり、オーバーライドで中身を変更できなくなる。

その他、finalの使い方はマニュアルも参考にしてください。

 

#21 アクセス権について理解しよう

OOPでは「カプセル化」といって、オブジェクトの中にあるメンバープロパティーやメソッド)を外から見えない(操作できない)ようにすることができる。

 

隣の家の窓を想像して欲しい。

カーテンによって、3段階で覗けるようになっている。これと同様のことがオブジェクトメンバーにも設定できる。

 

メンバーアクセス権を設定してやれば、オブジェクトの外からの見え方を設定できる。

 

大雑把に言えば、オブジェクトカプセル化プロパティー(オブジェクトの「状態」)は見えなくして、メソッドオブジェクトの「操作」)は見えるようにしてやれば、だいたいうまく使えます

これは「副作用(予期せぬ変化)の隠蔽化」といって、「オブジェクトの中身を外部から守る」という考え方です。

アクセサー」(ゲッターセッター)という「オブジェクト操作用のメソッド」を用意してあげて、中身の操作制限を加える方法があります

 

区切り

まずは、ここまでの内容をドットインストールサンプルコードなどを実際に動かしてみて、仕組みをよく理解するようにしてください。

#22から#24は、今の段階では「こんな機能も用意されているのか。へー」ぐらいでもOKだと思います

 

多分、素朴な疑問として、「OOPのために、こんな仕組みが用意されているのは分かったけど、何が便利なんだろ?」と訝しく見えるだろうと思います

OOP基本的文法機能を知った後、実際にOOPを使ってみる演習をやってみれば、使いどころや便利さが分かるようになると思います

次回は、残りの#22から#24までの説明を見てみましょう。

 


anond:20181015215004 未経験からプログラマーなんだが全然からない

anond:20181016015826 増田プログラマー養成講座 その1 パソコンの用意

anond:20181016164341 増田プログラマー養成講座 その2 プログラムデータ+処理、プログラム言語の種類

anond:20181016180059 増田プログラマー養成講座 その3 構造プログラミングの基本(順次、反復、分岐

anond:20181016193144 増田プログラマー養成講座 その4 子ども向け教材「Scratch」で構造プログラミング練習

anond:20181017161003 増田プログラマー養成講座 その5 オブジェクトとは何か?

anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備

anond:20181019181549 増田プログラマー養成講座 その7 OOPの仕組み(前半) ←★今ここ★

anond:20181020230044 増田プログラマー養成講座 その8 OOPの仕組み(後半)

anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう

anond:20181023184616 増田プログラマー養成講座 その10 OOP参考書

anond:20181024214737 増田プログラマー養成講座 コンテンツ一覧

2018-09-19

AI人生を賭ける人たちは何を夢見ているか

ネタ元:

なぜ日本人工知能研究世界に勝てないか 東大松尾豊さんが語る“根本的な原因”

http://www.itmedia.co.jp/news/articles/1809/18/news011.html

 

結論から言うと、私はそこまで悲観してない。ビジネスとして非常に厳しい状況にあるのは確かだが、研究領域としてはアメリカ中国もまだ入り口に立ったに過ぎない。

 

AIの話をする前に、今のコンピュータの話を少ししておこう。皆さんの目の前にあるパソコンとかスマホの話だ。

これらに入っているCPUとかメモリとかは、究極的にはたった "NANDゲート" という立った1種類のゲートの組み合わせで表現可能だという事を聞いた事がある人は多いだろう。この NANDゲートというやつは、こういう簡単演算が出来るにすぎない。

 

便宜上、ここでは * がNAND演算を表す演算子だとすると

 

0 * 0 = 1

0 * 1 = 1

1 * 0 = 1

1 * 1 = 0

 

たったこれだけ。たったこれだけの素子の組み合わせで、計算機でもメモリでも何でも作れる。たったこれだけしかできない素子であっても、これを何十億個という規模で組織的繋ぎ合わせ、その上でソフトを走らせれば PCスマホになる。極論すればね。もちろん実際には、もっと効率の良いやりかたに最適化されているが、それは枝葉末節の話だ。

 

話を戻してAIの話だが、この話の始まり人間脳みそ研究と繋がっている。 長年研究されてきたにもかかわらず、人間脳みそについて解っている事と言えば、部位ごとの大まかな機能と、あとは細胞レベルの話で、全容解明などというにはほど遠い団塊にある。ただし、ここで1つ、非常に重要発見が数十年前にされている。 1つの細胞は、驚くほど簡単な事しかできない、という事だ。1つの細胞の働きをコンピュータ上でシミュレーションすることは、今や簡単ことなのだ。

 

感の良い人は、ここでおわかりだろうか? 

 

NANDゲートのような単純な素子であっても、それを何十億個という規模で組み合わせれば、コンピュータを作る事ができる。

 

そして、人間の脳も、どうやらその構成単位は単純な事しかできない脳細胞であり、それらがどのように組織化され、繋がっているかという事を解明していけば、脳みそ再現できるんじゃないか?ということだ。その構成単位である細胞の事は、すでに解明されているのだ。

 

例えば40年前に、「NANDゲートを十億個ほど詰め込んだチップを積んだ携帯端末が、やがて普及して、だれもが携帯するようになるだろう」なんて、信じる人はごくわずかだっただろう。でも現に、現在そうなっている。

ということを踏まえるならば、現在既に1個の脳細胞の働きは解明されていてシミュレーション可能なのだ。それを何億個か何兆個かくみあわせたようなものが将来実用化される可能性は? ゼロではないんじゃない?

そこに賭けている人たちが居る訳だ。その大きな構造の中で、現在AIというものを見ないと、本質を見誤ると思う。

 

そういう意味では、研究領域としては、アメリカ中国もまだ入り口に立ったに過ぎないのだ。

2018-09-18

お前等本当にJavascript書いてんの?

型が無いのはともかくClassも碌に書けない、継承も書けないしジェネリックもない。

演算子オーバーロードなんてもってのほか

そんな低機能JSばっか書いてる奴は増田の中にまだいるのか?

2018-08-31

おすすめのひどい技術書あります

こういうの

https://www.amazon.co.jp/はじめてのPython-AIプログラミング-BASIC-MASTER-金城俊哉/dp/4798044857/

AIプログラミング練習にもPython練習にもなりません。

秀和システムからこんなレベルの低い本が出るとは思いませんでした。

AI勉強がしたければ素直にオライリーあたりで出ている本を買った方がいいでしょう。

皆さん著者の名前を覚えてください。プログラマを名乗るにも値しない男の名前です。彼が関わる本に価値が生まれることはないでしょう

https://www.amazon.co.jp/Pythonプログラミングパーフェクトマスター-Perfect-Master-金城俊哉/dp/479804816X/

わかりやすく読みやすいですが、誤字脱字があまりにも多いです。

文章中の1文字くらいが抜けているのはまだいいですが、ソースコード演算子が全く違う記号になっていたり、ソースコード通りに実行するとエラーになる箇所が数カ所あります

本書は読みやすいですが、それはpython自体が学びやすいだけでこの本自体はクソ以下です。

正直出版するときちゃんとチェックしたのか疑うレベルです。

2018-08-18

ニュースサイトが見にくい

この頃google検索でも、上位にずらっと広告が並び、ひどいときには3ページ目くらいまで

広告ときがある。そういう時はしょうがないので、検索語を追加したり プラスマイナス演算子を書いたり、

クォーテーションで括ったりするわけだけど、その間20秒くらいロストする。

googleニュースも今年の5月くらいかカスタマイズが効かなくなって、俺が見たいニュースじゃなくて、

スポンサー様が提供する「ニュース」をたくさん見せられるようになった。そういうのが嫌だからテレビを捨てて

googleニュースを見ていたのに。なんかい方法いかなぁ。

自分でフェッチしてくるボットを書いてHTMLを生成すればいいけど・・・今更そんなWeb黎明期みたいなことしないと

広告から自分暮らしを守れないのかな。

2018-08-05

anond:20180805145239

そんな事はない(願望)

しろから希望的観測

おいらはずっと勉強を続けるよ(コンコルド効果


ただやっぱkotlinは、kotlinっぽくカッコ良く書こうとすると学習コストけっこうかかるし

他人の手でカッコ良く書かれた文とかを見ると、これ演算子オーバーロードなのかな、それとももっと別の言語機能で実現されてんのかな、とか

探るのも一苦労なんだよなあ。

2018-05-08

anond:20180508164921

そりゃ機能的には同じだが、node.jsで作ったクローラPHPで作ったクローラじゃ

ソースの刺々しさが違うよ。なんだかんだでnode.jsの方が処理はスッキリ書けるが、

からといってソース無駄な部分(カッコとか演算子とか)はnode.jsの方が圧倒的に多いよ。中カッコも多いからトゲトゲしてる。

2018-05-07

node書いてるときメソッド呼び出しを->()で書いてしま

寧ろー>演算子実装してくれ! 

体が完全に慣れちまってるんだ!

2018-03-25

プログラミングつまんねーーーーーーーーーー

プログラミングを覚えるには、まず、作りたいものを作りましょう?

作りたいものなんかねーよ。便利なサービスアプリ世界に溢れてるじゃん。俺が作らなくてもいいじゃん。

個人が作るアプリ流行ことなんて無いし、大金GETできるわけでもねぇ。

けど、プログラミングやってみたいと思ってJAVAscriptだのHTMLだのCSSだのを覚えたけどよ。

おいおい…何に使うんだこれ?

演算子?箱?代入?で?だから何なんだ?if文?もし○○なら…。これをどうすんだ?

初心者向けの学習サイトなら無数にあるんだけど、そこから発展、応用を学べるような学習サイトって無くね?

つーか。作りたいものの作り方を知りたいわ。

2018-03-22

anond:20180322191420

困っている側がうまく伝えるのが、客ではないのだから当然。

言語演算子について調べたまえ。

代入演算子比較演算子だ。VBAのほうが一つ二役で紛らわしい。

2018-02-27

anond:20180227140857

演算子の多重定義のないJava

BigDecimal result = new BigDecimal("100000").multiply(new BigDecimal("99999.55")).add(new BigDecimal("3333333333"));

多重定義のあるC++

BigDecimal result = BigDecimal("100000") * "99999.55" / "3333333333";

anond:20180227140857

多重継承演算子オーバーロードもフレンド関数も、それが便利で効率的から考案されたのでしょ?

多重継承ができれば、少ないコード数でプログラムが作れるとか、

演算子オーバーロードがあれば、複雑なデータ構造同士を独自ルールで「加算」に相当する演算ができるとか、

なにかしら理由があってできたモノを 「なくてもできる」で否定しても、

「あるともっと楽にできる」と反論されておしまいじゃない?

いらない文法利便性を述べた上で、それが生み出した弊害を列挙したほうが説得力あるんじゃないかな。

C++のいらない文法

多重継承

多重継承がなくてもどんなに複雑なプログラムでも記述できる。

JavaphpインターフェイスRubyMix-inがある。

演算子オーバーロード

+ や - などの演算子に別の動作を与える演算子オーバーロードはなくてもプログラム記述はまったく困らない。

C言語

a = b + c;

と書いた場合解釈は足し算しかない。c + b と書いても同じ。

C++

a = b + c;

と書いた場合、b と c が何かでまったく動作が変わる。逆にして c + b は動作が違う可能性がある。つまりこの行だけ見てもどのような動作になるのか予測できない。

Java はできない

PHP はできない

Python はできる

Ruby はできる

フレンド関数

クラス保護メンバー変数に、アクセスできる関数のこと。通常、privateメンバ変数クラスからアクセスできないが、フレンド関数はそのprivateな変数アクセスできる。

不要例外的文法

2018-02-04

anond:20180204091729

因果律代表例:科学(science)

 

因果性 - Wikipedia https://ja.wikipedia.org/wiki/%E5%9B%A0%E6%9E%9C%E6%80%A7

因果性とは、2 つの出来事が原因と結果という関係で結びついていることや、あるいは結びついているかどうかを問題にした概念である

物理学における因果律

古典物理学での因果律とは、指定された物理系において「現在状態を完全に指定すればそれ以後の状態はすべて一義的に決まる」と主張するものであったり、「現在状態が分かれば過去状態も分かる」と主張するものである[6]。

また相対性理論の枠内においては、情報光速を超えて伝播することはなく、光速×時間の分以上離れた距離にある二つの物理系には、時間をさかのぼって情報が飛ぶ事なしに、上記時間内に情報のやり取りは起こらない。物理学範疇ではこの「光速を超える情報の伝播は存在しない」という原理を同じく因果律という。[6]。

原子分子程度の極めて小さなスケール現象では量子力学的な効果無視できないほど大きく、古典的意味での因果律は完全には成り立たない[7]。量子力学における基本方程式であるシュレディンガー方程式の解たる状態関数は、シュレディンガー方程式が満たす状態確率振幅しか与えず、ある時点における物理的な状態が決定したとしてもその後の状態一義的に決まるわけではないことを示している[8]。

古典的定義から離れ因果律定義を「時間軸上のある一点において状態関数が決まれば以降の状態関数自然に決まる」と解釈すれば「量子論領域でも因果律は保たれる」と言える[9]。また、一見因果律が破れているように見える思考実験であるEPR相関においても、実際光速を超えているのは状態関数の波束の収束速度であり、状態関数のもの演算子によって書き換えられる(つまり情報を受け取る)わけではなく、因果律は保たれていると言える[9]。

2017-12-26

10. 「site:」+「I'm Feeling Lucky」で、特定サイト内かつ検索結果をスキップする

https://www.google.co.jp/search?q=site%3Astore.steampowered.com%2Fapp%2F+CUPHEAD&btnI

例えば↑の検索では、Steam内のCupheadページを直接表示します。







解説

末尾に「btnI」を付け加えると検索ワードをI'm Feeling Lucky化することができ、「site:」やその他の演算子と組み合わせることが可能です。

ただ、毎回アドレスバー入力するのは大変なので、ブラウザ検索エンジンに追加して使用するといいです。

上の例で言うと、Steamゲームをよく調べる人なら、site:steampowered.comとbtnIを組み合わせたものをあらかじめブラウザ検索エンジン登録(ついでにショートカットキーも設定)しておく。それ以降は、あるゲームsteamページを見たくなったときブラウザ入力バーに「ショートカット+ゲーム名」を入れるだけで、上に書いたURLみたいにすぐ表示することができます

btnIの機能は意外と使えるので覚えておくといいです。

anond:20171225150423

2017-11-25

アカウント名にvimを含むユーザを除外して検索する

vim OR @検索に混ぜても問題無いID

検索に混ぜても問題無いIDは「vimsearch」とか「vimfind」みたいな存在しないIDでもいい。

リプライ先がvimを含むIDツイートは弾けない、Vimの人だけど名前Vimを含んでる人も弾いてしまう、他に演算子使ってたりするとちょっとクエリ書くのが面倒、とかあるけど。

(多分だが検索してる人は「lang:ja」も付けてるだろうからと思って書くけど、混ぜるなら「vim lang:ja OR @vimsearch」とかになる)

追記

このツイート経由で知った → https://twitter.com/noumin_T/status/934394301559095296

2017-10-23

さよならはてなブックマーク

ブラウザブックマークからはてなブックマークを消そうと思う

アフィブログ相手をしたり、互助会の中身スカスカエントリーを見たり

そんな事に時間を割くことがとても愚かな事だと何年も気づかなかった

本当に必要情報SNSなんかに頼らず自分で探すべきだったんだ、匿名ではなくちゃんとした仲間を探すべきだったんだ

書籍でもwebでも本物の情報を発信してる人は沢山いるけどはてなブックマークには一人もいない

どうしてもっと早く気づいて切り捨てられなかったのだろうか

GoogleSEOによる検索汚染で使いものにならなくなったと言われたりするけどオプション検索演算子を使えば今でも有益情報を見つけてくれる

邪魔web広告には文句など言わず黙ってAdblockするべきだった

技術書日本語に縛られなければ質の高い情報を沢山得られる

限られている時間で誰かのくだらないお遊びに付き合ったりバカバカしい晒しあげを見たり

なんて愚かだったんだろうか

自分自分の周りに本当に必要なことに注力すべきだった

2017-09-11

https://anond.hatelabo.jp/20170910205249

まじな話をすると、N予備校プログラミング入門コースやるのがオススメ

https://www.nnn.ed.nico

一日8時間勉強時間があるなら、だいたい一ヶ月で終わる内容。

月額1000円だけどしっかり勉強すれば一ヶ月の無料間中に終わると思う。

もともとN高等学校のノンプログラマーの生徒をWebエンジニアとして就職させるために作られたカリキュラム講師曰く去年はこれで二人エンジニア就職を決めたらしい。

内容も相当親切に説明していて、プログラミングで何か作るだけじゃなくて、就職必要な環境構築やセキュリティまでみっちりやる。

http://qiita.com/sifue/items/7e7c7867b64ce9742aee#%E3%82%B3%E3%83%B3%E3%82%BB%E3%83%97%E3%83%88%E3%82%92%E3%82%82%E3%81%A8%E3%81%AB%E6%A7%8B%E6%88%90%E3%81%95%E3%82%8C%E3%81%9F%E3%82%B3%E3%83%BC%E3%82%B9%E3%81%A8%E5%86%85%E5%AE%B9

講師が書いてる入門コースで習うことがまとめ。テキスト教材もあるけど授業も1項目を2時間で説明している。授業は週2の生放送とそのアーカイブがある。

↓みたいなことが学べる

----

Webプログラミング入門コース

Web ブラウザとは (Chrome, デベロッパーコンソール, alert)

はじめてのHTML (VSCode, HTML, Emmet)

さまざまなHTMLタグ (h, p, a, img, ul, tableタグ)

HTMLで作る自己紹介ページ (HTMLタグ組み合わせ, コンテンツ埋め込み)

はじめてのJavaScript (JS, ES6, エラー)

JavaScriptでの計算 (値, 算術演算子, 変数, 代入)

JavaScript論理を扱う (論理値, 論理積, 論理和, 否定, 比較演算子, if)

JavaScriptループ (ループ, for)

JavaScriptコレクション (コレクション, 配列, 添字, undefined)

JavaScript関数 (関数, 関数宣言, 引数, 戻り値, 関数呼び出し, 再帰)

JavaScriptオブジェクト (オブジェクト, モデリング, プロパティ, 要件定義)

はじめてのCSS (CSS, セレクタ, background-color, border)

CSSを使ったプログラミング (transform, id, class)

Webページの企画とデザイン (企画, 要件定義, モックアップ, 16進数カラーコード)

診断機能の開発 (const, let, JSDoc, インタフェース, 正規表現, テストコード)

診断機能組込み (div, 無名関数, アロー関数, ガード句, truthy, falsy)

ツイート機能の開発 (リバースエンジニアリング, URI, URL, URIエンコード)

Linux開発環境構築コース

LinuxというOS (VirtualBox, Vagrant, Ubuntuインストール, OS, CUIの大切さ)

コンピューター構成要素 (ノイマンコンピューター, プロセス, lshw, man, ps, dfの使い方)

ファイル操作 (pwd, ls, cd, mkdir, rm, cp, mv, find, ホストマシンとの共有ディレクトリ)

標準出力 (標準入力標準出力標準エラー出力パイプgrep)

vi (vimtutor)

シェルプログラミング (シバン, echo, read, 変数, if)

通信ネットワーク (パケット, tcpdump, IPアドレス, TCP, ルーター, ping)

サーバークライアント (tmux, nc, telnet)

HTTP通信 (http, https, DNS, hostsファイル, ポートフォワーディング)

通信をするボットの開発 (cron, ログ収集)

GitHubウェブサイトの公開 (GitHub, リポジトリ, fork, commit, 情報モラル)

イシュー管理とWikiによるドキュメント作成 (Issues, Wiki)

GitとGitHub連携 (git, ssh, clone, pull)

GitHubへのpush (init, add, status, インデックス, commit, push, tag)

Gitのブランチ (branch, checkout, merge, gh-pages)

ソーシャルコーディング (コンフリクト、プルリクエスト)

Webアプリ基礎コース

Node.js (Node.js, nodebrew, Linux, REPL, コマンドライン引数, プルリク課題)

集計処理を行うプログラム (集計, 人口動態CSV, Stream, for-of, 連想配列Map, map関数)

アルゴリズムの改善 (アルゴリズム, フィボナッチ数列, 再帰, time, プロファイル, nodegrind, O記法, メモ化)

ライブラリ (ライブラリ, パッケージマネージャー, npm)

Slackボット開発 (slack, mention, bot)

HubotとSlackアダプタ (hubot, yo)

モジュール化された処理 CRUD, オブジェクトライフサイクル, filter)

ボットインタフェースとの連携 (モジュールのつなぎ込み, trim, join)

同期I/Oと非同期I/O (同期I/O, 非同期I/O, ブロッキング)

例外処理 (try, catch, finally, throw)

HTTPサーバー (Web, TCPとUDP, Webサーバーの仕組み, Node.jsイベントループ, リスナー)

ログ (ログ, ログレベル)

HTTPのメソッド (メソッド, GET, POST, PUT, DELETE, CRUDとの対応)

HTMLフォーム (フォームの仕組み, form, input)

テンプレートエンジン (テンプレートエンジン, jade)

HerokuWebサービスを公開 (Webサービスの公開, heroku, dyno, toolbelt, login, create, logs)

認証利用者を制限する (認証, Basic認証, Authorizationヘッダ, ステータスコード)

Cookie を使った秘密匿名掲示板 (Cookie, Set-Cookie, expire)

UI、URI、モジュール設計 (モジュール設計, フォームメソッド制限, リダイレクト, 302)

フォームによる投稿機能の実装 (モジュール性, textarea, 303)

認証された投稿の一覧表示機能 (パスワードの平文管理の問題, 404, テンプレートのeach-in)

データベースへの保存機能の実装 (データベース, PostgreSQL, 主キー)

トラッキングCookieの実装 (トラッキング Cookie, IDの偽装, Cookie の削除)

削除機能の実装 (データベースを利用した削除処理, 認可, サーバーサイドでの認可)

管理者機能の実装 (Web サービス管理責任, 管理者機能の重要性)

デザインの改善 (Bootstrap, レスポンシブデザイン, セキュリティの問題があるサイトを公開しない)

脆弱性 (脆弱性, 脆弱性で生まれる損失, 個人情報保護法, OS コマンド・インジェクション)

XSS脆弱性対策 (XSS, 適切なエスケープ処理, リグレッション)

パスワード脆弱性対策(ハッシュ関数, メッセージダイジェスト, 不正アクセス禁止法, パスワードジェネレーター, 辞書攻撃)

セッション固定化攻撃脆弱性対策 (セッション, セッション固定化攻撃, ハッシュ値による正当性チェック)

より強固なセッション管理 (推測しづらいセッション識別子, 秘密鍵)

CSRF脆弱性対策 (CSRF, ワンタイムトークン)

安全なHerokuへの公開 (脆弱性に対する考え方, HTTPの廃止)

Webアプリ応用コース

Webフレームワーク (Express.js, フレームワーク導入, 簡単なAPI, セキュリティアップデート, Cookie パーサー, ミドルウェア, 外部認証, ロガー)

ExpressのAPI (app, Properties, Request, Response, Router)

GitHubを使った外部認証 (Passport, OAuth)

スティングフレームワーク (Mocha, レッド, グリーン, リファクタリング)

継続的インテグレーション (CircleCI)

クライアントフレームワーク (Webpack, Chrome 以外のブラウザでもES6)

DOM操作フレームワーク (jQuery, jQueryアニメーション, this)

AJAX (jQuery.ajax, クロスドメイン, 同一生成元ポリシー, x-requested-by, CORS)

WebSocket (WebSocket, WebSocketの状態遷移, Socket.io)

RDBとSQL (DDL, DCL, CREATE, DROP, INSERT, DELETE, UPDATE, WHERE)

データモデリング (リレーショナルモデル, 正規化)

テーブルの結合 (外部結合, 内部結合, 片側外部結合, JOIN ON)

インデックス (インデックス, 複合インデックス, Bツリー)

集計とソート (SUM, COUNT, ORDER BY, GROUP BY)

「予定調整くん」の設計 (要件定義、用語集、データモデル、URL設計モジュール設計、MVC)

認証とRouterモジュールの実装 (Mocha, supertest, passport-stub, モックテスト)

予定とユーザーの保存 (セキュリティ要件, UUID, 複合主キー)

予定とユーザーの一覧の表示 (非同期処理, Promise, then)

出欠とコメントの表示 (入れ子の連想配列, Promise.all, 子どもからデータを消す)

出欠とコメント更新 (Promiseチェイン, リファクタリング)

予定の編集と削除 (要件の衝突, 関数再利用)

デザインの改善 (this, グローバルオブジェクト)

セキュリティ対策と公開 (X-Frame-Options, Heroku環境変数)

2017-05-06

Perlは終わった完全にオワコン

perlは終わった。もうずいぶん前から終わってたけど話題にも上がらないってことは完全に終わってる。

Githubトレンドを見てもperlなんて出てくる日の方が少ない。

結局Perlみたいにいろんな書き方ができるような言語はお呼びじゃねーってことだろう

Go/Pythonみたいな言語がもてはやされるのはそのためだろう

ライブラリ充実度に至ってはpython圧勝

Web開発ならRailsがあるRuby

どこでも動かせる意味ならGolangが最強だろう

Perl6については意味からない演算子増えて、さらに読みにくくなった

うPython, Rubyに追いつくこともできないだろう何よりリリースが遅すぎたもうPerlが入る余地はない

バイバイPerl(´;ω;`)ノシ

2017-04-22

http://anond.hatelabo.jp/20170422015216

言いたい事は判るけど言語スキーとしてはどれも書いててそれなりに面白さはあると思う。

判ってくると楽しい、みたいなやつ。

まぁ仰る通り保守性・可読性には一切寄与しないし「俺つえー」的な自尊心満たすだけかも知れないけどw

あと言語の多機能さとか演算子オーバーロードモンキーパッチ批判するなら Scala も入れといて欲しいかな。

あれも関数型ってだけでなんかありがたがられてる感あるけどそういう意味じゃなかなか酷い言語

C++/Perl/Rubyゴミ

分かったのは言語の多機能さというのは、一点水準さえ満たしていれば、それ以上足しても生産性寄与しないという事

自分しか使わない、最初書くときに限れば書きやすいと思うこともあるが、それ以上に保守性を落とす

ライブラリを利用したり他人コードを読む機会の方が多い昨今マイナス要素でしかない

perlスローガンだかに "There's More Than One Way To Do It." というのがあるらしいが、読む側からするとたまったもんじゃない

演算子オーバーロードされてるかも?モンキーパッチされてないかな?等々あれこれ想定しなきゃいけないのが苦痛しかない

スラムダンク流川が沢北を抜いたのも

パス選択肢を見せた事で沢北が集中できなくなってしまたか

それほど選択肢が多いということはストレスになる

Rubyゴミ

DSL(笑)が良いと思ってるのは最初だけで、最終的に負債しかならない糞コード

統計機械学習系のライブラリが皆無で先細りのイメージしかいかRailsと一緒に心中ください

Perlゴミ

リスト評価スカラー評価とか意味わかんねーくくりもtie変数アイディアは糞中の糞

Perl6にいたってはわけわかんねー演算子オンパレードで悪いところをさらに悪くした感じ

C++ゴミ

テンプレートマクロboostも何もかもダメ意味不明

オーバーロードされまくりコードなんてどっから読んでいいかわかんねーよ

こんな意味不明なことを覚えていられるほど人生長くない

結局PythonとかGo言語現実的な解で黒魔術のある言語なんて意味ない要らない使わない

アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん