Where can buy Getting Started with Advanced C# 1st Edition Vaskaran Sarcar [Sarcar ebook with cheap price
Where can buy Getting Started with Advanced C# 1st Edition Vaskaran Sarcar [Sarcar ebook with cheap price
Where can buy Getting Started with Advanced C# 1st Edition Vaskaran Sarcar [Sarcar ebook with cheap price
com
https://textbookfull.com/product/getting-started-
with-advanced-c-1st-edition-vaskaran-sarcar-
sarcar/
https://textbookfull.com/product/interactive-c-fundamentals-core-
concepts-and-patterns-1st-edition-vaskaran-sarcar/
textbookfull.com
https://textbookfull.com/product/design-patterns-in-c-a-hands-on-
guide-with-real-world-examples-2nd-edition-vaskaran-sarcar/
textbookfull.com
https://textbookfull.com/product/programming-with-stm32-getting-
started-with-the-nucleo-board-and-c-c-donald-norris/
textbookfull.com
https://textbookfull.com/product/the-little-house-book-of-wisdom-
first-edition-wilder/
textbookfull.com
Knowledge Science Engineering and Management 11th
International Conference KSEM 2018 Changchun China August
17 19 2018 Proceedings Part I Weiru Liu
https://textbookfull.com/product/knowledge-science-engineering-and-
management-11th-international-conference-ksem-2018-changchun-china-
august-17-19-2018-proceedings-part-i-weiru-liu/
textbookfull.com
https://textbookfull.com/product/500-years-after-leonardo-da-vinci-
machines-towards-innovation-and-control-maide-bucolo/
textbookfull.com
https://textbookfull.com/product/city-and-society-in-the-low-
countries-1100-1600-1st-edition-bruno-blonde/
textbookfull.com
https://textbookfull.com/product/the-metaphysics-of-relations-1st-
edition-marmodoro/
textbookfull.com
Digital Economies At Global Margins Mark Graham
https://textbookfull.com/product/digital-economies-at-global-margins-
mark-graham/
textbookfull.com
Vaskaran Sarcar
Getting Started with Advanced C#
Upgrade Your Programming Skills
Foreword by Deepak Seshadri
Vaskaran Sarcar
Kolkata, West Bengal, India
The publisher, the authors and the editors are safe to assume that the
advice and information in this book are believed to be true and accurate
at the date of publication. Neither the publisher nor the authors or the
editors give a warranty, expressed or implied, with respect to the
material contained herein or for any errors or omissions that may have
been made. The publisher remains neutral with regard to jurisdictional
claims in published maps and institutional affiliations.
Deepak Seshadri
Performance Architect
Printer Firmware, HP Inc.
Introduction
This book is an introductory guide to advanced programming in C#.
The examples and code have been deliberately kept simple to allow you
to concentrate on understanding important concepts in depth.
In 2015, I wrote C# Basics: Test your Skill, which covered
fundamental concepts in C#. In 2018, the book was further enhanced
and Interactive C# was published. Immediately after its release, it
became the “#1 New Release” in the C# and object-oriented
programming category on Amazon.com. The book was translated into
Japanese in 2019. This kind of success motivated me to enhance the
work further. I was involved in teaching since 2005, which was another
motivation to introduce a book like this one. So, it is my privilege to
present you with Getting Started with Advanced C#: Upgrade Your
Programming Skills. Before I proceed further, I want to thank you for
your support to motivate me to write a book like this.
If you ask me about the most fascinating characteristic of this book,
I’d tell you that similar to Interactive C#, it is also interactive and
simple, but this time, you start exploring advanced programming by
using some important features in C#. In this book, my goal was not to
demonstrate typical and tough programs using all the latest features of
C#; instead, like my previous books, the goal is to fuel your creativity
and encourage you to implement advanced concepts using core
constructs in C#. I always believe that the word core is most important
when you learn a programming language. Whatever is the latest feature
today, will be outdated tomorrow but the core constructs are evergreen,
and in most cases, they function behind the new features unnoticed.
This is why although this book is for advanced programmers, in Part 1, I
focus on the fundamental features of advanced C#. I show you how to
incorporate them in different programming techniques in Part 2.
You’ll probably agree that when you travel an unknown path to a
destination, it helps to have a caring guide. Learning a new
programming language through a book is a journey that was always on
my mind. In this book, I not only explain topics in an informative way, I
also made the book interactive by using Q&A sessions in each chapter.
These sessions assist you in your learning process, and they act as
“doubt-clearing sessions” that make you a feel that you are asking your
guide questions (or expressing your doubts), and you are receiving
answers from him in a simple one-to-one communication. In most
cases, you’ll get a full demonstration of programs along with the output,
followed by important analysis to get maximum benefit. As a result, you
can continue reading without interruption.
The aim of this book is to give you a classroom environment feeling,
where you are not only a listener, you are also an active participant who
can ask questions and get the answers to them. Before you jump into
the topics, let me highlight few more points about the book, including
the way the chapters are organized and who the intended readers are.
Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
How the Book Is Organized
The book has two major parts.
Part 1 consists of the first three chapters, in which you see the
discussion and implementation of delegates, events, and lambda
expressions. These are the building blocks for advanced
programming in C#, and before you move to Part 2, you need to
master them. If you have already gone through other C# books, you
may be wondering why there are three separate chapters for
delegates, events, and lambda expressions. In those books, you may
see their presence in a single chapter with only some sample code.
But as you go forward in this book, you’ll clearly understand why a
detailed discussion on these topics is vital to really mastering the
advanced concepts and using built-in advanced features in C#.
In Part 2, there are four chapters. You will experience advanced
programming in detail by using the concepts/constructs that you
learned in Part 1. You start with generic programming and then learn
about thread programming and asynchronous programming to
benefit from a multithreaded environment.
In C#, database programming can be done in three different ways:
using connected layers, using disconnected layers, or using Entity
Framework (EF). This book is for the advanced C# beginners, and
LINQ (which is the basis of EF) is not discussed. So, I excluded the
discussion on EF. In the final chapter, you’ll learn database
programming using ADO.NET to connect to a MySQL database and
how to exercise SQL statements and stored procedures through your
C# applications. You will not find many materials that cover the use
of C# with MySQL (instead, you may see other RDBMS; for example,
Microsoft SQL Server), but I want to assure you that MySQL is a big
name and considered a top player in RDBMS. Most importantly, its
open source and widely used.
I believe that the code in this book is compatible with all the latest
and upcoming versions of C#. I have used Visual Studio, which is an
integrated development environment (IDE) from Microsoft. Although
you can run a C# application in many ways (for example, using
Notepad and command prompts), I opted for Visual Studio because
it’s very common and widely used in C# applications.
It’s important to note that apart from a few special programs, I used
.NET Core as my target framework, which simply uses C# 8.0. As per
Microsoft, the latest C# compiler can determine the default language
version based on the target framework(s). This is because the C#
language may use features that are used in specific .NET
implementation only. I recommend that you go to
https://docs.microsoft.com/en-
us/dotnet/csharp/language-reference/configure-
language-version if you are interested in C# versioning.
Please remember that as you learn about these concepts, try writing
your own code; only then will you master an area.
You can download all the source code in the book from Apress’s
website. I plan to maintain the errata, and I can also make any
necessary updates/announcements there. I suggest that you visit the
Errata pages to receive any corrections or updates.
Prerequisite Knowledge
The target readers for this book are those who are familiar with the
basic language constructs in C# and know about object-oriented
concepts like polymorphism, inheritance, abstraction, encapsulation,
and most importantly, know how to compile or run a C# application in
Visual Studio. This book does not invest time in topics that are easily
available, such as how to install Visual Studio on your system, how to
write a “Hello World” program in C#, or how to use an if-else statement
or a while loop. Instead, the book starts with a discussion on delegates.
As I said before, in this book, my focus is on the core constructs of
advanced C#, and I explain how these concepts can be learned and used
effectively. Finally, in Chapter 7, I have used some simple SQL queries.
Though their usage are clearly described and shown, but a minimum
knowledge of SQL can help you a lot.
Who This Book Is For
In short, you should read this book if the answer is “yes” to any of
the following questions.
Are you familiar with basic constructs in C# and familiar with basic
object-oriented concepts like polymorphism, inheritance,
abstraction, and encapsulation?
Do you know how to set up your coding environment?
Do you want to explore advanced programming in C# step by step?
Do you want to explore the following advanced C# topics: generic
programming, thread programming, asynchronous programming,
and database programming (using ADO.NET and MySQL)?
Are you want to know how the core constructs work behind the
advanced features?
You probably shouldn’t read this book if the answer is “yes” to
any of the following questions.
Are you totally new to C#?
Do you want to learn advanced concepts in C# excluding the topics
mentioned previously?
Do you want to explore the latest features of C# only?
Do you dislike a book that emphasizes Q&A sessions?
“I do not like Windows, Visual Studio, and .NET Core. I want to learn
and use C# without them.” Is this statement true for you?
“I prefer to use Entity Framework (EF) for my database programs,
and I do not like MySQL.” Is this statement true for you?
Guidelines for Using This Book
Here are some suggestions for you to use the book more effectively:
The first six chapters of the book are linked. So, I suggest you go
through the chapters sequentially. Also, it is possible that some
fundamental questions are discussed in the “Q&A Session” of a
previous chapter, and I have not repeated those in the later chapters.
Most of these programs are tested with C# 8.0 and I have used Visual
Studio (Community 2019, Version 16.3.9) IDE in a Windows 10
environment. When I started the book, I Started with the latest
versions available at that time. But as expected, version updates are
keep coming and I also kept updating. But all these versions details
should not matter much to you because I have used the fundamental
constructs of advanced C# only. So, I believe that these codes should
execute smoothly in the upcoming versions of C#/Visual studio as
well. There are only few exceptions, in which I used .NET Framework.
For example, in chapter 6, when you learn Asynchronous
programming, I have shown you implementations of
IAsyncResult patterns and event based asynchronous patterns.
These are not recommended (and supported) for upcoming
development. If you execute these programs in .NET Core 3.0, you’ll
receive following exception saying
System.PlatformNotSupportedException: 'Operation
is not supported on this platform. So, for these
examples, I used .NET Framework 4.7.2.
I tested some of these codes in different systems and different
environments (including online editors) and I always received the
expected output. With these experiments, I believe that the results
should not vary in other environments as well, but you know the
nature of software—it is naughty. So, I recommend that if you want to
see the exact same outputs, it will be better if you can mimic the
same environment.
Conventions Used in This book
All the output and code in the book follow the same font and structure.
To draw your attention, in some places, I have made the code bold. For
example, consider the following output fragment and the lines in bold.
Console.WriteLine($"{Thread.CurrentThread.Name}
from MyMethod() prints {i}");
I agree that the second one is more readable but to support legacy
code too, I opted for the traditional approach. Each of these approaches
works fine and not a blocker for you to understand a C# code but the
choice is up to you.
Final Words
I believe that the book is designed for you in such a way that upon its
completion, you will have developed an adequate knowledge of the
topics, you will have efficiently learned to use the advanced features of
this powerful language, and most importantly, you’ll know how to go
further.
Lastly, I hope that this book can help you and you will value the
effort.
Acknowledgments
At first, I thank the Almighty. I sincerely believe that with His blessings
only, could I complete this book. I extend my deepest gratitude and
thanks to the following people.
Ratanlal Sarkar and Manikuntala Sarkar: my dear parents, with your
blessings only, could I complete this work.
Indrani, my wife; Ambika, my daughter; and Aryaman, my son:
sweethearts, once again, without your love, I could not proceed at all. I
know that we need to limit many social gatherings and invitations to
complete my books on time and each time. I promise you that I’ll take a
long break and spend more time with you.
Sambaran, my brother: Thank you for your constant encouragement
towards me.
Carsten, my technical advisor: I know that whenever I was in need,
your support was there. Thank you one more time.
Shekhar, my another technical advisor: I am always thankful for all
your contributions in my previous books. I must acknowledge your
support for the newly added chapter in this edition.
Deepak, my ex-colleague cum senior: A special thanks to you for
investing your time in writing a foreword for my book. From the
moment when experts like you agreed to write for me, I got additional
motivation to enhance the quality of my work.
Celestin, Laura, Smriti, Shrikant: Thanks for giving me another
opportunity to work with you and Apress.
Krishnan, Rajan, Ramraj, Selvakumar, Pushparaj: Thank you for your
exceptional support to beautify my work. Your efforts are truly
extraordinary.
Lastly, I extend my deepest gratitude to my publisher, the editorial
board members, and everyone who directly or indirectly supported this
book.
Table of Contents
Part I: Getting Familiar with Building Blocks
Chapter 1:Delegates
Definition
Demonstration 1
Q&A Session
Comparing a Static Method with an Instance Method
Demonstration 2
Using Multicast Delegates
Demonstration 3
Q&A Session
Demonstration 4
Q&A Session
Demonstration 5
Q&A Session
Variance in Delegates
Covariance in Delegates
Demonstration 6
Contravariance in Delegates
Demonstration 7
Q&A Session
Final Words
Summary
Chapter 2:Events
Demonstration 1
Output
Analysis
Q&A Session
Creating Custom Events
Demonstration 2
Passing Data to an Event Argument
Demonstration 3
Using Event Accessors
Demonstration 4
Q&A Session
Handling Interface Events
Demonstration 5
Q&A Session
Handling Explicit Interface Events
Demonstration 6
Q&A Session
Demonstration 7
Q&A Session
Demonstration 8
Final Words
Summary
Chapter 3:Lambda Expressions
The Usefulness of Lambda Expressions
Demonstration 1
Lambda Expression with (and Without) Parameters
Demonstration 2
Types of Lambda Expressions
Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
Expression-Bodied Members
Demonstration 3
Demonstration 4
Local Variables in a Lambda Expression
Demonstration 5
Using Tuples in a Lambda Expression
Demonstration 6
Event Subscription with Lambda Expressions
Demonstration 7
Q&A Session
Final Words
Summary
Part II: Exploring Advanced Programming
Chapter 4:Generic Programming
The Motivation Behind Generics
Demonstration 1
Demonstration 2
Demonstration 3
A Quick Look into the List Class
Demonstration 4
Generic Delegates
Func Delegate
Q&A Session
Action Delegate
Predicate Delegate
Demonstration 5
Q&A Session
The Default Keyword in Generics
Demonstration 6
Q&A Session
Implementing Generic Interface
Demonstration 7
Q&A Session
Generic Constraints
Demonstration 8
Q&A Session
Using Covariance and Contravariance
Q&A Session
Covariance with Generic Delegate
Demonstration 9
Covariance with Generic Interfaces
Demonstration 10
Contravariance with Generic Delegates
Demonstration 11
Contravariance with Generic Interface
Partial Implementation
Q&A Session
Demonstration 12
Q&A Session
Demonstration 13
Self-Referencing Generic Types
Demonstration 14
Q&A Session
Demonstration 15
Q&A Session
Final Words
Summary
Chapter 5:Thread Programming
Foundations in Thread Programming
Q&A Session
Coding Multithreaded Programs in C#
Using the ThreadStart Delegate
Demonstration 1
Demonstration 2
Q&A Session
Using the ParameterizedThreadStart Delegate
Demonstration 3
Q&A Session
Demonstration 4
Q&A Session
Demonstration 5
Q&A Session
Demonstration 6
Q&A Session
Foreground Thread vs.Background Thread
Demonstration 7
Thread Safety
A Non-Synchronized Version
Demonstration 8
A Synchronized Version
Demonstration 9
An Alternative Approach Using the Monitor Class
Deadlock
Types of Deadlock
Demonstration 10
Investigating the Deadlocked State in Visual Studio
Final Words
Summary
Chapter 6:Asynchronous Programming
Overview
Using a Synchronous Approach
Demonstration 1
Using Thread Class
Demonstration 2
Q&A Session
Using the ThreadPool Class
Demonstration 3
Q&A Session
Using Lambda Expressions with ThreadPool
Demonstration 4
Using the IAsyncResult Pattern
Polling Using Asynchronous Delegates
Demonstration 5
Q&A Session
Using the AsyncWaitHandle Property of IAsyncResult
Demonstration 6
Using Asynchronous Callback
Demonstration 7
Q&A Session
Using an Event-based Asynchronous Pattern (EAP)
Demonstration 8
Q&A Session
Understanding Tasks
Demonstration 9
Using a Task-based Asynchronous Pattern (TAP)
Demonstration 10
Demonstration 11
Q&A Session
Using the async and await Keywords
Demonstration 12
Demonstration 13
Final Words
Summary
Chapter 7:Database Programming
Database and DBMS
Types of DBMS
RDBMS
SQL
A Brief Discussion of ADO.NET
Understanding the Code
Random documents with unrelated
content Scribd suggests to you:
Immers: kon hij niet, even goed als zij, verscheidene malen
achtereen over zijn hoofd buitelen?
"Toch lijdt het geen twijfel," dacht Steven verder, "of ik zou even
goed, zoo niet beter, voor clown geschikt zijn dan de twee, die daar
telkens zoo uitbundig worden toegejuicht."
De ruiter wipte van 't paard en reikte den clown de leidsels over.
"Och toe, help me even een handje!" verzocht deze. "'t Is zoo'n
toer om er alleen op te komen!"
"Kom aan! Opgepast dan! Huup-la!" zei de ruiter. Hij gaf daarop
zijn makker een duw, zoodat deze over 't paard heenvloog en met
een smak aan den anderen kant neerplofte.
Het paard bleef onder die bedrijven tot aller verwondering staan als
een paal.
De clown gaf het echter niet op. En zie! een volgende poging om 't
makke ros te bestijgen, gelukte boven verwachting.
Ja, daar zat hij er op! Maar hoe? Met zijn rug naar den kop van 't
paard gekeerd! Dat scheen hij echter volstrekt niet te merken;
althans: hij trok het geduldige beest aan den staart en riep: "Maar
directeur, dat paard heeft in 't geheel geen kop! Hoe gek toch!"
En och! hij had zoo gehoopt, zich bij deze menschen te kunnen
aansluiten en bij hen niet alleen een werkkring maar zelfs een
prachtige toekomst te zullen vinden.
Nu begonnen ook bij afwisseling "de dames van 't spul" blijken van
hun kunstvaardigheid te geven.
Een crisis.
Toen Steven eenige dagen later tegen den avond nog eens de
plaats bezocht; waar de tent gestaan had, was de daglooner
Teunissen al bezig met er den grond om te spitten en in gereedheid
te brengen voor 't poten van de staak- of snijboonen.
Steven doolde dien avond nog laat door 't dorp en den omtrek
rond. Hij had rust noch duur. Het leven, dat hem vroeger zoo
bekoorlijk had geschenen, had nu alle aantrekkelijkheid voor hem
verloren.
Toen hij voorbij de woning van den nachtwacht ging, herinnerde hij
zich zijn laatste gesprek met zijn vriendin Tonia. Evenals gewoonlijk
was ze ook nu vriendelijk jegens hem geweest, maar hij had een
droeven trek op haar lief gelaat bespeurd en ze had hem zeer
ernstig onder 't oog gebracht, dat hij den kostbaren tijd met
straatslijpen verkwistte, terwijl zijn goede vader zijn hulp zoozeer
behoefde.
Uit haar geheele gedrag jegens hem was hem duidelijk gebleken,
dat ze in de toekomst al heel weinig van hem hoopte. Dit had hem
te meer gegriefd, daar hij wist dat de zoon van den smid, een
algemeen geacht, werkzaam jongmensch, haar tot vrouw wenschte.
Beter dan ooit te voren begreep hij nu, dat zijn leven op mislukking
zou uitloopen.
Al voortgaande over de stille, donkere straat, raakte hij ten laatste
erg vermoeid. Hij huiverde en rilde en voelde zich doodziek. Zijn
hoofd gloeide en klopte.
Zoo bereikte hij weer het ouderlijk huis. Hij drukte 't hoofd tegen
de koude steenen om 't zoo te verkoelen. Toen werd hij zóó duizelig,
dat hij met de hand tastte naar eenig voorwerp om zich aan vast te
houden. Doch hij vond geen houvast en viel schavend langs den
muur. Daar lag hij, als dood.
Wat later bevond hij zich in 't circus, onder de kunstrijders. Hij
deed ongeloofelijke toeren en werd door 't verbaasde publiek
uitbundig toegejuicht.
Hoe langzaam vorderde hij en wat leunde hij zwaar op zijn stok!
Steven kon het niet aanzien, dat hij zich zoo moest inspannen en
poogde op te staan, bij hem te komen en 't pak van hem over te
nemen, doch dit was hem geheel onmogelijk. Het was hem juist zoo,
of hij door sterke armen werd vastgehouden.
Hij was plotseling zwaar ziek geworden en toen hij aan den hoek
der ouderlijke woning was neergestort, hadden zijn vader en Tonia,
die er 't huiswerk verrichtte, dit gehoord; ze waren ijlings
toegeschoten en hadden hem te bed gebracht.
Dag en nacht moest er bij hem gewaakt worden. Zijn toestand was
uiterst bedenkelijk en 't stond te vreezen, dat hij er nooit weer van
zou opkomen.
XX.
Besluit.
Al stonden alle klokken in de wereld stil, toch bleef de tijd
ongestoord zijn gang gaan; zoowel op 't kleinste dorpje als in de
grootste wereldstad; zoowel in de poolstreken als onder den
evenaar.
Alles werkt.
De paden die om 't kasteel en door 't bosch slingeren, zijn weer
netjes geharkt, evenals in vervlogen tijden, toen daarover de
schoone, levenslustige kinderen der adelijke bewoners in witte of
wel kleurige sierlijke kleedjes, "als door feeënhand geknipt",
zweefden en streefden.
Tonia, die nooit iets dergelijks zag, is één en al bewondering. Aan 't
einde van één der vijvers, tusschen zeldzame struiken, welks kleurig
loover blinkt in den zonneschijn, zijn twee groote ruiten
aangebracht, de eene van rood en de andere van blauw glas.
"Kijk nu eens door 't blauwe glas!" zegt haar man, blijde dat zijn
lieve vrouw zoo buitengewoon veel genot smaakt bij dit uitstapje.
Daar dicht bij op een hoogte staat een koepel, tot boven toe als
omlijst met bloeiende rozen. De lucht is vervuld van de geuren der
bloemen. In 't hoog geboomte daar achter zingen de vogels als om
strijd.
"Het mooiste komt nog!" zegt haar man. "Kom, gaan we den
rozendoolhof eens zien!"
Op een bank zetten zij zich neer, arm in arm, gelukkig in elkanders
bezit.
EINDE.
Transcriber's Notes:
_gespatieerde tekst_ → g e s p a t i e e r d e t e k s t
Voor het gemak van de lezer is een lijst van illustraties toegevoegd na de
inhoudsopgave (alleen in de "HTML"-versie).
[lekte de twee]
Deze schrijfwijze, "lekte", komt 2x voor, terwijl de hedendaagse
schrijfwijze "likte" ook 1x voor komt. Dit is niet gecorrigeerd.
[Stins] / [Stint]
Beiden zijn achternamen voor dezelfde persoon en beiden komen 1x
voor. Welke juist is, blijft onduidelijk, en daarom is dit niet
gecorrigeerd.
[rojaal] en [rojaalsten]
Of deze spelling in 1916 gangbaar was, kon niet worden
achterhaald.
*** END OF THE PROJECT GUTENBERG EBOOK LANGS
SLINGERPADEN ***
1.D. The copyright laws of the place where you are located also
govern what you can do with this work. Copyright laws in most
countries are in a constant state of change. If you are outside
the United States, check the laws of your country in addition to
the terms of this agreement before downloading, copying,
displaying, performing, distributing or creating derivative works
based on this work or any other Project Gutenberg™ work. The
Foundation makes no representations concerning the copyright
status of any work in any country other than the United States.
1.E.6. You may convert to and distribute this work in any binary,
compressed, marked up, nonproprietary or proprietary form,
including any word processing or hypertext form. However, if
you provide access to or distribute copies of a Project
Gutenberg™ work in a format other than “Plain Vanilla ASCII” or
other format used in the official version posted on the official
Project Gutenberg™ website (www.gutenberg.org), you must,
at no additional cost, fee or expense to the user, provide a copy,
a means of exporting a copy, or a means of obtaining a copy
upon request, of the work in its original “Plain Vanilla ASCII” or
other form. Any alternate format must include the full Project
Gutenberg™ License as specified in paragraph 1.E.1.
• You pay a royalty fee of 20% of the gross profits you derive
from the use of Project Gutenberg™ works calculated using the
method you already use to calculate your applicable taxes. The
fee is owed to the owner of the Project Gutenberg™ trademark,
but he has agreed to donate royalties under this paragraph to
the Project Gutenberg Literary Archive Foundation. Royalty
payments must be paid within 60 days following each date on
which you prepare (or are legally required to prepare) your
periodic tax returns. Royalty payments should be clearly marked
as such and sent to the Project Gutenberg Literary Archive
Foundation at the address specified in Section 4, “Information
about donations to the Project Gutenberg Literary Archive
Foundation.”
• You comply with all other terms of this agreement for free
distribution of Project Gutenberg™ works.
1.F.
Most people start at our website which has the main PG search
facility: www.gutenberg.org.