reponの勉強メモ

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

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

osxfuseとsshfsをインストールする

$ brew cask install osxfuse
$ brew install sshfs

再起動する。

コントロールパネルにfuseがあることを確認

ssh接続でサーバのフォルダをマウントする

$ mkdir mountpoint
(マウントポイントは実体で作る)
$ sshfs -p ポート番号 -o IdentityFile=秘密鍵のフルパス user@host:/folder mountpointのフルパス

df -hでフォルダのマウントを確認。

VSCodeのプロジェクトにフォルダを登録

ファイルを作成、削除した場合はリロードボタンを押すと反映される

フォルダのアンマウント

$ diskutil unmount mountpoint

参照

qiita.com

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

検索結果のurlに&emi=AN1VRQENFRJN5を付けているだけです。

javascript:(function(){var url=top.document.URL;if(url.match(/https.*?amazon/)){document.location.href=url+'&emi=AN1VRQENFRJN5';}})()
  1. Amazon検索結果置換 ←ブックマークに追加

  2. Amazon.co.jp で検索

  3. 検索結果のページでブックマークをクリックすると、Amazon.co.jp が販売、発送する商品のみに絞られます。

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

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

-print0オプションは固定なのでxargs-0オプションでしか受けられないが、find-Jオプションの置換する変数は変更可能。

$ find . "*.mp3" -print0 | xargs -0 -J{} cp {} targetdir

など

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

VurtualBoxで仮想マシンを作成、vagrantでbox化し、Vagrantfileを作成、vagrantupで立ち上げた。

apacheサーバを起動させており、

$ curl localhost:8080It Works!が返ってくる。

Vagrantfileの

  # config.vm.network "private_network", ip: "192.168.33.10"

コメントアウトし再起動したが、反映されなかった。

何が問題なのか。

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

1時間以内に解けなければプログラマ失格となってしまう5つの問題が話題に より、問題5を解きました。

問題5

1,2,…,9の数をこの順序で、”+”、”-“、またはななにもせず結果が100となるあらゆる組合せを出力するプログラムを記述せよ。例えば、1 + 2 + 34 – 5 + 67 – 8 + 9 = 100となる

ruby

  res=[]
  n=3;l=8;m=["",",+,",",-,"]
  (n**l-1).times do |s| #0~(n**l-1)
    # 3進法で表す
    p=s.to_s(3) #ex:12022121
    p="#{'0'*(l-p.size)}#{p}" #8桁の空欄を0で埋める
    str=""
    p.size.times do |t|
      str+="#{(t+1).to_s}#{m[p[t].to_i]}"
    end
    str+=(l+1).to_s
    ary=str.split(",")
    # 計算する
    tmp=ary[0].to_i
    1.upto(ary.size-1) do |t|
      tmp=tmp+ary[t+1].to_i if ary[t]==="+"
      tmp=tmp-ary[t+1].to_i if ary[t]==="-"
    end
    res << ary.join("") if tmp==100
  end
  puts res

javascript

var calc = function(n){
  // n=9の時、対象は1~9
  var ac=Math.pow(3,n-1),m=["",",+,",",-,"],res=[];
  for(var i=0;i<(ac-1);i++){
    var p=Number(i).toString(3);//3進法で表す
    p=Array(n-1-p.length+1).join("0")+p;
    var str="";
    for(var j=0;j<p.length;j++){
      str+=(j+1).toString()+m[p[j].toString()];
    }
    str+=n.toString();
    var ary = str.split(",");
    var tmp = Number(ary[0]);
    for(j=1;j<(ary.length-1);j++){
      if(ary[j]==="+"){
        tmp+=Number(ary[j+1]);
      } else if(ary[j]==="-"){
        tmp-=Number(ary[j+1]);
      }
    }
    if(tmp===100){
      res.push(ary.join(""));
    }
  }
  console.log("result",res);
};
calc(9)
結果
["123+45-67+8-9", "123+4-5+67-89", "123-45-67+89", "123-4-5-6-7+8-9", "12+3+4+5-6-7+89", "12+3-4+5+67+8+9", "12-3-4+5-6+7+89", "1+23-4+56+7+8+9", "1+23-4+5+6+78-9", "1+2+34-5+67-8+9", "1+2+3-4+5+6+78+9"]
11個

1時間では解けなかったので失格ではありますが。