はてなキーワード: Bloggerとは
グーグルのブログで適当なことを適度に書いてたけど、イマイチ反応なのでなんだかんだはてなに移住しに来ました。
ここで存在感は示せるだろうか。
結局毎日ダラダラとyoutube、facebookしか見ていないのでとりあえづ不特定の人間様にう○こみたいな自分の感じたことを発信していこうとおもみまぷ。
大した情報は引き出せないかと思いますが。
まず、今日は楽天オークションで落札された商品が4000円程度入金されて、ひさびさにコンビニで買い物。
コンビニって中坊くらいにでき始めた記憶があるけど、たぶんそれ以来初めてかも、20分くらいかごを持ち歩いてふらふら品定めで迷ってしまった。
お金を使えないって不幸せ、お金を使えるって幸せってしみじみ実感。
そんな私は毎日株のチャートと睨めっこ。
グーグルのRss Readerがpodcastの音声ファイルをそのまま再生できるので、惰性でグーグルのブログも作ってみた。けどこれがまた反応悪いんだぁ...
そのreaderで毎日読売ポッドキャストやら日経ヴェリタスやら株式・経済ニュースをこれでもか!ってほどに登録して毎日世界経済の勉強しています。
世の人に比べたら勉強のほどにもならないと思うけど、パソコンの前に座りっぱなしの私にはちょうどよいシステムでっす。
ほんっとシステム開発者とかってすばらしい仕事してらっしゃる方だと思う。
ま、そんな2009年10月6日朝6時半も読売ポッドキャストを聞いてます。
早く修理に出した携帯電話の料金を払える額を生み出さないとー
Bluetoothキーボードとマウスも欲しいし、寒くなってきたからかっちょいい上着も買いたいし、合コンもやりたいし、おいしいごはん食べたいし、ワイン飲みたいし、飲み会開きたいし...今年こそはクリスマス会開きたいなぁー
ふーん。
別にそのひとたちが陰口だと思っていようが何だろうがそれはどうでもいいんだけど、元増田はこういうこと書いて何がしたいの?
>「凸するヲチ板住人でもなく、エントリー書いて反応返してくるわけでもない。ツールを全く違う使い方をして自分たちのねぐらにしてる、ねらーとBloggerの半端な融合体っていうか、どっちつかずのなりそこない?」
俺ら増田なんて↑コレよりもさらになりそこないの、ブコメでid出すことすらできないヘタレの巣窟じゃん。2chで言えばIDの出ない板。自演もやり放題。
ココからはてブ批判とか、おこがましいにも程があるんじゃない?
増田は増田同士、うだうだ独り言について突っ込み入れ合ってる程度がお似合いでしょ。はてブ批判ならせめてダイアリでやりなさいな。
http://anond.hatelabo.jp/20090204134209
今までの同じような話題もそうだったけど、みんな何か勘違いしてんだよね。
陰口を叩いているように見えるはてブのブコメ(主にネガコメ)が気持ち悪い、いけすかないって言われてるんだと思ってる人多すぎ。
まぁ中にはそう思ってる人もいるんだろうけど、俺が書いた面子は
ソーシャルブックマークというツールをコメントツールとして使って、実質記事とそれを書いた人に対するレスポンスになっていない使い方をする人間が多数いること
に対して気持ち悪いって言ってた。
ネガコメだとか意見表明だとかっていうコメントの内容関係無し。
書いた人に意見を言いたいの?罵倒したいの?誰かに聞いて欲しいの?意見があるなら直接コメントするなり自分でエントリー立てて言及すれば?ヲチしたいならスレッド立ててやれば?なんでソーシャルブックマークのコメント機能使ってみんなそんなことしてるの?何がやりたいの?
ってのが根源みたい。
「はてなブックマークってソーシャルブックマークなんだって言う程度の認識だったけど、ソーシャルブックマークとしての利用があまりされてないみたいだし、そういうツールとしては価値がないみたいだね」
「凸するヲチ板住人でもなく、エントリー書いて反応返してくるわけでもない。ツールを全く違う使い方をして自分たちのねぐらにしてる、ねらーとBloggerの半端な融合体っていうか、どっちつかずのなりそこない?」
ってのが全てを表してるのかも。
これか!
「ブラッディ・マンデイ」を考察する
http://japan.cnet.com/blog/isidai/2008/10/12/entry_27017004/
いや、演出・小道具担当の人は、よく頑張ってる方じゃないんですか?
あたりを読んでちょっと調べてみる思いつき。
| ブログサービス/システム | 代表ブログ | 前後エントリへのリンク | 最近のエントリ一覧 | 月別へのリンク | 検索フォーム | リンク要素の使用 | 全エントリ一覧 | Dateヘッダを現在日時にしない |
|---|---|---|---|---|---|---|---|---|
| FC2ブログ | FC2インフォメーション | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| はてなダイアリー | はてなダイアリー日記 | ○ | ○ | ※1 | ○ | ○ | ○ | ○ |
| ブログ人 | ブログ人情報局 | ○ | ○ | ○ | ○ | ○ | ||
| Seesaa ブログ | Seesaaからのお知らせ | ○ | ○ | ○ | ○ | ○ | ||
| Yahoo!ブログ | Yahoo!リサーチ公式ブログ | ○ | ○ | ○ | ○ | ○ | ||
| ヤプログ | みかんブログ | ○ | ○ | ※2 | ○ | ○ | ||
| So-net blog | What's new? | ○ | ○ | ※2 | ○ | ○ | ||
| アメーバブログ | スタッフブログ | ○ | ○ | ○ | ○ | |||
| 忍者ブログ | 忍者ブログ インフォメーション/メンテナンス/障害情報 | ○ | ○ | ○ | ○ | |||
| goo ブログ | gooブログ スタッフブログ | ○ | ○ | ○ | ○ | |||
| livedoor Blog | livedoor Blog 開発日誌 | ○ | ○ | ○ | ○ | |||
| tDiary | tDiary.org | ○ | ○ | ○ | ○ | ○ | ||
| Windows Live Spaces | スタッフページ | ○ | ○ | ○ | ○ | ○ | ||
| ココログ | 日刊ココログガイド | ○ | ○ | ○ | ○ | |||
| 楽天ブログ | 楽天ブログスタッフBlog | ○ | ○ | ○ | ○ | |||
| JUGEM | JUGEMお知らせブログ | ○ | ○ | ○ | ○ | |||
| Movable Type | MT News Blog | ○ | ○ | ○ | ○ | |||
| ウェブリブログ | 公式ブログウォッチ隊 | ○ | ○ | ○ | ||||
| Hyper NIKKI System | h14m.org 公式日記 | ○ | ○ | |||||
| WordPress | WordPress > Blog | ○ | ||||||
| Vector maglog | おしらせmaglog | ○ | ||||||
| エキサイトブログ | ||||||||
| au one ブログ | ||||||||
| Blogger | ||||||||
| blosxom |
機能の見落としや、代表するブログの選択がまずい、このブログサービスを上げないのはおかしい、などがありましたらごめんなさい。そのあたりのご指摘お待ちしてます。
http://b.hatena.ne.jp/y_arim/20080409 より抜粋
ありがちな反応「どう見てもモテるけど贅沢な俺アピールです。本当に有難うございました。」
よく訓練されたはてなー風の反応「非モテ界に新キャラ誕生!イケメン超モテあてつけ罵倒芸!よっマッチョ!しびれるゼ!イカしてるゼ!(拍手喝采=ブクマの嵐)」
ので、その結果を貼ってみます。とりあえず、はてなブックマークが始まってから1ヶ月(2005/2/10〜2005/3/9,1033エントリ)の、ブックマーク数によるベスト10を出しました。
ここで皆さんにお願いがあるのですが、今回のベストX以外にどういう観点でデータを抽出したら良いか(どういう一覧がほしいか)、コメントをいただけませんか?データは集めてみたものの、活用方法に困ってます。
====================
でした。
当時はまだ「有名サイトのトップページにとりあえず貼っておく」みたいな使われ方をしていますね。ブックマークをどう使うか、というスタイルを探していたんでしょうか。
「b:keyword:コンピュータ(330回)」「b:keyword:ウェブ(321回)」「b:keyword:一般(147回)」「b:keyword:はてな(77回)」「b:keyword:Google(67回)」「b:keyword:サイエンス(47回)」「b:keyword:blog(42回)」「b:keyword:ゲーム(41回)」「b:keyword:Internet Explorer(33回)」「b:keyword:はてなブックマーク(31回)」「b:keyword:RSS(30回)」「b:keyword:Microsoft(30回)」「b:keyword:JavaScript(29回)」「b:keyword:読書(28回)」「b:keyword:iPod(25回)」「b:keyword:firefox(25回)」「b:keyword:Apple(24回)」「b:keyword:ニッポン放送(23回)」「b:keyword:サービス(23回)」「b:keyword:音楽(20回)」
「b:t:web(88回)」「b:t:blog(65回)」「b:t:ネタ(59回)」「b:t:news(49回)」「b:t:はてな(42回)」「b:t:it(33回)」「b:t:hatena(33回)」「b:t:社会(30回)」「b:t:ニュース(28回)」「b:t:neta(27回)」「b:t:misc(26回)」「b:t:ajax(26回)」「b:t:tool(25回)」「b:t:software(24回)」「b:t:tips(23回)」「b:t:javascript(23回)」「b:t:ブログ(22回)」「b:t:まとめ(21回)」「b:t:livedoor(20回)」「b:t:google(20回)」
でした。当時から「ネタ」タグって多かったんですかね(タグやキーワードは現在の付与状況しか分からないので、当時の本当の状態が分からない)。
/* Ten */
if (typeof(Ten) == 'undefined') {
Ten = {};
}
Ten.NAME = 'Ten';
Ten.VERSION = 0.06;
/* Ten.Class */
Ten.Class = function(klass, prototype) {
if (klass && klass.initialize) {
var c = klass.initialize;
} else if(klass && klass.base) {
var c = function() { return klass.base[0].apply(this, arguments) };
} else {
var c = function() {};
}
c.prototype = prototype || {};
c.prototype.constructor = c;
Ten.Class.inherit(c, klass);
if (klass && klass.base) {
for (var i = 0; i < klass.base.length; i++) {
var parent = klass.base[i];
if (i == 0) {
c.SUPER = parent;
c.prototype.SUPER = parent.prototype;
}
Ten.Class.inherit(c, parent);
Ten.Class.inherit(c.prototype, parent.prototype);
}
}
return c;
}
Ten.Class.inherit = function(child,parent) {
for (var prop in parent) {
if (typeof(child[prop]) != 'undefined' || prop == 'initialize') continue;
child[prop] = parent[prop];
}
}
/*
// Basic Ten Classes
**/
/* Ten.JSONP */
Ten.JSONP = new Ten.Class({
initialize: function(uri,obj,method) {
if (Ten.JSONP.Callbacks.length) {
setTimeout(function() {new Ten.JSONP(uri,obj,method)}, 500);
return;
}
var del = uri.match(/\?/) ? '&' : '?';
uri += del + 'callback=Ten.JSONP.callback';
if (!uri.match(/timestamp=/)) {
uri += '&' + encodeURI(new Date());
}
if (obj && method) Ten.JSONP.addCallback(obj,method);
this.script = document.createElement('script');
this.script.src = uri;
this.script.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(this.script);
},
addCallback: function(obj,method) {
Ten.JSONP.Callbacks.push({object: obj, method: method});
},
callback: function(args) {
// alert('callback called');
var cbs = Ten.JSONP.Callbacks;
for (var i = 0; i < cbs.length; i++) {
var cb = cbs[i];
cb.object[cb.method].call(cb.object, args);
}
Ten.JSONP.Callbacks = [];
},
MaxBytes: 8000,
Callbacks: []
});
/* Ten.XHR */
Ten.XHR = new Ten.Class({
initialize: function(uri,opts,obj,method) {
if (!uri) return;
this.request = Ten.XHR.getXMLHttpRequest();
this.callback = {object: obj, method: method};
var xhr = this;
var prc = this.processReqChange;
this.request.onreadystatechange = function() {
prc.apply(xhr, arguments);
}
var method = opts.method || 'GET';
this.request.open(method, uri, true);
if (method == 'POST') {
this.request.setRequestHeader('Content-Type',
'application/x-www-form-urlencoded');
}
var data = opts.data ? Ten.XHR.makePostData(opts.data) : null;
this.request.send(data);
},
getXMLHttpRequest: function() {
var xhr;
var tryThese = [
function () { return new XMLHttpRequest(); },
function () { return new ActiveXObject('Msxml2.XMLHTTP'); },
function () { return new ActiveXObject('Microsoft.XMLHTTP'); },
function () { return new ActiveXObject('Msxml2.XMLHTTP.4.0'); },
];
for (var i = 0; i < tryThese.length; i++) {
var func = tryThese[i];
try {
xhr = func;
return func();
} catch (e) {
//alert(e);
}
}
return xhr;
},
makePostData: function(data) {
var pairs = [];
var regexp = /%20/g;
for (var k in data) {
var v = data[k].toString();
var pair = encodeURIComponent(k).replace(regexp,'+') + '=' +
encodeURIComponent(v).replace(regexp,'+');
pairs.push(pair);
}
return pairs.join('&');
}
},{
processReqChange: function() {
var req = this.request;
if (req.readyState == 4) {
if (req.status == 200) {
var cb = this.callback;
cb.object[cb.method].call(cb.object, req);
} else {
alert("There was a problem retrieving the XML data:\n" +
req.statusText);
}
}
}
});
/* Ten.Observer */
Ten.Observer = new Ten.Class({
initialize: function(element,event,obj,method) {
var func = obj;
if (typeof(method) == 'string') {
func = obj[method];
}
this.element = element;
this.event = event;
this.listener = function(event) {
return func.call(obj, new Ten.Event(event || window.event));
}
if (this.element.addEventListener) {
if (this.event.match(/^on(.+)$/)) {
this.event = RegExp.$1;
}
this.element.addEventListener(this.event, this.listener, false);
} else if (this.element.attachEvent) {
this.element.attachEvent(this.event, this.listener);
}
}
},{
stop: function() {
if (this.element.removeEventListener) {
this.element.removeEventListener(this.event,this.listener,false);
} else if (this.element.detachEvent) {
this.element.detachEvent(this.event,this.listener);
}
}
});
/* Ten.Event */
Ten.Event = new Ten.Class({
initialize: function(event) {
this.event = event;
},
keyMap: {
8:"backspace", 9:"tab", 13:"enter", 19:"pause", 27:"escape", 32:"space",
33:"pageup", 34:"pagedown", 35:"end", 36:"home", 37:"left", 38:"up",
39:"right", 40:"down", 44:"printscreen", 45:"insert", 46:"delete",
112:"f1", 113:"f2", 114:"f3", 115:"f4", 116:"f5", 117:"f6", 118:"f7",
119:"f8", 120:"f9", 121:"f10", 122:"f11", 123:"f12",
144:"numlock", 145:"scrolllock"
}
},{
mousePosition: function() {
if (!this.event.clientX) return;
return Ten.Geometry.getMousePosition(this.event);
},
isKey: function(name) {
var ecode = this.event.keyCode;
if (!ecode) return;
var ename = Ten.Event.keyMap[ecode];
if (!ename) return;
return (ename == name);
},
targetIsFormElements: function() {
var target = this.event.target;
if (!target) return;
var T = (target.tagName || '').toUpperCase();
return (T == 'INPUT' || T == 'SELECT' || T == 'OPTION' ||
T == 'BUTTON' || T == 'TEXTAREA');
},
stop: function() {
var e = this.event;
if (e.stopPropagation) {
e.stopPropagation();
e.preventDefault();
} else {
e.cancelBubble = true;
e.returnValue = false;
}
}
});
/* Ten.DOM */
Ten.DOM = new Ten.Class({
getElementsByTagAndClassName: function(tagName, className, parent) {
if (typeof(parent) == 'undefined') {
parent = document;
}
var children = parent.getElementsByTagName(tagName);
if (className) {
var elements = [];
for (var i = 0; i < children.length; i++) {
var child = children[i];
var cls = child.className;
if (!cls) {
continue;
}
var classNames = cls.split(' ');
for (var j = 0; j < classNames.length; j++) {
if (classNames[j] == className) {
elements.push(child);
break;
}
}
}
return elements;
} else {
return children;
}
},
removeEmptyTextNodes: function(element) {
var nodes = element.childNodes;
for (var i = 0; i < nodes.length; i++) {
var node = nodes[i];
if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) {
node.parentNode.removeChild(node);
}
}
},
nextElement: function(elem) {
do {
elem = elem.nextSibling;
} while (elem && elem.nodeType != 1);
return elem;
},
prevElement: function(elem) {
do {
elem = elem.previousSibling;
} while (elem && elem.nodeType != 1);
return elem;
},
scrapeText: function(node) {
var rval = [];
(function (node) {
var cn = node.childNodes;
if (cn) {
for (var i = 0; i < cn.length; i++) {
arguments.callee.call(this, cn[i]);
}
}
var nodeValue = node.nodeValue;
if (typeof(nodeValue) == 'string') {
rval.push(nodeValue);
}
})(node);
return rval.join('');
},
onLoadFunctions: [],
loaded: false,
timer: null,
addEventListener: function(event,func) {
if (event != 'load') return;
Ten.DOM.onLoadFunctions.push(func);
Ten.DOM.checkLoaded();
},
checkLoaded: function() {
var c = Ten.DOM;
if (c.loaded) return true;
if (document && document.getElementsByTagName &&
document.getElementById && document.body) {
if (c.timer) {
clearInterval(c.timer);
c.timer = null;
}
for (var i = 0; i < c.onLoadFunctions.length; i++) {
c.onLoadFunctions[i]();
}
c.onLoadFunctions = [];
c.loaded = true;
} else {
c.timer = setInterval(c.checkLoaded, 13);
}
}
});
/* Ten.Style */
Ten.Style = new Ten.Class({
applyStyle: function(elem, style) {
for (prop in style) {
elem.style[prop] = style[prop];
}
}
});
/* Ten.Geometry */
Ten.Geometry = new Ten.Class({
initialize: function() {
if (Ten.Geometry._initialized) return;
var func = Ten.Geometry._functions;
var de = document.documentElement;
if (window.innerWidth) {
func.getWindowWidth = function() { return window.innerWidth; }
func.getWindowHeight = function() { return window.innerHeight; }
func.getXScroll = function() { return window.pageXOffset; }
func.getYScroll = function() { return window.pageYOffset; }
} else if (de && de.clientWidth) {
func.getWindowWidth = function() { return de.clientWidth; }
func.getWindowHeight = function() { return de.clientHeight; }
func.getXScroll = function() { return de.scrollLeft; }
func.getYScroll = function() { return de.scrollTop; }
} else if (document.body.clientWidth) {
func.getWindowWidth = function() { return document.body.clientWidth; }
func.getWindowHeight = function() { return document.body.clientHeight; }
func.getXScroll = function() { return document.body.scrollLeft; }
func.getYScroll = function() { return document.body.scrollTop; }
}
Ten.Geometry._initialized = true;
},
_initialized: false,
_functions: {},
getScroll: function() {
if (!Ten.Geometry._initialized) new Ten.Geometry;
return {
x: Ten.Geometry._functions.getXScroll(),
y: Ten.Geometry._functions.getYScroll()
};
},
getMousePosition: function(pos) {
// pos should have clientX, clientY same as mouse event
if ((navigator.userAgent.indexOf('Safari') > -1) &&
(navigator.userAgent.indexOf('Version/') < 0)) {
return {
x: pos.clientX,
y: pos.clientY
};
} else {
var scroll = Ten.Geometry.getScroll();
return {
x: pos.clientX + scroll.x,
y: pos.clientY + scroll.y
};
}
},
getElementPosition: function(e) {
return {
x: e.offsetLeft,
y: e.offsetTop
};
},
getWindowSize: function() {
if (!Ten.Geometry._initialized) new Ten.Geometry;
return {
w: Ten.Geometry._functions.getWindowWidth(),
h: Ten.Geometry._functions.getWindowHeight()
};
}
});
/* Ten.Position */
Ten.Position = new Ten.Class({
initialize: function(x,y) {
this.x = x;
this.y = y;
},
subtract: function(a,b) {
return new Ten.Position(a.x - b.x, a.y - b.y);
}
});
/*
// require Ten.js
**/
/* Ten.SubWindow */
Ten.SubWindow = new Ten.Class({
initialize: function() {
var c = this.constructor;
if (c.singleton && c._cache) {
return c._cache;
}
var div = document.createElement('div');
Ten.Style.applyStyle(div, Ten.SubWindow._baseStyle);
Ten.Style.applyStyle(div, c.style);
this.window = div;
this.addContainerAndCloseButton();
document.body.appendChild(div);
if (c.draggable) {
this._draggable = new Ten.Draggable(div, this.handle);
}
if (c.singleton) c._cache = this;
return this;
},
_baseStyle: {
color: '#000',
position: 'absolute',
display: 'none',
zIndex: 2,
left: 0,
top: 0,
backgroundColor: '#fff',
border: '1px solid #bbb'
},
style: {
padding: '2px',
textAlign: 'center',
borderRadius: '6px',
MozBorderRadius: '6px',
width: '100px',
height: '100px'
},
handleStyle: {
position: 'absolute',
top: '0px',
left: '0px',
backgroundColor: '#f3f3f3',
borderBottom: '1px solid #bbb',
width: '100%',
height: '30px'
},
containerStyle: {
margin: '32px 0 0 0',
padding: '0 10px'
},
// closeButton: 'close.gif',
closeButton: 'http://s.hatena.com/images/close.gif',
closeButtonStyle: {
position: 'absolute',
top: '8px',
right: '10px',
cursor: 'pointer'
},
_baseScreenStyle: {
position: 'absolute',
top: '0px',
left: '0px',
display: 'none',
zIndex: 1,
overflow: 'hidden',
width: '100%',
height: '100%'
},
screenStyle: {},
showScreen: true,
singleton: true,
draggable: true,
_cache: null
},{
screen: null,
windowObserver: null,
visible: false,
addContainerAndCloseButton: function() {
var win = this.window;
var c = this.constructor;
var div = document.createElement('div');
win.appendChild(div);
Ten.Style.applyStyle(div, c.containerStyle);
this.container = div;
if (c.handleStyle) {
var handle = document.createElement('div');
Ten.Style.applyStyle(handle, c.handleStyle);
win.appendChild(handle);
this.handle = handle;
}
if (c.closeButton) {
var btn = document.createElement('img');
btn.src = c.closeButton;
btn.alt = 'close';
Ten.Style.applyStyle(btn, c.closeButtonStyle);
win.appendChild(btn);
new Ten.Observer(btn, 'onclick', this, 'hide');
this.closeButton = btn;
}
if (c.showScreen) {
var screen = document.createElement('div');
Ten.Style.applyStyle(screen, Ten.SubWindow._baseScreenStyle);
Ten.Style.applyStyle(screen, c.screenStyle);
document.body.appendChild(screen);
this.screen = screen;
new Ten.Observer(screen, 'onclick', this, 'hide');
}
},
show: function(pos) {
pos = (pos.x && pos.y) ? pos : {x:0, y:0};
with (this.window.style) {
display = 'block';
left = pos.x + 'px';
top = pos.y + 'px';
}
if (this.screen) {
with (this.screen.style) {
display = 'block';
left = Ten.Geometry.getScroll().x + 'px';
top = Ten.Geometry.getScroll().y + 'px';
}
}
this.windowObserver = new Ten.Observer(document.body, 'onkeypress', this, 'handleEscape');
this.visible = true;
},
handleEscape: function(e) {
if (!e.isKey('escape')) return;
this.hide();
},
hide: function() {
if (this._draggable) this._draggable.endDrag();
this.window.style.display = 'none';
if (this.screen) this.screen.style.display = 'none';
if (this.windowObserver) this.windowObserver.stop();
this.visible = false;
}
});
/* Ten.Draggable */
Ten.Draggable = new Ten.Class({
initialize: function(element,handle) {
this.element = element;
this.handle = handle || element;
this.startObserver = new Ten.Observer(this.handle, 'onmousedown', this, 'startDrag');
this.handlers = [];
}
},{
startDrag: function(e) {
if (e.targetIsFormElements()) return;
this.delta = Ten.Position.subtract(
e.mousePosition(),
Ten.Geometry.getElementPosition(this.element)
);
this.handlers = [
new Ten.Observer(document, 'onmousemove', this, 'drag'),
new Ten.Observer(document, 'onmouseup', this, 'endDrag'),
new Ten.Observer(this.element, 'onlosecapture', this, 'endDrag')
];
e.stop();
},
drag: function(e) {
var pos = Ten.Position.subtract(e.mousePosition(), this.delta);
Ten.Style.applyStyle(this.element, {
left: pos.x + 'px',
top: pos.y + 'px'
});
e.stop();
},
endDrag: function(e) {
for (var i = 0; i < this.handlers.length; i++) {
this.handlers[i].stop();
}
if(e) e.stop();
}
});
/* Hatena */
if (typeof(Hatena) == 'undefined') {
Hatena = {};
}
/* Hatena.User */
Hatena.User = new Ten.Class({
initialize: function(name) {
this.name = name;
},
getProfileIcon: function(name) {
if (!name) name = 'user';
var pre = name.match(/^[\w-]{2}/)[0];
var img = document.createElement('img');
img.src = 'http://www.hatena.ne.jp/users/' + pre + '/' + name + '/profile_s.gif';
img.alt = name;
img.setAttribute('class', 'profile-icon');
img.setAttribute('width','16px');
img.setAttribute('height','16px');
with (img.style) {
margin = '0 3px';
border = 'none';
verticalAlign = 'middle';
}
return img;
}
}, {
profileIcon: function() {
return Hatena.User.getProfileIcon(this.name);
}
});
/* Hatena.Star */
if (typeof(Hatena.Star) == 'undefined') {
Hatena.Star = {};
}
/*
// Hatena.Star.* classes //
**/
if (window.location && window.location.host.match(/hatena\.com/)) {
Hatena.Star.BaseURL = 'http://s.hatena.com/';
} else {
Hatena.Star.BaseURL = 'http://s.hatena.ne.jp/';
}
Hatena.Star.Token = null;
/* Hatena.Star.User */
Hatena.Star.User = new Ten.Class({
base: [Hatena.User],
initialize: function(name) {
if (Hatena.Star.User._cache[name]) {
return Hatena.Star.User._cache[name];
} else {
this.name = name;
Hatena.Star.User._cache[name] = this;
return this;
}
},
_cache: {}
},{
userPage: function() {
return Hatena.Star.BaseURL + this.name + '/';
}
});
/* Hatena.Star.Entry */
Hatena.Star.Entry = new Ten.Class({
initialize: function(e) {
this.entry = e;
this.uri = e.uri;
this.title = e.title;
this.star_container = e.star_container;
this.comment_container = e.comment_container;
this.stars = [];
this.comments = [];
},
maxStarCount: 11
},{
flushStars: function() {
this.stars = [];
this.star_container.innerHTML = '';
},
bindStarEntry: function(se) {
this.starEntry = se;
for (var i = 0; i < se.stars.length; i++) {
if (typeof(se.stars[i]) == 'number') {
this.stars.push(new Hatena.Star.InnerCount(se.stars[i],this));
} else {
this.stars.push(new Hatena.Star.Star(se.stars[i]));
}
}
if (se.comments && !this.comments.length) {
for (var i = 0; i < se.comments.length; i++) {
this.comments.push(new Hatena.Star.Comment(se.comments[i]));
}
}
this.can_comment = se.can_comment;
},
setCanComment: function(v) {
this.can_comment = v;
},
showButtons: function() {
this.addAddButton();
this.addCommentButton();
},
addAddButton: function() {
if (this.star_container) {
this.addButton = new Hatena.Star.AddButton(this);
this.star_container.appendChild(this.addButton);
}
},
addCommentButton: function() {
if (this.comment_container) {
this.commentButton = new Hatena.Star.CommentButton(this);
this.comment_container.appendChild(this.commentButton.img);
}
},
showStars: function() {
var klass = this.constructor;
// if (this.stars.length > klass.maxStarCount) {
// var ic = new Hatena.Star.InnerCount(this.stars.slice(1,this.stars.length));
// this.star_container.appendChild(this.stars[0]);
// this.star_container.appendChild(ic);
// this.star_container.appendChild(this.stars[this.stars.length - 1]);
// } else {
for (var i = 0; i < this.stars.length; i++) {
this.star_container.appendChild(this.stars[i]);
}
},
showCommentButton: function() {
if (this.can_comment) {
this.commentButton.show();
if (this.comments.length) this.commentButton.activate();
} else {
// this.commentButton.hide();
}
},
addStar: function(star) {
this.stars.push(star);
this.star_container.appendChild(star);
},
addComment: function(com) {
if (!this.comments) this.comments = [];
if (this.comments.length == 0) {
this.commentButton.activate();
}
this.comments.push(com);
},
showCommentCount: function() {
this.comment_container.innerHTML += this.comments.length;
}
});
/* Hatena.Star.Button */
Hatena.Star.Button = new Ten.Class({
createButton: function(args) {
var img = document.createElement('img');
img.src = args.src;
img.alt = img.title = args.alt;
with (img.style) {
cursor = 'pointer';
margin = '0 3px';
padding = '0';
border = 'none';
verticalAlign = 'middle';
}
return img;
}
});
/* Hatena.Star.AddButton */
Hatena.Star.AddButton = new Ten.Class({
base: ['Hatena.Star.Button'],
initialize: function(entry) {
this.entry = entry;
this.lastPosition = null;
var img = Hatena.Star.Button.createButton({
src: Hatena.Star.AddButton.ImgSrc,
alt: 'Add Star'
});
this.observer = new Ten.Observer(img,'onclick',this,'addStar');
this.img = img;
return img;
},
ImgSrc: Hatena.Star.BaseURL + 'images/add.gif'
},{
addStar: function(e) {
this.lastPosition = e.mousePosition();
var uri = Hatena.Star.BaseURL + 'star.add.json?uri=' + encodeURIComponent(this.entry.uri) +
'&title=' + encodeURIComponent(this.entry.title);
if (Hatena.Star.Token) {
uri += '&token=' + Hatena.Star.Token;
}
new Ten.JSONP(uri, this, 'receiveResult');
},
receiveResult: function(args) {
var name = args ? args.name : null;
if (name) {
this.entry.addStar(new Hatena.Star.Star({name: name}));
//alert('Succeeded in Adding Star ' + args);
} else if (args.errors) {
var pos = this.lastPosition;
pos.x -= 10;
pos.y += 25;
var scroll = Ten.Geometry.getScroll();
var scr = new Hatena.Star.AlertScreen();
var alert = args.errors[0];
scr.showAlert(alert, pos);
}
}
});
/* Hatena.Star.CommentButton */
Hatena.Star.CommentButton = new Ten.Class({
base: ['Hatena.Star.Button'],
initialize: function(entry) {
this.entry = entry;
this.lastPosition = null;
var img = Hatena.Star.Button.createButton({
src: Hatena.Star.CommentButton.ImgSrc,
alt: 'Comments'
});
img.style.display = 'none';
this.observer = new Ten.Observer(img,'onclick',this,'showComments');
this.img = img;
},
ImgSrc: Hatena.Star.BaseURL + 'images/comment.gif',
ImgSrcActive: Hatena.Star.BaseURL + 'images/comment_active.gif'
},{
showComments: function(e) {
if (!this.screen) this.screen = new Hatena.Star.CommentScreen();
this.screen.bindEntry(this.entry);
var pos = e.mousePosition();
pos.y += 25;
this.screen.showComments(this.entry, pos);
},
hide: function() {
this.img.style.display = 'none';
},
show: function() {
this.img.style.display = 'inline';
},
activate: function() {
this.show();
this.img.src = Hatena.Star.CommentButton.ImgSrcActive;
}
});
/* Hatena.Star.Star */
Hatena.Star.Star = new Ten.Class({
initialize: function(args) {
if (args.img) {
this.img = args.img;
this.name = this.img.getAttribute('alt');
} else {
this.name = args.name;
var img = document.createElement('img');
img.src = Hatena.Star.Star.ImgSrc;
img.alt = this.name;
with (img.style) {
padding = '0';
border = 'none';
}
this.img = img;
}
new Ten.Observer(this.img,'onmouseover',this,'showName');
new Ten.Observer(this.img,'onmouseout',this,'hideName');
if (this.name) {
this.user = new Hatena.Star.User(this.name);
this.img.style.cursor = 'pointer';
new Ten.Observer(this.img,'onclick',this,'goToUserPage');
}
if (args.count && args.count > 1) {
var c = document.createElement('span');
c.setAttribute('class', 'hatena-star-inner-count');
Ten.Style.applyStyle(c, Hatena.Star.InnerCount.style);
c.innerHTML = args.count;
var s = document.createElement('span');
s.appendChild(img);
s.appendChild(c);
return s;
} else {
return this.img;
}
},
ImgSrc: Hatena.Star.BaseURL + 'images/star.gif'
},{
showName: function(e) {
if (!this.screen) this.screen = new Hatena.Star.NameScreen();
var pos = e.mousePosition();
pos.x += 10;
pos.y += 25;
this.screen.showName(this.name, pos);
},
hideName: function() {
if (!this.screen) return;
this.screen.hide();
},
goToUserPage: function() {
window.location = this.user.userPage();
}
});
/* Hatena.Star.InnerCount */
Hatena.Star.InnerCount = new Ten.Class({
initialize: function(count, e) {
this.count = count;
this.entry = e;
var c = document.createElement('span');
c.setAttribute('class', 'hatena-star-inner-count');
Ten.Style.applyStyle(c, Hatena.Star.InnerCount.style);
c.style.cursor = 'pointer';
c.innerHTML = count;
new Ten.Observer(c,'onclick',this,'showInnerStars');
this.container = c;
return c;
},
style: {
color: '#f4b128',
fontWeight: 'bold',
fontSize: '80%',
fontFamily: '"arial", sans-serif',
margin: '0 2px'
}
},{
showInnerStars: function() {
var url = Hatena.Star.BaseURL + 'entry.json?uri=' +
encodeURIComponent(this.entry.uri);
new Ten.JSONP(url, this, 'receiveStarEntry');
},
receiveStarEntry: function(res) {
var se = res.entries[0];
var e = this.entry;
if (encodeURIComponent(se.uri) != encodeURIComponent(e.uri)) return;
e.flushStars();
e.bindStarEntry(se);
e.addAddButton();
e.showStars();
}
});
/* Hatena.Star.Comment */
Hatena.Star.Comment = new Ten.Class({
initialize: function(args) {
this.name = args.name;
this.body = args.body;
}
},{
asElement: function() {
var div = document.createElement('div');
with (div.style) {
margin = '0px 0';
padding = '5px 0';
borderBottom = '1px solid #ddd';
}
var ico = Hatena.User.getProfileIcon(this.name);
div.appendChild(ico);
var span = document.createElement('span');
with(span.style) {
fontSize = '90%';
}
span.innerHTML = this.body;
div.appendChild(span);
return div;
}
});
/* Hatena.Star.NameScreen */
Hatena.Star.NameScreen = new Ten.Class({
base: [Ten.SubWindow],
style: {
padding: '2px',
textAlign: 'center'
},
containerStyle: {
margin: 0,
padding: 0
},
handleStyle: null,
showScreen: false,
closeButton: null,
draggable: false
},{
showName: function(name, pos) {
this.container.innerHTML = '';
this.container.appendChild(Hatena.User.getProfileIcon(name));
this.container.appendChild(document.createTextNode(name));
this.show(pos);
}
});
/* Hatena.Star.AlertScreen */
Hatena.Star.AlertScreen = new Ten.Class({
base: [Ten.SubWindow],
style: {
padding: '2px',
textAlign: 'center',
borderRadius: '6px',
MozBorderRadius: '6px',
width: '240px',
height: '120px'
},
handleStyle: {
position: 'absolute',
top: '0px',
left: '0px',
backgroundColor: '#f3f3f3',
borderBottom: '1px solid #bbb',
width: '100%',
height: '30px',
borderRadius: '6px 6px 0 0',
MozBorderRadius: '6px 6px 0 0'
}
},{
showAlert: function(msg, pos) {
this.container.innerHTML = msg;
var win = Ten.Geometry.getWindowSize();
var scr = Ten.Geometry.getScroll();
var w = parseInt(this.constructor.style.width) + 20;
if (pos.x + w > scr.x + win.w) pos.x = win.w + scr.x - w;
this.show(pos);
}
});
/* Hatena.Star.CommentScreen */
Hatena.Star.CommentScreen = new Ten.Class({
base: [Ten.SubWindow],
initialize: function() {
var self = this.constructor.SUPER.call(this);
if (!self.commentsContainer) self.addCommentsContainer();
return self;
},
style: {
width: '280px',
height: '280px',
overflowY: 'auto',
padding: '2px',
textAlign: 'center',
borderRadius: '6px',
MozBorderRadius: '6px'
},
handleStyle: {
position: 'absolute',
top: '0px',
left: '0px',
backgroundColor: '#f3f3f3',
borderBottom: '1px solid #bbb',
width: '100%',
height: '30px',
borderRadius: '6px 6px 0 0',
MozBorderRadius: '6px 6px 0 0'
},
containerStyle: {
margin: '32px 0 0 0',
textAlign: 'left',
padding: '0 10px'
},
getLoadImage: function() {
var img = document.createElement('img');
img.src = Hatena.Star.BaseURL + 'images/load.gif';
img.setAttribute('alt', 'Loading');
with (img.style) {
verticalAlign = 'middle';
margin = '0 2px';
}
return img;
}
},{
addCommentsContainer: function() {
var div = document.createElement('div');
with (div.style) {
marginTop = '-3px';
}
this.container.appendChild(div);
this.commentsContainer = div;
},
showComments: function(e, pos) {
var comments = e.comments;
if (!comments) comments = [];
this.commentsContainer.innerHTML = '';
for (var i=0; i<comments.length; i++) {
this.commentsContainer.appendChild(comments[i].asElement());
}
if (e.starEntry && !e.can_comment) {
this.hideCommentForm();
} else {
this.addCommentForm();
}
var win = Ten.Geometry.getWindowSize();
var scr = Ten.Geometry.getScroll();
var w = parseInt(this.constructor.style.width) + 20;
if (pos.x + w > scr.x + win.w) pos.x = win.w + scr.x - w;
this.show(pos);
},
bindEntry: function(e) {
this.entry = e;
},
sendComment: function(e) {
if (!e.isKey('enter')) return;
var body = this.commentInput.value;
if (!body) return;
this.commentInput.disabled = 'true';
this.showLoadImage();
var url = Hatena.Star.BaseURL + 'comment.add.json?body=' + encodeURIComponent(body) +
'&uri=' + encodeURIComponent(this.entry.uri) +
'&title=' + encodeURIComponent(this.entry.title);
new Ten.JSONP(url, this, 'receiveResult');
},
receiveResult: function(args) {
if (!args.name || !args.body) return;
this.commentInput.value = '';
this.commentInput.disabled = '';
this.hideLoadImage();
var com = new Hatena.Star.Comment(args);
this.entry.addComment(com);
this.commentsContainer.appendChild(com.asElement());
},
showLoadImage: function() {
if (!this.loadImage) return;
this.loadImage.style.display = 'inline';
},
hideLoadImage: function() {
if (!this.loadImage) return;
this.loadImage.style.display = 'none';
},
hideCommentForm: function() {
if (!this.commentForm) return;
this.commentForm.style.display = 'none';
},
addCommentForm: function() {
if (this.commentForm) {
this.commentForm.style.display = 'block';
return;
}
var form = document.createElement('div');
this.container.appendChild(form);
this.commentForm = form;
with (form.style) {
margin = '0px 0';
padding = '5px 0';
// borderTop = '1px solid #ddd';
}
//if (Hatena.Visitor) {
// form.appendChild(Hatena.Visitor.profileIcon());
//} else {
// form.appendChild(Hatena.User.getProfileIcon());
//}
var input = document.createElement('input');
input.type = 'text';
with (input.style) {
width = '215px';
border = '1px solid #bbb';
padding = '3px';
}
form.appendChild(input);
this.commentInput = input;
var img = this.constructor.getLoadImage();
this.loadImage = img;
this.hideLoadImage();
form.appendChild(img);
new Ten.Observer(input,'onkeypress',this,'sendComment');
}
});
/* Hatena.Star.EntryLoader */
Hatena.Star.EntryLoader = new Ten.Class({
initialize: function() {
var entries = Hatena.Star.EntryLoader.loadEntries();
this.entries = [];
for (var i = 0; i < entries.length; i++) {
var e = new Hatena.Star.Entry(entries[i]);
e.showButtons();
this.entries.push(e);
}
this.getStarEntries();
},
createStarContainer: function() {
var sc = document.createElement('span');
sc.setAttribute('class', 'hatena-star-star-container');
sc.style.marginLeft = '1px';
return sc;
},
createCommentContainer: function() {
var cc = document.createElement('span');
cc.setAttribute('class', 'hatena-star-comment-container');
cc.style.marginLeft = '1px';
return cc;
},
scrapeTitle: function(node) {
var rval = [];
(function (node) {
if (node.tagName == 'SPAN' &&
(node.className == 'sanchor' ||
node.className == 'timestamp')) {
return;
} else if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) {
return;
}
var cn = node.childNodes;
if (cn) {
for (var i = 0; i < cn.length; i++) {
arguments.callee.call(this, cn[i]);
}
}
var nodeValue = node.nodeValue;
if (typeof(nodeValue) == 'string') {
rval.push(nodeValue);
}
})(node);
return rval.join('');
},
headerTagAndClassName: ['h3',null],
getHeaders: function() {
var t = Hatena.Star.EntryLoader.headerTagAndClassName;
return Ten.DOM.getElementsByTagAndClassName(t[0],t[1],document);
},
loadEntries: function() {
var entries = [];
//var headers = document.getElementsByTagName('h3');
var c = Hatena.Star.EntryLoader;
var headers = c.getHeaders();
for (var i = 0; i < headers.length; i++) {
var header = headers[i];
var a = header.getElementsByTagName('a')[0];
if (!a) continue;
var uri = a.href;
var title = '';
// Ten.DOM.removeEmptyTextNodes(header);
var cns = header.childNodes;
title = c.scrapeTitle(header);
var cc = c.createCommentContainer();
header.appendChild(cc);
var sc = c.createStarContainer();
header.appendChild(sc);
entries.push({
uri: uri,
title: title,
star_container: sc,
comment_container: cc
});
}
return entries;
}
},{
getStarEntries: function() {
var url = Hatena.Star.BaseURL + 'entries.json?';
for (var i = 0; i < this.entries.length; i++) {
if (url.length > Ten.JSONP.MaxBytes) {
new Ten.JSONP(url, this, 'receiveStarEntries');
url = Hatena.Star.BaseURL + 'entries.json?';
}
url += 'uri=' + encodeURIComponent(this.entries[i].uri) + '&';
}
new Ten.JSONP(url, this, 'receiveStarEntries');
},
receiveStarEntries: function(res) {
var entries = res.entries;
if (!entries) entries = [];
for (var i = 0; i < this.entries.length; i++) {
var e = this.entries[i];
for (var j = 0; j < entries.length; j++) {
var se = entries[j];
if (!se.uri) continue;
if (encodeURIComponent(se.uri) == encodeURIComponent(e.uri)) {
e.bindStarEntry(se);
entries.splice(j,1);
break;
}
}
if (typeof(e.can_comment) == 'undefined') {
e.setCanComment(res.can_comment);
}
e.showStars();
e.showCommentButton();
}
}
});
/* Hatena.Star.WindowObserver */
Hatena.Star.WindowObserver = new Ten.Class({
initialize: funct
「Twitterとは、量が質を産む作業そのものなんじゃないかと思った」
それは絶対にない。ありえないと言ってもいい。量は質を生まない。
インターネットにおいて、個人の著作のほとんどは書き捨てだ。古のテキストサイトでも、ニュースグループでも、Blogでも、mixiでも、はてなブックマークでも、たくさんのクズが生産され、消費され、忘れられてきた。Twitterがこの列の最後尾に加わっただけの話。ニュースグループを未だにチェックしている人は手を挙げて?せめてログを大事に持っている人は?
いやいや、ニュースグループは長年よく頑張ったじゃないか。Twitterがこんなに長生きするとは思えない。今ログが全部消えても、日本じゃ裁判にさえならないだろう。Bloggerがいつも通り口だけ偉そうな批判を行って、それでおしまい。みんな心のどこかでクズを生産していることに気付いているからだ。年寄になってTwitterのログを読み直したい?「お爺ちゃん、仕事中に何してたの?」って。
大原則:クズはどれだけ集まってもクズ。別にインターネットに限った話じゃない。雑誌だって本だって映画だって、ほとんどはクズとして生産され、クズとして消費され、クズとして忘れられていくのだ。
そんなことない、例えばクズじゃないBlogもあるじゃないかって?その人は頑張っているんだろう。ちょうどクズ作家の中にクズじゃない作家がいるみたいに。でもBlogというシステムが、クズの山から質を産み出したのか?いいや、ただGoogleの精度を下げて、クズの流通を後押ししただけだ。
はてなブックマークも変わらない。誤解する人がいるけれど、これはただ良いものを流通させるシステムであって、クズに魔法をかけるシステムじゃない。そもそも「綺麗なアイコン50」みたいな記事を流通させるべきなのかは別にして。いや、よく考えてみれば、はてなブックマークには一部のクズ記事を盛り上げる「晒し」という魔法があったな。まったく、素晴らしい発明だよね。
新しいメディアが現れると、必ずこうして「このメディアはクズから質を生みだすのだ」と言いだす人が現れる。これは「僕の生み出すクズをなんとかして」という叫びでもある。もちろん、なんともならない。技術の進化を待つより、日本語を学び直したほうがずっと早い。
スタージョンの法則は正しい。「どんなものも90%はクズ」なのだ。増田も非モテとか非コミュとか、クズみたいな話ばっかり。でも人間はクズ話が好きだ。いいじゃん、クズで。楽しいんでしょ、Twitter。交換日記、夏休みの工作、一度だけ書いた小説、RPGツクール…クズを作るのに躍起になっていたことも、いつかはいい思い出になるのだ。だから質を生むとか言う口は閉じたまえ。
秋元@サイボウズラボ・プログラマー・ブログ: 日米Web2.0対応表
| In the U.S. | In Japan |
|---|---|
| Web 2.0 | ウェブにーてんぜろ |
| YouTube | YouTube, ニコニコ動画 |
| MySpace | ミクシィ |
| Flickr | フォト蔵, livedoor PICS |
| del.icio.us | はてなブックマーク |
| Yelp | ぐるなび |
| みんなの就職活動日記 | |
| Digg | Yahoo!ニュース, newsing |
| Blogger, LiveJournal | FC2ブログ, livedoorブログ, Yahoo!ブログ |
| Meebo | ? |
| Etsy | ? |
| Cafepress | ClubT? |
| Slide | Slide? |
| Flixster | 映画生活? |
|*In the U.S.|*In Japan| |Web 2.0|ウェブにーてんぜろ| |YouTube|YouTube, ニコニコ動画| |MySpace|ミクシィ| |Flickr|フォト蔵, livedoor PICS| |del.icio.us|はてなブックマーク| |Yelp|ぐるなび| |Facebook|みんなの就職活動日記| |Digg|Yahoo!ニュース, newsing| |Blogger, LiveJournal|FC2ブログ, livedoorブログ, Yahoo!ブログ| |Meebo|?| |Etsy|?| |Cafepress|ClubT?| |Slide|Slide?| |Flixster|映画生活?| |Twitter|Twitter|
ガ島通信 - オライリーがブログエチケット「Blogger's Code of Conduct」を提唱
1. 自分の言葉に責任を持ち、基本的な礼儀に従わないコメントは制限する権利を留保する
2. リアルで話さないことはオンラインでも話さない
3.もし緊張が拡大していれば、公にする前にプライベートでコンタクトする
4.誰かが不公平な攻撃を受けているとき、熟慮した行動を行う
5.匿名は認めるが、偽名は認めない(匿名=正体は分かるが名前を伏せていることで、日本の匿名とは異なるようだ)
6.トロール(怪物?日本で言う「荒らし」のようなものか?)は無視する(要するにスルー力を持てということ)
7.ブログホスティング会社はより強力にサービスを行うことを奨励する(ブログホスティング企業が問題のあるブロガーにもっと対応すべきだ)
これを逆に言うと、
1. 責任に縛られずに発言し、礼儀のなってないコメントでもなるべく制限はしない
2. リアルで話さないことこそ、オンラインでは積極的に発言する
3. プライベートで接触することは避け、パブリックな空間で全てを解決する
4. 誰かが不公平な攻撃を受けているときは、考えるよりさきに感じたままに動く
5. 名前も正体も伏せる
6. 荒らしには積極的に絡み、「スルー力」などと誤魔化さない
7. ブログホスティング会社は「君臨すれども統治せず」を心がける
・・・これ増田だよね。ぜんぶに当てはまるわけじゃないけど。
私はこっちの方が好きです。
テクノロジーの世界では、常にローエンドがハイエンドを食っている。
安価な製品をより強力にするほうが、強力な製品を安くするよりも簡単なのだ。
だから安価でシンプルというところから始めた製品は徐々に強力なものへと成長していき、水が部屋に満ちるように、
「ハイエンド」の製品を天井の方へと押し込めることになる。
Sunはこれをメインフレームに対して行い、IntelはSunに対して行っている。
米Google、情報共有サイト作成サービス「Google Sites」を発表
誰でも簡単に編集を始められるように、
5種類のテンプレート(Webページ、ブログ、ファイル共有、ダッシュボード、リスト)を用意。
企業が部内プロジェクトを遂行したり、
学校行事や宿題の共同作業を行なうためのサイトなどを簡単に作ることができる。
Google Sitesは、Google Appsに統合されているため、
「Google Docs」「Google Calendar」「Picasa」「YouTube」など、
Googleの他のサービスで利用しているコンテンツも簡単に埋め込むことができる。
また、動画や画像、Microsoft Officeファイルなどをアップロードして、
グループ内で共有することも簡単にできる。
Features : Drag-and-drop - Google Docs Help Center
ITmedia Biz.ID:もっと便利にGoogleカレンダーを使う7つのTips
一度設定した予定はドラッグ&ドロップで移動ができる。
「11時から会議」の予定を入力する時、11時のセルをクリックしてはいないだろうか。
実はGoogleカレンダーでは適当にクリックして、簡易入力の吹き出しに「11時に会議」と入力すれば時間を自動的に調整してくれる。
Google Calendar の使い方 | グーグル・カレンダーの便利な機能や特徴を紹介します
Gmailとの連携でデキルあなたを創る!
話題のAjaxインターフェースでサクサク使える次世代型Webスケジューラ「Google Calendar」の使い方!!
デスクトップアプリケーションのように、ドラッグ&ドロップでイベント(予定)を移動させることが可能。
Office 7のようにWebブラウザをクライアントとするソフトウェアではAjax採用がトレンドだ。
Google Calendarのスケジュール共有機能の使い方 - 『ちよろず。』
皆でスケジュールを登録し合うというような使い方も可能です。
Going My Way: Google Calendar の予定の詳細を見るには、予定の部分をダブルクリック
Gmail英語版はメールからカレンダーへスケジュールが投稿できる(再) | Google Mania - グーグルの便利な使い方
かつて電力に起こったのと同じことが起ころうとしています。
20世紀初頭には、企業は電力会社の副社長を雇わなければならないと考えたものですが、今は壁にプラグを差せば電気はやってきますよね。
ITも同じです。ビジネスをスタートするときに、なぜITプロフェッショナルの“大部隊”を雇う必要があるでしょうか。
何をする道具か、というと、タスク管理らしい。
やりたいことを書いて、それを管理する道具。期日で並び替えてくれたり、Tagで絞り込めたり、優先度をつけられたり、字数無制限のメモが書き込めたり、一定期間毎にリピート出来たり、「今日が期日」のものをRSSで取得出来たり、時間毎にGoogle talkで話し掛けてくれたりする。
Google CalendarにRemember The Milkのタスクを表示する2種類の方法を理解する - Forgot the Milk.
Going My Way: Google Calendar に Remember The Milk のタスクを表示して編集、追加などする方法
Remember The Milk: Online to do list and task management
ページの一番下の Google Calendar のボタンをクリックするだけで
Google Calendarの中に Remember The Milk のタスクリストが表示されます。
Remember The Milk へGmail 経由でタスクを追加するためのブックマークレット | alectrope
clmemo@aka: Google Calendar に Remember the Milk の ToDo リスト情報を読ませる
Remember The Milk - Help / FAQ / Basics / What format can I enter dates and times in?
「ドリルを買う客はドリルが欲しいのではなく穴が欲しいのだ。」
「将来コンピュータの重量は、1.5トン以下になるかも知れない。」
Popular Mechanics誌、科学の果てしなき進歩を予測して、1949
「恐らく世界中のコンピュータ市場の規模は、5台だろう。」
「家庭にコンピュータを欲しいと思う人などいる訳がない。」
ケン・オルソン、Digital Equipmentの創設者・社長・会長、1977
「石油を掘るだって? 地面にドリルで穴を開けて、石油を探すっていうのかい? あんた頭がおかしいよ。」
生き残る種とは、
もっとも強いものではない。
もっとも知的なものでもない。それは、
変化にもっともよく適応したものである。
Amazon.co.jp: ザ・ゴール ― 企業の究極の目的とは何か: エリヤフ ゴールドラット, 三本木 亮: 本
最小の努力で最大の効果を得るには、全体最適が常に優先されるべきである。
正しい仕事は何かが正しく定義され、評価されなければ、誰も正しい仕事などするはずがない。
会社に損失を与えてきたのは、人間が正しい仕事を行わない「仕組み」をつくりあげた会社組織そのものである。
ゴールドラット博士
KFS(Key Factors for Success)
Amazon.co.jp: 企業参謀―戦略的思考とはなにか: 大前 研一: 本
「物事には、その結果に影響を与える主要因というのがかならずいくつか存在する。
これらをうまく管理あるいは応用すれば戦略が成功する」
「戦略思考家とは、みずからの担当する職務(役職、業種、業務)において、
つねにKFSがなんであるかという認識を忘れない人のことであろう。
そして、彼は全面戦争ではなく、
KFSに対する限定戦争に”挑戦的”に挑むのである。」
SaaSとソフトウェア屋さん - 37Signalsの答え « bit sized
多大なお金と時間をテクニカルサポートに費やし、より多くのドキュメントを作成し、開発スピードを遅らせ、
そして最終的には私達のアプリケーションのカスタマーエクスペリエンスを
うまくコントロールできなくなってしまうでしょう。
Webベースのソフトウェアは顧客側の作業を必要とせず、たちどころにすべての顧客に対してアップデートを行うことができます。
Rauru Blog » Blog Archive » コモディティとして供給される科学者
Google にとってユーザの PC はブラウザさえ動けばよい。
Google にアクセスしさえすれば、メールもカレンダーも表計算アプリケーションも
全てサーバ上で動いてブラウザ上に表示される。
ユーザが自分のPC上にアプリケーションを
Life is beautiful: ユーザーに尋ねても必ずしも正しい答えは返ってこない
1. サイレント・マジョリティの声は聞こえてこない
これはMicrosoftで実際にあったことだが、
Outlookのチームではユーザーから寄せられる機能追加のリクエストに従って色々な機能を足していた時期があったが、
その結果不必要な機能ばかり増えて、単純な作業が逆にやりにくくなってしまった(たとえばカスタム・フォームが良い例)。
On Off and Beyond: FlickrファウンダーCaterina Fake、Flickrの起源を語る
ユーザーは既にある機能をもっと欲しがるだけなので、新機能をどうしたらよいかをユーザーに聞くのは不毛。
それより、既に計画中の機能を複数ユーザーに投げて、どれが優先順位が高いかを聞くのがよい。
Speed Feed > Google Calendarはサイボウズにとって悪夢か追い風か? : ITmedia オルタナティブ・ブログ
正直なところサイボウズとしてはあまり気にする必要が無い。
Googleはいまだファイアウォールを越えて、企業システムには入り込んだ実績がほとんどないし、
これからもそれは彼らにとって高すぎる壁になると僕は思っている。
経営企画室 企画のもと: Google との競争をどう生き残れば良いのか
サイボウズの場合どのようなシナリオを想定するかといえば、やはり
「無料のグループウエア ASP の登場」です。
しかしこれは二つの側面から見て、サイボウズに対して直接的な影響を及ぼす可能性は低いと個人的には見ています。
サイボウズ青野の3日ボウズ日記: Google Calendar
Google Calendar は、サイボウズが提供したい価値とは違うように感じました。
私たちが提供したい価値は、情報共有による知の創造であり、誰でも使える大衆化であり、チームワークの醸成です。
私たちは、私たちなりのアプローチで、世界に価値を提供していきたいと思います。
今後、新たな破壊的イノベーションによって、私たちサイボウズが存在意義を失う恐れがあります。
私たちも、時代に合わせて変化していかなければなりません。
サイボウズ青野の3日ボウズ日記: サイボウズ Office 7 発売開始
[k] kam.iokan.de: Googleカレンダーから始まる?イントラネット2.0
サイボウズ(イントラネット1.0)にGoogleカレンダー(ウェブ2.0)
一方でサイボウズからすれば、Googleの破壊的な活動の1つGoogle Apps for Your Domainの動向も気にしているはずですだったりもします。
(おそらく、サイボウズを導入している企業でGoogle Apps...に乗り換える企業は少なく、直接競合することはないんじゃないかと考えてますが)
会社に必要なのは
共有フォルダと
あれば事足りるわけで。
大きな企業だと
掲示板や
ほしくはなるけど、
社内ブログ/社内SNSはそれよりも優先度低いと思う。
何しろなくても仕事できるし、そういうものがあることで、
逆に生産性落としそうだし。
つまり、サイボウズは成功するでしょうが、
かつて電力に起こったのと同じことが起ころうとしています。
20世紀初頭には、企業は電力会社の副社長を雇わなければならないと考えたものですが、今は壁にプラグを差せば電気はやってきますよね。
Gmailの容量が最大250GBまで拡張可能に、実際に増やしてみた
はてなブックマーク - Google カレンダーは113台のサーバで動いている - GIGAZINE
Gmail同士で外部POP(Mail Fetcher)でメールを取り込む裏技
Gmail⇔Google Apps 間の移行やGmailバックアップに!
基本的にGmailも、Google Appsも同じ操作性になっているので、相互のメールの移行に便利です。この機会にGoogle Apps(有料版もあり)へメールを統合するのも良いかもしれません。
先日Google Appsに対応した日本大学や東京女子大学、嘉悦大学、リアルコムに入る人、
au oneメール利用者、新Livedoorメール利用者などは、自分のGmailデータをひっさげて簡単に移行できる事になります。
その逆もしかり。
また、いざアカウントが消失した時のバックアップとして別のアカウントに溜め込むのもオススメです。
バックアップに関しては、送信済みメールも受信されるので便利。
グーグル、日本大学にGoogle Appsを提供--50万人規模での利用も検討:ニュース - CNET Japan
Google Apps Education Editionは教育関係者向けの無償サービス
最終的には卒業生を含め約50万人へのサービス提供
大学のOB/OGなど50万人
[N] 日本大学が「Google Apps Education Edition」採用
Gmailの時代到来? - これでも大学職員のブログ -情報センター勤務中-
魅力はなんといっても「2GB以上」の大容量です。
また、情報センターの視点で見ると大学の計画停電などに左右されないのも魅力です。そして何より無料!
両校のログイン画面を見ると、非常に似ています。
どうやら日本大学に続いてGoogle Appsを導入する大学が現れたらしい - Clear Consideration(大学職員の教育分析)
Google Apps Education Edition は、無料のコミュニケーション/コラボレーション ツールと
ピクサーが社内システムを「Google Apps for Your Domain」に乗り換え - GIGAZINE
ZDNet Japan Blog - 「エンタープライズ2.0」への道しるべ:Google Appsを全社導入してみる
Google Calendarに移行 - plus ultra blog
Speed Feed > Google Apps Premer Editionを迎え撃つ必要がなくなったことに安堵する。 : ITmedia オルタナティブ・ブログ
Google Apps Premer Editionが登場したことで、
Web型グループウェアおよび法人向メールサーバーの提供企業は、かなり深刻なダメージを受けることは間違いない。
MSエクスチェンジやノーツのように業務システムに深く食い込むシステムであれば別だが、
多くのベンチャーや中小企業にとって、グループウェアやメールシステムはライトなもので十分だし、
日本版SOX法の施行が目前である以上、社内にサーバーをおいて管理する必要のないSaaSモデルはやはり都合がいい。
Gmail、カレンダーをSaaS形式で--Google Apps製品版、日本の料金は年間6300円/人に - イン - ZDNet Japan
[G] - Google Appsで家族ドメイン:Edition比較 無料 or 年額6300円/ユーザ
Standard Edition & Premier Edition
iGoogleにYahoo!も表示できる!好きなページをタブいっぱいに表示するガジェット「Your Page Here」 | Google Mania - グーグルの便利な使い方
例えば、
Googleカレンダーを表示してもいいし(iGoogle用のミニカレンダーでは物足りないですね)、
Yahooカレンダーを表示してもいいし(Google以外でもOK!)、使い道は無限大です。
LivedoorReaderを表示
デフォルトではGoogleカレンダーが設定されています。
別のページを表示させるには、タブ右側の矢印をクリックして、「設定を編集」を選択します。
[ぴ] ぴっくあっぷ。: 【iGoogle】 任意のページを追加するガジェット 「Your Page Here」
ブログの投稿ユーザー 1 人のユーザーがこのブログに投稿できます 投稿ユーザーを追加
ブログの閲覧ユーザー すべてのユーザー 選択したユーザーのみ ブログの投稿者のみ
Google パック ITmedia News:Google Packに「更新無料」のセキュリティツールが追加
Google トーク Google トーク
Google カレンダー https://www.google.com/calendar/render Google Calendar
Docs (ワープロ) & Spreadsheets (表計算) Welcome to Google Docs
Google Apps 無料
[G] - Google Appsで家族ドメイン:Edition比較 無料 or 年額6300円/ユーザ
Standard Edition & Premier Edition
Google Apps for Your Domain を使ってみました! : サインアップ編 - WebOS Goodies
Google Apps for Your Domain を使ってみました! : 管理機能編 - WebOS Goodies
test カレンダー
はてなブックマーク - 今日から始める「Google カレンダー」特集(前編)
予定をドラッグで移動できるのは偶然気づいた。びっくり。
ITmedia Biz.ID:もっと便利にGoogleカレンダーを使う7つのTips
一度設定した予定はドラッグ&ドロップで移動ができる。
「11時から会議」の予定を入力する時、11時のセルをクリックしてはいないだろうか。
実はGoogleカレンダーでは適当にクリックして、簡易入力の吹き出しに「11時に会議」と入力すれば時間を自動的に調整してくれる。
ITmedia Biz.ID:日本語化されたGoogleカレンダーを使ってみました
ログイン方法
カレンダーの入力方法
公開カレンダーの参照方法
1つはカレンダーに登録されたスケジュールごと個別に共有する機能、
もう1つはカレンダーごと共有する機能だ。
また、共有とは少し異なるが、スケジュールの内容をインターネットやブログに公開できる機能も備えている。
ユーザーごとにカレンダーを共有する場合は、空き時間もしくは予定の詳細を閲覧させるだけでなく、
カレンダーの編集権や、さらに他のユーザーと共有する権利を与えることも可能。
Google Calendar の使い方 | グーグル・カレンダーの便利な機能や特徴を紹介します
Gmailとの連携でデキルあなたを創る!
話題のAjaxインターフェースでサクサク使える次世代型Webスケジューラ「Google Calendar」の使い方!!
一日の予定を指定時間にメールで送信することができる。
⇒ リマインダーとの組み合わせで予定を忘れることも皆無。
イベントに登録できるのはイベント名、日時、場所、詳細情報。さらにコメントを書いたり招待状を送ったり。
イベントの招待状をメールで送信できる。
⇒ 参加・不参加の回答は招待状のリンクをクリックするだけ(Gmail、Google Calendarのユーザーでなくても可能)。招待状への回答もGoogle Calendarで確認できる。イベント主催者の強力な味方!
Googleカレンダーをもっと便利に使うための13のツール&Tips | POP*POP
GoogleカレンダーでToDoリストを管理する
ブログ上で予定を確認する
ITmedia Biz.ID:Googleカレンダーのリマインダー機能を活用しよう
携帯電話で受け取るには
多様な通知機能がGoogleカレンダーの特徴の1つだが、
「国名(デフォルトで日本になっている)」「ユーザー名」「モバイルメールのドメイン」「確認コード」をそれぞれ入力する必要がある。
fixture.jp/blog » Blog Archive » Googleカレンダーを携帯で見る方法:補足
カレンダーを公開にしなくても携帯から見ることができる方法を発見。
Googleカレンダーを携帯から完全コントロール!:Gmailer
個人用PIMツールとして、とても評価の高いGoogleカレンダー。
直感的に操作できるユーザーフレンドリーなインターフェースの完成度は、
もはやGmailの域をも完全に超えてしまっていますね。
そのGoogleカレンダーを携帯から完璧にコントロールできるシステムを発見しましたので、ご紹介したいと思います。
Googleカレンダーで見るスケジュール管理の方法 (手帳2.0)
あなたは、会社の部下と1時間のミーティングをするとしたら、いつこの予定を入れますか。
Google Calendar を便利に使う 20 の最新 Tips - オンライン快適仕事術
日報
クレーム管理
「Google Spreadsheets」、順番待ちを避ける裏技は"共有" | ネット | マイコミジャーナル
「閲覧のみ」、「編集を許可」というように相手の権限を設定する。
グループでテキストチャットをしながら共同作業を進められる。正に"リアルタイム"コラボレーションである。
このような複数ユーザーによるコラボレーションは、すでにGoogle Calendarで実現しているが、用途はスケジュール管理に限られる。
ToDoリスト、スケジュール、在庫管理、クレーム管理、日報、労務管理、勤怠管理、FAQ、経費管理、予約管理、設備予約、住所録、伝言板、アポイント調整
チャットをしながら作業ができる表計算「Spreadsheets」
「Spreadsheets」の「Formulas」画面。B12??H12のセルをマウスで選択、
画面右上の「Sum」をクリックして合計を計算しているところ
表計算サービスをアポイントメントの調整に活用する : モバイルTPO検索術 第5回 - Business Mobile
Google Docs & Spreadsheetを使って共同作業を行う
アポイント調整用の表だ。左端に取材先の名称、そして取材先や担当者の都合を書き込むスペースを用意してある。
自分の都合を表に記入していけばよい。表に変更を加えると、変更内容はすぐに反映されるようになっている。
Google Docs & Spreadsheetsの場合、一般的な表計算ソフトと同じように、セルのコピー&ペーストもできる。
マウスやカーソル・キーでセルを範囲指定し、CTRL+Cキーでコピー、CTRL+Vキーでペーストだ。
調整しなければならない案件が十数件程度なら、それほど苦労せずに入力できるだろう。
また、Google Docs & Spreadsheet には簡易的なメッセージ機能も備わっている。
「Discuss」タブで文字を入力すれば、その内容が参加者全員に伝えられるので、
メールを使うよりも手っ取り早く参加者間の調整ができるのではないだろうか。
同じような作業はWikiなどを使ってもできる。
Wikiというのは、参加者がページの内容を自由に書き換えられる仕組みのこと。
複数人が無料で使え、なおかつ指定したメンバーだけが閲覧できるWikiサービスとしては、
livedoor Wikiがある(会員登録が必要)。livedoor Wikiでは、簡単な表を作る機能も備わっており、
別のページへのリンクも簡単に張ることができる。案件の内容によっては、こちらを利用するのもよいだろう。
ブログは、我が国にとどまらず、世界のWebの流れのなかで“小さな巨人”としての地位を築いてきた。古今東西の名文を、無料で手に入れやすい形で提供できるからこそ、人はブログを自分の師として、また青春の想い出として、書きついできたのである。
その源を、文化的にはSixApartのMovableTypeに求めるにせよ、規模の上でGoogleのBloggerに求めるにせよ、いまブログはインターネット利用者層の多様化に従って、ますますその意義を大きくしていると言ってよい。
ブログの意味するものは、激動の現代のみならず将来にわたって、大きくなることはあっても、小さくなることはないだろう。
「はてな匿名ダイアリー」は、そのように多様化した対象に応え、ブックマークに耐えうるエントリを収録するのはもちろん、Web2.0を迎えるにあたって、既成の枠をこえる新鮮で強烈なアイ・オープナーたりたい。
その特異さ故に、この存在は、かつてブログがはじめてWebに登場したときと同じ戸惑いをブロガーに与えるかもしれない。
しかし、<Changing Time, Changing the Internet>時代は変わって、Webも変わる。時を重ねるなかで、精神の糧として、心の一隅を占めるものとして、次なるWebの担い手の若者たちに確かな評価を得られると信じて、ここに「はてな匿名ダイアリー」をリリースする。