node.jsを勉強中
このブログは、プログラマになりたい人間のクソース、ウンコード公開ブログです。ただプログラムが好きだからやってます。
技術記事というよりは自分がやったことの備忘録的なものです。
意味のわからないやり方や、古いやり方も多いと思いますので、参考にはしないでください。
Node.jsについてあまり触ったことがない状態ですが、 ドットインストール様のNode.js入門があるので、それをみて手を動かしていきます!₍₍ ◝(´•⌔•`)◟ ⁾⁾ 動画時代が2013年ぐらいのものなのですが、基本的な考え方は変わらないと思うので、まずはこの動画で勉強させていただきます。
とりあえずサーバー作ってブラウザから見れるようになった!
settings.jsを作って、全く同じ動作にするまで、できた
req.urlで現在のurlが取れる!
html読み込み成功!
ejsこれでいいのか?
post送信も無事できましたと
最後にmongodbと接続しましたと。
感想
mongodbをもっと触って見たいなと思いました。
せっかくサーバーの設定をjavascriptで書けるので、その辺をもっと勉強したいなと思いました。
今時のjavascriptを勉強させていただく
このブログは、プログラマになりたい人間のクソース、ウンコード公開ブログです。ただプログラムが好きだからやってます。
技術記事というよりは自分がやったことの備忘録的なものです。
意味のわからないやり方や、古いやり方も多いと思いますので、参考にはしないでください。
ありがたく勉強させていただきます。
とりあえずparcelでjsの環境だけ作っておく
npm init -y npm i parcel-bundler --save-dev touch index.html && touch index.js
index.html
<!doctype html> <html> <head> <meta charset="utf-8"> <title>js2018</title> </head> <body> <script src=index.js></script> </body> </html>
index.js
document.write('a')
package.json
{ "name": "05_2018", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "parcel index.html" }, "keywords": [], "author": "", "license": "ISC", "devDependencies": { "parcel-bundler": "^1.3.1" } }
npm start
これで最近のesでも動くのかな?
なるほど、.babelrcも新しい、古いの見分けかたがあるのか とりあえず今回はこれでいいや
{ "presets": ["env"] }
let constは知ってるから飛ばす
変数のスコープがやっぱり違うんだよな
変数展開はphpでも似たような書き方だし、まあ、わかる
オブジェクトのコピー
できた、かな?
const srcObj = { agree: ()=>{ return 'Hello'; } }; const destObj = {}; Object.assign(destObj, srcObj); console.log(destObj.agree());
クラス宣言
reactとかもコンポーネントがクラス単位っぽいからぜひ覚えたいですね
class SmallAnimal { constructor() { this.animalType = "ポメラニアン"; } say() { console.log(this.animalType); } } (new SmallAnimal().say());
まあ、こんな感じで、続きはまた今度やりますか
ブックマークレットを初めて作って見た
このブログは、プログラマになりたい人間のクソース、ウンコード公開ブログです。ただプログラムが好きだからやってます。
技術記事というよりは自分がやったことの備忘録的なものです。
意味のわからないやり方や、古いやり方も多いと思いますので、参考にはしないでください。
ブックマークレットでどういうものが作れるのかとりあえず見て見た
とりあえず入門サイト見て、Hello Worldして見た
普通にchromeの機能で同じことできた記憶あるけど、自分で作ったということが大事なんで、 選択部分をgoogle翻訳するブックマークレットを作成
javascript:var%20d=document;var%20tx=d.selection?d.selection.createRange().text:d.getSelection();var%20subw=window.open('https://translate.google.com/?hl=ja#en/ja/'+tx).document;
できた!覚えたら便利でしょうなあ₍₍ ◝(´•⌔•`)◟ ⁾⁾
PgAdmin4をインストールして見た
このブログは、プログラマになりたい人間のクソース、ウンコード公開ブログです。ただプログラムが好きだからやってます。
技術記事というよりは自分がやったことの備忘録的なものです。
意味のわからないやり方や、古いやり方も多いと思いますので、参考にはしないでください。
PgAdmin4をインストールして見た
3しかインストールしてなかったので4をインストールします
なんかこれアプリケーションの中に手動でコピーしないとダメなのかな?
とりあえず開いた、接続設定はどれだ?
pgadmin3の設定をそのまま記入
無事接続した、やったね!
vscodeはデフォルトでVagrantfileにシンタックスハイライトがつかない
ハイライトつけようっと
command+, で出てきた右側のエディターに以下を記入する
"files.associations": { "Vagrantfile": "ruby" }
できたよ。
MySQLでデッドロック
クエリの実行順番変えれば解決するそうですが、自分は知らないとハマるだろうなと思い、どういう動きかだけ試させていただきました。
試すテーブル
CREATE TABLE `tests3` ( `id` int(11) NOT NULL AUTO_INCREMENT, `c1` varchar(20) NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8; INSERT INTO tests3 VALUES(null,'111'),(null,'222');
手順
①START TRANSACTION
↓
②START TRANSACTION
↓
①update tests3 set c1 = 'aaa' where id =1
↓
②update tests3 set c1 = 'bbb' where id =2
↓
①update tests3 set c1 = 'ccc' where id =2
デッドロックしました またひとつ勉強になりました、これでいざという時にはまらんですむぞ
SQLのLEFT JOINで初心者の時に気をつけておいたほうがいいこと
sqlのleft joinの動きをあまり理解していない時に間違った結合してしまいがちでしたので、その時に解決した方法です。
MySQL使ってます。 以下のテーブルでみます。
CREATE TABLE `tiku` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `taisyo_flg` int DEFAULT 0 NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8mb4; insert into tiku values (null,'北海道',1), (null,'関東',1), (null,'関西',0), (null,'近畿',1), (null,'九州',0); CREATE TABLE `customer` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `tiku_id` int unsigned NOT NULL, `name` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8mb4; insert into customer values (null,1,'田中'), (null,1,'佐藤'), (null,1,'佐々木'), (null,2,'鈴木'), (null,2,'村田'), (null,3,'木村'), (null,4,'前田'), (null,5,'吉田'), (null,5,'田村')
まず普通に顧客テーブル(customer)に、地区テーブル(tiku)を外部結合して、顧客に対する地区の情報を見る
それに対して、顧客名は全て出力するが、 地区名は、taisyo_flgが1のものについては、地区名を表示し、 taisyo_flgが0のものについてはNULLで出力したい場合があるとする。
select * from customer left join tiku on customer.tiku_id=tiku.id where tiku.taisyo_flg = 1
上のようにwhereで絞る方法では、当然、taisyo_flgが1のものだけが選ばれてしまい、 顧客名を全て出力するという条件を満たせません
とりあえず私の中では2つ方法があるかと思いました。
1. left joinのジョインキーの部分でやる
select * from customer left join tiku on customer.tiku_id=tiku.id and tiku.taisyo_flg = 1 order by customer.id
ジョインキーはandで複数指定できるので、 andでtiku.taisyo_flg=1とすれば、顧客名を全て出しつつ、taissyo_flgが1のものだけ地区名を出す動きになってくれるようです。
2. サブクエリにする
select * from customer left join ( select * from tiku where taisyo_flg = 1 ) tiku on customer.tiku_id=tiku.id order by customer.id
個人的には、こっちのやり方のほうが見た目どういう動きかわかりやすいと思います。 サブクエリでwhere taisyo_flg = 1と絞っているので、そこに外部結合してもtaisyo_flgが0のものは持って来ようがないという感じで。
SQLをちょっと勉強したという時は、この辺の動作がわかりにくかったのを思い出して書かせていただきました。 最後まで読んでいただきありがとうございました。