Rhysのメモ帳

身につけた知識をただ垂れ流す場所です

筋トレ:はじめました

こんばんは。ブログは夜風呂上がってから書くのがいいんじゃないかと思い出したRhysです。 書くことを風呂の中で考えるって話だけなんですけどね。

というわけで今回は運動の話。

先週から大学付属のジムに通い始めたのですが、これがなんと

「楽しい」

いや筋トレってのは面白いですね。

自分のどこの筋肉をどう使って持ち上げるのかとか、なんとなくですけど自分の身を持って理解してくのは楽しいですね。

今の所(まだ一週間ですが)週3月水金で通っております。

メニューが

  • 体幹 1m×3回
  • ラットプルダウン 10×3回
  • チェストプレス 10×3回
  • レッグプレス 10×3回
  • バックエクステンション 10×3回
  • 腹筋 普通に20回×3回
  • ランニング 15分

みたいな感じです。

明日体脂肪とか計ってきて毎週水曜はその報告回にしようかな、笑

今のところ「一ヶ月でどれくらい変わるのか」を検証したいと思っているので、一月後が楽しみですね。。。

それでは。

paizaスキルチェックをやってみた

おはようございます。今日はコーディングの日です。

先日教えてもらった「paizaスキルチェック」というものをやってみました。

できそうで出来ないという。。。

ちなみに自分はまともに書けるのがC言語くらいなのでCで挑戦しています。

A009:ビームの反射

下みたいなコードを書いたのですが80点しかもらえませんでした。なんでだ。。。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define OUT 0
#define IN 1
#define RIGHT 2
#define UP 3
#define LEFT 4
#define DOWN 5

int main(void)
{
    // 自分の得意な言語で
    // Let's チャレンジ!!

    char str[1000];
    char *tp;
    int H, W;
    fgets(str, sizeof(str), stdin);
    tp = strtok(str, " ");
    H = (int) strtol(tp, NULL, 10);
    tp = strtok(NULL, " ");
    W = (int) strtol(tp, NULL, 10);
    // printf("%d %d\n", H, W);
    
    int i, j;
    char field[H][W];
    for ( i = 0; i < H; i++ ){
        fgets(str, sizeof(str), stdin);
        for ( j = 0; j < W; j++ )
            field[i][j] = str[j];
    }
    
    int count = 1;
    int flag = IN;
    int vector = RIGHT;
    int h = 0; int w = 0; // current position
    while ( flag ){
        switch ( vector ){
            case RIGHT:
                if ( w+1 == W )
                    flag = OUT;
                else if ( field[h][w+1] == '_' ){
                    w++;
                    count++;
                }
                else if ( field[h][w+1] == '/' ){
                    w++;
                    vector = UP;
                    count++;
                }
                else if ( field[h][w+1] == '\\' ){
                    w++;
                    vector = DOWN;
                    count++;
                    // printf("CP:%d %d", h, w);
                }
                break;
            case LEFT:
                if ( w-1 < 0 )
                    flag = OUT;
                else if ( field[h][w-1] == '_' ){
                    w--;
                    count++;
                }
                else if ( field[h][w-1] == '/' ){
                    w--;
                    vector = DOWN;
                    count++;
                }
                else if ( field[h][w-1] == '\\' ){
                    w--;
                    vector = UP;
                    count++;
                }
                break;
            case UP:
                if ( h-1 < 0 )
                    flag = OUT;
                else if ( field[h-1][w] == '_' ){
                    h--;
                    count++;
                }
                else if ( field[h-1][w] == '/' ){
                    h--;
                    vector = RIGHT;
                    count++;
                }
                else if ( field[h-1][w] == '\\' ){
                    h--;
                    vector = LEFT;
                    count++;
                }
                break;
            case DOWN:
                if ( h+1 == H )
                    flag = OUT;
                else if ( field[h+1][w] == '_' ){
                    h++;
                    count++;
                }
                else if ( field[h+1][w] == '/' ){
                    h++;
                    vector = LEFT;
                    count++;
                }
                else if ( field[h+1][w] == '\\' ){
                    h++;
                    vector = RIGHT;
                    count++;
                }
                break;
            default:
                break;
        }
    }
    
    printf("%d\n", count);
    
    return 0;
}

わかったらまたupしようと思います。

日記:なにすりゃええんや

はい、今日は自分が目指すものについてつらつら書いていきます。


巷でもよく「明確な目標も持つのが大事」とか言われてますが、今まで生きてきて一度もそんなものを持ったことがない身からしてみればなにも想像すらできないわけですよ。

そこで自分が好きそうなこと/得意そうなことを考えてたのですが、余計よくわからなくなりました。。。

なので自分の目標は「さいきょうのエンジニアになる」ということに設定しました。意味わからないですよね。僕もわかりません。

もう少し具体的に話すと、自分はどうもWeb系のフロントエンドにはあまり興味がないらしく、それよりもサーバやらネットワークやらセキュリティやらに惹かれました。

ただそうしたハッカー/セキュリティエンジニアになるにはどうすればいいのかあまり分からなかったので、ひとまずは片っ端から知識をつけていこうかな、と。

まあ本当になにをすればいいのか分からないってのが正直なところです。

具体性のかけらもないのでモチベーションも何もないんだよなぁ。。。


とりあえず当面はインフラやOSなどの知識を付けつつ、何かポートフォリオになるようなものを作れたらな、とか漠然と考えてます。

以上、悩むだけ悩んで何もしない系B4でした。

雑談:お久しぶりです。

お久しぶりです。

なんと三ヶ月ぶりの投稿となってしまいました。。。

特に知識が増えたわけでもないですがとりあえず今月からまた何かしら書き物をするトレーニングを再開しようかと思いまして、用事のない日は内容なんでもいいので毎日投稿しようと決意した次第であります(笑)

もしこれを読まれる奇特な方がいらっしゃればよろしくお願いします!

レビュー: ぷしゅ よなよなエールがお世話になります

久々の投稿。

今回は勉強の話ではなく、タイトル通りレビューを書きたいと思います!

本の紹介

今回紹介したいのはこの本です。

ぷしゅ よなよなエールがお世話になります

ぷしゅ よなよなエールがお世話になります

よなよなエール」「水曜日のネコ」などを販売・製造しているヤッホーブルーイングの社長が書いた本で、エールビールを日本に普及させるために試行錯誤した話をまとめたビジネス書です。

感想

ビジネス書って聞くと大層なものをイメージするかもしれませんが、この本は他のビジネス書とは違ってすごく読みやすく「てんちょ」の経験が語られています。(「てんちょ」というのは著者井出さんのニックネームです)

もはやビジネス書というよりかは、ノンフィクションの小説、と言った方が伝わりやすいかもしれません 笑

さすがに小説ほど細かくストーリーがあるわけでもなく伏線が散りばめられているわけでもないですが、とにかく「てんちょ」の心が直接伝わってくるような、そんな文体です。

僕自身そこそこ本は読むのですが、ここまで惹きこまれた本は久しぶりでした。1


詳細は語りませんが、この本の中では「てんちょ」が経験から得た教訓をそれぞれの章でテーマに設定しながら、誰にでも伝わるような文章で読者にも大きな説得力を持って伝えてくれます。

例えば「スキルは挑戦しながら身につければいい」「ファンは100人に1人でいい」など、社会に出ていない自分2でさえ生きていく上での教訓となるような。

といっても堅苦しいものではなく、「てんちょ」のストーリーがあるからこそ柔軟に解釈ができて自らの体験に落とし込めやすい、そんな文章です。

読まなければ分からないと思いますし、簡単に読み切れるとも思いますので、是非みなさん読んでみてください!


  1. 「出会い系サイトで70人と実際に会ってその人に合いそうな本をすすめまくった1年間のこと」という本も非常におすすめです。

  2. まだ大学生です。社会に出たいような出たくないような…

配列のポインタについて

int a[10] = {1,2,3,4,5,6,7,8,9,0};
int *p = a;

前提

・aは要素数10の int型配列で、初めから10個 int型を入れるスペースを用意
・pは配列のポインタで、「int型を指すもの」である宣言しかしていない。今回は int型配列のアドレスを代入


printf("a[0]: %d\n",a[0]);     // a[0]: 1
printf("p[0]: %d\n",p[0]);     // p[0]: 1
printf("a: %d\n", *a);         // *a: 1
printf("*p: %d\n",*p);         // *p: 1
printf("&a[0]: %p\n", &a[0]);  // &a: 0x7ffee04b4b40
printf("&p[0]: %p\n", &p[0]);  // &a: 0x7ffee04b4b40
printf("a: %p\n",a);           // a: 0x7ffee04b4b40
printf("&a: %p\n",&a);         // &a: 0x7ffee04b4b40
printf("p: %p\n", p);          // p: 0x7ffee04b4b40
printf("&p: %p\n",&p);         // &p: 0x7ffee04b4b20 (これだけ違う)

a[0] = 10;
printf("a[0]: %d\n",a[0]);  // a[0]: 10
printf("p[0]: %d\n",p[0]);  // p[0]: 10
printf("*p: %d\n",*p);      // *p: 10

p[0] = 100;
printf("a[0]: %d\n",a[0]);  // a[0]: 100
printf("p[0]: %d\n",p[0]);  // p[0]: 100
printf("*p: %d\n",*p);      // *p: 100

わかること

  • *p つまり「ポインタ p が指すもの」は配列の頭の要素 ( この場合だと 1 )
  • 配列のポインタは変数として配列と同様の形 ( この場合だとp[0] ) で入力できる ( *p = p[0] )
  • (ポインタでない)配列についてもポインタと同様の表記で値を返せる、つまり配列名はその配列のアドレスを表す ( a[0] = *a ) ( aはアドレス )
  • p はポインタだから a[0]が変われば p ( しつこいが「ポインタ p が指すもの」) も変わる。逆も然り ( a[0] = p[0] = a = *p )
  • 「ポインタが指すもの」が 配列なだけであって、そのポインタのアドレスと配列のアドレスは異なる ( &a != &p )

html, css, js 初心者がいきなり D3.js に手を出した話

おはようございます。

今日はタイトルの通り D3.js という、情報の可視化に適したライブラリを使う話をしたいと思います!

ただ今回も Chromium を手探ると同じように「javascript ? 聞いたことある」状態からスタートなのでとても苦労ですね...笑1

D3.js とは

D3.js is a JavaScript library for manipulating documents based on data. D3 helps you bring data to life using HTML, SVG, and CSS. D3’s emphasis on web standards gives you the full capabilities of modern browsers without tying yourself to a proprietary framework, combining powerful visualization components and a data-driven approach to DOM manipulation.

以上は公式サイトからの引用です。

端的にいうと、データセットの様々な可視化の為にもの凄い役に立つ js のライブラリってことですね。

以下どんな可視化があるか例をあげますと、

f:id:RHys:20181103075039p:plain

こうやってノードごとの関係を可視化したり、

f:id:RHys:20181103075137p:plain

こうやって地図を色分けしたり、

f:id:RHys:20181103075214p:plain

こうやって頻出ワードを抽出したりすることができます。

すごいですよね。こちらから色々なデモが見られるのでよかったらどうぞ。


それでは次回以降 少しずつ D3.js のお話をしていきますね!


参考

D3.jsの概要と使い所について - Qiita


  1. 察しの良い方ならわかる通り、これも後期実習の一環 情報可視化とデータ解析です