JavaScript本格入門を読む・2
ようやくはてな記法を使えるようになったぞ!
ということでfor…inループから。
var menber =['鈴木','山田','金子']; for (var i in menber) { document.writeln('名前は'+menber[i]); } var triangle = {width:30,height:50}; for (var j in triangle) { document.writeln(j + '=' + triangle[j]); } var book = new Object(); book.title = 'ニコニコの歴史'; book.publish = 'ニコニコ出版'; book.price ='500'; for (var k in book) { document.writeln(k + 'は' + book[k]); }
ネストされたループを脱出するよ。ラベル構文。
kuku : for (var i = 1; i<10; i++){ for (var j = 1; j<10; j++){ var k = i *j; if (k>30){ break kuku; } document.writeln(k + ' '); } document.write('<br />'); }
これで2章おしまい。
3−1.オブジェクトとは
3−2.基本データを扱うためのオブジェクト
Stringオブジェクト
var str1 = 'にわにはにわにわとりがいる'; document.writeln(str1.indexOf('にわ')); document.writeln(str1.indexOf('にわ',3)); document.writeln(str1.indexOf('庭')); document.writeln(str1.lastIndexOf('にわ')); document.writeln(str1.lastIndexOf('わ',5)); var str2='僕と私のニコニコ動画'; document.writeln(str2.charAt(4)); document.writeln(str2.slice(5,8)); document.writeln(str2.substring(5,8)); document.writeln(str2.substr(5,3)); document.writeln(str2.split('私')); document.writeln(str1.split('わ',3)); document.writeln('ニコニコ'.anchor('niconico')); document.writeln(str2.link('http://www.nicovideo.jp')); document.writeln('10'.sub()); document.writeln('10'.sup()); document.writeln(str2.concat('ワロスwwww')); document.writeln(str2.length);
lastIndexOfに手間取ってしまった。本だと「L」と「l」「1」の区別と「0」「O」「o」の区別がわかりにくい・・・
Numberオブジェクト
var num1 =255; document.writeln(num1.toString(16)); document.writeln(num1.toString(8)); var num2 =123.45678; document.writeln(num2.toExponential(2)); document.writeln(num2.toFixed(3)); document.writeln(num2.toPrecision(10));
rad進数とか指数形式とか何に使うんだ。これから出てくるのかな?
Mathオブジェクト
めんどくさくなってきた・・・数字だし・・サインコサインタンジェントやろ。書かなくてもいいだろ
Arrayオブジェクト
var ary1 = ['orange','banana','tomato','lemon','strawberry']; var ary2 = ['coffe','tea','milk','cocoa','juce']; document.writeln(ary1.concat(ary2)); document.writeln(ary1.join('/')); document.writeln(ary1.slice(1)); document.writeln(ary1.slice(1,2)); document.writeln(ary1.splice(1,2,'komeda','tullys')); document.writeln(ary1); document.writeln(ary1.pop()); document.writeln(ary1); document.writeln(ary1.push('doutor')); document.writeln(ary1); document.writeln(ary1.shift()); document.writeln(ary1); document.writeln(ary1.unshift('star','bucks')); document.writeln(ary1); document.writeln(ary1.reverse()); document.writeln(ary1.sort()); document.writeln(ary1);
やっぱ数字じゃなくて文字列を色々変えるのは楽しいな。
3−3.Dateオブジェクト
Dateオブジェクトも大丈夫かな
3−4.RegExpオブジェクト
正規表現キター
var p = /http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/gi; var str = 'はてなダイアリーはhttp://d.hatena.ne.jp/です'; str += 'はてなブログはhttp://hatenablog.com/です'; var result = str.match(p); for(var i = 0; i < result.length; i++){ document.writeln(result[i]); }
めっちゃ苦労した・・・
ついにサンプルコードまでダウンロードして比較してしまった。
正規表現難しすぎる(>_<)
var p = /^[0-9]{1,}/g; var str = '101匹ワンちゃん。\n7人の小人'; var result = str.match(p); for (var i = 0; i<result.length; i++){ document.writeln(result[i]); }
うーん。正規表現のエラーがわかればなー。
これもどこが違うのかわかるまで時間がかかってしまった・・・
var p = /http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/gi; var str = 'はてなダイアリーはhttp://d.hatena.ne.jp/です'; str += 'はてなブログはhttp://hatenablog.com/です'; var result = p.exec(str); for(var i = 0; i < result.length; i++){ document.writeln(result[i]); } var p = /http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/gi; var str = 'はてなダイアリーはhttp://d.hatena.ne.jp/です'; str += 'はてなブログはhttp://hatenablog.com/です'; while((result = p.exec(str)) !=null){ document.writeln(result[0]); }
matchメソッドとexecメソッドの違い。
execメソッド難しいな。
var p = /(http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?)/gi; var str = 'はてなダイアリーはhttp://d.hatena.ne.jp/です。'; document.writeln(str.replace(p, '<a href="$1">$1</a>'));
文字の置き換え。これちょっと興奮した。
ようやく、サイトで使えるっぽいやつや!!!
いやー正規表現、もうイヤになってきたなぁ。
今日はここまでにしておくか。今日はめっちゃ捗ったなー
JavaScript本格入門を読む・1
積ん読になっていたJavaScript本格入門を読むぞ。
JavaScript本格入門 ?モダンスタイルによる基礎からAjax・jQueryまで
- 作者: 山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2010/11/27
- メディア: 大型本
- 購入: 29人 クリック: 673回
- この商品を含むブログ (47件) を見る
前から人に勧められていたので買ってはいたが、全然読んでませんでした。
が、しかしモチベーションがびっくりするほどないのでせめてブログを書くぜ。
開発環境(というほど大それたものではない)
会社ではWindowsなのでTerapadを使っていたが、自宅はMacしかないので適当にググっって以下のエディタを導入。
CotEditor -Text Editor for OS X
実行結果はgoogleChromeのJavaScriptコンソールで確認することにした。
これでバッチリだろ(投げやり)
2−1.JavaScriptの基本的な記法
<html> <head> <meta http-equiv="Content-Type" content="text/html"; charaset="utf-8" /> <title>hello</title> </head> <body> <pre> <script type="text/javascript"> <!-- document.writeln("Hello,World"); //--> </script> <noscript>JavaScriptが利用できないです</noscript> </pre> </body> <html> |
基本中の基本から。
<a href="JavaScript:window.alert('hello');">ダイアログを表示</a> |
2−2.変数
msg = 'こんにちわ、JavaScript! '; |
このへんはまぁ余裕だな。
2−3.データ型
var ary = ['one',['two','second'],'three']; document.writeln(ary[0]); document.writeln(ary[1][1]); |
var obj = {x:1,y:2,z:3}; document.writeln(obj.x); document.writeln(obj['x']); |
オブジェクトリテラル、上と下の違い(ドット演算子とブラケット構文)がわからないのだが、ソースが見やすくなるということなのかしら。
2−4.演算子
var x = 1; var y = x; x = 2; document.writeln(y); var ary1 = [0,1,2] var ary2 = ary1; ary1[0] = 5; document.writeln(ary2); |
これ理解するまでちょっと時間かかってしまった。
サンプルコードなのに何の為にこれやってんのかわからん、と思ってしまったぜ・・・
そう、JavaScriptを理解するためでした。
var ary =['red','yellow','blue']; document.writeln(delete ary[0]); document.writeln(ary); var obj = {x:1,y:2}; document.writeln(delete obj.x); document.writeln(obj.x); var obj2 = {x:obj,y:2}; document.writeln(delete obj2.x); document.writeln(obj); |
これ最後のやつ[object Object]を返すんだけど、これってどういうことなのー
objectエラーってことなのかな。1つめと2つめで微妙に大文字と小文字なのも何故・・
document.writeln(typeof obj); |
次のtypeof演算子でわかるかなと思って書いてみたけど、objectって帰ってきてそりゃそうだな、と。
と、少々モヤりつつ演算子終了。
2−5.制御命令
var x =30; if(x >= 10){ if(x >=20){ document.writeln('変数xは20以上です。'); } } else { document.writeln('変数xは10未満です'); } |
これ、本の説明(分岐図)があるからわかった!これだけ見てどういうことかわかるのは難しそう・・・
var rank ='B'; switch(rank){ case'A': document.writeln('Aランクです'); break; case'B': document.writeln('Bランクです'); break; case'C': document.writeln('Cランクです'); break; default : document.writeln('ランク外です'); } |
breakは現在のブロックから処理を脱出するための制御命令(メモ)
swich文が出てくると、かっこいい感じするなぁ。
var x = 8; while(x < 10){ document.writeln('xの値は' +x); x++; } var x =8; do{ document.writeln('xの値は' +x); x++; } while(x<10); |
x++ってどうして記述するのかわからないが、これがないと無限ループしてしまうので注意する。
for(var x= 8; x<10; x++){ document.writeln('xの値は' +x); } |
for構文ですっきり。
中途半端だけど今日はここまでにしよう。明日はfor…inループからです。
続きを読む
アミーンズオーブンのパン
パン取り寄せシリーズ
パトリックロジェのアソートメント
パトリックロジェのアソートメントを取り寄せした。
zopfのパン
zopfのパンをお取り寄せした!
1月24日牛肉記念日@今半 2014
今年も行ってきました。今半の牛肉記念日!
今年は、横浜高島屋店の今半です。
というか、前回よりも安かったのね…
今気がついた。
インターフェイスデザインの実践教室を読んだ
インタフェースデザインの実践教室 ―優れたユーザビリティを実現するアイデアとテクニック
- 作者: Lukas Mathis,武舎広幸,武舎るみ
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/04/17
- メディア: 大型本
- この商品を含むブログ (3件) を見る
オライリーの新作!
私はもうユーザビリティの本を読んでいるときが一番幸せだよ・・・
この本は、わりと「じゃあ実際どうするか?」が中心となっていて興味深かったです。
以下メモ。
- よい文章はよいデザインである
- 文章は、人と製品とがコミュニケーションするための大切な手段です。
- ポップアップウインドウは、クリックして消されるためだけに存在しているかのようだ。(消せば問題は解決すると思われている)
文章が、デザイン!もうちょい本読みたい。
以下の3つのモデルを反映する。
- ユーザーのメンタルモデル
- ユーザーインターフェース
- 製品の実体そのもの
P111 リアリズム
- 細部がリアルであることは、どのような動作をする可能性があるのか、つまり知覚可能なアフォーダンスを伝える助けになる。
- P116 従来の実物を模したデザイン
P141 アニメーション
- 重要でないアニメーションは避ける
- 「ユーザーの作業を遮って何かを無理やり見せる必要が本当にあり、それに関連する情報をアニメーションが伝える場合」
P159 集中を妨げない
- ユーザーの代わりに決定する
このたとえの「メモリーカードの[画像とビデオの読み込み]をクリックする人が何人いるのか?」ってあるあるすぎて笑った。
P162 緊急性がなければユーザーの意思決定を促してはならない
- 通知したい内容が特に重要というわけでないなら表示してはなりません。(略)できるだけ邪魔にならないように表示しましょう。たとえば、モードを変えずにちょっとした警告を表示することができます。
P166 動作の取り消しを可能にする
- ユーザーに信頼されるアプリを目指しましょう。そのためには、ここで説明したようにユーザーに信頼してもらえる取り消し機能を実現するのも大切ですが、ユーザーが予期したとおりに安定して動作することも欠かせません。
P180 環境設定の種類
- 「プレファンスを避けるべきだ」が筆者の主張ですが、この主張にはコンフィギュレーションは含まれていません。
私もプレファンスを避けるべきという主張だし、設定画面が複雑化してストレスが増すと思っているのですごい同意・・・・
プレファンスによりモードが導入されるとアプリの動作に一貫性が欠如するというのも同意
P191 時間
- データに時間実でアクセスできるようにするとわかりやすいことがある。
確かにDSのデータの画面見やすいし、どこに画像があるかわかりやすい!
P213 機能の削除
- その機能の役割が、「非常に重要だがまれにしか使われない」という種類のものではないか?
- その機能があまり使われていないのは、デザインが悪いからではないか?UIがわかりにくいからではないか?奥に隠されてしまっているからではないか?名前が悪いからではないか?使い方がわかればもっと頻繁に利用されるのではないか?
- その機能が無視される理由は、単にその機能が不要だからだろうか?
あとはユーザービリティテストの詳細なやり方とかが載ってて面白かった。
ユーザビリティテストやりたいなぁ。
次読む本。文章もデザインや!
- 作者: スティーヴン・キング,Stephen King,池央耿
- 出版社/メーカー: アーティストハウス
- 発売日: 2001/10/26
- メディア: 単行本
- 購入: 6人 クリック: 56回
- この商品を含むブログ (60件) を見る