リンク:JILIS 著作権侵害サイトによる海賊版被害対策に関するシンポジウム

大変、勉強になった。
togetter.com

www.slideshare.net

途中に出てくる用語でわからなかったもののメモ

「OP53b」
jprs.jp

「通信の秘密」について、IPアドレスとポート番号をチェックしてはいけないのならばルータ、特にNATやNATPは成り立たないのではないか?という疑問。

卒論・修論のバックアップをとろう

にゃーん。


バックアップの基本的考え方

バックアップは次のトラブルから対象データを守るために行う行為です。

  1. 作業環境のトラブルによるデータの消失を防ぐ(普段使用しているパソコンが壊れた。停電などによりデータが壊れた等)
  2. 自分の操作ミス、判断ミスによるデータの消失を防ぐ(手がすべって消すべきでないデータを削除してしまった。いらないと思って削除した文章をもう一度使いたい等)

上記のトラブルから対象データを守るために、バックアップは以下の条件を満たすように実施しないといけません。

  1. 地理的に異なる2か所以上にデータを保存する(普段使用しているパソコンとは物理的に異なる場所にデータを保存する。)
  2. 今現在のデータだけでなく、過去のデータにもアクセスできるようにデータを保存する(少なくとも1週間前のデータを復旧できるように保存する)

バックアップは継続的に行えなければ意味がありません。このため、自分の情報技術に対する知識や技術に応じて、負担のない方法でバックアップをとりましょう。

難易度 低、効果 大:毎日作業終了後にgmailに送り付ける

バックアップ対象のファイルがそれほど多くない場合(たとえば、バックアップ対象のファイルがMS Wordファイル1つのときなど)は、毎日の作業終了後にgmailなどのWebメールサービスにファイルを送信するのが、簡単、かつ、効果的なバックアップ方法です。メールで送信するときに簡単なメモ(今日はどこを執筆したのか、修正したのか。明日は何をすべきなのか)を一緒にかけばより効果的です。

  • gmailに送り付けるとデータは地理的に異なるデータセンターに保存されます
  • メールの日付をみれば、いつの時点のデータなのか確認できます。
  • Webにアクセスできるならば、異なるパソコンで作業を継続できます。

準備はGoogleアカウントを作成するだけです(もし、持っていなければ)
support.google.com

バックアップ手順は以下のとおり

  1. 作成したGoogleアカウントあてにメールでバックアップ対象のファイルを送ります。
  2. 当該メールを保存するフォルダを作成し、そこにメールを保存します(検索しやすくするため)

難易度 中、効果 中:Onedrive、GoogleDrive、Dropboxなどのオンラインストレージに日付別でファイルを保存する

バックアップ対象のファイルが多く、それなりの容量がある場合(たとえばファイルサイズが10Mbyte以上)はオンラインストレージを用いたバックアップが比較的簡単です。しかし、作業ミスに弱い欠点があります。

  • オンラインストレージに保存したデータは地理的に異なるデータセンターに保存されます
  • オンラインストレージは(基本的には)現在、使用しているパソコンの対象フォルダをコピーします(これをミラーリングという)。この結果、自分で日付を区別しないと保存対象のファイルは上書き保存されます。
  • オンラインストレージは変更されたファイルを識別し、オンラインストレージ上に当該ファイルを保存します。このため、作業ミスでファイルを削除してしまうとその結果が反映されてしまいます。

オンラインストレージを使ってバックアップを取る際にはWindowsの「ファイルの圧縮」と「圧縮ファイルの展開」機能を利用して、バックアップ対象のファイルを1つのファイルにまとめます。また、その際に圧縮ファイルのファイル名に日付を付け加え、過去のデータにアクセスできるようにします。

以下の手順でバックアップを行います。

  1. 作業終わりにバックアップ対象のファイルが格納されているフォルダを「ファイルの圧縮」をもちいてzipファイルに圧縮する。
  2. その際に、圧縮ファイル名として日付情報を「YYYYMMDD-hhmm」という形で加える。YYYYは西暦4桁表記、MMは月の2桁表記、DDは日の2桁表記、hhは時間の24時間表記、mmは分の2桁表記。
  3. 作成した圧縮ファイルをオンラインストレージと連携させているフォルダに保存する。

大学でOffice 365を契約している場合はOneDriveを使うのが簡単だと思います。

Googleドライブは15GBまで無料とのことです。

Dropboxは無料で使える容量が2GBなのであまりお勧めできません。

iCloudも一つの選択肢です

難易度 高、効果 大:Onedrive、GoogleDrive、Dropboxなどのオンラインストレージ+バージョン管理システム

オンラインストレージを使うときのデメリットは作業ミスに弱いという点です。一方で、作業ミスへの対応を考えたデータ管理のソフトウェアとしてバージョン管理システムがあります。オンラインストレージ+バージョン管理システムは、難易度が高いですが大変効果的なバックアップ方法です。

  • オンラインストレージに保存したデータは地理的に異なるデータセンターに保存されます
  • オンラインストレージにバージョン管理システムのリポジトリ(バージョン管理システムでデータを管理しているデータベース)のみを保存することで、作業ミスがおこらないようにできる(手動ではオンラインストレージと連携しているフォルダ内のデータを触らない)
  • バージョン管理システムにより、過去データを復旧することができる。

バージョン管理システムとしてはGit、Gitを簡単に扱うためのツールとしてTortoiseGitを利用する。実施方法は説明が長くなるので以下のサイトをどうぞ。

難易度 高、効果 大:GitHub + Git

どうせ、Gitでバックアップをとるならば、オンラインストレージにGit専用のものを使うとより便利になります。利点は上述のオンラインストレージ+バージョン管理システムと同じ。より良い点は作業状況管理についてもGitHubを用いて行えるという点です。実施方法は以下を参照ください。

難易度 低、効果 小~高:Mac OSのタイムマシンを利用する

Mac OSの利用者の場合はタイムマシンという機能を使ってバックアップを取るのが大変簡単だと思います。ただし、タイムマシンは作業ミスには対応しますが、地理的な分散を行う場合はiCloudなどを使う必要があります。

おわりに

そろそろ、卒業論文や修士論文の季節が本格的に始まるのでまとめてみました。みなさん、よい論文執筆ライフを!!

Ruby on Rails 5.2.1 上でdevise 4.5.0を利用する

目的

Ruby on Railsでよく使われている認証周りのgemライブラリーであるdeviseをつかってログイン機能を用いる。 deviseの標準ではemailに基づいてユーザを区別しているが、usernameでユーザを区別できるようにする。

環境

% lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.1 LTS
Release:	18.04
Codename:	bionic

% ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]

% gem -v
2.7.7

% rails -v
Rails 5.2.1

新しいプロジェクトの生成

% rails new prac_devise --skip-bundle
% cd prac_devise
% cp -p Gemfile Gemfile.org
% vi Gemfile

Gemfileの中身を以下のように変更する。

% diff Gemfile.org Gemfile
17c17
< # gem 'mini_racer', platforms: :ruby
---
>  gem 'mini_racer', platforms: :ruby
62c62
< gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
---
> #gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
63a64
> gem 'devise'

bundleを実行する。

% bundle install --path vendor/bundle

ダミーモデルの作成

今回はHomeコントローラーを作成し、indexにアクセスする際にはログインなし、showにアクセスする場合はログインありに設定する。このためにHomeコントローラーを作成する。

% rails g controller Home index show

このアプリケーションのトップページをHome#indexとする。

% vi config/routes.rb 

中身に以下を加える。

root to: "home#index"

Deviseのインストール

このアプリケーションでdeviseが使えるように設定する。

% rails g devise:install

今回はUserモデルを認証対象のモデルとする。

% rails g devise User

devise用のviewを app/views/devise 以下にコピーする。

% rails g devise:views
% ls app/views/devise/
confirmations/	passwords/	sessions/  unlocks/
mailer/		registrations/	shared/

メールに記述するURLの設定

config/environments/development.rb に以下を加える。

# mailer setting
 config.action_mailer.default_url_options = {host: 'localhost', port: 3000}

エラーメッセージを表示できるようにする。

app/views/layouts/application.html.erbに以下を加える。

〜省略〜
  <body>
    <p class="notice"><%= notice %></p> #この行を追加
    <p class="alert"><%= alert %></p>        #この行を追加
    <%= yield %>
  </body>
〜省略〜

User#showへのアクセスをログインした場合のみにする

app/controllers/home_controller.rb にフィルターをかける。

class HomeController < ApplicationController

  before_action :authenticate_user!, only: :show #この行を追加

  def index
  end
〜省略〜

試してみる

% rails db:migrate
% rails s
(終了させるときは Ctrl + c)

識別キーをusernameに変更する

まず、usersテーブルにusernameを追加する。

% rails g migration add_username_to_users username:string

db/migrate/xxxxxxxxx_add_username_to_users.rb を編集し、usernameをインデックスとして使えるように以下を追加する。

class AddUsernameToUsers < ActiveRecord::Migration[5.2]
  def change
    add_column :users, :username, :string
    add_index :users, :username, unique: true #この行を追加
  end
end

上記の変更を反映させる。

% rails db:migrate

識別キーをusernameに変更する。 config/initializers/devise.rbに以下の行を加える。

〜 省略 〜
  # You can also supply a hash where the value is a boolean determining whether
  # or not authentication should be aborted when the value is not present.
  # config.authentication_keys = [:email]
  config.authentication_keys = [:username] #この行を追加
〜 省略 〜

ログイン(sign in)、ユーザ登録(sign up)、情報変更のページでusernameを入力できるように変更する。

ログインページ(app/views/devise/sessions/new.html.erb)の編集。

変更前
    <%= f.label :email %><br />
     <%= f.email_field :email, autofocus: true, autocomplete: "email" %>
変更後
     <%= f.label :username %><br />
     <%= f.email_field :username, autofocus: true %>

ユーザ登録ページ(app/views/devise/registrations/new.html.erb) の編集。

変更前
     <%= f.label :email %><br />
     <%= f.email_field :email, autofocus: true, autocomplete: "email" %>
変更後
     <%= f.label :username %><br />
     <%= f.text_field :username, autofocus: true %>

情報変更のページ(app/views/devise/registrations/edit.html.erb)の編集。

変更前
     <%= f.label :email %><br />
     <%= f.email_field :email, autofocus: true, autocomplete: "email" %>
変更後
     <%= f.label :username %><br />
     <%= f.text_field :username, autofocus: true %>

usernameにvalidateを設定およびemailを利用しないことを設定する。

app/models/user.rb について以下を追加する。

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable

# この行以下を追加する

# usernameの制約
  validates :username,
            uniqueness: {case_sensitive: :false},
            length: {minimum: 4, maximum: 20},
            format: {with: /\A[a-z0-9]+\z/, message: "ユーザ名は半角英数字です"}

# emailを識別キーとして使わない場合の処理
  def email_required?
    false
  end

  def email_changed?
    false
  end
  
  def will_save_changed_to_email?
    false
  end
 
# 追加ここまで
end

strong_parameterの設定

Ruby on Rails4よりStrong Parameterという仕組みが導入されている。これの設定が必要。 app/controllers/application_controller.rb に以下を加える。

  # deviceのコントローラーのときに、下記のメソッドを呼ぶ
  before_action :configure_permitted_parameters, if: :devise_controller?

  protected
  
 # usernameを追加する 参考:https://github.com/plataformatec/devise#strong-parameters
  def configure_permitted_parameters
    devise_parameter_sanitizer.permit :sign_up, keys: [:usrname]
    devise_parameter_sanitizer.permit :account_update, keys: [:username]
  end

試してみる

% rails db:migrate
% rails s
(終了させるときは Ctrl + c)

半径5mの観察からみる最近のオープンキャンパス

タイトルに予防線はりまくりですが。

@nasastarさんのツイート読んで、「大学にずっといるから、今の大学の状況は私にとって当たり前だけど、卒業した人たちからすると全然違っているんだよなぁ」とあらためて思ったので、ここ5~6年間で顕著になったオープンキャンパスの現状(ただし、私の本務校&所属学部)をメモする。

5~6年前の印象

  • 高校3年生が参加している
  • 友達同士での参加が多い
  • 親の参加は片親(父親か母親)。ただし、数は多くない(全体の4分の1以下)。
  • 学食に興味津々(午前中だと学食混まないうちに行きたいのか、模擬講義をエスケープする子も多かった)

最近の印象

  • 高校1~3年生が参加している。どちらかというと以前に比べて3年生は少ない(参加高校生の半分ぐらい)
    • 高校が夏休みの宿題としてオープンキャンパスへの参加を課している(2~3校ぐらい)。この結果、@nasastarさんのツイートような事態が生じている。私の本務校ではハンコ対応窓口を別途用意するようになった(それだけ多い)。
    • 2~3年生のときにオープンキャンパスに参加済みだからか、高校3年生の参加は少なくなっている(他校に行っている可能性もある)
  • 友達同士での参加は引き続き多い。
  • 家族での参加も多くなった。両親や兄弟姉妹での参加も多い。この結果、オープンキャンパスへの参加人数が1.X倍~3倍ぐらい増えた。
    • 親だけの参加もちらほらみられる(もしかしたら、子供は別の学科・学部の方に参加しているのかもしれない)
    • 高校1~2年生&親で参加というケースも結構ある。このため、これまで定番の「入試制度について教えてほしい」に加えて、「これからどうやって勉強していったらよいのか」「どの学部・学科に入ったらよいのか」という相談も結構受けるようになった。
  • 学食はひきつづき大人気。

実施側の変化

  • 私が勤務し始めたころにくらべ、大学がオープンキャンパスに費やす人的・時間的・金銭的コストは上がっている。つまり、より親切に、ていねいに、わかりやすくなった。
    • 教職員の投入量増えた
    • 学生アルバイトも増えた
    • 企画(キャンパスツアー、展示)および配布物(大学、学部、学科パンフレット、大学を宣伝するパンフレットなど)も増えた
    • 大学と最寄りの駅を行き来するバスも増便してもらっている
  • 上記の結果、8月は忙しい
  • 親の参加が多くなった点については結構対応している(就職率や卒業後の進路のアピールもあり)
  • 高校1~2年生の参加が多いという点にはまだ対応できていない気がする

今年度困ったこと

  • Q:「私、高校1年生なんですけど平成32年度(next49注:まあ、そんなときは来ないのですが)のセンター入試ってどうなっているんでしょう?」
  • A:「どうなるんでしょうねぇ。私も大学教員なんですがわからないんですよ。今年の11月のプレテストやってみないと…」

リンク:お決まりの方法では解決しない「VMware Authorization Service」

まさにここにあるとおりのエラーに直面した。解決法を共有していただけるのは本当にありがたい。TBS熊崎アナウンサー式に言ういうと「ただただ、感謝」。

yvernis.blog.fc2.com

ちなみに一番最初の「コンピュータの管理」にたどり着く方法は

  1. デスクトップ左下のWindows 10のアイコンを右クリックする。
  2. 「コンピュータの管理」を選択する。