reponの勉強メモ

主に勉強したことのメモです。

SELECT文でGROUP BYを使う時、SELECT句でカラムにAS句の別名をつけるなら、GROUP BY句でも別名を付ける

MySQLを使っていて、LaravelのO/RマッパーでSELECT文を呼び出した際、表題のエラーが出ました。 toSql() でSQL文を取り出し、MySQLの対話環境でUnknown column 'hogehoge' in 'group statement' とエラーが出てくれたのでわかりました。 これはダメ select i…

git checkout -b hoge だけで安心できない

fugaというファイルをある程度変更してきたところで、自分がdevelopブランチで作業していることに気づく。 $ git checkout -b hoge で、hogeブランチに移動、 $ git diff modified: fuga 確認できたので、 $ git checkout develop $ git checkout fuga devel…

MathJaxによる数式表示テスト

こちら 【行列式編】置換と巡回置換 | 大学1年生もバッチリ分かる線形代数入門 の表示がとてもきれいだったので。 インライン エネルギーと質量には \(E=mc^2\) の関係がある。 ブロック $$ x = \frac{-b \pm \sqrt{b^2-4ac}}{2a} $$ 埋め込み方法 こちら Co…

ディレクトリ内のファイルごとの行数を調べる

$ wc -l `find dir -name "*hoge*"` $ find dir -name "*hoge*" | xargs wc -l 下のほうが好き

javascriptの分割代入で、プロパティの微妙に違うオブジェクトに値を入れるにはどうすればよいのか?

const a = {id: 1, type: "peperback", size: { width: 10, height: 15, weight: 300}}; const b = {}; としたとき、オブジェクト b に オブジェクト a の id, type, sizeのweight だけを取り出して入れたい。 ベタに入れるとすれば b.id = a.id; b.type = a…

ERROR: http://dl-cdn.alpinelinux.org/alpine/vx.xx/main: temporary error (try again later)の対応

dockerでビルドしたら、次のようなエラーが出た。 ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.11/main: temporary error (try again later) WARNING: Ignoring APKINDEX.70f61090.tar.gz: No such file or directory バージョン番号などは変わるが、一…

dockerコンテナ上のmariadbのバックアップとリストア

バックアップ docker-compose を使っていて、docker-compose ps コマンドで確認できるコンテナの名前が db_1 だとすると、起動中のコンテナに対して $ docker-compose exec db_1 mysqldump -u ユーザー名 -p -P ポート番号 -h ホスト(127.0.0.1) DB名 > DB…

docker上に作ったlaravelに環境変数を追加する際の手順

.env ファイルに環境変数を、 環境変数名=環境変数 の形で追加 ex: HOGE=HOGEHOGE::HOGE//HOGE docker-compose.yml の該当コンテナの environment に、環境変数名=${環境変数名} と追加。別名でも受けられるが混乱するので同一名にする。 ex: HOGE=${HOGE} .…

javascriptの配列で重複を除く

const a = [1, 2, 2, 3, 3, 5, -1, "a"] const uniq = Array.from(new Set(a)); または、 const uniq = [...new Set(a)]; 配列からSetオブジェクトを作成し、再度配列に戻す。 Array.from() メソッドは、配列風オブジェクトや反復可能オブジェクトから配列を…

2つの配列から重複した要素を抽出する

JavaScriptの配列操作に役立つ13のヒントとトリック - Qiita様より const numOne = [0, 2, 4, 6, 8, 8]; const numTwo = [1, 2, 3, 4, 5, 6]; const firstValueSet = new Set( numOne ) ; const duplicatedValues = numTwo.filter( item => firstValueSet.ha…

gem mysql2 のインストールがコケる

$ sudo gem install mysql2 -- --with-cflags=\"-I/usr/local/opt/openssl/include\" --with-ldflags=\"-L/usr/local/opt/openssl/lib\" via: `ld: library not found for -lssl` after Mac OS Sierra upgrade · Issue #795 · brianmario/mysql2 · GitHub な…

rubyでn桁の0埋め

rubyでゼロ埋めは、たとえば数字の5を3桁に表現したい場合 "%03d"%5 などと書くが、桁数が変動する場合は以下のように書く。 $ ruby -e ' n = 3; num = 5; puts "%0#{n}d"%num ' 005

findコマンドの "-or" オプションはカッコで括る

複数の検索条件を -or オプションで繋げるとき、以下のように書きがち $ find . -type f -name *.pdf -or -name *.txt -mtime -3 上記では、 カレントディレクトリの、ファイル名 .pdf か、ファイル名 .txt かつ 最後の修正日が3日前 と、「3日前」が後者の…

findコマンドの"-print0"アクションが、条件を複数にすると表示されないのはなぜ?

以下のようにfindコマンドで検索条件が一つの場合はnull文字を区切りとして正常に表示されるが、 $ find . -name "*.txt" -print0 | xargs -0 echo 以下のように検索条件が複数だと、これを実行しても表示されない。 $find . -name "*.txt" -or -name "*.htm…

sequelでjoinしたテーブルで、カラム名が重なったときにテーブルを指定する方法

db[:a_db].join(:b_db,parent_id: :id).where(Sequel[:b_db][:id]=>id).first table___column 表記はうまくsqlに変換できなかった。

sequelでgemライブラリ「mysql2」を使いマイグレーションを行う

$ bundle exec sequel -m mg mysql2://user:password/dbname

osxfuseとsshfsでサーバのフォルダをvscodeに登録して編集する

osxfuseとsshfsをインストールする $ brew cask install osxfuse $ brew install sshfs 再起動する。 コントロールパネルにfuseがあることを確認 ssh接続でサーバのフォルダをマウントする $ mkdir mountpoint (マウントポイントは実体で作る) $ sshfs -p …

amazonの検索結果をAmazon直販のみに絞るブックマークレット

検索結果のurlに&emi=AN1VRQENFRJN5を付けているだけです。 javascript:(function(){var url=top.document.URL;if(url.match(/https.*?amazon/)){document.location.href=url+'&emi=AN1VRQENFRJN5';}})() Amazon検索結果置換 ←ブックマークに追加 Amazon.co.…

ファイル名に空白があるときのfind|xargs cp

区切り文字をスペース以外に変更するため、find の -print0 オプションを付け、xargs の -0 オプションで受ける cp source directory なので、xargs の -J% オプションで変数を % に置換(BSD系。Linux系だと-i%オプション) $ find . "*.mp3" -print0 | xar…

Vagrant box (FreeBSD11) を作ってみたが、プライベートネットワークがうまく設定できない。

VurtualBoxで仮想マシンを作成、vagrantでbox化し、Vagrantfileを作成、vagrantupで立ち上げた。 apacheサーバを起動させており、 $ curl localhost:8080 で It Works!が返ってくる。 Vagrantfileの # config.vm.network "private_network", ip: "192.168.33…

「1時間以内に解けなければプログラマ失格となってしまう5つの問題」の5を解いた

1時間以内に解けなければプログラマ失格となってしまう5つの問題が話題に より、問題5を解きました。 問題5 1,2,…,9の数をこの順序で、”+”、”-“、またはななにもせず結果が100となるあらゆる組合せを出力するプログラムを記述せよ。例えば、1 + 2 + 34 – 5 +…

FreeBSDサーバのpkgのアップデートなど

記録。 $ sudo pkg upgrade $ sudo pkg update しばらくサボっていたので、相当な数のアップデートが出てくる。 エイっとYesを選ぶ。 webサーバにしか使っていないので、redmineとchatとnodeの動作を確認。 redmineが動かなかったので、bundle updateした。

Hubotの導入

Slackを始めたので、Hubotも導入することにした。 参考 GitHub社謹製! bot開発・実行フレームワーク「Hubot」 hubotと戯れてみる #1 slackと連携するhubotを3分でインストールする。(動画付き) とりあえず、サーバにhubotをインストールした。 nodeはイン…

rvmのバージョンアップエラーを解決した

$ rvm get stable rvm curl: (60) SSL certificate problem: Invalid certificate chain というようなエラーが出て、rvm自身のバージョンアップが出来ない。 $ rvm repair これで通るようになった。

javascriptでフィボナッチ数

一般的な書き方。 var fibo = function(n){ if(n===0){ return 0; }else if(n===1){ return 1; }else{ return fibo(n-1)+fibo(n-2); } }; スタックオーバーフローになる。 状態値をもたせる方法(メモ化)。 var fibo = function(n,a,b){ if(n===0){ return …

関数宣言(文)と関数式の違いがわからない

関数宣言(文) function func(){} 関数式 var func = function(){} ですが、クロージャを定義した際の動作が異なりました。 クロージャの作成 function func(){ var n=1; return function(){ return n++; } } または var func = function(){ var n=1; var i…

mysqlのdbの作成

mysql -uroot -p MariaDB [(none)]> create database db_redmine default character set utf8; MariaDB [(none)]> grant all on db_redmine.* to user_redmine@localhost identified by '********'; MariaDB [(none)]> flush privileges; MariaDB [(none)]> …

FreeBSDのpkg(5)への移行

pkgのインストール # cd /usr/ports/ports-mgmt/pkg # sudo BATCH=yes make install clean pkg_install package データベースを新しいフォーマットへ変換する # pkg2ng 以下の行を /etc/make.conf に追加して、 FreeBSD Ports Collection がソフトウェアの登…

Sequelによるmysqlのmigrationの接続方法

http://sequel.rubyforge.org/rdoc/files/doc/opening_databases_rdoc.htmlより $ do:mysql://user:password@host/database

Sinatra+AngularJS+Jsonpで疎結合のwebアプリを作る

ハマったのはjsonpをjsonとしていたこと。 localhostで動かしていても、passengerサーバを通していたので、別ドメインだった。 扱い方は、サーバの側は require 'sinatra' require 'sinatra/jsonp' get '/getjson' do @data=[{:name=>"tanaka",:score=>30},{…