どのようにJavaScriptの文字列のすべての出現を置き換えるには? [Javascript]

このエントリーをはてなブックマークに追加

質問:

この文字列があるとして:

"Test abc test test abc test test test abc test test abc"

以下をすると:

str = str.replace('abc', '');

上の文字列で最初のabcだけを取り除いているみたいだけど、どうやったらすべてのabsを置き換えることができる?

By Click Upvote | 質問日時: 2009年7月17日 17:53

Read More

共有 コメント

Python pandasで既存のDataFrameに新しい列を追加する [Python]

このエントリーをはてなブックマークに追加

質問:

名前付きの列と、連続数じゃないような列を持つ次のようなインデックス付きDataFrameがある:

a b c d
2 0.671399 0.101208 -0.181532 0.241273
3 0.446172 -0.243316 0.051767 1.577318
5 0.614758 0.075793 -0.451460 -0.012493

既存のデータフレームに新しい列「e」を追加したいんだけど、でもデータフレームは何も変更したくないんだ(つまり、新しい列には常にDataFrameと同じ長さ)。

0 -0.335485
1 -1.166658
2 -0.385571
dtype: float64

joinappendmergeのいろんなバージョンを試したけど、望んでいた結果は得られず、せいぜいエラーになるだけ。上記の例で「e」列を追加するにはどうしたらいいかな?

By tomasz74 | 質問日時: 2012年9月23日 19:00

Read More

共有 コメント

JavaScriptオブジェクトを正しくクローンするにはどうしたらいい? [Javascript]

このエントリーをはてなブックマークに追加

質問:

オブジェクトxがあってそれをオブジェクトyとしてコピーしたいんだけど(yへの変更がxを変更しないように)。
built-inJavaScriptオブジェクトからコピーしたオブジェクトは不要なプロパティが余分に追加されてるのは知ってるんだけど。これは問題じゃないんだ。なぜって僕はリテラルとして構築されたオブジェクトの1つをコピーしているからです。

JavaScriptオブジェクトを正しくクローンするにはどうすればいいかな?

Read More

共有 コメント

プログラマーが見るべき20のTEDトーク(13) 子供たちにコードを教えよう [Video]

このエントリーをはてなブックマークに追加

ミッチ・レズニック:子供たちにコードを教えよう

MakeUseOfより、プログラマーが見ておくべきTEDトークが話題になっていたのでご紹介します。内容は、プログラミング方法を学ぶためではなく、プログラマーになる方法を学ぶことにフォーカスが置かれ、考え方を知ることを重視した内容になっています。
第13段は「ミッチ・レズニック:子供たちにコードを教えよう」。以下のように紹介されています:

TEDx Talksは、TED Talksと同じレベルの品質管理をされていないため、しばしば軽視されますが、この動画はそうではありません。 Resnickは16分で、なぜ子供たちにコードを教えるべきか説明します。

動画は日本語字幕を表示してありますが、TEDトークの日本語訳には意訳している部分もあるため、英語字幕(以下)をフォローするのをお薦めします:

Read More

共有 コメント

Javascriptの悪名高いループの問題? [Javascript] [Closures]

このエントリーをはてなブックマークに追加

質問:

次のコードスニペットがあるんだけど、

function addLinks () {
for (var i=0, link; i<5; i++) {
link = document.createElement("a");
link.innerHTML = "Link " + i;
link.onclick = function () {
alert(i);
};
document.body.appendChild(link);
}
}

上記のコードは、5つのリンクを生成して、現在のリンクIDを表示するために各リンクをアラートイベントでバインドするためのコード。
でも、動作しないんだ。クリックすると生成されたリンクはすべて「リンク5」になる。

でも、次のコードスニペットは僕の期待通りに機能する。

function addLinks () {
for (var i=0, link; i<5; i++) {
link = document.createElement("a");
link.innerHTML = "Link " + i;
link.onclick = function (num) {
return function () {
alert(num);
};
}(i);
document.body.appendChild(link);
}
}

上記の2つのスニペットはここから拝借した。著者の解説にあるように、closureは魔法のように見える。

でも、どのように動作し、どのようにクロージャが動作するかは、僕には理解不能。なぜ最初のものは動作しないの?誰かこの魔法の詳細な説明ってできる?

よろしくお願いします。。

By Zhu Tao | 質問日時: 2009年9月20日 13:21

Read More

共有 コメント

データフレームを(inner, outer, left, rightで)結合(マージ)する方法は? [R]

このエントリーをはてなブックマークに追加

質問:

2つのデータフレームがあるとする:

df1 = data.frame(CustomerId = c(1:6), Product = c(rep("Toaster", 3), rep("Radio", 3)))
df2 = data.frame(CustomerId = c(2, 4, 6), State = c(rep("Alabama", 2), rep("Ohio", 1)))
df1
# CustomerId Product
# 1 Toaster
# 2 Toaster
# 3 Toaster
# 4 Radio
# 5 Radio
# 6 Radio
df2
# CustomerId State
# 2 Alabama
# 4 Alabama
# 6 Ohio

どうやったらデータベース的、すなわち、SQLみたいなjoinができる?つまり、

  • df1df2inner join
    左側のテーブルが右側のテーブルに一致するキーがある行のみを返す。

  • df1df2外部結合
    両方のテーブルのすべての行を返し、右側のテーブルの一致するキーがある左側のテーブルからレコードは結合する。

  • df1df2left outer join(または単にleft join)
    左のテーブルからすべての行と、右側からマッチするキーが有るすべての行を返す

  • df1df2right outer join
    右側のテーブルからすべての行を返し、さらに左側から一致するキーを持つ行の全てを返す
    左のテーブル。

おまけ:

どのやったらSQLっぽいのselect文を実行できる?

By Dan Goldstein | 質問日時: 2009年8月19日 13:18

Read More

共有 コメント

バージョニングは重要だ [Webコミック]

このエントリーをはてなブックマークに追加

毎週水曜日はIT企業で働く人達をネタにしたWebコミック、Commit Stripを翻訳したものを紹介しています。
Webデベロッパーなら笑えるネタがたくさん(?)

今回のお題は「Versioning is important(バージョニングは重要だ)」です。

Read More

共有 コメント

Pythonの@staticmethodと@classmethodの違いって何? [Python]

このエントリーをはてなブックマークに追加

質問:

@staticmethodが付いてる関数と、@classmethodが付いてる関数の違いって何?

By Daryl Spitzer | 質問日時: Sep 25 ‘08 at 21:01

Read More

共有 コメント

昔話 [Webコミック]

このエントリーをはてなブックマークに追加

1コマ目:
「ねえ、叔父さん、僕ちょっと分からないことがあるんだけど、、、」
「何が分からないんだい?」

2コマ目:
「どうしてハードディスクはA:からじゃなくて、C:から始まるの?」
「ああ!」

commic-2017-05-02-telling-our-story.jpg

3コマ目:
「お前がそんな事を聞くなんて思っても見なかったなー!」
「よし、それじゃ初めから話をしてやろう」

4コマ目:
「むかぁ~し昔、あるところに、、、」



Source: Telling our story

共有 コメント

ループ内のJavaScriptクロージャ - 簡単な実用的な例 [Javascript]

このエントリーをはてなブックマークに追加

質問:

var funcs = [];
for (var i = 0; i < 3; i++) { // 関数を3つ作る
funcs[i] = function() { // それらをfuncsに入れる
console.log("My value: " + i); // 各関数はその値を記録する
};
}
for (var j = 0; j < 3; j++) {
funcs[j](); // 走らせる
}

でもこれは以下を出力してしまう:

My value: 3
My value: 3
My value: 3

でも僕が欲しいのは

My value: 0
My value: 1
My value: 2


同じ問題は、関数の実行がイベントリスナーを使用することによって遅延してしまう時にも起こる:

var buttons = document.getElementsByTagName("button");
for (var i = 0; i < buttons.length; i++) { // let's create 3 functions
buttons[i].addEventListener("click", function() { // as event listeners
console.log("My value: " + i); // each should log its value.
});
}
<button>0</button><br>
<button>1</button><br>
<button>2</button>

この基本的な問題の解決策ってある??

By nickf | 質問日時: 2009年4月15日 6:06

Read More

共有 コメント