├── .bookignore ├── .gitignore ├── .ignore ├── LICENSE ├── README.md ├── chapter-1 └── 0.html ├── chapter-10 └── 0.html ├── chapter-11 └── 0.html ├── chapter-12 └── 0.html ├── chapter-13 └── 0.html ├── chapter-14 └── 0.html ├── chapter-15 └── 0.html ├── chapter-16 └── 0.html ├── chapter-17 └── 0.html ├── chapter-18 └── 0.html ├── chapter-19 └── 0.html ├── chapter-2 └── 0.html ├── chapter-20 └── 0.html ├── chapter-21 └── 0.html ├── chapter-22 └── 0.html ├── chapter-23 └── 0.html ├── chapter-3 └── 0.html ├── chapter-4 └── 0.html ├── chapter-5 └── 0.html ├── chapter-6 └── 0.html ├── chapter-7 └── 0.html ├── chapter-8 └── 0.html ├── chapter-9 └── 0.html ├── cover.jpg ├── gitbook ├── app.js ├── fonts │ ├── anonymouspro │ │ ├── 400.woff │ │ ├── 400i.woff │ │ ├── 700.woff │ │ └── 700i.woff │ ├── ebgaramond │ │ ├── 400.woff │ │ └── 400i.woff │ ├── fontawesome │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ └── fontawesome-webfont.woff │ ├── merriweather │ │ ├── 250.woff │ │ ├── 250i.woff │ │ ├── 400.woff │ │ ├── 400i.woff │ │ ├── 700.woff │ │ ├── 700i.woff │ │ ├── 900.woff │ │ └── 900i.woff │ └── opensans │ │ ├── 300.woff │ │ ├── 300i.woff │ │ ├── 400.woff │ │ ├── 400i.woff │ │ ├── 600.woff │ │ ├── 600i.woff │ │ ├── 700.woff │ │ └── 700i.woff ├── images │ └── favicon.ico ├── jsrepl │ ├── engines │ │ └── javascript-default.js │ ├── jsrepl.js │ ├── langs │ │ └── javascript │ │ │ └── jsrepl_js.js │ ├── sandbox.html │ └── sandbox.js ├── plugins │ ├── gitbook-plugin-livereload │ │ └── plugin.js │ ├── gitbook-plugin-mathjax │ │ └── plugin.js │ └── gitbook-plugin-mixpanel │ │ └── plugin.js ├── print.css └── style.css ├── images ├── 1-2.jpg ├── Programminghive.jpg └── screenshot.png ├── index.html └── search_index.json /.bookignore: -------------------------------------------------------------------------------- 1 | _book -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | _book -------------------------------------------------------------------------------- /.ignore: -------------------------------------------------------------------------------- 1 | _book -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 雪山飞鹄 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Programming Hive 读书笔记 2 | 3 | ![](images/Programminghive.jpg) 4 | 5 | 该项目使用[GitbookIO](https://github.com/GitbookIO/gitbook)。关于```GitbookIO```的详细信息,请参考官方文档。 6 | 7 | # 在本地快速阅读 8 | 9 | * 克隆本项目到本地硬盘 10 | 11 | ```bash 12 | $ git clone https://github.com/sxyx2008/programminghive.git 13 | ``` 14 | 15 | * 使用```npm```安装```gitbook``` 16 | 17 | ``` 18 | $ npm install gitbook -g 19 | ``` 20 | 21 | 注意```-g```选项。将```gitbook```安装为全局。 22 | 23 | * 切换到```programminghive```目录 24 | 25 | ``` 26 | $ cd programminghive 27 | ``` 28 | * 打开命令行或终端,执行下面的操作 29 | 30 | ``` 31 | $ gitbook serve . 32 | ``` 33 | 34 | 如: 35 | 36 | ```bash 37 | $ gitbook serve . 38 | Press CTRL+C to quit ... 39 | 40 | Live reload server started on port: 35729 41 | Starting build ... 42 | Successfuly built ! 43 | 44 | Starting server ... 45 | Serving book on http://localhost:4000 46 | ``` 47 | 48 | 接下来,你懂得。。。 49 | 50 | 51 | 52 | # [开始阅读](http://aimeizi.net/programminghive/) 53 | 54 | 55 | 56 | ![](images/screenshot.png) 57 | 58 | 59 | 60 | # 与我联系 61 | 62 | QQ:184675420 63 | 64 | Mail:sxyx2008@163.com 65 | 66 | Weibo:[http://weibo.com/qq184675420](http://weibo.com/qq184675420) 67 | 68 | WebSite:[aimeizi.net](http://aimeizi.net) 69 | 70 | GitHub:[https://github.com/sxyx2008](https://github.com/sxyx2008) 71 | 72 | 73 | # License 74 | 75 | MIT 76 | 77 | Copyright (c) 2014 雪山飞鹄 78 | -------------------------------------------------------------------------------- /chapter-14/0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 第十四章 Streaming | Programming Hive 读书笔记 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 |
50 |
51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 |

103 | 104 | Programming Hive 读书笔记 105 |

106 |
107 | 108 | 109 | 110 |
111 | 114 | 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 |

第十四章 Streaming

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 | 485 | 486 | 487 | 488 | 489 | 490 | -------------------------------------------------------------------------------- /chapter-15/0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 第十五章 自定义Hive文件和记录格式 | Programming Hive 读书笔记 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 |
50 |
51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 |

103 | 104 | Programming Hive 读书笔记 105 |

106 |
107 | 108 | 109 | 110 |
111 | 114 | 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 |

第十五章 自定义Hive文件和记录格式

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 | 485 | 486 | 487 | 488 | 489 | 490 | -------------------------------------------------------------------------------- /chapter-16/0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 第十六章 Hive的Thrift服务 | Programming Hive 读书笔记 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 |
50 |
51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 |

103 | 104 | Programming Hive 读书笔记 105 |

106 |
107 | 108 | 109 | 110 |
111 | 114 | 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 |

第十六章 Hive的Thrift服务

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 | 485 | 486 | 487 | 488 | 489 | 490 | -------------------------------------------------------------------------------- /chapter-17/0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 第十七章 存储处理程序和NoSQL | Programming Hive 读书笔记 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 |
50 |
51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 |

103 | 104 | Programming Hive 读书笔记 105 |

106 |
107 | 108 | 109 | 110 |
111 | 114 | 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 |

第十七章 存储处理程序和NoSQL

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 | 485 | 486 | 487 | 488 | 489 | 490 | -------------------------------------------------------------------------------- /chapter-18/0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 第十八章 安全 | Programming Hive 读书笔记 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 |
50 |
51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 |

103 | 104 | Programming Hive 读书笔记 105 |

106 |
107 | 108 | 109 | 110 |
111 | 114 | 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 | 485 | 486 | 487 | 488 | 489 | 490 | -------------------------------------------------------------------------------- /chapter-19/0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 第十九章 锁 | Programming Hive 读书笔记 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 |
50 |
51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 |

103 | 104 | Programming Hive 读书笔记 105 |

106 |
107 | 108 | 109 | 110 |
111 | 114 | 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 | 485 | 486 | 487 | 488 | 489 | 490 | -------------------------------------------------------------------------------- /chapter-20/0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 第二十章 Hive和Oozie整合 | Programming Hive 读书笔记 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 |
50 |
51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 |

103 | 104 | Programming Hive 读书笔记 105 |

106 |
107 | 108 | 109 | 110 |
111 | 114 | 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 |

第二十章 Hive和Oozie整合

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 | 485 | 486 | 487 | 488 | 489 | 490 | -------------------------------------------------------------------------------- /chapter-22/0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 第二十二章 HCatalog | Programming Hive 读书笔记 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 |
50 |
51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 |

103 | 104 | Programming Hive 读书笔记 105 |

106 |
107 | 108 | 109 | 110 |
111 | 114 | 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 |

第二十二章 HCatalog

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 | 485 | 486 | 487 | 488 | 489 | 490 | -------------------------------------------------------------------------------- /chapter-23/0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 第二十三章 案例研究 | Programming Hive 读书笔记 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |
48 |
49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 |

101 | 102 | Programming Hive 读书笔记 103 |

104 |
105 | 106 | 107 | 108 |
109 | 112 | 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 | 481 | 482 | 483 | 484 | 485 | 486 | -------------------------------------------------------------------------------- /cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/cover.jpg -------------------------------------------------------------------------------- /gitbook/fonts/anonymouspro/400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/anonymouspro/400.woff -------------------------------------------------------------------------------- /gitbook/fonts/anonymouspro/400i.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/anonymouspro/400i.woff -------------------------------------------------------------------------------- /gitbook/fonts/anonymouspro/700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/anonymouspro/700.woff -------------------------------------------------------------------------------- /gitbook/fonts/anonymouspro/700i.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/anonymouspro/700i.woff -------------------------------------------------------------------------------- /gitbook/fonts/ebgaramond/400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/ebgaramond/400.woff -------------------------------------------------------------------------------- /gitbook/fonts/ebgaramond/400i.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/ebgaramond/400i.woff -------------------------------------------------------------------------------- /gitbook/fonts/fontawesome/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/fontawesome/FontAwesome.otf -------------------------------------------------------------------------------- /gitbook/fonts/fontawesome/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/fontawesome/fontawesome-webfont.eot -------------------------------------------------------------------------------- /gitbook/fonts/fontawesome/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/fontawesome/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /gitbook/fonts/fontawesome/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/fontawesome/fontawesome-webfont.woff -------------------------------------------------------------------------------- /gitbook/fonts/merriweather/250.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/merriweather/250.woff -------------------------------------------------------------------------------- /gitbook/fonts/merriweather/250i.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/merriweather/250i.woff -------------------------------------------------------------------------------- /gitbook/fonts/merriweather/400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/merriweather/400.woff -------------------------------------------------------------------------------- /gitbook/fonts/merriweather/400i.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/merriweather/400i.woff -------------------------------------------------------------------------------- /gitbook/fonts/merriweather/700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/merriweather/700.woff -------------------------------------------------------------------------------- /gitbook/fonts/merriweather/700i.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/merriweather/700i.woff -------------------------------------------------------------------------------- /gitbook/fonts/merriweather/900.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/merriweather/900.woff -------------------------------------------------------------------------------- /gitbook/fonts/merriweather/900i.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/merriweather/900i.woff -------------------------------------------------------------------------------- /gitbook/fonts/opensans/300.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/opensans/300.woff -------------------------------------------------------------------------------- /gitbook/fonts/opensans/300i.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/opensans/300i.woff -------------------------------------------------------------------------------- /gitbook/fonts/opensans/400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/opensans/400.woff -------------------------------------------------------------------------------- /gitbook/fonts/opensans/400i.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/opensans/400i.woff -------------------------------------------------------------------------------- /gitbook/fonts/opensans/600.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/opensans/600.woff -------------------------------------------------------------------------------- /gitbook/fonts/opensans/600i.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/opensans/600i.woff -------------------------------------------------------------------------------- /gitbook/fonts/opensans/700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/opensans/700.woff -------------------------------------------------------------------------------- /gitbook/fonts/opensans/700i.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/fonts/opensans/700i.woff -------------------------------------------------------------------------------- /gitbook/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/gitbook/images/favicon.ico -------------------------------------------------------------------------------- /gitbook/jsrepl/engines/javascript-default.js: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Copyright Joyent, Inc. and other Node contributors. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a 6 | copy of this software and associated documentation files (the 7 | "Software"), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to permit 10 | persons to whom the Software is furnished to do so, subject to the 11 | following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included 14 | in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 17 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN 19 | NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 20 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 21 | OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 22 | USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | Original at: https://github.com/joyent/node/blob/master/lib/util.js 25 | */ 26 | (function(){function o(c){return c instanceof Array||Array.isArray(c)||c&&c!==Object.prototype&&o(c.__proto__)}function p(c){return c instanceof RegExp||typeof c==="function"&&c.constructor.name==="RegExp"&&c.compile&&c.test&&c.exec&&(""+c).match(/^\/.*\/[gim]{0,3}$/)}var q=80,l=function(c,h,b,f){function m(a,c){switch(typeof a){case "undefined":return d("undefined","undefined");case "string":var b="'"+JSON.stringify(a).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return d(b,"string"); 27 | case "number":return d(""+a,"number");case "boolean":return d(""+a,"boolean")}if(a===null)return d("null","null");var f=Object.keys(a),i=h?Object.getOwnPropertyNames(a):f;if(typeof a==="function"&&i.length===0)return p(a)?d(""+a,"regexp"):d("[Function"+(a.name?": "+a.name:"")+"]","special");if(a instanceof Date&&i.length===0)return d(a.toUTCString(),"date");var j,l;o(a)?(l="Array",b=["[","]"]):(l="Object",b=["{","}"]);typeof a==="function"?(j=a.name?": "+a.name:"",j=p(a)?" "+a:" [Function"+j+"]"): 28 | j="";a instanceof Date&&(j=" "+a.toUTCString());if(i.length===0)return b[0]+j+b[1];if(c<0)return p(a)?d(""+a,"regexp"):d("[Object]","special");k.push(a);i=i.map(function(b){var e,g;a.__lookupGetter__&&(a.__lookupGetter__(b)?g=a.__lookupSetter__(b)?d("[Getter/Setter]","special"):d("[Getter]","special"):a.__lookupSetter__(b)&&(g=d("[Setter]","special")));f.indexOf(b)<0&&(e="["+b+"]");g||(k.indexOf(a[b])<0?(g=c===null?m(a[b]):m(a[b],c-1),g.indexOf("\n")>-1&&(g=o(a)?g.split("\n").map(function(a){return" "+ 29 | a}).join("\n").substr(2):"\n"+g.split("\n").map(function(a){return" "+a}).join("\n"))):g=d("[Circular]","special"));if(typeof e==="undefined"){if(l==="Array"&&b.match(/^\d+$/))return g;e=JSON.stringify(""+b);e.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(e=e.substr(1,e.length-2),e=d(e,"name")):(e=e.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),e=d(e,"string"))}return e+": "+g});k.pop();var n=0;return i=i.reduce(function(a,b){n++;b.indexOf("\n")>=0&&n++;return a+b.length+1},0)>q?b[0]+ 30 | (j===""?"":j+"\n ")+" "+i.join(",\n ")+" "+b[1]:b[0]+j+" "+i.join(", ")+" "+b[1]}var k=[],d=function(a,b){var c={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},d={special:"cyan",number:"blue","boolean":"yellow",undefined:"grey","null":"bold",string:"green",date:"magenta",regexp:"red"}[b];return d?"\u001b["+c[d][0]+"m"+a+"\u001b["+c[d][1]+"m":a};f||(d=function(a){return a}); 31 | return m(c,typeof b==="undefined"?2:b)},r=/%[sdj%]/g,s=function(c){if(typeof c!=="string"){for(var h=[],b=0;b=m)return c;switch(c){case "%s":return String(f[b++]);case "%d":return Number(f[b++]);case "%j":return JSON.stringify(f[b++]);case "%%":return"%";default:return c}}),k=f[b];b-1?g.push(f.splice(b,1)):g.push(void 0)):g.push(this.listeners[b]=[]));return g};h.prototype.fire=function(a,c){var b,f,d,e,c=this.makeArray(c); 6 | f=this.listeners[a];if(f!=null){c.push(a);var g;g=[];for(d=0,e=f.length;d 2 | 3 | 4 | jsREPL Sandbox 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /gitbook/jsrepl/sandbox.js: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions 8 | are met: 9 | 10 | 1. Redistributions of source code must retain the above copyright 11 | notice, this list of conditions and the following disclaimer. 12 | 13 | 2. Redistributions in binary form must reproduce the above copyright 14 | notice, this list of conditions and the following disclaimer in the 15 | documentation and/or other materials provided with the distribution. 16 | 17 | 3. The names of its contributors may not be used to endorse or promote 18 | products derived from this software without specific prior written 19 | permission. 20 | 21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 25 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 26 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 27 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 28 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 29 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 30 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 31 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 | 33 | Any feedback is very welcome. 34 | http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html 35 | email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space) 36 | */ 37 | (function(c){try{c.window=c.window||c}catch(b){}try{c.self=c.self||c}catch(e){}var a;c.addEventListener("message",function(d){for(var d=JSON.parse(d.data),b=a,c=d.type.split("."),e=0;ethis.OUT_EVERY_MS&&(clearTimeout(this.outTimeout),this.flush())},flush:function(){if(this.output_buffer.length)this.post({type:"output",data:this.output_buffer.join("")}),this.outTimeout=0,this.output_buffer=[]},err:function(a){a={type:"error", 41 | data:a.toString()};this.flush();this.post(a)},input:function(a){this.input.write=a;this.flush();this.post({type:"input"})},result:function(a){a={type:"result",data:a};this.flush();this.post(a)},ready:function(){this.post({type:"ready"})},getNextLineIndent:function(a){this.post({type:"indent",data:this.engine.GetNextLineIndent(a)})},progress:function(a){this.post({type:"progress",data:a})},dbInput:function(){this.flush();this.post({type:"db_input"})},serverInput:function(){this.flush();this.post({type:"server_input"})}, 42 | bindAll:function(a){for(var b in a)(function(b){var c=a[b];typeof c=="function"&&(a[b]=function(){var b=[].slice.call(arguments);return c.apply(a,b)})})(b)},hide:function(a){try{Object.defineProperty(c,a,{writable:false,enumerable:false,configurable:false,value:c[a]})}catch(b){}},set_input_server:function(a){this.input_server={url:(a.url||"/emscripten/input/")+a.input_id,cors:a.cors||false}}};a.bindAll(a);c.Sandboss=a;a.hide("Sandboss");if(self.openDatabaseSync){var f=self.openDatabaseSync("replit_input", 43 | "1.0","Emscripted input",1024);self.prompt=function(){a.dbInput();var b=null;f.transaction(function(a){b=a});for(var c;!(c=b.executeSql("SELECT * FROM input").rows).length;)for(c=0;c<1E8;c++);b.executeSql("DELETE FROM input");return c.item(0).text};a.hide("prompt")}else if(!a.isFrame)self.prompt=function(){a.serverInput();var b;b=a.input_server.url;var c=new XMLHttpRequest;if(a.input_server.cors)if("withCredentials"in c)c.open("GET",b,false);else if(typeof XDomainRequest!="undefined")c=new XDomainRequest, 44 | c.open("GET",b);else throw Error("Your browser doesn' support CORS");else c.open("GET",b,false);b=c;b.send(null);return b.status===200?b.responseText:"ERROR: ON NON-WEBKIT BROWSERS CONNECTION TO THE SERVER IS NEEDED FOR INPUT"}})(this); 45 | (function(){var c=function(b){b==void 0&&(b=Date.now());this.N=624;this.M=397;this.MATRIX_A=2567483615;this.UPPER_MASK=2147483648;this.LOWER_MASK=2147483647;this.mt=Array(this.N);this.mti=this.N+1;this.init_genrand(b)};c.prototype.init_genrand=function(b){this.mt[0]=b>>>0;for(this.mti=1;this.mti>>30,this.mt[this.mti]=(((b&4294901760)>>>16)*1812433253<<16)+(b&65535)*1812433253+this.mti,this.mt[this.mti]>>>=0};c.prototype.init_by_array=function(b, 46 | c){var a,f,d;this.init_genrand(19650218);a=1;f=0;for(d=this.N>c?this.N:c;d;d--){var h=this.mt[a-1]^this.mt[a-1]>>>30;this.mt[a]=(this.mt[a]^(((h&4294901760)>>>16)*1664525<<16)+(h&65535)*1664525)+b[f]+f;this.mt[a]>>>=0;a++;f++;a>=this.N&&(this.mt[0]=this.mt[this.N-1],a=1);f>=c&&(f=0)}for(d=this.N-1;d;d--)h=this.mt[a-1]^this.mt[a-1]>>>30,this.mt[a]=(this.mt[a]^(((h&4294901760)>>>16)*1566083941<<16)+(h&65535)*1566083941)-a,this.mt[a]>>>=0,a++,a>=this.N&&(this.mt[0]=this.mt[this.N-1],a=1);this.mt[0]= 47 | 2147483648};c.prototype.genrand_int32=function(){var b,c=[0,this.MATRIX_A];if(this.mti>=this.N){var a;this.mti==this.N+1&&this.init_genrand(5489);for(a=0;a>>1^c[b&1];for(;a>>1^c[b&1];b=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK;this.mt[this.N-1]=this.mt[this.M-1]^ 48 | b>>>1^c[b&1];this.mti=0}b=this.mt[this.mti++];b^=b>>>11;b^=b<<7&2636928640;b^=b<<15&4022730752;b^=b>>>18;return b>>>0};c.prototype.genrand_int31=function(){return this.genrand_int32()>>>1};c.prototype.genrand_real1=function(){return this.genrand_int32()*(1/4294967295)};c.prototype.random=function(){return this.genrand_int32()*(1/4294967296)};c.prototype.genrand_real3=function(){return(this.genrand_int32()+0.5)*(1/4294967296)};c.prototype.genrand_res53=function(){var b=this.genrand_int32()>>>5,c=this.genrand_int32()>>> 49 | 6;return(b*67108864+c)*1.1102230246251565E-16};(function(){Math._random=Math.random;var b=new c(42);Math.random=function(){return b.random()};Math.seed=function(e){b=new c(e)}})()})();if(!Date.now)Date.now=function(){return+new Date};if(!Object.keys)Object.keys=function(c){if(c!==Object(c))throw new TypeError("Object.keys called on non-object");var b=[],e;for(e in c)Object.prototype.hasOwnProperty.call(c,e)&&b.push(e);return b};if(!Object.getOwnPropertyNames)Object.getOwnPropertyNames=Object.keys; 50 | if(!Object.create)Object.create=function(c){function b(){}b.prototype=c;return new b};if(!Array.isArray)Array.isArray=function(c){return{}.toString.call(c)=="[object Array]"}; 51 | if(!Function.prototype.bind)Function.prototype.bind=function(c){if(typeof this!=="function")throw new TypeError("Function.prototype.bind - what is trying to be fBound is not callable");var b=Array.prototype.slice.call(arguments,1),e=this,a=function(){},f=function(){try{return e.apply(this instanceof a?this:c||window,b.concat(Array.prototype.slice.call(arguments)))}catch(d){return e.apply(c||window,b.concat(Array.prototype.slice.call(arguments)))}};a.prototype=this.prototype;f.prototype=new a;return f}; 52 | if(!Object.freeze)Object.freeze=function(c){return c.___frozen___=true};if(!Object.isFrozen)Object.isFrozen=function(c){return Boolean(c.___frozen___)}; 53 | -------------------------------------------------------------------------------- /gitbook/plugins/gitbook-plugin-livereload/plugin.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var newEl = document.createElement('script'), 3 | firstScriptTag = document.getElementsByTagName('script')[0]; 4 | 5 | if (firstScriptTag) { 6 | newEl.async = 1; 7 | newEl.src = '//' + window.location.hostname + ':35729/livereload.js'; 8 | firstScriptTag.parentNode.insertBefore(newEl, firstScriptTag); 9 | } 10 | 11 | })(); 12 | -------------------------------------------------------------------------------- /gitbook/plugins/gitbook-plugin-mathjax/plugin.js: -------------------------------------------------------------------------------- 1 | require(["gitbook"], function(gitbook) { 2 | MathJax.Hub.Config({ 3 | tex2jax: { 4 | inlineMath: [['$','$'], ['\\(','\\)']], 5 | processEscapes: true 6 | } 7 | }); 8 | 9 | 10 | gitbook.events.bind("page.change", function() { 11 | MathJax.Hub.Typeset() 12 | }); 13 | }); -------------------------------------------------------------------------------- /gitbook/plugins/gitbook-plugin-mixpanel/plugin.js: -------------------------------------------------------------------------------- 1 | (function(e,b){if(!b.__SV){var a,f,i,g;window.mixpanel=b;b._i=[];b.init=function(a,e,d){function f(b,h){var a=h.split(".");2==a.length&&(b=b[a[0]],h=a[1]);b[h]=function(){b.push([h].concat(Array.prototype.slice.call(arguments,0)))}}var c=b;"undefined"!==typeof d?c=b[d]=[]:d="mixpanel";c.people=c.people||[];c.toString=function(b){var a="mixpanel";"mixpanel"!==d&&(a+="."+d);b||(a+=" (stub)");return a};c.people.toString=function(){return c.toString(1)+".people (stub)"};i="disable track track_pageview track_links track_forms register register_once alias unregister identify name_tag set_config people.set people.set_once people.increment people.append people.track_charge people.clear_charges people.delete_user".split(" "); 2 | for(g=0;g retest tracking"); 19 | track(e, data, t*2); 20 | }, t); 21 | return; 22 | } 23 | console.log("track", e); 24 | 25 | data = data || {}; 26 | data.domain = window.location.host; 27 | 28 | mixpanel.track(e, data); 29 | }; 30 | 31 | gitbook.events.bind("start", function(e, config) { 32 | config.mixpanel = config.mixpanel || {}; 33 | 34 | mixpanel.init(config.mixpanel.token || "01eb2b950ae09a5fdb15a98dcc5ff20e"); 35 | track("page.start"); 36 | }); 37 | 38 | gitbook.events.bind("page.change", function() { 39 | track("page.change"); 40 | }); 41 | 42 | gitbook.events.bind("exercise.submit", function(e, data) { 43 | track("exercise.submit", data); 44 | }); 45 | }); -------------------------------------------------------------------------------- /images/1-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/images/1-2.jpg -------------------------------------------------------------------------------- /images/Programminghive.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/images/Programminghive.jpg -------------------------------------------------------------------------------- /images/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v5tech/programminghive/ce3f0010ad780fa1e323d5ddb47c89c4b6fc6b3e/images/screenshot.png --------------------------------------------------------------------------------