SakuraWi - BLog

WEBエンジニア。聴いたお話をまとめておく倉庫的な。スタックストックスタック!

飲みの場

どーもなんだか2周年らしいです、このブログ


今日はお世話になっている人とお酒をのんでたので、記憶に残ったことを書きます。


会社という組織には独立したい人がいるべき。そしてやめる!やめないで!のせめぎ合い。
会社はいる意味があるべき。
でも早めに失敗はするべき。

人としてどうふるまうか?利害関係なしに。たまたま会ったその人と、人としてどう向き合うな?

会社は鏡であるべき
まっすぐに自分がうつっているべき

その都度その都度の記録

死ぬまでにやりたいことってなんだろうなーと思って、昔書いたメモを読んでいたら結構いろいろ出てきておもしろくって、 じゃあその面白いなって思ったことを残そうと思って記事を書き始めてみた。

最近もういろんなリミットのようなものを感じる。 社会人になってから、お金でとれる選択肢は増えたと思うけど(学生に比べれば、くらいの)「まぁいいや」ということも増えたなぁと思う。 それってもったいないよなーと

なんでもやってみたらいいのに、「えー経験から言うとそれ微妙だよ?」みたいなのも多くなるし、自分自身にかかってくる責任とかいろんな背負うものが増えていって、結果動けません、なんてことがたくさんあってしまうのでは。

最近自分のまわりの40代の人もうーむ、といっている人いるし。

...

気づいたけど社会人になって、人生のスピードがめっちゃくちゃ加速してる感覚。 次気がついたら30歳だろうし、その次は40歳だろう。

今、あ、これやってみてえなって思った感覚とかは、ちょー大事にしないと、やらないままになることだらけになるとおもう。 自分、昔からこれやりたかったなーとか、これ夢っぽくね?ってことは、今すぐに向かわないともう人生のなかで間に合わなくなるんじゃないかって

はじめてのプルリクエストを出してみよう講座

ども、Sakurawiです。

そういえば、プルリクエストって初めて出す時めちゃくちゃ怖くないですか?

そんなあなたにこれくらい書いておけばひとまず、おーけーでしょう!ということを書いておきます。

これだけは書いとけ!

プルリクエストを出す時は、これだけは書いておきましょう。

  • 目的
  • 内容

目的はなぜこのプルリクエストを出すのか。コードの変更する目的は何かを読み手に伝わるようにしておきましょう! もちろん、わかりやすいコードを書いて、それだけで伝わるのがベストですが、そんなに簡単にはいきませんよね。 レビュワーがさっとみて目的を把握してコードを読める状態を作れるといいかなと思います。

内容は、ざっくりどこをどう変更したのかを書きます。 メソッドを追加、テストを追加、などなど書くケースが多いです。

出しちゃえ、出しちゃえ

ぶっちゃけマージしなければ、下書き保存のようなものです。怖くないです。 出してみてから、レビューされて学ぶことも多いと思います。 まだWIP(途中)の状態からPRを出すな、という人もいますが、勉強中であれば、それでいいと思います。 レビューはまだでいいですよーという時は、タイトルに [WIP] などをいれておけばいいでしょう。

最初はビビリがちですが、恐れることはありません! やってみましょう。

【VScode】ショートカットで相対パス relative pathをコピれるようにした

まずはこれをプラグインでいれる。

GitHub - enochcheung/copy-relative-path: A VS Code extension for copying relative path of the active file

コード > 基本設定 > キーボードショートカット

f:id:Saku-Saku:20180903191708p:plain で、ここの次を開いてのファイルを開いて、間違わないように設定。

  {
    "key": "cmd+.",
    "command": "extension.copyRelativePathOfActiveFile"
  },

僕は、コマンドキーとドットでいけるようにしました。

gitのプルリク出す時とかで解説する時に便利です。 すぐコピレなかったり、絶対パスしかなかったり困っておりました。 が、これでさくさくコピーですね。

[20190111追記]

どうやらVScodeのupdateでプラグインなしでもできるようになった?ようです。 その場合はextension.copyRelativePathOfActiveFileの部分をデフォルトのやつにかえるとうまくいきそうなきがします

Ruby on Railsを使ってtwitterに画像付きtweetをするぞ

wip記事ですが、追記していきます。

Ruby on Rails使って、twitterにガンガン画像をあげてやろう、画像付きtweetをしようという記事です。

Twitter::REST::Request.new(@client, :post, "https://upload.twitter.com/1.1/media/upload.json", command: 'APPEND', media_id: media_id, media_data: file, segment_index: 0).perform

これ、media_dataにしてbase64でデコード済みのものを渡そうとするとエラる。

Twitter::Error::Unauthorized: Could not authenticate you.

きみ、認証できてへんで。なんでや!!

    Twitter::REST::Request.new(@client, :post, "https://upload.twitter.com/1.1/media/upload.json", command: 'APPEND', media_id: media_id, media: file, segment_index: 0).perform

media にして、fileを params[:image]のように直接デコードしないままのものを受け取って投げて見たります。 が。FINALIZEで失敗して以下のエラーが。

Twitter::Error::BadRequest: Segments do not add up to provided total file size.

結局

サーバの方の処理は以下な感じ(まだ整理も何もしてない)

    base_file = Base64.decode64(params[:image])
    file = params[:image]
    init_request = Twitter::REST::Request.new(@client, :post, "https://upload.twitter.com/1.1/media/upload.json", command: 'INIT', total_bytes: base_file.size ,media_type: 'image/jpeg').perform
    media_id = init_request[:media_id]
    Twitter::REST::Request.new(@client, :post, "https://upload.twitter.com/1.1/media/upload.json", command: 'APPEND', media_id: media_id, media: file, segment_index: 0).perform

    Twitter::REST::Request.new(@client, :post, "https://upload.twitter.com/1.1/media/upload.json", command: 'STATUS', media_id: media_id, media: file).perform
    Twitter::REST::Request.new(@client, :post, "https://upload.twitter.com/1.1/media/upload.json", command: 'FINALIZE',media_id: media_id).perform
    Twitter::REST::Request.new(@client, :post, "https://api.twitter.com/1.1/statuses/update.json", status: "test with image", media_ids: media_id).perform

名前ぐっちゃんぐっちゃんですが、デコードしてるファイルでサイズ測ってupするのは、デコードしてないバイナリなデータ。

jsの方はこんなかんじに。

      var imgData = canvas.toDataURL("image/jpeg");
      var data = { "image" : imgData.replace(/^.*,/, '') }

      $.ajax({
        url: "twitter_post",
        type: "POST",
        beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},
        data: data,
  • canvas.toDataURL("image/jpeg");
  • var data = { "image" : imgData.replace(/^.*,/, '') } あたりがハマりそう。 今は一旦動いてるよっていところですが。。。 .replace(/^.*,/, '')で画像の前についてるjpegの指定している文字列とかを消してます。

今いるブランチのプルリクエストをコマンドラインから開けるようにする方法

コマンドラインから現状のブランチ(branch)のPR(プルリクエスト)を開きたい人、いますよね。 さっきまでの僕です!!

ということで、サクっと設定しちゃいましょう。

今回できるようにしたことはこちら

"bashのコマンドラインから、 pu と打てば現在いるブランチのプルリクエストをブラウザで開く"です。

続きを読む

Railsでテーブルを追加するコマンド【migaration】

Ruby on Railsでテーブルを追加、migrationファイルを追加するコマンド、たまーにしか使わないのでいつも検索しちゃいます。 どうせなので自分のブログにも残しておくことにしました。

要点は modelを追加するとテーブルもmigrationファイルも、modelも生成されるというところ

rails generate model User uuid:string email:string

ちなみに、 Usersにすると、怒られちゃいます。笑 modelの追加なので、単数形にしろ!ということですね。

rails generate model Users uuid:string email:string
Running via Spring preloader in process 42696
[WARNING] The model name 'Users' was recognized as a plural, using the singular 'User' instead. Override with --force-plural or setup custom inflection rules for this noun before running the generator.
      invoke  active_record
      create    db/migrate/20180728163652_create_users.rb
      create    app/models/user.rb
      invoke    test_unit
      create      test/models/user_test.rb
      create      test/fixtures/users.yml