YAPC::Fukuokaに初参戦!!!

今回参加したきっかけは友達の一言でした。


YAPCがFukuokaであるよ!!


出身が福岡県ということもあり速攻で参加することを決めました!

 

僕は,Perlの基礎が少しわかる程度で全く書くことはできないのですが,

それでもエンジニアの方と交流できるだけで参加の価値があると思ったので参加しました。

 

 

僕は,前夜祭からの参加したのですが,

もう前夜祭のLTソンから凄まじい盛り上がりでとてもびっくりしました!

f:id:takezyo:20170704011016j:plain

 当日はLINEキャラクターのお出迎えがありました。

 

 印象に残ったトークの話になります。

f:id:takezyo:20170704011010j:plain

ベストトーク賞を獲った@ockeghemさんの「ウェブセキュリティの最近の話題早分かり」,まったくPerlがわからなくてもIT業界にいるなら知っていた方がいいことや最近の脆弱性を知ることができました。また,かなり分かりやすいデモと笑いも少しあってとても勉強になるものでした。

 

Perl6の話題もかなり興味深いものになっていて,わからないことのほうが多かったのですが,調べて勉強してみようと思います。

 

f:id:takezyo:20170704011116j:plain

懇談会終了後,中洲の屋台で食べた焼きラーメンも最高でした!!!

まとめ

今回初めてYAPCに参加して,さまざまな技術の話を聞くことや技術者の方と交流することができ,素晴らしい経験ができたと思います。

これもスポンサー,スタッフ,スピーカー,参加者の皆様のおかげだと思います。

本当にありがとうございました。

次回のYAPC::Okinawaにもぜひ参加したいと思います。

 

YAPC::Fukuoka サイコー!!!!!

西野カナの歌詞スクレイピングしてみたよー

3ヶ月前くらいの話です。
GithubGistに公開したのでブログ更新します!!!

なぜ西野カナスクレイピングをしようと思ったかと言うと, PyData.Okinawa #20であったRNN(リカレントニューラルネットワーク)で 次にくる文字を予測というのがあり誰かの歌詞を予測してみようということから西野カナの歌詞をスクレイピングしてみました。

歌詞の情報をスクレイピングできるサイトは限られています。
※正直コードは汚いです。

Ryu SDN Framework を導入する

<構築環境>

<VMを作成>

$  mkdir ryu
$  cd ryu
$  vagrant init
$  vim Vgrantfile

ubuntuのイメージのダウンロード

$  vagrant box add ubuntu1604lts https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-vagrant.box

Vgrantfileを編集

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu1604lts"

  config.vm.network "private_network", ip: "192.168.33.16"
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "2048"
  end
end

編集が終わったらVMを立ち上げます

$  vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'ubuntu1604lts'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: ryu_default_1493789865556_15822
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
<省略>

立ち上がったらログインします

$  vagrant ssh

Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-38-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

0 packages can be updated.
0 updates are security updates.

ubuntu@ubuntu-xenial:~$

<Ryuのインストール>

まずapt-getをアップデートします

$  sudo apt-get update

pythonがなかったのでpythonをインストール(pythonは2.7系)
同時にpipとその他もインストールします
pipがインストール終わったらアップグレード

$  sudo apt-get install -y python
$  sudo apt-get install -y python-pip python-dev libxml2-dev libxslt-dev zlib1g-dev
$  sudo pip install --upgrade pip

それではRyuをインストールします

$  sudo pip install ryu
$  ryu --version
ryu 4.13

Ryuのインストールが完了
Mininetを使用することにより、ユーザは複数台のPCを用意する事なくOpenFlowが動く環境を簡単に用意できるので次にMininetインストール
gitがインストールされてないならgitをインストール

$  git --version
git version 2.7.4
$  git clone git://github.com/mininet/mininet
$  cd mininet/
$  git checkout -b 2.2.1 2.2.1
$  cd ..
$  mininet/util/install.sh -nfv
$  man mn

man mnインストールできているか確認 Mininetのインストールが完了

<RyuとMininetの動作確認>

サンプルが以下のディレクトリに入っている /usr/local/lib/python2.7/dist-packages/ryu/app/ 実行時にこのパスを入力するのは面倒なのでシンボリックリンクを作る

$  ln -s /usr/local/lib/python2.7/dist-packages/ryu /home/ubuntu/ryu

コンソール2つ開いてMininetとryu-managerを触る
まず,コンソール1でsimple_switch.pyを起動し、接続する

$  ryu-manager ryu/app/simple_switch.py

この時に,error: [Errno 98] Address already in useというエラーがでたら下記を実行する

$  sudo lsof -i -nP
ovs-testc 16342   root    3u  IPv4  40523      0t0  TCP *:6653 (LISTEN)

上記のプロセスがあるならkillする

$  sudo kill 16342

コンソール1でsimple_switch.pyを実行しておき
コンソール2でMininetを実行する

$ sudo mn --controller remote
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2 
*** Adding switches:
s1 
*** Adding links:
(h1, s1) (h2, s1) 
*** Configuring hosts
h1 h2 
*** Starting controller
c0 
*** Starting 1 switches
s1 ...
*** Starting CLI:
mininet> 

pingallと入力すると下記のようになればOK

mininet> pingall
*** Ping: testing ping reachability
h1 -> h2 
h2 -> h1 
*** Results: 0% dropped (2/2 received)

これで動作確認完了です

<参考文献>

【SDNチャレンジ】 第16回 Ryuコントローラインストール編
Mininet + ryu インストールと実行まで