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

やればできる (TEDx) [英語]

The power of believing that you can improve

かなり前にはやった「やればできるの研究」の著者の話。内容は本とだいたい同じで、fixed mindsetとgrowth mindsetについて喋っている。
  • シカゴのある高校で及第点を取れなかった授業の成績に「Fail (落第)」の代わりに「Not Yet (まだ)」と書いていたらしい。
  • 少し難しい問題を出された時に、自分の知性が試されていると感じる生徒と、能力を伸ばすことができると感じる生徒がいる。
  • 生徒が間違いを犯した時の脳の活動状態を調べたところ、fixed mindsetの持ち主の脳にはほとんど活動がなかったが、growth mindsetの持ち主の脳は非常に活発だった。
  • 能力や知性を褒めるのではなく、努力の過程を褒めるとよい。
  • 難しい課題に挑戦すると脳のニューロンに繋がりが強化されてだんだん賢くなる、ということを理解した生徒はだんだん成績が伸びる。
非常にゆっくりしゃべるのでシャドウイングがやりやすい。それほど難しい言葉も出てこない。最初はこういう話で練習するのがいいかもしれないが、こればかりだと早い話についていけなくなりそう。

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

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

TEDを聞いてもあなたの行動が変わらない理由 (TEDx) [英語]

Why TED Talks Don’t Change People’s Behaviors

なんか研究者とか招聘して高尚なふりしてるけど、つまるところTEDは娯楽だよって話でいいと思われ。
いろんな人のいろんな話を引用しているのが悪い方向に作用して上滑り。
結局、話者自身のまとまった話として通底するものが汲み取れない。
スピードは速くないし間も開くから比較的ついて行きやすいのに、
話の内容は頭に引っかからず、段落が切り替わるたびにするりと抜けていってしまう。
逐次通訳ならそれなりにできそうな気がするが、なんだろうこの感覚。
何度聴いても頭に残らない。断食の話とかコーヒーの話なんかもっと刺さったのに。

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

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

緊張で失敗する理由と失敗しないための方法 (TED) [英語]

Why we choke under pressure -- and how to avoid it

久しぶりにシャドウイングしやすい話者。内容もまぁまぁわかりやすい。

自分の人生を左右しそうな人にパフォーマンスを見られていると気づいた瞬間に、緊張して本来の力が発揮できなくなるという体験談から数学の試験まで話が広がる。
  • 失敗するのは自分がやっていることに集中しすぎているからかもしれない
  • 意識しないでもできる動作の方が出来がいい
  • 人が一度に集中できることは限られている
  • 本番と同じ衆人環視の環境で練習すると本番でもいい結果が得られる
  • 不安なことは事前に紙に書いておくと、本番で余計な心配をしなくなる
だいたいそんな内容。

bobble ボールを取りそこなう
hone one's craft 自分の技術を磨く
flub しくじる
pinky toe 足の小指
jot down メモする
visceral sensation 内臓感覚
rub off on 影響を与える

シャドウイング難易度 ★

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

コンピューターで数学を教える (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) 
共通テーマ:日記・雑感
前の10件 | -