100% found this document useful (1 vote)
120 views62 pages

Programming Microsoft ASP NET MVC Dino Esposito download pdf

MVC

Uploaded by

makhasakita
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
120 views62 pages

Programming Microsoft ASP NET MVC Dino Esposito download pdf

MVC

Uploaded by

makhasakita
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 62

Download the full version of the textbook now at textbookfull.

com

Programming Microsoft ASP NET MVC Dino


Esposito

https://textbookfull.com/product/programming-
microsoft-asp-net-mvc-dino-esposito/

Explore and download more textbook at https://textbookfull.com


Recommended digital products (PDF, EPUB, MOBI) that
you can download immediately if you are interested.

Pro ASP NET Core MVC Develop cloud ready web applications
using Microsoft s latest framework ASP NET Core MVC Sixth
Edition Adam Freeman
https://textbookfull.com/product/pro-asp-net-core-mvc-develop-cloud-
ready-web-applications-using-microsoft-s-latest-framework-asp-net-
core-mvc-sixth-edition-adam-freeman/
textbookfull.com

Clean Architecture With net Developer Reference 1st


Edition Esposito Dino

https://textbookfull.com/product/clean-architecture-with-net-
developer-reference-1st-edition-esposito-dino/

textbookfull.com

Beginning Database Programming Using ASP NET Core 3 With


MVC Razor Pages Web API jQuery Angular SQL Server and
NoSQL 1st Edition Bipin Joshi
https://textbookfull.com/product/beginning-database-programming-using-
asp-net-core-3-with-mvc-razor-pages-web-api-jquery-angular-sql-server-
and-nosql-1st-edition-bipin-joshi/
textbookfull.com

Advanced Information Systems Engineering Workshops: CAISE


2017 International Workshops, Essen, Germany, June 12–16,
2017, Proceedings 1st Edition Andreas Metzger
https://textbookfull.com/product/advanced-information-systems-
engineering-workshops-caise-2017-international-workshops-essen-
germany-june-12-16-2017-proceedings-1st-edition-andreas-metzger/
textbookfull.com
Magnesium Technology 2019 Vineet V. Joshi

https://textbookfull.com/product/magnesium-technology-2019-vineet-v-
joshi/

textbookfull.com

Comedy and the Politics of Representation Helen Davies

https://textbookfull.com/product/comedy-and-the-politics-of-
representation-helen-davies/

textbookfull.com

3D Management an Integral Theory for Organisations in the


Vanguard of Evolution 1st Edition Marco A Robledo

https://textbookfull.com/product/3d-management-an-integral-theory-for-
organisations-in-the-vanguard-of-evolution-1st-edition-marco-a-
robledo/
textbookfull.com

Differential Diagnosis of Common Complaints Robert H.


Seller

https://textbookfull.com/product/differential-diagnosis-of-common-
complaints-robert-h-seller/

textbookfull.com

Kant on the Frontier Philosophy Politics and the Ends of


the Earth 1st Edition Geoffrey Bennington

https://textbookfull.com/product/kant-on-the-frontier-philosophy-
politics-and-the-ends-of-the-earth-1st-edition-geoffrey-bennington/

textbookfull.com
Wall Street Journal Saturday March 28 2020 News Corp

https://textbookfull.com/product/wall-street-journal-saturday-
march-28-2020-news-corp/

textbookfull.com
Programming Microsoft
ASP.NET MVC

Dino Esposito

Published by Microsoft Press


To Silvia, Francesco, Michela, and my back for sustaining me.
—DINO
Introduction

Get your facts first, and then you can distort them as much as you please.
—Mark Twain

ASP.NET was devised in the late 1990s at a time when many


companies in various industry sectors were rapidly discovering the
Internet. The primary goal of ASP.NET was to make it possible for
developers to build applications quickly and effectively without
having to deal with low-level details such as HTTP, HTML, and
JavaScript intricacies. That was exactly what the community loudly
demanded at that time. ASP.NET is what Microsoft delivered to
address this request, exceeding expectations by a large extent.
Today, more than ten years later, ASP.NET is showing signs of age,
and many started even questioning the real necessity of having a
web framework at all. It’s an amazing time, and several options
exist. There are Web Forms and ASP.NET MVC applications, and then
there are more JavaScript-intensive client applications (single-page
applications) that just use a server-side back end for delivering the
basic layout of the few pages they actually expose and for ad hoc
services such as bundling.
Curiously, with the Web Forms paradigm, you can still write
functional applications even though ASP.NET MVC addresses more
closely the present needs of developers. The most common scenario
of Web Forms is applications for which you focus on presenting data
and use some third-party high-quality suite of controls for that.
ASP.NET MVC is for everything else, including the scaffolding of
client-side single-page applications.
The way web applications are changing proves that ASP.NET MVC
probably failed to replace ASP.NET Web Forms in the heart of many
developers, but it was the right choice and qualifies to be the ideal
web platform for any application that needs a back end of some
substance; in particular (as I see things), web applications that aim
at being multidevice functional. And yes, that likely means all web
applications in less than two years.
Switching to ASP.NET MVC is more than ever the natural follow-up
for ASP.NET developers.

Who should read this book


Over the years, quite a few people have read quite a few books and
articles of mine. These readers are already aware that I’m not good
at writing step-by-step, reference-style books, in the similar manner
that I’m unable to teach the same class twice, running topics in the
same order and showing the same examples.
This book is not for absolute beginners; but I do feel it is a book for
all the others, including those who are still fairly new to ASP.NET
MVC. The higher your level of competency and expertise, the less
you can expect to find here that adds value in your particular case.
However, this book benefits from a few years of real-world practice;
so I’m sure it has a lot of solutions that might also appeal to the
experts, particularly with respect to mobile devices.
If you use ASP.NET MVC, I’m confident that you’ll find something in
this book that makes it worthwhile.

Assumptions
This book expects that you have at least a minimal understanding of
ASP.NET development.
Who should not read this book
If you’re looking for a step-by-step guide to ASP.NET MVC, this is not
the ideal book for you.

Organization of this book


This book is divided into three sections. Part I, provides a quick
overview of the foundation of ASP.NET and its core components.
Part II, focuses on common aspects of web applications and specific
design patterns and best practices. Finally, Part III, is about
JavaScript and mobile interfaces.

System requirements
You preferably have the following software installed in order to run
the examples presented in this book:
One of the following operating systems: Windows 8/8.1, Windows
7, Windows Vista with Service Pack 2 (except Starter Edition),
Windows XP with Service Pack 3 (except Starter Edition),
Windows Server 2008 with Service Pack 2, Windows Server 2003
with Service Pack 2, or Windows Server 2003 R2

Microsoft Visual Studio 2013, any edition (multiple downloads


might be required if you’re using Express Edition products)

Microsoft SQL Server 2012 Express Edition or higher, with SQL


Server Management Studio 2012 Express or higher (included with
Visual Studio; Express Editions require a separate download)

Depending on your Windows configuration, you might require Local


Administrator rights to install or configure Visual Studio 2013 and
SQL Server 2012 products.
Code samples
Most of the chapters in this book include exercises with which you
can interactively try out new material learned in the main text. You
can download all sample projects, in both their pre-exercise and
post-exercise formats, from the following page:
http://aka.ms/programASP-NET_MVC/files
Follow the instructions to download the asp-net-mvc-examples.zip
file.

Installing the code samples


Perform the following steps to install the code samples on your
computer so that you can use them with the exercises in this book.
1. Unzip the asp-net-mvc-examples.zip file that you downloaded
from the book’s website (name a specific directory along with
directions to create it, if necessary).

2. If prompted, review the displayed end-user license agreement.


If you accept the terms, select the Accept option, and then click
Next.

NOTE
If the license agreement doesn’t appear, you can access it from the
same webpage from which you downloaded the asp-net-mvc-
examples.zip file.

Using the code samples


The folder created by the Setup.exe program contains one subfolder
for each chapter. In turn, each chapter might contain additional
subfolders. All examples are organized in a single Visual Studio 2013
solution. You open the solution file in Visual Studio 2013 and
navigate through the examples.
Errata & book support
We’ve made every effort to ensure the accuracy of this book and its
companion content. Any errors that have been reported since this
book was published are listed on our Microsoft Press site:
http://aka.ms/programASP-NET_MVC/errata
If you find an error that is not already listed, you can report it to us
through the same page.
If you need additional support, email Microsoft Press Book Support
at [email protected].
Please note that product support for Microsoft software is not
offered through the aforementioned addresses.

We want to hear from you


At Microsoft Press, your satisfaction is our top priority, and your
feedback our most valuable asset. Please tell us what you think of
this book at:
http://aka.ms/tellpress
The survey is short, and we read every one of your comments and
ideas. Thanks in advance for your input!

Stay in touch
Let’s keep the conversation going! We’re on Twitter:
http://twitter.com/MicrosoftPress
Part I. ASP.NET MVC
fundamentals
Chapter 1

Chapter 2

Chapter 3

Chapter 4
Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
Chapter 1. ASP.NET MVC
controllers

They always say time changes things, but you actually have to change them
yourself.
—Andy Warhol
I think ASP.NET Web Forms started getting old the day that Ajax
conquered the masses. As some have said, Ajax has been the
poisonous arrow shot in the heel of ASP.NET—another Achilles. Ajax
made getting more and more control over HTML and client-side code
a true necessity. Over time, this led to different architectures and
made ASP.NET Web Forms a little less up to the task with each
passing day.
Applied to the existing ASP.NET runtime, the MVC pattern produced
a new framework—ASP.NET MVC—that aligns web development to
the needs of developers today.
In ASP.NET MVC, each request results in the execution of an action—
ultimately, a method on a specific class. The results of executing the
action are passed down to the view subsystem along with a view
template. The results and template are then used to build the final
response for the browser. Users don’t point the browser to a page,
they just place a request. Doesn’t that sound like a big change?
Unlike Web Forms, ASP.NET MVC is made of various layers of code
connected together but not intertwined and not forming a single
monolithic block. For this reason, it’s easy to replace any of these
layers with custom components that enhance the maintainability as
well as the testability of the solution. With ASP.NET MVC, you gain
total control over the markup and can apply styles and inject script
code at will using the JavaScript frameworks that you like most.
Based on the same run-time environment as Web Forms, ASP.NET
MVC pushes a web-adapted implementation of the classic Model-
View-Controller pattern and makes developing web applications a
significantly different experience. In this chapter, you’ll discover the
role and structure of the controller—the foundation of ASP.NET MVC
applications—and how requests are routed to controllers.
Although you might decide to keep using Web Forms, for today’s
web development, ASP.NET MVC is a much better choice. You don’t
need to invest a huge amount of time, but you need to understand
exactly what’s going on and the philosophy behind MVC. If you do
that, any investment you make will pay you back sooner than you
expect.

NOTE
This book is based on ASP.NET MVC 5. This version of ASP.NET MVC is
backward compatible with the previous versions. This means that you
can install both versions side by side on the same computer and play
with the new version without affecting any existing MVC code that you
might have already.

Routing incoming requests


Originally, the entire ASP.NET platform was developed around the
idea of serving requests for physical pages. It turns out that most
URLs used within an ASP.NET application are made of two parts: the
path to the physical webpage that contains the logic, and some data
stuffed in the query string to provide parameters. This approach has
worked for a few years, and it still works today. The ASP.NET run-
time environment, however, doesn’t limit you to just calling into
resources identified by a specific location and file. By writing an ad
hoc HTTP handler and binding it to a URL, you can use ASP.NET to
execute code in response to a request regardless of the
dependencies on physical files. This is just one of the aspects that
most distinguishes ASP.NET MVC from ASP.NET Web Forms. Let’s
briefly see how to simulate the ASP.NET MVC behavior with an HTTP
handler.

NOTE
In software, the term URI (which stands for Uniform Resource
Identifier) is used to refer to a resource by location or a name. When
the URI identifies the resource by location, it’s called a URL, or Uniform
Resource Locator. When the URI identifies a resource by name, it
becomes a URN, or Uniform Resource Name. In this regard, ASP.NET
MVC is designed to deal with more generic URIs, whereas ASP.NET Web
Forms was designed to deal with location-aware physical resources.

Simulating the ASP.NET MVC runtime


Let’s build a simple ASP.NET Web Forms application and use HTTP
handlers to figure out the internal mechanics of ASP.NET MVC
applications. You can start from the basic ASP.NET Web Forms
application you get from your Microsoft Visual Studio project
manager.

Defining the syntax of recognized URLs


In a world in which requested URLs don’t necessarily match up with
physical files on the web server, the first step to take is listing which
URLs are meaningful for the application. To avoid being too specific,
let’s assume that you support only a few fixed URLs, each mapped
to an HTTP handler component. The following code snippet shows
the changes required to be made to the default web.config file:

<httpHandlers>
<add verb="*"
path="home/test/*"
type="MvcEmule.Components.MvcEmuleHandler" />
</httpHandlers>

Whenever the application receives a request that matches the


specified URL, it will pass it on to the specified handler.

Defining the behavior of the HTTP handler


In ASP.NET, an HTTP handler is a component that implements the
IHttpHandler interface. The interface is simple and consists of two
members, as shown here:

public class MvcEmuleHandler : IHttpHandler


{
public void ProcessRequest(HttpContext context)
{
// Logic goes here
...
}

public Boolean IsReusable


{
get { return false; }
}
}

Most of the time, an HTTP handler has a hardcoded behavior


influenced only by some input data passed via the query string.
However, nothing prevents us from using the handler as an abstract
factory for adding one more level of indirection. The handler, in fact,
can use information from the request to determine an external
component to call to actually serve the request. In this way, a single
HTTP handler can serve a variety of requests and just dispatch the
call among a few more specialized components.
The HTTP handler could parse out the URL in tokens and use that
information to identify the class and the method to invoke. Here’s an
example of how it could work:
public void ProcessRequest(HttpContext context)
{
// Parse out the URL and extract controller, action, and parameter
var segments = context.Request.Url.Segments;
var controller = segments[1].TrimEnd('/');
var action = segments[2].TrimEnd('/');
var param1 = segments[3].TrimEnd('/');

// Complete controller class name with suffix and (default)


namespace
var fullName = String.Format("{0}.{1}Controller",
this.GetType().Namespace, controller);
var controllerType = Type.GetType(fullName, true, true);

// Get an instance of the controller


var instance = Activator.CreateInstance(controllerType);

// Invoke the action method on the controller instance


var methodInfo = controllerType.GetMethod(action,
BindingFlags.Instance |
BindingFlags.IgnoreCase |
BindingFlags.Public);
var result = String.Empty;
if (methodInfo.GetParameters().Length == 0)
{
result = methodInfo.Invoke(instance, null) as String;
}
else
{
result = methodInfo.Invoke(instance, new Object[] { param1 })
as String;
}

// Write out results


context.Response.Write(result);
}

The preceding code assumes that the first token in the URL after the
server name contains the key information to identify the specialized
component that will serve the request. The second token refers to
the name of the method to call on this component. Finally, the third
token indicates a parameter to pass.

Invoking the HTTP handler


Given a URL such as home/test/*, it turns out that home identifies
the class, test identifies the methods, and whatever trails is the
parameter. The name of the class is further worked out and
extended to include a namespace and a suffix. According to the
example, the final class name is
MvcEmule.Components.HomeController. This class is expected to be
available to the application. The class is also expected to expose a
method named Test, as shown here:

namespace MvcEmule.Components
{
public class HomeController
{
public String Test(Object param1)
{
var message = "<html><h1>Got it! You passed '{0}'</h1>
</html>";
return String.Format(message, param1);
}
}
}

Figure 1-1 shows the effect of invoking a page-agnostic URL in an


ASP.NET Web Forms application.
Figure 1-1. Processing page-agnostic URLs in ASP.NET Web Forms.

This simple example demonstrates the basic mechanics used by


ASP.NET MVC. The specialized component that serves a request is
the controller. The controller is a class with just methods and no
state. A unique system-level HTTP handler takes care of dispatching
incoming requests to a specific controller class so that the instance
of the class executes a given action method and produces a
response.
What about the scheme of URLs? In this example, you just use a
hardcoded URL. In ASP.NET MVC, you have a very flexible syntax
that you can use to express those URLs that the application
recognizes. In addition, a new system component in the run-time
pipeline intercepts requests, processes the URL, and triggers the
ASP.NET MVC HTTP handler. This component is the URL Routing
HTTP module.

The URL routing HTTP module


The URL routing HTTP module processes incoming requests by
looking at the URLs and dispatching them to the most appropriate
executor. The URL routing HTTP module supersedes the URL
rewriting feature of older versions of ASP.NET. At its core, URL
rewriting consists of hooking up a request, parsing the original URL,
and instructing the HTTP run-time environment to serve a “possibly
related but different” URL.

Superseding URL rewriting


URL rewriting comes into play if you need to make tradeoffs
between needing human-readable and search engine optimization
(SEO)-friendly URLs and needing to programmatically deal with tons
of URLs. For example, consider the following URL:

http://northwind.com/news.aspx?id=1234

The news.aspx page incorporates any logic required to retrieve,


format, and display any given news. The ID for the specific news to
retrieve is provided via a parameter on the query string. As a
developer, implementing the page couldn’t be easier; you get the
query string parameter, run the query, and create the HTML. As a
user or for a search engine, by simply looking at the URL you can’t
really understand the intent of the page, and you aren’t likely to
remember the address easily enough to pass it around.
URL rewriting helps you in two ways. First, it makes it possible for
developers to use a generic front-end page, such as news.aspx, to
display related content. Second, it also makes it possible for users to
request friendly URLs that will be programmatically mapped to less
intuitive but easier-to-manage URLs. In a nutshell, URL rewriting
exists to decouple the requested URL from the physical webpage
that serves the requests.
In the latest version of ASP.NET 4 Web Forms, you can use URL
routing to match incoming URLs to other URLs without incurring the
costs of HTTP 302 redirects. Conversely, in ASP.NET MVC, URL
routing serves the purpose of mapping incoming URLs to a controller
class and an action method.
NOTE
Originally developed as an ASP.NET MVC component, the URL routing
module is now a native part of the ASP.NET platform and, as
mentioned, offers its services to both ASP.NET MVC and ASP.NET Web
Forms applications, though through a slightly different API.

Routing the requests


What happens exactly when a request knocks at the Internet
Information Services (IIS) gate? Figure 1-2 gives you an overall
picture of the various steps involved and how things work differently
in ASP.NET MVC and ASP.NET Web Forms applications.
The URL routing module intercepts any requests for the application
that could not be served otherwise by IIS. If the URL refers to a
physical file (for example, an ASPX file), the routing module ignores
the request, unless it’s otherwise configured. The request then falls
down to the classic ASP.NET machinery to be processed as usual, in
terms of a page handler.
Otherwise, the URL routing module attempts to match the URL of
the request to any of the application-defined routes. If a match is
found, the request goes into the ASP.NET MVC space to be
processed in terms of a call to a controller class. If no match is
found, the request will be served by the standard ASP.NET runtime
in the best possible way and likely results in an HTTP 404 error.
In the end, only requests that match predefined URL patterns (also
known as routes) are allowed to enjoy the ASP.NET MVC runtime. All
such requests are routed to a common HTTP handler that
instantiates a controller class and invokes a defined method on it.
Next, the controller method, in turn, selects a view component to
generate the actual response.
Figure 1-2. The role of the routing module in ASP.NET MVC.

The internal structure of the URL routing module


In terms of implementation, I should note that the URL routing
engine is an HTTP module that wires up the
PostResolveRequestCache event. The event fires right after checking
that no response for the request is available in the ASP.NET cache.
The HTTP module matches the requested URL to one of the user-
defined URL routes and sets the HTTP context to using the ASP.NET
MVC standard HTTP handler to serve the request. As a developer,
you’re not likely to deal with the URL routing module directly. The
module is provided by the system and you don’t need to perform
any specific form of configuration. Instead, you are responsible for
providing the routes that your application supports and that the
routing module will actually consume.
Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
Application routes
By design, an ASP.NET MVC application is not forced to depend on
physical pages. In ASP.NET MVC, users place requests for acting on
resources. The framework, however, doesn’t mandate the syntax for
describing resources and actions. I’m aware that the expression
“acting on resources” will likely make you think of Representational
State Transfer (REST). And, of course, you will not be too far off the
mark in thinking so.
Although you can definitely use a pure REST approach within an
ASP.NET MVC application, I would rather say that ASP.NET MVC is
loosely REST-oriented in that it does acknowledge concepts such as
resource and action, but it leaves you free to use your own syntax to
express and implement resources and actions. As an example, in a
pure REST solution you would use HTTP verbs to express actions—
GET, POST, PUT, and DELETE—and the URL to identify the resource.
Implementing a pure REST solution in ASP.NET MVC is possible but
requires some extra work on your part.
The default behavior in ASP.NET MVC is using custom URLs where
you make yourself responsible for the syntax through which actions
and resources are specified. This syntax is expressed through a
collection of URL patterns, also known as routes.

URL patterns and routes


A route is a pattern-matching string that represents the absolute
path of a URL—namely, the URL string without protocol, server, and
port information. A route might be a constant string, but it will more
likely contain a few placeholders. Here’s a sample route:

/home/test

The route is a constant string and is matched only by URLs whose


absolute path is /home/test. Most of the time, however, you deal
with parametric routes that incorporate one or more placeholders.
Here are a couple of examples:

/{resource}/{action}
/Customer/{action}

Both routes are matched by any URLs that contain exactly two
segments. The latter, though, requires that the first segment equals
the string “Customer”. The former, instead, doesn’t pose specific
constraints on the content of the segments.
Often referred to as a URL parameter, a placeholder is a name
enclosed in curly brackets { }. You can have multiple placeholders in
a route as long as they are separated by a constant or delimiter. The
forward slash (/) character acts as a delimiter between the various
parts of the route. The name of the placeholder (for example,
action) is the key that your code will use to programmatically
retrieve the content of the corresponding segment from the actual
URL.
Here’s the default route for an ASP.NET MVC application:

{controller}/{action}/{id}

In this case, the sample route contains three placeholders separated


by the delimiter. A URL that matches the preceding route is the
following:

/Customers/Edit/ALFKI

You can add as many routes as you want with as many placeholders
as appropriate. You can even remove the default route.

Defining application routes


Routes for an application are usually registered in the global.asax
file, and they are processed at the application startup. Let’s have a
look at the section of the global.asax file that deals with routes:

public class MvcApplication : HttpApplication


{
protected void Application_Start()
{
RouteConfig.RegisterRoutes(RouteTable.Routes);

// Other code
...
}
}

RegisterRoutes is a method on the RouteConfig class defined in a


separate folder, usually named App_:Start. (You can rename the
folder at will, though.) Here’s the implementation of the class:

public class RouteConfig


{
public static void RegisterRoutes(RouteCollection routes)
{
// Other code
...

// Listing routes
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new {
controller = "Home",
action = "Index",
id = UrlParameter.Optional
});
}
}

As you can see, the Application_Start event handler calls into a


public static method named RegisterRoutes that lists all routes. Note
that the name of the RegisterRoutes method as well as the
prototype is arbitrary and you can change it if there’s a valid reason.
Supported routes must be added to a static collection of Route
objects managed by ASP.NET MVC. This collection is
RouteTable.Routes. You typically use the handy MapRoute method to
populate the collection. The MapRoute method offers a variety of
overloads and works well most of the time. However, it doesn’t let
you configure every possible aspect of a route object. If there’s
something you need to set on a route that MapRoute doesn’t
support, you might want to resort to the following code:

// Create a new route and add it to the system collection


var route = new Route(...);
RouteTable.Routes.Add("NameOfTheRoute", route);

A route is characterized by a few attributes, such as name, URL


pattern, default values, constraints, data tokens, and a route
handler. The attributes you set most often are name, URL pattern,
and default values. Let’s expand on the code you get for the default
route:

routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new {
controller = "Home",
action = "Index",
id = UrlParameter.Optional
});

The first parameter is the name of the route; each route should have
a unique name. The second parameter is the URL pattern. The third
parameter is an object that specifies default values for the URL
parameters.
Note that a URL can match the pattern even in an incomplete form.
Let’s consider the root URL—http://yourserver.com. At first sight,
such a URL wouldn’t match the route. However, if a default value is
specified for a URL parameter, the segment is considered optional.
As a result, for the preceding example, when you request the root
URL, the request is resolved by invoking the method Index on the
Home controller.

Processing routes
The ASP.NET URL routing module employs a number of rules when
trying to match an incoming requested URL to a defined route. The
most important rule is that routes must be checked in the order in
which they were registered in global.asax.
To ensure that routes are processed in the correct order, you must
list them from the most specific to the least specific. In any case,
keep in mind that the search for a matching route always ends at
the first match. This means that just adding a new route at the
bottom of the list might not work and might also cause you a bit of
trouble. In addition, be aware that placing a catch-all pattern at the
top of the list will make any other patterns, no matter how specific,
pass unnoticed.
Beyond order of appearance, other factors affect the process of
matching URLs to routes. As mentioned, one is the set of default
values that you might have provided for a route. Default values are
simply values that are automatically assigned to defined placeholders
in case the URL doesn’t provide specific values. Consider the
following two routes:

{Orders}/{Year}/{Month}
{Orders}/{Year}

If in the first route you assign default values for both {Year} and
{Month}, the second route will never be evaluated because, thanks
to the default values, the first route is always a match regardless of
whether the URL specifies a year and a month.
A trailing forward slash (/) is also a pitfall. The routes
{Orders}/{Year} and {Orders}/{Year}/ are two very different things.
Random documents with unrelated
content Scribd suggests to you:
kahteen joukkoon, että toisten vartioidessa toiset voisivat nukkua,
sillä emmehän me tienneet, milloin hyökkäys tulisi tapahtumaan,
vaikka aavistimmekin, että piirittäjämme saivat apujoukkoja melkein
joka tunti.

Mutta yö menikin kumminkin menojaan alkuasukasten meitä


ollenkaan hätyyttämättä. Tuntia jälkeen auringonnousun saimme
kumminkin kokea toista, sillä neljä satamiehistä joukkoa hyökkäsi
yht'aikaa kimppuumme. Niin pian kuin he tulivat ampumamatkan
päähän, laukaisimme pyssymme, jotka oli ladattu sekä kuulilla että
kivillä. Yhteislaukauksemme vaikutus oli mitä tehokkain
pysähdyttäen hetkeksi hyökkääjät, joista toiset kääntyivät pakoon,
mutta heidän päästyään metsään keihästivät heidän omat toverinsa
heidät armotta. Kun jäljelle jääneet huomasivat, että heidän ainoa
keinonsa säilyttää henkensä oli meidän tappaminen, hyökkäsivät he
uudestaan, mutta meillä oli ollut aikaa ladata pyssymme uudelleen ja
ennätimme ampua heitä toisen kerran ennen heidän saapumistaan
ulommaisen aitauksemme edustalle. Silloin oli meidän pakko
peräytyä uuteen linnoitukseemme.

Heidän tunkeutuessaan aitauksen läpi ammuimme heistä monta,


mutta ampumavaramme alkoivat pian loppua. Olisimme kyllä vieläkin
voineet vähentää heidän lukumääräänsä heittämällä keihäämme
heitä vastaan, mutta silloin olisimme jääneet ilman aseitta,
lukuunottamatta muutamia puukkoja ja kirveitä, käsikähmään, joka
nyt varmasti oli alkava. Emme niin ollen voineet muuta kuin katsella,
miten he hävittivät nuo meidän huolellisesti valmistamamme
varustukset.

Vihdoin saivat he työnsä tehdyksi ja hengähtivät hetkisen ennen


lopullista hyökkäystään. Asemamme oli nyt seuraava: Pienen,
puunrungoista ja oksista kyhätyn, noin parikymmentä metriä leveän
ympyränmuotoisen aitauksen sisäpuolella puristivat miehemme,
neljäkolmatta luvultaan, pyssyjään valmiina myymään henkensä niin
kalliista kuin suinkin. Aitauksen ulkopuolelle taasen oli kokoutunut
noin kaksisataaviisikymmentä myöskin toivottomuuden rohkaisemaa
miestä, jotka kokosivat juuri voimiaan viimeiseen hyökkäykseen.
Ampumisen aikana metsän suojassa piileskelleet villit lähestyivät
meitä nyt myöskin ampumavarastojemme loputtua, ja epäilemättä
kiihoittaisi heidän taistelunhalunsa muutamassa minuutissa heidät
niin rohkeiksi, että he syöksyisivät kimppuumme.

Nyt vallitsi hetken aikaa painostava hiljaisuus, minkä kumminkin


pian alkuasukasten rummut rikkoivat. Sitten hyökkäsivät he
huudahtaen raivosta kimppuumme heittäen ensin keihäänsä ja
nostaen sitten kilpensä päänsä yläpuolelle suojellakseen itseään.
Heidän ensimmäinen keihässateensa tappoi neljä miestämme, mutta
nyt me voimme heittää ne takaisin, ja kun otetaan huomioon meidän
ja vihollistemme välinen lyhyt välimatka, tappoi luullakseni jokainen
meistä pari vihollista. Taistelu muuttui nyt vähitellen käsikähmäksi,
sillä vastustamattomasti tunkeutuivat vihollisemme viimeiseenkin
turvapaikkaamme. Vihdoin ahdistettiin meidät aitauksen keskelle,
jossa me viisi, enempää ei ollut enää hengissäkään, tappelimme kuin
pedot seisoen selkä selkää vasten. Syöstyäni keihään niin syvälle
erään kimppuuni hyökkäävän miehen ruumiiseen, etten jaksanut
kiskaista sitä irti, vetäisin kirveen vyöstäni käyttääkseni sitä
viimeisenä puolustusaseenani. Tuon äsken tappamani miehen sijalle
tuli heti toinen ahdistaen minua hurjasti. Onnistuin kääntämään
hänen keihäänsä syrjään ja upottamaan kirveeni hänen aivoihinsa.
Toverini taistelivat myöskin kuin miehet, ja pian alkoi ympärillemme
muodostua oikea ruumisvalli. Olimme jo kaikki haavoittuneet, ja
kaksi oli jo vaipunut polvilleen.
Luulin jo viimeisen hetkeni koittaneen, kun eräs suuri mies,
viskattuaan syrjään nuo meitä hetkisen suojanneet ruumiit, kohotti
keihäänsä lävistääkseen minut. Heitin häntä kirveelläni, ja onneksi
osuikin sen terä miehen kasvoihin. Hän kaatui selälleen, mutta
hänen paikallaan oli heti toinen. Sain kiinni uuden viholliseni
keihäästä, ja nyt rupesimme tappelemaan sen omistamisesta. Tiesin,
ettei eloonjäämiseni enää ollut mitenkään mahdollinen, mutta
minussa oli vielä jäljellä niin paljon isiltämme perittyä sotaista
henkeä, etten voinut kuolla, ennenkuin olin tappanut tämänkin
miehen.

Silloin kuulimme pyssyjen pauketta ja hetken kuluttua miesten


huutoja.
Vieressäni seisova Hatibu alkoi huutaa: "Allah il Allah! Wanguana,
Wanyamwesi, Tipolo! Tapelkaa, miehet, tapelkaa, olemme saaneet
apua!"

Ahdistajamme kääntyivät nyt ympäri ja pakenivat. Seuratessamme


heidän pakoaan näimme noin viisisataa pyssyillä varustettua miestä
ajavan heitä takaa kuin lampaita.
XX.

NYANGWEHEN.

Niin, me olimme saaneet apua, mutta, voi, pyörähdettyämme


katsomaan näimmekin, että pari meistä viidestä viimeisestä
taistelijasta oli kuolettavasti haavoittunut. Ainoastaan Hatibu, minä ja
eräs kolmas Bilal-niminen mies voimme toivoa paranevamme
haavoistamme, vaikka luullakseni kirurgeista olisivat meidänkin
saamamme naarmut olleet huomiota herättävät.

Uteliaat kyselijät ympäröivät meidät pian ruveten hoitamaan


haavojamme. Muutamien pelastajaimme ajaessa takaa pakenevia
vihollisiamme puhdistivat toiset paikan taistelun merkeistä kantaen
toveriemme ruumiit hieman syrjään haudattaviksi ja heittäen
Washenzien, joiksi näitä alkuasukkaita sanottiin, raadot viidakkoon
tervetulleeksi ruoaksi petolinnuille, shakaaleille ja hyenoille.

Majat ja katokset kohosivat pian maasta kuin sienet sateen


jälkeen. Jonkun ajan kuluttua palasivat takaa-ajajatkin ajaen
edellään vangiksi ottamiaan alkuasukkaita. Sitten saapui leiriin aina
tämän tästä melkoisia miesjoukkoja, joissa oli useita valkoisiin
paitoihin ja turbaaneihin pukeutuneita vaaleaihoisia miehiä.
Heidän päällikkönsä oli muita hieman pitempi mies, jonka
mustassa parrassa ja viiksissä oli jo paljon harmaita karvoja. Hänen
ihonsa oli aivan vaalea vaikkakin hieman kellahtava, nenä oli ylpeästi
kyömyssä ja tummissa silmissä oli mitä ystävällisin ilme, vaikka olikin
selvää, että suuttumus voi sen pian muuttaa ankaraksi ja
välähteleväksi. Vasemmassa kädessään oli hänellä tupessaan oleva
kaksiteräinen miekka, joka näytti melko vaarattomalta. Hänellä oli
mukanaan eräs kaksitoistavuotias poika, jolla oli kaksipiippuinen
nallinlyöpä luodikko olallaan.

Tämä mies oli tuo kuuluisa Hamees ibu Sayf eli Tipolo, kaikkien
norsunluuta ja orjia hakevien Tanganjikajärven toisella puolella
käyneitten arabialaisten päällikkö ja suojelija. Hänellä oli sellainen
vaikutusvalta miehiinsä, etteivät muut kyenneet hänen kanssaan
ollenkaan kilpailemaankaan. Ollen useamman kuin parinsadan
Zanzibarista kotoisen olevan pyssyillä varustetun vapaan miehen ja
orjan ja kuudensadan alkuasukkaan päällikkö voi hän hyvin
suoriutua kaksoistehtävästään pitää kurissa sekä kantajia että
ryösteleviä säännöttömiä joukkoja, koska kaikki nuo miehet tottelivat
häntä ehdottomasti ja olivat hänelle uskolliset.

Paitsi joukon ainoata puhdasveristä arabialaista, Hamees ibu


Sayfia, olivat siellä Zanzibarista kotoisin oleva Wasuahili, Wamerima
rannikolta, Muinyi Dugumbi, Habib wadi Nassur, Juma wadi Hamed,
Muinyi Heri ja Hamad ibu Ghasib, kaikki kauppiaita, mutta eivät
kumminkaan sen mahtavampia kuin noin seitsemänkymmenen
sotilaan komentajia kukin. Näiden kuuluisain kauppiasten joukkoon
oli myöskin yhtynyt useita Zanzibarissa asuvien kauppiaitten vapaita
tahi uskottuja orjia pienine kymmenmiehisine osastoineen.
Muut näistä miehistä eivät ansaitse sen suurempaa huomiota,
paitsi Tipolo, joka oli hyvin merkillinen mies. Jos hän olisi saanut
elää, olisi hän nyt tuon Tipo-Tipon eli Hamed ibu Hamedin paikalla,
joka nyt on kauppamaailman mahtavin edustaja Tanganjikasta
Stanley-putouksiin asti Kongossa. Tipolo oli orjakauppias hänkin, ei
sen kummempi, mutta hän ei ollut ikinä syypää sellaisiin julmuuksiin
kuin hänen toverinsa, joiden mukana hän ei aina voinut kulkea heitä
hillitsemässä. Hän itse oli hyvin rauhaarakastava, ja vaikka hän olikin
rohkea kuin leijona eikä suinkaan haluton sotaan silloin, kun se oli
välttämätön tahi hänelle edullinen, oli hän kumminkin aina valmis
keskustelulla ratkaisemaan asiat alkuasukasten kanssa, eikä oltu
milloinkaan kuultu, että hän olisi rikkonut sanansa. Monta kertaa,
kun muut kauppiaat riitelivät sellaisten päälliköitten kanssa, joita hän
oli luvannut auttaa, sai hän vaa'an kallistumaan alkuasukasten
puolelle aseellisten miestensä avulla, elleivät kauppiaat muuten
totelleet hänen sanojaan tahi määräyksiään, ja päinvastoin kuin
muut Zanzibarista kotoisin olevat kauppiaat, antoi hän miehilleen
helmiä ja muita tavaroita, joilla he voivat vaihtaa ruokaa, sallimatta
miestensä ollenkaan elää ilmaiseksi alkuasukasten kustannuksella.

Hän istuutui nyt Hatibun, Bilalin ja minun viereeni ja sanoi


vakavasti ja kohteliaasti: "Hyvää huomenta!" Oli kulunut jo niin
kauan aikaa siitä kuin viimeksi olin kuullut äidinkieltäni puhuttavan,
että se liikutti kovasti mieltäni ja kyyneleet virtasivat
vastustamattomasti silmistäni vastatessani, vaikka puhuessani
kuulosti englannin kieli vieraalta omasta suustanikin. Mutta
pettymykseni oli suuri huomattuani, ettei hän ymmärtänytkään
sanojani, sillä koko hänen englanninkielen taitonsa supistui noihin
pariin sanaan: "Hyvää huomenta!"
Hän kysyi nyt Hatibulta viimeisistä tapahtumista. Muutamat
vapauttamamme orjat olivat olleet niin uskolliset, että he olivat
tuoneet hänelle sanan meidän hädänalaisesta tilastamme, jolloin hän
oli vitkastelematta lähtenyt liikkeelle miehineen. Hän sanoi nyt
haluavansa vahvistaa Mona Mkullan voittajan maineensa niin
perinpohjaisesti, etteivät alkuasukkaat enää ikinä opittuaan tämän
läksyn uskaltaisi hyökätä hänen asiamiestensä kimppuun.

Jäimme muutamiksi päiviksi entiseen leiriimme ja pahoilla mielin


on minun pakko tunnustaa, että Tipolon määräykset täytettiin
kirjaimellisesti. Leiriin tuotiin joka päivä suuria alkuasukasjoukkoja
kuormitettuina norsunluulla ja muilla tavaroilla, jotka heidän
vangitsijainsa mielestä olivat ansainneet korjaamista.
Keskustelumme muuttuivat vain kuvauksiksi, miten monta kylää oli
poltettu, paljonko viljelyksiä oli hävitetty ja kuinka monta miestä oli
tapettu heidän puolustaessaan kotiaan, omaisuuttaan ja perheitään
ryöstäjiä vastaan.

Koetin kaikin voimin taivuttaa Tipoloa määräämään, että tuollainen


kosto ja hävittäminen lopetettaisiin, mutta hän sanoi luvanneensa
noiden hänen mukaansa lähteneitten kauppiasten ryöstää
mielinmäärin, ja saatuaan nyt tällaisen tilaisuuden, jollaista ei heillä
ollut miesmuistiin ollut, niin, tuskinpa milloinkaan, eivät he helposti
suostuisi lopettamaan. Sitäpaitsi, ellei hän olisi luvannut miehiensä
ottaa orjia, olisi pian syntynyt levottomuuksia ja sellaisin seurauksin,
että he olisivat menneet tiehensä, jolloin hänellä ei olisi ollut mitään
keinoa saada kokoamansa norsunluu rannikolle.

Vähitellen onnistuin voittamaan Muinyi Herin, Habib wadi Nassurin


ja kaikki muut puolelleni, paitsi Muinyi Dugumbia, joka ei ottanut
rukouksiani kuuleviin korviinsakaan. Vihdoin määräsi Tipolo, ettei
yhden miehen rikastumishalun vuoksi sotaa enää voitu jatkaa, ja
käski kaikkia lähtemään Nyangwehen. Hän sanoi Muinyi Dugumbille,
että jollei tämä käske miehiensä lopettaa ryöstämistä, hyökkää hän
joukkoineen hänen kimppuunsa, jolloin Dugumbin oli pakko alistua,
vaikkakin vastahakoisesti.

Hatibun, Bilalin ja minun haavani, jotka olimme saaneet tuossa


toivottomassa taistelussa henkemme puolesta, eivät olleet vielä niin
parantuneet, että olisimme voineet kävellä, ja senvuoksi valmistettiin
meille jokaiselle paarit, joilla meitä kannettiin. En voi kuvaillakaan
tuntemaani iloa ja kiitollisuutta aloittaessamme matkamme
Nyangweta kohti, sillä nämä ensimmäiset askeleet rannikkoa ja
omaa kansaani kohti tuntuivat niin äärettömän suloisilta. Minun on
pakko väkisinkin tunnustaa, että mielipiteeni Afrikassa
samoilemisesta olivat melkoisesti muuttuneet, sen jälkeen kuin
veljeni Vilien kanssa olin Petrelin kannella haaveillut Livingstonen
ihmeellisistä matkoista.

Tipolon kotiorjain joukossa oli muutamia, jotka ymmärsivät


hienompaa keittotaitoa paremmin kuin kukaan siihen asti mustain
maanosassa tapaamani henkilö, ja saadessani hyvää ruokaa,
huolellista hoitoa ja uudistetun toivon asuessa rinnassani paranivat
haavani niin pian, että ennenkuin olimme kulkeneet puolta
matkaakaan Nyangwehen, voin joka päivä kävellä paarieni vieressä
pitkän matkan. Koetin oleskella aina Tipolon läheisyydessä ja
huomasin hänen aina kohtelevan alkuasukkaita lempeästi.
Kulkiessamme erään kylän läpi tuli kerrankin pari vaimoa
valittamaan, että muutamat etujoukkomme miehet olivat ryöstäneet
heidän majastaan paljon kasviksia. Tipolo kutsui heti miehet
luokseen ja pakotti heidät luovuttamaan takaisin saaliinsa. Hän otti
miehiltä muutamia helmiä antaen ne naisille ja rankaisi rikollisia
muutamilla äänekkäillä keppinsä lyönneillä.

Vihdoin saavuimme tuolle suurelle virralle, jonka rannalla Nyangwe


on, ja hämmästyin nähdessäni niin paljon vettä kaukana merestä.
Melkein koko sen puoleinen ranta, jolle saavuimme, oli matalaa,
tulvan aikana veden alla olevaa alankoa, mutta toisella, oikealla
puolella, oli se jyrkkä ja kallioinen ja noin parikymmentä jalkaa
korkea.

Virran vasemmalla rannalla aivan veden läheisyydessä oli kyliä,


joissa ei sadeaikana asuta, mutta jotka nyt olivat Wagenya-nimisen
heimon hallussa. Ne näyttivät kaikki valmistavan mitä erilaisimpia
ruukkuja savesta, jota saatiin tulvaveden muodostamista nyt
kuivuneista kuopista. Metsässä, jonka kautta olimme juuri äsken
kulkeneet, oli kumminkin ollut miehiä kanoottien kovertamispuuhissa
paksuista puista.

Saavuttuamme virran rannalle hieman Nyangwen yläpuolella


vuokrasi Tipolo alkuasukkailta muutamia kanootteja, joihin hän
vakituisine seuralaisineen sekä Hatibu, Bilal ja minä astuimme, ja
pitkin virtaa, jonka vauhti oli noin viisi solmunväliä tunnissa,
saavuimme Nyangwehen noin kello yhdeksän aikaan aamulla,
erottuamme maitse kulkijoista noin kuuden aikana. Joessa oli paljon
saaria. Suuremmille rakennetuissa kylissä asuvat heimot olivat
elämäntavoiltaan ja näöltään aivan erilaiset kuin vasemmalla rannalla
asuvat wagenyalaiset. Lukemattomilla hiekkamatalikoilla oli
hirmuinen määrä sorsia ja muita lintuja, ja vedessä uiskenteli paljon
kaloja, virtahepoja ja krokotiilejä. Sivuutimme kulkiessamme monta
saarien ja mantereen välillä kalastelevaa kanoottia. Sitä mukaa eneni
sitten niitten lukumäärä, kuta lähemmäksi pääsimme Nyangweta,
jonka sinne päin matkustavien ihmisten lukumäärästä päättäen
täytyi olla suuri kaupunki.

Koettaessani saada selville tovereiltani, miksi ihmiset sinne tänään


niin suurin joukoin riensivät, vastasivat he vain: "Apinapäivä!"
Nähtyäni nuo apinat, jotka olivat esittäneet pääosaa silloin kun
Hatibu minut löysi, hämmästyin kovasti kuullessani heidän sanansa.
Mitä he tarkoittivatkaan tuolla sanallaan: "Apinapäivä?" Aiottiinko
noita suuria apinoita metsästää nyt oikein miehissä, ja siinäkö
tarkoituksessa kaikki nämä ihmiset matkustivat sinne? Kanoottien
lukumäärä eneni vain enenemistään ja kun eräs mäen rinne suurine
olkikattoisine majoineen tuli näkyviin, sanottiin minulle, että se oli
Nyangwe. Päästyämme lähemmäksi huomasin maihinnousupaikan
ympärillä satoja tyhjiä kanootteja.

Pujottauduimme niiden välitse. Näin, että noissa sinne samaan


aikaan saapuneissa toisissa kanooteissa oli paljon myytäväksi tuotua
tavaraa, jota naiset kantoivat suurissa koreissa selässään.
Kantamisen helpottamiseksi oli korista vedetty leveähkö nauha
heidän otsansa ympäri aivan samoin kuin olin nähnyt kalastajain
vaimojen Englannissa kantavan kalakoppiaan.

Saavuttuamme majojen luo huomasin niiden läheisyydessä suuren


torin, joka oli täynnä myyjiä ja ostajia. Tipolon sanottua minulle
viitattuaan ensin ihmisiin: "Ymmärrätkö nyt?" käsitin, että he äsken
puhuessaan apinoista olivat tarkoittaneetkin markkinoita.

Sinne oli kokoutunut vähintäin parituhatta eri heimoihin kuuluvaa


ihmistä, jotka elivät näillä ja muilla markkinoilla sulassa sovussa,
vaikka he muuten olivatkin sodassa keskenään. Wagenyalaiset olivat
tuoneet kaupaksi saviteoksiaan vaihtaen niitä joko kuivattuun tahi
tuoreeseen kalaan. Siat, munat, linnut, ryynit, maapähkinät,
banaanit, palmuöljy ja vuohet vaihtoivat alituisesti omistajia, ja
arabialaiset kauppiaat voivat muutamilla helmillä tahi soljilla ostaa
tarpeeksi elintarpeita suurille miesjoukoilleen. Melu ja sekamelska oli
sanoin kuvaamaton. Ostajat ja myyjät olivat tunkeutuneet niin
lähelle toisiaan, että kulkeminen paikasta paikkaan oli melkein
mahdotonta, vaikka siellä selvästi kyllä olisi ollut niin paljon tilaa,
että he olisivat voineet hajautua laajemmalle alalle tekemään
kauppojaan mukavammasti, sen sijaan että he nyt takertumalla
toisiinsa rikkoivat paljon tavaroitaan.

Kun olimme tunkeutuneet tuon ihmismeren läpi, saavuimme erään


suuren majan suurelle kuistille, jonka lattia oli noin pari jalkaa
korkeammalla maasta. Heittäydyttyämme sinne levitetyille matoille ja
pieluksille kokoutui ympärillemme pian suuri joukko kauppiaita
miehineen kuulemaan uutisia. Hatibun ja Bilalin vaimot tervehtivät
miehiään äänekkäin riemunilmauksin. Tapettujen toveriemme vaimot
ilmaisivat sen sijaan surunsa hyvin äänekkäästi, sirottaen tuhkaa
hiuksiinsa ja kulkien talosta taloon itkien ja lyöden käsiään
tahdikkaasti yhteen.

Kuullessaan kerrottavan Tipolon onnistuneesta matkasta


paukuttivat miehet käsiään, ja saatuaan tietää, miten urhoollisesti
Hatibu, Bilal ja eurooppalainen olivat taistelleet, mykistyivät he
kummastuksesta. Kun meitä oli verrattu leijoniin, norsuihin,
krokodiileihin ja puhveleihin, ruvettiin ihmettelemään, miten minä,
valkoinen mies, olin voinut kulkea näin kauas meren rannikolta,
jonka olemassaolosta ja paikasta näillä tänne kokoutuneilla ihmisillä
oli vain hämärät aavistukset. He hämmästyivät kuullessaan minun
viettäneen vuosia washenzien luona, joiksi Zanzibarin kauppiaat
nimittävät kaikkia Keski-Afrikan pakanakansoja, joutumatta tapetuksi
ja syödyksi. Heidän kummastuksensa muuttui kumminkin
rajattomaksi kuullessaan minun päässeen pakoon kääpiöiltä, joiden
myrkytettyjen nuolien kotelon olin säilyttänyt, sillä, sanoivat he, nuo
kääpiöt ovat todellakin pahoja miehiä ja äkäisiä kuin paholaiset.

Niin pian kuin meidän uutisvarastomme oli loppunut, rupesi Tipolo


kyselemään, mitä hänen poissaollessaan oli tapahtunut. Heti tuli
hänen luokseen pari sinne iltaa ennen meidän tuloamme saapunutta
miestä ilmoittamaan, että hänen veljensä, Hamed ibu Sayf, saapuu
Nyangwehen muutaman päivän kuluttua Ujijista, josta hän oli
lähtenyt hakemaan Tipolon sinne jättämiä tavaroita. Miehet sanoivat
myöskin, että Ujijin ja Unyanyemben välinen tie, jota watutalaiset
olivat pitäneet suljettuna jonkun aikaa, oli jälleen avattu liikenteelle.
Kun Tipolo oli kuullut nämä asiat, sanoi hän heti veljensä tultua
varustavansa karavaanin viemään koottua norsunluuta rannikolle.
Hän ilmoitti minulle, että saisin lähteä sen mukana, ja sanoi
antavansa sen päällikkyyden Hatibulle. Tunnustukseksi Hatibun ja
Bilalin osoittamasta urhoollisuudesta vapautti hän heidät nyt
kokonaan lahjoittaen Hatibulle kaksitoista orjaa ja kuusi
torahammasta ja Bilalille kahdeksan orjaa ja neljä hammasta.

Järjestellessämme näitä asioita loppuivat markkinatkin. Hetken


kuluttua ei voitu huomata mistään muusta kuin poljetusta maasta ja
roskien paljoudesta, miten paljon ihmisiä siellä vielä äsken oli ollut.
Menin jyrkälle rantatörmälle katselemaan, miten kanootit hajautuivat
kaikkiin suuntiin.

Tipolon talosta luovutettiin nyt minulle mukava huone asunnoksi.


Sain uusia vaatteita, sokeroitua kahvia ja vehnäjauhoista leivottua
leipää, kaikki ylellisyyksiä, joita ei ollut tullut osakseni pitkiin aikoihin.
Vaikka tiesinkin, että minulla oli pitkä, tarmoa kysyvä ja ehkä
hyvinkin vaarallinen matka kestettävänä vielä päästäkseni rannikolle,
ei minulla ollut minkäänlaisia pahoja aavistuksia. Paneutuessani
nukkumaan sinä iltana kiitin Jumalaa sydämeni pohjasta, että hän oli
suojellut minua kaikissa vaaroissa, joihin olin joutunut samoillessani
Afrikaan, tunnustaen Tipolon ja Hatibun ystävällisyyden ja tämän
lopulliseen turvapaikkaankin pääsemisen hänen ansiokseen.
XXI.

LÄHTÖ RANNIKOLLE.

Tipolo ja hänen läheisimmät ystävänsä kohtelivat minua hyvin


ystävällisesti; mutta monet vähäpätöisemmät kauppiaat, jotka
olisivatkin paremmin sopineet ryöväreiksi ja joita Tipolon määräämät
rajoitukset heidän suhtautumisestaan alkuasukkaihin ärsyttivät, eivät
olleet ollenkaan suosiollisia minulle. He sanoivat suoraan, että oli
hulluutta sallia englantilaisen, joka oli saanut selville kaikki heidän
toimensa Keski-Afrikassa, poistua maasta, koska hän varmasti on
kertova päälliköilleen heidän orjakaupastaan, johon jo "beni harit",
kuten he meriupseerejamme nimittivät, sekautuivat kauppiaitten
kuljettaessa orjia Zanzibarista Muncullaan ja Muscatiin. Tipolo vastasi
heille, että täällä pakanain keskuudessa oli kaikkien sivistyneitten
henkilöitten autettava toisiaan, ja velvoittivathan heitä sitäpaitsi
vieraanvaraisuuden lait, arabialaisen rodun perimätavat ja
Muhametin, jota Jumala siunatkoon, opetukset auttamaan minua
niin paljon kuin suinkin vaatimatta mitään korvausta ja pelkäämättä
seurauksia.

Vaikka Tipolo olikin niin ystävällinen minulle, ikävöin kumminkin


päivää, jolloin saisin poistua Nyangwesta. Hänen läheisyydessään ei
minua uskallettu loukata, mutta muutoin eivät muutamat ilkeät
kauppiaat häikäilleet nimittämästä minua nazarealaiseksi, peikoksi ja
saastaiseksi, ja olisivat epäilemättä kohdelleet minua oikein
kovakouraisesti, elleivät he olisi pelänneet Tipoloa. Huomasin hyvin
pian, että nuo henkilöt kohtelivat pahasti muitakin. Omia orjiaan
kohtelivat he mitä julmimmin, aivan eri tavalla kuin Tipolo
palvelijoitaan. Kumminkin on minun pakko huomauttaa, että vaikka
nuo viimeisellä matkalla vangitut orjat saivatkin kylläkseen syödä,
olivat heidän asuntonsa kurjat, ja niissäkin saivat he oleskella
yhteensidottuina, kymmen- tai viisitoistamiehisissä kimpuissa,
jotteivät karkaisi.

Eräänä iltana juodessani kahvia Tipolon kuistilla hänen ja Hatibun


kanssa, jolle hän juuri oli antanut ohjeita tulevaa matkaamme varten
rannikolle, uskalsin ruveta puhumaan hänelle orjuudesta, joka
kuljetti nuo surkuteltavat olennot kauas pois heidän kansansa ja
omaistensa luota. Mutta suureksi ilokseni huomasinkin hänen
suhtautuvan asiaan rauhallisesti. Hän näytti vain ajattelevan, että
kaikilla englantilaisilla oli nurinkurinen käsitys orjuudesta, jota hän
sanoi aina olleen ja tulevankin olemaan, lisäten, että Davidilla ja
hänen pojallaan Salomolla ja profeetta Jobillakin oli ollut orjia, joiden
kauppaa hän sanoi Koraaninkin suosivan. Vastasin siihen, ettei
Koraani varmastikaan käskenyt ruveta sotimaan orjien
hankkimiseksi. Myönsin, ettei hän puheista päättäen ollut ikinä
lähettänytkään miehiä vasiten tuollaiselle matkalle, kuten Muinyi
Dugumbi ja muut kauppiaat, mutta sanoin hänen sittenkin
menettelevän väärin pitäessään noin suurta miesjoukkoa kahleissa.

Hän sanoi, ettei Muinyi Dugumbin ja hänen laistensa miesten teot


oikeastaan liikuttaneet häntä ollenkaan, vaikka hän usein käyttikin
vaikutusvaltaansa estääksensä heitä hyökkäämästä alkuasukasten
kimppuun syyttä ja pelottaaksensa heidät kohtelemaan vankejaan
ystävällisesti. Hänen ja kaikkien muidenkin todellisten arabialaisten
talouteen kuuluvia orjia kohdeltiin kuin muitakin perheen jäseniä,
joten heillä ei ollut mitään valittamista. "Heidän olonsa ovat
päinvastoin", sanoi hän, "paremmat kuin vapaitten miesten, ja he
voivat aina, jos he vain sellaista toivovat, päästä vapaiksi. Noita
ottamiani vankia en voi kohdella yhtä hyvin, mutta sille en
oikeastaan mahda mitään. Minulla on täällä suuret määrät suurella
vaivalla ja uhrauksilla koottua norsunluuta, jolla ei ole täällä mitään
arvoa. Ansaitakseni sillä on minun kuljetettava se rannikolle
myytäväksi, mutta miten, siinäpä se juuri kysymys onkin. Jos lähetän
omat mieheni, nuo Zanzibarista tänne kuljettamani ja
wanyamwesiläiseni viemään sitä, jään tänne aivan turvattomaksi;
enkä voi palkata täältä kantajiakaan, sillä he eivät suostu lähtemään
niin kauaksi. Orjain ruokkiminen maksaa kyllä enemmän kuin
vapaitten miesten, joita käytämme kantajina Unyanyembestä
Kilwaan ja Bogamoyoon antaen heille palkan lisäksi vielä ruoankin,
mutta rannikolle mennessämme on meidän käytettävä orjia, vaikka
emme haluaisikaan, sillä useinkin on se hyvin vastuksellista. Kun
kymmenestä yhteenkahlehditusta orjasta yksikin pysähtyy, niin silloin
pysähtyvät kaikki. Kymmenen orjaa ei voi kantaa niin paljon kuin viisi
vapaasti kulkevaa miestä. Jos vain voisin kuljettaa norsunluuni
orjitta, olisin iloinen, sillä silloin saisin sen nopeasti ja pienemmin
kustannuksin rannikolle. Vapaa mies haluaa päästä matkansa päähän
niin nopeasti kuin suinkin saadakseen palkkansa, mutta orjalle on
toinen päivä samanlainen kuin toinenkin, eikä hän ollenkaan välitä
matkan joutumisesta. Ei, jos vain voisin saada tarpeeksi kantajia
kuljettamaan norsunluutani, en milloinkaan käyttäisi orjia! Ja
sitäpaitsi, ellemme ostaisi noita pakanain sodassa vangitsemia
ihmisiä orjiksemme, niin millaisen kohtalon uhriksi he
joutuisivatkaan? Heidät tapettaisiin ja syötäisiin, joten orjuus siinäkin
tapauksessa on heidän pelastuksensa."

En osannut vastata mitään, mutta hän ei saanut minua


muuttamaan vakaumustani, että kaikki orjuus on
anteeksiantamatonta vääryyttä. Vihani sitä kohtaan kasvoi päivittäin
suuremmaksi nähdessäni, miten noita viimeisissä taisteluissa saatuja
vankeja kohdeltiin, vaikka niiden olot olivatkin kymmentä kertaa
paremmat kuin noiden toisten kauppiasten käsiin joutuneitten.
Minulla ei ollut kumminkaan paljon aikaa väitellä Tipolon kanssa
tuosta asiasta, sillä hänen veljensä saavuttua työskenteli hän
aamusta iltaan kauppamatkueitten järjestämisessä sisämaahan ja
norsunluun lähettämisessä rannikolle.

Olin iloinen tietäessäni, että Hatibu, tuo ensimmäinen arabialainen


tuttavani, oli tuleva karavaanimme päälliköksi ja Bilal sen
apulaisjohtajaksi, sillä heidän seurassaan tiesin saavani olla turvassa.
Jos vain joku toinen mies, joka ei pitänyt suorasta puheestani
orjuutta vastaan, olisi saanut johtajan toimen, ei hän olisi kohdellut
minua niin ystävällisesti kuin Hatibu, jonka kanssa olin solminut
hyvin lämpimän ystävyysliiton, semminkin noiden yhdessä
kokemiemme vaarojen jälkeen. Tunsin, että paitsi Jumalalle olin
hänellekin suuressa kiitollisuuden velassa elämästäni ja tästä
suunnitelmasta päästä omien kansalaisteni luo ja lopulta omaan
maahani.

Valmistuksemme eivät olleet hyvinkään suuret. Paitsi Hatibuta,


Bilalia ja heidän vaimojaan, määräsi Tipolo parikymmentä
zanzibarilaista ja kolmekymmentä wanyamwesilaista mukaamme.
Sata kantamusta norsunluuta sälytettiin yhtä monen orjan selkään ja
viisikymmentä muuta orjaa otettiin mukaan siltä varalta, että jotkut
noista muista kaatuisivat, myytäisiin tahi joutuisivat hukkaan matkan
varrella. Siihen asti saivat he kantaa vartijainsa tavaroita ja pieniä
helmi- ja solkilaatikoita, joiden sisällöllä oli määrä ostaa ruokaa.
Muinyi Dugambi ja muut kauppiaat käyttivät tilaisuutta hyväkseen
lähettääkseen rannikolle orjia ja norsunluuta, määräten omien
tavaroittensa ja orjiensa vartijoiksi muutamia omia miehiään.

Ennen poistumistamme Nyangwesta käski Tipolo minun kertoa


Zanzibarissa olevalle Englannin konsulille, että hän oli tehnyt kaikki
voitavansa puolestani. Hän sanoi, että hänen siellä oleva
asiamiehensä antaa minulle varoja kotimatkaani varten. Hänen
ystävällisyytensä liikutti minua niin, etten ymmärtänyt, miten oikein
kiittäisin tuota ystävällistä ja hyväsydämistä miestä. Velvollisuuteni
on esittää hänet sellaiseksi kuin hän todellisuudessa oli ja pahoitella,
että sellainen mies melkein pakotettiin tuohon häpeälliseen
orjakauppiaan ammattiin.

Hän saatteli meitä pari tuntia lähdettyämme liikkeelle.


Erotessamme sanoi hän antaneensa Hatibulle minun erikoisesti
käytettäväkseni laatikollisen riisiä, curry-maustetta ja hieman kahvia,
että voisin aterioida hieman paremmin kuin jos minun olisi pakko
elää aivan matkamme varrelta saamallamme ruoalla.

Ensimmäisinä päivinä kulki tiemme melko puuttomien maiden


kautta, jossa oli vain vähän asukkaita kaukana toisistaan olevissa
kylissä. Totellen Tipolon käskyä maksoi Hatibu kaiken noiden kylien
asukkailta ottamansa ruoan, mutta toisten osastojen päälliköt
lupasivat miestensä varastaa ja ryöstää, ja meidän oli helppo
huomata, että jolleivät ryöstetyt kovasti olisi pelänneet pyssyjämme,
olisivat he hyökänneet kimppuumme. Kun huhu tulostamme levisi,
pakenivat naiset ja lapset heti lähestyessämme ja ainoastaan miehet
jäivät kyliin. Koska he olivat asestautuneet raskailla keihäillä ja
suurilla puukilvillä, näyttivät he hirveän sotaisilta. Joka ilta
leiriydyttyämme määräsi Hatibu, ettei kukaan saanut poistua
yksinään karavaanista, koska me juuri olimme tulossa Manyuemaan,
jossa asukkaat olivat niin vihamieliset kaikille muukalaisille, että he
tapettuaan aina söivät ne. Keskustellessani Hatibun ja Bilalin kanssa
loikoillessamme leiritulemme ääressä huomasin, ettei tuo varoitus
ollut aiheeton, sillä he kertoivat monta tapausta, jolloin joku joukosta
eronnut oli kadonnut ikuisiksi ajoiksi, ja usein päivisin
huomasimmekin me sitten suuria miesjoukkoja vahtimassa
kulkuamme, selvästi valmiina hyökkäämään kimppuumme sopivassa
tilaisuudessa.

Päästyämme etemmäksi alkoivat seudut muuttua tiheämmästi


asutuiksi, ja päivittäisin sivuutimme aina monta suurta kylää, joiden
rakennustapa ja järjestely olivat aivan erilaiset kuin ennen näkemäni.
Punaisesta savesta valmistetut olkikattoiset majat oli niissä kaikissa
järjestetty pitkiin riveihin. Pienemmissä kylissä oli majarivejä vain
kaksi, jotka oli rakennettu jonkun avonaisen paikan kummallekin
puolelle. Sen keskelle oli tavallisesti istutettu rivi öljypalmuja, joiden
välissä olivat kyläläisten vilja-aitat ja kovat savilattiat suurine,
puoliväliin korkeuttaan sinne upotettuine puulaatikkoineen. Sitten oli
niissä vielä suuria reikiä, joissa naiset voivat survoa maissia
jauhoiksi.

Suuremmissa kylissä sitävastoin oli kolme, jopa neljäkin tällaista


kaksinkertaista riviä, joskus rinnan, mutta useammasti
säteentapaisesti lähtien jostakin suuremmasta aukeamasta.
Jokaisessa kylässä oli sitäpaitsi ainakin yksi ellei useampia suuria
katoksia, joiden alla olevissa valimoissa rautaa sulatettiin.
Saadakseen kuumuuden nousemaan tarpeeksi olivat he keksineet
mitä omituisimmat palkeet. Sulatusuunin ympärillä oli usein
toistakymmentä kyykkysillään olevaa miestä työskentelemässä kukin
omilla palkeillaan. Rauta valettiin niin kolmen tahi neljän naulan
suuruisiin kävynmuotoisiin, neljä tuumaa pitkiin kappaleihin.
Valmistajat vaihtoivat näillä kaikenlaisia elintarpeita ja Keski-Afrikassa
käytännössä olevia herkkuja. Hatibu ja muut seuralaisemme
vaihtoivat niitä suuren määrän olettaen meidän helposti voivan
vaihtaa niillä ruokatavaroita matkustettuamme kauemmaksi.

Nuo raudanvalajat hankkivat mainetta raudalleen muullakin


tavalla, sillä he olivat hyvin taitavia seppiä. Heidän takomansa
puukot, keihään kärjet ja kirveet oli hyvin huolellisesti koristettu
siselöidyillä kuvioilla ja olivat usein reiälliset. Kaikkein kalleimmat oli
koristettu kupariupotuksilla, useinkin hyvin maukkaasti. Päälliköiden
aseet olivat tavallisesti niin täynnä koristuksia, että ne olivat melkein
kelvottomat taisteluvälineiksi.

Noiden raudanvalajien kylät sivuutimme noin seitsemässä


päivässä, ja pian sen jälkeen saavuimme eräälle Luama-nimiselle
joelle, jonka poikki meidän oli kuljettava kanooteilla. Juuri
ylikulkiessamme säikäytti meidät virtahepolauma, joka myötävirtaan
uidessaan joutui hyvin lähelle kanootteja. Eräs tuli todellakin niin
lähelle kanoottia, jossa Hatibu ja minä olimme, että olisin voinut
hypätä sen selkään, ja olin kauheasti peloissani, että veneemme
kaatuu, mikä ei kumminkaan tapahtunut.

Koska oli jo liian myöhäistä jatkaa matkaa kaikkien päästyä poikki,


pystytimme leirimme joen törmälle, ja illan kuluksi aloimme jutella
virtahevosista. Muutamat alkuasukkaat sanoivat aikovansa odottaa
noita petoja maalla pistääksensä ne kuoliaaksi silloin, kun ne
nousevat vedestä. Niiden meille aiheuttaman vaaran ja kiusan vuoksi
halusin minäkin tuhota ne ja ehdotin senvuoksi Hatibulle, että
koettaisimme tuotakin urheilua, jos vain onnistuisimme löytämään
paikan, missä ne tulevat maihin.

Kun alkuasukkaat kuulivat sen, sanoivat he opastavansa meidät


paikalle, johon virtahepoja pian ilmestyy paljonkin, mutta koska tuon
aikeen toteuttaminen oli jo tänä iltana myöhäistä, ehdottivat he, että
jäisimme sinne seuraavaksi päiväksi antaaksemme miesten levähtää
ja hankkia ruokaa. Se sopikin meille hyvin, sillä sieltä voimme saada
halvalla paljon maissia. Hatibu oli kyllä aikonut matkustaa vielä pari
päivää ja sitten levähtää ja varustaa samalla karavaaninsa
ruokavaroilla, mutta nyt saikin hän kuulla, että nuo kylät, joihin hän
oli aikonut pysähtyä, oli poltettu, joten meidän elintarpeidemme
hankkiminen sieltä ei olisi onnistunutkaan.
XXII.

VIRTAHEPOJEN KEIHÄSTÄMINEN.

Hatibun ja minun lähdettyä leiristä seuraavana aamuna heti


yhdeksältä jäi Bilal sen komentajaksi. Neljän pyssymiehen ja parin
alkuasukkaan seurassa laskimme kanooteilla noin kolme penikulmaa
myötävirtaan, jolloin nousimme maihin huomataksemme
päässeemme katselemaan hyvin harvoin tarjolla olevaa näytelmää.
Vesi oli nyt noin kymmenen jalkaa alempana kuin korkeimman tulvan
aikana, ja sinne tänne oli sen aletessa jäänyt ruohoakasvavia
lammikoita, jotka olivat päävirrasta noin viisisataa metriä leveän
mutapenkereen takana. Noiden lammikoiden rannoilla oli hirveän
paljon haikaroita ja muita lintuja, jotka oppaimme kertomuksesta
päättäen tulivat sinne vain muutamia kertoja vuodessa muutamiksi
päiviksi. Näimme suuria virtahepolaumoja kahlailevan vedessä, jota
oli monin paikoin niin matalasti, ettei se voinut peittää niitä.
Matalikoilla oli sitäpaitsi paljon tummia olentoja, jotka olivat aivan
kuin suuria puunrunkoja. Kun tulimme lähemmäksi, alkoivat ne
liikkua, jolloin näimme, että ne olivat krokodiilejä.

Varmasti oli meidät nyt opastettu paikkaan, missä todellakin oli


paljon virtahepoja, ja kysymys olikin nyt siitä, kuinka pääsisimme
niitä lähestymään. Oli hyvin luultavaa ja vaarallistakin, että jos me
uskaltaisimme mennä veteen, krokodiilit rupeaisivat meitä
ahdistamaan. Ensimmäinen ehdotukseni, että vetäisimme
kanoottimme mutapenkereen yli lammikkoon, näyttäytyi
mahdottomaksi, sillä meitä ei ollut tarpeeksi monta siihen hommaan.
Hatibu alkoi moittia oppaita sanoen heidän vieneen meidät tyhjää
hakemaan, mutta he rukoilivat meitä olemaan suuttumatta sanoen
meidän seuraamalla erästä polkua, jonka suun he meille näyttivät,
pääsevän puolessa tunnissa erääseen kylään, jossa voimme levähtää
auringonlaskuun asti. Tuon kylän vieressä oli kuulemma eräs
sellainen paikka, johon virtahevot aina tulivat syömään juuri
kypsymäisillään olevia tähkiä ja johon oli rakennettu sopiva
väijymispaikka niiden keihästämiseksi.

Ensin ei Hatibu halunnut lähteä tuonne kylään, koska hän pelkäsi


oppaiden pettävän meidät. "Ja petoksettakin", sanoi hän, "voivat
muassamme olevat miehet joutua riitaan alkuasukasten kanssa,
jolloin emme enää voi palata toveriemme luokse emmekä puolustaa
itseämme." Onnistuin haihduttamaan hänen epäluulonsa, ja
seuratessamme tuota korkean ruohikon halki kulkevaa polkua
näimme koko seudun olevan täynnä virtahevosten ja krokodiilien
polkuja, ja silloin tällöin olimme näkevinämme tuoreita norsunkin
jälkiä. Heti kun huomasimme sellaisia, innostutti Hatibutakin toivo
saada enemmän norsunluuta niin, että hän unhotti kaiken
varovaisuuden.

Emme olleet vielä päässeet tuota polkua kauemmaksi kuin noin


viidensadan metrin päähän, kun kuulimme huutoja ja saimme pian
selville niiden aiheuttajien olevan zanzibarilaisia. Koska pelkäsimme
niiden joutuneen johonkin ikävään tilanteeseen, kiiruhdimme
eteenpäin niin nopeasti kuin suinkin heitä kohti, ja päästyämme
tunkeutumaan ruohikon läpi oli edessämme mitä kummallisin näky.
Suuri ala ruohikosta oli poljettu aivan maan tasalle. Eräs joukko
aikaisemmin tänä aamuna leiristä poistuneita miehiä heilutti aseitaan
ja muutamat heidän keskessään olevat pistelivät jotakin, jota emme
voineet oikein selvästi erottaa. Mutta tultuamme lähemmäksi
näimmekin, että se oli hirveän suuri krokodiili, ja meille kerrottiin,
että se oli siepannut erään miehen, joka varomattomuudessaan oli
poikennut syrjään polulta.

Kuultuaan tuon miesraukan huudot olivat hänen toverinsa


kiiruhtaneet apuun ja onnistuneetkin ajamaan pedon tiehensä, mutta
jonkun matkaa kuljettuaan oli krokodiili kääntynytkin, ja nyt he olivat
kaikki kokoutuneet sen ympärille koettaen löytää sellaisen paikan
siitä, johon he voisivat upottaa keihäänsä. Sitä tehdessään hyppivät
miehet puolelta toiselle koettaessaan karttaa sen voimakkaan
pyrstön laajalle ulottuvia lyöntejä. Juuri kun me tulimme, onnistui
eräs muita rohkeampi mies heittämään keihäänsä sen silmään. Eläin
pyörähti heti tuskissaan selälleen paljastaen vatsansa, jossa nahka
on pehmeämpää. Se iskettiinkin heti aivan täyteen keihäitä. Vaikka
se olikin haavoittunut kuolettavasti, oli se kumminkin niin
sitkeähenkinen, että se löi pyrstöllään monta miestä kumoon ja
tarttui hampain erään miesraukan käsivarteen niin, että liha ja
jänteet irtautuivat luista.

Silloin me pyssymiehet annoimme sitä suoraan päähän, niin että


pää meni aivan murskaksi. Emme sitten viitsineet jäädä
läheisyyteen, sillä alkuasukkaat sanoivat olevan hyvin luultavaa, että
noita suuria matelijoita oli useampiakin ruohokossa, vaan otimme
nuo haavoittuneet miehet mukaamme ja päästyämme polulle
kiiruhdimme niin nopeasti kuin suinkin kylään.
Saavuttuamme sinne huomasimme, että tuo ensimmäinen
krokodiilin hampaisiin joutunut mies oli jo mennyttä kalua ja
toisenkin haavat olivat sellaiset, etten ymmärtänyt miten voisimme
häntä auttaa. Oppaamme sanoivat, että jos annamme miehen kylän
tietäjän hoidettavaksi, pelastaa tietäjä kyllä hänen henkensä, mutta
luultavasti on miehen alistuttava silloin siihen, että hänen
haavoittunut käsivartensa katkaistaan. Hämmästyin suuresti
kuullessani sen, sillä en voinut ymmärtää, miten nuo villit voisivat
sahata poikki jäseniä. Tämänkin onnettoman miehen kyynärvarren
luut olivat paljaat ranteesta kyynärpäähän saakka, ja lihakset
riippuivat siekaleina niiden ympärillä. Onneksi ei veren vuoto ollut
runsas, sillä siinä tapauksessa olisi hän kuollut hyvin pian.

Hatibu sanoi heti, että jos tietäjä vain voi parantaa miehen, on hän
korvaava lääkärin vaivat hyvin runsaasti, ja luultavasti kuultuaan sen
tulikin kirurgi hyvin nopeasti paikalle. Mies käski sytyttää tulen,
asettaa padan sille ja keittää paksua velliä. Heti kun se oli ruvennut
kiehumaan tasaisesti, katkaisi hän hyvin terävällä veitsellä
haavoittuneelta, jota neljä vahvaa miestä piteli lannistaakseen hänen
vastarintansa, käsivarren kyynärnivelestä poikki ja heitettyään
kämmenpuolen menemään työnsi hän tuon vertavuotavan tyngän
kiehuvaan vellipataan.

Sitten kuin velli oli jäähtynyt ja kuivanut suureksi möhkäleeksi


tyngän ympärille, sai mies ottaa sen padasta ja kirurgi kääri sen
ympärille palasen öljyttyä pellavakangasta. "Nyt on vain varottava",
sanoi hän, "ettei kipeään kohtaan varomattomasti kosketa,
ennenkuin puuro irtautuu omia aikojaan. Siihen kuluu noin kolme
viikkoa, jolloin haava on parantunut ja mies on yhtä terve kuin
ennenkin, tietysti lukuunottamatta hänen katkaistua käsivarttaan."
Kirurgille ilmoitettiin, että hänen oli tultava kanssamme
huomenaamulla leiriin saamaan runsas palkinto vaivoistaan. Sitten
aloimme kysellä tarkemmin, miten voisimme parhaiten toteuttaa
tuon suunnittelemamme virtahepojen keihästyksen, jolloin meille
sanottiin, että tietäjä itse tulee opastamaan meidät niiden
käyntipaikalle. Hän vaati vain, että ehdottomasti tottelisimme hänen
määräyksiään, "Ja ellei silminnähtävä vaara uhkaa", sanoi hän,
"emme saa ampua, sillä yöllä laukaistu pyssy voi hälyyttää koko
maakunnan." Suostuimme vastaansanomatta hänen ehdotukseensa.

Tuntia ennen auringonlaskua poistuimme kylästä ja kuljettuamme


erästä maissipeltojen poikki vievää kapeata polkua saavuimme
paikkaan, jossa lammikon ranta oli noin neljä jalkaa ylempänä veden
pintaa ja johon virtahevot öisillä ruoanhakumatkoillaan olivat
polkeneet noin kuusi jalkaa leveän uran. Piilouduimme sen toiselle
puolelle odottamaan noiden petojen tuloa.

Ennen auringonlaskua kiinnittivät huomiotamme ja hämmästyttivät


meidät kokonaan nuo suunnattomat lintuparvet, jotka kohottuaan
lammikoista lensivät ympäröivissä metsissä oleviin yöpaikkoihinsa, ja
sorsien ja muiden vesilintujen narskutus niiden kutsuessa
tovereitaan kaislikon kätköihin. Heti pimeän tultua hiljenivät kaikki
muut äänet, paitsi lukemattomien sammakkojen kurnutus. Näytti
aivan siltä kuin ne, saadessaan nyt olla turvassa haikaroilta ja muilta
höyhenpukuisilta vihollisiltaan, olisivat päättäneet huvitella oikein
perinpohjin muuttamalla yksitoikkoisilla sävelillään yön
rauhallisuuden vastenmieliseksi meluksi. Kuunnellessani niitä voin
melkein kuvitella joutuneeni jonkun suuren laivaveistämön
läheisyyteen, jossa lukemattomat tilkitsijät ja sepät tekivät ahkerasti
äänekästä työtään.
Odotimme hetkisen ääneti ja liikkumatta paikoillamme. Aloin jo
ajatella, että virtahevot olivat kai valinneet jonkun toisen paikan
tämännöiseksi laitumekseen, kun Hatibu tarttui käsivarteeni sanoen:

"Kuuntele nyt, Frank, tarkasti!"

Kuuntelin melkein hengittämättä ja pian erotinkin pärskähdyksiä ja


korskumista, joka vähitellen läheni. Sitten kuulin loiskahduksia ja
noiden suurien eläimien ääniä niiden kahlatessa mudassa ja vedessä
päästäkseen maihinnousupaikalle. Pian näimmekin erään suuren
tumman möhkäleen kohoavan vedestä ja menevän aivan
ohitsemme. Tartuin jo keihääseeni heittääkseni sen ohimenevän
eläimen kylkeen, mutta tietäjä käski meitä kuiskaten odottamaan,
"sillä jos tämä ensimmäinen vain haavoittuu, kääntyy se heti takaisin
lammikkoon, jolloin kaikki toivonne yön kestävästä urheilusta saavat
raueta", sanoi hän. Hitaasti ja varovaisesti sivuutti tuo suuri eläin
meidät ja päästyään rannasta noin parinkymmenen metrin päähän
se päästi kumean mylvinnän, johon lammikossa olevat vastasivat.
Tuo oli varmasti joku merkki, että kaikki oli vaaratonta, sillä heti
kiipesi vedestä noin parikymmentä kaiken suuruista virtahepoa,
joista viimeiset olivat puolta pienemmät kuin ensimmäiset.

Tietäjä antoi nyt merkin keihästämisen alkamiseen. Heitin omani,


raskaan rautakärkisen aseeni, erään viimeiseksi tulleen kylkeen ja
kuulin Hatibun ja muiden seuraavan esimerkkiäni. Samassa
silmänräpäyksessä sytytti muudan alkuasukas tarkoitukseen kuivista
ruohoista ja kaisloista valmistetun suuren tulisoihdun, joka
sytyttyään palamaan valaisi täydellisesti koko paikan. Sytytettyämme
heti toisetkin tulisoihtumme, tulivat virtahevot kuin ymmälle
tietämättä oikein mihin kääntyä. Tuo ensimmäiseksi keihästettäväksi
joutunut oli kuollut paikalla, ja nyt me kaikki sekä alkuasukkaat että
meikäläiset hyökkäsimme laumaan ja pistelimme oikeaan ja
vasempaan katsomatta ollenkaan, mihin eläimeen se milloinkin
sattui. Tämä oli hyvin vaarallista, sillä vaikka yllätyksemme olikin
säikäyttänyt eläimet, koettivat ne kumminkin puolustautua hyökäten
ahdistajainsa kimppuun, ja ainoastaan suuri varovaisuutemme ja
vikkelyytemme pelasti meidät joutumasta niiden poljettaviksi, joka
olisi ollutkin varma kuolema.

Näytelmä oli katselemisen arvoinen. Liekkien liehuva valo heijastui


eläinten kiiltävistä kyljistä, ja metsästäjät, pistellessään haavoja joka
taholle, olivat kuin raivostuneita villejä. Kun he onnistuivat
mielestään hyvin, kuulostivat heidän huutonsa ja karjumisensa
hirveiltä, semminkin, kun siihen sekoittui haavottuneitten eläinten
mylvintä ja korskuminen niiden koettaessa murtautua pakoon,
vaikkakin turhaan. Sillä niiden kimppuun hyökkäsi vain uusia miehiä
keihäineen ja heiluttaen suuria tulisoihtujaan, niin että niiden oli
pyörrettävä takaisin.

Viimein alkoivat tulisoihdut sammua, ja noin kuusi keskellemme


yhteen joukkoon joutunutta eläintä hyökkäsi päättäväisesti
lammikkoa kohti, ja vaikka eräs kaatuikin vereksistä haavoista juuri
ennen veteen pääsemistään, onnistuivat muut pakenemaan.
Rupesimme nyt tarkastelemaan saavutettua tulosta ja huomasimme,
että keihäämme olivat kaataneet viisitoista virtahepoa. Vaikka kaikilla
miehillämme oli kerrottavana pitkiä juttuja, miten heidän
pelastuksensa usein oli ollut aivan hiuskarvan varassa, ei heistä
kukaan ollut kumminkaan haavoittunut.

Tietäjä ja muut alkuasukkaat olivat hyvin iloissaan tämän yhden


yön tuloksista, sillä kaatuneista eläimistä saivat sekä he että me
paljon ruokaa. "Virtahevot eivät nyt tule", sanoivat he, "virran tälle
rannalle moneen kuukauteen, joten meidän viljelyksemme säästyvät
niiden hävityksiltä." Hatibu, joka oli jo ennakolta sopinut, että
torahampaat joutuisivat hänen omaisuudekseen, oli iloinen
saadessaan sellaisen lisän rannikolle kuljetettavaamme arvokkaaseen
tavaraan.

Nuo hampaat katkaistiin heti, ja koska silloin jo oli keskiyö,


palasimme kylään lepäämään, jättäen eläinten nylkemisen ja
paloittelemisen huomiseksi. Hatibu ja minä olimme päivän
kestäneestä työstä ja tulisesta taistelusta niin uupuneita, että
nukuimme heti vuoteille heittäydyttyämme raskaaseen uneen.
Uneksin metsästyksestämme ja olin kuulevinani, miten nuo eläimet
päryyttivät rumpujaan ja ampuivat meitä musketeilla. Lopulta
heräsin säikähdettyäni huomiosta, että suurin eläimistä tähtäsi
minuun vähintäin kaksineljättä naulaisella pyssyllä, mutta
huomasinkin pian, että rummut todellakin pärisivät kaikilla suunnilla
ja pyssynlaukauksia kuului silloin tällöin etäältä.
XXIII.

RIITOJA ALKUASUKASTEN KANSSA.

Herätin heti Hatibun ja yhdessä me sitten hyökkäsimme kylän


keskelle huutaen miehiämme kokoutumaan ympärillemme, sillä oli
selvää, että joku kahakka oli syntymässä alkuasukasten ja joidenkin
Nyangwesta mukaamme lähteneitten miesten kesken.

He tulivat luoksemme heti ja ehdottivat, että sytyttäisimme kylän


tuleen ja sitten koettaisimme päästä niin nopeasti kuin suinkin
omaan leiriimme ottamatta ollenkaan selvää hälyytyksen syystä. He
olivat kaikki niin peloissaan ja raivoissaan, ettei ollut ollenkaan
sanottu, millaisiin julmuuksiin he olisivat voineet ryhtyä, mutta
onneksi pysyi Hatibu tyynenä ja onnistui hillitsemään heidät
saatuaan heidät ymmärtämään, ettei sen kylän asukkaat voineet
mitenkään olla osalliset tuohon kahakkaan, koska leirimme oli joen
toisella rannalla eikä näistä miehistä ollut ainoakaan poissa kotoaan.

Tietäjä ja kaikki hänen kansalaisensa olivat myöskin tulleet esille


majoistaan, ja ajattelematon sana tahi teko olisi varmasti aiheuttanut
riidan, jonka seurauksia ja päätöstä ei kukaan olisi voinut ennakolta
sanoa. Hatibu huusi heille sanoen, että me olimme Tipolon

You might also like