電波ビーチ

☆(ゝω・)v

Rubyでの開発で最近学習したこと Rspec

or3.hatenablog.com

のシリーズの続きのつもりです。

  • 環境
  • 基礎
    • 「とりあえず写経/コピペするだけだし'test'ってフォルダ/ファイル/class/メソッド名でいいや。そういうのgithubでよく見るし」
    • TDD?
    • BDD?
    • spec?
  • プロジェクトフォルダ作成
  • bundlerでRSpecをインストール
    • bundle init
    • bundle install --path vendor/bundle
    • 以降はexecをつけて実行
  • rspecの初期化
  • テストコードを書く
  • テストしてみる
  • 参考
続きを読む

Rubyでの開発について最近学習したこと rbenv, gem, rubygems, bundler

最近っつっても一月くらい前に書いて以降ほったらかしにしてたやつです。長いので目次付きです。
自分用のメモ代わりに書いてたもので、いちおうわりと知識がなくても頭からおっていけば忘れてからでも分かるように丁寧に書いたつもりですが、文体とか構成とか基礎知識がおかしいところには目をつむってくだしあ

  • Ruby開発環境やツールの学習
    • rbenv
    • gem
    • Rubygems
      • gemを使ってみる
        • グローバルにrubyを入れる
        • プロジェクト作る
        • プロジェクトルート直下に(ローカルの)rubyを入れる
        • 入ってるgem一覧 gem list
        • 入ってないやつをインストール/更新/削除してみる
      • gemでrailsを探して入れるまで
        • gem search
        • gem install
        • gem update
        • gem uninstall
      • このままだとグローバルなrbenvにgem installされてしまう
    • Bundler
      • Bundler 参考
      • Bundlerを入れる
        • 【rbenv rehashについて】
      • 初期化
      • Gemfile
      • いれてみる
      • なんだこいつら
      • bundle exec
      • せっかくなのでrailsを入れて動かしてみる
  • 続き
続きを読む

scdlでLikeしたプレイリストをとってくる(こともできる)

ふつうにscdl -l https://soundcloud.com/userID -fとかやると、Likeしたプレイリストはとれず、なぜか先頭の曲だけ落ちるんですが、soundcloud APIの仕様ぽいので諦めてました。

or3.hatenablog.com

自分のアカウントからは/setsで見れるので、各プレイリストのidをスクレイピングで取得してscdlに投げる方法を以前やったのですが、他人のアカウントでは使えませんでした。

stackoverflow.com

ところがこちらの記事によれば、公開はされていないAPIを利用することで可能とのこと。

'playlist_likes': ('https://api.soundcloud.com/e1/users/{0}/playlist_likes?limit=5'),

これをソースのAPIのURLのdictに追加して、

elif dl_type == 'playlist_likes':
    download_playlist(item['playlist'])

みたいにすれば確かに任意のユーザのLikeのうちプレイリストのみDLすることができました。ただし、めっちゃ頻繁に503になってしまうので、limitパラメータとtime.sleepで余裕をもたせています。

Ruby事始

Rubyをやります。とりあえず駆け足で周辺知識と言語仕様の浅いとこまで

続きを読む

さくらvps+debian+nginx+httpsでVirtualHost

さくらvpsの一番安いやつに入れていきます。

続きを読む

Goでスライスの任意のインデックスに挿入

ちなみに「任意のインデックスを削除」はこれでやってます。

or3.hatenablog.com

実装

package main
import "fmt"

func main(){
    n := []int{1, 2, 3,}
    incert_target := 9999
    intint := make([][]int, 0)
    for i:=0; i<len(n)+1; i++{
        intint = append(intint, incert(i, incert_target, n))
    }
    fmt.Println(intint)
}


func incert(index int, x int, origin []int)(ret []int){
    ret = append([]int{}, origin...)
    ret = append(ret[:index], append([]int{x}, ret[index:]...)...)
    return
}

Goのスライスの応用的な使い方はこれを一通りみればいいです

golang.shop

ちなみにdeleteはmapの組み込み関数なので注意。