Dear Wiki user, You have subscribed to a wiki page or wiki category on "Lucy Wiki" for change notification.
The "LucyBookClub" page has been changed by MarvinHumphrey: https://wiki.apache.org/lucy/LucyBookClub?action=diff&rev1=59&rev2=60 Comment: Start Pro Git == Agenda == The Lucy Book Club is open to anyone who is interested in search, parsing, compilers, and Lucy in general. - We are currently taking a MOOC, [[https://www.coursera.org/course/hwswinterface|The Hardware/Software Interface]], offered by the University of Washington in conjunction with Coursera. + On January 14, we will start reading through the book [[http://git-scm.com/book|Pro Git]] by Scott Chacon. The entire book is available online as well as in traditional dead-tree format. == Schedule == - We currently meet weekly on Tuesday evenings at 19:00 PDT. The meeting takes place online with Google Plus Hangouts, a video chat service. For more information on how to access the chat room log into irc.freenode.net/#lucy_dev and ask for an invite. + We currently meet weekly on Tuesday evenings at 18:00 PDT. The meeting takes place online with Google Plus Hangouts, a video chat service. For more information on how to access the chat room log into irc.freenode.net/#lucy_dev and ask for an invite. + + We used to meet at 19:00 PDT, but we have changed the schedule to be more convenient for our East Coast participants. == Where To Get Information == @@ -20, +22 @@ [[mailto:[email protected]|[email protected]]] == Upcoming Meetings == + + === Tuesday January 14, 18:00 PDT: === + + ''Pro Git'' Chapter 1: [[http://git-scm.com/book/en/Getting-Started|Getting Started]] + + Discussion questions: + + 1. What are some backup strategies that don't use version control? + 1. What are some of the features of version control? + 1. What does RCS stand for? + 1. How does RCS produce the current contents of a file which has been changed many times? + 1. How is RCS better than saving copies of files in time-stamped directories? + 1. How does version control differ from a backup system like Time Machine? + 1. What problem inherent to local version control systems like RCS were centralized version control systems designed to solve? + 1. What are the pros and cons of centralized version control? + 1. What are the pros and cons of distributed version control? + 1. Which version control systems store snapshots and which store differences? + 1. How did Linux manage version control until around 2002? + 1. What were some of the design criteria for Git? + 1. Why is `git log` so much faster than `svn log`? + 1. Would Git work well for the following tasks? + * writing a novel + * writing poetry + * writing a journal + * writing magazine articles + * taking notes on academic classes + * managing a small static website + * form letters + * archiving log files + * documentation + * magazine layouts + * raster image files, e.g. Photoshop native format + * .m3u playlists + * video editing projects + * MIDI music sequence files + 1. How does addressing content by hash improve Git's integrity? + 1. What are the security advantages of a DVCS? + 1. When your commit changes only one file out of many, how does Git handle saving the state of the files which have *not* changed? + 1. What are the three states that a tracked file can be in at any time? What is the state of an _untracked_ file? + 1. What is Git's "staging area" and how is it implemented? + 1. What are the three levels of config files for Git? Which overrides which? + 1. When you run `git config --list`, you may see the same key multiple times with different values. What does this mean? + + == Community Notes == + + Below are an excerpt of notes from previous meetings and or anything of interest related to the meetings. + === Tuesday June 18, 7:00 pm PDT: === @@ -35, +84 @@ 1. Without indirection, what happens if you need to update data which exists at multiple memory locations? 1. What are some non-computer-science examples of indirection? 1. What aren't there any machines which are capable of mapping a full 64-bit address space in physical memory? - 1. What are some systems which use direct physical addressing? + 1. What are some systems which use direct physical addressing? 1. What are the three states for virtual memory pages? 1. Roughly how large is a virtual memory page? 1. Why not use write-through with virtual memory? @@ -56, +105 @@ 1. There are two kinds of fragmentation: internal and external. Internal and external to what? How do they differ? 1. Briefly describe four approaches to managing a memory heap: _implicit free list_, _explicit free list_, _segregated free list_, and _blocks sorted by size_. 1. What are the differences between _first fit_, _next fit_ and _best fit_? - 1. What is _splitting_? + 1. What is _splitting_? 1. What is _coalescing_? 1. When memory is nearly full, which is faster: implicit or explicit free list? 1. For a segregated free list allocator, how closely does memory utilization approach best fit? @@ -65, +114 @@ 1. If heap memory were executable, how might a double free() lead to a an exploit resulting in arbitrary code execution? Hint: it's like a stack buffer overflow, but much harder for the attacker. 1. Why does Professor Ceze keep saying "Simple, right?" for stuff that isn't simple? - - - - == Community Notes == - - Below are an excerpt of notes from previous meetings and or anything of interest related to the meetings. === Tuesday June 11, 7:00 pm PDT: === @@ -111, +154 @@ Review questions: 1. How well has memory speed and memory bandwidth kept up with increases in CPU speed? - 1. What is the unit of memory which is transfered between caches? + 1. What is the unit of memory which is transfered between caches? 1. What are the two types of _locality_? - 1. How should code for a loop which iterates over a multi-dimensional array change depending on whether the array is stored in column-major or row-major order? + 1. How should code for a loop which iterates over a multi-dimensional array change depending on whether the array is stored in column-major or row-major order? 1. Why is it faster to perform matrix multiplication in blocks rather than row by row? - 1. How much faster do hits have to be than misses in order for a 99% hit rate to be twice as fast as a 97% hit rate? + 1. How much faster do hits have to be than misses in order for a 99% hit rate to be twice as fast as a 97% hit rate? - 1. Why is _miss rate_ often used rather than _hit rate_? + 1. Why is _miss rate_ often used rather than _hit rate_? - 1. What's the typical miss penalty for L1? L2? Main memory? Can there be a miss penalty for data stored a register? + 1. What's the typical miss penalty for L1? L2? Main memory? Can there be a miss penalty for data stored a register? 1. How are caches divided within the Intel Core i7? - 1. What are the drawbacks of a _direct-mapped_ cache? What are the drawbacks of a _fully associative_ cache? + 1. What are the drawbacks of a _direct-mapped_ cache? What are the drawbacks of a _fully associative_ cache? 1. What purpose does the _tag_ in a cache entry serve? 1. In addition to the tag, a cache read also involves a _set index_ and a _block offset_ -- but those numbers are not stored explicity as part of the cache entry. How are they used? 1. How is the _valid bit_ used in the context of a write-back cache? @@ -188, +231 @@ 9. How would you get at a single byte within an x86 register? 10. What are the four integer op suffixes from AT&T assembler and what do they stand for? 11. What is the pointer dereferencing operator in AT&T assembler? What character is used as a sigil for constants? - 12. Describe _displacement_ and _indirect_ addressing modes. Describe the "general form" of the addressing idiom. + 12. Describe _displacement_ and _indirect_ addressing modes. Describe the "general form" of the addressing idiom. 13. How can the LEA instruction be abused to perform simple arithmetic using the general form of addressing? What checks are omitted by LEA which are performed by standard arithmetic instructions like ADD? 14. What allows chips which implement the x86-64 ISA to perform fewer manipulations of the stack than x86 chips? 15. What's the difference between the SARL and SHRL instructions? @@ -196, +239 @@ 17. What do testX and cmpX do? 18. What it is the point of `testl %eax %eax`? 19. Which control construct requires more JMP instructions: while or do-while? How many JMP instructions does a for-loop require? - 20. How does the `cmovC` "conditional move" instruction make it possible to avoid a JMP? + 20. How does the `cmovC` "conditional move" instruction make it possible to avoid a JMP? 21. What advantage does PC-relative addressing offer over absolute addressing? 22. Under what circumstances can a `switch` statement be implemented as a "jump table"? 23. Explain the instruction `jmp *.L62(,%edx,4)` @@ -213, +256 @@ 1. What is hardware? What is software? What is the "hardware/software interface" as defined by the instructors? What do you, personally, hope to gain from studying the "hardware/software interface"? 2. What attributes of assembly language make it easier to understand than machine code? - 3. Why might a computer process/thread be described as an "illusion"? + 3. Why might a computer process/thread be described as an "illusion"? 4. What aspect of the low and high voltages representing zeroes and ones limits CPU clock speed? 5. In what sense are CPU registers, CPU cache, main memory, persistent storage (e.g. hard disk), and offline storage (e.g. offsite backups) all "memory"? How do they differ? 6. What are the advantages of little-endian architecture with respect to casting between integer widths? @@ -307, +350 @@ 2. Why is the strategy of using the most restrictive visibility possible a good practice when writing C++ to work with Elf? - 3 What is a symbol map file for? + 3 What is a symbol map file for? 4 What is a wrapper function? And what are drawbacks of using wrapper functions? @@ -460, +503 @@ Here are review questions for the Drepper material: - 1. What limitations of the `a.out` format make it ill-suited for creating shared libraries? If a modern Linux system supplied shared libraries derived from `a.out`, how would that affect applications which use them? + 1. What limitations of the `a.out` format make it ill-suited for creating shared libraries? If a modern Linux system supplied shared libraries derived from `a.out`, how would that affect applications which use them? 2. What is the main difference between a compiled ELF shared library and a compiled binary executable? 3. If you're creating a very large application which takes a long time to link, how can you use shared libraries to minimize the edit-compile-test loop and maximize programmer efficiency? Compare this use of shared libraries to traditional separate compilation. 4. When loading the contents of an executable file into memory, why is it desirable to mark as many pages as possible non-writable? @@ -553, +596 @@ 12.4.4 Transactional Memory 12.4.5 Implicit Synchronization 12.5 Message Passing - 12.6 Summary and Concluding Remarks + 12.6 Summary and Concluding Remarks }}} @@ -869, +912 @@ ''[[http://www.amazon.com/Managing-Gigabytes-Compressing-Multimedia-Information/dp/1558605703/ref=sr_1_1?ie=UTF8&qid=1347647932&sr=8-1&keywords=Managing+Gigabytes|Managing Gigabytes]]'', by Ian H Witten. - ''[[http://www.amazon.com/Object-Oriented-Programming-Evolutionary-Brad-Cox/dp/0201548348/ref=sr_1_1?s=books&ie=UTF8&qid=1347648038&sr=1-1&keywords=Object-Oriented+Programming%3A++An+Evolutionary+Approach|Object-Oriented Programming: An Evolutionary Approach]], by Brad J Cox. + ''[[http://www.amazon.com/Object-Oriented-Programming-Evolutionary-Brad-Cox/dp/0201548348/ref=sr_1_1?s=books&ie=UTF8&qid=1347648038&sr=1-1&keywords=Object-Oriented+Programming%3A++An+Evolutionary+Approach|Object-Oriented Programming: An Evolutionary Approach]], by Brad J Cox. ''[[http://www.faqs.org/docs/artu/index.html|The Art of Unix Programming]], by Eric Steven Raymond. @@ -882, +925 @@ == Past Books == ''[[http://www.amazon.com/Programming-Language-Pragmatics-Third-Edition/dp/0123745144/ref=sr_1_1?ie=UTF8&qid=1342155294&sr=8-1&keywords=programming+language+pragmatics|Programming Languages Pragmatics]]'', by Michael L Scott -
