onebox 1.8.39 → 1.8.40

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/.travis.yml +0 -1
  4. data/README.md +1 -1
  5. data/lib/onebox/engine/amazon_onebox.rb +98 -17
  6. data/lib/onebox/version.rb +3 -1
  7. data/onebox.gemspec +5 -5
  8. data/templates/amazon.mustache +7 -1
  9. metadata +7 -177
  10. data/spec/fixtures/amazon-og.response +0 -3675
  11. data/spec/fixtures/amazon.response +0 -3040
  12. data/spec/fixtures/cloudapp-gif.response +0 -66
  13. data/spec/fixtures/cloudapp-jpg.response +0 -66
  14. data/spec/fixtures/cloudapp-mp4.response +0 -65
  15. data/spec/fixtures/cloudapp-others.response +0 -66
  16. data/spec/fixtures/dailymail.response +0 -5914
  17. data/spec/fixtures/discourse_topic.response +0 -344
  18. data/spec/fixtures/discourse_topic_reply.response +0 -345
  19. data/spec/fixtures/douban.response +0 -4399
  20. data/spec/fixtures/etsy.response +0 -5827
  21. data/spec/fixtures/etsy_mobile.response +0 -4230
  22. data/spec/fixtures/gfycat.response +0 -1
  23. data/spec/fixtures/githubblob.response +0 -46
  24. data/spec/fixtures/githubcommit.response +0 -87
  25. data/spec/fixtures/githubgist.response +0 -310
  26. data/spec/fixtures/githubpullrequest.response +0 -216
  27. data/spec/fixtures/googleplayapp.response +0 -138
  28. data/spec/fixtures/image.response +0 -0
  29. data/spec/fixtures/meetup.response.html +0 -4419
  30. data/spec/fixtures/meetup_oembed.response +0 -1
  31. data/spec/fixtures/pubmed-electronic-xml.response +0 -175
  32. data/spec/fixtures/pubmed-electronic.response +0 -307
  33. data/spec/fixtures/pubmed-xml.response +0 -122
  34. data/spec/fixtures/pubmed.response +0 -300
  35. data/spec/fixtures/slides.response +0 -2852
  36. data/spec/fixtures/stackexchange-answer.response +0 -1
  37. data/spec/fixtures/stackexchange-question.response +0 -1
  38. data/spec/fixtures/twitterstatus.response +0 -2814
  39. data/spec/fixtures/video.response +0 -0
  40. data/spec/fixtures/wechat-mp.response +0 -631
  41. data/spec/fixtures/wikimedia.response +0 -1
  42. data/spec/fixtures/wikipedia.response +0 -566
  43. data/spec/fixtures/wikipediaredirected.response +0 -899
  44. data/spec/fixtures/xkcd.response +0 -1
  45. data/spec/fixtures/youku-meta.response +0 -1
  46. data/spec/fixtures/youku.response +0 -1443
  47. data/spec/fixtures/youtube-channel.response +0 -5446
  48. data/spec/fixtures/youtube-json.response +0 -1
  49. data/spec/fixtures/youtube-list-json.response +0 -1
  50. data/spec/fixtures/youtube.response +0 -1625
  51. data/spec/lib/onebox/engine/amazon_onebox_spec.rb +0 -116
  52. data/spec/lib/onebox/engine/audio_onebox_spec.rb +0 -31
  53. data/spec/lib/onebox/engine/cloudapp_onebox_spec.rb +0 -26
  54. data/spec/lib/onebox/engine/douban_onebox_spec.rb +0 -29
  55. data/spec/lib/onebox/engine/gfycat_onebox_spec.rb +0 -34
  56. data/spec/lib/onebox/engine/github_blob_onebox_spec.rb +0 -21
  57. data/spec/lib/onebox/engine/github_commit_onebox_spec.rb +0 -108
  58. data/spec/lib/onebox/engine/github_gist_onebox_spec.rb +0 -67
  59. data/spec/lib/onebox/engine/github_pullrequest_onebox_spec.rb +0 -46
  60. data/spec/lib/onebox/engine/google_docs_onebox_spec.rb +0 -35
  61. data/spec/lib/onebox/engine/google_maps_onebox_spec.rb +0 -72
  62. data/spec/lib/onebox/engine/google_play_app_onebox_spec.rb +0 -28
  63. data/spec/lib/onebox/engine/html_spec.rb +0 -25
  64. data/spec/lib/onebox/engine/image_onebox_spec.rb +0 -39
  65. data/spec/lib/onebox/engine/json_spec.rb +0 -25
  66. data/spec/lib/onebox/engine/pdf_onebox_spec.rb +0 -28
  67. data/spec/lib/onebox/engine/pubmed_onebox_spec.rb +0 -78
  68. data/spec/lib/onebox/engine/slides_onebox_spec.rb +0 -24
  69. data/spec/lib/onebox/engine/stack_exchange_onebox_spec.rb +0 -97
  70. data/spec/lib/onebox/engine/trello_onebox_spec.rb +0 -30
  71. data/spec/lib/onebox/engine/twitch_clips_onebox_spec.rb +0 -10
  72. data/spec/lib/onebox/engine/twitch_stream_onebox_spec.rb +0 -15
  73. data/spec/lib/onebox/engine/twitch_video_onebox_spec.rb +0 -10
  74. data/spec/lib/onebox/engine/twitter_status_onebox_spec.rb +0 -187
  75. data/spec/lib/onebox/engine/video_onebox_spec.rb +0 -31
  76. data/spec/lib/onebox/engine/wechat_mp_onebox_spec.rb +0 -26
  77. data/spec/lib/onebox/engine/whitelisted_generic_onebox_spec.rb +0 -179
  78. data/spec/lib/onebox/engine/wikimedia_onebox_spec.rb +0 -23
  79. data/spec/lib/onebox/engine/wikipedia_onebox_spec.rb +0 -21
  80. data/spec/lib/onebox/engine/xkcd_spec.rb +0 -27
  81. data/spec/lib/onebox/engine/youku_onebox_spec.rb +0 -13
  82. data/spec/lib/onebox/engine/youtube_onebox_spec.rb +0 -84
  83. data/spec/lib/onebox/engine_spec.rb +0 -101
  84. data/spec/lib/onebox/helpers_spec.rb +0 -73
  85. data/spec/lib/onebox/layout_spec.rb +0 -79
  86. data/spec/lib/onebox/matcher_spec.rb +0 -74
  87. data/spec/lib/onebox/preview_spec.rb +0 -74
  88. data/spec/lib/onebox/status_check_spec.rb +0 -68
  89. data/spec/lib/onebox_spec.rb +0 -65
  90. data/spec/spec_helper.rb +0 -90
  91. data/spec/support/html_spec_helper.rb +0 -18
  92. data/web/assets/javascripts/jquery.js +0 -4
  93. data/web/assets/javascripts/main.js +0 -23
  94. data/web/assets/stylesheets/normalize.css +0 -427
  95. data/web/assets/stylesheets/style.css +0 -25
  96. data/web/views/index.haml +0 -29
  97. data/web/views/layout.haml +0 -11
@@ -1,3040 +0,0 @@
1
- <!DOCTYPE html>
2
- <!--[if lt IE 7]><html class="a-no-js a-lt-ie10 a-lt-ie9 a-lt-ie8 a-lt-ie7 a-ie6 a-touch a-mobile" data-19ax5a9jf="mongoose"><![endif]--><!--[if IE 7]><html class="a-no-js a-lt-ie10 a-lt-ie9 a-lt-ie8 a-ie7 a-touch a-mobile" data-19ax5a9jf="mongoose"><![endif]--><!--[if IE 8]><html class="a-no-js a-lt-ie10 a-lt-ie9 a-ie8 a-touch a-mobile" data-19ax5a9jf="mongoose"><![endif]--><!--[if IE 9]><html class="a-no-js a-lt-ie10 a-ie9 a-touch a-mobile" data-19ax5a9jf="mongoose"><![endif]--><!--[if !IE]><!--><html class="a-no-js a-touch a-mobile" data-19ax5a9jf="mongoose">
3
- <!--<![endif]-->
4
- <head>
5
- <script type="text/javascript">var ue_t0=ue_t0||+new Date();</script>
6
- <script type="text/javascript">
7
- var ue_hob=+new Date();
8
-
9
- var ue_id='1VGN4TEE63ST5RTPH4EJ',
10
- ue_csm = window,
11
- ue_err_chan = 'jserr-rw',
12
- ue = {};
13
- (function(a){var d=a.ue=a.ue||{},f=Date.now||function(){return+new Date};d.d=function(b){return f()-(b?0:a.ue_t0)};d.stub=function(b,c){if(!b[c]){var e=[];b[c]=function(){e.push([e.slice.call(arguments),d.d(),a.ue_id])};b[c].replay=function(b){for(var a;a=e.shift();)b(a[0],a[1],a[2])};b[c].isStub=1}}})(ue_csm);
14
-
15
- ue.stub(ue,"log");ue.stub(ue,"onunload");ue.stub(ue,"onflush");
16
-
17
- (function(c,d){function e(f,b){if(!(a.ec>a.mxe)&&f){a.ec++;a.ter.push(f);b=b||{};var c=f.logLevel||b.logLevel;c&&c!=h||a.ecf++;b.pageURL=""+(d.location?d.location.href:"");b.logLevel=c;b.attribution=f.attribution||b.attribution;a.erl.push({ex:f,info:b})}}function g(a,b,d,e,g){c.ueLogError({m:a,f:b,l:d,c:""+e,err:g,fromOnError:1,args:arguments});return!1}var h="FATAL",a={ec:0,ecf:0,pec:0,ts:0,erl:[],ter:[],mxe:50,startTimer:function(){a.ts++;setInterval(function(){c.ue&&a.pec<a.ec&&c.uex("at");a.pec=
18
- a.ec},1E4)}};g.skipTrace=1;e.skipTrace=1;e.isStub=1;c.ueLogError=e;c.ue_err=a;d.onerror=g})(ue_csm,window);
19
-
20
-
21
-
22
- var ue_url='/gp/aw/d/193435659X/uedata/nvp/unsticky/184-9743298-0728138/DetailAW/ntpoffrw',
23
- ue_sid='184-9743298-0728138',
24
- ue_mid='ATVPDKIKX0DER',
25
- ue_sn='www.amazon.com',
26
- ue_furl='fls-na.amazon.com',
27
- ue_navtiming=1,
28
- ue_log_idx=0,
29
- ue_fcsn=1,
30
- ue_isrw=true,
31
- ue_fpf='//fls-na.amazon.com/1/batch/1/OP/ATVPDKIKX0DER:184-9743298-0728138:1VGN4TEE63ST5RTPH4EJ$uedata=s:',
32
- ue_lnb=0,
33
- ue_lwl=0,
34
- ue_ran=0,
35
- ue_novizfix=0,
36
- ue_qsl=2000,
37
- ue_bli=1,
38
- ue_blc=0,
39
- ue_ueh=1,
40
- ue_sbl=0,
41
- ue_mce='click';
42
- if (!window.ue_csm) {var ue_csm = window;}
43
- function ue_viz(){(function(c,e,p){function k(a){if(c.ue.viz.length<q&&!l){var b=a.type;a=a.originalEvent;/^focus./.test(b)&&a&&(a.toElement||a.fromElement||a.relatedTarget)||(b=e[m]||("blur"==b||"focusout"==b?"hidden":"visible"),c.ue.viz.push(b+":"+(+new Date-c.ue.t0)),"visible"==b&&(ue.isl&&uex("at"),l=1))}}for(var l=0,a,f,g,m,n=["webkit","o","ms","moz",""],d=0,q=20,h=0;h<n.length&&!d;h++)if(a=n[h],f=(a?a+"H":"h")+"idden",d="boolean"==typeof e[f])g=a+"visibilitychange",m=1!=p.ue_novizfix?(a?a+"V":
44
- "v")+"isibilityState":a+"VisibilityState";k({});d&&e.addEventListener(g,k,0);c.ue&&d&&(c.ue.pageViz={event:g,propHid:f})})(ue_csm,document,window)};
45
-
46
- (function(a,g){function v(a){return a&&a.replace&&a.replace(/^\s+|\s+$/g,"")}function p(a){return"undefined"===typeof a}function t(d,c,e,h){h=h||+new Date;var g,m;if(c||p(e)){if(d)for(m in g=c?f("t",c)||f("t",c,{}):a.ue.t,g[d]=h,e)e.hasOwnProperty(m)&&f(m,c,e[m]);return h}}function f(d,c,e){var g=a.ue,f=c&&c!=g.id?g.sc[c]:g;f||(f=g.sc[c]={});"id"==d&&e&&(g.cfa2=1,a.ue_ran&&(a.ue_cel&&a.ue_cel.reset(e),a.ue.log.reset&&a.ue.log.reset()));return f[d]=e||f[d]}function A(d,c,e,g,f){e="on"+e;var m=c[e];
47
- "function"===typeof m?d&&(a.ue.h[d]=m):m=function(){};c[e]=f?function(a){g(a);m(a)}:function(a){m(a);g(a)};c[e].isUeh=1}function B(d,c,e){function h(c,e){var b=[c],F=0,g={},m,h;e?(b.push("m=1"),g[e]=1):g=a.ue.sc;for(h in g)if(g.hasOwnProperty(h)){var k=f("wb",h),l=f("t",h)||{},q=f("t0",h)||a.ue.t0,n;if(e||2==k){k=k?F++:"";b.push("sc"+k+"="+h);for(n in l)3>=n.length&&!p(l[n])&&null!==l[n]&&b.push(n+k+"="+(l[n]-q));b.push("t"+k+"="+l[d]);if(f("ctb",h)||f("wb",h))m=1}}!w&&m&&b.push("ctb=1");return b.join("&")}
48
- function z(c,b,e,d){if(c){var f=a.ue_err,h;if(!d||!a.ue.log)if(G&&g[x]&&g[x][C])g[x][C](c);else h=new Image,a.ue.iel.push(h),h.src=c;H?a.ue_fpf&&g.encodeURIComponent&&c&&(d=new Image,c=""+a.ue_fpf+g.encodeURIComponent(c)+":"+(+new Date-a.ue_t0),a.ue.iel.push(d),d.src=c):a.ue.log&&(h=g.chrome&&"ul"==b,a.ue.log(c,"uedata",a.ue_svi?{n:1,img:!d&&h?1:0}:{n:1}),a.ue.ielf.push(c));f&&!f.ts&&f.startTimer();a.ue.b&&(f=a.ue.b,a.ue.b="",z(f,b,e,1))}}function m(c){if(!ue.collected){var b=c.timing,e=c.navigation,
49
- d=ue.t;b&&(d.na_=b.navigationStart,d.ul_=b.unloadEventStart,d._ul=b.unloadEventEnd,d.rd_=b.redirectStart,d._rd=b.redirectEnd,d.fe_=b.fetchStart,d.lk_=b.domainLookupStart,d._lk=b.domainLookupEnd,d.co_=b.connectStart,d._co=b.connectEnd,d.sc_=b.secureConnectionStart,d.rq_=b.requestStart,d.rs_=b.responseStart,d._rs=b.responseEnd,d.dl_=b.domLoading,d.di_=b.domInteractive,d.de_=b.domContentLoadedEventStart,d._de=b.domContentLoadedEventEnd,d._dc=b.domComplete,d.ld_=b.loadEventStart,d._ld=b.loadEventEnd,
50
- b=d.na_,c="function"!==typeof c.now||p(b)?0:new Date(b+c.now())-new Date,d.ntd=c+a.ue.t0);e&&(d.ty=e.type+a.ue.t0,d.rc=e.redirectCount+a.ue.t0);ue.collected=1}}function s(b){var c=n&&n.navigation?n.navigation.type:y,d=c&&2!=c,e=a.ue.bfini;a.ue.cfa2||(e&&1<e&&(b+="&bfform=1",d||(a.ue.isBFT=e-1)),2==c&&(b+="&bfnt=1",a.ue.isBFT=a.ue.isBFT||1),a.ue.ssw&&a.ue.isBFT&&(p(a.ue.isNRBF)&&(c=a.ue.ssw(a.ue.oid),c.e||p(c.val)||(a.ue.isNRBF=1<c.val?0:1)),p(a.ue.isNRBF)||(b+="&nrbf="+a.ue.isNRBF)),a.ue.isBFT&&!a.ue.isNRBF&&
51
- (b+="&bft="+a.ue.isBFT));return b}if(c||p(e)){for(var q in e)e.hasOwnProperty(q)&&f(q,c,e[q]);t("pc",c,e);q=f("id",c)||a.ue.id;var b=a.ue.url+"?"+d+"&v="+a.ue.v+"&id="+q,w=f("ctb",c)||f("wb",c),n=g.performance||g.webkitPerformance,k,l;w&&(b+="&ctb="+w);1<a.ueinit&&(b+="&ic="+a.ueinit);!a.ue._fi||"at"!=d||c&&c!=q||(b+=a.ue._fi());if(!("ld"!=d&&"ul"!=d||c&&c!=q)){if("ld"==d){g.onbeforeunload&&g.onbeforeunload.isUeh&&(g.onbeforeunload=null);if(g.chrome)for(l=0;l<ue.ulh.length;l++)D("beforeunload",ue.ulh[l]);
52
- (l=document.ue_backdetect)&&l.ue_back&&l.ue_back.value++;a._uess&&(k=a._uess());a.ue.isl=1}a.ue_navtiming&&n&&n.timing&&(f("ctb",q,"1"),1==a.ue_navtiming&&t("tc",y,y,n.timing.navigationStart));n&&m(n);a.ue.t.hob=a.ue_hob;a.ue.t.hoe=a.ue_hoe;a.ue.ifr&&(b+="&ifr=1")}t(d,c,e);e="ld"==d&&c&&f("wb",c);var u;e?f("wb",c,2):"ld"==d&&(r.lid=v(q));for(u in a.ue.sc)if(1==f("wb",u))break;if(e){if(a.ue.s)return;b=h(b,null)}else l=h(b,null),l!=b&&(l=s(l),a.ue.b=l),k&&(b+=k),b=h(b,c||a.ue.id);b=s(b);if(a.ue.b||
53
- e)for(u in a.ue.sc)2==f("wb",u)&&delete a.ue.sc[u];k=0;ue._rt&&(b+="&rt="+ue._rt());ue._bf&&(b+="&bf="+ue._bf());e||(a.ue.s=0,(k=a.ue_err)&&0<k.ec&&k.pec<k.ec&&(k.pec=k.ec,b+="&ec="+k.ec+"&ecf="+k.ecf),k=f("ctb",c),f("t",c,{}));b&&a.ue.tag&&0<a.ue.tag().length&&(b+="&csmtags="+a.ue.tag().join("|"),a.ue.tag=a.ue.tagC());b&&a.ue.viz&&0<a.ue.viz.length&&(b+="&viz="+a.ue.viz.join("|"),a.ue.viz=[]);b&&!p(a.ue_pty)&&(b+="&pty="+a.ue_pty+"&spty="+a.ue_spty+"&pti="+a.ue_pti);b&&a.ue.tabid&&(b+="&tid="+a.ue.tabid);
54
- b&&a.ue.aftb&&(b+="&aftb=1");b&&a.ue.sbf&&(b+="&sbf=1");!a.ue._ui||c&&c!=q||(b+=a.ue._ui());a.ue.count&&1===a.ue_blc&&a.ue.count("baselineCounter1",1);a.ue.a=b;z(b,d,k,e)}}function s(a,c,e){e=e||g;e.addEventListener?e.addEventListener(a,c,!1):e.attachEvent&&e.attachEvent("on"+a,c)}function D(a,c,e){e=e||g;e.removeEventListener?e.removeEventListener(a,c,!1):e.detachEvent&&e.detachEvent("on"+a,c)}function E(){function d(){a.onUl()}function c(a){return function(){e[a]||(e[a]=1,B(a))}}var e=a.ue.r,f,
55
- p;a.onLd=c("ld");a.onLdEnd=c("ld");a.onUl=c("ul");f={stop:c("os")};g.chrome?(s("beforeunload",d),ue.ulh.push(d)):f[I]=a.onUl;for(p in f)f.hasOwnProperty(p)&&A(0,g,p,f[p]);a.ue_viz&&ue_viz();s("load",a.onLd);t("ue")}a.ueinit=(a.ueinit||0)+1;var r={t0:g.aPageStart||a.ue_t0,id:a.ue_id,url:a.ue_url,rid:a.ue_id,a:"",b:"",h:{},r:{ld:0,oe:0,ul:0},s:1,t:{},sc:{},iel:[],ielf:[],fc_idx:{},viz:[],v:"0.735.0",d:a.ue&&a.ue.d,log:a.ue&&a.ue.log,clog:a.ue&&a.ue.clog,onflush:a.ue&&a.ue.onflush,onunload:a.ue&&a.ue.onunload,
56
- stub:a.ue&&a.ue.stub,lr:a.ue&&a.ue.lr,ulh:[],cfa2:0},H=a.ue_fpf?1:0,G=a.ue_sbl,I="beforeunload",x="navigator",C="sendBeacon",y;r.oid=v(r.id);r.lid=v(r.id);a.ue=r;a.ue._t0=a.ue.t0;a.ue.tagC=function(){var a={};return function(c){c&&(a[c]=1);c=[];for(var e in a)a.hasOwnProperty(e)&&c.push(e);return c}};a.ue.tag=a.ue.tagC();a.ue.ifr=g.top!==g.self||g.frameElement?1:0;ue.attach=s;ue.detach=D;ue.reset=function(d,c){d&&(a.ue_cel&&a.ue_cel.reset(),a.ue.t0=+new Date,a.ue.rid=d,a.ue.id=d,a.ue.fc_idx={},a.ue.viz=
57
- [])};a.uei=E;a.ueh=A;a.ues=f;a.uet=t;a.uex=B;E()})(ue_csm,window);
58
-
59
-
60
-
61
- (function(g){var a=g.ue;a.cv={};a.cv.scopes={};a.count=function(d,e,c){var b={},f=a.cv;b.counter=d;b.value=e;b.t=a.d();c&&c.scope&&(f=a.cv.scopes[c.scope]=a.cv.scopes[c.scope]||{},b.scope=c.scope);if(void 0===e)return f[d];f[d]=e;a.clog?a.clog(b,"csmcount"):a.log&&a.log(b,"csmcount",{c:1})};3===g.ue_blc&&a.count("baselineCounter2",1)})(ue_csm);
62
-
63
- var ue_hoe=+new Date();
64
- </script>
65
- <script>var aPageStart = (new Date()).getTime();</script><meta name="viewport" content="width=device-width, maximum-scale=1, minimum-scale=1, user-scalable=no">
66
- <meta charset="utf-8">
67
-
68
-
69
-
70
-
71
-
72
- <link rel="dns-prefetch" href="//g-ecx.images-amazon.com">
73
- <link rel="dns-prefetch" href="//z-ecx.images-amazon.com">
74
- <link rel="dns-prefetch" href="//ecx.images-amazon.com">
75
- <link rel="dns-prefetch" href="//images-na.ssl-images-amazon.com">
76
- <script type="text/javascript">
77
- var CSMReqs={af:{c:2,p:'atf'},cf:{c:2,p:'cf'}};
78
- var setCSMReq = function(a){
79
- a=a.toLowerCase();
80
- var b=CSMReqs[a];
81
- if(--b.c==0){
82
- if(typeof b.f == 'function'){
83
- b.f();
84
- }
85
- else{
86
- if(typeof
87
- uet=='function'){uet(a);};
88
- if(typeof P !=
89
- 'undefined'){P.register(b.p);};
90
- }
91
- }
92
- }
93
-
94
- var addlongPoleTag = function(marker,customtag){
95
- marker=marker.toLowerCase();
96
- var b=CSMReqs[marker];
97
- if(b.c==0){
98
- if(window.ue && ue.tag) {ue.tag(customtag);}
99
- }
100
- }
101
- </script>
102
-
103
-
104
-
105
-
106
-
107
-
108
-
109
-
110
-
111
-
112
-
113
-
114
-
115
-
116
-
117
-
118
-
119
-
120
-
121
-
122
-
123
-
124
-
125
-
126
-
127
- <link rel="subresource" href="http://z-ecx.images-amazon.com/images/I/01DV5-zjVfL._RC%7C11bLr-gKTOL.css,01fiOaZnvgL.css,21evmLvoBLL.css,01X8BhwTaiL.css,01kBs8Ea2RL.css,01UibEE8n4L.css,11LAzIH6T3L.css_.css#AUIClients/DetailPageMobileWebMetaAsset">
128
- <link rel="subresource" href="http://z-ecx.images-amazon.com/images/G/01/AUIClients/AmazonUI-cd078a69eaec4787e96e6311ed5750485f0a4a78.device_type-mobile.rendering_engine-not-trident.min._V2_.css">
129
-
130
-
131
-
132
-
133
-
134
-
135
-
136
-
137
-
138
-
139
-
140
-
141
-
142
-
143
-
144
-
145
-
146
-
147
-
148
-
149
-
150
-
151
-
152
-
153
-
154
-
155
-
156
-
157
-
158
-
159
-
160
-
161
-
162
-
163
-
164
-
165
-
166
-
167
-
168
-
169
-
170
-
171
-
172
-
173
-
174
-
175
-
176
-
177
-
178
-
179
-
180
-
181
-
182
-
183
-
184
-
185
-
186
-
187
-
188
-
189
-
190
-
191
-
192
-
193
-
194
-
195
-
196
-
197
-
198
-
199
-
200
-
201
-
202
-
203
-
204
-
205
-
206
-
207
-
208
-
209
-
210
-
211
-
212
-
213
-
214
-
215
-
216
-
217
-
218
-
219
-
220
-
221
-
222
-
223
-
224
-
225
-
226
-
227
-
228
-
229
-
230
-
231
-
232
-
233
-
234
-
235
-
236
-
237
-
238
-
239
-
240
- <script>
241
- (function(o,b,l,m){function k(a,b){F&&F.count&&F.count("aui:"+a,b===0?0:b||(F.count("aui:"+a)||0)+1)}function j(a,b,c){a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&a.attachEvent("on"+b,c)}function h(a,b,c,d){b=b&&c?b+a+c:b||c;return d?h(a,b,d):b}function g(a,b){try{Object.defineProperty(o,a,{value:b})}catch(c){o[a]=b}}function f(){return setTimeout(B,0)}function d(a,b){var c=a.length,d=c,e=function(){d--||(E.push(b),v||(f(),v=!0))};for(e();c--;)A[a[c]]?e():(n[a[c]]=n[a[c]]||[]).push(e)}
242
- function c(a,c,d,e){var f=b.createElement(a?"script":"link");j(f,"error",e);a?(f.type="text/javascript",f.async=!0,d&&(c.indexOf("images/I")!==-1||/AUIClients/.test(c))&&f.setAttribute("crossorigin","anonymous"),f.src=c):(f.rel="stylesheet",f.href=c);b.getElementsByTagName("head")[0].appendChild(f)}function a(a,b){return function(d){function e(){c(b,d,f,function(){f?(f=!1,k("resource_retry"),e()):(k("resource_error"),a.log("Asset failed to load: "+d))})}if(z[d])return!1;z[d]=!0;k("resource_count");
243
- var f=!0;return!e()}}function e(a,b,c,e,f){return function(g,h){var i=f||this;typeof g==="function"&&(h=g,g="anon"+G++);var j=i.guardError(g,function(){for(var c=[],d=0;d<a.length;d++)c[d]=H.hasOwnProperty(a[d])?H[a[d]]:m;d=null;e?d=h:typeof h==="function"&&(d=h.apply(o,c));if(b){H[g]=d;c=g;for(A[c]=!0;(n[c]||[]).length;)n[c].shift()();delete n[c]}});H.hasOwnProperty(g)&&i.error("Component already registered",g);H[g]=m;c?j():d(a,j)}}function i(a){return function(){return{execute:e(arguments,!1,a,
244
- !1,this),register:e(arguments,!0,a,!1,this)}}}function p(a,b){return function(c,d){var e=this;return function(){d||(d=c,c=m);try{d.apply(this,arguments)}catch(f){var g=o.console;if(g&&g.error&&e.log(f,b,c))g.error(h(String.fromCharCode(10),h(": ",a,c,f.message),f.stack||f));else throw f instanceof Error?f:Error(h(": ",a,c,f));}}}}function r(b){this.log=function(a,c,d){var e=o.ueLogError;return e?(e({message:a,logLevel:c||"ERROR",attribution:h(":",b,d)}),!0):!1};this.error=function(a,c,d,e){throw Error(h(" @ ",
245
- h(":",e,a),h(":",b,c,d)));};this.guardError=p(b);this.guardFatal=p(b,"FATAL");this.load={js:a(this,!0),css:a(this)}}function s(a,b){for(var c=a.className.split(" "),d=c.length;d--;)if(c[d]===b)return;a.className+=" "+b}function q(a,b){for(var c=a.className.split(" "),d=[],e;(e=c.pop())!==m;)e&&e!==b&&d.push(e);a.className=d.join(" ")}function w(a){try{return a()}catch(b){return!1}}function t(){if(sa){var a=o.innerWidth?{w:o.innerWidth,h:o.innerHeight}:{w:I.clientWidth,h:I.clientHeight},b=!1;Math.abs(a.w-
246
- ta.w)>5||a.h-ta.h>50?(ta=a,ua=4,(b=Q.mobile||Q.tablet?a.w>a.h:a.w>=1250)?s(I,"a-ws"):q(I,"a-ws")):ua--&&(wa=setTimeout(t,16))}}function u(){clearTimeout(wa);ua=4;t()}function x(a){(sa=a===m?!sa:!!a)&&t()}function D(){return sa}var y=o.AmazonUIPageJS||o.P;if(y&&y.when&&y.register)throw Error("A copy of P has already been loaded on this page.");var F=o.ue;F&&F.tag&&(F.tag("aui"),F.tag("aui:aui_build_date:3.15.6-2015-06-10"));var C=l.now=l.now||function(){return+new l},E=[],v=!1,B;B=function(){for(var a=
247
- f(),b=C();E.length;)if(E.shift()(),C()-b>50)return;clearTimeout(a);v=!1};(function(a){try{return a.test(navigator.userAgent)}catch(b){return!1}})(/OS 6_[0-9]+ like Mac OS X/i)&&j(o,"scroll",f);var A={},n={},z={},G=0,H={},M;r.prototype={declare:e([],!0,!0,!0),register:e([],!0),execute:e([]),AUI_BUILD_DATE:"3.15.6-2015-06-10",when:i(),now:i(!0),trigger:function(a,b){var c=o.aPageStart||NaN,d=C(),c={data:b,pageElapsedTime:d-c,triggerTime:d};this.declare(a,c);M&&M(a,c)},handleTriggers:function(a){M&&
248
- this.error("Trigger handler already registered");M=a},attributeErrors:function(a){return new r(a)}};g("AmazonUIPageJS",new r);g("P",o.AmazonUIPageJS);if(b.addEventListener){var K;b.addEventListener("DOMContentLoaded",K=function(){o.AmazonUIPageJS.trigger("a-domready");b.removeEventListener("DOMContentLoaded",K,!1)},!1)}var I=b.documentElement,U;try{U=navigator.userAgent}catch(ba){U=""}var X=function(){var a="O,ms,Moz,Webkit".split(","),c=b.createElement("div");return{testGradients:function(){c.style.cssText=
249
- ("background-image:"+"-webkit- ".split(" ").join("gradient(linear,left top,right bottom,from(#9f9),to(white));background-image:")+a.join("linear-gradient(left top,#9f9, white);background-image:")).slice(0,-17);return c.style.backgroundImage.indexOf("gradient")>-1},test:function(b){for(var d=b.charAt(0).toUpperCase()+b.substr(1),b=(a.join(d+" ")+d+" "+b).split(" "),d=b.length;d--;)if(c.style[b[d]]==="")return!0;return!1},testTransform3d:function(){var a=!1;if(o.matchMedia)a=o.matchMedia("(-webkit-transform-3d)").matches;
250
- return a}}}(),y=I.className,T=/(^| )a-mobile( |$)/.test(y),L=/(^| )a-tablet( |$)/.test(y),Q={audio:function(){return!!b.createElement("audio").canPlayType},video:function(){return!!b.createElement("video").canPlayType},canvas:function(){return!!b.createElement("canvas").getContext},offline:function(){return navigator.hasOwnProperty&&navigator.hasOwnProperty("onLine")&&navigator.onLine},dragDrop:function(){return"draggable"in b.createElement("span")},geolocation:function(){return!!navigator.geolocation},
251
- history:function(){return!(!o.history||!o.history.pushState)},webworker:function(){return!!o.Worker},autofocus:function(){return"autofocus"in b.createElement("input")},inputPlaceholder:function(){return"placeholder"in b.createElement("input")},textareaPlaceholder:function(){return"placeholder"in b.createElement("textarea")},localStorage:function(){return"localStorage"in o&&o.localStorage!==null},orientation:function(){return"orientation"in o},touch:function(){return"ontouchend"in b},gradients:function(){return X.testGradients()},
252
- hires:function(){var a=o.devicePixelRatio&&o.devicePixelRatio>=1.5||o.matchMedia&&o.matchMedia("(min-resolution:144dpi)").matches;k("hiRes"+(T?"Mobile":L?"Tablet":"Desktop"),a?1:0);return a},transform3d:function(){return X.testTransform3d()},touchScrolling:function(){return RegExp("Windowshop|android.([3-9]|[L-Z])|OS ([5-9]|[1-9][0-9]+)(_[0-9]{1,2})+ like Mac OS X|Chrome|Silk|Firefox|Trident"+String.fromCharCode(92)+"/.+?; Touch","i").test(U)},ios:function(){return!!U.match(/OS [1-9][0-9]*(_[0-9]*)+ like Mac OS X/i)},
253
- android:function(){return!!U.match(/android.([1-9]|[L-Z])/i)&&!/trident/i.test(U)},mobile:function(){return T},tablet:function(){return L}},ca;for(ca in Q)Q.hasOwnProperty(ca)&&(Q[ca]=w(Q[ca]));for(var fa="textShadow textStroke boxShadow borderRadius borderImage opacity transform transition".split(" "),da=0;da<fa.length;da++)Q[fa[da]]=w(function(){return X.test(fa[da])});var sa=!0,wa=0,ta={w:0,h:0},ua=4;t();typeof o.addEventListener==="function"?o.addEventListener("resize",u,!1):o.attachEvent("onresize",
254
- u);q(I,"a-no-js");s(I,"a-js");y=[];for(ca in Q)Q.hasOwnProperty(ca)&&Q[ca]&&y.push("a-"+ca.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()}));s(I,y.join(" "));I.setAttribute("data-aui-build-date",o.AmazonUIPageJS.AUI_BUILD_DATE);o.AmazonUIPageJS.register("p-detect",function(){return{capabilities:Q,toggleResponsiveGrid:x,responsiveGridEnabled:D}})})(window,document,Date);
255
- //Locally override
256
- </script>
257
- <script>
258
- (window.AmazonUIPageJS ? AmazonUIPageJS : P).when('atf').execute(function() {
259
- (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('http://z-ecx.images-amazon.com/images/I/01r5SF1hluL._RC|31AO4LJkV6L.js,21U91qCGMCL.js,01cwnVbAYOL.js,01FGskrzCvL.js,01myPyUh9yL.js,01RrNePoCqL.js_.js#AUIClients/DetailPageMobileWebMetaAsset');
260
- });
261
- (window.AmazonUIPageJS ? AmazonUIPageJS : P).when('atf').execute(function() {
262
- (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('http://z-ecx.images-amazon.com/images/I/21dWa2a05RL._RC|315S3mVOS8L.js,21LWxcjze6L.js_.js#AUIClients/PersonalizationMobileDetailPageJSMetaAsset');
263
- });
264
- (window.AmazonUIPageJS ? AmazonUIPageJS : P).when('ready').execute(function() {
265
- (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('http://z-ecx.images-amazon.com/images/G/01/AUIClients/AnywhereSearchSuggestionsJS-0796cea20fb15281354671724adb8c008fbf78f3.min._V1_.js');
266
- });
267
- (window.AmazonUIPageJS ? AmazonUIPageJS : P).when('atf').execute(function() {
268
- (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('http://z-ecx.images-amazon.com/images/G/01/AUIClients/AmazonUI-25fd282d40a2b957af26569c176ff16eee40a973.device_type-mobile.rendering_engine-not-trident.min._V2_.js');
269
- });
270
- </script>
271
-
272
-
273
-
274
-
275
- <script type="text/javascript">
276
- P.when('A', 'a-touch').execute(function(A, aTouch){
277
- var $ = A.$;
278
-
279
- A.on('a:popover:beforeSlideOut', function(){
280
- $(document).bind('click.a-secondary-view-block', function(e){
281
- e.preventDefault();
282
- e.stopImmediatePropagation();
283
-
284
- A.delay(function(){
285
- $(document).unbind('click.a-secondary-view-block');
286
- }, 600);
287
- });
288
-
289
- A.delay(function(){
290
- $(document).unbind('click.a-secondary-view-block');
291
- }, 2000);
292
- });
293
- });
294
- </script>
295
-
296
-
297
-
298
-
299
-
300
-
301
-
302
-
303
-
304
-
305
-
306
-
307
-
308
-
309
-
310
-
311
-
312
-
313
-
314
-
315
-
316
-
317
-
318
-
319
-
320
-
321
-
322
-
323
-
324
-
325
-
326
-
327
-
328
-
329
-
330
-
331
-
332
-
333
-
334
-
335
-
336
-
337
-
338
-
339
-
340
-
341
-
342
-
343
-
344
-
345
-
346
-
347
-
348
-
349
-
350
-
351
-
352
-
353
-
354
-
355
-
356
-
357
-
358
-
359
-
360
-
361
-
362
-
363
-
364
-
365
-
366
-
367
-
368
-
369
-
370
-
371
-
372
-
373
-
374
-
375
-
376
-
377
-
378
-
379
-
380
-
381
-
382
-
383
-
384
-
385
-
386
-
387
-
388
-
389
-
390
-
391
-
392
-
393
-
394
-
395
-
396
-
397
-
398
-
399
-
400
-
401
-
402
-
403
-
404
-
405
-
406
-
407
-
408
-
409
-
410
-
411
-
412
-
413
-
414
-
415
-
416
-
417
-
418
-
419
-
420
-
421
-
422
-
423
-
424
-
425
-
426
-
427
-
428
-
429
-
430
-
431
-
432
-
433
-
434
-
435
-
436
-
437
-
438
-
439
-
440
-
441
-
442
-
443
-
444
-
445
-
446
-
447
-
448
-
449
-
450
-
451
-
452
-
453
-
454
-
455
-
456
-
457
-
458
-
459
-
460
-
461
-
462
-
463
-
464
-
465
-
466
-
467
-
468
-
469
-
470
-
471
-
472
-
473
-
474
-
475
-
476
-
477
-
478
-
479
-
480
-
481
-
482
-
483
-
484
-
485
-
486
-
487
-
488
-
489
-
490
-
491
-
492
-
493
-
494
-
495
-
496
-
497
-
498
-
499
-
500
-
501
-
502
-
503
-
504
-
505
-
506
-
507
-
508
-
509
- <link rel="stylesheet" href="http://z-ecx.images-amazon.com/images/I/01DV5-zjVfL._RC%7C11bLr-gKTOL.css,01fiOaZnvgL.css,21evmLvoBLL.css,01X8BhwTaiL.css,01kBs8Ea2RL.css,01UibEE8n4L.css,11LAzIH6T3L.css_.css#AUIClients/DetailPageMobileWebMetaAsset">
510
- <link rel="stylesheet" href="http://z-ecx.images-amazon.com/images/G/01/AUIClients/AmazonUI-cd078a69eaec4787e96e6311ed5750485f0a4a78.device_type-mobile.rendering_engine-not-trident.min._V2_.css">
511
- <style type="text/css">
512
- #wow-twister-spinner {
513
- background: url("http://g-ecx.images-amazon.com/images/G/01/amazonui/loading/loading-4x._V1_.gif") 50% 50% no-repeat;
514
- }
515
- #wow-twister-loading-dim {
516
- background: url("http://g-ecx.images-amazon.com/images/G/01/amazonui/loading/loading-4x._V1_.gif") center center no-repeat;
517
- }
518
- </style>
519
- <title>Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages (Pragmatic Programmers)</title>
520
- <meta http-equiv="content-type" content="text/html; charset=UTF-8">
521
- <link rel="canonical" href="http://www.amazon.com/Seven-Languages-Weeks-Programming-Programmers/dp/193435659X">
522
- <script type="text/javascript">
523
- (function(d,c){function f(a){b.push(a)}function e(a){if(a){var c=d.head||d.getElementsByTagName("head")[0]||d.documentElement,b=d.createElement("script");b.async="async";b.src=a;c.insertBefore(b,c.firstChild)}}function g(){ue.uels=e;for(var a=0;a<b.length;a++)e(b[a]);ue.deffered=1}var b=[];c.ue&&(ue.uels=f,c.ue.attach&&c.ue.attach("load",g))})(document,window);
524
-
525
-
526
- if (window.P && P.load && P.load.js && P.when) {
527
- P.when('ready').execute(function() {
528
- P.load.js("http://z-ecx.images-amazon.com/images/G/01/browser-scripts/csm-base/csm-base-min-3276459884._V1_.js", ["csm_cel"]);
529
- });
530
- }
531
- else if (window.ue && window.ue.uels) {
532
- ue.uels("http://z-ecx.images-amazon.com/images/G/01/browser-scripts/csm-base/csm-base-min-3276459884._V1_.js");
533
- }
534
- else if (window.amznJQ) {
535
- amznJQ.addLogical('csm-base', ["http://z-ecx.images-amazon.com/images/G/01/browser-scripts/csm-base/csm-base-min-3276459884._V1_.js"]);
536
- amznJQ.available('csm-base', function() {});
537
- }
538
-
539
-
540
- var ue_tbno = 0,
541
- ue_tble = 0,
542
- ue_sstb = 0,
543
- ue_ssle = 0,
544
- ue_tbpv = 0;
545
-
546
- (function(d,k){function e(d){var c;c="";var b=a.isBFT?"b":"s",e=""+a.oid,f=""+a.lid,g=e;e!=f&&20==f.length&&(b+="a",g+="-"+f);q&&a.tabid&&(c=a.tabid+"+");c+=b+"-"+g;(l||c!=h)&&100>c.length&&(h=c,document.cookie="csm-hit="+c+("|"+ +new Date)+r+"; path=/");m&&a.log&&a.log(""+(d?d.type:"interaction")+" "+c,"csm")}function n(){h=0;m&&a.log&&a.log("blur","csm")}function p(b){!0===k[a.pageViz.propHid]?n():!1===k[a.pageViz.propHid]&&e({type:"visible"})}var r="; expires="+(new Date(+new Date+6048E5)).toGMTString(),
547
- h,q=d.ue_sstb,l=d.ue_tbno,m=d.ue_tble,b=d.ue_tbpv,a=d.ue||{},f=b&&a.pageViz&&a.pageViz.event&&a.pageViz.propHid;a.attach&&(a.attach("click",e),a.attach("keyup",e),l||(f&&4!=b&&5!=b||(a.attach("focus",e),a.attach("blur",n)),f&&a.attach(a.pageViz.event,p),!f||3!=b&&5!=b||p({})));a.aftb=1})(ue_csm,document);
548
-
549
- ue_csm.ue.stub(ue,"impression");
550
-
551
- </script>
552
- </head>
553
- <body id="dp" class="a-fastclick-disable a-aui_49697-c a-aui_51744-c a-aui_attr_validations_1_51371-c a-aui_bolt_46632-c a-aui_bolt_48891-t1 a-aui_ux_47524-c a-aui_ux_49594-c">
554
- <div style="display:none;visibility:hidden;">
555
- <img src="//fls-na.amazon.com/1/batch/1/OP/ATVPDKIKX0DER:184-9743298-0728138:1VGN4TEE63ST5RTPH4EJ%24uedata=s:%2Fgp%2Faw%2Fd%2F193435659X%2Fuedata%2Fnvp%2Funsticky%2F184-9743298-0728138%2FDetailAW%2Fntpoffrw%3Fstaticb%26id%3D1VGN4TEE63ST5RTPH4EJ%26pty%3DDetailAW%26spty%3Dglance%26pti%3D1600479561:1000">
556
-
557
-
558
- </div>
559
- <script type="text/javascript">
560
- (function(a){var b=a.alert;window.alert=function(){a.ueLogError&&a.ueLogError({message:"[CSM] Alert invocation detected with argument: "+arguments[0],logLevel:"WARN"});Function.prototype.apply.apply(b,[a,arguments||[]])}})(window);
561
-
562
- </script>
563
- <script type="text/javascript">
564
- (function(d,r,k){function l(a){if(!b)if(b=e[a.type],"undefined"===typeof a.clientX?(f=a.pageX,g=a.pageY):(f=a.clientX,g=a.clientY),2!=b||h&&(h!=f||m!=g)){for(var d in e)e.hasOwnProperty(d)&&c.detach(d,l,k);c.isl&&r.setTimeout(function(){n("at",c.id)},0)}else h=f,m=g,b=0}function s(){var a="";!p&&b&&(p=1,a+="&ui="+b);return a}var c=d.ue,n=d.uex,p=0,b=0,h,m,f,g,e={click:1,mousemove:2,scroll:3,keydown:4};if(c&&n){for(var q in e)e.hasOwnProperty(q)&&c.attach(q,l,k);c._ui=s}})(ue_csm,window,document);
565
-
566
- </script>
567
- <script type="text/javascript">
568
- (function(m,l){function I(a){if(a)return a.replace(/^\s+|\s+$/g,"")}function x(a,e){if(!a)return{};a.m&&a.m[n]&&(a=a.m);var b=e.m||e[n]||"",b=a.m&&a.m[n]?b+a.m[n]:a.m&&a.m.target&&a.m.target.tagName?b+("Error handler invoked by "+a.m.target.tagName+" tag"):a.m?b+a.m:a[n]?b+a[n]:b+"Unknown error",b={m:b,f:a.f||a.sourceURL||a.fileName||a.filename||a.m&&a.m.target&&a.m.target.src,l:a.l||a.line||a.lineno||a.lineNumber,c:a.c?""+a.c:a.c,s:[],t:m.ue.d(),name:a.name,type:a.type,csm:J+" "+(a.fromOnError?"onerror":
569
- "ueLogError")},c,d,f=0,g=0,k;d=l.location;c=a.stack||(a.err?a.err.stack:"");b[y]=e[y]||d&&d.href||"missing";b[p]=e[p]||z;(d=e[q])&&(b[q]=""+d);if(c&&c.split)for(b.csm+=" stack",d=c.split("\n");f<d.length&&b.s.length<A;)(c=d[f++])&&b.s.push(I(c));else for(b.csm+=" callee",d=B(a.args||arguments,"callee"),g=f=0;d&&f<A;)k=v,d[s]||(c=d.toString())&&c.substr&&(k=0===g?4*v:k,k=1==g?2*v:k,b.s.push(c.substr(0,k)),g++),d=B(d,"caller"),f++;!b.f&&0<b.s.length&&(f=b,c=(f||{}).s||[],d=c[1]||"",c=(c[0]||"").match(K)||
570
- d.match(L))&&(f.f=c[1],f.l=c[2]);return b}function B(a,e){try{return a[e]}catch(b){}}function C(a,e){if(a&&!(h.ec>h.mxe)){h.ec++;h.ter.push(a);e=e||{};var b=a[p]||e[p];e[p]=b;e[q]=a[q]||e[q];b&&b!=z||h.ecf++;w(a,e)}}function w(a,e){if(a){var b=x(a,e),c=e.channel||M;if(ue.log.isStub&&l[t]&&l[t][u]){var d={};d[c]=b;try{var f=l[t][u]({rid:ue.rid,sid:m.ue_sid,mid:m.ue_mid,sn:m.ue_sn,reqs:[d]}),g=l[N],k;if(k=!(g[D]&&g[D](E,f)))if(l[F]){var h=new l[F];h.onerror=r;h.ontimeout=r;h.onprogress=r;h.onload=r;
571
- h.timeout=0;k=h}else if(l[G]){var n=new l[G];k="withCredentials"in n?n:void 0}else k=void 0;if(c=k){c.open("POST",E,!0);if(c[H])c[H]("Content-type","text/plain");c.send(f)}}catch(p){}}else m.ue.log(b,c,{n:1});f=l.console||{};c=f.error||f.log||r;d=l[t];g="Error logged: ";if(d&&d[u])try{g+=d[u](b)}catch(q){g+="no info provided; converting to string failed"}else g+=b.m;c.apply(f,[g,b])}}var G="XMLHttpRequest",F="XDomainRequest",N="navigator",D="sendBeacon",u="stringify",t="JSON",p="logLevel",q="attribution",
572
- y="pageURL",s="skipTrace",H="setRequestHeader",n="message",r=function(){},E="//"+m.ue_furl+"/1/batch/1/OE/",h=m.ue_err,M=m.ue_err_chan||"jserr",z="FATAL",J="v6",A=20,v=256,L=/\(?([^\s]*):(\d+):\d+\)?/,K=/.*@(.*):(\d*)/;x[s]=1;C[s]=1;w[s]=1;(function(){for(var a,e=0;e<(h.erl||[]).length;e++)a=h.erl[e],w(a.ex,a.info);h.erl=[]})();m.ueLogError=C})(ue_csm,window);
573
-
574
- </script>
575
- <div id="a-page">
576
- <script type="a-state" data-a-state='{"key":"a-wlab-states"}'>{"AUI_49697":"C","AUI_51744":"C","AUI_ATTR_VALIDATIONS_1_51371":"C","AUI_BOLT_46632":"C","AUI_BOLT_48891":"T1","AUI_UX_47524":"C","AUI_UX_49594":"C"}</script>
577
- <script type="text/javascript">if(typeof uet === 'function'){(function(t){var w = window;w.awTags = w.awTags || {};w.awTags[t] = w.awTags[t] || (ue.tag(t) && 1)})('smart-device');uet('bb');};</script>
578
-
579
-
580
- <script type="text/javascript">if(typeof uet === 'function'){(function(t){var w = window;w.awTags = w.awTags || {};w.awTags[t] = w.awTags[t] || (ue.tag(t) && 1)})('smart-device');uet('ns');};</script>
581
- <script type="text/javascript">var DeepLinkingUtils={fallbackTimer: false,heartbeatTimer: false,openWebUrlTimer: false,Metrics:{ABORT : 0,CONTINUE: 1},Method:{IFRAME : 0,INTENTS : 1},Fallback:{NOTHING : 0,APPSTORE: 1,WEBURL : 2},DeepLinkInstance: function(options){var required_options=['action','refTag','failAction','failRefTag','clientToken','campaignId','treatmentId','webUrl','appUrl','appStoreUrl'];for(var i=0;i < required_options.length;i++){if(!options[required_options[i]]){throw'Required option not included for DeepLinkingUtils: `'+ required_options[i] +'`';return;}}var HEARTBEAT_TIME=200,OPENAPP_DEFAULT_TIMEOUT=1000,OPENAPP_TIMEOUT_DELAY=500,AJAX_TIMEOUT=800,valueOrDefault=function(value,defaultValue){return(typeof value=="undefined"?defaultValue : value);};options.method=valueOrDefault(options.method,DeepLinkingUtils.Method.IFRAME);options.metricsFailureMode=valueOrDefault(options.metricsFailureMode,DeepLinkingUtils.Metrics.CONTINUE);options.timeout=valueOrDefault(options.timeout,OPENAPP_DEFAULT_TIMEOUT);options.storePref=valueOrDefault(options.storePref,false);options.recordMetricsUrl=valueOrDefault(options.recordMetricsUrl,'/gp/mobile-marketing/utility/metrics.html');options.updatePreferencesUrl=valueOrDefault(options.updatePreferencesUrl,'/gp/mobile-marketing/utility/update-preference.html');options.openWebUrlOnSuccess=valueOrDefault(options.openWebUrlOnSuccess,false);options.fallbackMethod=valueOrDefault(options.fallbackMethod,DeepLinkingUtils.Fallback.APPSTORE);options.autoRedirect=valueOrDefault(options.autoRedirect,false);var recordMetrics=function(action,refTag,storePref,callback){var pref="storePref="+(storePref?1 : 0)+"&clientToken="+ options.clientToken +"&campaignId="+ options.campaignId +"&action="+ action + options.treatmentId +"&ref_="+ refTag +"&url="+ encodeURIComponent(options.webUrl);ajaxRequest(options.recordMetricsUrl,pref,callback);},ajaxRequest=function(action,params,callback){var r=window.XMLHttpRequest?new XMLHttpRequest():(window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"): false);callback=(callback||function(succeeded){});if(!r){callback();return}r.open("POST",action);r.setRequestHeader('Content-Type','application/x-www-form-urlencoded');r.timeout=AJAX_TIMEOUT;var callbackCalled=false;r.onreadystatechange=function(){if(r.readyState==4&&!callbackCalled){callbackCalled=true;callback(r.status==200);}};r.ontimeout=function(){if(!callbackCalled){callbackCalled=true;callback(false);}};r.send(params);},preventFallback=function(){clearTimeout(DeepLinkingUtils.fallbackTimer);},clearTimers=function(){preventFallback();stopHeartbeat();},startHeartbeat=function(){DeepLinkingUtils.heartbeatTimer=setInterval(function(){if(document.webkitHidden||document.hidden){preventFallback();}},HEARTBEAT_TIME);},stopHeartbeat=function(){clearInterval(DeepLinkingUtils.heartbeatTimer);},openAppFail=function(){recordMetrics(options.failAction,options.failRefTag,false,function(succeeded){if(succeeded||options.metricsFailureMode==DeepLinkingUtils.Metrics.CONTINUE){if(options.onFail){options.onFail();}if(options.fallbackMethod==DeepLinkingUtils.Fallback.APPSTORE){openAppStore();}else if(options.fallbackMethod==DeepLinkingUtils.Fallback.WEBURL){openWebUrl();}}});},openAppStore=function(){document.location=options.appStoreUrl;},openWebUrl=function(){document.location=options.webUrl;};this.openApp=function(){clearTimers();var f=function(succeeded){if(options.method==DeepLinkingUtils.Method.INTENTS){document.location=options.appUrl;}else{if(succeeded||options.metricsFailureMode==DeepLinkingUtils.Metrics.CONTINUE){var d=Date.now();var iframe=document.getElementById('deeplinkFrame');if(iframe){iframe.parentNode.removeChild(iframe);}document.body.insertAdjacentHTML('beforeend','<iframe style="display:none"height="0"width="0"id="deeplinkFrame"src="'+ options.appUrl +'"></iframe>');startHeartbeat();DeepLinkingUtils.fallbackTimer=setTimeout(function(){clearTimers();if(!document.webkitHidden&&!document.hidden&&Date.now()- d < options.timeout + OPENAPP_TIMEOUT_DELAY){openAppFail();}},options.timeout);}}if(options.openWebUrlOnSuccess){DeepLinkingUtils.openWebUrlTimer=setTimeout(openWebUrl,options.timeout + OPENAPP_TIMEOUT_DELAY + AJAX_TIMEOUT);}};recordMetrics(options.action,options.refTag,options.storePref,f);};this.openAppStore=function(action,refTag){if(action&&refTag){recordMetrics(action,refTag,false,function(succeeded){if(succeeded||options.metricsFailureMode==DeepLinkingUtils.Metrics.CONTINUE){openAppStore();}});}else{openAppStore();}},this.updatePreferences=function(refTag){var url=options.updatePreferencesUrl +'/ref='+ refTag +'?ie=UTF8'+'campaignId='+ options.campaignId +'&clientToken='+ options.clientToken;var params='url='+ encodeURIComponent(options.webUrl)+'&treatmentId='+ options.treatmentId;ajaxRequest(url,params);};if(options.autoRedirect){setTimeout(this.openApp,1);}}};var SmartAppBanner={deepLink: new DeepLinkingUtils.DeepLinkInstance({webUrl:'http://www.amazon.com/gp/aw/d/193435659X',appStoreUrl:'itms-apps://itunes.apple.com/us/app/id297606951?mt=8',appUrl:'com.amazon.mobile.shopping://amazon.com/products/193435659X?dl_sid=184-9743298-0728138',method: DeepLinkingUtils.Method.IFRAME,action:'OpenApp',refTag:'mm_ip_dp_cab_t3_click_webkit',failAction:'OpenAppstore',failRefTag:'mm_ip_dp_cab_t3_appstore_webkit',campaignId:'SmartAppBanner',clientToken:'SmartAppBanner',treatmentId:'_ip_dp_t3',storePref: true}),close: function(e){if(e){e.preventDefault();e.stopPropagation();SmartAppBanner.deepLink.updatePreferences('mm_ip_dp_cab_t3_close');}document.getElementById('smart-app-banner').className='closed';},openApp: function(userClicked){SmartAppBanner.deepLink.openApp();}};</script> <style>.smart-app-banner-close{height:80px;width:40px;float:left;line-height:32px;padding-top:32px;padding-left:12px;}.smart-app-banner-close img{height:20px;width:20px;}#smart-app-banner{height:80px;padding:0px !important;border-bottom:.1rem solid #d4d4d4;background:#333;overflow:hidden;/gp/mobile-marketing/content/css/common/cssTransition.miattributeheighttiming400ms}#smart-app-banner .a-icon-amazon-app{margin-top:0.75em;margin-right:0.4em;border-radius:0.66667em;}html:not([data-aui-build-date]) #smart-app-banner .a-icon-amazon-app{background-image:url('http://g-ecx.images-amazon.com/images/G/01/mobile-marketing/banner/amzn_icon_96x96._V320993881_.png');background-size:contain;background-position:0;width:55px;height:55px;}#smart-app-banner.closed{height:0;}.smart-app-banner-msg{display:inline-block;position:relative;line-height:1.5em;vertical-align:middle;color:#FFF;background-color:#FBA61C;padding:6px 8px;border-radius:3px;margin-left:8px;margin-top:-3px;padding-left:12px;}.smart-app-banner-content{line-height:80px;text-align:center;white-space:nowrap;overflow:hidden;font-size:16px;}.smart-app-banner-close:before{content:'';display:block;width:20px;height:20px;background:url('data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2220px%22%20height%3D%2220px%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20stroke%3D%22%23FFF%22%3E%3Cline%20x1%3D%223%22%20y1%3D%223%22%20x2%3D%2210%22%20y2%3D%2210%22%2F%3E%3Cline%20x1%3D%2210%22%20y1%3D%223%22%20x2%3D%223%22%20y2%3D%2210%22%2F%3E%3C%2Fsvg%3E');background-size:cover;background-repeat:no-repeat;background-position:center;}</style>
582
- <div class="smart-app-banner" id="smart-app-banner" onclick="SmartAppBanner.openApp(true);">
583
- <div class="smart-app-banner-close" id="smart-app-banner-close" onclick="javascript:SmartAppBanner.close(event);return false;"></div>
584
- <div class="smart-app-banner-content">
585
- <span class="a-icon a-icon-amazon-app"></span><span class="smart-app-banner-msg">View in the Amazon app</span>
586
- </div>
587
- </div>
588
- <style>
589
- .nav-a11y-alt {
590
- text-indent: 500px;
591
- overflow: hidden;
592
- white-space: nowrap;
593
- }
594
- #nav-backtotop {
595
- width: 100%;
596
- display: block;
597
- -webkit-border-radius: 0;
598
- border-radius: 0;
599
- background: #f9f9f9;
600
- background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,white),color-stop(100%,#f3f3f3));
601
- background: -webkit-linear-gradient(top,white,#f3f3f3);
602
- background: -ms-linear-gradient(to bottom,white,#f3f3f3);
603
- background: linear-gradient(to bottom,white,#f3f3f3);
604
- -webkit-box-shadow: 0 .1rem .1rem rgba(0,0,0,0.07),0 -0.1rem 0 white inset;
605
- box-shadow: 0 .1rem .1rem rgba(0,0,0,0.07),0 -0.1rem 0 white inset;
606
- display: block;
607
- text-transform: uppercase;
608
- color: #000;
609
- font-size: 11px;
610
- padding: 0 2.5rem;
611
- border: 0;
612
- border-bottom: .1rem solid rgba(0,0,0,0.2);
613
- font-weight: bold;
614
- white-space: nowrap;
615
- height: 4.2rem;
616
- line-height: 5rem;
617
- margin: 0;
618
- position: absolute;
619
- left: 0;
620
- right: 0;
621
- top: -4rem;
622
- text-align: center;
623
- text-decoration: none;
624
- cursor: pointer;
625
- }
626
- #nav-backtotop #nav-backtotop-arrow {
627
- position: absolute;
628
- top: 0.9rem;
629
- left: 50%;
630
- margin-left: -0.4rem;
631
- }
632
- .nav-float-left {
633
- float: left;
634
- }
635
- </style>
636
- <nav>
637
- <div class="a-container a-global-nav-wrapper nav-anywhere-wrapper">
638
- <div class="a-row">
639
- <div class="a-span6 nav-float-left">
640
- <a class="a-link-nav-icon" href="/ref=mw_hm/184-9743298-0728138">
641
- <i class="nav-a11y-alt a-icon a-logo">Amazon.com</i><i class="a-icon a-domain"></i><i class="a-icon 0 aw-prime"></i>
642
- </a>
643
- </div>
644
- <div class="a-span6 a-text-right a-span-last">
645
-  
646
- <a id="search-icon-link" href="#searchKeyword" class="a-link-nav-icon">
647
- <i id="navbar-icon-search" class="a-icon a-nav-search a-align-middle nav-a11y-alt">
648
- Search
649
- </i>
650
- </a>
651
- <a class="a-link-nav-icon" href="/gp/aw/c/ref=mw_crt/184-9743298-0728138">
652
- <i class="a-icon a-nav-cart a-align-middle" id="navbar-icon-cart">
653
- <div class="nav-a11y-alt">Cart</div>
654
- </i>
655
- </a>
656
- </div>
657
- </div>
658
- </div>
659
- </nav>
660
- <script type="text/javascript">if(typeof uet === 'function'){(function(t){var w = window;w.awTags = w.awTags || {};w.awTags[t] = w.awTags[t] || (ue.tag(t) && 1)})('smart-device');uet('ne');};</script>
661
- <div class="a-container">
662
- <script type="text/javascript">
663
- P.when('atf').execute(function(){
664
- if(typeof uet === 'function'){(function(t){var w = window;w.awTags = w.awTags || {};w.awTags[t] = w.awTags[t] || (ue.tag(t) && 1)})('smart-device');uet('bb', 'udpv3auiwait', {wb: 1});};
665
- P.when('A','jQuery','a-carousel-framework','a-popover-base','a-popover-ajax','a-state').execute(function(){
666
- if(typeof uet === 'function'){(function(t){var w = window;w.awTags = w.awTags || {};w.awTags[t] = w.awTags[t] || (ue.tag(t) && 1)})('smart-device');uet('be', 'udpv3auiwait', {wb: 1});};
667
- if(typeof uex === 'function'){(function(t){var w = window;w.awTags = w.awTags || {};w.awTags[t] = w.awTags[t] || (ue.tag(t) && 1)})('smart-device');uex('ld', 'udpv3auiwait', {wb: 1});};
668
- });
669
- });
670
- if(typeof uet === 'function'){(function(t){var w = window;w.awTags = w.awTags || {};w.awTags[t] = w.awTags[t] || (ue.tag(t) && 1)})('smart-device');uet('bb', 'udpv3atfwait', {wb: 1});};
671
- </script>
672
-
673
-
674
-
675
-
676
-
677
-
678
-
679
-
680
-
681
-
682
-
683
-
684
-
685
-
686
-
687
-
688
-
689
-
690
-
691
-
692
-
693
-
694
-
695
-
696
-
697
-
698
- <script type="text/javascript">var encodedImgSrc="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDADUlKC8oITUvKy88OTU/UIVXUElJUKN1e2GFwarLyL6qurfV8P//1eL/5re6////////////zv//////////////2wBDATk8PFBGUJ1XV53/3Lrc////////////////////////////////////////////////////////////////////wAARCADIAKcDASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAIDBAEF/8QAMhAAAgIBAwIEBQMEAgMAAAAAAAECEQMSITEEQRMiUWEUMnGBkRVToQUjktFS4UJisf/EABcBAQEBAQAAAAAAAAAAAAAAAAABAgP/xAAaEQEBAAIDAAAAAAAAAAAAAAAAAQIREiEx/9oADAMBAAIRAxEAPwD0wABj/qMLhCfo6PPPX6qGvp5r2s8lGa7YXp1RbVpWc4LYSi5V8vO6OvHFyfl+6DW1ALZQteWNEfCn6fyDaKTfBf0ka6hSlsopsplFx5Nn9OjeuT37CJlemvxYeoWWD7kwacHIzjJ7M6AAAAAAAAAAAAAAAGrVGD9Pf7q/xN4Cy2eMH6e/3V/idXQSXGX+DcCaXnWD9Pl+6vwP0+X7q/BvA0c6wfp7/dX+Jq6bD4GPTdu7ui0F0XK30AAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFc8unKscY3Jq93So7DJcW5x0U6dlWeMJzUcuJyjW0kt1+Cnw8icWnkeGM7Se7quQNqnF1Ulvxuc1wq9Sr6maWLTWXFGTlGV7975DxeHli2paNLTcVe97/kDU5xXMl68nU01adoyY8cY9RD+3LSoNJyV9yzo0445JxcfO2k1W1gTxZXklNONaHXPJPVFOtSv0szY5vHLPJ48juVxSi9yqaySxzvE4y1qTSjfdb3/AKA2ucFzJL7nXKMVbkl9WZVFPL1EvDdSSp6XvsVqWnQpKS/tKLuLdMDbHJGauMkzuuNXqVetmXHpjkxzjc4eHp1JXbsjj1RjBPHJVKW7i3X2A2ao6dVqvWyKywd1JbcsxJuCipRlayN049iUUnKMoylKKk3JRXy37AbXOKSbkqfudTtbGN46cXDxIc03G/4NHT6lhipJJ+iAsAAAAAAABVPNpzRh6pt7O/scj1OOSi03pk6Tp1YyY5y6iGSKjUU1u/UrWDIumxY/LcJJvcC3qMjxY9UV3Sbq6XqRx5k7bywlBK212LMim1F42k090+GijL0zzStqOPyteXe/qBY+qxpb6l347EpZ4QbUrVV29SKxOUHGcIRuNNohLp5SxR1NPJGSl7OtgJvqsS5bW9VT2ZOGWM5OKtSW9NUVZMU5RjphCNSUnT9CcYTXUyyNLS4pc7gReTIuoljbik4aouimGSWTFHIpKOSUtMq42/6L+owvK4OLpxe/0fJFdN/dyu/JNbL0fcCWPNijFRTpU2m+/qzmTqE8U3jdTjFyVrlEfh3LD4cowXlrUuTssU3hlHRjUnFxtAd1wk1qclKMbclwtiWGUNT0qWqSu5LkqhgyY3JQUdMo7pu9/UlhwPHl1RWiNU4qTaf+gNAAAAAAAAAAA5qWrTe7V0cjkhLiSITcFk1O/Lu36EH4Udt7SoC/VH/kvyHOKW8kZlDEkm5txbpbe3+iyOHHKNptrgC5NPh2CMIKCpcEgBB5EiT4Mk3u0Be86XY58REz6qdNEJNPiwNfxER8REw2cuwN/wARH1O+PE88kpVyBu8ZDx4mJTXqSUoutwN0JqStEirBWnYtAAAAAAKpygpPVFPivchrxW/7dtck5ympuoppV2IPM068Lf6Ad8TH8rhsv47FmKSlG4qkVvJK68K/swskoxenE19mBeCjx5Krg1b72XgclwzHOXmNj4MeReYBs/qccU+fycqhvd1YVCcGtluVtb+hbKdPe0QlJy5ARjqdEtDXKIxtO1ZotNcgUOJzT7l0olcotcrYDZ03yFxT0/ylwQAAAAAVy8RSlpV3Vb8EJSzLdx59FwXgClyzqN6Vwci87V0ue6LwAq+QABx8Mw5JrW9zc+GY8kE5MDilH1O3HiyCjHuV53CMKjephV0ttox1r68GfI48PHKLIxyzXuSeeXdbAV6nwmzVgkp4/l3W1+pmcovhUyzp56Zaa2l3A00jlP1Jc+44AvwqkWFeGtOxYEAAAAAAAAAAAAAHJfKzzcmWpPg9KXys8zLG5PvfcDqzLvwUTeuTZ2cGrdWkcVaW7kn6MKJCtnX0Oaknv/KJRyJNNK9+EA006HErjyWZXHxnp4e6ohzKqerigNCmtKdtbbnVNPh370Z3qgo7p6tlRyp4paaab7AenglqTrhFpn6P5DQEAAAAAAFeaUo6NN7vfb2ZDxsiim8d/n0v/oC8FLyzvbH3o7LJKORbPRw9gLQVSlNTdNtJXVEfGnt5Hv8AxyBdL5WeXlg1OXb6HqS3izBkWWU28dUuLfIGTRXmt/dHalWp3FSNE45KivKmycI5GpLbbb/YVhaafN/Y7j8SL1Rg5R44LssseKMNDc2pU2//AIQjmlqTunJ71sBLVWVa1Wyt0R1xlklN8cKuX7lsbnFQlJJzXlVcbkdMNcv/ACyJcVSTCIyUHbep41zXZndUXWnZXtfJbog8MYqLqT3fuZp3Gk+UwPU6dVe92XlHS/J9S8AAAAAAjNyVaUn6kVLJtcF+SwAQUsmneG/1Oa5/t/yWACtSyb3Bfk7qyf8ABP7kwBGV+G75o8jO5xk021Fs9iXys8rqJ7tNWvcCpTyalJb0qVljy6YS81zlvxwyEMGpK5xRb8Dttk3+gGTfUu51c36GrHhnhe8VKT9N7E44czad4p/lMCfT5YrOk0vlpnc+ZYsnlScZ7/U5hxrE0tKk2uebO5OnedPVJxl2bQHFOUYRcreriuImXLsvdNplko5ceN45ra9pLcqpzk093J8gep0bvGmaTP0irGkuEaAAAAAAAAAAAAAADjVpox5Oj1yTb4ZtAGT4Q7Hp5R+WTS9DUAM88Dk006aI5emeSSfsagBkj0soO4y0lnhSfcvAGZ9O2Q+C82pOmbABXihoVFgAAAAAAAAAAAAAABGUdXdr6HPD/wDaX5AAeGvV/kLElxKX5AA7GOl8t/UkAAAAAAAAAAAAH//Z";</script><!-- MarkCF -->
699
- <script type="text/javascript">
700
- if(typeof uet === 'function'){uet('be', 'udpv3atfwait', {wb: 1});};
701
- if(typeof uex === 'function'){uex('ld', 'udpv3atfwait', {wb: 1});};
702
- </script>
703
- <div id="ppd" class="a-row">
704
- <div id="detailILM_feature_div" data-feature-name="detailILM" data-template-name="detailILM" class="a-section a-spacing-none">
705
- </div>
706
- <div id="instantOrderUpdate_feature_div" data-feature-name="instantOrderUpdate" data-template-name="instantOrderUpdate" class="a-section a-spacing-none">
707
- </div>
708
- <div id="dealOffer_feature_div" data-feature-name="dealOffer" data-template-name="dealOffer" class="a-section a-spacing-none">
709
- <style>
710
- .gb_box_info {border-color:#bbd3de;}
711
- .gb_box_error {border-color:#c40000;}
712
- .gb_box_warn {border-color:#8b6e00;}
713
- .gb_box_success {border-color:#89cd89;}
714
- </style>
715
- </div>
716
- <div id="andonCord_feature_div" data-feature-name="andonCord" data-template-name="andonCord" class="a-section a-spacing-none">
717
- </div>
718
- <div id="productTitleGroupAnchor"></div>
719
- <div id="machineTranslation_feature_div" data-feature-name="machineTranslation" data-template-name="machineTranslation" class="a-section a-spacing-mini feature">
720
- <style type="text/css">
721
- #machine-translation-widget .a-size-base{
722
- font-size: 1.4rem!important;
723
- }
724
- #machine-translation-widget .mt-link {
725
- margin-left: 4px;
726
- margin-right: 3px;
727
- }
728
- </style>
729
- </div>
730
- <div class="a-row a-spacing-none">
731
- <div class="a-column a-span12 a-text-ellipsis">
732
- <div id="brandByline_feature_div">
733
- </div>
734
- <div id="byline_feature_div">
735
- <div id="byline" class="a-row a-spacing-none a-size-base feature a-text-ellipsis">
736
- <a id="bylineContributor" class="a-size-base a-link-normal" href="/gp/aw/s/?ie=UTF8&amp;k=Bruce+A.+Tate&amp;i=books">Bruce A. Tate</a>
737
- </div>
738
- </div>
739
- </div>
740
- </div>
741
- <div id="title_feature_div" class="a-section a-spacing-small">
742
- <div data-feature-name="title" data-template-name="title" class="a-section a-spacing-small">
743
- <div class="a-row">
744
- <div class="a-column a-span12">
745
- <h1 id="title" class="a-size-medium">Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages (Pragmatic Programmers)
746
- <span class="a-size-medium a-color-secondary a-text-normal"></span>
747
- </h1>
748
- </div>
749
- </div>
750
- </div>
751
- </div>
752
- <div class="a-row">
753
- <div id="averageCustomerReviews_feature_div" data-feature-name="averageCustomerReviews" data-template-name="averageCustomerReviews" class="a-column a-span12 a-text-left feature">
754
- <a id="acrCustomerReviewLink" class="a-link-normal" href="/gp/aw/cr/193435659X/ref=mw_dp_cr">
755
- <i class="a-icon a-icon-star-medium a-star-medium-4-5"><span class="a-icon-alt">4.4 out of 5 stars</span></i>
756
- <span class="a-size-base">(47)</span>
757
- <span id="textReviews" style="position: absolute; left: -10000px; top: auto; width: 2px; height: 1px; overflow: hidden;">Reviews</span>
758
- </a>
759
- </div>
760
- </div>
761
- <div id="adoptedData_feature_div" data-feature-name="adoptedData" data-template-name="adoptedData" class="a-section a-spacing-none">
762
- <style>
763
- #adoptedDataContainer .campusLogo {
764
- height: 20px;
765
- width: 20px;
766
- margin-right: 0.5em;
767
- }
768
- #adoptedDataContainer .campusName {
769
- line-height: 20px;
770
- }
771
- #adoptedDataContainer .nonDecorated {
772
- text-decoration:none;
773
- color:black;
774
- }
775
- #adoptedDataContainer > div {
776
- padding-left:0.4em !important;
777
- }
778
- #adoptedDataContainer .secondaryViewTrigger {
779
- width:100%;
780
- padding-right:1em;
781
- padding-left:3px;
782
- }
783
- #adoptedDataContainer .chevron {
784
- position:absolute;
785
- right:0.5em;
786
- top:50%;
787
- margin-top:-.5em;
788
- }
789
- </style>
790
- </div>
791
- <div id="imageBlock_feature_div" data-feature-name="imageBlock" data-template-name="imageBlock" class="a-section a-spacing-none">
792
- <style>
793
- .sitb-sticker-container {
794
- text-align: right;
795
- margin: 0 auto;
796
- width:154px;
797
- }
798
- .sitb-sticker {
799
- height: 16px;
800
- margin-bottom: 5px;
801
- }
802
- </style>
803
- <script>
804
- P.when('A', 'jQuery', 'ready').execute(function(A, jQuery) {
805
- var sitbData = jQuery('#sitb-data');
806
- var showSITBSticker = sitbData.data('show-sticker');
807
- var sitbURL = sitbData.data('url');
808
- function startCSMMetrics(metricName) {
809
- P.when('postMetric').execute(function(postMetricClass) {
810
- postMetricClass.postCountMetric(metricName);
811
- });
812
- }
813
- function openImmersiveView() {
814
- startCSMMetrics("dpmob_immersiveViewOpened");
815
- if (jQuery('#image-block-invisible-immersive-view-button').length > 0) {
816
- //Iphone shows weird behavior when tapping image before everything is ready
817
- //Starting declarative action inside declarative action may have caused this issue
818
- //Using setTimeout fixes this issue
819
- setTimeout(function() {jQuery('#image-block-invisible-immersive-view-button').click();}, 0);
820
- }
821
- }
822
- function openSITB() {
823
- window.location = sitbURL;
824
- }
825
- A.declarative("open-immersive-view", ["click"], openImmersiveView);
826
- A.declarative("tap-first-image", ["click"], (showSITBSticker && sitbURL) ? openSITB : openImmersiveView);
827
- if (sitbURL) {
828
- A.declarative("open-sitb", ["click"], openSITB);
829
- }
830
- });
831
- </script>
832
- <div class="a-row a-spacing-medium">
833
- <div class="a-column a-span12 a-text-center">
834
- <style type="text/css">
835
- #image-block a:focus {
836
- outline: 0 none;
837
- }
838
- #image-block li.a-carousel-card{
839
- height:100%;
840
- width:100%;
841
- }
842
- #image-block form.a-carousel-state{
843
- display:none;
844
- }
845
- #image-block div.a-image-wrapper, div.video-table {
846
- display:table;
847
- width: 100%;
848
- height: 100%;
849
- padding:0 10px;
850
- -webkit-backface-visibility:hidden;
851
- }
852
- #image-block div.image-wrapper, div.video-table-cell {
853
- display: table-cell;
854
- vertical-align: middle;
855
- }
856
- #image-block div.a-image-wrapper img {
857
- max-height:200px;
858
- }
859
- #loadingImages{
860
- text-align: center!important;
861
- display: block;
862
- line-height: 0.6 !important;
863
- }
864
- #image-block-pagination-dots{
865
- display: none;
866
- }
867
- #image-block ol.a-carousel{
868
- width: 100%;
869
- }
870
- .image-size-wrapper #main-image {
871
- left: 0px;
872
- }
873
- #image-block-360 .a-button-focus {
874
- border-color: #adb1b8 #a2a6ac #8d9096;
875
- box-shadow: none;
876
- -webkit-box-shadow: none;
877
- }
878
- </style>
879
- <a class="a-link-normal" href="#">
880
- <style>
881
- .image-size-wrapper {
882
- height:200px;
883
- line-height:200px;
884
- }
885
- .image-size-wrapper img{
886
- vertical-align:middle;
887
- }
888
- </style>
889
- <div id="image-block" data-a-carousel-options='{"show_partial_next":false,"name":"image-block-carousel","carouselClass":"mobile","minimum_gutter_width":0}' data-a-display-strategy="single" data-a-ajax-strategy="none" data-a-class="mobile" class="a-carousel-container a-carousel-static a-carousel-display-single a-carousel-transition-slide">
890
- <form class="a-carousel-state" action="#" method="get"><input autocomplete="on" type="hidden" name="firstVisibleItem" class="a-carousel-firstvisibleitem"></form>
891
- <div class="a-carousel-viewport"><ol class="a-carousel" aria-live="assertive" role="list">
892
- <li class="a-carousel-card" role="listitem" aria-setsize="2" aria-posinset="1">
893
- <div class="a-image-wrapper hide-image" data-declarativeactionname="immersive-view" data-imageblockcounter="imageBlockShownC" data-immersiveviewcounter="immersiveViewOpenedC">
894
- <div class="image-wrapper">
895
- <span class="a-declarative" data-action="tap-first-image" data-tap-first-image="{}">
896
- <div class="sitb-sticker-container"></div>
897
- <div class="image-size-wrapper fp-image-wrapper" id="landing-image-wrapper" data-image-height="184" data-image-width="154" data-max-height="200" data-min-height="0" data-num-of-images="2" data-animate-image="0">
898
- <img alt="" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onload="" class="a-dynamic-image" id="main-image" data-a-dynamic-image='{"http://ecx.images-amazon.com/images/I/51opYcR6kVL._SY400_.jpg":[200,166]}'>
899
- </div>
900
- </span>
901
- </div>
902
- </div>
903
- </li>
904
- <li class="a-carousel-card" role="listitem" aria-setsize="2" aria-posinset="2">
905
- <div class="a-image-wrapper " data-declarativeactionname="immersive-view" data-imageblockcounter="imageBlockShownC" data-immersiveviewcounter="immersiveViewOpenedC">
906
- <div class="image-wrapper">
907
- <span class="a-declarative" data-action="open-immersive-view" data-open-immersive-view="{}">
908
- <div class="image-size-wrapper fp-image-wrapper" data-image-width="154" data-image-height="189">
909
- <div alt="" class="a-image-wrapper a-lazy-loaded a-manually-loaded carousel-img-manual-load" data-a-image-source="http://ecx.images-amazon.com/images/I/51doNUaU7zL._SY200_.jpg" data-a-hires="http://ecx.images-amazon.com/images/I/51doNUaU7zL._SY400_.jpg"></div>
910
- </div>
911
- </span>
912
- </div>
913
- </div>
914
- </li>
915
- </ol></div>
916
- </div>
917
- <script>
918
- // low res image is shown on the page by this time.
919
- if (typeof uet === 'function') {
920
- uet("tc", "dpmob_imageBlockResponsiveTime0" );
921
- }
922
- </script>
923
- </a>
924
- </div>
925
- </div>
926
- <div id="image-block-pagination" class="a-row">
927
- <div class="a-column a-span12 a-spacing-small">
928
- <span id="loadingImages" class="a-size-small a-color-secondary">
929
- Loading Images...
930
- </span>
931
- <div id="image-block-pagination-dots" class="a-pagination a-text-center"><ul class="a-pagination a-dots">
932
- <li class="a-selected">
933
- <li>
934
- </ul></div>
935
- </div>
936
- </div>
937
- <div class="a-popover-preload" id="a-popover-immersive-view">
938
- <div class="a-row main_carousel">
939
- <div class="a-column a-span12 a-text-center a-spacing-small">
940
- <style type="text/css">
941
- #immersive-main li.a-carousel-card{
942
- width:100%;
943
- }
944
- #immersive-main form.a-carousel-state{
945
- display:none;
946
- }
947
- #immersive-main div.image-wrapper {
948
- display:table;
949
- width: 100%;
950
- height: 100%;
951
- padding:0 10px;
952
- -webkit-backface-visibility:hidden;
953
- }
954
- #immersive-main div.a-image-wrapper{
955
- display:table-cell;
956
- vertical-align:middle;
957
- }
958
- #immersive-main ol.a-carousel{
959
- width: 100%;
960
- }
961
- #immersive-mini li.a-carousel-card{
962
- width : 46px!important;
963
- border : 2px solid white;
964
- margin-left:0px !important;
965
- }
966
- #immersive-mini li.a-carousel-card.selected{
967
- border : 2px solid orange;
968
- }
969
- #immersive-mini{
970
- text-align: left !important;
971
- margin-left:0px!important;
972
- }
973
- #immersive-mini form.a-carousel-state{
974
- display:none;
975
- }
976
- #immersive-mini div.image-wrapper {
977
- display:table;
978
- width: 100%;
979
- height: 100%;
980
- padding: 0px 0px;
981
- -webkit-backface-visibility:hidden;
982
- }
983
- #immersive-mini div.a-image-wrapper{
984
- width : 46px;
985
- height: 46px;
986
- display:table-cell;
987
- vertical-align:middle;
988
- }
989
- #immersive-mini.a-carousel-container,
990
- #immersive-mini .a-carousel-viewport{
991
- min-height: 50px;
992
- }
993
- #immersive-mini ol.a-carousel{
994
- width: 100%;
995
- }
996
- #zoom-changeover .a-changeover-inner{
997
- left: 57% !important;
998
- }
999
- .mini_carousel{
1000
- height: 46px;
1001
- }
1002
- .a-carousel-display-single .a-carousel-viewport {
1003
- height: 100% !important;
1004
- }
1005
- #immersive-image-back {
1006
- z-index: 1000;
1007
- position: absolute;
1008
- left: 13px;
1009
- margin-top: 13px;
1010
- width: auto;
1011
- border: 1px solid rgba(0,0,0,0.17);
1012
- background: rgba(255,255,255,0.5);
1013
- }
1014
- #immersive-image-back span.a-button-inner{
1015
- background: none;
1016
- }
1017
- #immersive-image-back-text{
1018
- color:rgb(75, 75, 75);
1019
- }
1020
- .immersive-view-gallery .a-secondary-view-inner{
1021
- padding: 0px 2px 0px 2px;
1022
- }
1023
- .main_carousel>.a-spacing-small, .main_carousel>.a-spacing-small{
1024
- margin-bottom : 0px!important;
1025
- }
1026
- </style>
1027
- <span class="a-declarative" data-action="a-popover-close" data-a-popover-close="{}">
1028
- <span id="immersive-image-back" class="a-button"><span class="a-button-inner"><input class="a-button-input" type="submit" aria-labelledby="immersive-image-back-announce"><span id="immersive-image-back-announce" class="a-button-text" aria-hidden="true">
1029
- <span id="immersive-image-back-text" class="a-text-bold">
1030
- Back
1031
- </span>
1032
- </span></span></span>
1033
- </span>
1034
- <div id="immersive-main" data-a-carousel-options='{"show_partial_next":false,"name":"image-block-immersive-main-carousel","carouselClass":"mobile","minimum_gutter_width":0}' data-a-display-strategy="single" data-a-ajax-strategy="none" data-a-class="mobile" class="a-carousel-container a-carousel-static a-carousel-display-single a-carousel-transition-slide">
1035
- <form class="a-carousel-state" action="#" method="get"><input autocomplete="on" type="hidden" name="firstVisibleItem" class="a-carousel-firstvisibleitem"></form>
1036
- <div class="a-carousel-viewport"><ol class="a-carousel" aria-live="assertive" role="list">
1037
- <li class="a-carousel-card" role="listitem" aria-setsize="2" aria-posinset="1">
1038
- <div class="image-wrapper">
1039
- <div data-action="a-immersive-image" class="a-declarative a-immersive-image a-image-wrapper"><div class="a-immersive-image-wrapper">
1040
- <div alt="" class="a-image-wrapper a-lazy-loaded a-manually-loaded immersive-carousel-img-manual-load" data-a-image-source="http://ecx.images-amazon.com/images/I/51opYcR6kVL._SY400_.jpg" data-a-hires="http://ecx.images-amazon.com/images/I/51opYcR6kVL._SL1500_.jpg"></div>
1041
- </div></div>
1042
- </div>
1043
- </li>
1044
- <li class="a-carousel-card" role="listitem" aria-setsize="2" aria-posinset="2">
1045
- <div class="image-wrapper">
1046
- <div data-action="a-immersive-image" class="a-declarative a-immersive-image a-image-wrapper"><div class="a-immersive-image-wrapper">
1047
- <div alt="" class="a-image-wrapper a-lazy-loaded a-manually-loaded immersive-carousel-img-manual-load" data-a-image-source="http://ecx.images-amazon.com/images/I/51doNUaU7zL._SY400_.jpg" data-a-hires="http://ecx.images-amazon.com/images/I/8129aV9t7vL._SL1500_.jpg"></div>
1048
- </div></div>
1049
- </div>
1050
- </li>
1051
- </ol></div>
1052
- </div>
1053
- </div>
1054
- </div>
1055
- <div class="a-row mini_carousel">
1056
- <div class="a-column a-span12 a-text-center a-spacing-small">
1057
- <div id="immersive-mini" data-a-carousel-options='{"show_partial_next":false,"name":"image-block-immersive-mini-carousel","carouselClass":"mobile","minimum_gutter_width":0}' data-a-class="mobile" class="a-carousel-container a-carousel-static a-carousel-display-stretchyGoodness a-carousel-transition-slide a-carousel-static" style="height:46px;">
1058
- <form class="a-carousel-state" action="#" method="get"><input autocomplete="on" type="hidden" name="firstVisibleItem" class="a-carousel-firstvisibleitem"></form>
1059
- <div class="a-carousel-viewport"><ol class="a-carousel" aria-live="assertive" role="list">
1060
- <li class="a-carousel-card" role="listitem" aria-setsize="2" aria-posinset="1">
1061
- <div class="image-wrapper">
1062
- <div class="a-image-wrapper">
1063
- <div alt="" class="a-image-wrapper a-lazy-loaded a-manually-loaded immersive-carousel-img-manual-load" data-a-image-source="http://ecx.images-amazon.com/images/I/51opYcR6kVL._SS63_.jpg" data-a-hires="http://ecx.images-amazon.com/images/I/51opYcR6kVL._SS126_.jpg"></div>
1064
- </div>
1065
- </div>
1066
- </li>
1067
- <li class="a-carousel-card" role="listitem" aria-setsize="2" aria-posinset="2">
1068
- <div class="image-wrapper">
1069
- <div class="a-image-wrapper">
1070
- <div alt="" class="a-image-wrapper a-lazy-loaded a-manually-loaded immersive-carousel-img-manual-load" data-a-image-source="http://ecx.images-amazon.com/images/I/51doNUaU7zL._SS63_.jpg" data-a-hires="http://ecx.images-amazon.com/images/I/51doNUaU7zL._SS126_.jpg"></div>
1071
- </div>
1072
- </div>
1073
- </li>
1074
- </ol></div>
1075
- </div>
1076
- </div>
1077
- </div>
1078
- <div id="zoom-changeover" class="a-changeover"><div class="a-changeover-inner">
1079
- <i class="a-icon a-icon-checkmark-inverse"></i><strong class="a-size-medium">Double-tap to zoom</strong>
1080
- </div></div>
1081
- <script type="text/javascript">
1082
- P.when('A','atf').execute(function(A){
1083
- A.trigger('image-block-immersive-view-refresh');
1084
- });
1085
- </script>
1086
- </div>
1087
- <span class="a-declarative" data-action="a-secondary-view" data-a-secondary-view='{"backButtonText":"Back","name":"immersive-view","scrollable":true,"hideHeader":true}' data-a-immersive-view="true">
1088
- <!-- This div will be replaced on anywhere udp3. If you need to edit this line, please update anywhere accordingly.-->
1089
- <div id="sitb-more-images-button-container"></div>
1090
- <!-- invisible button to be used by javascript -->
1091
- <div style="display:none">
1092
- <span id="image-block-invisible-immersive-view-button" class="a-button"><span class="a-button-inner"><input class="a-button-input" type="submit" aria-labelledby="image-block-invisible-immersive-view-button-announce"><span id="image-block-invisible-immersive-view-button-announce" class="a-button-text" aria-hidden="true"></span></span></span>
1093
- </div>
1094
- </span>
1095
- <!-- This div will be replaced on anywhere udp3. If you need to edit this line, please update anywhere accordingly.-->
1096
- <div id="sitb-look-inside-button-container"></div>
1097
- </div>
1098
- <div id="MediaMatrix_feature_div" data-feature-name="MediaMatrix" data-template-name="MediaMatrix" class="a-section a-spacing-none">
1099
- <!-- MediaMatrix Mobile should be suppressed when mediaMatrixItems collection is empty or has just a single item -->
1100
- <div class="a-row a-spacing-medium">
1101
- <span class="a-declarative" data-action="a-secondary-view" data-a-secondary-view='{"backButtonText":"Back","name":"mediaMatrix_secondary_view_div","alternateBackground":"true"}'>
1102
- <span id="mediaMatrixButton" class="a-button a-button-supplemental a-button-span12 a-button-toggle"><span class="a-button-inner"><i class="a-icon a-icon-supplemental"></i><input class="a-button-input" type="submit" aria-labelledby="mediaMatrixButton-announce"><span id="mediaMatrixButton-announce" class="a-button-text" aria-hidden="true">
1103
- Format
1104
- <strong class="dimension-label a-padding-mini">Paperback</strong>
1105
- </span></span></span>
1106
- <script type="text/javascript">
1107
- P.when('jQuery').execute(function($) {
1108
- $('a.mediaMatrixListItem').click(function() {
1109
- //Update selected state
1110
- $('a.mediaMatrixListItem').removeClass('a-active');
1111
- $(this).addClass('a-active');
1112
- });
1113
- });
1114
- </script>
1115
- </span>
1116
- </div>
1117
- <div class="a-popover-preload" id="a-popover-mediaMatrix_secondary_view_div">
1118
- <h2 class="a-spacing-base">
1119
- Select Format
1120
- </h2>
1121
- <div class="a-box a-vertical"><div class="a-box-inner a-padding-none"><ul class="a-nostyle a-box-list a-last">
1122
- <li class="a-align-center"><span class="a-list-item">
1123
- <!-- Override bucket winner in secondary-view with landingItem if they have same metabinding -->
1124
- <a href="/gp/aw/d/B00AYQNR46/ref=tmm_kin_title_0?ie=UTF8&amp;sr=&amp;qid=" class="a-touch-link a-box a-touch-link-noborder a-touch-select mediaMatrixListItem"><div class="a-box-inner">
1125
- <i class="a-icon a-icon-touch-select"></i>
1126
- <span class="a-text-bold">Kindle</span>
1127
- <span class="a-color-tertiary">–</span>
1128
- <span class="a-color-price">$26.07</span>
1129
- </div></a>
1130
- </span></li>
1131
- <li class="a-align-center"><span class="a-list-item">
1132
- <!-- Override bucket winner in secondary-view with landingItem if they have same metabinding -->
1133
- <a href="/gp/aw/d/193435659X/ref=tmm_pap_title_sr?ie=UTF8&amp;sr=&amp;qid=" class="a-touch-link a-box a-touch-link-noborder a-touch-select a-active mediaMatrixListItem"><div class="a-box-inner">
1134
- <i class="a-icon a-icon-touch-select"></i>
1135
- <span class="a-text-bold">Paperback</span>
1136
- <span class="a-color-tertiary">–</span>
1137
- <span class="a-color-price">$25.34</span>
1138
- </div></a>
1139
- </span></li>
1140
- </ul></div></div>
1141
- </div>
1142
- </div>
1143
- <div id="price_feature_div" data-feature-name="price" data-template-name="price" class="a-section a-spacing-none">
1144
- <style type="text/css">
1145
- table#price .a-nowrap {
1146
- display: table-cell !important;
1147
- }
1148
- </style>
1149
- <!-- for the new CCX DPv2 mobile pages (a.k.a. burj pages) the coupon feature
1150
- is not included in the price block
1151
- -->
1152
- <div class="a-row a-spacing-medium">
1153
- <div class="a-column a-span12">
1154
- <table id="price" class="a-normal a-align-top">
1155
- <tr>
1156
- <td class="a-span1 a-color-secondary a-text-right a-nowrap">List Price:</td>
1157
- <td class="a-color-secondary"><span class="a-text-strike"> $34.95</span></td>
1158
- </tr>
1159
- <tr>
1160
- <td class="a-span1 a-color-secondary a-size-medium a-text-right a-nowrap">
1161
- <span class="a-size-base">Price:</span>
1162
- </td>
1163
- <td>
1164
- <span id="priceblock_ourprice" class="a-size-medium a-color-price">$25.34
1165
- </span>
1166
- <span id="ourPrice_availability">
1167
- </span>
1168
- </td>
1169
- </tr>
1170
- <tr>
1171
- <td class="a-span1 a-text-right a-nowrap"></td>
1172
- <td><span id="ourprice_shippingmessage"><!-- MsgId:cfs_free_shipping_eligible_mobile:mobile -->
1173
- <a href="/gp/aw/help/id=sss/ref=aw_d_sss_books">FREE Shipping</a> on orders over $35.</span></td>
1174
- </tr>
1175
- <tr id="regularprice_savings">
1176
- <td class="a-color-secondary a-text-right a-nowrap">Save:</td>
1177
- <td class="a-color-price">$9.61
1178
- (27%)
1179
- </td>
1180
- </tr>
1181
- </table>
1182
- </div>
1183
- </div>
1184
- </div>
1185
- <div id="primenote_feature_div" data-feature-name="primenote" data-template-name="primenote" class="a-section a-spacing-none">
1186
- </div>
1187
- <div id="newerVersion_feature_div" data-feature-name="newerVersion" data-template-name="newerVersion" class="a-section a-spacing-none">
1188
- </div>
1189
- <div id="availability_feature_div" data-feature-name="availability" data-template-name="availability" class="a-section a-spacing-none">
1190
- <style type="text/css">
1191
- /* This is done because text-rendering:optimizeLegibility is not supported in android 2.0 */
1192
- #availability .a-color-state{
1193
- text-rendering:auto ! important;
1194
- }
1195
- </style>
1196
- <div class="a-section a-spacing-small">
1197
- <div id="availability" class="a-section a-spacing-none">
1198
- <span class="a-size-medium a-color-success">
1199
- In Stock.
1200
- </span>
1201
- <div class="a-section a-spacing-none">
1202
- </div>
1203
- </div>
1204
- <div id="merchant-info" class="a-section a-spacing-none">
1205
- Ships from and sold by Amazon.com.
1206
- Gift-wrap available.
1207
- </div>
1208
- </div>
1209
- </div>
1210
- <div id="smileEligibility_feature_div" data-feature-name="smileEligibility" data-template-name="smileEligibility" class="a-section a-spacing-none">
1211
- </div>
1212
- <div id="holidayAvailabilityMessage_feature_div" data-feature-name="holidayAvailabilityMessage" data-template-name="holidayAvailabilityMessage" class="a-section a-spacing-none">
1213
- </div>
1214
- <div id="dpFastTrack_feature_div" data-feature-name="dpFastTrack" data-template-name="dpFastTrack" class="a-section a-spacing-none">
1215
- </div>
1216
- <div id="campusInfo_feature_div" data-feature-name="campusInfo" data-template-name="campusInfo" class="a-section a-spacing-none">
1217
- <style>
1218
- #campusInfoContainer .campusLogo {
1219
- height: 20px;
1220
- width: 20px;
1221
- margin-right: 0.5em;
1222
- }
1223
- #campusInfoContainer .campusName {
1224
- line-height: 20px;
1225
- }
1226
- #campusInfoContainer .nonDecorated {
1227
- text-decoration:none;
1228
- color:black;
1229
- }
1230
- #campusInfoContainer > div {
1231
- padding-left:0.4em !important;
1232
- }
1233
- #campusInfoContainer .secondaryViewTrigger {
1234
- width:100%;
1235
- padding-right:1em;
1236
- padding-left:3px;
1237
- }
1238
- #campusInfoContainer .chevron {
1239
- position:absolute;
1240
- right:0.5em;
1241
- top:50%;
1242
- margin-top:-.5em;
1243
- }
1244
- </style>
1245
- </div>
1246
- <div id="buyBoxAccordion_feature_div" data-feature-name="buyBoxAccordion" data-template-name="buyBoxAccordion" class="a-section a-spacing-none">
1247
- <!-- Delete this file when deals integration with accordion/mobile is complete -->
1248
- <!--
1249
- Variable showAccordion is true if at least two buyboxes are to be shown
1250
- When dealOffer is shown, new offer is also shown - so showAccordion is true
1251
- -->
1252
- <div id="buybox" class="a-section a-spacing-small a-spacing-top-medium nocopypaste">
1253
- <div class="a-button-stack">
1254
- <form id="addToCart" method="post" action="/gp/aw/c/ref=mw_dp_buy_crt">
1255
- <input type="hidden" name="a" value="193435659X" id="a">
1256
- <input type="hidden" name="o" value="add" id="o">
1257
- <input type="hidden" name="oid" value="iEUjPzLZKtjTvUJq4xVtxy1jwkWSppt2yVOtgU2nR2PbF8Lio7Z%2FVkm4E0KrTh9n1dOrstah%2BEVDOkNeqvRcIEaUGHIe84ZvvNtIC3OvLeAR%2BfCkeAg9Iw%3D%3D" id="oid">
1258
- <input type="hidden" name="verificationSessionID" value="184-9743298-0728138" id="verificationSessionID">
1259
- <input type="hidden" name="colid" id="colid">
1260
- <input type="hidden" name="coliid" id="coliid">
1261
- <input type="hidden" name="quantity" value="1" id="quantity">
1262
- <div id="buybox.addToCart" class="a-section a-spacing-small">
1263
- <span class="a-button a-button-primary a-button-icon"><span class="a-button-inner"><i class="a-icon a-icon-cart"></i><input id="add-to-cart-button" name="submit.add-to-cart" title="Add to Shopping Cart" class="a-button-input" type="submit"><span class="a-button-text a-text-left" aria-hidden="true">
1264
- Add to Cart
1265
- </span></span></span>
1266
- </div>
1267
- </form>
1268
- <form id="addToWishlist" method="post" action="https://www.amazon.com/ap/signin?openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&amp;openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&amp;openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&amp;openid.mode=checkid_setup&amp;openid.assoc_handle=usflex&amp;openid.return_to=https%3A%2F%2Fwww.amazon.com%2Fgp%2Faw%2Fd%2F193435659X&amp;">
1269
- <div id="wishlistButtonStack" class="a-button-stack">
1270
- <span class="a-button a-button-supplemental a-spacing-none"><span class="a-button-inner"><i class="a-icon a-icon-supplemental"></i><input id="add-to-wishlist-button-submit" name="submit.add-to-registry.wishlist" title="Add to Wish List" class="a-button-input" type="submit"><span class="a-button-text a-text-left" aria-hidden="true">
1271
- Add to Wish List
1272
- </span></span></span>
1273
- </div>
1274
- </form>
1275
- <div class="a-box a-alert-inline a-alert-inline-error a-hidden a-spacing-top-small"><div class="a-box-inner a-alert-container">
1276
- <i class="a-icon a-icon-alert"></i><div class="a-alert-content">
1277
- <div id="atwl-error-message" class="a-section a-spacing-none">
1278
- We are sorry. Amazon has encountered an error. Please try again.
1279
- </div>
1280
- </div>
1281
- </div></div>
1282
- <script type="text/javascript">
1283
- P.when('A').execute(function (A) {
1284
- var $ = A.$;
1285
- function setAtwlState(options) {
1286
- A.state('atwl', $.extend(A.state('atwl') || {}, options));
1287
- }
1288
- var atwlState = A.state('atwl') || {};
1289
- if(!atwlState || !atwlState.atwlPopoverWired) {
1290
- setAtwlState({ atwlPopoverWired : true, });
1291
- } else {
1292
- return;
1293
- }
1294
- P.when('A', 'a-secondary-view', 'cf').register('atwl', function(A, aSecondaryView) {
1295
- var onMash = false;
1296
- A.on('atwl:mashPresent', function () {
1297
- onMash = true;
1298
- });
1299
- function showSuccess() {
1300
- var atwlState = A.state('atwl') || {};
1301
- if (atwlState && atwlState.isResponseSuccess && atwlState.registryId && atwlState.registryType) {
1302
- $('#atwl-error-message').closest('.a-alert-inline-error').addClass('a-hidden').hide();
1303
- $('#atwl-changeover').show();
1304
- $('#atwl-listtype').val(atwlState.registryType);
1305
- $('#atwl-privacy').css({ 'padding-left': '5px' }).text(atwlState.registryPrivacy);
1306
- var href = $('#wishlistButtonViewStack').attr('href');
1307
- if (href.match(/lid=/) === null && href.match(/ty=/) === null) {
1308
- href = href + '&lid='+atwlState.registryId+'&ty='+atwlState.registryType;
1309
- $('#wishlistButtonViewStack').attr('href', href);
1310
- }
1311
- $('#wishlistButtonStack').addClass('a-hidden');
1312
- $('#wishlistButtonViewStack').removeClass('a-hidden');
1313
- }
1314
- }
1315
- function showError(response) {
1316
- if (response && response.message && response.message.length > 0) {
1317
- $('#atwl-error-message').text(response.message);
1318
- }
1319
- if (!onMash && aSecondaryView && aSecondaryView.get('atwl_secondary_view')) {
1320
- aSecondaryView.get('atwl_secondary_view').hide();
1321
- } else {
1322
- A.trigger('atwl:mash:goback');
1323
- }
1324
- $('#atwl-error-message').closest('.a-alert-inline-error').removeClass('a-hidden').show();
1325
- }
1326
- A.on('a:popover:afterHide:atwl_secondary_view', function(event) {
1327
- showSuccess();
1328
- });
1329
- A.on('a:popover:show:atwl_secondary_view', function(event) {
1330
- var popover = event.popover;
1331
- var $popover = popover.$popover;
1332
- var content = $('#atwl-content');
1333
- var params = serializeAsHash(content ? content.find('#atwl-form') : {});
1334
- var sourceVendorId = params['sourceVendorId'] || 'other';
1335
- var url = '/gp/registry/atwl/popover.html';
1336
- A.ajax(url, {
1337
- method: 'post',
1338
- params: {
1339
- 'type': 'wishlist',
1340
- 'isMobile': 1,
1341
- 'ellipsize': 20,
1342
- 'displayHeader': 1,
1343
- 'modalView': 0,
1344
- 'sourceVendorId' : sourceVendorId
1345
- },
1346
- success: function(response) {
1347
- if (response && response.html) {
1348
- $('#atwl-error-message').closest('.a-alert-inline-error').addClass('a-hidden').hide();
1349
- $popover.find('.a-popover-loading').hide();
1350
- $popover.find('#atwl-css').html(response.css);
1351
- $popover.find('#atwl-html').html(response.html).show();
1352
- } else {
1353
- showError(response);
1354
- }
1355
- },
1356
- error: function(response) {
1357
- showError(response);
1358
- }
1359
- });
1360
- });
1361
- function serializeAsHash(form) {
1362
- var hash = {};
1363
- var inputs = form.find(':input');
1364
- A.each(inputs, function(input) {
1365
- var $input = A.$(input);
1366
- if (input.name) {
1367
- hash[input.name] = $input.val();
1368
- }
1369
- });
1370
- return hash;
1371
- }
1372
- var inFlight = false;
1373
- function setInFlightToTrue() {
1374
- inFlight = true;
1375
- setTimeout(function () {
1376
- inFlight = false;
1377
- }, 10000);
1378
- }
1379
- A.declarative('atwl-option', 'click', function(event){
1380
- var data = event.data;
1381
- var content = event.$declarativeParent.closest('#atwl-content');
1382
- if (data.type === null || data.id === null || inFlight) {
1383
- return;
1384
- }
1385
- $('#atwl-html').hide();
1386
- $('.a-popover-loading').show();
1387
- var params = serializeAsHash(content.find('#atwl-form'));
1388
- params['type'] = data.type;
1389
- params['registryID'] = data.id;
1390
- params['pcomp'] = 0;
1391
- params['action'] = 'add';
1392
- setInFlightToTrue();
1393
- A.ajax("/gp/registry/atwl/add.html", {
1394
- method: "post",
1395
- params: params,
1396
- timeout: 5000,
1397
- success: function(response) {
1398
- inFlight = false;
1399
- if (response && response.isValid) {
1400
- $('#atwl-error-message').closest('.a-alert-inline-error').addClass('a-hidden').hide();
1401
- setAtwlState({
1402
- isResponseSuccess : response.isValid,
1403
- registryId : response.registryID,
1404
- registryType : response.registryType,
1405
- registryPrivacy : response.registryPrivacy,
1406
- });
1407
- if (!onMash) {
1408
- aSecondaryView.get('atwl_secondary_view').hide();
1409
- } else {
1410
- A.trigger('atwl:mash:goback');
1411
- }
1412
- } else {
1413
- showError(response);
1414
- }
1415
- },
1416
- error: function(response) {
1417
- inFlight = false;
1418
- showError(response);
1419
- }
1420
- });
1421
- });
1422
- A.declarative('atwl-add-item', 'click', function(event){
1423
- if (inFlight) {
1424
- return;
1425
- }
1426
- var data = event.data;
1427
- $('#atwl-html').hide();
1428
- $('.a-popover-loading').show();
1429
- var params = serializeAsHash($('#atwl-form'));
1430
- params['pcomp'] = 0;
1431
- params['action'] = 'add';
1432
- params['registryID'] = 'new';
1433
- params['type'] = 'wishlist';
1434
- setInFlightToTrue();
1435
- A.ajax("/gp/registry/atwl/add.html", {
1436
- method: "post",
1437
- params: params,
1438
- timeout: 5000,
1439
- success: function(response) {
1440
- inFlight = false;
1441
- if (response && response.isValid) {
1442
- setAtwlState({
1443
- isResponseSuccess : response.isValid,
1444
- registryId : response.registryID,
1445
- registryType : response.registryType,
1446
- registryPrivacy : response.registryPrivacy,
1447
- });
1448
- showSuccess();
1449
- } else {
1450
- showError(response);
1451
- }
1452
- },
1453
- error: function(response) {
1454
- inFlight = false;
1455
- showError(response);
1456
- }
1457
- });
1458
- });
1459
- });
1460
- P.when('A', 'mash', 'atwl').execute(function (A, mash) {
1461
- A.trigger('atwl:mashPresent');
1462
- A.on('atwl:mash:goback', function () {
1463
- mash.goBack();
1464
- });
1465
- });
1466
- });
1467
- </script>
1468
- </div>
1469
- </div>
1470
- </div>
1471
- <script type="text/javascript">
1472
- if(typeof encodedImgSrc != 'undefined' && encodedImgSrc != "" && document.getElementById("main-image")!=null){document.getElementById("main-image").src=encodedImgSrc;};setCSMReq('af');setCSMReq('af');
1473
- addlongPoleTag('af','awudplphtml');
1474
- </script>
1475
- <script type="text/javascript">
1476
- P.when('jQuery').register('image-block-exp-weblab', function($) {
1477
- return {
1478
- getTreatment : function() {
1479
- return "T1";
1480
- }
1481
- };
1482
- });
1483
- P.when('jQuery').register('airy-image-block', function($) {
1484
- var shouldDetachExitFullScreen = false;
1485
- var currentIndex = 0;
1486
- var newAiryConfig = null;
1487
- var updateStateElement = $('#image-block');
1488
- return {
1489
- updateStateForAction : function($carousel, index, airyConfig) {
1490
- if (!airyConfig) {return;}
1491
- var airyInstance = airyConfig.instance;
1492
- if (airyInstance) {
1493
- airyInstance.pause();
1494
- }
1495
- var $selectedCarouselItem = $carousel
1496
- .find('li.a-carousel-card')
1497
- .eq(index - 1);
1498
- var $playerContainer = $selectedCarouselItem.find('.airy-player-container');
1499
- if (!$playerContainer.length) { return; }
1500
- if (airyInstance) {
1501
- this._attachAndLoadMedia(airyInstance, $playerContainer);
1502
- return;
1503
- }
1504
- P.when('Airy').execute(function() {
1505
- airyInstance = this._embed($playerContainer, airyConfig.contextName);
1506
- airyConfig.embeddedCallback(airyInstance);
1507
- }.bind(this));
1508
- },
1509
- _embed : function($playerContainer, contextName) {
1510
- var $videoMetadata = $('#image-block-video-metadata');
1511
- var foresterParams = $videoMetadata.data('forester-params');
1512
- if (contextName != null) {
1513
- foresterParams.method += '.' + contextName;
1514
- }
1515
- var airyInstance;
1516
- var that = this;
1517
- var playerConfig = {
1518
- foresterMetadataParams : foresterParams,
1519
- mediaSourceInfo : $playerContainer.data('video-url'),
1520
- parentElement : $playerContainer[0],
1521
- bindings : {
1522
- screenchange : function() {
1523
- $slateImage = $('div.airy-player-container .image-size-wrapper, div.airy-player-container #airy-slate-preload');
1524
- $slateImage.css('visibility', 'visible');
1525
- $replayHint = $('div.airy-player-container .airy-replay-hint');
1526
- $replayHint.css('visibility', 'hidden');
1527
- var airyConfig = that.getNewAiryConfig();
1528
- if(airyConfig) {
1529
- airyInstance = airyConfig.instance;
1530
- if(airyInstance && !airyInstance.isFullScreen() && that.shouldDetachOnExitFullScreen()) {
1531
- that.setShouldDetachOnExitFullScreen(false);
1532
- that._detachAiryInstance(airyInstance);
1533
- that.updateStateForAction(that.getUpdateStateElement(), that.getCurrentIndex(), that.getNewAiryConfig());
1534
- }
1535
- }
1536
- },
1537
- play : function() {
1538
- // video metric to be logged here
1539
- // should we log 2 separate metrics here? one to count whether a video has been played or not. Another to count how many times a video has been played?
1540
- var videoPlayedMetric = "dpmob_videoPlayed";
1541
- P.when('postMetric').execute(function(postMetricClass) {
1542
- postMetricClass.postCountMetric(videoPlayedMetric);
1543
- });
1544
- airyInstance.enterFullScreen({isAsync : true});
1545
- }
1546
- },
1547
- installFlashButtonText : "Install Flash Player",
1548
- installFlashPrompt : "Adobe Flash Player is required to watch this video.",
1549
- playbackErrorPrompt : "Sorry, an error has occurred while attempting video playback. Please try again later.",
1550
- videoUnsupportedPrompt : "Sorry, this video is unsupported on this browser.",
1551
- ageGate : {
1552
- deniedPrompt : "We're sorry. You are not old enough to watch this video.",
1553
- monthNames : [
1554
- "January",
1555
- "February",
1556
- "March",
1557
- "April",
1558
- "May",
1559
- "June",
1560
- "July",
1561
- "August",
1562
- "September",
1563
- "October",
1564
- "November",
1565
- "December"
1566
- ],
1567
- prompt : "This video is not intended for all audiences. What date were you born?",
1568
- submitText : "Submit",
1569
- regionCode : "na"
1570
- }
1571
- };
1572
- this._addSlateImageToPlayerConfig($playerContainer, playerConfig);
1573
- airyInstance = Airy.embed(playerConfig);
1574
- return airyInstance;
1575
- },
1576
- _attachAndLoadMedia : function(airyInstance, $playerContainer) {
1577
- if (!airyInstance) { return; }
1578
- airyInstance.attach($playerContainer[0]);
1579
- this._loadMedia(airyInstance, $playerContainer);
1580
- },
1581
- _loadMedia : function(airyInstance, $playerContainer) {
1582
- if (!airyInstance) { return; }
1583
- var videoUrl = $playerContainer.data('video-url');
1584
- if (airyInstance.getMediaSourceInfo() === videoUrl) { return; }
1585
- var loadMediaConfig = {
1586
- mediaSourceInfo : videoUrl
1587
- };
1588
- this._addSlateImageToPlayerConfig($playerContainer, loadMediaConfig);
1589
- airyInstance.loadMedia(loadMediaConfig);
1590
- },
1591
- _addSlateImageToPlayerConfig : function($playerContainer, playerConfig) {
1592
- var slateUrl = $playerContainer.data('slate-url');
1593
- var $slateImage = $playerContainer.find('.image-size-wrapper');
1594
- var slateImageValue = $slateImage.find('img').attr('src') === slateUrl ? $slateImage[0] : slateUrl;
1595
- playerConfig.slateImages = {
1596
- preloadSlate : slateImageValue
1597
- };
1598
- },
1599
- _detachAiryInstance : function(airyInstance) {
1600
- if (airyInstance && !airyInstance.isDetached() && !airyInstance.isFullScreen()) {
1601
- airyInstance.detach({isAsync : true});
1602
- }
1603
- },
1604
- setShouldDetachOnExitFullScreen : function(shouldDetach) {
1605
- shouldDetachExitFullScreen = shouldDetach;
1606
- },
1607
- shouldDetachOnExitFullScreen : function() {
1608
- return shouldDetachExitFullScreen;
1609
- },
1610
- _resizeIVCarousel : function() {
1611
- if($('#immersive-main img').length > 0){
1612
- var mainCarouselHeight = getMainCarouselHeight();
1613
- $('#immersive-main').css('height',mainCarouselHeight+'px');
1614
- $('#immersive-main ol').css('height',mainCarouselHeight+'px');
1615
- $('#immersive-main div.a-carousel-viewport').each(function(){
1616
- $(this).css('height',mainCarouselHeight+'px');
1617
- });
1618
- $('#immersive-main li.a-carousel-card').each(function(){
1619
- $(this).css('height',mainCarouselHeight+'px');
1620
- });
1621
- $('#immersive-main img').each(function(){
1622
- $(this).css('max-height',mainCarouselHeight+'px');
1623
- });
1624
- $('#immersive-main .slate-image-table img').each(function() {
1625
- $(this).css('max-height',(mainCarouselHeight - 65) + 'px');
1626
- });
1627
- }
1628
- },
1629
- getCurrentIndex : function() {
1630
- return currentIndex;
1631
- },
1632
- setCurrentIndex : function(index) {
1633
- currentIndex = index;
1634
- },
1635
- getNewAiryConfig : function() {
1636
- return newAiryConfig;
1637
- },
1638
- setNewAiryConfig : function(airyConfig) {
1639
- newAiryConfig = airyConfig
1640
- },
1641
- getUpdateStateElement : function() {
1642
- return updateStateElement;
1643
- },
1644
- setUpdateStateElement : function(element) {
1645
- updateStateElement = element;
1646
- }
1647
- };
1648
- var imageBlock = $(".a-image-wrapper");
1649
- var imageBlockCounter = imageBlock.attr("data-imageBlockCounter");
1650
- var immersiveViewCounter = imageBlock.attr("data-immersiveViewCounter");
1651
- var declarativeActionName = imageBlock.attr("data-declarativeActionName");
1652
- function logForesterCounter(counter) {
1653
- ue.count(counter, 1);
1654
- }
1655
- logForesterCounter(imageBlockCounter);
1656
- function logImmersiveViewClickPerPage() {
1657
- logForesterCounter(immersiveViewCounter);
1658
- }
1659
- function logAllImmersiveViewClick() {
1660
- logForesterCounter(immersiveViewCounter + "All");
1661
- }
1662
- var popoverShowEvent = "a:popover:afterShow:" + declarativeActionName;
1663
- var popoverHideEvent = "a:popover:hide:" + declarativeActionName;
1664
- A.on(popoverShowEvent, logImmersiveViewClickPerPage);
1665
- A.on(popoverShowEvent, logAllImmersiveViewClick);
1666
- A.on(popoverHideEvent, function(){
1667
- A.off(popoverShowEvent, logImmersiveViewClickPerPage);
1668
- });
1669
- });
1670
- </script>
1671
- </div>
1672
- <!-- MarkAF -->
1673
-
1674
- <div id="WrapperDivToHideBTF" style="display:none;">
1675
- <div id="dp-lazy-fast-track_feature_div" data-feature-name="dpFastTrack" data-template-name="dpFastTrack" class="a-section a-spacing-none">
1676
- <div id="lazy-fast-track" style="display: none">
1677
- <div id="fast-track" class="a-section a-spacing-small a-spacing-top-small">
1678
- <span class="a-text-bold">
1679
- Want it tomorrow, June 16?
1680
- </span>
1681
- Order within <b><span id="ftCountdown" class="a-color-success a-color-available ftCountdownClass"></span></b> and choose <b>One-Day Shipping</b> at checkout.
1682
- <script type="text/javascript">
1683
- FT_showAndInCountdown = false;
1684
- FT_HourString = "hr";
1685
- FT_HoursString = "hrs";
1686
- FT_MinuteString = "min";
1687
- FT_MinutesString = "mins";
1688
- FT_AndString = "and";
1689
- function getElementsByClassNameCustom(className) {
1690
- var selectedElements = [];
1691
- if (document.getElementsByClassName) {
1692
- selectedElements = document.getElementsByClassName(className);
1693
- } else if (document.querySelectorAll) {
1694
- selectedElements = document.querySelectorAll("." + className);
1695
- }
1696
- return selectedElements;
1697
- }
1698
- var FT_CurrentDisplayMin;
1699
- var clientServerTimeDrift;
1700
- var firstTimeUpdate = true;
1701
- var countdownElements = getElementsByClassNameCustom("ftCountdownClass");
1702
- if (countdownElements.length < 1) {
1703
- countdownElements.push(document.getElementById("ftCountdown"));
1704
- }
1705
- function getTimeRemainingString( hours, minutes )
1706
- {
1707
- var hourString = ( hours == 1 ? FT_HourString : FT_HoursString );
1708
- var minuteString = ( minutes == 1 ? FT_MinuteString : FT_MinutesString );
1709
- if (hours == 0) {
1710
- return minutes + " " + minuteString;
1711
- }
1712
- if (minutes == 0) {
1713
- return hours + " " + hourString;
1714
- }
1715
- if (FT_showAndInCountdown) {
1716
- return hours + " " + hourString + " " + FT_AndString + " " + minutes + " " + minuteString;
1717
- } else {
1718
- return hours + " " + hourString + " " + minutes + " " + minuteString;
1719
- }
1720
- }
1721
- function FT_displayCountdown(forceUpdate)
1722
- {
1723
- var FT_remainSeconds = FT_givenSeconds - FT_actualSeconds;
1724
- if (FT_remainSeconds < 1 && document.getElementById("fast-track")) {
1725
- document.getElementById("fast-track").style.display = "none";
1726
- }
1727
- var FT_secondsPerDay = 24 * 60 * 60;
1728
- var FT_daysLong = FT_remainSeconds / FT_secondsPerDay;
1729
- var FT_days = Math.floor(FT_daysLong);
1730
- var FT_hoursLong = (FT_daysLong - FT_days) * 24;
1731
- var FT_hours = Math.floor(FT_hoursLong);
1732
- var FT_minsLong = (FT_hoursLong - FT_hours) * 60;
1733
- var FT_mins = Math.floor(FT_minsLong);
1734
- var FT_secsLong = (FT_minsLong - FT_mins) * 60;
1735
- var FT_secs = Math.floor(FT_secsLong);
1736
- if (FT_days > 0) {
1737
- FT_hours = (FT_days * 24) + FT_hours;
1738
- }
1739
- setTimeout(FT_getTime, 1000);
1740
- var ftCountdown = getTimeRemainingString( FT_hours, FT_mins );
1741
- if (countdownElements.length) {
1742
- if (FT_CurrentDisplayMin != FT_mins || forceUpdate || firstTimeUpdate) {
1743
- var i = 0, countdownElement;
1744
- while (countdownElement = countdownElements[i++]) {
1745
- countdownElement.innerHTML = ftCountdown;
1746
- }
1747
- FT_CurrentDisplayMin = FT_mins;
1748
- firstTimeUpdate = false;
1749
- }
1750
- }
1751
- }
1752
- function FT_getCountdown(secondsLeft)
1753
- {
1754
- var FT_currentTime = new Date();
1755
- var FT_currentHours = FT_currentTime.getHours();
1756
- var FT_currentMins = FT_currentTime.getMinutes();
1757
- var FT_currentSecs = FT_currentTime.getSeconds();
1758
- FT_givenSeconds = FT_currentHours * 3600 + FT_currentMins * 60 + FT_currentSecs;
1759
- FT_givenSeconds += secondsLeft;
1760
- FT_getTime();
1761
- }
1762
- function FT_getTime()
1763
- {
1764
- var FT_newCurrentTime = new Date();
1765
- var FT_actualHours = FT_newCurrentTime.getHours();
1766
- var FT_actualMins = FT_newCurrentTime.getMinutes();
1767
- var FT_actualSecs = FT_newCurrentTime.getSeconds();
1768
- FT_actualSeconds = FT_actualHours * 3600 + FT_actualMins * 60 + FT_actualSecs;
1769
- FT_displayCountdown();
1770
- }
1771
- </script>
1772
- <script type="text/javascript">
1773
- FT_getCountdown(22280);
1774
- </script>
1775
- </div>
1776
- </div>
1777
- <script type="text/javascript">
1778
- P.when('jQuery', 'atf').execute(function($){
1779
- $('#dpFastTrack_feature_div').html($('#lazy-fast-track').html());
1780
- $('#lazy-fast-track').remove();
1781
- });
1782
- </script>
1783
- </div>
1784
- <div id="lazy-holidayAvailabilityMessage_feature_div" data-feature-name="holidayAvailabilityMessage" data-template-name="holidayAvailabilityMessage" class="a-section a-spacing-none">
1785
- <div id="lazy-holidayAvailabilityMessage" style="display: none">
1786
- </div>
1787
- <script type="text/javascript">
1788
- P.when('jQuery', 'atf').execute(function($){
1789
- $('#holidayAvailabilityMessage_feature_div').html($('#lazy-holidayAvailabilityMessage').html());
1790
- $('#lazy-holidayAvailabilityMessage').remove();
1791
- });
1792
- </script>
1793
- </div>
1794
- <div style="display:flex">
1795
- <div class="twister-spinner-preload" style="width:0px; height:0px"></div>
1796
- </div>
1797
- <style type="text/css">
1798
- .twister-spinner-preload-app {
1799
- background: url("https://images-na.ssl-images-amazon.com/images/G/01/amazonui/loading/loading-4x._V1_.gif");
1800
- }
1801
- .twister-spinner-preload {
1802
- background: url("http://g-ecx.images-amazon.com/images/G/01/amazonui/loading/loading-4x._V1_.gif");
1803
- }
1804
- </style>
1805
- <div id="tradeInButton_feature_div" data-feature-name="tradeInButton" data-template-name="tradeInButton" class="a-section a-spacing-none">
1806
- <div id="tradeInButton" class="a-row a-spacing-large">
1807
- <a href="https://www.amazon.com/gp/aw/tradein/add-to-cart.html/ref=tradein_btn_dpx_mobile_1?ie=UTF8&amp;asin=193435659X" class="a-touch-link a-box"><div class="a-box-inner">
1808
- <i class="a-icon a-icon-touch-link"></i>
1809
- <b>Trade In</b> for <span class="a-color-price">$5.53</span>
1810
- </div></a>
1811
- </div>
1812
- </div>
1813
- <div id="olp_feature_div" data-feature-name="olp" data-template-name="olp" class="a-section a-spacing-none">
1814
- <style type="text/css">
1815
- #olp a {
1816
- color: #111;
1817
- }
1818
- </style>
1819
- <div id="olp" class="a-row a-spacing-large">
1820
- <a href="/gp/aw/ol/193435659X/ref=mw_dp_olp?ie=UTF8&amp;condition=all" class="a-touch-link a-box"><div class="a-box-inner">
1821
- <i class="a-icon a-icon-touch-link"></i>
1822
- <span class="a-text-bold">New &amp; used <span class="a-color-secondry a-size-normal a-text-normal">(83)</span></span> from <span class="a-color-price">$13.95</span>
1823
- </div></a>
1824
- </div>
1825
- </div>
1826
- <div id="tellAFriendBox_feature_div" data-feature-name="tellAFriendBox" data-template-name="tellAFriendBox" class="a-section a-spacing-none">
1827
- <div class="a-row">
1828
- <div class="a-box a-spacing-none" style="height:52px;"><div class="a-box-inner a-padding-none">
1829
- <div id="email" class="a-column a-span2 a-text-center a-spacing-large swf-share-box">
1830
- <a id="tell-a-friend" href="/gp/aw/social/swf/193435659X/o=WriteEmail/ref=cm_sw_em_ov_awdo_ubVFvb1G4E6S5?ie=UTF8&amp;asin=193435659X&amp;isOneClick=1&amp;placementID=awdo_ubVFvb1G4E6S5" target="_self" class="a-touch-link a-box swf-sn-icon-link"><div class="a-box-inner">
1831
- <i class="a-icon a-icon-touch-link"></i>
1832
- <img alt="Email" src="http://g-ecx.images-amazon.com/images/G/01/social/universal-share/mobile/btn_icon_email_sm._CB380803665_.png">
1833
- </div></a>
1834
- </div>
1835
- <div id="facebook" class="a-column a-span2 a-text-center a-spacing-large swf-share-box">
1836
- <a id="tell-a-friend" href="/gp/redirect.html/ref=cm_sw_cl_fa_awdo_ubVFvb1G4E6S5?_encoding=UTF8&amp;location=http%3A%2F%2Fwww.facebook.com%2Fshare.php%3Fu%3Dhttp%253A%252F%252Fwww.amazon.com%252Fdp%252F193435659X%252Fref%253Dcm_sw_r_fa_awdo_ubVFvb1G4E6S5&amp;token=6BD0FB927CC51E76FF446584B1040F70EA7E88E1" target="_blank" class="a-touch-link a-box swf-sn-icon-link"><div class="a-box-inner">
1837
- <i class="a-icon a-icon-touch-link"></i>
1838
- <img alt="Facebook" src="http://g-ecx.images-amazon.com/images/G/01/social/universal-share/mobile/btn_icon_fb_sm._CB380803664_.png" height="25px" width="25px">
1839
- </div></a>
1840
- </div>
1841
- <div id="twitter" class="a-column a-span2 a-text-center a-spacing-large swf-share-box">
1842
- <a id="tell-a-friend" href="/gp/redirect.html/ref=cm_sw_cl_tw_awdo_ubVFvb1G4E6S5?_encoding=UTF8&amp;location=http%3A%2F%2Ftwitter.com%2Fintent%2Ftweet%3Foriginal_referer%3Dhttp%25253A%25252F%25252Fwww.amazon.com%25252Fgp%25252Faw%25252Fd%25252F193435659X%25252Fref%25253Dcm_sw_r_tw_awdo_ubVFvb1G4E6S5%26text%3DSeven%2520Languages%2520in%2520Seven%2520Weeks%253A%2520A%2520Pragmatic%2520Guide%2520to%2520Learning%2520Programming%2520Lan...%26related%3Damazondeals%252Camazonmp3%26url%3Dhttp%253A%252F%252Fwww.amazon.com%252Fdp%252F193435659X%252Fref%253Dcm_sw_r_tw_awdo_ubVFvb1G4E6S5%26via%3Damazon&amp;token=7A1A4AE8F6CE0BD277D8295E58702D283F329C0F" target="_blank" class="a-touch-link a-box swf-sn-icon-link"><div class="a-box-inner">
1843
- <i class="a-icon a-icon-touch-link"></i>
1844
- <img alt="Twitter" src="http://g-ecx.images-amazon.com/images/G/01/social/universal-share/mobile/btn_icon_tw_sm._CB380803667_.png" height="25px" width="25px">
1845
- </div></a>
1846
- </div>
1847
- <div class="a-column a-span6 a-text-left swf-wide">
1848
- <a href="/gp/aw/social/swf/193435659X/o=ShareProduct/ref=tsm_1_aw_swf_d_sp?vs=1" class="a-touch-link a-box swf-sn-share-link"><div class="a-box-inner">
1849
- <i class="a-icon a-icon-touch-link"></i>
1850
- <span>
1851
- Share
1852
- </span>
1853
- </div></a>
1854
- </div>
1855
- </div></div>
1856
- </div>
1857
- <style type="text/css">
1858
- a#tell-a-friend {
1859
- color: #111;
1860
- }
1861
- .swf-sn-icon-link {
1862
- border-bottom-right-radius: 0px;
1863
- border-top-right-radius: 0px;
1864
- border-top-style: none;
1865
- border-left-style: none;
1866
- border-bottom-style: none;
1867
- border-right: 1px solid #DDDDDD !important;
1868
- margin-top: 0px !important;
1869
- margin-bottom: 0px !important;
1870
- margin-right: 0px !important;
1871
- height: 50px !important;
1872
- }
1873
- .swf-sn-icon-last {
1874
- border-right-style: none !important;
1875
- border-bottom-right-radius:0.4em;
1876
- }
1877
- .swf-sn-icon-link .a-icon-touch-link {
1878
- background: none;
1879
- display:none;
1880
- }
1881
- .swf-sn-icon-link .a-box-inner {
1882
- height: 100%;
1883
- padding: 13px 11px 12px !important;
1884
- text-align: center;
1885
- }
1886
- .swf-sn-share-link {
1887
- border: none !important;
1888
- margin-top: 0px !important;
1889
- margin-bottom: 0px !important;
1890
- height: 100% !important;
1891
- font-size: 16px;
1892
- overflow: hidden;
1893
- }
1894
- .swf-share-box {
1895
- margin-right: 0px !important;
1896
- width: 17% !important;
1897
- }
1898
- .swf-share-box img{
1899
- vertical-align: middle;
1900
- }
1901
- .swf-wide {
1902
- margin-right: 0px !important;
1903
- width: 49% !important;
1904
- }
1905
- .swf-wide-4icon {
1906
- margin-right: 0px !important;
1907
- width: 32% !important;
1908
- }
1909
- .swf-sn-icon-link > .a-box-inner{
1910
- padding: 1.3rem 1.8rem 1.2rem 1.7rem;
1911
- }
1912
- .swf-share-to-win-heading {
1913
- border-bottom-style: none;
1914
- border-bottom-right-radius: 0px;
1915
- border-bottom-left-radius: 0px;
1916
- }
1917
- .swf-share-to-win-heading-box {
1918
- border-bottom-style: none;
1919
- border-bottom-right-radius: 0px;
1920
- border-bottom-left-radius: 0px;
1921
- }
1922
- .swf-share-to-win-content-box {
1923
- border-top-style: none;
1924
- padding-top:0px;
1925
- }
1926
- .swf-share-to-win-icons-box {
1927
- border-top-right-radius: 0px;
1928
- border-top-left-radius: 0px;
1929
- }
1930
- .swf-share-to-win-title {
1931
- color:#e47911;
1932
- }
1933
- .swf-share-to-win-terms {
1934
- color:#333333;
1935
- }
1936
- .swf-share-to-win-require-login {
1937
- padding-top:5px;
1938
- }
1939
- .swf-share-to-win-box {
1940
- margin-right: 0px !important;
1941
- width: 25% !important;
1942
- }
1943
- .swf-share-to-win-box img{
1944
- vertical-align: middle;
1945
- }
1946
- </style>
1947
- <script>
1948
- /*global amazon : false */
1949
- P.when('A','ready').execute(function(A){
1950
- var $ = A.$;
1951
- function collectMetrics(result, id, placementId) {
1952
- A.ajax('/gp/aw/social/swf/metrics.html/ref=cm_sw_cl_sms_' + placementId, {
1953
- method: 'post',
1954
- params: {
1955
- id: id,
1956
- result: result
1957
- }
1958
- });
1959
- }
1960
- $('#sms').click( function(){
1961
- collectMetrics('success', 'SMSClick' , 'awdo');
1962
- });
1963
- });
1964
- </script>
1965
- </div>
1966
- <div id="promotions_feature_div" data-feature-name="promotions" data-template-name="promotions" class="a-section a-spacing-none">
1967
- </div>
1968
- <div id="recommendations_feature_div" data-feature-name="recommendations" data-template-name="recommendations" class="a-section a-spacing-none">
1969
- </div>
1970
- <div id="sellYoursHere_feature_div" data-feature-name="sellYoursHere" data-template-name="sellYoursHere" class="a-section a-spacing-none">
1971
- <div class="a-row">
1972
- <div class="a-column a-span12 a-spacing-large">
1973
- <a id="sellYoursHere" href="/gp/aw/sellOnAmazonDispatcher.html/ref=udp_sdp_dispatcher?ie=UTF8&amp;ASIN=193435659X" class="a-touch-link a-box a-text-bold"><div class="a-box-inner">
1974
- <i class="a-icon a-icon-touch-link"></i>Sell on Amazon</div></a>
1975
- </div>
1976
- </div>
1977
- </div>
1978
- <div class="aw-campaigns"></div>
1979
- <div class="aw-campaigns"></div>
1980
- <div class="aw-campaigns"></div>
1981
- <div class="aw-campaigns"></div>
1982
- <div class="aw-campaigns"></div>
1983
- <div id="addOnItem_feature_div" data-feature-name="addOnItem" data-template-name="addOnItem" class="a-section a-spacing-none">
1984
- </div>
1985
- <div id="udpv3-fbt-primary">
1986
- <div class="a-section a-spacing-large sims-fbt-container">
1987
- <h2 class="a-spacing-mini">
1988
- Frequently bought together
1989
- </h2>
1990
- <ul class="a-nostyle a-vertical sims-fbt">
1991
- <li class="sims-fbt-images-row"><span class="a-list-item"><ul class="sims-fbt-images-list">
1992
- <li class="sims-fbt-image sims-fbt-image-1"><img alt="Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages (Pragmatic Programmers)" src="http://ecx.images-amazon.com/images/I/51opYcR6kVL._AC_UL70_SR70,70_.jpg" class="a-dynamic-image a-dynamic-image-container" height="70" width="70" data-a-dynamic-image='{"http://ecx.images-amazon.com/images/I/51opYcR6kVL._AC_UL140_SR140,140_.jpg":[140,140],"http://ecx.images-amazon.com/images/I/51opYcR6kVL._AC_UL210_SR210,210_.jpg":[210,210],"http://ecx.images-amazon.com/images/I/51opYcR6kVL._AC_UL70_SR70,70_.jpg":[70,70]}'></li>
1993
- <li class="sims-fbt-image sims-fbt-image-2"><a href="/gp/aw/d/1934356921/ref=pd_aw_fbt_14img_2/184-9743298-0728138?refRID=1VGN4TEE63ST5RTPH4EJ" class="sims-fbt-image-link"><img alt="Seven Databases in Seven Weeks: A Guide to Modern Databases and the NoSQL Movement" src="http://ecx.images-amazon.com/images/I/41rYtcbzOUL._AC_UL70_SR70,70_.jpg" class="a-dynamic-image a-dynamic-image-container" height="70" width="70" data-a-dynamic-image='{"http://ecx.images-amazon.com/images/I/41rYtcbzOUL._AC_UL140_SR140,140_.jpg":[140,140],"http://ecx.images-amazon.com/images/I/41rYtcbzOUL._AC_UL210_SR210,210_.jpg":[210,210],"http://ecx.images-amazon.com/images/I/41rYtcbzOUL._AC_UL70_SR70,70_.jpg":[70,70]}'></a></li>
1994
- <li class="sims-fbt-image sims-fbt-image-3"><a href="/gp/aw/d/1937785653/ref=pd_aw_fbt_14img_3/184-9743298-0728138?refRID=1VGN4TEE63ST5RTPH4EJ" class="sims-fbt-image-link"><img alt="Seven Concurrency Models in Seven Weeks: When Threads Unravel (The Pragmatic Programmers)" src="http://ecx.images-amazon.com/images/I/41U8py1NCcL._AC_UL70_SR70,70_.jpg" class="a-dynamic-image a-dynamic-image-container" height="70" width="70" data-a-dynamic-image='{"http://ecx.images-amazon.com/images/I/41U8py1NCcL._AC_UL210_SR210,210_.jpg":[210,210],"http://ecx.images-amazon.com/images/I/41U8py1NCcL._AC_UL70_SR70,70_.jpg":[70,70],"http://ecx.images-amazon.com/images/I/41U8py1NCcL._AC_UL140_SR140,140_.jpg":[140,140]}'></a></li>
1995
- </ul> <span class="a-color-secondary sims-fbt-choose-items-to-buy a-hidden">Choose items to buy together.</span> </span></li>
1996
- <div id="fbt-expander-content" class="a-hidden">
1997
- <form class="sims-fbt-row-form" autocomplete="off"> <li><span class="a-list-item">
1998
- <div class="sims-fbt-row sims-fbt-row-border">
1999
- <div class="sims-fbt-checkbox-div"><span class="a-declarative" data-action="fbt-checkbox-click" data-fbt-checkbox-click='{"itemNum":"1","offerListingID":"Bt%2B4SH%2Fdq5LCV3jmgE%2Fk22brD6Y%2Fo0%2FuP%2ByCoUPY%2BZIRlNUY8%2FSoRk3h2esomO0tQsgcD6AuZGgLn9GIaHNEfjy5xVVXkibKajvUKwXMwqulBvIw3uKNsg%3D%3D","asin":"193435659X"}'><div data-a-input-name="checkboxID.1" class="a-checkbox a-checkbox-new a-checkbox-fancy a-control-row a-touch-checkbox sims-fbt-checkbox a-spacing-micro"><label><input type="checkbox" name="checkboxID.1" value="Bt%2B4SH%2Fdq5LCV3jmgE%2Fk22brD6Y%2Fo0%2FuP%2ByCoUPY%2BZIRlNUY8%2FSoRk3h2esomO0tQsgcD6AuZGgLn9GIaHNEfjy5xVVXkibKajvUKwXMwqulBvIw3uKNsg%3D%3D" checked><i class="a-icon a-icon-checkbox"></i><span class="a-label a-checkbox-label"></span></label></div></span></div>
2000
- <div class="sims-fbt-textbox-div sims-fbt-row-outer">
2001
- <div class="sims-fbt-item-details">
2002
- <div class="a-row sims-fbt-title">
2003
- <div class="p13n-sc-truncate p13n-sc-line-clamp-2" data-rows="2">
2004
- <span class="sims-fbt-this-item a-text-bold">This item:</span>Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages (Pragmatic Programmers)
2005
- </div>
2006
- </div> <span class="a-color-price">$25.34</span> <i class="a-icon a-icon-prime sims-fbt-prime-badge" role="img" aria-label="Prime"></i>
2007
- </div>
2008
- </div>
2009
- </div>
2010
- </span></li>
2011
- <li><span class="a-list-item">
2012
- <div class="sims-fbt-row sims-fbt-row-border">
2013
- <div class="sims-fbt-checkbox-div"><span class="a-declarative" data-action="fbt-checkbox-click" data-fbt-checkbox-click='{"itemNum":"2","offerListingID":"HuySP8K%2F8kfigOEJJdOLkx4sROuSPablqYbB3WLqbukT220ntLuB8XAN%2BF7df6AYHQzvwyHuGdk1qBBs%2FgnEwAiY%2BNt66mptRuqYySc3mhs1CB5vj33xBg%3D%3D","asin":"1934356921"}'><div data-a-input-name="checkboxID.2" class="a-checkbox a-checkbox-new a-checkbox-fancy a-control-row a-touch-checkbox sims-fbt-checkbox a-spacing-micro"><label><input type="checkbox" name="checkboxID.2" value="HuySP8K%2F8kfigOEJJdOLkx4sROuSPablqYbB3WLqbukT220ntLuB8XAN%2BF7df6AYHQzvwyHuGdk1qBBs%2FgnEwAiY%2BNt66mptRuqYySc3mhs1CB5vj33xBg%3D%3D" checked><i class="a-icon a-icon-checkbox"></i><span class="a-label a-checkbox-label"></span></label></div></span></div>
2014
- <div class="sims-fbt-row-outer">
2015
- <a href="/gp/aw/d/1934356921/ref=pd_aw_fbt_14_2/184-9743298-0728138?refRID=1VGN4TEE63ST5RTPH4EJ" class="sims-fbt-item-details sims-fbt-link-box a-touch-link">
2016
- <i class="a-icon a-icon-touch-link"></i>
2017
- <div class="a-row sims-fbt-title">
2018
- <div class="p13n-sc-truncate p13n-sc-line-clamp-2" data-rows="2">
2019
- Seven Databases in Seven Weeks: A Guide to Modern Databases and the NoSQL Movement
2020
- </div>
2021
- </div> <span class="a-color-price">$32.27</span> <i class="a-icon a-icon-prime sims-fbt-prime-badge" role="img" aria-label="Prime"></i>
2022
- </a>
2023
- </div>
2024
- </div>
2025
- </span></li>
2026
- <li><span class="a-list-item">
2027
- <div class="sims-fbt-row sims-fbt-row-border">
2028
- <div class="sims-fbt-checkbox-div"><span class="a-declarative" data-action="fbt-checkbox-click" data-fbt-checkbox-click='{"itemNum":"3","offerListingID":"y8VWMkmKMfI1ibmeDb012a3FiyUwWyBYz%2Fj8fwpNbj7m7YJj5wvspkFpfjbWxCYAF%2BFZ5HPmKwKAKci1Nstd32K6ATgtFfLBZ%2Bl1CdnT9aYienpcIsm30g%3D%3D","asin":"1937785653"}'><div data-a-input-name="checkboxID.3" class="a-checkbox a-checkbox-new a-checkbox-fancy a-control-row a-touch-checkbox sims-fbt-checkbox a-spacing-micro"><label><input type="checkbox" name="checkboxID.3" value="y8VWMkmKMfI1ibmeDb012a3FiyUwWyBYz%2Fj8fwpNbj7m7YJj5wvspkFpfjbWxCYAF%2BFZ5HPmKwKAKci1Nstd32K6ATgtFfLBZ%2Bl1CdnT9aYienpcIsm30g%3D%3D" checked><i class="a-icon a-icon-checkbox"></i><span class="a-label a-checkbox-label"></span></label></div></span></div>
2029
- <div class="sims-fbt-row-outer">
2030
- <a href="/gp/aw/d/1937785653/ref=pd_aw_fbt_14_3/184-9743298-0728138?refRID=1VGN4TEE63ST5RTPH4EJ" class="sims-fbt-item-details sims-fbt-link-box a-touch-link">
2031
- <i class="a-icon a-icon-touch-link"></i>
2032
- <div class="a-row sims-fbt-title">
2033
- <div class="p13n-sc-truncate p13n-sc-line-clamp-2" data-rows="2">
2034
- Seven Concurrency Models in Seven Weeks: When Threads Unravel (The Pragmatic Programmers)
2035
- </div>
2036
- </div> <span class="a-color-price">$36.10</span> <i class="a-icon a-icon-prime sims-fbt-prime-badge" role="img" aria-label="Prime"></i>
2037
- </a>
2038
- </div>
2039
- </div>
2040
- </span></li> </form>
2041
- <li class="sims-fbt-row-border"><span class="a-list-item">
2042
- <div class="sims-fbt-price-addToCart">
2043
- <span class="sims-fbt-data" data-fbt="{&quot;addToCartText&quot;:{&quot;1&quot;:&quot;Add to Cart&quot;,&quot;3&quot;:&quot;Add all three to Cart&quot;,&quot;2&quot;:&quot;Add both to Cart&quot;},&quot;allOfferListingIDs&quot;:[&quot;Bt%2B4SH%2Fdq5LCV3jmgE%2Fk22brD6Y%2Fo0%2FuP%2ByCoUPY%2BZIRlNUY8%2FSoRk3h2esomO0tQsgcD6AuZGgLn9GIaHNEfjy5xVVXkibKajvUKwXMwqulBvIw3uKNsg%3D%3D&quot;,&quot;HuySP8K%2F8kfigOEJJdOLkx4sROuSPablqYbB3WLqbukT220ntLuB8XAN%2BF7df6AYHQzvwyHuGdk1qBBs%2FgnEwAiY%2BNt66mptRuqYySc3mhs1CB5vj33xBg%3D%3D&quot;,&quot;y8VWMkmKMfI1ibmeDb012a3FiyUwWyBYz%2Fj8fwpNbj7m7YJj5wvspkFpfjbWxCYAF%2BFZ5HPmKwKAKci1Nstd32K6ATgtFfLBZ%2Bl1CdnT9aYienpcIsm30g%3D%3D&quot;],&quot;currencySymbol&quot;:&quot;$&quot;,&quot;currencyCode&quot;:&quot;USD&quot;,&quot;shippingDetails&quot;:{&quot;123&quot;:&quot;same&quot;,&quot;23&quot;:&quot;same&quot;,&quot;13&quot;:&quot;same&quot;,&quot;12&quot;:&quot;same&quot;},&quot;MAPText&quot;:&quot;To see our price, add these items to your cart. &lt;a href='/gp/aw/help/ref=pd_aw_fbt_14_map/184-9743298-0728138?id=map&amp;refRID=1VGN4TEE63ST5RTPH4EJ' class='sims-fbt-map-details-link'&gt;Details&lt;/a&gt;&quot;,&quot;isAmazonApp&quot;:0,&quot;itemDetails&quot;:{&quot;HuySP8K%2F8kfigOEJJdOLkx4sROuSPablqYbB3WLqbukT220ntLuB8XAN%2BF7df6AYHQzvwyHuGdk1qBBs%2FgnEwAiY%2BNt66mptRuqYySc3mhs1CB5vj33xBg%3D%3D&quot;:{&quot;asin&quot;:&quot;1934356921&quot;,&quot;isPreorder&quot;:0,&quot;price&quot;:32.27,&quot;doesMAPPolicyApply&quot;:0},&quot;y8VWMkmKMfI1ibmeDb012a3FiyUwWyBYz%2Fj8fwpNbj7m7YJj5wvspkFpfjbWxCYAF%2BFZ5HPmKwKAKci1Nstd32K6ATgtFfLBZ%2Bl1CdnT9aYienpcIsm30g%3D%3D&quot;:{&quot;asin&quot;:&quot;1937785653&quot;,&quot;isPreorder&quot;:0,&quot;price&quot;:36.1,&quot;doesMAPPolicyApply&quot;:0},&quot;Bt%2B4SH%2Fdq5LCV3jmgE%2Fk22brD6Y%2Fo0%2FuP%2ByCoUPY%2BZIRlNUY8%2FSoRk3h2esomO0tQsgcD6AuZGgLn9GIaHNEfjy5xVVXkibKajvUKwXMwqulBvIw3uKNsg%3D%3D&quot;:{&quot;asin&quot;:&quot;193435659X&quot;,&quot;isPreorder&quot;:0,&quot;price&quot;:25.34,&quot;doesMAPPolicyApply&quot;:0}},&quot;preOrderText&quot;:null}"></span>
2044
- <div class="sims-fbt-total-price">
2045
- <span class="fbt-total-price-text a-color-secondary">Total price:</span><span class="a-color-price fbt-total-price-value fbt-total-price-value-currency">$93.71</span>
2046
- </div>
2047
- <div class="sims-fbt-add-to-cart">
2048
- <form name="frequentlyBoughtTogetherAddToCart" method="post" action="/gp/aw/c/ref=pd_aw_fbt_14_crt" class="sims-fbt-cart">
2049
- <div class="sims-fbt-form-input-elements">
2050
- <input type="hidden" name="o" value="add"><input type="hidden" name="verificationSessionID" value="184-9743298-0728138"><input type="hidden" name="asin.1" value="193435659X"><input type="hidden" name="offeringID.1" value="Bt%2B4SH%2Fdq5LCV3jmgE%2Fk22brD6Y%2Fo0%2FuP%2ByCoUPY%2BZIRlNUY8%2FSoRk3h2esomO0tQsgcD6AuZGgLn9GIaHNEfjy5xVVXkibKajvUKwXMwqulBvIw3uKNsg%3D%3D"><input type="hidden" name="asin.2" value="1934356921"><input type="hidden" name="offeringID.2" value="HuySP8K%2F8kfigOEJJdOLkx4sROuSPablqYbB3WLqbukT220ntLuB8XAN%2BF7df6AYHQzvwyHuGdk1qBBs%2FgnEwAiY%2BNt66mptRuqYySc3mhs1CB5vj33xBg%3D%3D"><input type="hidden" name="discoveredAsins.1" value="1934356921"><input type="hidden" name="asin.3" value="1937785653"><input type="hidden" name="offeringID.3" value="y8VWMkmKMfI1ibmeDb012a3FiyUwWyBYz%2Fj8fwpNbj7m7YJj5wvspkFpfjbWxCYAF%2BFZ5HPmKwKAKci1Nstd32K6ATgtFfLBZ%2Bl1CdnT9aYienpcIsm30g%3D%3D"><input type="hidden" name="discoveredAsins.2" value="1937785653">
2051
- </div>
2052
- <div class="a-row a-spacing-none">
2053
- <span class="a-button a-button-primary a-button-small sims-fbt-add-to-cart"><span class="a-button-inner"><input class="a-button-input" type="submit"><span class="a-button-text a-text-center" aria-hidden="true">Add all three to Cart</span></span></span>
2054
- </div>
2055
- </form>
2056
- </div>
2057
- </div>
2058
- </span></li>
2059
- </div>
2060
- <span class="a-declarative" data-action="fbt-expander-action" data-fbt-expander-action='{"expanderID":"fbt-expander"}'><a id="fbt-expander-heading" href="javascript:void(0)" data-action="a-expander-toggle" class="a-expander-header a-declarative a-expander-section-header a-color-base-background a-link-section-expander a-size-medium" data-a-expander-toggle="{&quot;allowLinkDefault&quot;:true, &quot;expand_prompt&quot;:&quot;&lt;span class='fbt-expander-heading-text'&gt; Buy all three: &lt;span class=&quot;a-color-price fbt-total-price-value-currency&quot;&gt;$93.71&lt;/span&gt;&lt;/span&gt;&quot;, &quot;collapse_prompt&quot;:&quot;&quot;}"><i class="a-icon a-icon-section-expand"></i><span class="a-expander-prompt"><span class="fbt-expander-heading-text"> Buy all three: <span class="a-color-price fbt-total-price-value-currency">$93.71</span></span></span></a></span>
2061
- </ul>
2062
- </div>
2063
- </div>
2064
- <div id="aboutThisItem_feature_div" data-feature-name="aboutThisItem" data-template-name="aboutThisItem" class="a-section a-spacing-none">
2065
- <div class="a-row a-spacing-large">
2066
- <div class="a-column a-span12">
2067
- <h2 class="a-box-title">About this item</h2>
2068
- <div id="aboutThisItem_boxGroup" class="a-box-group">
2069
- <div class="a-box feature a-hidden"><div class="a-box-inner"><div id="legalWarnings_feature_div" data-feature-name="legalWarnings" data-template-name="legalWarnings" class="a-section a-spacing-none"></div></div></div>
2070
- <div class="a-box feature a-hidden"><div class="a-box-inner"><div id="ageWarning_feature_div" data-feature-name="ageWarning" data-template-name="ageWarning" class="a-section a-spacing-none"></div></div></div>
2071
- <div class="a-box feature a-hidden"><div class="a-box-inner"><div id="productAlert_feature_div" data-feature-name="productAlert" data-template-name="productAlert" class="a-section a-spacing-none"></div></div></div>
2072
- <div class="a-box feature a-hidden"><div class="a-box-inner"><div id="esrbRating_feature_div" data-feature-name="esrbRating" data-template-name="esrbRating" class="a-section a-spacing-none"></div></div></div>
2073
- <div class="a-box feature a-hidden"><div class="a-box-inner"><div id="toySafety_feature_div" data-feature-name="toySafety" data-template-name="toySafety" class="a-section a-spacing-none"></div></div></div>
2074
- <div class="a-box feature"><div class="a-box-inner"><div id="productDescription_feature_div" data-feature-name="productDescription" data-template-name="productDescription" class="a-section a-spacing-none"><div class="a-section">
2075
- <span class="a-declarative" data-action="a-secondary-view" data-a-secondary-view='{"backButtonText":"Back","name":"productDescription_secondary_view_pageState","data":{"useStateData":true,"secViewId":"productDescription_secondary_view_pageState"}}'>
2076
- <a href="#" class="a-touch-link a-box a-touch-link-noborder"><div class="a-box-inner">
2077
- <i class="a-icon a-icon-touch-link"></i>
2078
- <h3>
2079
- Description
2080
- </h3>
2081
- <div id="productDescription" class="a-section a-spacing-small">
2082
- <p>
2083
- "I have been programming for 25 years in a variety of hardware and software languages. After reading Seven Languages in Seven Weeks, I am starting to understand how to evaluate languages for their obj ...
2084
- </p>
2085
- </div>
2086
- </div></a>
2087
- </span>
2088
- <script type="text/javascript">
2089
- P.when('jQuery','A', 'a-popover-base', 'a-popover-ajax').execute(function($, A, popovers, popoverAjax) {
2090
- A.on("a:popover:beforeShow:productDescription_secondary_view_pageState", function(data){
2091
- P.now('dpmob-sec-view-instrumentation').execute(function(secViewInstrumentation){
2092
- if(typeof secViewInstrumentation !== "undefined") {
2093
- // Record the click time before showing the secondary view.
2094
- secViewInstrumentation.recordClickTime('productDescription');
2095
- }
2096
- });
2097
- var popover = data.popover;
2098
- var metaDataMap=popover.data;
2099
- var useStateData = metaDataMap['useStateData'];
2100
- var secViewId = metaDataMap['secViewId'];
2101
- var secViewData;
2102
- if(useStateData){
2103
- var secViewDataMap = A.state(secViewId);
2104
- secViewData = secViewDataMap["data"];
2105
- }else {
2106
- secViewData = $("#"+secViewId).html();
2107
- }
2108
- popover.update(secViewData);
2109
- });
2110
- A.on("a:popover:afterShow:productDescription_secondary_view_pageState", function(data){
2111
- var featureName = 'productDescription';
2112
- P.now('dpmob-sec-view-instrumentation').execute(function(secViewInstrumentation){
2113
- if(typeof secViewInstrumentation !== "undefined") {
2114
- // Record the end time once the secondary view is shown.
2115
- secViewInstrumentation.recordEndTime(featureName);
2116
- // Post the recorded metrics
2117
- secViewInstrumentation.postMetrics(featureName);
2118
- }
2119
- });
2120
- });
2121
- });
2122
- </script>
2123
- <script type="a-state" data-a-state='{"key":"productDescription_secondary_view_pageState"}'>{"data":"<style>\n#productDescription_fullView ul{\n color:inherit;\n}\n<\/style>\n\n<h1>\n About this item\n<\/h1>\n<div id=\"productDescription_fullView\">\n \n <h3>Review<\/h3>\n <div class=\"a-section a-spacing-large\">\n <p>\n <div>\n <div>\n <p> <i>&quot;I have been programming for 25 years in a variety of hardware and software languages. After reading Seven Languages in Seven Weeks, I am starting to understand how to evaluate languages for their objective strengths and weaknesses. More importantly, I feel as if I could pick one of them to actually get some work done.&quot;<\/i><\/p>\n <\/div>\u2014Chris Kappler, Senior scientist Raytheon, BBN Technologies\n <br />\n <br />\n <div>\n <p> <i>&quot;I spent most of my time as a computer sciences student saying I didn\u2019t want to be a software developer and then became one anyway. Seven Languages in Seven Weeks expanded my way of thinking about problems and reminded me what I love about programming.&quot;<\/i><\/p>\n <\/div>\u2014Travis Kaspar, Software engineer, Northrop Grumman\n <br />\n <br />\n <div>\n <p> <i>&quot;Do you want seven kick starts into learning your \u201clanguage of the year\u201d? Do you want your thinking challenged about programming in general? Look no further than this book. I personally was taken back in time to my undergraduate computer science days, coasting through my programming languages survey course. The difference is that Bruce won\u2019t let you coast through this course! This isn\u2019t a leisurely read\u2014you\u2019ll have to work this book. I believe you\u2019ll find it both mindblowing and intensely practical at the same time.&quot;<\/i><\/p>\n <\/div>\u2014Matt Stine Group leader, Research Application Development, St. Jude Children's Research Hospital\n <\/div>\n<\/p>\n <\/div>\n \n <h3>Product Description<\/h3>\n <div class=\"a-section a-spacing-large\">\n <p>\n <p>You should learn a programming language every year, as recommended by <i>The Pragmatic Programmer<\/i>. But if one per year is good, how about <i>Seven Languages in Seven Weeks<\/i>? In this book you'll get a hands-on tour of Clojure, Haskell, Io, Prolog, Scala, Erlang, and Ruby. Whether or not your favorite language is on that list, you'll broaden your perspective of programming by examining these languages side-by-side. You'll learn something new from each, and best of all, you'll learn how to learn a language quickly.<br /><br />Ruby, Io, Prolog, Scala, Erlang, Clojure, Haskell. With <i>Seven Languages in Seven Weeks,<\/i> by Bruce A. Tate, you'll go beyond the syntax-and beyond the 20-minute tutorial you'll find someplace online. This book has an audacious goal: to present a meaningful exploration of seven languages within a single book. Rather than serve as a complete reference or installation guide, <i>Seven Languages<\/i> hits what's essential and unique about each language. Moreover, this approach will help teach you how to grok new languages.<br /><br />For each language, you'll solve a nontrivial problem, using techniques that show off the language's most important features. As the book proceeds, you'll discover the strengths and weaknesses of the languages, while dissecting the process of learning languages quickly--for example, finding the typing and programming models, decision structures, and how you interact with them.<br /><br />Among this group of seven, you'll explore the most critical programming models of our time. Learn the dynamic typing that makes Ruby, Python, and Perl so flexible and compelling. Understand the underlying prototype system that's at the heart of JavaScript. See how pattern matching in Prolog shaped the development of Scala and Erlang. Discover how pure functional programming in Haskell is different from the Lisp family of languages, including Clojure.<br /><br />Explore the concurrency techniques that are quickly becoming the backbone of a new generation of Internet applications. Find out how to use Erlang's let-it-crash philosophy for building fault-tolerant systems. Understand the actor model that drives concurrency design in Io and Scala. Learn how Clojure uses versioning to solve some of the most difficult concurrency problems.<br /><br />It's all here, all in one place. Use the concepts from one language to find creative solutions in another-or discover a language that may become one of your favorites.<\/p>\n<\/p>\n <\/div>\n \n <h3>About the Author<\/h3>\n <div class=\"a-section a-spacing-large\">\n <p>\n <div>\n <p>Bruce Tate runs RapidRed, an Austin, TX-based practice that consults on lightweight development in Ruby. Previously he worked at IBM in roles ranging from a database systems programmer to Java consultant. He left IBM to work for several startups in roles ranging from Client Solutions Director to CTO. He speaks internationally and is the author of more than ten books, including From Java to Ruby, Deploying Rails Applications, the best-selling Bitter series, Beyond Java, and the Jolt-winning Better, Faster, Lighter Java.<\/p>\n <\/div>\n<\/p>\n <\/div>\n \n \n \n\n\n \n \n \n \n \n \n\n\n\n\n\n\n\n\n \n <style type=\"text/css\">.aplus-v2.mobile .aplus-module-wrapper {\n display: block;\n}\n\n.aplus-v2 img {\n vertical-align: top;\n max-width: 100%;\n}\n\n.aplus-v2.mobile img.apm-middle-image {\n vertical-align: middle;\n}\n\n.aplus-v2.mobile .apm-iconheader {\n display: inline;\n}\n\n.aplus-v2 .apm-tablemodule {\n text-align: left;\n}\n\n.aplus-v2 table.apm-tablemodule-table th {\n padding-bottom: 8px;\n text-align: center;\n}\n\n.aplus-v2 .apm-tablemodule-image {\n background-color: #FFFFFF;\n padding: 0 !important;\n text-align: center;\n overflow: hidden;\n vertical-align: bottom;\n}\n\n.aplus-v2 table.apm-tablemodule-table th {\n padding-bottom: 8px;\n text-align: center;\n}\n\n.aplus-v2 th.apm-tablemodule-keyhead {\n border-top: 1px solid #dddddd;\n padding: 8px 14px 6px !important;\n background-color: #f7f7f7;\n font-weight: normal;\n color: #626262;\n float: none !important;\n margin-right: 0;\n text-align: center;\n min-width: 106px;\n}\n\n.aplus-v2 .apm-tablemodule-keyhead {\n border-right: 1px solid #dddddd;\n}\n\n.aplus-v2 tr.apm-tablemodule-keyvalue td {\n padding-top: 8px !important;\n padding-left: 14px;\n padding-bottom: 8px;\n border-top: 1px solid #dddddd;\n border-bottom: 1px solid #dddddd;\n min-width: 150px;\n}\n\n.aplus-v2 .apm-tablemodule-image {\n background-color: #FFFFFF;\n padding: 0 !important;\n text-align: center;\n overflow: hidden;\n vertical-align: bottom;\n}\n\n.aplus-v2 .apm-tablemodule-imagerows > td > img {\n max-width: none !important;\n}\n\n.aplus-v2 table.apm-tablemodule-table th {\n padding-bottom: 8px;\n text-align: center;\n}\n\n.aplus-v2 .apm-checked {\n text-align: center;\n}\n\n.aplus-v2 .apm-tablemodule-valuecell.selected {\n background-color: #fff5ec;\n}<\/style>\n\n <div class=\"aplus-v2 mobile\">\n <h3>From the manufacturer<\/h3>\n \n \n \n \n\n\n\n \n \n \n\n \n \n \n\n \n \n \n\n\n<div class=\"a-section module-2 aplus-module\">\n <div class=\"a-section aplus-module-wrapper apm-spacing apm-floatnone\">\n <div class=\"a-section apm-sidemodule\">\n <div class=\"a-section a-text-center\">\n \n\n\n\n \n <a class=\"a-link-normal\" target=\"_blank\" href=\"http://g-ecx.images-amazon.com/images/G/01/aplusautomation/vendorimages/44fe4f55-852b-4e6f-a250-5baf2447e7ab.png._CB325508435_.png\">\n <img alt=\"\" src=\"http://g-ecx.images-amazon.com/images/G/01/aplusautomation/vendorimages/44fe4f55-852b-4e6f-a250-5baf2447e7ab.png._CB325508435__SL300__.png\" class=\"a-spacing-mini\">\n <\/a>\n \n \n\n\n <\/div>\n\n <div class=\"a-section\">\n <h3 class=\"a-spacing-mini\">Look for more books in the series<\/h3>\n \n <p>\n Learn Seven Things in Seven Weeks.\n <\/p>\n \n <p>\n Just as each new spoken language can make you smarter and increase your options, each programming language increases your mental tool kit, adding new abstractions you can throw at each new problem. Knowledge is power. The Seven in Seven series builds on that power across many different dimensions. Each chapter in each book walks you through some nontrivial problem with each language, or database, or web server. These books take commitment to read, but their impact can be profound.\n <\/p>\n \n <\/div>\n <\/div>\n <\/div>\n<\/div>\n\n\n\n \n \n \n \n \n \n\n\n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n\n\n<div class=\"a-section module-6 aplus-module last\">\n <div class=\"a-section aplus-module-wrapper\">\n <div class=\"a-section\">\n \n <div class=\"a-section a-text-center\">\n \n\n\n\n \n \n <img alt=\"Seven More Languages in Seven Weeks\" src=\"http://g-ecx.images-amazon.com/images/G/01/aplusautomation/vendorimages/25e4cc92-896d-412a-9abf-cc0b0be722d7.jpeg._CB325505989__SL300__.jpg\" class=\"a-spacing-mini\">\n \n\n\n <\/div>\n\n <h3 class=\"a-spacing-mini\">Seven More Languages in Seven Weeks<\/h3>\n \n <p class=\"a-spacing-base\">\n Great programmers aren&#039;t born--they&#039;re made. The industry is moving from object-oriented languages to functional languages, and you need to commit to radical improvement. New programming languages arm you with the tools and idioms you need to refine your craft. While other language primers take you through basic installation and &#034;Hello, World,&#034; we aim higher. Each language in Seven More Languages in Seven Weeks will take you on a step-by-step journey through the most important paradigms of our time. You&#039;ll learn seven exciting languages: Lua, Factor, Elixir, Elm, Julia, MiniKanren, and Idris\n <\/p>\n \n \n\n \n <div class=\"a-section a-text-center\">\n \n\n\n\n \n \n <img alt=\"Seven Web Frameworks in Seven Weeks\" src=\"http://g-ecx.images-amazon.com/images/G/01/aplusautomation/vendorimages/a591a47f-f9ff-4ef7-8ed8-abe5dc7e7afd.jpeg._CB325506015__SL300__.jpg\" class=\"a-spacing-mini\">\n \n\n\n <\/div>\n\n <h3 class=\"a-spacing-mini\">Seven Databases in Seven Weeks<\/h3>\n \n <p class=\"a-spacing-base\">\n Data is getting bigger and more complex by the day, and so are the choices in handling that data. As a modern application developer you need to understand the emerging field of data management, both RDBMS and NoSQL. Seven Databases in Seven Weeks takes you on a tour of some of the hottest open source databases today. In the tradition of Bruce A. Tate&#039;s Seven Languages in Seven Weeks, this book goes beyond your basic tutorial to explore the essential concepts at the core each technology.\n <\/p>\n \n \n\n \n <div class=\"a-section a-text-center\">\n \n\n\n\n \n \n <img alt=\"\" src=\"http://g-ecx.images-amazon.com/images/G/01/aplusautomation/vendorimages/94adc725-72e9-4f98-947c-2e34d85a23f7.jpeg._CB325506005__SL300__.jpg\" class=\"a-spacing-mini\">\n \n\n\n <\/div>\n\n <h3 class=\"a-spacing-mini\">Seven Web Frameworks in Seven Weeks<\/h3>\n \n <p class=\"a-spacing-base\">\n Whether you need a new tool or just inspiration, Seven Web Frameworks in Seven Weeks explores modern options, giving you a taste of each with ideas that will help you create better apps. You&#039;ll see frameworks that leverage modern programming languages, employ unique architectures, live client-side instead of server-side, or embrace type systems. You&#039;ll see everything from familiar Ruby and JavaScript to the more exotic Erlang, Haskell, and Clojure.\n <\/p>\n \n \n\n \n <div class=\"a-section a-text-center\">\n \n\n\n\n \n \n <img alt=\"Seven Concurrency Models in Seven Weeks\" src=\"http://g-ecx.images-amazon.com/images/G/01/aplusautomation/vendorimages/1cb65528-a4e3-44b7-a760-ab77f797ddd4.jpeg._CB325506000__SL300__.jpg\" class=\"a-spacing-mini\">\n \n\n\n <\/div>\n\n <h3 class=\"a-spacing-mini\">Seven Concurrency Models in Seven Weeks<\/h3>\n \n <p class=\"a-spacing-base\">\n Your software needs to leverage multiple cores, handle thousands of users and terabytes of data, and continue working in the face of both hardware and software failure. Concurrency and parallelism are the keys, and Seven Concurrency Models in Seven Weeks equips you for this new world. See how emerging technologies such as actors and functional programming address issues with traditional threads and locks development. Learn how to exploit the parallelism in your computer&#039;s GPU and leverage clusters of machines with MapReduce and Stream Processing. And do it all with the confidence that comes from using tools that help you write crystal clear, high-quality code.\n <\/p>\n \n \n <\/div>\n <\/div>\n<\/div>\n \n \n \n <\/div>\n\n \n\n \n\n\n\n\n \n<\/div>"}</script>
2124
- </div></div></div></div>
2125
- <div class="a-box feature"><div class="a-box-inner"><div id="featureBulletsAndDetailBullets_feature_div" data-feature-name="featureBulletsAndDetailBullets" data-template-name="featureBulletsAndDetailBullets" class="a-section a-spacing-none"><div class="a-section">
2126
- <span class="a-declarative" data-action="a-secondary-view" data-a-secondary-view='{"backButtonText":"Back","name":"featureBulletsAndDetailBullets_secondary_view_div","data":{"secViewId":"featureBulletsAndDetailBullets_secondary_view_div"}}'>
2127
- <a href="#" class="a-touch-link a-box a-touch-link-noborder"><div class="a-box-inner">
2128
- <i class="a-icon a-icon-touch-link"></i>
2129
- <h3>
2130
- Features &amp; details
2131
- </h3>
2132
- <div id="detailBullets_feature_div">
2133
- <style type="text/css">
2134
- #detailBullets_feature_div a {
2135
- color:#333;
2136
- display:inline;
2137
- }
2138
- #featureBulletsAndDetailBullets_feature_div .a-box-inner {
2139
- padding-left:0px;
2140
- }
2141
- #featureBulletsAndDetailBullets_feature_div .a-icon {
2142
- right:0;
2143
- }
2144
- #detailBullets_feature_div {
2145
- padding:0 2.5em 0 0;
2146
- }
2147
- </style>
2148
- <!-- Show sales rank only in secondary view as long as its a mini app call-->
2149
- <!-- Show customer reviews only in secondary -->
2150
- <div class="a-section">
2151
- <ul class="a-nostyle a-vertical a-spacing-none">
2152
- <li><span class="a-list-item">
2153
- <span class="a-text-bold">
2154
- Publisher:
2155
- </span>
2156
- <span>Pragmatic Bookshelf</span>
2157
- </span></li>
2158
- <li><span class="a-list-item">
2159
- <span class="a-text-bold">
2160
- Publication date:
2161
- </span>
2162
- <span>November 20, 2010</span>
2163
- </span></li>
2164
- <li><span class="a-list-item">
2165
- <span class="a-text-bold">
2166
- Language:
2167
- </span>
2168
- <span>English</span>
2169
- </span></li>
2170
- <li><span class="a-list-item">
2171
- <span class="a-text-bold">
2172
- Product Dimensions:
2173
- </span>
2174
- <span>7.5 x 1.2 x 9.2 inches</span>
2175
- </span></li>
2176
- </ul>
2177
- </div>
2178
- </div>
2179
- </div></a>
2180
- </span>
2181
- <script type="text/javascript">
2182
- P.when('jQuery','A', 'a-popover-base', 'a-popover-ajax').execute(function($, A, popovers, popoverAjax) {
2183
- A.on("a:popover:beforeShow:featureBulletsAndDetailBullets_secondary_view_div", function(data){
2184
- P.now('dpmob-sec-view-instrumentation').execute(function(secViewInstrumentation){
2185
- if(typeof secViewInstrumentation !== "undefined") {
2186
- // Record the click time before showing the secondary view.
2187
- secViewInstrumentation.recordClickTime('featureBulletsAndDetailBullets');
2188
- }
2189
- });
2190
- var popover = data.popover;
2191
- var metaDataMap=popover.data;
2192
- var useStateData = metaDataMap['useStateData'];
2193
- var secViewId = metaDataMap['secViewId'];
2194
- var secViewData;
2195
- if(useStateData){
2196
- var secViewDataMap = A.state(secViewId);
2197
- secViewData = secViewDataMap["data"];
2198
- }else {
2199
- secViewData = $("#"+secViewId).html();
2200
- }
2201
- popover.update(secViewData);
2202
- });
2203
- A.on("a:popover:afterShow:featureBulletsAndDetailBullets_secondary_view_div", function(data){
2204
- var featureName = 'featureBulletsAndDetailBullets';
2205
- P.now('dpmob-sec-view-instrumentation').execute(function(secViewInstrumentation){
2206
- if(typeof secViewInstrumentation !== "undefined") {
2207
- // Record the end time once the secondary view is shown.
2208
- secViewInstrumentation.recordEndTime(featureName);
2209
- // Post the recorded metrics
2210
- secViewInstrumentation.postMetrics(featureName);
2211
- }
2212
- });
2213
- });
2214
- });
2215
- </script>
2216
- <div id="featureBulletsAndDetailBullets_secondary_view_div" class="a-section a-hidden">
2217
- <h1>
2218
- About this item
2219
- </h1>
2220
- <div id="detailBullets_secondary_view_div" class="a-section">
2221
- <h3>
2222
- Product Details
2223
- </h3>
2224
- <style type="text/css">
2225
- #detailBullets_feature_div a {
2226
- color:#333;
2227
- display:inline;
2228
- }
2229
- #featureBulletsAndDetailBullets_feature_div .a-box-inner {
2230
- padding-left:0px;
2231
- }
2232
- #featureBulletsAndDetailBullets_feature_div .a-icon {
2233
- right:0;
2234
- }
2235
- #detailBullets_feature_div {
2236
- padding:0 2.5em 0 0;
2237
- }
2238
- </style>
2239
- <!-- Show sales rank only in secondary view as long as its a mini app call-->
2240
- <!-- Show customer reviews only in secondary -->
2241
- <div class="a-section">
2242
- <ul class="a-nostyle a-vertical a-spacing-none">
2243
- <li><span class="a-list-item">
2244
- <span class="a-text-bold">
2245
- Publisher:
2246
- </span>
2247
- <span>Pragmatic Bookshelf</span>
2248
- </span></li>
2249
- <li><span class="a-list-item">
2250
- <span class="a-text-bold">
2251
- Publication date:
2252
- </span>
2253
- <span>November 20, 2010</span>
2254
- </span></li>
2255
- <li><span class="a-list-item">
2256
- <span class="a-text-bold">
2257
- Language:
2258
- </span>
2259
- <span>English</span>
2260
- </span></li>
2261
- <li><span class="a-list-item">
2262
- <span class="a-text-bold">
2263
- Product Dimensions:
2264
- </span>
2265
- <span>7.5 x 1.2 x 9.2 inches</span>
2266
- </span></li>
2267
- <li><span class="a-list-item">
2268
- <span class="a-text-bold">
2269
- Shipping Weight:
2270
- </span>
2271
- <span>1.5 pounds</span>
2272
- </span></li>
2273
- <li><span class="a-list-item">
2274
- <span class="a-text-bold">
2275
- Book length:
2276
- </span>
2277
- <span>328</span>
2278
- </span></li>
2279
- <li><span class="a-list-item">
2280
- <span class="a-text-bold">
2281
- ISBN-10:
2282
- </span>
2283
- <span>193435659X</span>
2284
- </span></li>
2285
- <li><span class="a-list-item">
2286
- <span class="a-text-bold">
2287
- ISBN-13:
2288
- </span>
2289
- <span>978-1934356593</span>
2290
- </span></li>
2291
- <li><span class="a-list-item">
2292
- <span class="a-text-bold">
2293
- Amazon.com Sales Rank:
2294
- </span>
2295
- 68383
2296
- </span></li>
2297
- </ul>
2298
- </div>
2299
- </div>
2300
- </div>
2301
- </div></div></div></div>
2302
- <div class="a-box feature a-hidden"><div class="a-box-inner"><div id="shippingNotification_feature_div" data-feature-name="shippingNotification" data-template-name="shippingNotification" class="a-section a-spacing-none"></div></div></div>
2303
- <div class="a-box feature a-hidden"><div class="a-box-inner"><div id="awardImages_feature_div" data-feature-name="awardImages" data-template-name="awardImages" class="a-section a-spacing-none"></div></div></div>
2304
- <div class="a-box feature a-hidden"><div class="a-box-inner"><div id="importantInformation_feature_div" data-feature-name="importantInformation" data-template-name="importantInformation" class="a-section a-spacing-none"></div></div></div>
2305
- <div class="a-box feature a-hidden"><div class="a-box-inner"><div id="watchWarranty_feature_div" data-feature-name="watchWarranty" data-template-name="watchWarranty" class="a-section a-spacing-none"></div></div></div>
2306
- </div>
2307
- </div>
2308
- </div>
2309
- <style>
2310
- #aboutThisItem_boxGroup > .a-first.a-last {
2311
- border-radius: 4px 4px 4px 4px;
2312
- }
2313
- </style>
2314
- <script>
2315
- P.when('aboutThisItemDecorator').execute(function(decorator){decorator.decorate();});
2316
- P.when('jQuery','A').execute(function($, A) {
2317
- P.register("dpmob-sec-view-instrumentation", function() {
2318
- // This maintains the mapping between the feature and the number of times the user has clicked on it.
2319
- var featureClickCountHash = {};
2320
- var SEC_VIEW_PREFIX = "dpmob-sec-";
2321
- // ScopeName should be of the form - dpmob-sec-<featureName><clickCount>.
2322
- // ClickCount is added as a suffix counter to differentiate between different clicks from the same landed page.
2323
- var updateAndGetScopeName = function(featureName) {
2324
- var clickCount = 1;
2325
- if(featureName in featureClickCountHash) {
2326
- clickCount = featureClickCountHash[featureName] + 1;
2327
- }
2328
- featureClickCountHash[featureName] = clickCount;
2329
- var scopeName = SEC_VIEW_PREFIX + featureName + clickCount;
2330
- return scopeName;
2331
- }
2332
- var getScopeName = function(featureName) {
2333
- var scopeName;
2334
- if(featureName in featureClickCountHash) {
2335
- var clickCount = featureClickCountHash[featureName];
2336
- scopeName = 'dpmob-sec-' + featureName + clickCount;
2337
- }
2338
- return scopeName;
2339
- }
2340
- var secViewInstrumentation = {
2341
- // Records the click time (should be called just after the click on the sec view).
2342
- recordClickTime : function(featureName) {
2343
- if(typeof featureName !== "undefined") {
2344
- var scopeName = updateAndGetScopeName(featureName);
2345
- if (typeof uet == 'function') {
2346
- uet( "tc", scopeName );
2347
- }
2348
- }
2349
- },
2350
- // Records the end time (should be called, once the secondary view is dispalyed).
2351
- recordEndTime : function(featureName) {
2352
- if(typeof featureName !== "undefined") {
2353
- var scopeName = getScopeName(featureName);
2354
- if (typeof scopeName !== "undefined" && typeof ues == 'function') {
2355
- ues("t0", scopeName, new Date());
2356
- ues("ctb", scopeName, "1");
2357
- }
2358
- }
2359
- },
2360
- postMetrics : function(featureName) {
2361
- if(typeof featureName !== "undefined") {
2362
- var scopeName = getScopeName(featureName);
2363
- if(typeof scopeName !== "undefined") {
2364
- // Create a dummy ajax request to generate requestId
2365
- // and record pageType and subPageType in server side query logs.
2366
- var url = "/gp/product/mobile/secondary-view/ajax-measurement.html?featureName="+featureName;
2367
- $.ajax({url:url ,
2368
- dataType:'text',
2369
- timeout: 40000,
2370
- error: function() {
2371
- },
2372
- success: function(data, status, xhr) {
2373
- // post the metrics
2374
- ues( "id", scopeName, data );
2375
- uet( "be", scopeName );
2376
- uex( "ld", scopeName );
2377
- }
2378
- });
2379
- // Post count metrics.
2380
- // This records overall click count on the feature
2381
- this.addCount(SEC_VIEW_PREFIX + featureName, 1);
2382
- // This records how much times a feature was clicked once or twice etc.
2383
- this.addCount(scopeName, 1);
2384
- }
2385
- }
2386
- },
2387
- // Making it available publicly, so that it can be used independent of above func
2388
- addCount : function(counterKey, value) {
2389
- // See http://w?ClientSideMetrics/UserDocs/Instrumentation/ClientSideCounters for more details
2390
- var ue = window.ue;
2391
- var existingValue = ue.count(counterKey) || 0;
2392
- ue.count(counterKey, existingValue + value);
2393
- }
2394
- }
2395
- return secViewInstrumentation;
2396
- });
2397
- });
2398
- </script>
2399
- </div>
2400
- <script type="text/javascript">
2401
- setCSMReq('cf');
2402
- setCSMReq('cf');
2403
- </script><div id="sims-purchase" class="a-section a-spacing-large">
2404
- <h2 class="a-spacing-micro">Customers who bought this also bought</h2>
2405
- <span class="aok-offscreen">This shopping feature will continue to load items. In order to navigate out of this carousel please use your heading shortcut key to navigate to the next or previous heading.</span>
2406
- <div class="p13n-sc-carousel" data-ajax-params='{"auiDeviceType":"mobile","featureId":"SimilaritiesMobileCarousel","reftagPrefix":"pd_aw_sim_14","productDetailsTemplateClass":"PI::P13N::ViewTemplates::ProductDetails::Phone::Base","widgetTemplateClass":"PI::P13N::ViewTemplates::Carousel::Phone","faceoutTemplateClass":"PI::P13N::ViewTemplates::Product::Phone::CarouselFaceout"}' data-ajax-url="/gp/p13n-shared/faceout-partial/184-9743298-0728138" data-asin-index="9" data-asins="1941222153,1934356921,1937785653,020161622X,1937785637,1937785580,0136073476,1937785335,0123745144,0486478831,1934356050,0131395319,193435645X,1934356344,1449394701,0201657880,0735611319,0262560992,1617291412,1593272839,0137081073,0262510871,1617290653,098478280X,0735619670,1937785491,0321826620,1617292397,1934356867,1680500414,0596007124,1937785475,0201835959,0978739213,0130092290,1941222226,1617290572,1680500384,1449360726,1941222374,1449329276,1593274351,193778553X,1593272812,0132350882,0201485672,1491904194,0471137723,193398838X,0073523356,1449316387,1934356727,1449365515,0981531644,0486678709,026256100X,1593275676,0321905636,1617290750,1933988177,0321942043,0321774094,0521663504,0321146530,1491950358,1435712757,1491903996,0321721330,1491912766,0321842685,0131177052,0262562146,0596514980,0321774639,1449302440,0134190440,1449358454,0133769402,1118063333,0201633612,0130465534,1935182706,0133708756,0324782012,1449369995,1466560010,0134034287,0321125215,149190142X,0321127420,0132856204,1484200772,0596517742,193398869X,1617291994,1449364829,1937785734,1491905018,0996128107,0805071660">
2407
- <div class="p13n-sc-carousel-content">
2408
- <div class="p13n-sc-carousel-item" style="left: 0px;">
2409
- <a class="a-link-normal" href="/gp/aw/d/1941222153/ref=pd_aw_sim_14_1/184-9743298-0728138?refRID=1VGN4TEE63ST5RTPH4EJ">
2410
- <div class="a-row a-spacing-micro">
2411
- <div class="p13n-sc-lazy-loaded-img">
2412
- <img alt="Seven More Languages in Seven Weeks: Languages That Are Shaping the Future" src="https://images-na.ssl-images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V192234675_.gif" class="a-dynamic-image" height="115" width="96" data-a-dynamic-image='{"http://ecx.images-amazon.com/images/I/51t-byUGJeL._AC_UL345_SR288,345_.jpg":[345,288],"http://ecx.images-amazon.com/images/I/51t-byUGJeL._AC_UL230_SR192,230_.jpg":[230,192],"http://ecx.images-amazon.com/images/I/51t-byUGJeL._AC_UL115_SR96,115_.jpg":[115,96]}' data-a-manual-replacement="1">
2413
- </div>
2414
- </div>
2415
- <div class="a-row"><div aria-hidden="true"><span title="Seven More Languages in Seven Weeks: Languages That Are Shaping the Future">Seven More Languages in…</span></div></div>
2416
- <div class="a-icon-row a-spacing-none">
2417
- <i class="a-icon a-icon-star a-star-4"><span class="a-icon-alt">4.0 out of 5 stars</span></i>
2418
- </div>
2419
- <div class="a-row"><span class="a-color-secondary">4 reviews</span></div>
2420
- <div class="a-row"><span class="a-color-secondary"><span class="a-size-base a-color-price">$27.26</span> <span style="position: relative; top: 2px;"><i class="a-icon a-icon-prime a-icon-small" role="img" aria-label="Prime"></i></span></span></div>
2421
- </a>
2422
- </div>
2423
- <div class="p13n-sc-carousel-item" style="left: 140px;">
2424
- <a class="a-link-normal" href="/gp/aw/d/1934356921/ref=pd_aw_sim_14_2/184-9743298-0728138?refRID=1VGN4TEE63ST5RTPH4EJ">
2425
- <div class="a-row a-spacing-micro">
2426
- <div class="p13n-sc-lazy-loaded-img">
2427
- <img alt="Seven Databases in Seven Weeks: A Guide to Modern Databases and the NoSQL Movement" src="https://images-na.ssl-images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V192234675_.gif" class="a-dynamic-image" height="115" width="93" data-a-dynamic-image='{"http://ecx.images-amazon.com/images/I/41rYtcbzOUL._AC_UL230_SR186,230_.jpg":[230,186],"http://ecx.images-amazon.com/images/I/41rYtcbzOUL._AC_UL115_SR93,115_.jpg":[115,93],"http://ecx.images-amazon.com/images/I/41rYtcbzOUL._AC_UL345_SR279,345_.jpg":[345,279]}' data-a-manual-replacement="1">
2428
- </div>
2429
- </div>
2430
- <div class="a-row"><div aria-hidden="true"><span title="Seven Databases in Seven Weeks: A Guide to Modern Databases and the NoSQL Movement">Seven Databases in Seven…</span></div></div>
2431
- <div class="a-icon-row a-spacing-none">
2432
- <i class="a-icon a-icon-star a-star-4-5"><span class="a-icon-alt">4.5 out of 5 stars</span></i>
2433
- </div>
2434
- <div class="a-row"><span class="a-color-secondary">37 reviews</span></div>
2435
- <div class="a-row"><span class="a-color-secondary"><span class="a-size-base a-color-price">$32.27</span> <span style="position: relative; top: 2px;"><i class="a-icon a-icon-prime a-icon-small" role="img" aria-label="Prime"></i></span></span></div>
2436
- </a>
2437
- </div>
2438
- <div class="p13n-sc-carousel-item" style="left: 280px;">
2439
- <a class="a-link-normal" href="/gp/aw/d/1937785653/ref=pd_aw_sim_14_3/184-9743298-0728138?refRID=1VGN4TEE63ST5RTPH4EJ">
2440
- <div class="a-row a-spacing-micro">
2441
- <div class="p13n-sc-lazy-loaded-img">
2442
- <img alt="Seven Concurrency Models in Seven Weeks: When Threads Unravel (The Pragmatic Programmers)" src="https://images-na.ssl-images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V192234675_.gif" class="a-dynamic-image" height="115" width="93" data-a-dynamic-image='{"http://ecx.images-amazon.com/images/I/41U8py1NCcL._AC_UL230_SR186,230_.jpg":[230,186],"http://ecx.images-amazon.com/images/I/41U8py1NCcL._AC_UL345_SR279,345_.jpg":[345,279],"http://ecx.images-amazon.com/images/I/41U8py1NCcL._AC_UL115_SR93,115_.jpg":[115,93]}' data-a-manual-replacement="1">
2443
- </div>
2444
- </div>
2445
- <div class="a-row"><div aria-hidden="true"><span title="Seven Concurrency Models in Seven Weeks: When Threads Unravel (The Pragmatic Programmers)">Seven Concurrency Models…</span></div></div>
2446
- <div class="a-icon-row a-spacing-none">
2447
- <i class="a-icon a-icon-star a-star-4-5"><span class="a-icon-alt">4.6 out of 5 stars</span></i>
2448
- </div>
2449
- <div class="a-row"><span class="a-color-secondary">20 reviews</span></div>
2450
- <div class="a-row"><span class="a-color-secondary"><span class="a-size-base a-color-price">$36.10</span> <span style="position: relative; top: 2px;"><i class="a-icon a-icon-prime a-icon-small" role="img" aria-label="Prime"></i></span></span></div>
2451
- </a>
2452
- </div>
2453
- <div class="p13n-sc-carousel-item" style="left: 420px;">
2454
- <a class="a-link-normal" href="/gp/aw/d/020161622X/ref=pd_aw_sim_14_4/184-9743298-0728138?refRID=1VGN4TEE63ST5RTPH4EJ">
2455
- <div class="a-row a-spacing-micro">
2456
- <div class="p13n-sc-lazy-loaded-img">
2457
- <img alt="The Pragmatic Programmer: From Journeyman to Master" src="https://images-na.ssl-images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V192234675_.gif" class="a-dynamic-image" height="115" width="92" data-a-dynamic-image='{"http://ecx.images-amazon.com/images/I/41BKx1AxQWL._AC_UL345_SR276,345_.jpg":[345,276],"http://ecx.images-amazon.com/images/I/41BKx1AxQWL._AC_UL230_SR184,230_.jpg":[230,184],"http://ecx.images-amazon.com/images/I/41BKx1AxQWL._AC_UL115_SR92,115_.jpg":[115,92]}' data-a-manual-replacement="1">
2458
- </div>
2459
- </div>
2460
- <div class="a-row"><div aria-hidden="true"><span title="The Pragmatic Programmer: From Journeyman to Master">The Pragmatic Programmer…</span></div></div>
2461
- <div class="a-icon-row a-spacing-none">
2462
- <i class="a-icon a-icon-star a-star-4-5"><span class="a-icon-alt">4.5 out of 5 stars</span></i>
2463
- </div>
2464
- <div class="a-row"><span class="a-color-secondary">281 reviews</span></div>
2465
- <div class="a-row"><span class="a-color-secondary"><span class="a-size-base a-color-price">$32.95</span> <span style="position: relative; top: 2px;"><i class="a-icon a-icon-prime a-icon-small" role="img" aria-label="Prime"></i></span></span></div>
2466
- </a>
2467
- </div>
2468
- <div class="p13n-sc-carousel-item" style="left: 560px;">
2469
- <a class="a-link-normal" href="/gp/aw/d/1937785637/ref=pd_aw_sim_14_5/184-9743298-0728138?refRID=1VGN4TEE63ST5RTPH4EJ">
2470
- <div class="a-row a-spacing-micro">
2471
- <div class="p13n-sc-lazy-loaded-img">
2472
- <img alt="Seven Web Frameworks in Seven Weeks: Adventures in Better Web Apps (Pragmatic Programmers)" src="https://images-na.ssl-images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V192234675_.gif" class="a-dynamic-image" height="115" width="96" data-a-dynamic-image='{"http://ecx.images-amazon.com/images/I/51qlO9JuczL._AC_UL345_SR288,345_.jpg":[345,288],"http://ecx.images-amazon.com/images/I/51qlO9JuczL._AC_UL115_SR96,115_.jpg":[115,96],"http://ecx.images-amazon.com/images/I/51qlO9JuczL._AC_UL230_SR192,230_.jpg":[230,192]}' data-a-manual-replacement="1">
2473
- </div>
2474
- </div>
2475
- <div class="a-row"><div aria-hidden="true"><span title="Seven Web Frameworks in Seven Weeks: Adventures in Better Web Apps (Pragmatic Programmers)">Seven Web Frameworks in…</span></div></div>
2476
- <div class="a-icon-row a-spacing-none">
2477
- <i class="a-icon a-icon-star a-star-4"><span class="a-icon-alt">4.0 out of 5 stars</span></i>
2478
- </div>
2479
- <div class="a-row"><span class="a-color-secondary">4 reviews</span></div>
2480
- <div class="a-row"><span class="a-color-secondary"><span class="a-size-base a-color-price">$27.26</span> <span style="position: relative; top: 2px;"><i class="a-icon a-icon-prime a-icon-small" role="img" aria-label="Prime"></i></span></span></div>
2481
- </a>
2482
- </div>
2483
- <div class="p13n-sc-carousel-item" style="left: 700px;">
2484
- <a class="a-link-normal" href="/gp/aw/d/1937785580/ref=pd_aw_sim_14_6/184-9743298-0728138?refRID=1VGN4TEE63ST5RTPH4EJ">
2485
- <div class="a-row a-spacing-micro">
2486
- <div class="p13n-sc-lazy-loaded-img">
2487
- <img alt="Programming Elixir: Functional |&gt; Concurrent |&gt; Pragmatic |&gt; Fun" src="https://images-na.ssl-images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V192234675_.gif" class="a-dynamic-image" height="115" width="93" data-a-dynamic-image='{"http://ecx.images-amazon.com/images/I/51WfjWglDsL._AC_UL345_SR279,345_.jpg":[345,279],"http://ecx.images-amazon.com/images/I/51WfjWglDsL._AC_UL115_SR93,115_.jpg":[115,93],"http://ecx.images-amazon.com/images/I/51WfjWglDsL._AC_UL230_SR186,230_.jpg":[230,186]}' data-a-manual-replacement="1">
2488
- </div>
2489
- </div>
2490
- <div class="a-row"><div aria-hidden="true"><span title="Programming Elixir: Functional |&gt; Concurrent |&gt; Pragmatic |&gt; Fun">Programming Elixir…</span></div></div>
2491
- <div class="a-icon-row a-spacing-none">
2492
- <i class="a-icon a-icon-star a-star-5"><span class="a-icon-alt">4.8 out of 5 stars</span></i>
2493
- </div>
2494
- <div class="a-row"><span class="a-color-secondary">15 reviews</span></div>
2495
- <div class="a-row"><span class="a-color-secondary"><span class="a-size-base a-color-price">$34.20</span> <span style="position: relative; top: 2px;"><i class="a-icon a-icon-prime a-icon-small" role="img" aria-label="Prime"></i></span></span></div>
2496
- </a>
2497
- </div>
2498
- <div class="p13n-sc-carousel-item" style="left: 840px;">
2499
- <a class="a-link-normal" href="/gp/aw/d/0136073476/ref=pd_aw_sim_14_7/184-9743298-0728138?refRID=1VGN4TEE63ST5RTPH4EJ">
2500
- <div class="a-row a-spacing-micro">
2501
- <div class="p13n-sc-lazy-loaded-img">
2502
- <img alt="Concepts of Programming Languages (9th Edition)" src="https://images-na.ssl-images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V192234675_.gif" class="a-dynamic-image" height="115" width="98" data-a-dynamic-image='{"http://ecx.images-amazon.com/images/I/514SaJB2WhL._AC_UL230_SR196,230_.jpg":[230,196],"http://ecx.images-amazon.com/images/I/514SaJB2WhL._AC_UL115_SR98,115_.jpg":[115,98],"http://ecx.images-amazon.com/images/I/514SaJB2WhL._AC_UL345_SR294,345_.jpg":[345,294]}' data-a-manual-replacement="1">
2503
- </div>
2504
- </div>
2505
- <div class="a-row"><div aria-hidden="true"><span title="Concepts of Programming Languages (9th Edition)">Concepts of Programming…</span></div></div>
2506
- <div class="a-icon-row a-spacing-none">
2507
- <i class="a-icon a-icon-star a-star-3-5"><span class="a-icon-alt">3.3 out of 5 stars</span></i>
2508
- </div>
2509
- <div class="a-row"><span class="a-color-secondary">37 reviews</span></div>
2510
- </a>
2511
- </div>
2512
- <div class="p13n-sc-carousel-item" style="left: 980px;">
2513
- <a class="a-link-normal" href="/gp/aw/d/1937785335/ref=pd_aw_sim_14_8/184-9743298-0728138?refRID=1VGN4TEE63ST5RTPH4EJ">
2514
- <div class="a-row a-spacing-micro">
2515
- <div class="p13n-sc-lazy-loaded-img">
2516
- <img alt="Good Math: A Geek's Guide to the Beauty of Numbers, Logic, and Computation (Pragmatic Programmers)" src="https://images-na.ssl-images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V192234675_.gif" class="a-dynamic-image" height="115" width="77" data-a-dynamic-image='{"http://ecx.images-amazon.com/images/I/41f3XfYE31L._AC_UL345_SR231,345_.jpg":[345,231],"http://ecx.images-amazon.com/images/I/41f3XfYE31L._AC_UL115_SR77,115_.jpg":[115,77],"http://ecx.images-amazon.com/images/I/41f3XfYE31L._AC_UL230_SR154,230_.jpg":[230,154]}' data-a-manual-replacement="1">
2517
- </div>
2518
- </div>
2519
- <div class="a-row"><div aria-hidden="true"><span title="Good Math: A Geek's Guide to the Beauty of Numbers, Logic, and Computation (Pragmatic Programmers)">Good Math: A Geek's Guide…</span></div></div>
2520
- <div class="a-icon-row a-spacing-none">
2521
- <i class="a-icon a-icon-star a-star-4"><span class="a-icon-alt">4.2 out of 5 stars</span></i>
2522
- </div>
2523
- <div class="a-row"><span class="a-color-secondary">13 reviews</span></div>
2524
- <div class="a-row"><span class="a-color-secondary"><span class="a-size-base a-color-price">$24.74</span> <span style="position: relative; top: 2px;"><i class="a-icon a-icon-prime a-icon-small" role="img" aria-label="Prime"></i></span></span></div>
2525
- </a>
2526
- </div>
2527
- <div class="p13n-sc-carousel-item" style="left: 1120px;">
2528
- <a class="a-link-normal" href="/gp/aw/d/0123745144/ref=pd_aw_sim_14_9/184-9743298-0728138?refRID=1VGN4TEE63ST5RTPH4EJ">
2529
- <div class="a-row a-spacing-micro">
2530
- <div class="p13n-sc-lazy-loaded-img">
2531
- <img alt="Programming Language Pragmatics, Third Edition" src="https://images-na.ssl-images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V192234675_.gif" class="a-dynamic-image" height="115" width="93" data-a-dynamic-image='{"http://ecx.images-amazon.com/images/I/51TvuWQBKnL._AC_UL115_SR93,115_.jpg":[115,93],"http://ecx.images-amazon.com/images/I/51TvuWQBKnL._AC_UL345_SR279,345_.jpg":[345,279],"http://ecx.images-amazon.com/images/I/51TvuWQBKnL._AC_UL230_SR186,230_.jpg":[230,186]}' data-a-manual-replacement="1">
2532
- </div>
2533
- </div>
2534
- <div class="a-row"><div aria-hidden="true"><span title="Programming Language Pragmatics, Third Edition">Programming Language…</span></div></div>
2535
- <div class="a-icon-row a-spacing-none">
2536
- <i class="a-icon a-icon-star a-star-4-5"><span class="a-icon-alt">4.3 out of 5 stars</span></i>
2537
- </div>
2538
- <div class="a-row"><span class="a-color-secondary">23 reviews</span></div>
2539
- <div class="a-row"><span class="a-color-secondary"><span class="a-size-base a-color-price">$49.91</span> <span style="position: relative; top: 2px;"><i class="a-icon a-icon-prime a-icon-small" role="img" aria-label="Prime"></i></span></span></div>
2540
- </a>
2541
- </div>
2542
- <div class="p13n-sc-carousel-item" style="left: 1260px;">
2543
- <a class="a-link-normal" href="/gp/aw/d/0486478831/ref=pd_aw_sim_14_10/184-9743298-0728138?refRID=1VGN4TEE63ST5RTPH4EJ">
2544
- <div class="a-row a-spacing-micro">
2545
- <div class="p13n-sc-lazy-loaded-img">
2546
- <img alt="An Introduction to Functional Programming Through Lambda Calculus (Dover Books on Mathematics)" src="https://images-na.ssl-images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V192234675_.gif" class="a-dynamic-image" height="115" width="81" data-a-dynamic-image='{"http://ecx.images-amazon.com/images/I/51UQ3e1idJL._AC_UL115_SR81,115_.jpg":[115,81],"http://ecx.images-amazon.com/images/I/51UQ3e1idJL._AC_UL345_SR243,345_.jpg":[345,243],"http://ecx.images-amazon.com/images/I/51UQ3e1idJL._AC_UL230_SR162,230_.jpg":[230,162]}' data-a-manual-replacement="1">
2547
- </div>
2548
- </div>
2549
- <div class="a-row"><div aria-hidden="true"><span title="An Introduction to Functional Programming Through Lambda Calculus (Dover Books on Mathematics)">An Introduction to…</span></div></div>
2550
- <div class="a-icon-row a-spacing-none">
2551
- <i class="a-icon a-icon-star a-star-4-5"><span class="a-icon-alt">4.5 out of 5 stars</span></i>
2552
- </div>
2553
- <div class="a-row"><span class="a-color-secondary">19 reviews</span></div>
2554
- <div class="a-row"><span class="a-color-secondary"><span class="a-size-base a-color-price">$19.43</span> <span style="position: relative; top: 2px;"><i class="a-icon a-icon-prime a-icon-small" role="img" aria-label="Prime"></i></span></span></div>
2555
- </a>
2556
- </div>
2557
- </div>
2558
- </div>
2559
- </div>
2560
- <div id="sponsoredProducts_feature_div" data-feature-name="sponsoredProducts" data-template-name="sponsoredProducts" class="a-section a-spacing-none">
2561
- </div>
2562
- <div class="aw-campaigns">
2563
- <style>@media screen and (max-width:240px){ div[id$=mobile-ads-unit-wrapper]{ width:auto !important;margin-left:auto !important;left:auto !important} div[id$=mobile-ads-adv-text-wrapper]{ width:auto !important;margin-left:auto !important;left:auto !important}}@media screen and (orientation:landscape){ [id$=mobile-ads-unit-wrapper]{ max-width:414px !important;margin:auto !important} [id$=mobile-ads-adv-text-wrapper]{ max-width:414px !important;margin:auto !important}}</style> <div id="ns_1VGN4TEE63ST5RTPH4EJ_14544_mobile-ads-unit-wrapper" style="position:relative; text-align:center; margin-left: -14px; margin-right: -14px; height: auto;"> <div id="ns_1VGN4TEE63ST5RTPH4EJ_14544_mobile-ads-unit-placement"> <script id="ns_1VGN4TEE63ST5RTPH4EJ_14544_mobile-ads-unit-temp-holder" type="text/html">
2564
- &lt;a href=&#39;http://aax-us-east.amazon-adsystem.com/x/c/QcgmUbKxMyNlEz4BtAGZHioAAAFN99rKNgEAAAGQReGNuw/http://pda-bes.amazon.com/c?i=1$AgAAAAAAAAAEAAAAAAAAAAMAAAAA2TZhzPSGDr.tDd2HH-vyKHofvQiJ-ebOWjRje.uvDXXngRQBs7ESeR2rEuNuIcqVCw11lYeUNF8-e8AFhMzeShmFhKv4sdvmAgBni0348i2y1eeLO0IrdqBBieUwbQYGspRtOc.8RbglP34TShpEPZHOWSEOz-ANH9Y3e8FkytppfJwpJAaWL-PdXqqj9Ohv-eMv-1nuZPbZr-FfZtmWEd5jH4VyOkG-raxqk7kUgf8u5uwHQTOTgABmmTSZarqqCbxepOXilecEn3jf2fHJVeTA1gQvJoVnMCYBpNZ.tJtBJnrNAc81N00ooECzLjHhf7iDe4Aa8kmMn7nyGe0qf6WxGr-ANRotS5dUh01wHnHA85zTION9Zud.ORcTyWSFvz31WZI-EvOv6pkn8S2dUBh7JYIlFb0qzZ-trpmZfVdg5KVmanTP5x75ikwR1b15IVqbozCnEVng8TCXw4wWVhgWGVr4XEa1by3ZOJP3dR236S0E80GShlyUekD7AvxFgyCA6CqWrVPY8Qt.2pdG0Kfyy1KIcS.IW8lIZhW7ORJY0ezb8zOtwcDSG19zikI1BcV8HIOu-lQUyMyLB5uD6OsNNFkhmmIqRu4OdezcAVidX0mA6Ar6DkhQnWxQrcDu1.0yxp2BKw5n5ORJYhfGD3fkA2C-HL4k7e8iNVanKW-seMI4tBpRxCgJ06dntypzhYmwuV-ZEraQh7.NxQFnaZucpcienqb80ulNTpJmbh-E1Mkvovruepy9x.MWoN2IFsLNYiaiXKO4qddUcbCve3utHVyT0vgIa-X-eGpUW-o8aWZk0q6coFScgkVkp2Vlxi161OMzvLPJg7yzXRVUaR4Eky0RdBMK3m5faqu4z.gwzRSIGpqduPJoW97ANVYo1JZsRLZ47H698Zvt4Zlu0mao1KjOoMhKvAcKwfd6vWY1LtvixsI23BaW77Apq-LLyqcs8BopYrF5KnfSbw4.G6EmWubxRBNZ5qnDJy7a4KMj9xP1dZSu5t9z.jF0lk1CaJRHfaWIKLgVvQutQQQfo2M65YZlyDozv4lNF.KSmYeNu-QerAeeSOq5kZrwaBT97EbfbiMPa7uT-foeR2CT5qUDaAopZFXsLAXbqV4CKcWAeBEWHxgSkvkGYAerOeZjvXujs3UX2q7soHngCeKuM5GE4UamN67IUmPTinWG-eEELrt15S6iJ3CydrW63f3dM6CaIx7SfduVWBO6vWlx9Cv6HhzZoX29VoudOq6SpT6yCC0ML5NoLKV0jkJGBgkhJEtYvldDIUymKAnvR6rAeTq74b8z-vIFJcTCHT5xRJlLR3Iet1MrS24v3Vh1LUGpXJh1t6Ik9TKTE2XNxKW6.d6v5xhaZUHZp6H7UiOs1RvR0JqH32se2uBREOHgkmm2jFE-Ig__&#39; target=&quot;_top&quot;&gt;&lt;img src=&quot;http://d2o307dm5mqftz.cloudfront.net/1506277001/1425550710291/AMAN_320x50_ACC_V340905430.jpg&quot; style=&quot;width:100%; height:auto;&quot;/&gt;&lt;/a&gt;
2565
- &lt;script id=&quot;iframe_script&quot; type=&quot;html/text&quot;&gt;
2566
- // &lt;!-- Ad Id: 6240433369110 --&gt;
2567
- // &lt;!-- Creative Id: 7087302769370 --&gt;
2568
- document.mobileAds = document.mobileAds || {};
2569
- document.mobileAds[&#39;creativeId&#39;] = &quot;7087302769370&quot;;
2570
- document.mobileAds[&#39;adId&#39;] = &quot;6240433369110&quot;;
2571
- &lt;/script&gt;
2572
- &lt;img src=&quot;//:0&quot; style=&quot;display:none;&quot; onerror=&quot;
2573
- setTimeout(function(){
2574
- eval(document.getElementById(&#39;iframe_script&#39;).innerHTML);
2575
- }, 0);
2576
- &quot;/&gt;
2577
- &lt;!-- creativeModDate = 1425557345000 --&gt;&lt;img src=&quot;http://aax-us-east.amazon-adsystem.com/e/loi/imp?b=IESM6SbvAk6cl9Zv86mYcuUAAAFN99rKVgEAAAGQEWxGQw&quot; style=&quot;position:absolute; width:1px; height:1px;&quot; onload=&quot;try { window.uex = window.uex || parent.uex } catch (e) {} if (typeof uex == &#39;function&#39;) {uex(&#39;ld&#39;, &#39;mobileadsssimpressions_ma_detail_ma_detail-mWeb_ma_btf&#39;, {wb: 1});}&quot; /&gt; </script> <iframe id="ma_detail_ma_detail-mWeb_ma_btf_frame" frameborder="0" scrolling="no" marginwidth="0" marginheight="0" sandbox="allow-scripts allow-same-origin allow-top-navigation" style="position:relative; width:100%; max-height:65px;"></iframe> </div>
2578
- </div> <script>(function() { var hasAdView = false; var hasGroupMAdView = false; var hasIABAdView = false; measureAdViewability(); if (hasAdView && hasGroupMAdView && hasIABAdView) {return; } var viewabilityTracker = debounce(measureAdViewability, 20); window.addEventListener("scroll", viewabilityTracker); function measureAdViewability() {var placementDiv = document.getElementById('ns_1VGN4TEE63ST5RTPH4EJ_14544_mobile-ads-unit-placement');if (placementDiv == null || placementDiv.offsetHeight == 0) { return;}function getDistanceToTop(element) { var offset = element.offsetTop; if (element.offsetParent != null) {offset += getDistanceToTop(element.offsetParent); } return offset;}var offsetTop = getDistanceToTop(placementDiv);var offsetHeight = placementDiv.offsetHeight;if (!hasAdView && (window.scrollY + window.innerHeight > offsetTop) && (window.scrollY < offsetTop + offsetHeight)) { if (typeof uex == 'function') {uex('ld', 'mobileadsssviewability_ma_detail_ma_detail-mWeb_ma_btf', {wb: 1}); } hasAdView = true;}if (!hasGroupMAdView && (window.scrollY + window.innerHeight >= offsetTop + offsetHeight) && (window.scrollY <= offsetTop)) { if (typeof uex == 'function') {uex('ld', 'mobileadsssfullviewability_ma_detail_ma_detail-mWeb_ma_btf', {wb: 1}); } hasGroupMAdView = true;}function halfViewCheck() { return !hasIABAdView && (window.scrollY + window.innerHeight > offsetTop + offsetHeight / 2) && (window.scrollY < offsetTop + offsetHeight / 2);}if (halfViewCheck()) { setTimeout(function(){if (halfViewCheck()) { if (typeof uex == 'function') {uex('ld', 'mobileadssshalfviewability_ma_detail_ma_detail-mWeb_ma_btf', {wb: 1}); } hasIABAdView = true;} }, 1000);} } function debounce(func, wait, immediate) {var timeout;return function() { var context = this, args = arguments; var later = function() {timeout = null;if (!immediate) { func.apply(context, args);} }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) {func.apply(context, args); }}; }})(); </script><script id="renderAdUnit_script" type="text/html"> function ns_1VGN4TEE63ST5RTPH4EJ_14544_injectAdInIFrame($$) {var iframe = document.getElementById('ma_detail_ma_detail-mWeb_ma_btf_frame');var tempHolder = document.getElementById('ns_1VGN4TEE63ST5RTPH4EJ_14544_mobile-ads-unit-temp-holder');if(iframe == null || tempHolder == null) { return;}var iframeDocument = iframe.contentDocument;iframeDocument.open('text/html', 'replace');var content = document.createElement('textarea'); content.innerHTML = tempHolder.text;iframeDocument.write(content.value);iframeDocument.close(); } function ns_1VGN4TEE63ST5RTPH4EJ_14544_executeWhenVisible(handler) { if (!document.hidden) {handler(); } else { function ns_1VGN4TEE63ST5RTPH4EJ_14544_uexld(prefix) {if (typeof uex == 'function') { uex('ld', prefix + ':' + 'ma_detail_ma_detail-mWeb_ma_btf', {wb: 1});} }ns_1VGN4TEE63ST5RTPH4EJ_14544_uexld('mobileadsssprerender');document.addEventListener('visibilitychange', function visibilityHandler() { handler(); document.removeEventListener('visibilitychange', visibilityHandler);}, false); } } var ns_1VGN4TEE63ST5RTPH4EJ_14544_pageLoaded = false; var ns_1VGN4TEE63ST5RTPH4EJ_14544_adLoaded = false; var ns_1VGN4TEE63ST5RTPH4EJ_14544_renderAd = function($$) {var tempHolder = document.getElementById("ns_1VGN4TEE63ST5RTPH4EJ_14544_mobile-ads-unit-temp-holder");if (tempHolder == null) { return; }tempHolder = tempHolder.text.replace(/&quot;/g, '"').replace(/&#39;/g, "'").replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&'); ns_1VGN4TEE63ST5RTPH4EJ_14544_injectAdInIFrame(); function resizeIframeAd() { var adHeight, adWidth; if (window.innerHeight < window.innerWidth) {adHeight = '414' * '50' / '320' + 'px';adWidth = '414' + 'px'; } else {adHeight = window.innerWidth * '50' / '320' + 'px';adWidth = window.innerWidth + 'px'; } document.getElementById('ns_1VGN4TEE63ST5RTPH4EJ_14544_mobile-ads-unit-placement').style.height = adHeight; document.getElementById('ma_detail_ma_detail-mWeb_ma_btf_frame').style.height = adHeight; document.getElementById('ma_detail_ma_detail-mWeb_ma_btf_frame').style.width = adWidth;}resizeIframeAd();window.addEventListener('resize', resizeIframeAd); var adUnitWrapper = document.getElementById("ns_1VGN4TEE63ST5RTPH4EJ_14544_mobile-ads-unit-wrapper"); adUnitWrapper.insertAdjacentHTML('afterend', '<div id="ns_1VGN4TEE63ST5RTPH4EJ_14544_mobile-ads-adv-text-wrapper" style="position:relative; text-align:center; margin-left: -14px; margin-right: -14px; height: auto;" > <div id="ns_1VGN4TEE63ST5RTPH4EJ_14544_mobile-ads-adv-text" style="font-size: 10px; color: #555; text-align: right; margin: 0px 3px 6px 0;" >Advertisement</div></div> ');uex('ld', 'mobileadsssrenderad_ma_detail_ma_detail-mWeb_ma_btf', {wb: 1});ns_1VGN4TEE63ST5RTPH4EJ_14544_adLoaded = true; }; var ns_1VGN4TEE63ST5RTPH4EJ_14544_prevOnLoad = window.onload;var ns_1VGN4TEE63ST5RTPH4EJ_14544_onLoadHandler = function() { ns_1VGN4TEE63ST5RTPH4EJ_14544_pageLoaded = true; ns_1VGN4TEE63ST5RTPH4EJ_14544_executeWhenVisible(ns_1VGN4TEE63ST5RTPH4EJ_14544_renderAd); };var ns_1VGN4TEE63ST5RTPH4EJ_14544_lazyLoadTimeoutHandler = function() { ns_1VGN4TEE63ST5RTPH4EJ_14544_onLoadHandler(); };var ns_1VGN4TEE63ST5RTPH4EJ_14544_lazyLoadWithoutAui = function() { if (document.readyState === 'complete') {ns_1VGN4TEE63ST5RTPH4EJ_14544_lazyLoadTimeoutHandler(); } else {window.onload = function() { if (typeof(ns_1VGN4TEE63ST5RTPH4EJ_14544_prevOnLoad) == 'function') {ns_1VGN4TEE63ST5RTPH4EJ_14544_prevOnLoad(); } ns_1VGN4TEE63ST5RTPH4EJ_14544_lazyLoadTimeoutHandler();}; }}; ns_1VGN4TEE63ST5RTPH4EJ_14544_lazyLoadWithoutAui(); </script><img src="//:0" style="display:none;" onerror=" setTimeout(function(){var renderAdUnitScript = document.getElementById('renderAdUnit_script');if (renderAdUnitScript !== null) { eval(renderAdUnitScript.innerHTML);} else if (typeof uex == 'function') { uex('ld', 'mobileadsrenderadunitscriptnull_ma_detail_ma_detail-mWeb_ma_btf', {wb: 1});} }, 0); "> <img src="//:0" style="display:none;" onerror="setTimeout(function() { if (!(window.P &amp;&amp; typeof window.P === 'object' &amp;&amp; typeof window.P.when === 'function') &amp;&amp;!(window.JavaScript &amp;&amp; typeof window.JavaScript === 'object' &amp;&amp; typeof window.JavaScript.onready === 'function')) {if(window.ue &amp;&amp; ue.tag) { ue.tag('mobileadsnojquery');}if (typeof uex == 'function') { uex('ld', 'mobileadsnojquery:ma_detail_ma_detail-mWeb_ma_btf', {wb: 1});} }}, 0); ">
2579
- </div>
2580
- <a></a><div id="aw-udpv3-customer-reviews_feature_div">
2581
- <div class="a-section a-spacing-large">
2582
- <div class="a-row a-spacing-small">
2583
- <div class="a-row">
2584
- <h2 class="a-spacing-micro">
2585
- Customer reviews
2586
- </h2>
2587
- <div class="a-box-group">
2588
- <a href="/gp/aw/reviews/193435659X/ref=mw_dp_cr/184-9743298-0728138" class="a-touch-link a-box a-first"><div class="a-box-inner">
2589
- <i class="a-icon a-icon-touch-link"></i>
2590
- <span class="a-size-medium a-text-bold">
2591
- 47 reviews
2592
- </span>
2593
- <div class="a-icon-row a-spacing-micro">
2594
- <i class="a-icon a-icon-star a-star-4-5"><span class="a-icon-alt">4.4 out of 5 stars</span></i>
2595
- <span class="a-size-base">
2596
- 4.4 out of 5
2597
- </span>
2598
- </div>
2599
- </div></a>
2600
- <div class="a-box"><div class="a-box-inner">
2601
- <h3>
2602
- Most helpful reviews
2603
- </h3>
2604
- <a href="/gp/aw/review/193435659X/R37FZCXUB9PG0Q/ref=mw_dp_cr/184-9743298-0728138?cursor=1&amp;sort=rd" class="a-touch-link a-box a-touch-link-noborder a-spacing-top-none"><div class="a-box-inner">
2605
- <i class="a-icon a-icon-touch-link"></i>
2606
- <p class="a-spacing-micro">
2607
- <i class="a-icon a-icon-star-small a-star-small-4"><span class="a-icon-alt">4.0 out of 5 stars</span></i>
2608
- Background: I stumbled across the author's blog post announcing his intention to write the book while looking for materials comparing language paradigms instead of particular ...
2609
- </p>
2610
- </div></a>
2611
- <span class="a-color-secondary">
2612
- - MedIT
2613
- </span>
2614
- <a href="/gp/aw/review/193435659X/RRL01ERPOR9YT/ref=mw_dp_cr/184-9743298-0728138?cursor=2&amp;sort=rd" class="a-touch-link a-box a-touch-link-noborder a-spacing-top-small"><div class="a-box-inner">
2615
- <i class="a-icon a-icon-touch-link"></i>
2616
- <p class="a-spacing-micro">
2617
- <i class="a-icon a-icon-star-small a-star-small-2"><span class="a-icon-alt">2.0 out of 5 stars</span></i>
2618
- I was very disappointed in this book. I could have attain a similar level of depth with fewer unnecessary film-based analogies by reading each langauges' wikipedia page. The ...
2619
- </p>
2620
- </div></a>
2621
- <span class="a-color-secondary">
2622
- - Brian L.
2623
- </span>
2624
- <a href="/gp/aw/review/193435659X/R26H85EFEA3U0Q/ref=mw_dp_cr/184-9743298-0728138?cursor=3&amp;sort=rd" class="a-touch-link a-box a-touch-link-noborder a-spacing-top-small"><div class="a-box-inner">
2625
- <i class="a-icon a-icon-touch-link"></i>
2626
- <p class="a-spacing-micro">
2627
- <i class="a-icon a-icon-star-small a-star-small-3"><span class="a-icon-alt">3.0 out of 5 stars</span></i>
2628
- The idea is good - have a brief overview of several programming languages that gather most curiosity in the community. The languages that made it to the book were chosen by ...
2629
- </p>
2630
- </div></a>
2631
- <span class="a-color-secondary">
2632
- - Dmitry Dvoinikov
2633
- </span>
2634
- </div></div>
2635
- <a href="/gp/aw/cr/193435659X/s=sd/ref=mw_dp_cr/184-9743298-0728138" class="a-touch-link a-box a-last"><div class="a-box-inner">
2636
- <i class="a-icon a-icon-touch-link"></i>
2637
- <strong>See most recent reviews</strong>
2638
- </div></a>
2639
- </div>
2640
- </div>
2641
- </div>
2642
- <span class="a-button a-button-supplemental"><span class="a-button-inner"><i class="a-icon a-icon-supplemental"></i><a href="/review/review-your-purchases/ref=aw_cr_write_cr/184-9743298-0728138?asins=193435659X&amp;channel=awUDPv3" class="a-button-text" role="button">
2643
- Write a Review
2644
- </a></span></span>
2645
- </div>
2646
- </div>
2647
- <div class="aw-campaigns"></div>
2648
- <div class="aw-campaigns"></div>
2649
- <div id="sims-session" class="a-section a-spacing-large">
2650
- <h2 class="a-spacing-micro">Customers who viewed this also viewed</h2>
2651
- <span class="aok-offscreen">This shopping feature will continue to load items. In order to navigate out of this carousel please use your heading shortcut key to navigate to the next or previous heading.</span>
2652
- <div class="p13n-sc-carousel" data-ajax-params='{"auiDeviceType":"mobile","featureId":"SimilaritiesMobileCarousel","reftagPrefix":"pd_aw_sbs_14","productDetailsTemplateClass":"PI::P13N::ViewTemplates::ProductDetails::Phone::Base","widgetTemplateClass":"PI::P13N::ViewTemplates::Carousel::Phone","faceoutTemplateClass":"PI::P13N::ViewTemplates::Product::Phone::CarouselFaceout"}' data-ajax-url="/gp/p13n-shared/faceout-partial/184-9743298-0728138" data-asin-index="9" data-asins="1934356921,020161622X,1941222153,1937785580,1937785653,1937785637,0123745144,1934356344,1934356050,0486478831,0131395319,1937785319,1937785335,0262510871,1593272839,0735619670,0137081073,0735611319,1449394701,0201657880,178328479X,0201835959,0974514047,1617292397,0201485672,161729134X,0596007124,1617291412,0981531644,0132350882,1937785491,0262033844,097451408X,1491909048,0131872486,0136073476,1617290653,0201633612,1680500414,1449367933,0262162091,0321213351,0957671105,193778553X,193435645X,0321356683,1449365515,1593274351,1491905530,0321200683,098478280X,0135974445,1449368174,0262560992,0131479415,1107029570,0131177052,0262193388,0321721330,1593274246">
2653
- <div class="p13n-sc-carousel-content">
2654
- <div class="p13n-sc-carousel-item" style="left: 0px;">
2655
- <a class="a-link-normal" href="/gp/aw/d/1934356921/ref=pd_aw_sbs_14_1/184-9743298-0728138?refRID=1VGN4TEE63ST5RTPH4EJ">
2656
- <div class="a-row a-spacing-micro">
2657
- <div class="p13n-sc-lazy-loaded-img">
2658
- <img alt="Seven Databases in Seven Weeks: A Guide to Modern Databases and the NoSQL Movement" src="https://images-na.ssl-images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V192234675_.gif" class="a-dynamic-image" height="115" width="93" data-a-dynamic-image='{"http://ecx.images-amazon.com/images/I/41rYtcbzOUL._AC_UL230_SR186,230_.jpg":[230,186],"http://ecx.images-amazon.com/images/I/41rYtcbzOUL._AC_UL115_SR93,115_.jpg":[115,93],"http://ecx.images-amazon.com/images/I/41rYtcbzOUL._AC_UL345_SR279,345_.jpg":[345,279]}' data-a-manual-replacement="1">
2659
- </div>
2660
- </div>
2661
- <div class="a-row"><div aria-hidden="true"><span title="Seven Databases in Seven Weeks: A Guide to Modern Databases and the NoSQL Movement">Seven Databases in Seven…</span></div></div>
2662
- <div class="a-icon-row a-spacing-none">
2663
- <i class="a-icon a-icon-star a-star-4-5"><span class="a-icon-alt">4.5 out of 5 stars</span></i>
2664
- </div>
2665
- <div class="a-row"><span class="a-color-secondary">37 reviews</span></div>
2666
- <div class="a-row"><span class="a-color-secondary"><span class="a-size-base a-color-price">$32.27</span> <span style="position: relative; top: 2px;"><i class="a-icon a-icon-prime a-icon-small" role="img" aria-label="Prime"></i></span></span></div>
2667
- </a>
2668
- </div>
2669
- <div class="p13n-sc-carousel-item" style="left: 140px;">
2670
- <a class="a-link-normal" href="/gp/aw/d/020161622X/ref=pd_aw_sbs_14_2/184-9743298-0728138?refRID=1VGN4TEE63ST5RTPH4EJ">
2671
- <div class="a-row a-spacing-micro">
2672
- <div class="p13n-sc-lazy-loaded-img">
2673
- <img alt="The Pragmatic Programmer: From Journeyman to Master" src="https://images-na.ssl-images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V192234675_.gif" class="a-dynamic-image" height="115" width="92" data-a-dynamic-image='{"http://ecx.images-amazon.com/images/I/41BKx1AxQWL._AC_UL345_SR276,345_.jpg":[345,276],"http://ecx.images-amazon.com/images/I/41BKx1AxQWL._AC_UL230_SR184,230_.jpg":[230,184],"http://ecx.images-amazon.com/images/I/41BKx1AxQWL._AC_UL115_SR92,115_.jpg":[115,92]}' data-a-manual-replacement="1">
2674
- </div>
2675
- </div>
2676
- <div class="a-row"><div aria-hidden="true"><span title="The Pragmatic Programmer: From Journeyman to Master">The Pragmatic Programmer…</span></div></div>
2677
- <div class="a-icon-row a-spacing-none">
2678
- <i class="a-icon a-icon-star a-star-4-5"><span class="a-icon-alt">4.5 out of 5 stars</span></i>
2679
- </div>
2680
- <div class="a-row"><span class="a-color-secondary">281 reviews</span></div>
2681
- <div class="a-row"><span class="a-color-secondary"><span class="a-size-base a-color-price">$32.95</span> <span style="position: relative; top: 2px;"><i class="a-icon a-icon-prime a-icon-small" role="img" aria-label="Prime"></i></span></span></div>
2682
- </a>
2683
- </div>
2684
- <div class="p13n-sc-carousel-item" style="left: 280px;">
2685
- <a class="a-link-normal" href="/gp/aw/d/1941222153/ref=pd_aw_sbs_14_3/184-9743298-0728138?refRID=1VGN4TEE63ST5RTPH4EJ">
2686
- <div class="a-row a-spacing-micro">
2687
- <div class="p13n-sc-lazy-loaded-img">
2688
- <img alt="Seven More Languages in Seven Weeks: Languages That Are Shaping the Future" src="https://images-na.ssl-images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V192234675_.gif" class="a-dynamic-image" height="115" width="96" data-a-dynamic-image='{"http://ecx.images-amazon.com/images/I/51t-byUGJeL._AC_UL345_SR288,345_.jpg":[345,288],"http://ecx.images-amazon.com/images/I/51t-byUGJeL._AC_UL230_SR192,230_.jpg":[230,192],"http://ecx.images-amazon.com/images/I/51t-byUGJeL._AC_UL115_SR96,115_.jpg":[115,96]}' data-a-manual-replacement="1">
2689
- </div>
2690
- </div>
2691
- <div class="a-row"><div aria-hidden="true"><span title="Seven More Languages in Seven Weeks: Languages That Are Shaping the Future">Seven More Languages in…</span></div></div>
2692
- <div class="a-icon-row a-spacing-none">
2693
- <i class="a-icon a-icon-star a-star-4"><span class="a-icon-alt">4.0 out of 5 stars</span></i>
2694
- </div>
2695
- <div class="a-row"><span class="a-color-secondary">4 reviews</span></div>
2696
- <div class="a-row"><span class="a-color-secondary"><span class="a-size-base a-color-price">$27.26</span> <span style="position: relative; top: 2px;"><i class="a-icon a-icon-prime a-icon-small" role="img" aria-label="Prime"></i></span></span></div>
2697
- </a>
2698
- </div>
2699
- <div class="p13n-sc-carousel-item" style="left: 420px;">
2700
- <a class="a-link-normal" href="/gp/aw/d/1937785580/ref=pd_aw_sbs_14_4/184-9743298-0728138?refRID=1VGN4TEE63ST5RTPH4EJ">
2701
- <div class="a-row a-spacing-micro">
2702
- <div class="p13n-sc-lazy-loaded-img">
2703
- <img alt="Programming Elixir: Functional |&gt; Concurrent |&gt; Pragmatic |&gt; Fun" src="https://images-na.ssl-images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V192234675_.gif" class="a-dynamic-image" height="115" width="93" data-a-dynamic-image='{"http://ecx.images-amazon.com/images/I/51WfjWglDsL._AC_UL345_SR279,345_.jpg":[345,279],"http://ecx.images-amazon.com/images/I/51WfjWglDsL._AC_UL115_SR93,115_.jpg":[115,93],"http://ecx.images-amazon.com/images/I/51WfjWglDsL._AC_UL230_SR186,230_.jpg":[230,186]}' data-a-manual-replacement="1">
2704
- </div>
2705
- </div>
2706
- <div class="a-row"><div aria-hidden="true"><span title="Programming Elixir: Functional |&gt; Concurrent |&gt; Pragmatic |&gt; Fun">Programming Elixir…</span></div></div>
2707
- <div class="a-icon-row a-spacing-none">
2708
- <i class="a-icon a-icon-star a-star-5"><span class="a-icon-alt">4.8 out of 5 stars</span></i>
2709
- </div>
2710
- <div class="a-row"><span class="a-color-secondary">15 reviews</span></div>
2711
- <div class="a-row"><span class="a-color-secondary"><span class="a-size-base a-color-price">$34.20</span> <span style="position: relative; top: 2px;"><i class="a-icon a-icon-prime a-icon-small" role="img" aria-label="Prime"></i></span></span></div>
2712
- </a>
2713
- </div>
2714
- <div class="p13n-sc-carousel-item" style="left: 560px;">
2715
- <a class="a-link-normal" href="/gp/aw/d/1937785653/ref=pd_aw_sbs_14_5/184-9743298-0728138?refRID=1VGN4TEE63ST5RTPH4EJ">
2716
- <div class="a-row a-spacing-micro">
2717
- <div class="p13n-sc-lazy-loaded-img">
2718
- <img alt="Seven Concurrency Models in Seven Weeks: When Threads Unravel (The Pragmatic Programmers)" src="https://images-na.ssl-images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V192234675_.gif" class="a-dynamic-image" height="115" width="93" data-a-dynamic-image='{"http://ecx.images-amazon.com/images/I/41U8py1NCcL._AC_UL230_SR186,230_.jpg":[230,186],"http://ecx.images-amazon.com/images/I/41U8py1NCcL._AC_UL345_SR279,345_.jpg":[345,279],"http://ecx.images-amazon.com/images/I/41U8py1NCcL._AC_UL115_SR93,115_.jpg":[115,93]}' data-a-manual-replacement="1">
2719
- </div>
2720
- </div>
2721
- <div class="a-row"><div aria-hidden="true"><span title="Seven Concurrency Models in Seven Weeks: When Threads Unravel (The Pragmatic Programmers)">Seven Concurrency Models…</span></div></div>
2722
- <div class="a-icon-row a-spacing-none">
2723
- <i class="a-icon a-icon-star a-star-4-5"><span class="a-icon-alt">4.6 out of 5 stars</span></i>
2724
- </div>
2725
- <div class="a-row"><span class="a-color-secondary">20 reviews</span></div>
2726
- <div class="a-row"><span class="a-color-secondary"><span class="a-size-base a-color-price">$36.10</span> <span style="position: relative; top: 2px;"><i class="a-icon a-icon-prime a-icon-small" role="img" aria-label="Prime"></i></span></span></div>
2727
- </a>
2728
- </div>
2729
- <div class="p13n-sc-carousel-item" style="left: 700px;">
2730
- <a class="a-link-normal" href="/gp/aw/d/1937785637/ref=pd_aw_sbs_14_6/184-9743298-0728138?refRID=1VGN4TEE63ST5RTPH4EJ">
2731
- <div class="a-row a-spacing-micro">
2732
- <div class="p13n-sc-lazy-loaded-img">
2733
- <img alt="Seven Web Frameworks in Seven Weeks: Adventures in Better Web Apps (Pragmatic Programmers)" src="https://images-na.ssl-images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V192234675_.gif" class="a-dynamic-image" height="115" width="96" data-a-dynamic-image='{"http://ecx.images-amazon.com/images/I/51qlO9JuczL._AC_UL345_SR288,345_.jpg":[345,288],"http://ecx.images-amazon.com/images/I/51qlO9JuczL._AC_UL115_SR96,115_.jpg":[115,96],"http://ecx.images-amazon.com/images/I/51qlO9JuczL._AC_UL230_SR192,230_.jpg":[230,192]}' data-a-manual-replacement="1">
2734
- </div>
2735
- </div>
2736
- <div class="a-row"><div aria-hidden="true"><span title="Seven Web Frameworks in Seven Weeks: Adventures in Better Web Apps (Pragmatic Programmers)">Seven Web Frameworks in…</span></div></div>
2737
- <div class="a-icon-row a-spacing-none">
2738
- <i class="a-icon a-icon-star a-star-4"><span class="a-icon-alt">4.0 out of 5 stars</span></i>
2739
- </div>
2740
- <div class="a-row"><span class="a-color-secondary">4 reviews</span></div>
2741
- <div class="a-row"><span class="a-color-secondary"><span class="a-size-base a-color-price">$27.26</span> <span style="position: relative; top: 2px;"><i class="a-icon a-icon-prime a-icon-small" role="img" aria-label="Prime"></i></span></span></div>
2742
- </a>
2743
- </div>
2744
- <div class="p13n-sc-carousel-item" style="left: 840px;">
2745
- <a class="a-link-normal" href="/gp/aw/d/0123745144/ref=pd_aw_sbs_14_7/184-9743298-0728138?refRID=1VGN4TEE63ST5RTPH4EJ">
2746
- <div class="a-row a-spacing-micro">
2747
- <div class="p13n-sc-lazy-loaded-img">
2748
- <img alt="Programming Language Pragmatics, Third Edition" src="https://images-na.ssl-images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V192234675_.gif" class="a-dynamic-image" height="115" width="93" data-a-dynamic-image='{"http://ecx.images-amazon.com/images/I/51TvuWQBKnL._AC_UL115_SR93,115_.jpg":[115,93],"http://ecx.images-amazon.com/images/I/51TvuWQBKnL._AC_UL345_SR279,345_.jpg":[345,279],"http://ecx.images-amazon.com/images/I/51TvuWQBKnL._AC_UL230_SR186,230_.jpg":[230,186]}' data-a-manual-replacement="1">
2749
- </div>
2750
- </div>
2751
- <div class="a-row"><div aria-hidden="true"><span title="Programming Language Pragmatics, Third Edition">Programming Language…</span></div></div>
2752
- <div class="a-icon-row a-spacing-none">
2753
- <i class="a-icon a-icon-star a-star-4-5"><span class="a-icon-alt">4.3 out of 5 stars</span></i>
2754
- </div>
2755
- <div class="a-row"><span class="a-color-secondary">23 reviews</span></div>
2756
- <div class="a-row"><span class="a-color-secondary"><span class="a-size-base a-color-price">$49.91</span> <span style="position: relative; top: 2px;"><i class="a-icon a-icon-prime a-icon-small" role="img" aria-label="Prime"></i></span></span></div>
2757
- </a>
2758
- </div>
2759
- <div class="p13n-sc-carousel-item" style="left: 980px;">
2760
- <a class="a-link-normal" href="/gp/aw/d/1934356344/ref=pd_aw_sbs_14_8/184-9743298-0728138?refRID=1VGN4TEE63ST5RTPH4EJ">
2761
- <div class="a-row a-spacing-micro">
2762
- <div class="p13n-sc-lazy-loaded-img">
2763
- <img alt="The Passionate Programmer: Creating a Remarkable Career in Software Development (Pragmatic Life)" src="https://images-na.ssl-images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V192234675_.gif" class="a-dynamic-image" height="115" width="77" data-a-dynamic-image='{"http://ecx.images-amazon.com/images/I/51jq6HvAQXL._AC_UL230_SR154,230_.jpg":[230,154],"http://ecx.images-amazon.com/images/I/51jq6HvAQXL._AC_UL115_SR77,115_.jpg":[115,77],"http://ecx.images-amazon.com/images/I/51jq6HvAQXL._AC_UL345_SR231,345_.jpg":[345,231]}' data-a-manual-replacement="1">
2764
- </div>
2765
- </div>
2766
- <div class="a-row"><div aria-hidden="true"><span title="The Passionate Programmer: Creating a Remarkable Career in Software Development (Pragmatic Life)">The Passionate Programmer…</span></div></div>
2767
- <div class="a-icon-row a-spacing-none">
2768
- <i class="a-icon a-icon-star a-star-4-5"><span class="a-icon-alt">4.4 out of 5 stars</span></i>
2769
- </div>
2770
- <div class="a-row"><span class="a-color-secondary">104 reviews</span></div>
2771
- <div class="a-row"><span class="a-color-secondary"><span class="a-size-base a-color-price">$15.73</span> <span style="position: relative; top: 2px;"><i class="a-icon a-icon-prime a-icon-small" role="img" aria-label="Prime"></i></span></span></div>
2772
- </a>
2773
- </div>
2774
- <div class="p13n-sc-carousel-item" style="left: 1120px;">
2775
- <a class="a-link-normal" href="/gp/aw/d/1934356050/ref=pd_aw_sbs_14_9/184-9743298-0728138?refRID=1VGN4TEE63ST5RTPH4EJ">
2776
- <div class="a-row a-spacing-micro">
2777
- <div class="p13n-sc-lazy-loaded-img">
2778
- <img alt="Pragmatic Thinking and Learning: Refactor Your Wetware (Pragmatic Programmers)" src="https://images-na.ssl-images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V192234675_.gif" class="a-dynamic-image" height="115" width="96" data-a-dynamic-image='{"http://ecx.images-amazon.com/images/I/51cGj4FRZ5L._AC_UL230_SR192,230_.jpg":[230,192],"http://ecx.images-amazon.com/images/I/51cGj4FRZ5L._AC_UL345_SR288,345_.jpg":[345,288],"http://ecx.images-amazon.com/images/I/51cGj4FRZ5L._AC_UL115_SR96,115_.jpg":[115,96]}' data-a-manual-replacement="1">
2779
- </div>
2780
- </div>
2781
- <div class="a-row"><div aria-hidden="true"><span title="Pragmatic Thinking and Learning: Refactor Your Wetware (Pragmatic Programmers)">Pragmatic Thinking and…</span></div></div>
2782
- <div class="a-icon-row a-spacing-none">
2783
- <i class="a-icon a-icon-star a-star-4-5"><span class="a-icon-alt">4.5 out of 5 stars</span></i>
2784
- </div>
2785
- <div class="a-row"><span class="a-color-secondary">80 reviews</span></div>
2786
- <div class="a-row"><span class="a-color-secondary"><span class="a-size-base a-color-price">$23.45</span> <span style="position: relative; top: 2px;"><i class="a-icon a-icon-prime a-icon-small" role="img" aria-label="Prime"></i></span></span></div>
2787
- </a>
2788
- </div>
2789
- <div class="p13n-sc-carousel-item" style="left: 1260px;">
2790
- <a class="a-link-normal" href="/gp/aw/d/0486478831/ref=pd_aw_sbs_14_10/184-9743298-0728138?refRID=1VGN4TEE63ST5RTPH4EJ">
2791
- <div class="a-row a-spacing-micro">
2792
- <div class="p13n-sc-lazy-loaded-img">
2793
- <img alt="An Introduction to Functional Programming Through Lambda Calculus (Dover Books on Mathematics)" src="https://images-na.ssl-images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V192234675_.gif" class="a-dynamic-image" height="115" width="81" data-a-dynamic-image='{"http://ecx.images-amazon.com/images/I/51UQ3e1idJL._AC_UL115_SR81,115_.jpg":[115,81],"http://ecx.images-amazon.com/images/I/51UQ3e1idJL._AC_UL345_SR243,345_.jpg":[345,243],"http://ecx.images-amazon.com/images/I/51UQ3e1idJL._AC_UL230_SR162,230_.jpg":[230,162]}' data-a-manual-replacement="1">
2794
- </div>
2795
- </div>
2796
- <div class="a-row"><div aria-hidden="true"><span title="An Introduction to Functional Programming Through Lambda Calculus (Dover Books on Mathematics)">An Introduction to…</span></div></div>
2797
- <div class="a-icon-row a-spacing-none">
2798
- <i class="a-icon a-icon-star a-star-4-5"><span class="a-icon-alt">4.5 out of 5 stars</span></i>
2799
- </div>
2800
- <div class="a-row"><span class="a-color-secondary">19 reviews</span></div>
2801
- <div class="a-row"><span class="a-color-secondary"><span class="a-size-base a-color-price">$19.43</span> <span style="position: relative; top: 2px;"><i class="a-icon a-icon-prime a-icon-small" role="img" aria-label="Prime"></i></span></span></div>
2802
- </a>
2803
- </div>
2804
- </div>
2805
- </div>
2806
- </div>
2807
- <div class="aw-campaigns"></div>
2808
- </div>
2809
-
2810
- </div>
2811
-
2812
- <div id="WrapperDivToHideFooter" style="display:none;">
2813
- <script type="text/javascript">
2814
- 'use strict';
2815
- (function () {
2816
- function install() {
2817
- var searchIconLink = document.getElementById('search-icon-link');
2818
- if (searchIconLink) {
2819
- searchIconLink.onclick = function(e) {
2820
- var refStartPos = this.href.lastIndexOf('#');
2821
- if (refStartPos > 0 && refStartPos < this.href.length - 1) {
2822
- var searchBox = document.getElementById(this.href.substring(refStartPos + 1));
2823
- if (searchBox) {
2824
- searchBox.focus();
2825
- e.preventDefault();
2826
- }
2827
- }
2828
- };
2829
- }
2830
- }
2831
- if (document.readyState === "complete") { install(); }
2832
- else { window.addEventListener('load', install); }
2833
- }());
2834
- </script><div class="a-container a-footer">
2835
- <div id="search-ac-init-data" data-aliases="aps,amazon-custom-products,amazonfresh,stripbooks,popular,apparel,electronics,sporting,sports-and-fitness,outdoor-recreation,fan-shop,garden,videogames,toys-and-games,jewelry,digital-text,digital-music,prime-digital-music,watches,grocery,hpc,instant-video,handmade,handmade-jewelry,handmade-home-and-kitchen,prime-instant-video,shop-instant-video,baby-products,office-products,software,magazines,tools,automotive,misc,industrial,mi,pet-supplies,digital-music-track,digital-music-album,mobile,mobile-apps,movies-tv,music-artist,music-album,music-song,stripbooks-spanish,electronics-accessories,pantry,photo,audio-video,computers,furniture,kitchen,audible,audiobooks,beauty,shoes,arts-crafts,appliances,gift-cards,pets,outdoor,lawngarden,collectibles,replacement-parts,financial,wine,fine-art,fashion,fashion-womens,fashion-womens-clothing,fashion-womens-jewelry,fashion-womens-shoes,fashion-womens-watches,fashion-womens-handbags,fashion-mens,fashion-mens-clothing,fashion-mens-jewelry,fashion-mens-shoes,fashion-mens-watches,fashion-girls,fashion-girls-clothing,fashion-girls-jewelry,fashion-girls-shoes,fashion-girls-watches,fashion-boys,fashion-boys-clothing,fashion-boys-jewelry,fashion-boys-shoes,fashion-boys-watches,fashion-baby,fashion-baby-boys,fashion-baby-girls,fashion-luggage,3d-printing,tradein-aps,local-services,vehicles,video-shorts,warehouse-deals,luxury-beauty,banjo-apps" data-ime="" data-mkt="1" data-src="completion.amazon.com/search/complete"></div>
2836
- <div id="searchKeyword-data" data-form="searchForm"></div>
2837
- <style>
2838
- .psearch {overflow-x: inherit !important;}
2839
- .navfix-fl {float: left;}
2840
- .navfix-fill {width: 100%;}
2841
- </style>
2842
- <div class="a-section a-spacing-medium">
2843
- <div id="searchKeywordRow" class="a-row">
2844
- <form id="searchForm" method="get" action="/gp/aw/s/ref=is_box_books/184-9743298-0728138" class="">
2845
- <div class="a-span8 navfix-fl">
2846
- <div class="a-input-text-wrapper psearch"><input type="text" id="searchKeyword" autocomplete="off" placeholder="Search" name="k"></div>
2847
- </div>
2848
- <div class="a-span4 a-span-last">
2849
- <button type="submit" class="a-button a-button-dark navfix-fill"><span class="a-button-inner"><span class="a-button-text">Go</span></span></button>
2850
- </div>
2851
- </form>
2852
- </div>
2853
- </div>
2854
- <a id="nav-backtotop" href="#top">
2855
- <i id="nav-backtotop-arrow" class="a-icon a-icon-arrow-up"></i>
2856
- Top of page
2857
- </a>
2858
- <div class="a-section a-spacing-large">
2859
- <div class="a-box"><div class="a-box-inner a-padding-none"><ul class="a-nostyle a-box-list">
2860
- <li class="a-list-item">
2861
- <a href="/184-9743298-0728138" class="a-touch-link a-box a-touch-link-noborder"><div class="a-box-inner">
2862
- <i class="a-icon a-icon-touch-link"></i>
2863
- Home
2864
- </div></a>
2865
- </li>
2866
- <li class="a-list-item">
2867
- <a href="/gp/aw/c/184-9743298-0728138?ref_=aw_bottom_links_cart" class="a-touch-link a-box a-touch-link-noborder"><div class="a-box-inner">
2868
- <i class="a-icon a-icon-touch-link"></i>
2869
- Cart (<span class="a-color-state" id="bottom-nav-cart-count">0</span>)
2870
- </div></a>
2871
- </li>
2872
- <li class="a-list-item">
2873
- <a href="https://www.amazon.com/ap/signin/184-9743298-0728138?_encoding=UTF8&amp;openid.assoc_handle=anywhere_v2_us&amp;openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&amp;openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&amp;openid.mode=checkid_setup&amp;openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&amp;openid.return_to=https%3A%2F%2Fwww.amazon.com%2Fgp%2Faw%2Frecs%2Fys%2F184-9743298-0728138&amp;pageId=anywhere_us" class="a-touch-link a-box a-touch-link-noborder"><div class="a-box-inner">
2874
- <i class="a-icon a-icon-touch-link"></i>
2875
- Your Amazon.com
2876
- </div></a>
2877
- </li>
2878
- <li class="a-list-item">
2879
- <a href="https://www.amazon.com/ap/signin/184-9743298-0728138?_encoding=UTF8&amp;openid.assoc_handle=anywhere_v2_us&amp;openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&amp;openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&amp;openid.mode=checkid_setup&amp;openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&amp;openid.return_to=https%3A%2F%2Fwww.amazon.com%2Fgp%2Faw%2Fls%2F184-9743298-0728138&amp;pageId=anywhere_us" class="a-touch-link a-box a-touch-link-noborder"><div class="a-box-inner">
2880
- <i class="a-icon a-icon-touch-link"></i>
2881
- Wish List &amp; Registry
2882
- </div></a>
2883
- </li>
2884
- <li class="a-list-item">
2885
- <a href="https://www.amazon.com/ap/signin/184-9743298-0728138?_encoding=UTF8&amp;openid.assoc_handle=anywhere_v2_us&amp;openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&amp;openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&amp;openid.mode=checkid_setup&amp;openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&amp;openid.return_to=https%3A%2F%2Fwww.amazon.com%2Fgp%2Faw%2Fls%2Fs%2F184-9743298-0728138&amp;pageId=anywhere_us" class="a-touch-link a-box a-touch-link-noborder"><div class="a-box-inner">
2886
- <i class="a-icon a-icon-touch-link"></i>
2887
- Find a Wish List or Registry
2888
- </div></a>
2889
- </li>
2890
- <li class="a-list-item">
2891
- <a href="https://www.amazon.com/ap/signin/184-9743298-0728138?_encoding=UTF8&amp;openid.assoc_handle=anywhere_v2_us&amp;openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&amp;openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&amp;openid.mode=checkid_setup&amp;openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&amp;openid.return_to=https%3A%2F%2Fwww.amazon.com%2Fgp%2Faw%2Fya%2F184-9743298-0728138&amp;pageId=anywhere_us" class="a-touch-link a-box a-touch-link-noborder"><div class="a-box-inner">
2892
- <i class="a-icon a-icon-touch-link"></i>
2893
- Your Account
2894
- </div></a>
2895
- </li>
2896
- <li class="a-list-item">
2897
- <a href="https://www.amazon.com/gp/aw/ybh/184-9743298-0728138?ref_=aw_bottom_links_ybh" class="a-touch-link a-box a-touch-link-noborder"><div class="a-box-inner">
2898
- <i class="a-icon a-icon-touch-link"></i>
2899
- Your Recently Viewed Items
2900
- </div></a>
2901
- </li>
2902
- <li class="a-list-item">
2903
- <a href="https://www.amazon.com/ap/signin/184-9743298-0728138?_encoding=UTF8&amp;openid.assoc_handle=anywhere_v2_us&amp;openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&amp;openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&amp;openid.mode=checkid_setup&amp;openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&amp;openid.return_to=https%3A%2F%2Fwww.amazon.com%2Fgp%2Fsubscribe-and-save%2Fmanage%2F184-9743298-0728138&amp;pageId=anywhere_us" class="a-touch-link a-box a-touch-link-noborder"><div class="a-box-inner">
2904
- <i class="a-icon a-icon-touch-link"></i>
2905
- Your Subscribe &amp; Save Items
2906
- </div></a>
2907
- </li>
2908
- <li class="a-list-item">
2909
- <a href="https://www.amazon.com/ap/signin/184-9743298-0728138?_encoding=UTF8&amp;openid.assoc_handle=anywhere_v2_us&amp;openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&amp;openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&amp;openid.mode=checkid_setup&amp;openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&amp;openid.return_to=https%3A%2F%2Fwww.amazon.com%2Fgp%2Faw%2Fvsd.html%2F184-9743298-0728138&amp;pageId=anywhere_us" class="a-touch-link a-box a-touch-link-noborder"><div class="a-box-inner">
2910
- <i class="a-icon a-icon-touch-link"></i>
2911
- 1-Click Settings
2912
- </div></a>
2913
- </li>
2914
- <li class="a-list-item">
2915
- <a href="/gp/aw/contact-us/184-9743298-0728138?ref_=aw_bottom_links_cu" class="a-touch-link a-box a-touch-link-noborder"><div class="a-box-inner">
2916
- <i class="a-icon a-icon-touch-link"></i>
2917
- Customer Service
2918
- </div></a>
2919
- </li>
2920
- <li class="a-list-item">
2921
- <a href="/gp/help/customer/display.html/184-9743298-0728138?ref_=aw_bottom_links_help" class="a-touch-link a-box a-touch-link-noborder"><div class="a-box-inner">
2922
- <i class="a-icon a-icon-touch-link"></i>
2923
- Help
2924
- </div></a>
2925
- </li>
2926
- <li class="a-list-item">
2927
- <a href="/gp/anywhere/site-view.html/184-9743298-0728138?at=&amp;force-full-site=1&amp;lc=plm&amp;opt=desktop&amp;ref_=aw_bottom_links&amp;url=%2Fgp%2Fproduct%2F193435659X" class="a-touch-link a-box a-touch-link-noborder"><div class="a-box-inner">
2928
- <i class="a-icon a-icon-touch-link"></i>
2929
- Amazon.com Full Site
2930
- </div></a>
2931
- </li>
2932
- </ul></div></div>
2933
- </div>
2934
- <div id="footer" class="a-section">
2935
- <div class="a-section a-text-center">
2936
- <div id="who-are-you" class="a-section a-spacing-large">
2937
- <span>
2938
- Already a customer?<span class="a-letter-space"></span><a href="https://www.amazon.com/ap/signin/184-9743298-0728138?_encoding=UTF8&amp;openid.assoc_handle=anywhere_v2_us&amp;openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&amp;openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&amp;openid.mode=checkid_setup&amp;openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&amp;openid.return_to=https%3A%2F%2Fwww.amazon.com%2Fgp%2Faw%2Fd%2F193435659X%2F184-9743298-0728138&amp;pageId=anywhere_us">Sign In</a>
2939
- </span>
2940
- </div>
2941
- <div id="nav-footer-links" class="a-section a-spacing-medium">
2942
- <span class=" a-size-mini">
2943
- <a href="/gp/aw/help/id=cou/184-9743298-0728138?storeName=">Conditions of Use</a><span class="a-letter-space"></span><span class="a-letter-space"></span><span class="a-letter-space"></span><span class="a-letter-space"></span><a href="/gp/aw/help/id=468496/184-9743298-0728138?storeName=">Privacy Notice</a><span class="a-letter-space"></span><span class="a-letter-space"></span><span class="a-letter-space"></span><span class="a-letter-space"></span><a href="/gp/aw/help/184-9743298-0728138?id=201308670">Interest-Based Ads</a>
2944
- </span>
2945
- </div>
2946
- <div class="a-section">
2947
- <span class=" a-color-tertiary a-size-mini">
2948
- © 1996-2015, Amazon.com, Inc. or its affiliates
2949
- </span>
2950
- </div>
2951
- </div>
2952
- </div>
2953
- <div id="sis_pixel_r2" aria-hidden="true" style="height:1px;"></div>
2954
- <script>(function(a,b){a.attachEvent?a.attachEvent("onload",b):a.addEventListener&&a.addEventListener("load",b,!1)})(window,function(){setTimeout(function(){var el=document.getElementById("sis_pixel_r2");el&&(el.innerHTML='<iframe id="DAsis" src="//s.amazon-adsystem.com/iu3?d=amazon.com&slot=navFooter&a2=01011ac62e3b1b4703aef561a4760485e6121142801fceee140bdd2cd999d4da97d4&old_oo=0&cb=1434382420668" width="1" height="1" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>')},300)});</script>
2955
- <script type="text/javascript">
2956
- if (window.sx === undefined) {
2957
- window.sx = {};
2958
- }
2959
- window.sx.searchsuggest = {};
2960
- </script>
2961
- </div>
2962
- <script>
2963
- (window.AmazonUIPageJS ? AmazonUIPageJS : P).when('atf').execute(function() {
2964
- (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('http://z-ecx.images-amazon.com/images/I/01v6fg5fgUL.js#AUIClients/SoftlinesCommonMetaAsset');
2965
- });
2966
- </script>
2967
-
2968
- </div>
2969
-
2970
- <script type="text/javascript"> P.when('atf').execute(function() { document.getElementById('WrapperDivToHideBTF').style.display = 'block'; document.getElementById('WrapperDivToHideFooter').style.display = 'block';}) </script>
2971
- </div>
2972
- <script type="text/javascript">
2973
-
2974
- window.ue_csm.cel_widgets = [
2975
- { id: "imageBlock_feature_div" } , { id: "twister_feature_div" } , { id: "buybox_feature_div" } , { id: "dpx-anywhere-tell-a-friend_feature_div" } , { id: "dpx-anywhere-promotions_feature_div" } , { id: "dpx-anywhere-recommendations_feature_div" } , { id: "sims-purchase" } , { id: "dpx-anywhere-sponsored-products_feature_div" } , { id: "dpx-anywhere-ask_feature_div" } , { id: "aw-udpv3-customer-reviews_feature_div" } , { id: "sims-session" } , { c: "nav-mobile" , id_gen: function(){ return 'nav-mobile'; } } , { c: "celwidget" } , { id: "fallbacksessionShvl" } , { id: "rhf" }
2976
- ];
2977
-
2978
-
2979
-
2980
- </script>
2981
-
2982
- <div id="be" style="display:none;visibility:hidden;">
2983
- <form name="ue_backdetect"><input name="ue_back" value="1" type="hidden"></form>
2984
- <script type="text/javascript">
2985
- (function(a){var b=document.ue_backdetect;b&&b.ue_back&&a.ue&&(a.ue.bfini=b.ue_back.value);a.uet&&a.uet("be");a.onLdEnd&&(window.addEventListener?window.addEventListener("load",a.onLdEnd,!1):window.attachEvent&&window.attachEvent("onload",a.onLdEnd));a.ueh&&a.ueh(0,window,"load",a.onLd,1);a.ue&&a.ue.tag&&(a.ue_furl&&a.ue_furl.split?(b=a.ue_furl.split("."))&&b[0]&&a.ue.tag(b[0]):a.ue.tag("nofls"))})(ue_csm);
2986
-
2987
-
2988
- var ue_pty='DetailAW', ue_spty='glance', ue_pti='193435659X';
2989
-
2990
- </script>
2991
-
2992
- <a href="/gp/aw/d/193435659X/uedata/nvp/unsticky/184-9743298-0728138/DetailAW/ntpoffrw?tepes=1&amp;id=1VGN4TEE63ST5RTPH4EJ">v</a>
2993
- <noscript>
2994
- <img src="/gp/aw/d/193435659X/uedata/nvp/unsticky/184-9743298-0728138/DetailAW/ntpoffrw?noscript&amp;id=1VGN4TEE63ST5RTPH4EJ&amp;pty=DetailAW&amp;spty=glance&amp;pti=193435659X">
2995
- <img src="//fls-na.amazon.com/1/batch/1/OP/ATVPDKIKX0DER:184-9743298-0728138:1VGN4TEE63ST5RTPH4EJ%24uedata=s:%2Fgp%2Faw%2Fd%2F193435659X%2Fuedata%2Fnvp%2Funsticky%2F184-9743298-0728138%2FDetailAW%2Fntpoffrw%3Fnoscript%26id%3D1VGN4TEE63ST5RTPH4EJ%26pty%3DDetailAW%26spty%3Dglance%26pti%3D193435659X:2000">
2996
-
2997
- </noscript>
2998
- </div>
2999
- <script type="text/javascript">
3000
- (function(b,c){var a=c.images;a&&a.length&&b.ue.count("totalImages",a.length)})(ue_csm,document);
3001
-
3002
- </script>
3003
- <script type="text/javascript">
3004
- (function(c,d){var b=c.ue,a=d.navigator;b&&b.tag&&a&&(a=a.connection||a.mozConnection||a.webkitConnection)&&a.type&&b.tag("netInfo:"+a.type)})(ue_csm,window);
3005
-
3006
- </script>
3007
- <script type="text/javascript">
3008
- (function(c,d){function l(a,b){for(var c=[],d=0;d<a.length;d++){var e=a[d],f=b.encode(e);if(e[h]){var g=b.metaSep,e=e[h],l=b.metaPairSep,k=[],m=void 0;for(m in e)e.hasOwnProperty(m)&&k.push(m+"="+e[m]);e=k.join(l);f+=g+e}c.push(f)}return c.join(b.resourceSep)}function r(a){var b=a[h]=a[h]||{};b[s]||(b[s]=c.ue_mid);b[t]||(b[t]=c.ue_sid);b[f]||(b[f]=c.ue_id);a="//"+c.ue_furl+"/1/"+a[u]+"/1/OP/"+a[v]+"/"+a[w]+"/"+l([a],x);if(k)try{k.call(d[n],a)}catch(g){c.ue.sbf=1,(new Image).src=a}else(new Image).src=
3009
- a}function p(){g&&g.isStub&&g.replay(function(a,b,c){a=a[0];b=a[h]=a[h]||{};b[f]=b[f]||c;r(a)});c.ue.impression=r;g=null}if(!(1<c.ueinit)){var h="metadata",w="impressionType",u="foresterChannel",v="programGroup",s="marketplaceId",t="session",f="requestId",n="navigator",y=c.ue_bli,k=d[n]&&d[n].sendBeacon,q=function(a,b,c,d){return{encode:d,resourceSep:a,metaSep:b,metaPairSep:c}},x=q("","?","&",function(a){return l(a.impressionData,z)}),z=q("/",":",",",function(a){return a.featureName+":"+l(a.resources,
3010
- A)}),A=q(",","@","|",function(a){return a.id}),g=c.ue.impression;y&&ue.impression({programGroup:"csm",impressionType:"action",impressionData:[{featureName:"csm-features",resources:[{id:"impression-tracking"}]}],metadata:{csm:1},foresterChannel:"action-impressions"});k?p():(ue.attach("load",p),ue.attach("beforeunload",p));d.P&&d.P.register&&d.P.register("impression-client",function(){})}})(ue_csm,window);
3011
-
3012
- </script>
3013
- </body>
3014
- </html><html>
3015
- <script type="text/javascript">
3016
- if(typeof performance!= "undefined" && typeof performance.getEntries !=
3017
- "undefined"){
3018
-
3019
- for(i = 0 ; i < performance.getEntries().length ; i++){
3020
-
3021
- var name = performance.getEntries()[i].name ;
3022
- var res = name.match(/\/AmazonUI-\d.*.css/g);
3023
-
3024
- if(res){
3025
- var duration = performance.getEntries()[i].duration ;
3026
- if(duration < 50){ csmTag = "subFiftyMsAuiFetch";}
3027
- else if(duration < 500){ csmTag = "subFiveHunderedMsAuiFetch";}
3028
- else if(duration < 1000){ csmTag = "subOneSecAuiFetch";}
3029
- else if(duration < 2000){ csmTag = "subTwoSecAuiFetch";}
3030
- else { csmTag = "subMoreThanTwoSecAuiFetch";}
3031
-
3032
- if(window.ue && ue.tag) { ue.tag(csmTag);}
3033
- break;
3034
- }
3035
- }
3036
- }
3037
- </script>
3038
- <!-- whfh-0y9HXeMHiRCK1PZS1F2eSOlIKW9WiGYTQxFcGl5732IfrqAbxxR2m1Y6RwEi0df/ rid-1VGN4TEE63ST5RTPH4EJ -->
3039
-
3040
- </html>