دسترسی نامحدود
برای کاربرانی که ثبت نام کرده اند
برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید
در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید
برای کاربرانی که ثبت نام کرده اند
درصورت عدم همخوانی توضیحات با کتاب
از ساعت 7 صبح تا 10 شب
ویرایش:
نویسندگان: Amit Rathore
سری:
ISBN (شابک) : 9781935182597, 1935182595
ناشر: Manning
سال نشر: 2012
تعداد صفحات: 434
زبان: English
فرمت فایل : PDF (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود)
حجم فایل: 8 مگابایت
در صورت تبدیل فایل کتاب Clojure in action به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.
توجه داشته باشید کتاب کلوژور در عمل نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.
خلاصه Clojure in Action یک آموزش عملی برای برنامه نویسی است که به زبانی مانند جاوا یا روبی کد نوشته است، اما تجربه قبلی با Lisp ندارد. Clojure را از مبانی تا موضوعات پیشرفته با استفاده از مثالهای کاربردی کاربردی و واقعی آموزش میدهد. تئوری را بررسی کنید و به موضوعات عملی مانند تست واحد و تنظیم محیط، تا تمام راه ساختن یک برنامه وب مقیاس پذیر با استفاده از زبان های دامنه خاص، Hadoop، HBase، و RabbitMQ بروید. درباره فناوری Clojure یک Lisp مدرن برای JVM است و دارای نقاط قوتی است که انتظار دارید: توابع درجه یک، ماکروها، پشتیبانی از برنامه نویسی عملکردی، و سبک برنامه نویسی تمیز و شبیه Lisp. درباره این کتاب Clojure in Action یک راهنمای عملی است که بر روی استفاده از Clojure در چالش های برنامه نویسی عملی متمرکز شده است. شما با یک آموزش زبان نوشته شده برای خوانندگانی که قبلاً OOP را می دانند شروع می کنید. سپس، به موارد استفاده ای که Clojure واقعاً می درخشد، می پردازید: مدیریت حالت، همزمانی ایمن و برنامه نویسی چند هسته ای، تولید کد درجه یک، و جاوا interop. در هر فصل، ابتدا ویژگیهای منحصربهفرد یک منطقه مشکل را بررسی میکنید و سپس نحوه مقابله با آنها را با استفاده از Clojure کشف خواهید کرد. در طول مسیر، هنگام ساختن یک برنامه وب مقیاسپذیر که شامل DSLهای سفارشی، Hadoop، HBase و RabbitMQ میشود، موضوعات عملی مانند معماری، تست واحد و راهاندازی را بررسی خواهید کرد. خرید کتاب چاپی با پیشنهاد یک کتاب الکترونیکی PDF، ePub و Kindle رایگان از Manning ارائه می شود. همچنین تمام کدهای کتاب موجود است. چه چیزی در داخل آموزش سریع Clojure ایجاد سرویس های وب با Clojure Scaling از طریق پیام رسانی ایجاد DSL با سیستم کلان Clojure توسعه آزمایش محور با Clojure برنامه نویسی توزیع شده با Clojure و موارد دیگر این کتاب فرض می کند که شما با یک زبان OO مانند جاوا، C# آشنا هستید. یا C++، اما به هیچ پیش زمینه ای در خود Lisp یا Clojure نیاز ندارد. ================================= فهرست مطالب بخش 1 شروع به کار مقدمه ای بر Clojure تور گردباد بلوک های ساختمانی از چند شکلی Clojure با چند روش حالت interop Clojure و Java و جهان همزمان در حال تکامل Clojure از طریق ماکروها قسمت 2 دریافت واقعی توسعه مبتنی بر آزمایش و ذخیره سازی بیشتر داده ها با Clojure Clojure و وب مقیاس گذاری از طریق پیام پردازش داده ها با Clojure اطلاعات بیشتر در مورد پروتکل های برنامه نویسی کاربردی، سوابق، و More macros and DSLs را تایپ کنید
Summary Clojure in Action is a hands-on tutorial for the working programmer who has written code in a language like Java or Ruby, but has no prior experience with Lisp. It teaches Clojure from the basics to advanced topics using practical, real-world application examples. Blow through the theory and dive into practical matters like unit-testing and environment set-up, all the way through building a scalable web-application using domain-specific languages, Hadoop, HBase, and RabbitMQ. About the Technology Clojure is a modern Lisp for the JVM, and it has the strengths you'd expect: first-class functions, macros, support for functional programming, and a Lisp-like, clean programming style. About this Book Clojure in Action is a practical guide focused on applying Clojure to practical programming challenges. You'll start with a language tutorial written for readers who already know OOP. Then, you'll dive into the use cases where Clojure really shines: state management, safe concurrency and multicore programming, first-class code generation, and Java interop. In each chapter, you'll first explore the unique characteristics of a problem area and then discover how to tackle them using Clojure. Along the way, you'll explore practical matters like architecture, unit testing, and set-up as you build a scalable web application that includes custom DSLs, Hadoop, HBase, and RabbitMQ. Purchase of the print book comes with an offer of a free PDF, ePub, and Kindle eBook from Manning. Also available is all code from the book. What's Inside A fast-paced Clojure tutorial Creating web services with Clojure Scaling through messaging Creating DSLs with Clojure's macro system Test-driven development with Clojure Distributed programming with Clojure and more This book assumes you're familiar with an OO language like Java, C#, or C++, but requires no background in Lisp or Clojure itself. ================================== Table of Contents PART 1 GETTING STARTED Introduction to Clojure A whirlwind tour Building blocks of Clojure Polymorphism with multimethods Clojure and Java interop State and the concurrent world Evolving Clojure through macros PART 2 GETTING REAL Test-driven development and more Data storage with Clojure Clojure and the web Scaling through messaging Data processing with Clojure More on functional programming Protocols, records, and type More macros and DSLs
Front cover......Page 1
contents......Page 8
preface......Page 14
acknowledgments......Page 17
about this book......Page 19
Roadmap......Page 20
About the cover illustration......Page 22
Part 1—Getting started......Page 24
Introduction to Clojure......Page 26
1.1.1 Clojure—the reincarnation of Lisp......Page 27
1.1.3 How this book teaches Clojure......Page 28
1.2 Understanding Clojure syntax......Page 29
1.2.1 XML and parentheses......Page 30
1.2.2 Lists, vectors, and hashes......Page 32
1.3.1 Clojure and Lisp......Page 33
1.3.4 Clojure as a Lisp......Page 34
1.3.6 Clojure as a functional language......Page 41
1.3.7 Clojure as a JVM-based language......Page 46
1.4 Clojure—beyond object orientation......Page 49
1.5 Summary......Page 51
2.1 Getting started......Page 53
2.1.2 The Clojure REPL......Page 54
2.1.3 Hello, world......Page 55
2.1.4 doc and find-doc......Page 56
2.1.5 A few more points on Clojure syntax......Page 57
2.2.1 Functions......Page 59
2.2.2 The let form......Page 60
2.2.3 Side effects with do......Page 62
2.2.4 try/catch/finally and throw......Page 63
2.2.5 Reader macros......Page 64
2.3 Program flow......Page 65
2.3.1 Conditionals......Page 66
2.3.2 Functional iteration......Page 68
2.3.3 The threading macros......Page 73
2.4.2 Chars, strings, and numbers......Page 75
2.4.4 Sequences......Page 76
2.5 Summary......Page 81
Building blocks of Clojure......Page 83
3.1.1 Defining functions......Page 84
3.1.3 Higher-order functions......Page 90
3.1.4 Anonymous functions......Page 93
3.1.5 Keywords and symbols......Page 94
3.2 Scope......Page 96
3.2.1 Vars and binding......Page 97
3.2.2 The let form revisited......Page 101
3.2.3 Lexical closures......Page 102
3.3.1 ns......Page 103
3.4 Destructuring......Page 106
3.4.1 Vector bindings......Page 107
3.4.2 Map bindings......Page 109
3.5 Metadata......Page 111
3.6 Summary......Page 112
Polymorphism with multimethods......Page 113
4.1.1 Subtype polymorphism......Page 114
4.2 Method dispatch......Page 115
4.2.1 Single and double dispatch......Page 116
4.2.2 The visitor pattern (and simulating double dispatch)......Page 118
4.2.3 Multiple dispatch......Page 119
4.3.2 Using multimethods......Page 120
4.3.3 Multiple dispatch......Page 122
4.3.4 Ad hoc hierarchies......Page 123
4.3.5 Redis-clojure......Page 126
4.4 Summary......Page 127
Clojure and Java interop......Page 129
5.1.1 Importing Java classes into Clojure......Page 130
5.1.2 Creating instances and accessing methods and fields......Page 131
5.1.3 memfn......Page 135
5.1.5 Arrays......Page 136
5.1.6 Implementing interfaces and extending classes......Page 137
5.2.1 Example–a tale of two calculators......Page 138
5.2.2 Creating Java classes and interfaces using gen-class and gen-interface......Page 140
5.3 Calling Clojure from Java......Page 143
5.4 Summary......Page 144
State and the concurrent world......Page 145
6.1.1 Common problems with shared state......Page 146
6.1.2 The traditional solution......Page 147
6.2 Identities and values......Page 148
6.2.1 Immutable values......Page 149
6.2.2 Objects and time......Page 150
6.2.3 Immutability and concurrency......Page 151
6.3 The Clojure way......Page 152
6.3.1 Requirements for immutability......Page 153
6.4 Refs......Page 154
6.4.1 Mutating refs......Page 155
6.4.2 Software transactional memory......Page 157
6.5.1 Mutating agents......Page 159
6.5.2 Working with agents......Page 160
6.5.3 Side effects in STM transactions......Page 162
6.6 Atoms......Page 163
6.6.1 Mutating atoms......Page 164
6.7 Vars......Page 165
6.8 State and its unified access model......Page 166
6.9 Watching for mutation......Page 167
6.10.1 Futures......Page 168
6.11 Summary......Page 169
Evolving Clojure through macros......Page 171
7.1.1 Textual substitution......Page 172
7.1.2 The unless example......Page 173
7.1.3 Macro templates......Page 176
7.1.4 Recap—why macros?......Page 180
7.2.2 declare......Page 182
7.2.5 time......Page 183
7.3.1 infix......Page 184
7.3.2 randomly......Page 185
7.3.3 defwebmethod......Page 186
7.3.4 assert-true......Page 187
7.4 Summary......Page 188
Part 2—Getting real......Page 190
Test-driven development and more......Page 192
8.1.1 Example: dates and string......Page 193
8.2.1 Example: expense finders......Page 201
8.2.2 Stubbing......Page 202
8.2.3 Mocking......Page 204
8.2.4 Mocks versus stubs......Page 205
8.3.1 Testing......Page 210
8.4 Summary......Page 211
Data storage with Clojure......Page 212
9.1.1 ActiveRecord, users, and charges......Page 213
9.1.2 The user model......Page 214
9.1.3 Associations......Page 216
9.1.4 Validations and callbacks......Page 217
9.1.5 A look under the hood......Page 219
9.2.1 Meet HBase......Page 220
9.2.2 Using Clojure to access HBase......Page 223
9.3.2 Accessing Redis from Clojure programs......Page 233
9.3.3 A Redis data mapper......Page 235
9.4 Summary......Page 242
Clojure and the web......Page 244
10.1.1 The HTTP engine......Page 245
10.2.1 Understanding Ring......Page 252
10.2.2 Middleware......Page 253
10.3.1 Using Compojure......Page 255
10.3.2 Under the hood......Page 256
10.4.1 clj-html......Page 259
10.4.2 Under the hood......Page 261
10.5 Summary......Page 262
Scaling through messaging......Page 263
11.1.2 ActiveMQ, RabbitMQ, ZeroMQ......Page 264
11.2 Clojure and RabbitMQ......Page 265
11.2.2 Connecting to RabbitMQ......Page 266
11.2.4 Receiving messages from RabbitMQ......Page 267
11.3.1 Creating remote workers......Page 272
11.3.2 Servicing worker requests......Page 276
11.3.3 Putting it all together......Page 279
11.3.4 Multicasting messages to multiple receivers......Page 284
11.3.5 Calling all workers......Page 289
11.3.6 Additional features......Page 294
11.4 Summary......Page 295
Data processing with Clojure......Page 296
12.1.1 Getting started with map/reduce—counting words......Page 297
12.1.2 Generalizing the map/reduce......Page 299
12.1.3 Parsing logs......Page 302
12.1.4 Analyzing Rails sessions......Page 308
12.1.5 Large-scale data processing......Page 311
12.2 Master/slave parallelization......Page 312
12.2.2 Maintaining status......Page 313
12.2.3 Dispatching a job......Page 315
12.2.4 Defining the slave......Page 316
12.2.5 Using the master-slave framework......Page 318
12.2.6 Running a job......Page 319
12.2.7 Seeing task errors......Page 321
12.2.8 Rerunning the job......Page 323
12.3 Summary......Page 329
More on functional programming......Page 330
13.1.1 Collecting results of functions......Page 331
13.1.2 Reducing lists of things......Page 333
13.1.3 Filtering lists of things......Page 334
13.2.1 Adapting functions......Page 335
13.2.2 Defining functions......Page 338
13.2.3 Currying......Page 339
13.3.1 Free variables and closures......Page 344
13.3.2 Delayed computation and closures......Page 345
13.3.3 Closures and objects......Page 346
13.3.4 An object system for Clojure......Page 348
13.4 Summary......Page 361
Protocols, records, and types......Page 362
14.1.1 The Clojure world......Page 363
14.1.2 The Java world......Page 364
14.1.3 The expression problem......Page 366
14.1.4 Clojure’s multimethods solution......Page 367
14.2.1 def-modus-operandi......Page 369
14.2.2 detail-modus-operandi......Page 370
14.2.3 Tracking our modus operandi......Page 371
14.3 Protocols and data types......Page 377
14.3.1 defprotocol and extend-protocol......Page 378
14.3.2 deftype, defrecord, and reify......Page 383
14.4 Summary......Page 389
More macros and DSLs......Page 390
15.1 Macros......Page 391
15.1.2 The anaphoric if......Page 392
15.1.3 The thread-it macro......Page 394
15.1.4 Shifting computation to compile time......Page 397
15.1.5 Macro-generating macros......Page 402
15.2.1 DSL-driven design......Page 406
15.2.2 User classification......Page 408
15.3 Summary......Page 418
A......Page 420
C......Page 421
D......Page 423
E......Page 424
H......Page 425
J......Page 426
M......Page 427
P......Page 429
R......Page 430
S......Page 431
U......Page 432
Z......Page 433
Back cover......Page 434