ためすう

コンソールで名前付きルーティングを呼び出す (Rails)

2019-10-04

やったこと

開発コンソールで名前付きルーティングを呼び出せるようにします。

確認環境

$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]

$ rails --version
Rails 5.2.3

調査

このような routes が設定されていたとします。

hello_index GET    /hello/:hello_id/index(.:format)   hello#index

コンソールで呼び出します。

$ rails c
...

irb(main):007:0> Rails.application.routes.url_helpers.hello_index_path(1)
=> "/hello/1/index"

参考

vector を使ってみる (C++)

2019-10-04

やったこと

vector を使ってみます。

確認環境

$ g++ --version
g++ (Homebrew GCC 9.2.0) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

調査

test.cpp

#include <bits/stdc++.h>
using namespace std;

int main() {
    vector<int> v { 20, 30, 50 };
     v.push_back(90);
     v[0] = 1;

    for (int v2: v) {
        printf("%d\n", v2);
    }

    printf("---\n");

    for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
        printf("%d\n", *it);
    }
}

出力結果

1
30
50
90
---
1
30
50
90

参考

set を使ってみる (C++)

2019-10-04

やったこと

set を使ってみます。

確認環境

$ g++ --version
g++ (Homebrew GCC 9.2.0) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

調査

test.cpp

#include <bits/stdc++.h>
using namespace std;

int main() {
    set<int> m;
    m.insert(10);
    m.insert(5);
    m.insert(5);

    for (int v: m) {
        printf("%d\n", v);
    }
}

出力結果

5
10

参考

標準入力を受け取る (Ruby)

2019-10-03

やったこと

標準入力を受け取る方法を調べました。

確認環境

$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]

調査

ruby-gets.rb

a = gets
b = gets.chomp

p a
p b

出力結果

$ ruby ruby-get.rb
aaa
bbbbb
"aaa\n"
"bbbbb"

chomp で改行が削除されます。

参考

map を使ってみる (C++)

2019-10-03

やったこと

map を使ってみます。

確認環境

$ g++ --version
g++ (Homebrew GCC 9.2.0) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

調査

test.cpp

#include <bits/stdc++.h>
using namespace std;

int main() {
    map<string, int> m;

    m.insert(make_pair("key1", 1));
    m.insert(make_pair("key2", 5));
    m.insert(make_pair("key3", 9));


    printf("%d\n", m.at("key2"));
}

出力結果

5

参考

memset を使ってみる (C++)

2019-10-03

やったこと

memset を使ってみます。

確認環境

$ g++ --version
g++ (Homebrew GCC 9.2.0) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

調査

test.cpp

#include <bits/stdc++.h>
using namespace std;

int main() {
    int aaa[10];

    cout << sizeof(aaa) << "\n";

    memset(aaa, 0, sizeof(aaa));

    for (int a : aaa) printf("%d\n", a);
}

出力結果

40
0
0
0
0
0
0
0
0
0
0

参考

Hash をマージする (Ruby)

2019-10-02

やったこと

Hash でマージするときの下記メソッドを使ってみました。

  • merge
  • update

確認環境

$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]

調査

ruby-hash.rb

h1 = { a: 100, b: 200, c: 300 }
h2 = { a: 10, d: 500 }

p h1.merge(h2) { |index, old, new| old + new }
p h1

p '---'

p h1.update(h2)
p h1

出力結果

$ ruby ruby-hash.rb
{:a=>110, :b=>200, :c=>300, :d=>500}
{:a=>100, :b=>200, :c=>300}
"---"
{:a=>10, :b=>200, :c=>300, :d=>500}
{:a=>10, :b=>200, :c=>300, :d=>500}

参考

fill を使ってみる (C++)

2019-10-02

やったこと

fill を使ってみます。

確認環境

$ g++ --version
g++ (Homebrew GCC 9.2.0) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

調査

test.cpp

#include <bits/stdc++.h>
using namespace std;

int main() {
    int aaa[10];

    fill(aaa, aaa + 10, 3);

    for (int i = 0; i < 10; i++) {
        printf("i: %d value: %d\n", i, aaa[i]);
    }
}

出力結果

i: 0 value: 3
i: 1 value: 3
i: 2 value: 3
i: 3 value: 3
i: 4 value: 3
i: 5 value: 3
i: 6 value: 3
i: 7 value: 3
i: 8 value: 3
i: 9 value: 3
i: 10 value: 3

参考

make_pair を使ってみる (C++)

2019-10-02

やったこと

make_pair を使ってみます。

確認環境

$ g++ --version
g++ (Homebrew GCC 9.2.0) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

調査

test.cpp

#include <bits/stdc++.h>
using namespace std;

int main() {
    pair<int, int> p[10];
    p[0] = make_pair(1, 100);
    p[1] = make_pair(2, 333);

    for (int i = 0; i < 2; i++) {
        printf("first: %d second: %d\n", p[i].first, p[i].second);
    }
}

出力結果

first: 1 second: 100
first: 2 second: 333

参考

ビット演算してみる (C++)

2019-10-01

やったこと

ビット演算してみます。

確認環境

$ g++ --version
g++ (Homebrew GCC 9.2.0) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

調査

test.cpp

#include <bits/stdc++.h>
using namespace std;

int main() {
    int a = 1;
    cout << a << "\n";
    cout << std::bitset<8>(a) << "\n";

    int a2 = a << 2;
    cout << a2 << "\n";
    cout << std::bitset<8>(a2) << "\n";

    int a3 = a2 >> 1;
    cout << a3 << "\n";
    cout << std::bitset<8>(a3) << "\n";
}

出力結果

1
00000001
4
00000100
2
00000010

参考