So-net無料ブログ作成
前の10件 | -

コンピューターで数学を教える (TED) [英語]

Teaching kids real math with computers

話者のConrad WolframMathmaticaWolfram Alphaを作ったStephen Wolframの弟。数学教育に危機感をもっていて、コンピュータを使った数学教育に関する活動をしている。スピーチもだいたいそのような内容。

話者によれば、数学の教育には4つの重要な段階があるらしい。
  1. 正しい問題設定
  2. 現実の問題を数学の問題に変換
  3. 計算
  4. 結果を現実世界に適用して検証
現在の数学の教育は80%の時間を3番目の計算に費やしているが、その部分はコンピュータにやらせるべき。
コンピューターより先に紙が発明されたからといって、いつまでも紙と手で計算させるのはおかしい。
計算をコンピューターにやらせるとはプログラムを書くこと。
といった内容。それほど難しい言葉は出てこない。

sharpen a quill 羽ペンをとがらせる
quadratic equation 二次方程式
quartic equation 四次方程式
vocational 職業教育(訓練)の
amenable to 適している
roadblock 障害物
not for one minute ちっとも〜しない
leapfrog 追い抜く

シャドウイングの難易度 ★★

ところで、上にもリンクを張ったこのサイトでは、使えるリソースとしてWolfrum Research系のサービスやソフトウェアを使っているので、この話は宣伝なのかもしれない。Pythonや他の言語でも資料を作れば説得力があるのに。
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

電気刺激でうつ病を治療する (TED) [英語]

How electroshock therapy changed me

シャドウイングネタ。
話者である外科医自身が精神を患って入院し、電気刺激で復活するという実体験が出てくる。
回復後は勤務していた病院で医師として復帰たようだ。
イタリアで患者の治療が初めて成功した時の話がおもしろい。
入院以来、何週間もまともな会話ができなかった患者が電気刺激で覚醒して
最初に発した言葉が「××××」。ぜひ聞いてください。

電気刺激治療について日本語の記事を検索したら日経で関連記事を見つけた。Wikipediaもあり。

TEDのビデオには字幕が出せるので、聞き取れない言葉や意味がわからない言葉も辞書で調べられていい。

convulsion けいれん、ひきつけ
camphor ショウノウ、カンフル
mothball 防虫剤
psychiatrist 精神科医
epileptic fits てんかんの発作
temple こめかみ
relapse 再発する
anesthetize 麻酔する
grand mal seizure けいれん大発作
electroencephalographic 脳波の
electroconvulsive 電気けいれんの
acute-care 救急治療の
bovine stercus = bullshit
throbbing ドキドキする
prefrontal lobotomy 前部前頭葉切断術
affect 感情
dull 鈍感になる
stupor 意識朦朧 (名詞)
lo and behold 驚いたことに
demonstrable 明らかな
Basingstoke ベイジングストーク イギリスの地名
resuscitate 復活させる, 生き返らせる
dreg くず
unscathed 無傷の
imposter 詐欺師
on the cusp of 〜の変わり目で
bleakness 侘しさ
resurrection 復活

さすが医師の話だけあって普段あまり聞かない言葉が多い。

シャドウイングの難易度 ★★

nice!(0)  コメント(0) 
共通テーマ:日記・雑感

イルカとの意思疎通 (TED) [英語]

Could we speak the language of dolphins?

シャドウイングネタ。イルカの音声を分析したり意思疎通しようとする話。

イルカに特別な興味はないので、知能がそんなに発達していることは知らなかったし、
固体に特有の名前のようなものがあったり、海藻で遊んだりするなんていう話は聞いていておもしろい。
イルカと会話するために海の中で使えるデバイスまで開発してしまったらしい。
まだ音しか聞いていないが、これはシャドウイングしないでビデオを見ても楽しめるかも。

シャドウイングに関していうと、イルカが発する音が頻繁に邪魔をするので、練習には向いていない。

シャドウイングの難易度 ★★★

nice!(0)  コメント(0) 
共通テーマ:日記・雑感

断食は脳にいい (TEDx) [英語]

Why fasting bolsters brain power
またシャドウイングネタ。
定期的に摂取カロリーを制限(断食)すると脳に良い影響があったり、寿命が延びたりするという話。
intermittent fastingというらしい。

  • 研究室で実験動物に与える栄養を制限すると寿命が延びる。ラットは30-40%長生きする。
  • お腹が空くと食べ物を探すために脳が活性化される。
  • 断食は脳に対するストレスになって、新しい伝達経路が生成される。
  • 同じ効果は活発な運動によってももたらされる。
  • 肥満は循環器疾患や糖尿病だけでなく、アルツハイマーとの関係が疑われている。
  • プラトンも断食していた。

脳に関連する内容だけに、専門用語がむずかしい。

stem cell 幹細胞
axon 軸索
dendrite 樹状突起
synapse シナプス
neurotrophic factor 神経栄養素 (タンパク質らしい)
FDF (fibroblast growth factor) 線維芽細胞増殖因子
BDNF (brain-derived neurotrophic factor) 脳由来神経栄養因子
ketone body ケトン体
epileptic seizure てんかん性発作
oxidative stress 酸化的ストレス

この話はかなりおもしろい。これを聞いたからといって、明日から断食したいとは思わないですけどね。

シャドウイングの難易度 ★★
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

そのコーヒーは死んでいる (TEDx) [英語]

シャドウイングネタを探していて出くわしたビデオ。クセがないアメリカ英語の発音で聞きやすい。専門用語が多量に出てくる内容でもないので気軽に聞ける。ただしシャドウイングするには少し速い感じがする。

What you didn't know about coffee

話者がロースト用の機械や豆を色々試してたどり着いた結論
  • ローストしたての豆でいれたコーヒーは覚醒作用が半端ない。エスプレッソはロースト後11時間が最高の状態。
  • ローストして間もない、生きている豆を使うことが重要。ただし数時間は冷却して寝かせること。
  • ローストしたコーヒー豆は一週間でほぼ死ぬ。最新のパッケージに入れようが窒素を充填しようが関係ない。冷蔵庫や冷凍庫に入れるのは悪影響の方が大きい。
  • 店の棚に何週間もさらされているコーヒー豆は死んでいる。
つまり、うちのNepressoもダメってことか。
そのほかの豆知識。
  • コーヒー豆は原油に次いで世界で二番目にたくさん取引されている商品 (commodity)
  • コーヒーは水に次いて世界で二番目にたくさん飲まれている飲料
  • コーヒーはもともと宗教的な儀式で夜中に起きて祈るために使われていた
  • コーヒーの実にはオスとメスがあり約95%がメス
  • ローストしていない生豆の寿命は数年
といった内容。

シャドウイングの難易度 ★★

nice!(0)  コメント(0) 
共通テーマ:日記・雑感

Programming language and framework in the era of JSON over HTTP [技術]

Nowadays, there are many programming projects that are bound by network transport and data types. HTTP(S) is probably the most popular transport and there are different HTTP server frameworks for different programming languages. So what would be the programming language of choice given a task to solve involving HTTP with a particular data type?

I am writing this post after completing a web service project that has been used for product and deployment testing for a fairly large system across multiple enterprises interconnected with each other. Here are some of the characteristics of the project:
  • HTTP is used as the transport for JSON data. There is no UI involved so no need for HTML or MVC.
  • Language choice is up to myself. No one cares what language I use.
  • Performance is not the primary goal.
  • Learning curve and ease of use are important when choosing a language and a framework.
Nowadays, the data structure is JSON. JSON is transported as text data, so an ideal programming language should be able to marshal/unmarshal (serialize/de-serialize) the data to and from native representation for easy retrieval and manipulation of data.

Another constraint comes from the fact that I am Japanese living in Japan: ideally the language can handle non-ASCII strings without much struggle.

I did not have enough time to try out all the different libraries and frameworks for my task, so I only looked at the documentation and examples before deciding on which language and framework to use.

That said, I am showing working examples of all the candidate languages below. I spent several nights for research and coding for completeness.

I have tested all below codes using curl like:
curl -X POST -H "Content-Type: application/json" -d '{"name":"Taro"}' http://localhost:3000/hello

Java
My language of choice had been Java for a long time mainly due to feature-rich IDEs. However, JSON support at the language level is not comparable to other languages like JavaScript or Python. At least that was my impression off the top of my head based on my past experience with the language. I did not want to use a library that forced the user to define data structures or classes up-front before starting the real task. In any case, org.json.JSONObject may be the choice if you are bound to Java and performance is not much of a concern. The interface is intuitive for a experienced Java developer. As for the REST framekwork, Spark appears simple enough. This is a working exmple that combines Spark with JSONObject:
package SparkSample;

import static spark.Spark.*;
import org.json.JSONObject;

public class MyApp {
    public static void main(String[] args) {
        post("/hello", (req, res) -> {
        	JSONObject body = new JSONObject(req.body());
        	return "Hello " + body.getString("name");
        });
    }
}
It is surprising that this amount of Java code can run a web server as I have not caught up with latest server side technology in Java. I do not even know which line of the above code starts the server that listens on a TCP port. Spark can make servlet a thing of the past.

However, I could not find these libraries while I was looking for a solution. Also, a Java project normally requires a build system like maven or gradle that forces me to write a verbose XML. In fact, I had trouble figuring our all the chores around gradle and Eclipse while trying to compile and run the above simple code. (This is the first time I used gradle.)

JavaScript
I have used this language for a few projects that ran entirely within web browsers, but I do not have real experience building a server app using JavaScript. I have found this framework called Express based on Node.js. Below is a working code based on the examples in the Express site:
const express = require('express')
const bodyParser = require('body-parser');
const app = express()
const port = 3000

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.post('/hello', (req, res) => res.send('Hello ' + req.body.name))

app.listen(port, () => console.log(`Example app listening on port ${port}!`))
Clean but some unfamiliar syntax. As for JOSN handling, the body-parser will convert JSON in a POST body into native data structure in the 'req' object. Accessing properties is very easy.

Perl
I have been a reluctant user of this language from the beginning due to its excessive use of signs or special characters like $ % @ _ => -> ... I still think that these signs decrease readability and writeability of code. I occasionally use it for ad-hoc, small tasks, but not for this one.

Anyway, here is what I found: Mojolicious. JSON handling is already part of the library and data can be accessed very easily:
use Mojolicious::Lite;

post '/hello' => sub {
    my $c = shift;
    my $hash = $c->req->json;
    $c->render(text => 'Hello ' . $hash->{name}, format=>'txt');
};

app->start;
This is as intriguing as Spark, except, I still do not like the way $ is used in this language. I thought hash prefix is %. What is that $ in front of hash?

Python
I had not used Python much for serious projects. However, I realized that it could convert JSON data to and from native representation very easily. Syntax appeared familiar to me as it is closer to C++ and Java-style object-based programming than JavaScript or Ruby. Also there are HTTP/REST frameworks like Flask. Threading is there, too, and data structures that I would use internally were thread-safe. It appeared promising for what I was trying to achieve. Below is a working example:
from flask import Flask, request
app = Flask(__name__)

@app.route('/hello', methods=['POST'])
def hello():
    data = request.get_json()
    return "Hello " + data['name']

app.run(host='0.0.0.0', port=5000, debug=True)
Quite simple and the @ decorator is already familiar to me through Java annotations.

Flask already provides an API for accessing JSON data in a request coming from a client. 'request' is an object that is accessible from a Flask application, and the object has a method 'get_json()'. Then properties in a json object can be accessed in a straight forward way.

Ruby
I was once assigned a project that manipulated Excel spreadsheets by Ruby code. It was ok for that particular task, but I did not like the use of signs in this language either. A REST framework that I have found is Sinatra. I have arranged the example codes in their web pages as below:
require 'sinatra'

post '/hello' do
  request.body.rewind  # in case someone already read it
  data = JSON.parse request.body.read
  "Hello #{data['name']}!"
end
Looks clean, and it works. This is not as bad as I had imagined. It also shows how posted JSON can be handled.

Conclusion
I do not see a clear winner in this comparison. It is a matter of preference. Of course, above examples are only scratching the surface, and you will face idiosyncrasies in each language as you start utilizing more features.

I chose Python this time due to its syntax and because it does not require a build system like maven or gradle up-front.

On the other hand, to me, clear loser appears to be C++. (To be fair, I used to write tons of C++ codes at work!) I have been poking around for C++ libraries for this particular task, but without success. I want to hear from experts how simple it can get in C++ with Boost or some other libraries.
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

TEDの動画から音声だけを取り出す方法 2 [英語]

シャドウイングのためにTEDの動画から音声だけを取り出す方法のふたつめです。とくにTEDの動画に限らず、YouTubeにあるものならどんな動画でも変換できます。GenYoutubeを使います。
  1. YouTubeで目的のビデオを探す。
  2. ブラウザのURLを編集する。URLにカーソルを持っていき、www.をgenに書き換える。
  3. GenYoutubeのページが表示される。下の方にフォーマットを指定してダウンロードするボタンがあるので、MP3 128kbpsかM4A 128abrのボタンを押す。
GenYoutubeサイト側でフォーマットを変換するのにしばらくかかるようですが、少し待つとダウンロードできます。

URLの編集をするのが面倒なら、ブラウザの拡張機能を追加するといいでしょう。GenYoutubeの先頭ページに方法が書いてあります。拡張機能を追加すると、YouTubeの動画の画面にボタンが追加されます。このボタンを押すとGenYoutubeのページに移動してダウンロードが可能になります。

GenYoutubeサイトにはなぜかアダルト系の広告が多い気がするので、会社で使うのは微妙かもしれません。

nice!(0)  コメント(0) 
共通テーマ:日記・雑感

TEDの動画から音声だけを取り出す方法 1 [英語]

シャドウイングのためにTEDの動画から音だけを取り出す方法はいくつかあります。今日はひとつめ。YouTubeで目的の動画が見つけられない時にはこの方法が使えます。
  1. TEDで目的の動画のページへ行くと、動画の右上に「Share」とあるのでクリック。
  2. ダイアログが表示されるので、右のほうの「Download」をクリック。Downloadボタンがない場合はこの方法は使えないので諦める。
  3. ダイアログの下に「Download video」のボタンが表示されるのでクリック。これでMP4形式の動画がダウンロードされる。「Download audio」ボタンもあるが、こちらは冒頭に余計なナレーションが入るようなのであまりお勧めできない。
  4. ダウンロードしたらMac付属のQuickTimePlayerでダウンロードしたMP4を開く。
  5. ファイルメニューから「書き出す」→「オーディオのみ」で場所を指定して保存。
これでM4A形式のファイルができますので、スマホに転送して再生できます。古いAndroidでもM4Aが再生できるアプリはあるので、探してみましょう。

Windowsでも似たような変換方法が使えると思います。

nice!(0)  コメント(0) 
共通テーマ:資格・学び

「ゲームをするように言語を学ぶ」(TEDx) [英語]

前回に続いてTEDネタでシャドウイングです。映像を見ていると気を取られてシャドウイングがおろそかになるので、音に集中した方がよさそう。通勤中に何度も練習しているけど、所々ついていけない箇所がある。

Learning a language? Speak it like you’re playing a video game
マレーシアで英語を教えている人の話。薬局に行った時の体験談がよかった。流暢に英語を喋っているのに終わってみれば何も心に残らない人と、適当な英語でも問題を解決する人の対比がおもしろい。

それから、英語はもはやネイティブスピーカーだけのものではないという話。

地球上で行われている英会話の内訳
- native speakerとnon-native speakerの比率 1:5
- conversations involving non-native english speakers : 96%
- native speaker同士の会話 : 4%

だそうです。

学校では一文字間違えただけで回答に×がつけられるけど、現実の世界では会議やメールで話が通じることの方が重要。

English today is not an art to be mastered. It's just a tool to use to get a result.

だいたいそんな内容です。

シャドウイングの難易度 ★★
nice!(0)  コメント(0) 
共通テーマ:資格・学び

「英語の読み方を学習する新しい方法」(TED) [英語]

最近まとめサイトで見かけたこのつぶやき。
https://twitter.com/taro0829/status/1094146407152287744
めちゃ上手な同時通訳の先輩が「少し」は勉強してるというので何をやってるか問い詰めたら早朝CNNシャドーイング1時間と実践ビジネス英会話暗唱1時間を20年続けている「だけ」と言っていた。つまり最低それ以上の量こなさないと越せないという事実。
刺激されたというか、プロはやっぱりやってるのかとあらためて認識したので、通勤時間にシャドウイングを始めた。
ネタはもっぱらyoutubeにあるTEDのスピーチ。話の内容が面白いので飽きない。
ずっと続けていると日常喋る英語も改善されるかも。

ということで、かなりゆっくりめの録画を見つけたのでメモがてら紹介します。

A New Way to Learn to Read English
自閉症で母語の英語が読めない子供向けに新しい発音記号を作ったというような話。話者は日本に滞在経験があって、仮名に着想を得たそうです。英語ではひとつのアルファベットに何種類も発音方法があるとか、発音しない文字がいっぱいあるとか、小ネタが色々。

途中で人名や大学名が出てくる箇所はちょっと聞き取りにくいけど、この程度の速さなら聞きながら喋れる。もちろん歩きながら声を出すのは息が切れるし、電車でブツブツ喋るのも怪しさ満点なので、声を出さずに口の形だけシャドウイングやってます。声を出さなくても結構口の周りの筋肉が疲れてくるので効果ありそう。

おためしあれ。

シャドウイングの難易度 ★
nice!(0)  コメント(0) 
共通テーマ:資格・学び
前の10件 | -