英語を勉強したくなった

初めに

今ニューヨークに居る。内容については後でまとめる。 こっちに来て現状の英語学習の限界とモチベーションが上がったことについて書く。

現状の英語学習

DMM英会話

eikaiwa.dmm.com

これで一日30分英語で会話している。 1ヶ月5000円ぐらいなのでふつうに良い、基本的にフリートークにして英語で会話を作ることに専念してる。
大体1ヶ月たったぐらい

NYに来て

DMM英会話のお陰で少しは聞き取る事ができると実感した(本当に)
英語は慣れというのは本当っぽい

気がついた点

体力、大事

酒を飲んでいたり作業をしてたりしていても体力があると聞き取れるが . 疲れてくると本当に聞き取れない、やばい
訂正機能が機能しなくなり何言ってるのか全くわからなくなる。しんどい
そもそもこっち来てデフォルトで英語を聞き取る事に体力を使っているので1日持たない。
 技術的な話は割となんとかなる。「ここの設定教えて」とか「どういうアルゴリズム使っているの?」は元が英語なのでそのまま意思疎通ができる。良い

英語やりたくなった点

今回は自分達が作ったライブラリの紹介、宣伝として来ているのもあるが日本発のOSSということでみんな日本のことについてとても聞いてくるし、適当に話しかけると割と盛り上がる。日本に関してみんなある程度興味持ってる。

  • 「日本て○○が○○なんでしょ!???」「そうだよ」「Oh!!!My!!Goooood!!!」
  • 「日本は前2年間行った事があるわ」
  • 「あの料理、○○がすき」
  • 「アニメ、見てるよ」

等々結構盛り上がる。が、盛り上がり過ぎて聞き取れなくなる問題が発生する
せっかく日本について盛り上がってるのに意思疎通できないのホンマにしんどい
そういう意味では英語を学習しよう、と言うモチベが湧いてきた。
あと今回は上司と二人できているが理由はともあれ上司はめちゃくちゃ英語ができる。
上司が流暢に日本の事について話してるのをみるとやはり日本の事を英語で伝えられる程度の英語力は必要だと感じた

とりあえずDMM英会話の4倍の速度で会話できるようになりたい

eikaiwa.dmm.com

カプチーノと言うライブラリを使いたかった

初めに

この記事はごちうさ Advent Calendar 20167日目の記事です。 www.adventar.org 遅れてしまって申し訳ないです .
(と思いつつ,今の時刻は2016/12/7 14:00(EST東部時間)なので許していただけると……、と言う気持ちです。)

モチベーション

このようなライブラリを見つけました。
GitHub - cappuccino/cappuccino: Web Application Framework in JavaScript and Objective-J
しかし JavaScriptもObjective-Jも触ったことがないのとより身近なライブラリを作って
出来る限りチノちゃんと一緒にコントリビュートしたということでカプチーノと言うライブラリを作りました。
今回はこれを紹介したいと思います

  • 「この部分はチノちゃんに働いてもらう?」
  • 「ココはチノちゃんが働いているから問題ないと思うよ」 等が聞こえるチームにしたいです。

作ったもの

github.com

C言語のSocket周りの練習がてら上の夢をかなえるために動きだしました。

環境

READMEにも書いてあるのですが基本的にc++14がビルドできる環境なら動きます。 シンプルにしたかったのでboostは使ってないです。

簡単な例

#include "../cappuccino.hpp"
#include <json.hpp>

using json = nlohmann::json;
using Response = Cappuccino::Response;
using Request = Cappuccino::Request;

int main(int argc, char *argv[]){
    Cappuccino::Cappuccino(argc, argv);

    Cappuccino::templates("html");
    Cappuccino::publics("public");

    Cappuccino::route<Method::GET>("/",[](std::shared_ptr<Request> request) -> Response{
        auto res =  Response(request);
        res.file("index.html");
        return res;
    });

    Cappuccino::run();

    return 0;
}

こんな形でかけます。

実行

$ ./chino
$ curl -X POST   http://localhost:1204/

改善点

  • スレッドプールとか作りたい
  • 一応RFCは見ているが本当に準拠してるのか修正
  • C++の書き方わからない

作ってみて

  • チノちゃんと何かモノを作ると言う経験が可能になったのは大きい。
  • port番号の意味でチノちゃんの誕生日を共有しやすくなった。

最後に

チノちゃん誕生日おめでとう!いつも癒やしありがたき🙏

SCTPを使ってみた//WIP

WIPです

本当に申し訳ないですが日本時間には間に合いそうにないです…… すみません(2016/12/6 AM 8:15)

はじめに

この記事はAizuAdventCalenderの記事である。 一つ前は misoton665 さん 一つ後は 0xShone さんです。 よろしくおねがいします。

モチベーション

SCTPと言うプロトコルを知り良さげだと感じたのとLinuxAPIがあると知って やってみたくなった

SCTPとは

Stream Control Transmission Protocol

と言うプロトコル

RFC4960で書かれている . RFC 4960 - Stream Control Transmission Protocol

簡単に説明するとTCPの様な信頼性は担保したいが制約が多すぎるので作られたのがSCTP。
公衆電話通信用に作られたが他の用途でも使うことができる。
TCP,UDPに比べあまりポピュラーではないがLTEトランスポート層でも採用されている。

TCPと比べて良い点

       Features                         TCP     SCTP
multi-streams support                    No     Yes
multi-homing support                     No     Yes
preservation of message boundaries       No     Yes
unordered reliable message delivery      No     Yes

マルチホーミングとは複数の経路を使ってアクセスすることができる機能

使い方

LinuxAPIでサポートされているので普通に利用できる https://tools.ietf.org/html/draft-ietf-tsvwg-sctpsocket-10

環境

Ubuntu 16.0.4 gcc 5.4.1

下準備

sudo apt install libsctp-dev

簡単な実装(server)

#include<sys/socket.h>
#include<netinet/in.h>
#include<netinet/sctp.h>

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

#define MAX_LISTEN 10
#define BUFSIZE 2048

int main(){
  int sockfd;
  struct sctp_sndrcvinfo sndrcvinfo;
  sockfd = socket(PF_INET, SOCK_SEQPACKET, IPPROTO_SCTP);
  if(-1 == sockfd) {
    perror("error open socket");
    exit(EXIT_FAILURE);
  }

  struct sockaddr_in server, from;
  memset( &server, 0, sizeof(server));
  server.sin_family = AF_INET;
  server.sin_addr.s_addr = htonl( INADDR_ANY );
  server.sin_port = htons(1204);

  if(-1 == bind(sockfd, (struct sockaddr *)&server, sizeof(server))) {
    perror("error bind");
    close(sockfd);
    exit(EXIT_FAILURE);
  }
  if(-1 == listen(sockfd,  MAX_LISTEN)) {
        exit(EXIT_FAILURE);
  }

  struct sctp_initmsg sctp_init;
  /*
  num_ostreams: number of outbound streams;
  max_instreams: max number of in-bound streams;
  max_attempts: max re-transmissions while establishing an association;
  max_init_timeo: time-out in milliseconds for establishing an association.
  */
  memset( &sctp_init, 0, sizeof(sctp_init));
  sctp_init.sinit_num_ostreams = 10;
  sctp_init.sinit_max_instreams = 10;
  sctp_init.sinit_max_attempts = 0;
  sctp_init.sinit_max_init_timeo = 0;

  int opt = 1;
  setsockopt(sockfd, IPPROTO_SCTP, SCTP_INITMSG, &sctp_init, sizeof(sctp_init));

  if(listen(sockfd, 1) < 0) {
    perror("error listen for connection");
    exit(EXIT_FAILURE);
  }

  const char* message = "Hello world";
  char buffer[BUFSIZE];

  printf("start listen loop\n");
  int msg_flags;
  while(1) {
    int resv_size =  sctp_recvmsg(
      sockfd,
      buffer,
      strlen(buffer),
      (struct sockaddr *)&from, // sockaddr * from
      &len,            // socklen_t * fromlen
      &sndrcvinfo,             // struct sctp_sndrcvinfo
      &msg_flags               // int * msg_flags
    );
    if(-1 == resv_size) {
      perror("error receiving message");
      exit(EXIT_FAILURE);
    }

    buffer[resv_size] = 0;

    int ret = sctp_sendmsg(
      sockfd,
      (void *)buffer,
      (size_t)strlen(buffer),
      NULL, // struct sockaddr *to
      0,    // socklen_t tolen
      0,    // uint32_t ppid
      0,    // uint32_t flags
      0,    // uint16_t stream_no
      0,    // uint32_t timetolive
      0     // uint32_t context
    );

    if(-1 == ret) {
      perror("error sending message: ");
      exit(EXIT_FAILURE);
    }
  }

  return 0;
}

コンパイル

gcc sctp.c  -lsctp

進捗

error open socket: Socket type not supported

Ref

http://www.asahi-net.or.jp/~aa4t-nngk/ipttut/output/other/rfc3286.txt マルチホーミング

http://tech.queryhome.com/44164/what-is-the-main-advantage-of-using-sctp-over-tcp-ip

大学院入試辛かった

結果的にアレだったがどうせなのでメモしておく。
自分は入試に向かないなという気持ちで胸がいっぱい

英語

大学的に大丈夫だろうと思いつつ不安だったので一工夫した。
具体的には東山奈央さんの声を耳に馴染ませ全ての英文が東山奈央さんの声で再生されるようにした。
これにより英文を読むことで気分がよくなる->英文を読みたくなるの流れをつくっていった。
その結果入試とは関係無いが英語が好きになった。イギリスに行きたい。

ポイントとして

「きんいろモザイク」と英語レッスン

「きんいろモザイク」と英語レッスン

これを読むと九条カレンちゃんで脳内再生されるのでとっかかりとしてはいいと思う。

www.marine-e.net

これも定期的に聞こう。

実技(プログラミング)

とりあえずC++書いた。実技の問題は特に難しいアルゴリズムというより
なんか1つできる言語あるんすか?てなのを調べるのが目的だと勝手に感じた。
普段書いてる言語を使えるようにしておけばいいと思う。(ファイル入出力とかスレッドとか痒いところが出る)
自分のPCを使うことができる利点として彼女たちと一緒に試験を受けられるということがある。

f:id:mizukisonoko:20160908225314j:plain しゅき〜❤️

筆記(情報工学)

前日にMAに参加してて割と対策していなかった。

hacklog.jp

hacklog.jp MAではとりあえず仮想通貨システムをブロックチェーンで作った。
東北予選で優勝!wだったので東北代表😄。スフィアかわいい。

今年の試験の内容はロボット工学と論理回路周り。
会津大の授業で履修した内容がそっくりそのまま出てたのでアド。

面接

1 vs 14てめげるわぁ😥(末原恭子 in 咲-saki-)
という感じ。第二志望の方は適当に書いていたので理由聞かれて気まずくなった。

シンフォギアライブ2016の円盤を手に入れることができたので面接頑張れた

感想

外部進学なので待ち時間は回線がなく辛い。
今回はiPad pro+iPencilを持って行ったのが功をなして暇をつぶせたのがアド。
当然だが試験時間はオフラインなのでかなりしんどい。合計10時間ぐらいオフラインなので辛い。
入試嫌い。

GitHubで大学課題を管理した

さいしょに

私の通う大学には”言語処理系論”と言う講義がある。
簡単に内容を説明すると言語処理の手順を学びつつ自作言語と自作コンパイラを作っていく面白い授業だ。
なお、この講義の演習はチーム制であり、提出方法は学内の自分のホームに作った専用フォルダに指定時間内に置いておくといううものである。

今回、GitHubのprivate repoが大幅値下げされたことに伴って課題をGitHubを使って提出する方法を共有しようと思う

背景

  • 自分含め3人のチーム開発
  • 提出先は~/lp/ex**, testdir内に入ってmake,testall.shをしてその結果ACなら問題無い

下準備1 GitHubAccess Tokenを取る

curl -u 'MizukiSonoko' -d '{"scopes":["repo"],"note":"Help example"}' https://api.github.com/authorizations

下準備2 各種変数

Repository名を入れる

REPO_NAME="LanguageProcessingInUoA"

GithubnのAPIKeyを入れる

API_KEY="RabbitHouseTeaParty"

Scriptを書く

gist1eee3bd7b12882bbff97bb78e58988e2

 使い方

./deploy.sh ex04

的な

運用

とりあえずdevで開発、testが通ったらmasterにPRしていった。
マージして、上のscriptを走らせてたら無事提出できてたっぽい。

結果

Bもらった!!!!!

今後

もう課題提出の講義が無いので後輩にはtravisとか色々導入してより良い課題提出環境を作っていってほしい。