Interface RecognitionConfigOrBuilder (2.0.0)
public interface RecognitionConfigOrBuilder extends MessageOrBuilder
Implements
com.google.protobuf.MessageOrBuilderMethods
getAudioChannelCount()
public abstract int getAudioChannelCount()
The number of channels in the input audio data.
ONLY set this for MULTI-CHANNEL recognition.
Valid values for LINEAR16 and FLAC are 1
-8
.
Valid values for OGG_OPUS are '1'-'254'.
Valid value for MULAW, AMR, AMR_WB and SPEEX_WITH_HEADER_BYTE is only 1
.
If 0
or omitted, defaults to one channel (mono).
Note: We only recognize the first channel by default.
To perform independent recognition on each channel set
enable_separate_recognition_per_channel
to 'true'.
int32 audio_channel_count = 7;
| Returns | |
|---|---|
| Type | Description |
int |
The audioChannelCount. |
getDiarizationConfig()
public abstract SpeakerDiarizationConfig getDiarizationConfig()
Config to enable speaker diarization and set additional parameters to make diarization better suited for your application. Note: When this is enabled, we send all the words from the beginning of the audio for the top alternative in every consecutive STREAMING responses. This is done in order to improve our speaker tags as our models learn to identify the speakers in the conversation over time. For non-streaming requests, the diarization results will be provided only in the top alternative of the FINAL SpeechRecognitionResult.
.google.cloud.speech.v1.SpeakerDiarizationConfig diarization_config = 19;
| Returns | |
|---|---|
| Type | Description |
SpeakerDiarizationConfig |
The diarizationConfig. |
getDiarizationConfigOrBuilder()
public abstract SpeakerDiarizationConfigOrBuilder getDiarizationConfigOrBuilder()
Config to enable speaker diarization and set additional parameters to make diarization better suited for your application. Note: When this is enabled, we send all the words from the beginning of the audio for the top alternative in every consecutive STREAMING responses. This is done in order to improve our speaker tags as our models learn to identify the speakers in the conversation over time. For non-streaming requests, the diarization results will be provided only in the top alternative of the FINAL SpeechRecognitionResult.
.google.cloud.speech.v1.SpeakerDiarizationConfig diarization_config = 19;
| Returns | |
|---|---|
| Type | Description |
SpeakerDiarizationConfigOrBuilder |
getEnableAutomaticPunctuation()
public abstract boolean getEnableAutomaticPunctuation()
If 'true', adds punctuation to recognition result hypotheses. This feature is only available in select languages. Setting this for requests in other languages has no effect at all. The default 'false' value does not add punctuation to result hypotheses.
bool enable_automatic_punctuation = 11;
| Returns | |
|---|---|
| Type | Description |
boolean |
The enableAutomaticPunctuation. |
getEnableSeparateRecognitionPerChannel()
public abstract boolean getEnableSeparateRecognitionPerChannel()
This needs to be set to true
explicitly and audio_channel_count
> 1
to get each channel recognized separately. The recognition result will
contain a channel_tag
field to state which channel that result belongs
to. If this is not true, we will only recognize the first channel. The
request is billed cumulatively for all channels recognized:
audio_channel_count
multiplied by the length of the audio.
bool enable_separate_recognition_per_channel = 12;
| Returns | |
|---|---|
| Type | Description |
boolean |
The enableSeparateRecognitionPerChannel. |
getEnableWordTimeOffsets()
public abstract boolean getEnableWordTimeOffsets()
If true
, the top result includes a list of words and
the start and end time offsets (timestamps) for those words. If
false
, no word-level time offset information is returned. The default is
false
.
bool enable_word_time_offsets = 8;
| Returns | |
|---|---|
| Type | Description |
boolean |
The enableWordTimeOffsets. |
getEncoding()
public abstract RecognitionConfig.AudioEncoding getEncoding()
Encoding of audio data sent in all RecognitionAudio
messages.
This field is optional for FLAC
and WAV
audio files and required
for all other audio formats. For details, see AudioEncoding.
.google.cloud.speech.v1.RecognitionConfig.AudioEncoding encoding = 1;
| Returns | |
|---|---|
| Type | Description |
RecognitionConfig.AudioEncoding |
The encoding. |
getEncodingValue()
public abstract int getEncodingValue()
Encoding of audio data sent in all RecognitionAudio
messages.
This field is optional for FLAC
and WAV
audio files and required
for all other audio formats. For details, see AudioEncoding.
.google.cloud.speech.v1.RecognitionConfig.AudioEncoding encoding = 1;
| Returns | |
|---|---|
| Type | Description |
int |
The enum numeric value on the wire for encoding. |
getLanguageCode()
public abstract String getLanguageCode()
Required. The language of the supplied audio as a BCP-47 language tag. Example: "en-US". See Language Support for a list of the currently supported language codes.
string language_code = 3 [(.google.api.field_behavior) = REQUIRED];
| Returns | |
|---|---|
| Type | Description |
String |
The languageCode. |
getLanguageCodeBytes()
public abstract ByteString getLanguageCodeBytes()
Required. The language of the supplied audio as a BCP-47 language tag. Example: "en-US". See Language Support for a list of the currently supported language codes.
string language_code = 3 [(.google.api.field_behavior) = REQUIRED];
| Returns | |
|---|---|
| Type | Description |
com.google.protobuf.ByteString |
The bytes for languageCode. |
getMaxAlternatives()
public abstract int getMaxAlternatives()
Maximum number of recognition hypotheses to be returned.
Specifically, the maximum number of SpeechRecognitionAlternative
messages
within each SpeechRecognitionResult
.
The server may return fewer than max_alternatives
.
Valid values are 0
-30
. A value of 0
or 1
will return a maximum of
one. If omitted, will return a maximum of one.
int32 max_alternatives = 4;
| Returns | |
|---|---|
| Type | Description |
int |
The maxAlternatives. |
getMetadata()
public abstract RecognitionMetadata getMetadata()
Metadata regarding this request.
.google.cloud.speech.v1.RecognitionMetadata metadata = 9;
| Returns | |
|---|---|
| Type | Description |
RecognitionMetadata |
The metadata. |
getMetadataOrBuilder()
public abstract RecognitionMetadataOrBuilder getMetadataOrBuilder()
Metadata regarding this request.
.google.cloud.speech.v1.RecognitionMetadata metadata = 9;
| Returns | |
|---|---|
| Type | Description |
RecognitionMetadataOrBuilder |
getModel()
public abstract String getModel()
Which model to select for the given request. Select the model best suited to your domain to get best results. If a model is not explicitly specified, then we auto-select a model based on the parameters in the RecognitionConfig.

 Model	 Description

 command_and_search	 Best for short queries such as voice commands or voice search.

 phone_call	 Best for audio that originated from a phone call (typically recorded at an 8khz sampling rate).

 video	 Best for audio that originated from video or includes multiple speakers. Ideally the audio is recorded at a 16khz or greater sampling rate. This is a premium model that costs more than the standard rate.

 default	 Best for audio that is not one of the specific audio models. For example, long-form audio. Ideally the audio is high-fidelity, recorded at a 16khz or greater sampling rate.

string model = 13;
| Returns | |
|---|---|
| Type | Description |
String |
The model. |
getModelBytes()
public abstract ByteString getModelBytes()
Which model to select for the given request. Select the model best suited to your domain to get best results. If a model is not explicitly specified, then we auto-select a model based on the parameters in the RecognitionConfig.

 Model	 Description

 command_and_search	 Best for short queries such as voice commands or voice search.

 phone_call	 Best for audio that originated from a phone call (typically recorded at an 8khz sampling rate).

 video	 Best for audio that originated from video or includes multiple speakers. Ideally the audio is recorded at a 16khz or greater sampling rate. This is a premium model that costs more than the standard rate.

 default	 Best for audio that is not one of the specific audio models. For example, long-form audio. Ideally the audio is high-fidelity, recorded at a 16khz or greater sampling rate.

string model = 13;
| Returns | |
|---|---|
| Type | Description |
com.google.protobuf.ByteString |
The bytes for model. |
getProfanityFilter()
public abstract boolean getProfanityFilter()
If set to true
, the server will attempt to filter out
profanities, replacing all but the initial character in each filtered word
with asterisks, e.g. "f***". If set to false
or omitted, profanities
won't be filtered out.
bool profanity_filter = 5;
| Returns | |
|---|---|
| Type | Description |
boolean |
The profanityFilter. |
getSampleRateHertz()
public abstract int getSampleRateHertz()
Sample rate in Hertz of the audio data sent in all
RecognitionAudio
messages. Valid values are: 8000-48000.
16000 is optimal. For best results, set the sampling rate of the audio
source to 16000 Hz. If that's not possible, use the native sample rate of
the audio source (instead of re-sampling).
This field is optional for FLAC and WAV audio files, but is
required for all other audio formats. For details, see AudioEncoding.
int32 sample_rate_hertz = 2;
| Returns | |
|---|---|
| Type | Description |
int |
The sampleRateHertz. |
getSpeechContexts(int index)
public abstract SpeechContext getSpeechContexts(int index)
Array of SpeechContext. A means to provide context to assist the speech recognition. For more information, see speech adaptation.
repeated .google.cloud.speech.v1.SpeechContext speech_contexts = 6;
| Parameter | |
|---|---|
| Name | Description |
index |
int |
| Returns | |
|---|---|
| Type | Description |
SpeechContext |
getSpeechContextsCount()
public abstract int getSpeechContextsCount()
Array of SpeechContext. A means to provide context to assist the speech recognition. For more information, see speech adaptation.
repeated .google.cloud.speech.v1.SpeechContext speech_contexts = 6;
| Returns | |
|---|---|
| Type | Description |
int |
getSpeechContextsList()
public abstract List<SpeechContext> getSpeechContextsList()
Array of SpeechContext. A means to provide context to assist the speech recognition. For more information, see speech adaptation.
repeated .google.cloud.speech.v1.SpeechContext speech_contexts = 6;
| Returns | |
|---|---|
| Type | Description |
List<SpeechContext> |
getSpeechContextsOrBuilder(int index)
public abstract SpeechContextOrBuilder getSpeechContextsOrBuilder(int index)
Array of SpeechContext. A means to provide context to assist the speech recognition. For more information, see speech adaptation.
repeated .google.cloud.speech.v1.SpeechContext speech_contexts = 6;
| Parameter | |
|---|---|
| Name | Description |
index |
int |
| Returns | |
|---|---|
| Type | Description |
SpeechContextOrBuilder |
getSpeechContextsOrBuilderList()
public abstract List<? extends SpeechContextOrBuilder> getSpeechContextsOrBuilderList()
Array of SpeechContext. A means to provide context to assist the speech recognition. For more information, see speech adaptation.
repeated .google.cloud.speech.v1.SpeechContext speech_contexts = 6;
| Returns | |
|---|---|
| Type | Description |
List<? extends com.google.cloud.speech.v1.SpeechContextOrBuilder> |
getUseEnhanced()
public abstract boolean getUseEnhanced()
Set to true to use an enhanced model for speech recognition.
If use_enhanced
is set to true and the model
field is not set, then
an appropriate enhanced model is chosen if an enhanced model exists for
the audio.
If use_enhanced
is true and an enhanced version of the specified model
does not exist, then the speech is recognized using the standard version
of the specified model.
bool use_enhanced = 14;
| Returns | |
|---|---|
| Type | Description |
boolean |
The useEnhanced. |
hasDiarizationConfig()
public abstract boolean hasDiarizationConfig()
Config to enable speaker diarization and set additional parameters to make diarization better suited for your application. Note: When this is enabled, we send all the words from the beginning of the audio for the top alternative in every consecutive STREAMING responses. This is done in order to improve our speaker tags as our models learn to identify the speakers in the conversation over time. For non-streaming requests, the diarization results will be provided only in the top alternative of the FINAL SpeechRecognitionResult.
.google.cloud.speech.v1.SpeakerDiarizationConfig diarization_config = 19;
| Returns | |
|---|---|
| Type | Description |
boolean |
Whether the diarizationConfig field is set. |
hasMetadata()
public abstract boolean hasMetadata()
Metadata regarding this request.
.google.cloud.speech.v1.RecognitionMetadata metadata = 9;
| Returns | |
|---|---|
| Type | Description |
boolean |
Whether the metadata field is set. |


Although the .NET Framework Base Class Library (BCL) offers a great deal of artifacts, it does not offer a good way of representing monetary quantities in different currencies. It does offer, instead, numeric types and a way to format numeric values according to different formats. Problem lies in that those formatting rules are mixed with concepts like cultures, languages, dates, calendars and so on, to the extent to become difficult and, in some cases, impossible to represent a simple concept such as "one Canadian dollar" or "ten-and-the-half Zambian kwacha".
On top of the confusing mix of concepts, it happens that, sometimes, regional or formatting information is wrong: incorrect currency for a given country, outdated information, missing countries and so on. The .NET Framework, being as big an widely used, has a rate of releasing fixes that is not very dynamic (cough, cough) and if one's application relies on the Framework information for displaying monetary quantities for missing or incorrect currencies, one is pretty much out of luck.
Furthermore, not only the implementation does not follow the ISO standard for currencies, but that formatting information can be changed by the user, making consistency across versions, machines and updates a very challenging task.
Some other libraries might exist and one might go with hand-rolled classes, but in some cases the API is not as nice to work with as it could be or they are pretty much not maintained at all.
Lack of support and consistency, having a need and a pair of hands to type, I created the NMoneys library to solve my problems and the problems of some of the .NET developers out there. It is Open Source because it is neither rocket science, nor the single most valuable asset in a company's utility belt. Besides, surprise, surprise, I do not know everything about currencies and monetary quantities. But with the support of the community that can be solved, given that contributions are made to the project.
Some of my colleagues, myself and, hopefully, someone else who I do not know yet, have already used the library before this article was published, meaning that, at least is useful to solve somebody's problems.
I am a strong believer that expressive unit tests are the best for of documentation that exists. I also think they are as good as any other way of showing off the abilities of NMoneys. Those unit tests are NUnit tests and can be executed by your favorite test runner.
All code for snippets (and more that is not pubished for brevity) will be included in the demo project (Visual Studio 2010, .NET 4.0).
The code for the demo project can also be browsed from the horse's mouth in the project web site. Likewise, the latest version of the code for NMoneys library can be easily acccessed here.
From The International Organization for Standardization (ISO): "This International Standard specifies the structure for a three-letter alphabetic code and an equivalent three-digit numeric code for the representation of currencies and funds". Maintenance of the standard is carried out by the ISO 4217 Maintenance Agency.
What all this bureaucracy talk means is that there is an international organism that standardizes the currencies and their alphabetic and numeric codes. That is, they reflect the changes in legal tender used by a number of entities (as they call them) or countries/institutions (so that everyone can understand).
NMoneys is not focused on the list of entities (countries) at all, but in the list of valid currencies at this current moment in time. This list establishes which currencies are valid, and which are not recognized. Yes, I know, it is a standard, that involves a lot of politics and yadi yadi dah, but it is the most reliable list of currencies at hand.
Bottom line is: there are a lot of currencies, currencies are dynamic (new ones are used and old ones are deprecated) and the .NET Framework does not support all of them or it is simply wrong in some other cases.
In NMoneys, a given currency code is represented as a value of the enumeration CurrencyIsoCode
[Test]
public void currency_codes_are_modeled_as_enums_named_after_its_ISO_alphabetic_code()
{
CurrencyIsoCode usDollars = CurrencyIsoCode.USD;
CurrencyIsoCode euro = CurrencyIsoCode.EUR;
CurrencyIsoCode danishKrona = CurrencyIsoCode.DKK;
CurrencyIsoCode noCurrency = CurrencyIsoCode.XXX;
}
[Test]
public void currency_codes_have_their_ISO_numeric_value()
{
Assert.That((short)CurrencyIsoCode.USD, Is.EqualTo(840));
Assert.That((short)CurrencyIsoCode.EUR, Is.EqualTo(978));
Assert.That((short)CurrencyIsoCode.DKK, Is.EqualTo(208));
Assert.That((short)CurrencyIsoCode.XXX, Is.EqualTo(999));
}
[Test]
public void less_common_currencies_are_also_modeled_as_long_as_they_are_approved_by_ISO()
{
CurrencyIsoCode platinum = CurrencyIsoCode.XPT;
CurrencyIsoCode yemeniRial = CurrencyIsoCode.YER;
}
[Test]
public void recently_deprecated_currencies_are_also_present()
{
var estonianKroon = CurrencyIsoCode.EEK;
Assert.That(estonianKroon.AsAttributeProvider(), Has.Attribute<ObsoleteAttribute>());
}
As one can see from the snippet, the complete ISO standard is implemented, with alphabetic and numeric codes, including less common currencies and recently deprecated ones, but those are marked with the ObsoleteAttribute
to clearly highlight them as deprecated.
The CurrencyIsoCode
is the way to represent a code for a given currency present in the ISO standard. But the amount of interesting behaviors that a value of an enumeration can offer is very limited. Clearly another type to do that job for us is needed. Entering the Currency
type.
Only a limited amount of currencies is possible. With codes, being the CurrencyIsoCode
an enumeration, limiting the number of "instances" is provided by the framework itself, but with Currency
a flyweight pattern-like interface is provided.
"Popular" currencies get a direct static access.
[Test]
public void popular_currency_instances_can_be_obtained_from_static_accessors()
{
Assert.That(Currency.Usd, Is.Not.Null.And.InstanceOf<Currency>());
Assert.That(Currency.Eur, Is.Not.Null.And.InstanceOf<Currency>());
Assert.That(Currency.Dkk, Is.Not.Null.And.InstanceOf<Currency>());
Assert.That(Currency.Xxx, Is.Not.Null.And.InstanceOf<Currency>());
}
There is no static access for all currencies. Instead, a factory method Currency.Get()
accepts a variety of inputs to obtain the instance of the currency.
[Test]
public void currency_instances_can_be_obtained_from_its_code_enum()
{
Assert.That(Currency.Get(CurrencyIsoCode.ZAR), Is.InstanceOf<Currency>());
}
[Test]
public void currency_instances_can_be_obtained_from_its_code_string()
{
Assert.That(Currency.Get("eur"), Is.Not.Null);
Assert.That(Currency.Get("EUR"), Is.Not.Null);
}
[Test]
public void currency_instances_can_be_obtained_from_a_CultureInfo_instance()
{
CultureInfo swedish = CultureInfo.GetCultureInfo("sv-SE");
Assert.That(Currency.Get(swedish), Is.EqualTo(Currency.Sek));
}
[Test]
public void currency_instances_can_be_obtained_from_a_RegionInfo_instance()
{
RegionInfo spain = new RegionInfo("es");
Assert.That(Currency.Get(spain), Is.EqualTo(Currency.Eur));
}
If the input is somehow unsafe, exceptions can be saved using another factory method Currency.TryGet()
that follows the well-known TryParse pattern.
[Test]
public void currency_instances_can_be_obtained_with_a_try_do_pattern()
{
Currency currency;
Assert.That(Currency.TryGet(CurrencyIsoCode.ZAR, out currency), Is.True);
Assert.That(currency, Is.Not.Null.And.InstanceOf<Currency>());
Assert.That(Currency.TryGet("zar", out currency), Is.True);
Assert.That(currency, Is.Not.Null.And.InstanceOf<Currency>());
Assert.That(Currency.TryGet(CultureInfo.GetCultureInfo("en-ZA"), out currency), Is.True);
Assert.That(currency, Is.Not.Null.And.InstanceOf<Currency>());
Assert.That(Currency.TryGet(new RegionInfo("ZA"), out currency), Is.True);
Assert.That(currency, Is.Not.Null.And.InstanceOf<Currency>());
}
[Test]
public void TryGet_does_not_throw_if_currency_cannot_be_found()
{
Currency currency;
CurrencyIsoCode notDefined = (CurrencyIsoCode)0;
Assert.That(Currency.TryGet(notDefined, out currency), Is.False);
Assert.That(currency, Is.Null);
Assert.That(Currency.TryGet("notAnIsoCode", out currency), Is.False);
Assert.That(currency, Is.Null);
CultureInfo neutralCulture = CultureInfo.GetCultureInfo("da");
Assert.That(Currency.TryGet(neutralCulture, out currency), Is.False);
Assert.That(currency, Is.Null);
}
Currencies come and go. New currencies become mainstream and some become deprecated. But that does not mean we cannot use them anymore. Data from when those currencies were not deprecated may exist and that common scenario needs to be supported.
[Test]
public void instances_of_deprecated_currencies_can_still_be_obtained()
{
Currency deprecated = Currency.Get("EEK");
Assert.That(deprecated, Is.Not.Null.And.InstanceOf<Currency>());
Assert.That(deprecated.IsObsolete, Is.True);
}
And yet there are some problem domains in which the use of deprecated currencies is not acceptable. For those scenarios a notification system in the shape of static events is provided.
[Test]
public void whenever_a_deprecated_currency_is_obtained_an_event_is_raised()
{
bool called = false;
CurrencyIsoCode obsolete = CurrencyIsoCode.XXX;
EventHandler<ObsoleteCurrencyEventArgs> callback = (sender, e) =>
{
called = true;
obsolete = e.Code;
};
try
{
Currency.ObsoleteCurrency += callback;
Currency.Get("EEK");
Assert.That(called, Is.True);
Assert.That(obsolete.ToString(), Is.EqualTo("EEK"));
Assert.That(obsolete.AsAttributeProvider(), Has.Attribute<ObsoleteAttribute>());
}
// DO unsubscribe from global events whenever listening isnot needed anymore
finally
{
Currency.ObsoleteCurrency -= callback;
}
}
Note tha the snippet is very clear about the issue. BE AWARE that static event handlers are one of the most common source of memory leaks. Please, do unsubscribe from them when no more notifications are needed. You have been warned.
Of course we do love LINQ. It has made our lives so much... happier? Well, it has been a great addition to the languages. Our contribution to the cause comes in a way to retrieve all currencies in the shape of an enumerable collection. Have fun reducing, mapping and aggregating on all the currencies of the world...
[Test]
public void all_currencies_can_be_obtained_and_linq_operators_applied()
{
Assert.That(Currency.FindAll(), Is.Not.Null.And.All.InstanceOf<Currency>());
var allCurrenciesWithoutMinorUnits = Currency.FindAll().Where(c => c.SignificantDecimalDigits == 0);
Assert.That(allCurrenciesWithoutMinorUnits, Is.Not.Empty.And.Contains(Currency.Jpy));
}
We have seen how a Currency
instance can be obtained. But what's inside it that makes it appealing?
[Test]
public void whats_in_a_currency_anyway()
{
Currency euro = Currency.Eur;
Assert.That(euro.IsObsolete, Is.False);
Assert.That(euro.IsoCode, Is.EqualTo(CurrencyIsoCode.EUR));
Assert.That(euro.IsoSymbol, Is.EqualTo("EUR"));
Assert.That(euro.NativeName, Is.EqualTo("Euro"), "capitalized in the default instance");
Assert.That(euro.NumericCode, Is.EqualTo(978));
Assert.That(euro.PaddedNumericCode, Is.EqualTo("978"), "a string of 3 characters containing the numeric code and zeros if needed");
Assert.That(euro.Symbol, Is.EqualTo("€"));
}
And living in a world in which "angly bracket" languages of all kinds play a role, there are some chosen currencies that have the privilege to be represented in those languages in a peculiar way. That peculiar way of being displayed is provided by a CharacterReference
property.
[Test]
public void some_currencies_have_an_character_reference_for_angly_bracket_languages()
{
Currency qatariRial = Currency.Get(CurrencyIsoCode.QAR);
CharacterReference reference = qatariRial.Entity;
Assert.That(reference, Is.Not.Null.And.Property("IsEmpty").True,
"the Rial does not have an reference, but a 'null' object");
Currency euro = Currency.Euro;
reference = euro.Entity;
Assert.That(reference, Is.Not.Null.And.Property("IsEmpty").False, "the euro, does");
Assert.That(reference.Character, Is.EqualTo("€"));
Assert.That(reference.CodePoint, Is.EqualTo(8364));
Assert.That(reference.EntityName, Is.EqualTo("€"));
Assert.That(reference.EntityNumber, Is.EqualTo("€"));
Assert.That(reference.SimpleName, Is.EqualTo("euro"));
}
By far, the most interesting and key behavior of a currency is formatting numeric quantities. But, wouldn't it make sense to show how to format numeric quantities by presenting a special case of them: the monetary quantity?
Currency
implements the behaviors of a given currency, mainly formatting. But the way to univocally represent a monetary quantity in a given currency, differentiating it from another quantity in another currency has not been seen yet. Such representation is the Money
structure.
As opposed to Currency
, which only offered a limited number of instances to be created, there can be many instances of Money
around. It follows the semantics of numeric types and as such it has been implemented as struct, instead of a reference type. Most common way of obtaining an instance is using one of its multiple constructors.
[Test]
public void a_Money_represents_a_monetary_quantity()
{
new Money(10m, Currency.Dollar); // Money --> tenDollars
new Money(2.5m, CurrencyIsoCode.EUR); // Money --> twoFiftyEuros
new Money(10m, "JPY"); // Money --> tenYen
new Money(); // Money --> zeroWithNoCurrency
}
Interactions with the environment (such as the current culture) are made explicit. In the following snippet, the NUnit attribute SetCultureAttribute
is used to control which culture the test is run under (in this case is Danish).
[Test, SetCulture("da-DK")]
public void environment_dependencies_are_explicit()
{
Money fiveKrona = Money.ForCurrentCulture(5m);
Assert.That(fiveKrona.CurrencyCode, Is.EqualTo(CurrencyIsoCode.DKK));
Money currencyLessMoney = new Money(1);
Assert.That(currencyLessMoney.CurrencyCode, Is.EqualTo(CurrencyIsoCode.XXX));
Money zeroEuros = Money.ForCulture(0m, CultureInfo.GetCultureInfo("es-ES"));
Assert.That(zeroEuros.CurrencyCode, Is.EqualTo(CurrencyIsoCode.EUR));
}
There is another way to create money instances: using a set of extension methods for brevity. The main scenario for this way of creating instances is unit testing. When testing, a short an expressive to create objects for your scenarios is a big help.
[Test]
public void moneys_can_be_quickly_created_for_testing_scenarios_with_extension_methods()
{
// Money --> threeNoCurrencies
3m.Xxx();
3m.ToMoney();
// Money --> threeAndAHalfAustralianDollars
3.5m.Aud();
3.5m.ToMoney(Currency.Aud);
3.5m.ToMoney(CurrencyIsoCode.AUD);
CurrencyIsoCode.AUD.ToMoney(3.5m);
}
Yet another way to create instances of Money
is to parse a given string. This feature is only so useful, because the expected currency of the input needs to be passed beforehand, since there are many currencies that use the same display symbol.
[Test]
public void moneys_can_be_parsed_to_a_known_currency()
{
Assert.That(Money.Parse("$1.5", Currency.Dollar), isMoneyWith(1.5m, CurrencyIsoCode.USD), "one-and-the-half dollars");
Assert.That(Money.Parse("10 €", Currency.Euro), isMoneyWith(10m, CurrencyIsoCode.EUR), "ten euros");
Assert.That(Money.Parse("kr -100", Currency.Dkk), isMoneyWith(-100m, CurrencyIsoCode.DKK), "owe hundrede kroner");
Assert.That(Money.Parse("(¤1.2)", Currency.None), isMoneyWith(-1.2m, CurrencyIsoCode.XXX), "owe one point two, no currency");
}
It is very common amongst currencies to have a major unit and a minor one. One clear example is, amongst others, the Sterling Pound. With that currency, the major unit is the pound itself, whereas the minor unit is the penny.
For such common scenario there is a way to create money instances based on the amount of major units.
[Test]
public void what_is_with_this_Major_thing()
{
Assert.That(Money.ForMajor(234, Currency.Gbp), isMoneyWith(234, CurrencyIsoCode.GBP),
"instance created from the major units, in this case the Pound");
Assert.That(3m.Pounds().MajorAmount, Is.EqualTo(3m), "for whole amounts is the quantity");
Assert.That(3.7m.Pounds().MajorAmount, Is.EqualTo(3m), "for fractional amounts is the number of pounds");
Assert.That(0.7m.Pounds().MajorAmount, Is.EqualTo(0m), "for fractional amounts is the number of pounds");
Assert.That(3m.Pounds().MajorIntegralAmount, Is.EqualTo(3L), "for whole amounts is the non-fractional quantity");
Assert.That(3.7m.Pounds().MajorIntegralAmount, Is.EqualTo(3L), "for fractional amounts is the number of pounds");
Assert.That(0.7m.Pounds().MajorIntegralAmount, Is.EqualTo(0L), "for fractional amounts is the number of pounds");
}
And a way to create instances based on the amount of minor units.
[Test]
public void what_is_with_this_Minor_thing()
{
Assert.That(Currency.Pound.SignificantDecimalDigits, Is.EqualTo(2), "pounds have pence, which is a hundreth of the major unit");
Assert.That(Money.ForMinor(234, Currency.Gbp), isMoneyWith(2.34m, CurrencyIsoCode.GBP),
"234 pence is 2.34 pounds");
Assert.That(Money.ForMinor(50, Currency.Gbp), isMoneyWith(0.5m, CurrencyIsoCode.GBP),
"fifty pence is half a pound");
Assert.That(Money.ForMinor(-5, Currency.Gbp), isMoneyWith(-0.05m, CurrencyIsoCode.GBP),
"you owe me five pence, but keep them");
Assert.That(3m.Pounds().MinorAmount, Is.EqualTo(300m), "three pounds is 300 pence");
Assert.That(.07m.Pounds().MinorAmount, Is.EqualTo(7m), "for fractional amounts, the minor unit prevails");
Assert.That(0.072m.Pounds().MinorAmount, Is.EqualTo(7m), "tenths of pence are discarded");
Assert.That(3m.Pounds().MinorIntegralAmount, Is.EqualTo(300L), "three pounds is 300 pence");
Assert.That(.07m.Pounds().MinorIntegralAmount, Is.EqualTo(7L), "for fractional amounts, the minor unit prevails");
Assert.That(0.072m.Pounds().MinorIntegralAmount, Is.EqualTo(7L), "tenths of pence are discarded");
}
Some currencies adopt the schema of having a minor unit which is the hundredth of the major unit. In other currencies, minor units are the thousandth of the major unit. And other currencies have no minor units at all. Of course, all these cases are supported.
We have seen how a Money
instance can be created. Why would anyone instantiate it? Is it for the data it provides?
[Test]
public void what_is_in_a_money()
{
Money threeCads = new Money(3m, "CAD");
Assert.That(threeCads.Amount, Is.EqualTo(3m));
Assert.That(threeCads.CurrencyCode, Is.EqualTo(CurrencyIsoCode.CAD));
Assert.That(threeCads.HasDecimals, Is.False);
Assert.That(threeCads.IsNegative(), Is.False);
Assert.That(threeCads.IsNegativeOrZero(), Is.False);
Assert.That(threeCads.IsPositive(), Is.True);
Assert.That(threeCads.IsPositiveOrZero(), Is.True);
Assert.That(threeCads.IsZero(), Is.False);
}
That, and the information about major and minor amounts is all interesting stuff. But... I am sure people want to do things with their money.
That is an interesting question. But for the sake of this article, the answer will be focused towards the behaviors of Money
objects.
To start with, being quantities of some kind, it makes a lot of sense that moneys can be compared. Otherwise, bragging about how red is our bank account would be impossible...
[Test]
public void moneys_can_be_compared()
{
Assert.That(3m.Usd().Equals(CurrencyIsoCode.USD.ToMoney(3m)), Is.True);
Assert.That(3m.Usd() != CurrencyIsoCode.USD.ToMoney(3m), Is.False);
Assert.That(3m.Usd().CompareTo(CurrencyIsoCode.USD.ToMoney(5m)), Is.LessThan(0));
Assert.That(3m.Usd() < CurrencyIsoCode.USD.ToMoney(5m), Is.True);
}
Instances of different currencies cannot be measured against each other blindly, just as "planes" cannot be compared to "apples" (at least for most useful purposes). And since none of the goals of NMoneys is providing rate exchange services, moneys with different currencies simply cannot be compared.
[Test]
public void comparisons_only_possible_if_they_have_the_same_currency()
{
Assert.That(3m.Usd().Equals(3m.Gbp()), Is.False);
Assert.That(3m.Usd() != CurrencyIsoCode.GBP.ToMoney(3m), Is.True);
Assert.That(() => 3m.Usd().CompareTo(CurrencyIsoCode.GBP.ToMoney(5m)), Throws.InstanceOf<DifferentCurrencyException>());
Assert.That(() => 3m.Usd() < CurrencyIsoCode.GBP.ToMoney(5m), Throws.InstanceOf<DifferentCurrencyException>());
}
Monetary quantities can be formated for their display in several ways.
[Test]
public void moneys_are_to_be_displayed()
{
Assert.That(10.536m.Eur().ToString(), Is.EqualTo("10,54 €"), "default currency formatting according to instance's currency");
Assert.That(3.2m.Usd().ToString("N"), Is.EqualTo("3.20"), "alternative formatting according to instance's currency");
}
A common scenario is currencies that are used in different countries, and those countries have different ways of representing monetary quantities. That common scenario is covered by using a different format provider than the one provided by the currency of the instance.
[Test]
public void using_different_styles_for_currencies_taht_span_multiple_countries()
{
Assert.That(3000.5m.Eur().ToString(), Is.EqualTo("3.000,50 €"), "default euro formatting");
// in French the group separator is neither the dot or the space
CultureInfo french = CultureInfo.GetCultureInfo("fr-FR");
string threeThousandAndTheHaldInFrench = string.Format("3{0}000,50 €", french.NumberFormat.CurrencyGroupSeparator);
Assert.That(3000.5m.Eur().ToString(french), Is.EqualTo(threeThousandAndTheHaldInFrench));
}
Richer formatting capabilities are also possible.
[Test]
public void more_complex_formatting()
{
Assert.That(3m.Usd().Format("{0:00.00} {2}"), Is.EqualTo("03.00 USD"), "formatting placeholders for code and amount");
Assert.That(2500m.Eur().Format("> {1} {0:#,#.00}"), Is.EqualTo("> € 2.500,00"), "rich amount formatting");
}
Displaying moneys is important. But another very important thing one needs to do with a monetary quantity is performing some arithmetic operations.
[Test]
public void moneys_are_to_be_operated_with_arithmetic_operators()
{
Money fivePounds = 2m.Pounds().Plus(3m.Pounds());
Assert.That(fivePounds, isMoneyWith(5m, CurrencyIsoCode.GBP));
Money fiftyPence = 3m.Pounds() - 2.5m.Pounds();
Assert.That(fiftyPence, isMoneyWith(.5m, CurrencyIsoCode.GBP));
Money youOweMeThreeEuros = -3m.Eur();
Assert.That(youOweMeThreeEuros, isMoneyWith(-3m, CurrencyIsoCode.EUR));
Money nowIHaveThoseThreeEuros = youOweMeThreeEuros.Negate();
Assert.That(nowIHaveThoseThreeEuros, isMoneyWith(3m, CurrencyIsoCode.EUR));
Money youOweMeThreeEurosAgain = -nowIHaveThoseThreeEuros;
Assert.That(youOweMeThreeEurosAgain, isMoneyWith(-3m, CurrencyIsoCode.EUR));
}
And since a complete set of operations to be performed on moneys is difficult to foresee, there are some simple extensibility points.
[Test]
public void basic_arithmetic_operations_can_be_extended()
{
Money halfMyDebt = -60m.Eur().Perform(amt => amt / 2);
Assert.That(halfMyDebt, isMoneyWith(-30m, CurrencyIsoCode.EUR));
Money convolutedWayToCancelDebt = (-50m).Eur().Perform(-1m.Eur(),
(amt1, amt2) => decimal.Multiply(amt1, decimal.Negate(amt2)) - amt1);
Assert.That(convolutedWayToCancelDebt, isMoneyWith(decimal.Zero, CurrencyIsoCode.EUR));
}
As with comparisons, it mostly makes sense to perform binary operations on moneys with the same currency.
[Test]
public void binary_operations_only_possible_if_they_have_the_same_currency()
{
Assert.That(() => 2m.Gbp().Minus(3m.Eur()), Throws.InstanceOf<DifferentCurrencyException>());
Assert.That(() => 2m.Cad() + 3m.Aud(), Throws.InstanceOf<DifferentCurrencyException>());
Assert.That(() => 3m.Usd().Perform(3m.Aud(), (x, y) => x + y), Throws.InstanceOf<DifferentCurrencyException>());
}
Most times it is more fun when two are involved, but a single money can do quite a few things on his own.
[Test]
public void several_unary_operations_can_be_performed()
{
Assert.That(3m.Xxx().Negate(), isMoneyWith(-3m), "-1 * amount");
Assert.That((-3m).Xxx().Abs(), isMoneyWith(3m), "|amount|");
Money twoThirds = new Money(2m / 3);
Assert.That(twoThirds.Amount, Is.Not.EqualTo(0.66m), "not exactly equals as it has more decimals");
Assert.That(twoThirds.TruncateToSignificantDecimalDigits().Amount, Is.EqualTo(0.66m), "XXX has two significant decimals");
Money fractional = 123.456m.ToMoney();
Assert.That(fractional.Truncate(), isMoneyWith(123m), "whole amount");
Assert.That(.5m.ToMoney().RoundToNearestInt(), isMoneyWith(0m));
Assert.That(.599999m.ToMoney().RoundToNearestInt(), isMoneyWith(1m));
Assert.That(1.5m.ToMoney().RoundToNearestInt(), isMoneyWith(2m));
Assert.That(1.4999999m.ToMoney().RoundToNearestInt(), isMoneyWith(1m));
Assert.That(.5m.ToMoney().RoundToNearestInt(MidpointRounding.ToEven), isMoneyWith(0m), "closest even number is 0");
Assert.That(.5m.ToMoney().RoundToNearestInt(MidpointRounding.AwayFromZero), isMoneyWith(1m), "closest number away from zero is 1");
Assert.That(1.5m.ToMoney().RoundToNearestInt(MidpointRounding.ToEven), isMoneyWith(2m), "closest even number is 2");
Assert.That(1.5m.ToMoney().RoundToNearestInt(MidpointRounding.AwayFromZero), isMoneyWith(2m), "closest number away from zero is 2");
Assert.That(2.345m.Usd().Round(), isMoneyWith(2.34m), "round to two decimals");
Assert.That(2.345m.Jpy().Round(), isMoneyWith(2m), "round to no decimals");
Assert.That(2.355m.Usd().Round(), isMoneyWith(2.36m), "round to two decimals");
Assert.That(2.355m.Jpy().Round(), isMoneyWith(2m), "round to no decimals");
Assert.That(2.345m.Usd().Round(MidpointRounding.ToEven), isMoneyWith(2.34m));
Assert.That(2.345m.Usd().Round(MidpointRounding.AwayFromZero), isMoneyWith(2.35m));
Assert.That(2.345m.Jpy().Round(MidpointRounding.ToEven), isMoneyWith(2m));
Assert.That(2.345m.Jpy().Round(MidpointRounding.AwayFromZero), isMoneyWith(2m));
Assert.That(123.456m.ToMoney().Floor(), isMoneyWith(123m));
Assert.That((-123.456m).ToMoney().Floor(), isMoneyWith(-124m));
}
I had several goals with this article.
The main one was to raise the awareness of the NMoneys library, so that more people can benefit from its usage, and more importantly, more people can contribute.
Contributions can come in several shapes, but mainly in two ways: new features for the library and more accurate information for the currency information. Both will be more than welcome.
The other goal was to show some scenarios that make the library compelling to use. Helping the potential user to become a real one.
I hope any (or all) of the goals is achieved. If not, I, for one, had lots of fun sharing this with you, guys.
08-May-2011 - Initial version
10-May-2011 - Added external links to source code
11-May-2011 - Included library code within demo project


Appointments
Appointment Id
User Id
Workshop Id
dateTime
Delete
Select a user:
---Choose a user---
Select a workshop:
---Choose a workshop---
Select date and time
Add a new appointment
Users
Id
Username
Email
City
Postal Code
Country
Delete
Username:
Email:
City:
Postal Code:
Country:
Add a new user
Workshops
Id
Company Name
Trademarks
City
Postal Code
Country
Delete
Company Name:
Trademarks:
City:
Postal Code:
Country:
Add a new workshop
...


--- layout: post status: publish published: true title: "[看图说话]IE8的数据挖掘" author: Leask author_login: leask author_email<EMAIL_ADDRESS>author_url: https://leaskh.com wordpress_id: 153 wordpress_url: http://leaskh.wordpress.com/2009/05/25/%e7%9c%8b%e5%9b%be%e8%af%b4%e8%af%9die8%e7%9a%84%e6%95%b0%e6%8d%ae%e6%8c%96%e6%8e%98 date: '2009-05-25 05:46:43 +0800' date_gmt: '2009-05-25 05:46:43 +0800' categories: tags: [] comments: [] ---


Count: ${count}
to index
Id
name
age
address
phone
<#list users as user>
${user.getId()}
${user.getName()}
${user.getAge()}
${user.getAddress().getStreet()}
<#list user.phones as phone>
${phone.getNumber()}
#list>
#list>


The Worst Math Problem I Still Remember
Somehow, 20 years later, I find myself thinking about a math problem I got in... third grade, perhaps? The problem was, as I remember, something like this.
An builder designs a school with several buildings and fields surrounding it. Once the buildings are built and the grass planted, he then waits six months before building walkways. Why is this?
The point of this is to get kids to think laterally. Why was it in a math textbook? I have no idea. The author must have gotten cheeky or something. Well, my dad being a construction worker, answered in the most logical way I could think of.
The builder probably left to do another job or maybe the people who hired him didn't pay so he stopped working until they paid him.
I got this wrong because the answer was, instead,
The builder waited six months to see where the people would walk and natural walkways started to appear, so he would build sidewalks there.
More than likely the textbook also said "other answers are acceptable" but my teacher may have overlooked that fact so I got the problem wrong and am complaining about it to this day.


Setting up a sharded RethinkDB cluster on CentOS and Fedora, NoSQL, Scaling
Set up a sharded RethinkDB Cluster – CentOS, Fedora
Difficulty: 3
Time: 20 minutes
RethinkDB belongs to NoSQL database. It is the first open-source, distributed document-oriented database. It is designed specifically to push data to applications in real-time. This dramatically reduces the time and effort necessary to build scalable real-time apps.
It has a very simple API to interact with the databases. Building a database cluster in RethinkDB is simple. Clusters help in scaling the databases without any downtime. Here we discuss about building a RethinkDB cluster, importing database and securing it.
Prerequisites
In this tutorial, we will need two servers running either CentOS or Fedora, named rethinkdb1 and rethinkdb2. You should first setup a sudo user for each RethinkDB server. Working with a sudo user is a good security practice.
Before setting up a RethinkDB cluster, you should be aware of installing and configuring RethinkDB cluster on a CentOS and Fedora server. Please refer 18526 - Install and Configure RethinkDB - CentOS, Fedora link.
Set up a RethinkDB Node
RethinkDB cluster is a type of peer-to-peer network. Primary step in building a RethinkDB cluster is to install RethinkDB on every server included in this cluster.
- On each server, add the RethinkDB key and repository to apt-get
sudo wget http://download.rethinkdb.com/centos/6/`uname -m`/rethinkdb.repo -O /etc/yum.repos.d/rethinkdb.repo
- Now update and install RethinkDB
sudo yum update
sudo yum install rethinkdb
- Make the necessary configuration to make it run on startup
sudo cp /etc/rethinkdb/default.conf.sample
/etc/rethinkdb/instances.d/cluster_instance.conf
sudo vi /etc/rethinkdb/instances.d/cluster_instance.conf
- First you need to change the server name. This name is being used in RethinkDB WebManagement Console and in its respective log files.
Search for:
server-name=server
Change it to:
Server-name=rethinkdb1
- Next important change is setting up the bind address. By default it is accessible only on
localhost (<IP_ADDRESS>)
. You need to change this so that it is listens on all network interfaces:
Search for:
bind=<IP_ADDRESS>
Change it to:
bind=all
- Save the configuration changes made and then start RethinkDB with new build configuration.
sudo service rethinkdb start
sudo netstat -tulnp | grep rethindb
tcp 0 0 :::28015 :::* LISTEN 1592/rethinkdb
tcp 0 0 :::8080 :::* LISTEN 1592/rethinkdb
tcp 0 0 :::29015 :::* LISTEN 1592/rethinkdb
Secure the RethinkDB Cluster
In the configuration step, we have made RethinkDB to listen on all network interfaces (bind=all). This will make RethinkDB exposed to outside network and is a security threat. Therefore. in this section we will focus on making RethinkDB accessible only from authorized computers.
From the above given netstat command result, you can see 3 different ports on which RethinkDB listens. Port 8080 is used for Web Management Console, 28015 is the driver port and 29015 is the cluster port.
We will secure cluster port through firewall. We will use SSH Tunnels to securely access the web management console and the driver port.
- First step is to block all outside connections. Perform below steps on all RethinkDB servers
The Web Management Console
sudo iptables -A INPUT -i eth0 -p tcp --dport 8080 -j DROP
sudo iptables -I INPUT -i eth0 -s <IP_ADDRESS> -p tcp --dport 8080 -j ACCEPT
The Driver Port
sudo iptables -A INPUT -i eth0 -p tcp --dport 28015 -j DROP
sudo iptables -I INPUT -i eth0 -s <IP_ADDRESS> -p tcp --dport 28015 -j ACCEPT
The Cluster Port
sudo iptables -A INPUT -i eth0 -p tcp --dport 29015 -j DROP
sudo iptables -I INPUT -i eth0 -s <IP_ADDRESS> -p tcp --dport 29015 -j ACCEPT
- Save and restart the iptables.
sudo /etc/init.d/iptables save
sudo /etc/init.d/iptables restart
Set up a Management User
We need to set up SSH tunnels to access RethinkDB's web management console and the driver interface securely.
- First we will create a management user for SSH tunnel in rethinkdb1
sudo adduser sshuser
- Set up the authorized keys file for new user
sudo mkdir /home/sshuser/.ssh
sudo touch /home/sshuser/.ssh/authorized_keys
- Next step is to import public key from a local computer, from where you will be accessing RethinkDB web management console. You can either copy the public key directly from your computer or you can use
ssh-copy-id
command to perform the same.
- Copy the user public key from local machine and add it in rethinkdb1
authorized_keys
sudo vi /home/sshuser/.ssh/authorized_keys
- Paste your user public key to this file.
- You need to repeat all of these steps for your other cluster nodes.
Import or create a new database
If you already have a database on this server or in another server, then you need to import those databases into your cluster. If there is no database, then RethinkDB will create an empty database by default.
- If you need to copy the database that you wish to import on rethinkdb1, first you need to find the path of the existing RethinkDB database. If you used the
rethinkdb
command to start your old database, then you will have a directory rethinkdb_data.
This is the default path. Use scp
command to copy it to rethinkdb1
sudo scp -rpC from_server_user@from_server_ip:/RethinkDB Data Folder/*
/var/lib/rethinkdb/cluster_instance/data
- Then restart RethinkDB
sudo service rethinkdb restart
- If you have an existing RethinkDB database on rethinkdb1, then first open the configuration file on rethinkdb1
sudo vi /etc/rethinkdb/instances.d/cluster_instance.conf
- Then, find the path of the RethinkDB database to import. If you used the rethinkdb command to start your old database, then you will have a directory rethinkdb_data. Insert that path into the configuration file.
directory=/home/user/rethink/rethinkdb_data/
- Save the changes and then restart RethinkDB.
sudo service rethinkdb restart
Create a cluster
- To create a cluster, first allow all cluster machines to be accessed through each other’s firewall. Now on rethinkdb1 server, we will allow all other servers to connect to cluster port through firewall
sudo iptables -I INPUT -i eth0 -s connecting_server_ip_address -p tcp --dport 29015 -j ACCEPT
- Repeat the same command for any other nodes you want to add. Replace
connecting_server_ip_address
with respective server IP addresses from where you want to connect to. Now save the firewall changes.
sudo /etc/init.d/iptables save
sudo /etc/init.d/iptables restart
- Repeat these steps for your other servers.
- Once ports are opened and servers can communicate to one another, you can connect other server to create a cluster. For that first access rethinkdb2 server and edit following configuration file.
sudo vi /etc/rethinkdb/instances.d/cluster_instance.conf
- Here you need to join this server (rethinkdb2) to cluster. Find the
join
statement in file.
join=example.com:29015
Replace it with the following code:
join=rethinkdb1_IP
- Save the configuration file and then restart RethinkDB
sudo service rethinkdb restart
- Perform the same for other servers. In the first node, rethindb1 does not need a
join
statement as we are joining other server to rethinkdb1
- After completing this step, you will have all server joined to rethinkdb1 and at this point you have a fully functioning RethinkDB cluster.
Connect to the web management console
Management console can be used to give you an online platform to perform basic functions on RethinkDB. Using this you can perform functions like creating database and tables, change basic table settings, run RethinkDB commands etc.
- Since we need to enable security on web management console, we will use SSH tunnel to connect to RethinkDB web management console.
ssh -L 8080:localhost:8080 sshuser@rethinkdb1_ip
- Since we have already completed the SSH key transfer, you can directly execute the above command. If you find an error, like - address already in use, then change the port number and then connect to rethinkdb1 with the same command
Eg: ssh -L 8081:localhost:8080 sshuser@rethinkdb1_ip
Connect to the cluster using Python driver
In this section we will be using an SSH Tunnel to connect to the driver port of cluster node (rethinkdb1). Through this driver port RethinkDB driver communicate to cluster. Since we have already secured the connection to the cluster nodes, no one from outside the network can access to cluster port.
- We will create a SSH Tunnel from one of the servers(rethinkdb2), so that they can establish a secure connection to cluster port (29018)
- Perform following steps in rethinkdb2, to generate SSH key
ssh-keygen -t rsa
- Copy public key (
id_rsa.pub
) to rethinkdb1 server (Cluster Node) and add in authorized_keys
sudo vi /home/sshuser/.ssh/authorized_keys
- Use SSH tunneling to access the driver port, from the connecting sever.
ssh -L 28015:localhost:28015 sshuser@cluster_node_ip -f -N
Note: If you get a bind: Address already in use error, you can change the port.
Eg: ssh -L 28016:localhost:28015 sshuser@cluster_node_ip -f –N
Install Python Driver
- Next step is to install Python driver on the connecting server (rethinkdb2). Install the Python virtual environment and package manager by typing:
sudo yum install epel-release
sudo yum install python-virtualenv
sudo yum install python-pip
- Create a directory named rethink in user home directory.
mkdir rethink
cd rethink
- Now create the new virtual environment structure.
virtualenv venv
- Now activate the environment. You need to activate this environment before starting Python.
source venv/bin/activate
- Install the RethinkDB module.
pip install rethinkdb
pip install backports.ssl_match_hostname
- Start Python from the connecting server.
Python
- Now connect to the Cluster server database. Make sure you give the correct port, which you have used earlier to connect to SSH Tunnel.
import rethinkdb as r
r.connect("localhost", 28016).repl()
- Create the database named article and table named as posts
r.db_create("article").run()
r.db("article").table_create("posts").run()
- Insert data into the table test.
r.db("article").table("post").insert({"hello":"world"}).run()
- Once you insert value, you can view the complete table in RethinkDB web management console
You can also perform database and table creation and deletion operations through web management console.
Sharding
RethinkDB allows you to shard and replicate your cluster on a per-table basis. You can control the sharding settings through web management console.
When using the web management console, you can perform sharding simply by specifying the number of shards you want and based on the data available, RethinkDB will determine the best split points to maintain balanced shards. To shard your data:
- Go to the table view (Tables → table name).
- Click on the Reconfigure button.
- Set the number of shards and replicas you want.
- Click on the Apply Configuration button.
For reference verify the below screenshots:
Advance Information
These include advanced configuration for functionalities that cannot be performed through the web interface.
Server Tag
All servers in a RethinkDB cluster may be given zero or more tags that can be used in table configurations. This is used to map replicas to servers specified by tags.
We can set a tag by using the below command:
rethinkdb --server-tag us --server-tag us_west
If no tags are specified on startup, the server will be started with default tag (default). When servers are tagged, you can use the tags in the reconfigure command:
If we want to assign three replicas of the users table to us_1 and two to us_2:
r.table('users').reconfigure(shards=2, replicas={'us_1':3,
'us_2':2}, primary_replica_tag='us_2').run(conn)
Write acknowledgements and durability
Write acknowledgements and write durability are two other settings which cannot be configured or managed through web management console or through reconfigure command. They can only be configured by editing table table_config for each individual table.
The write acknowledgement setting for a table controls when the cluster acknowledges a write request as completed. There are two possible settings for the same:
majority:
The cluster sends the acknowledgement when the majority of replicas have acknowledged it, which is default.
single:
The cluster sends the acknowledgement when any replica has acknowledged it.
Below is an example showing the same.
r.db('rethinkdb').table('table_config').get(
'31c92680-f70c-4a4b-a49e-b238eb12c023').update(
{"write_acks": "single"}).run(conn)
The durability setting for a table controls when writes are committed. They include both hard and soft mode.
- In hard mode, writes are committed to disk before acknowledgements are sent
- In soft mode, writes are acknowledged immediately upon receipt, which is much faster.
In addition to the options in web management console, ReQL commands for table configuration allow both scripting capability and replication, distributing replicas for individual tables across user-defined groups of servers using server tags. All these functionalities can be achieved through ReQL command.
There are three primary commands for changing sharding and replication in ReQL:
table_create
: Specify initial values of shards and replicas.
reconfigure
: Change the values of shards and replicas.
rebalance
: Used to rebalance table shards.
Remove a Machine
Removing a server from the cluster needs to be performed carefully. When a document is divided over multiple servers, one server will always keep its primary index. If the server holding primary index of the document is taken offline, then the document will be lost. Therefore before removing a server, you need to migrate all its primary shards away from it.
Here we will migrate data off from the node rethinkdb2 to make rethinkdb1 as the sole node, so that we can remove rethindb2 node safely.
- Enter into the RethinkDB admin shell on rethinkdb1
rethinkdb admin
- List the shards (groups of documents) that rethinkdb2 holds
ls rethinkdb2
- To move the shards from one server(rethinkdb2) to another(rethinkdb1)
pin shard TABLE SHARD-RANGE --master MACHINE-NAME
Eg : pin shard food.foodshards -inf-+inf --master rethinkdb1
- Next exit from the admin shell
Exit
- Now you can safely stop RethinkDB on server (rethinkdb2). You can execute the below command in rethinkdb2
sudo service rethinkdb stop
- Once you remove this server (rethinkdb2), you will get a warning message while accessing RethinkDB web management console. On the right side of the warning message, you will see a permanent remove button, you can use this button to remove this server (rethinkdb2) from the cluster. In this way you can safely remove the server from RethinkDB cluster.
Conclusion
In this article, we explained the steps to setup a sharded RethinkDB cluster on CentOS and Fedora servers.


Former Bolivian President Evo Morales Arrives at Mexico City - Video
On Sunday, Bolivian President Evo Morales resigned after the national armed forces sided with demonstrators had been opposing his serving a fourth term since 20 October election.
The United Mexican States has granted asylum to Evo Morales, who had previously announced his resignation from the presidency of Bolivia due to an ongoing political and social crisis.
Earlier in the day, the Mexican Foreign Ministry said that the plane with Morales on board would land in Mexico City at 14:30 GMT. However, media reported, that the aircraft, which was supposed to refuel in Peru, was forced to land in Paraguay instead due to the fact that Peru, Chile and Brazil refused to grant the plane permission to fly through their airspace.
Follow Sputnik Feed to Find Out More!


| Total prisoners: |
{{ country.total_prisoners | fmtInt | naify }}
|
| Prison population rate: |
{{ country.prison_pop_rate | fmtInt | fmtPer100k | naify }}
|
| Female prisoners: |
{{ country.female_prisoners | fmtPercent | naify }}
|
| Juvenile prisoners: |
{{ country.juveniles | fmtPercent | naify }}
|
| Official capacity: |
{{ country.official_capacity | fmtInt | naify }}
|
| Occupancy level: |
{{ country.occupancy_level | fmtPercent | naify }}
|
| Pretrial detainee rate: |
{{ country.pretrial_detainee_rate | fmtPercent | naify }}
|
| Foreign prisoners: |
{{ country.foreign_prisoners | fmtPercent | naify }}
|
| Total establishments: |
{{ country.total_establishments | fmtInt | naify }}
|
| Learn more |


Lyric Plotter
Welcome to Lyric Plotter! We analyze music strictly by the lyrics, and show the analysis in a unique and fun way. Each searched-for artist’s songs is represented as a bubble, with all of the bubbles connected with colored lines to form one interactive web. We hope you enjoy our creation!


Select field type you want to add to the form below and click on 'Add Field' button. Don't forget to set field properties. After you finish creating the template form, you can preview the form by clicking Preview Form button.
No fields added yet.
{{ form | json }}


{% if object.is_active %}
{{ object.romanized_name }} has {{ memberships.active_count }} current member{{ memberships.active_count|pluralize }}{% if memberships.inactive_count %} and {{ memberships.inactive_count }} former member{{ memberships.inactive_count|pluralize }}{% endif %}.
{% if memberships.leader %}{{ memberships.leader.idol }} has been leader since {{ memberships.leader.leadership_started }}.{% endif %}
{% else %}
{{ object.romanized_name }} is a {{ object.get_classification_display|lower }} that had {{ object.memberships.count }} members{% if memberships.leader_count %} and {{ memberships.leader_count }} leader{{ memberships.leader_count|pluralize }}{% endif %}.
{% endif %}
{% include "people/partials/single_card.html" %}
{% include "people/partials/album_card.html" %}
{% if memberships.lineup %}
{% if object.ended %}Final Lineup{% else %}Current Members{% endif %}


subject
DIRECTORY TDVKUPNHILDI0
161906331X-studyguide-for-statistical-inference-an-integrat.pdf
November 17, 2016
Filetype: PDF
|
2826 views
system_update_alt
Download
subject
Read
1231156244-the-musical-world-volume-60-paperback.pdf
January 28, 2017
Filetype: PDF
|
1285 views
system_update_alt
Download
subject
Read
0316159212-the-infertility-cure-the-ancient-chinese-wellnes.pdf
November 29, 2016
Filetype: PDF
|
435 views
system_update_alt
Download
subject
Read
1570759774-common-sense-faith.pdf
August 20, 2016
Filetype: PDF
|
1271 views
system_update_alt
Download
subject
Read
1330434935-cost-keeping-and-construction-accounting-classic.pdf
September 19, 2016
Filetype: PDF
|
887 views
system_update_alt
Download
subject
Read
0064470431-the-upstairs-room.pdf
August 23, 2016
Filetype: PDF
|
2265 views
system_update_alt
Download
subject
Read
0981633145-music-success-in-nine-weeks.pdf
August 14, 2016
Filetype: PDF
|
1961 views
system_update_alt
Download
subject
Read
1530019702-andersonville-a-story-of-rebel-military-prisons--2.pdf
January 08, 2017
Filetype: PDF
|
1956 views
system_update_alt
Download
subject
Read
1610970950-disrupted-paperback.pdf
January 08, 2017
Filetype: PDF
|
748 views
system_update_alt
Download
subject
Read
0813561590-courting-justice-ten-new-jersey-cases-that-shook.pdf
September 18, 2016
Filetype: PDF
|
607 views
system_update_alt
Download
subject
Read
1595553797-with-reimagining-the-way-you-relate-to-god.pdf
October 07, 2016
Filetype: PDF
|
1970 views
system_update_alt
Download
subject
Read
0030563925-elements-of-language-grade-11-fifth-course-chapt.pdf
August 12, 2016
Filetype: PDF
|
2412 views
system_update_alt
Download
subject
Read
0793394619-the-big-kentucky-activity-book.pdf
September 07, 2016
Filetype: PDF
|
2433 views
system_update_alt
Download
subject
Read
151477285X-adult-coloring-books-mandala-pure-relaxation-and.pdf
December 30, 2016
Filetype: PDF
|
681 views
system_update_alt
Download
subject
Read
1905087330-hurricanes-what-on-earth.pdf
December 03, 2016
Filetype: PDF
|
1688 views
system_update_alt
Download
subject
Read
7507337383-congress-of-the-cpc-secretary-towards-a-new-chin.pdf
September 21, 2016
Filetype: PDF
|
2895 views
system_update_alt
Download
subject
Read
0679763449-travels-along-the-edge-paperback.pdf
December 14, 2016
Filetype: PDF
|
361 views
system_update_alt
Download
subject
Read
1623006317-eliana.pdf
December 21, 2016
Filetype: PDF
|
2923 views
system_update_alt
Download
subject
Read
0749011017-a-necessary-end-hardback.pdf
October 14, 2016
Filetype: PDF
|
1997 views
system_update_alt
Download
subject
Read
7530391615-out-of-training-high-school-math-required-taught.pdf
December 05, 2016
Filetype: PDF
|
708 views
system_update_alt
Download
subject
Read
0615912125-the-hidden-children-of-the-goddess-embrace-wicca.pdf
August 25, 2016
Filetype: PDF
|
503 views
system_update_alt
Download
subject
Read
1571200576-country-quilts-gift-wrap.pdf
November 23, 2016
Filetype: PDF
|
2449 views
system_update_alt
Download
subject
Read
0433004649-grow-a-flower-red-c.pdf
January 13, 2017
Filetype: PDF
|
2802 views
system_update_alt
Download
subject
Read
8131918912-word-search-1-100-hard-word-search-puzzles.pdf
October 01, 2016
Filetype: PDF
|
3143 views
system_update_alt
Download
subject
Read
1230466924-the-american-cattle-doctor-containing-the-necess.pdf
October 30, 2016
Filetype: PDF
|
2544 views
system_update_alt
Download
subject
Read
1467721824-abby-wambach.pdf
January 09, 2017
Filetype: PDF
|
2488 views
system_update_alt
Download
subject
Read
1481274864-seasons-and-seashells-a-sweet-romance-anthology-.pdf
December 12, 2016
Filetype: PDF
|
2099 views
system_update_alt
Download
subject
Read
0804137919-candy-aisle-crafts.pdf
December 12, 2016
Filetype: PDF
|
802 views
system_update_alt
Download
subject
Read
0205054188-medical-sociology-12th-edition.pdf
October 06, 2016
Filetype: PDF
|
404 views
system_update_alt
Download
subject
Read
1119041716-how-to-be-great-at-doing-good-why-results-are-wh.pdf
September 25, 2016
Filetype: PDF
|
2739 views
system_update_alt
Download
subject
Read
1570395187-everyday-mathematics-scope-and-sequence-chart-by.pdf
December 22, 2016
Filetype: PDF
|
3005 views
system_update_alt
Download
subject
Read
0747801851-gothick-northamptonshire-gothick-guides.pdf
January 24, 2017
Filetype: PDF
|
1979 views
system_update_alt
Download
subject
Read
1605948551-drink-your-own-water-paperback.pdf
August 09, 2016
Filetype: PDF
|
596 views
system_update_alt
Download
subject
Read
190063919X-the-companion-guide-to-florence.pdf
September 05, 2016
Filetype: PDF
|
611 views
system_update_alt
Download
subject
Read
7303048081-fifth-grade-math-activities-math-activities-less.pdf
August 22, 2016
Filetype: PDF
|
847 views
system_update_alt
Download
subject
Read
074758821X-the-blunkett-tapes-my-life-in-the-bear-pit.pdf
October 15, 2016
Filetype: PDF
|
1069 views
system_update_alt
Download
subject
Read
0373749759-hard-core-law-texas-rangers-elite-troop.pdf
August 15, 2016
Filetype: PDF
|
2257 views
system_update_alt
Download
subject
Read
8126523891-financial-darwinism-create-value-or-self-destruc.pdf
August 17, 2016
Filetype: PDF
|
767 views
system_update_alt
Download
subject
Read
1922079030-the-crystal-code-paperback.pdf
August 24, 2016
Filetype: PDF
|
3090 views
system_update_alt
Download
subject
Read
0340837888-wolfram-the-boy-who-went-to-war.pdf
November 25, 2016
Filetype: PDF
|
1355 views
system_update_alt
Download
subject
Read
0834178516-easter-program-builder-no-34-creative-resources-.pdf
October 08, 2016
Filetype: PDF
|
1697 views
system_update_alt
Download
subject
Read
1598005901-through-my-windows.pdf
October 07, 2016
Filetype: PDF
|
1936 views
system_update_alt
Download
subject
Read
0230528015-i-wish-i-x27-d-been-there-twenty-historians-revi.pdf
December 05, 2016
Filetype: PDF
|
3074 views
system_update_alt
Download
subject
Read
1155354842-fantasy-societal-mmorpgs-world-of-warcraft-the-l.pdf
October 10, 2016
Filetype: PDF
|
2007 views
system_update_alt
Download
subject
Read
0226059790-feudal-society-volume-2-social-classes-and-polit.pdf
October 19, 2016
Filetype: PDF
|
1838 views
system_update_alt
Download
subject
Read
1840787295-raspberry-pi-3-in-easy-steps-paperback.pdf
November 15, 2016
Filetype: PDF
|
1262 views
system_update_alt
Download
subject
Read
1841261173-race-week-the-final-7-days-to-your-best-triathlo.pdf
September 25, 2016
Filetype: PDF
|
575 views
system_update_alt
Download
subject
Read
0747550409-quotations-for-speeches-bloomsbury-reference.pdf
October 25, 2016
Filetype: PDF
|
869 views
system_update_alt
Download
subject
Read
0688064310-the-ice-bear.pdf
November 11, 2016
Filetype: PDF
|
601 views
system_update_alt
Download
subject
Read
1781277877-space-flight.pdf
January 15, 2017
Filetype: PDF
|
1530 views
system_update_alt
Download
subject
Read
1499567383-uganda-united-states-and-europe-the-anti-homosex.pdf
November 18, 2016
Filetype: PDF
|
435 views
system_update_alt
Download
subject
Read
1130532569-a-new-elementary-arithmetic-uniting-oral-and-wri.pdf
November 26, 2016
Filetype: PDF
|
3146 views
system_update_alt
Download
subject
Read
193834040X-chasing-rumor-a-season-fly-fishing-in-patagonia.pdf
August 22, 2016
Filetype: PDF
|
1309 views
system_update_alt
Download
subject
Read
0595406785-lies-bribes-peril-lessons-for-the-real-challenge.pdf
November 13, 2016
Filetype: PDF
|
766 views
system_update_alt
Download
subject
Read
1480532525-how-star-wars-conquered-the-universe-the-past-pr.pdf
September 14, 2016
Filetype: PDF
|
1265 views
system_update_alt
Download
subject
Read
1293247219-crs-report-for-congress-education-vouchers-const-1.pdf
October 22, 2016
Filetype: PDF
|
364 views
system_update_alt
Download
subject
Read
1614275181-507-mechanical-movements.pdf
November 02, 2016
Filetype: PDF
|
2079 views
system_update_alt
Download
subject
Read
1582462488-a-curious-collection-of-cats-hardcover.pdf
December 07, 2016
Filetype: PDF
|
2474 views
system_update_alt
Download
subject
Read
158037297X-jumpstarters-for-math-grades-4-8-short-daily-war.pdf
January 21, 2017
Filetype: PDF
|
1580 views
system_update_alt
Download
subject
Read
1411401174-reading-skills-grade-5-flash-kids-harcourt-famil.pdf
September 15, 2016
Filetype: PDF
|
2327 views
system_update_alt
Download
subject
Read
0133276392-moving-straight-ahead-linear-relationships-grade.pdf
January 07, 2017
Filetype: PDF
|
2027 views
system_update_alt
Download
subject
Read
1556527454-the-way-toys-work-the-science-behind-the-magic-8.pdf
August 26, 2016
Filetype: PDF
|
2267 views
system_update_alt
Download
subject
Read
1884800548-the-subsequent-blues.pdf
November 03, 2016
Filetype: PDF
|
482 views
system_update_alt
Download
subject
Read
0751507849-street-song.pdf
October 18, 2016
Filetype: PDF
|
566 views
system_update_alt
Download
subject
Read
0600317994-comprehensive-guide-to-deep-freezing.pdf
October 20, 2016
Filetype: PDF
|
2947 views
system_update_alt
Download
subject
Read
5512698699-don-x27-t-stop-believin-x27.pdf
August 24, 2016
Filetype: PDF
|
3144 views
system_update_alt
Download
subject
Read
0415949467-behavioral-integrative-care-treatments-that-work.pdf
August 15, 2016
Filetype: PDF
|
2433 views
system_update_alt
Download
subject
Read
1607314126-spread-the-fire-spirit-baptism-in-today-s-cultur.pdf
October 01, 2016
Filetype: PDF
|
2744 views
system_update_alt
Download
subject
Read
0745955371-first-steps-out-of-problem-gambling.pdf
November 02, 2016
Filetype: PDF
|
1459 views
system_update_alt
Download
subject
Read
1484126068-caligrafa-nivel-1-grafomotricidad-para-cuatro-an.pdf
August 07, 2016
Filetype: PDF
|
1740 views
system_update_alt
Download
subject
Read
0451409949-the-mexican-a-novel.pdf
January 28, 2017
Filetype: PDF
|
2110 views
system_update_alt
Download
subject
Read
818435407X-the-corrosion-protection-of-liquid-food-can-by-a.pdf
November 16, 2016
Filetype: PDF
|
3297 views
system_update_alt
Download
subject
Read
1622179188-a-heart-unraveled-when-you-peeled-away-the-deadn.pdf
September 19, 2016
Filetype: PDF
|
2203 views
system_update_alt
Download
subject
Read
1847323715-fifa-world-football-records-2010-2010.pdf
August 09, 2016
Filetype: PDF
|
3051 views
system_update_alt
Download
subject
Read
1741755999-advertising-and-the-mind-of-consumer-what-works-.pdf
September 13, 2016
Filetype: PDF
|
1682 views
system_update_alt
Download
subject
Read
1234263785-the-swiss-cross-volume-1-no-1.pdf
October 11, 2016
Filetype: PDF
|
681 views
system_update_alt
Download
subject
Read
1500366021-wodzilla-the-ultimate-wod-compilation-700-cross-.pdf
December 03, 2016
Filetype: PDF
|
1246 views
system_update_alt
Download
subject
Read
0826601561-siddur-annotated-hebrew-compact-annotated.pdf
September 27, 2016
Filetype: PDF
|
2464 views
system_update_alt
Download
subject
Read
1851240314-a-list-of-ordnance-survey-catalogues-publication.pdf
November 04, 2016
Filetype: PDF
|
3055 views
system_update_alt
Download
subject
Read
0618915869-upstairs-mouse-downstairs-mole-paperback-format-.pdf
August 27, 2016
Filetype: PDF
|
2167 views
system_update_alt
Download
subject
Read
0747583633-the-parent-x2f-baby-game.pdf
December 07, 2016
Filetype: PDF
|
1155 views
system_update_alt
Download
subject
Read
0439098343-scholastic-reader-level-1-clifford-and-the-hallo.pdf
December 26, 2016
Filetype: PDF
|
3258 views
system_update_alt
Download
subject
Read
1930722494-how-to-stop-the-next-war-now-effective-responses.pdf
September 25, 2016
Filetype: PDF
|
1309 views
system_update_alt
Download
subject
Read
1522698647-kyland.pdf
September 16, 2016
Filetype: PDF
|
576 views
system_update_alt
Download
subject
Read
0750289805-ghana.pdf
December 08, 2016
Filetype: PDF
|
3327 views
system_update_alt
Download
subject
Read
0747804486-toby-and-character-jugs-paperback.pdf
November 11, 2016
Filetype: PDF
|
3130 views
system_update_alt
Download
subject
Read
0199829861-divine-discontent-the-religious-imagination-of-w.pdf
November 10, 2016
Filetype: PDF
|
1303 views
system_update_alt
Download
subject
Read
1940372151-ghost-in-the-cogs-hardback.pdf
August 06, 2016
Filetype: PDF
|
1192 views
system_update_alt
Download
subject
Read
3659484121-effects-of-land-use.pdf
November 04, 2016
Filetype: PDF
|
2392 views
system_update_alt
Download
subject
Read
1494413078-eyewitness-to-war-volume-ii-the-us-army-in-opera.pdf
August 10, 2016
Filetype: PDF
|
2345 views
system_update_alt
Download
subject
Read
Other Files
description
1439128634-the-high-school-reunion-diet-younger-thinner-and.pdf
[47.96 KB]
description
1630638951-what-is-it-paperback.pdf
[47.96 KB]
description
1480135151-the-mystery-of-god-s-evidence-they-don-t-want-yo.pdf
[47.96 KB]
description
1288720920-determination-of-diphacinone-in-sea-water-verteb.pdf
[47.96 KB]
description
026320037X-the-spanish-prince-x27-s-virgin-bride-mills-amp-.pdf
[47.96 KB]
description
3640540573-richard-florida-x27-s-concept-of-the-creative-cl.pdf
[47.96 KB]
description
1584795018-my-child-s-health-journal-milestones-and-memorie.pdf
[47.96 KB]
description
1236970160-the-book-of-better-business-issued-in-the-intere.pdf
[47.96 KB]
description
1781122318-gold-and-glory-team-gb-2012.pdf
[47.96 KB]
description
0439023122-the-mysterious-cheese-thief-paperback.pdf
[47.96 KB]
description
1275092632-the-states-of-louisiana-maryland-vs-the-executou.pdf
[47.96 KB]
description
1785891693-extraterrestrial-sands-part-of-the-god-king-scen.pdf
[47.96 KB]
description
3639195787-geochemistry-of-the-rare-earth-elements-in-natur.pdf
[47.96 KB]
description
1478408448-studyguide-for-principles-of-virology-molecular-.pdf
[47.96 KB]
description
1472215648-last-ragged-breath.pdf
[47.96 KB]
description
1133309208-the-essential-listening-to-music-book-only-paper.pdf
[47.96 KB]
description
0857689401-jag-in-space-a-just-determination-book-1.pdf
[47.96 KB]
description
9400985991-contingency-table-analysis-for-road-safety-studi.pdf
[47.96 KB]
description
0897212967-ortho-easy-step-books-lawns-all-about-planting-a.pdf
[47.96 KB]
description
751211110X-the-university-mathematical-series-numerical-ana.pdf
[47.96 KB]
description
7508846176-2016-spring-huanggang-small-champion-synchroniza.pdf
[47.96 KB]
description
1508552096-store-bought-baby-paperback.pdf
[47.96 KB]
description
1230112308-the-american-almanac-and-repository-of-useful-kn-8.pdf
[47.96 KB]
description
123600955X-poets-in-the-garden.pdf
[47.96 KB]
description
1480807443-best-friends-and-the-good-luck-leaves-paperback.pdf
[47.96 KB]
description
0521168821-integrated-science-for-csec-secondary-only-stude.pdf
[47.96 KB]
description
1466327448-what-happens-when-god-s-children-pray-paperback.pdf
[47.96 KB]
description
8184954085-the-mastery-manual-a-life-changing-guide-for-per.pdf
[47.96 KB]
description
0263212823-hot-shot-tycoon-indecent-proposal-mills-amp-boon.pdf
[47.96 KB]
description
0698116488-the-legend-of-sleepy-hollow-picture-books.pdf
[47.96 KB]
description
1613770251-kill-shakespeare-volume-2.pdf
[47.96 KB]
description
1854248189-crying-scarlet-tears-my-journey-through-self-har.pdf
[47.96 KB]
description
1853759422-the-most-amazing-youtube-dog-videos-ever.pdf
[47.96 KB]
description
0060297115-moonlight-the-halloween-cat-hardcover.pdf
[47.96 KB]
description
1497013372-studyguide-for-business-strategy-an-introduction.pdf
[47.96 KB]
description
0809320819-the-feature-film-distribution-deal-a-critical-an-1.pdf
[47.96 KB]
description
0439211328-rabbit-x27-s-pajama-party.pdf
[47.96 KB]
description
1343471435-the-stanford-illustrated-review-volume-22-issue--1.pdf
[47.96 KB]
description
0691134731-the-novel-volume-2-forms-and-themes.pdf
[47.96 KB]
description
0967156777-healing-liver-and-gallbladder-disease-naturally.pdf
[47.96 KB]
description
7509138531-books-9787509138533-genuine-use-drugs-commonly-u.pdf
[47.96 KB]
description
0500284296-shakespeare-cats-new-edition.pdf
[47.96 KB]
description
0736074260-skateboarding-instruction-programming-and-park-d.pdf
[47.96 KB]
description
1446304914-the-fashion-design-workbook-fashion-drawing-and-.pdf
[47.96 KB]
description
0768206820-homework-helpers-beginning-writing-grades-prek-1.pdf
[47.96 KB]
description
1566954703-many-glacier-x2f-waterton-lakes-national-parks-m.pdf
[47.96 KB]
description
1517491746-aging-gracefully-with-health-and-dignity-tips-to.pdf
[47.96 KB]
description
0255364717-property-rights-and-the-environment.pdf
[47.96 KB]
description
1412000793-ledoux-vie-paperback.pdf
[47.96 KB]
description
1514865181-the-conservation-of-vision-an-essay-on-the-care-.pdf
[47.96 KB]
description
0486279561-ready-to-use-children-x27-s-silhouettes-for-holi.pdf
[47.96 KB]
description
003038687X-holt-pre-algebra-virginia-edition-student-editio.pdf
[47.96 KB]
description
1286864402-defining-decisive-toward-developing-a-doctrinal-.pdf
[47.96 KB]
description
1857549139-reynard-the-fox.pdf
[47.96 KB]
description
0345543955-the-arrow-a-highland-guard-novel.pdf
[47.96 KB]
description
0328126225-scott-foresman-science-grade-1-activity-book.pdf
[47.96 KB]
description
1495370178-an-illegal-act-and-other-stories.pdf
[47.96 KB]
description
1130546403-c-p-a-problems-and-solutions-volume-2-paperback.pdf
[47.96 KB]
description
1230408444-the-malay-archipelago-the-land-of-the-orang-utan.pdf
[47.96 KB]
description
0844213306-easy-french-crossword-puzzles.pdf
[47.96 KB]
description
1330176073-god-religion-and-immortality-an-oration-delivere.pdf
[47.96 KB]
description
1490858784-god-is-not-happy-paperback.pdf
[47.96 KB]
description
0425241696-nightfall-a-dark-age-dawning-novel.pdf
[47.96 KB]
description
1511961228-28-outstanding-object-lessons-use-everyday-items.pdf
[47.96 KB]
description
1905297645-the-faerie-queens-a-collection-of-essays-explori.pdf
[47.96 KB]
description
1780226918-the-human-brain-a-guided-tour-science-masters.pdf
[47.96 KB]
description
1782212272-tatted-snowflakes.pdf
[47.96 KB]
description
0425248410-angel-x27-s-end.pdf
[47.96 KB]
description
7508340639-distribution-measurement-chinese-edition.pdf
[47.96 KB]
description
1113351667-a-mission-of-two-ambassadors-from-bantam-to-lond.pdf
[47.96 KB]
description
0071444963-manual-completo-de-los-verbos-en-ingles-complete.pdf
[47.96 KB]
description
1938073037-vicky-swanky-is-a-beauty-first-trade-paper-editi.pdf
[47.96 KB]
description
1634505263-the-soldier-s-guide-the-complete-guide-to-u-s-ar.pdf
[47.96 KB]
description
0863885489-lemon-and-lime-library-an-articulation-screen-an.pdf
[47.96 KB]
description
1405260297-ellie-may-would-like-to-be-taken-seriously-for-a.pdf
[47.96 KB]
description
1592990541-dawning-of-a-new-day-a-journey-out-of-darkness-p.pdf
[47.96 KB]
description
7300159192-genuine-book-2012-master-of-public-administratio.pdf
[47.96 KB]
description
1591974046-nutrition-anyone.pdf
[47.96 KB]
description
7800896129-soup-techniques-memory-d37-chinese-edition.pdf
[47.96 KB]
description
9380257171-fundamentals-of-electrical-engineering.pdf
[47.96 KB]
description
3527320970-practical-microwave-synthesis-for-organic-chemis.pdf
[47.96 KB]
description
1927337089-prince-of-omerta-paperback.pdf
[47.96 KB]
description
1595551476-jungle-warfare-a-basic-field-manual-for-christia.pdf
[47.96 KB]
description
1605424935-knuckleduster.pdf
[47.96 KB]
description
1270498657-chemical-bank-new-york-trust-company-trustee-mor.pdf
[47.96 KB]
description
1502805715-whoever-says-that-sex-is-good-is-a-liar-sex-burn.pdf
[47.96 KB]
description
0073656011-chemistry-seventh-edition.pdf
[47.96 KB]
description
1899579710-the-heart-paperback.pdf
[47.96 KB]
description
1511467320-the-tree-of-life-paperback.pdf
[47.96 KB]
description
0195060857-the-collected-works-of-phillis-wheatley-the-scho.pdf
[47.96 KB]
description
1288810911-evaluation-of-stream-temperature-regimes-for-juv.pdf
[47.96 KB]
description
7543687429-series-of-the-new-curriculum-masterpieces-famous.pdf
[47.96 KB]
description
1849015031-gently-in-the-sun.pdf
[47.96 KB]
description
1470631415-alfredandapos-s-basic-guitar-method-bk-3-the-mos.pdf
[47.96 KB]
description
1406243078-wooden-horse-of-troy.pdf
[47.96 KB]
description
1932814205-barnabas-encouraging-exhorter-a-study-in-mentori.pdf
[47.96 KB]
description
7040363682-twelve-five-ordinary-undergraduates-national-pla.pdf
[47.96 KB]
description
1482814528-beneath-the-shore-paperback.pdf
[47.96 KB]
description
3659806153-prediction-of-vo2max-with-submaximal-and-questio.pdf
[47.96 KB]
description
1852246448-life-for-us.pdf
[47.96 KB]
description
1492748951-hooponopono-to-improve-our-couple-relationship.pdf
[47.96 KB]
description
0130263052-developing-windows-solutions-with-office-2000-co.pdf
[47.96 KB]
description
3656586594-an-examination-of-the-empirical-literature-of-ai.pdf
[47.96 KB]
description
1483429415-everything-is-copacetic-the-life-of-stanley-stud.pdf
[47.96 KB]
description
0738520349-cincinnati-on-field-and-court-the-sports-legacy-.pdf
[47.96 KB]
description
0871139138-the-breaking-of-nations-order-and-chaos-in-the-t.pdf
[47.96 KB]
description
0310712262-rise-above-a-90-day-devotional-soul-surfer-serie.pdf
[47.96 KB]
description
1591856655-shadowmancer-paperback.pdf
[47.96 KB]
description
0393933997-uncle-tom-x27-s-cabin-2nd-revised-edition.pdf
[47.96 KB]
description
1583557059-building-a-survival-kit-a-waterproof-folding-gui.pdf
[47.96 KB]
description
0071820523-psychiatric-and-mental-health-nursing-demystifie.pdf
[47.96 KB]
description
1441308326-at-the-beach-scratch-sketch-kit-an-amazing-art-a.pdf
[47.96 KB]
description
1499776160-a-happier-adolescence-50-daily-practices-to-surv.pdf
[47.96 KB]
description
1289273219-guidelines-for-the-selection-of-near-earth-therm.pdf
[47.96 KB]
description
3540119507-time-dependent-hartree-fock-and-beyond.pdf
[47.96 KB]
description
0132313502-focus-on-writing-1.pdf
[47.96 KB]
description
1401947069-experience-your-good-now-learning-to-use-affirma.pdf
[47.96 KB]
description
1634285247-easter-coloring-pages-easter-bunny-eggs-and-much.pdf
[47.96 KB]
description
1494223589-johnny-cash-the-inspirational-story-of-the-music.pdf
[47.96 KB]
description
1505869919-the-history-of-assyria-paperback.pdf
[47.96 KB]
description
0876303432-1983-annual-progress-in-child-psychiatry.pdf
[47.96 KB]
description
1420125761-queen-of-hearts.pdf
[47.96 KB]
description
1567047041-grand-tour-i-intensive-systematic-phonics-spelli.pdf
[47.96 KB]
description
1111341141-cuadros-introductory-spanish-volume-1-of-4-stude.pdf
[47.96 KB]
description
1568989687-the-concrete-dragon.pdf
[47.96 KB]
description
1130138909-derrahs-street-railway-guide-paperback.pdf
[47.96 KB]
description
061801036X-houghton-mifflin-science-discovery-works-reading.pdf
[47.96 KB]
description
1494446731-bill-gates-the-inspirational-life-story-of-bill-.pdf
[47.96 KB]
description
1908177845-aldo-moon-and-the-ghost-at-gravewood-hall.pdf
[47.96 KB]
description
0064470482-banner-in-the-sky.pdf
[47.96 KB]
description
7533657535-wang-mai-mai-english-easy-to-get-the-six-examina-1.pdf
[47.96 KB]
description
0387903321-a-simple-non-euclidean-geometry-and-its-physical.pdf
[47.96 KB]
description
0984998349-devotions-for-young-disciples-the-basics-paperba.pdf
[47.96 KB]
description
1484890647-the-painful-fall-of-a-great-reputation.pdf
[47.96 KB]
description
1628736917-in-the-company-of-rivers-an-angler-x27-s-stories.pdf
[47.96 KB]
description
0192753762-mud-city-2004.pdf
[47.96 KB]
description
7806927670-music-aesthetics-and-musical-works-master-of-mus.pdf
[47.96 KB]
description
1486198961-wii-u-unabridged-guide.pdf
[47.96 KB]
description
148195945X-claim-your-spotlight-become-an-instant-celebrity.pdf
[47.96 KB]
description
1231144882-congressional-edition-volume-5368-paperback.pdf
[47.96 KB]
description
0975183249-404-essential-tests-for-ielts-practice-tests-for.pdf
[47.96 KB]
description
1331529360-smithsonian-institution-united-states-national-m.pdf
[47.96 KB]
description
041557451X-the-transformation-of-the-gulf-politics-economic-1.pdf
[47.96 KB]
description
080277900X-mirror-earth-the-search-for-our-planet-x27-s-twi.pdf
[47.96 KB]
description
0554009536-holt-mcdougal-united-states-government-principle-2.pdf
[47.96 KB]
description
0619213124-security-awareness-applying-practical-security-i.pdf
[47.96 KB]
description
0021523657-vocabulary-strategies-and-activities-timelinks-g.pdf
[47.96 KB]
description
0739049712-singer-s-library-of-musical-theatre-32-songs-fro.pdf
[47.96 KB]
description
1921332484-how-to-put-3000-in-your-pocket-guaranteed-50-thr.pdf
[47.96 KB]
description
1449788130-why-i-love-dogs-paperback.pdf
[47.96 KB]
description
7541745278-a-large-field-of-view-the-guess-photo-looking-th-1.pdf
[47.96 KB]
description
3659493511-line-differential-protection-insensitive-to-ct-s.pdf
[47.96 KB]
description
1130185206-lessons-in-elementary-mechanics-introductory-to-.pdf
[47.96 KB]
description
1631061437-finger-painting-weekend-workshop-a-beginner-x27-.pdf
[47.96 KB]
description
0022819754-school-to-home-activities-macmillan-mcgraw-hill-.pdf
[47.96 KB]
description
1853409278-mates-dates-and-inflatable-bras-bk-1-mates-dates.pdf
[47.96 KB]
description
0328282197-envision-math-grade-k-topic-2-position-and-locat.pdf
[47.96 KB]
description
0321080580-american-government-readings-and-cases-2nd-editi.pdf
[47.96 KB]
description
1607918358-he-came-back-for-me-paperback.pdf
[47.96 KB]
description
0990734870-you-can-t-make-an-elephant-paint-animals-who-cre.pdf
[47.96 KB]
description
0554001756-holt-expr-sate-cuaderno-de-vocabulario-y-grammat-1.pdf
[47.96 KB]
description
1505898595-hypnotic-language-learnings-learn-how-to-hypnoti.pdf
[47.96 KB]
description
0816648999-pink-ribbons-inc-breast-cancer-and-the-politics-.pdf
[47.96 KB]
description
1404857060-if-i-were-a-ballerina.pdf
[47.96 KB]
description
8499516106-disney-junior-gran-libro-de-la-diversi-oacute-n-.pdf
[47.96 KB]
description
007722132X-chemistry-1st-international-edition.pdf
[47.96 KB]
description
0843182822-gumball-x27-s-summer-journal-that-he-definitely-.pdf
[47.96 KB]
description
186171145X-delight-in-disorder-selected-poems-paperback.pdf
[47.96 KB]
description
1357264895-the-electrical-solicitors-x27-handbook.pdf
[47.96 KB]
description
7030179781-a-brief-history-of-smart-school.pdf
[47.96 KB]
description
1508636222-missionary-work-among-the-ojibwe-indians-paperba.pdf
[47.96 KB]
description
7030092740-car-selection-guide-rl-chinese-edition.pdf
[47.96 KB]
description
0134228766-psychology-an-exploration-access-card.pdf
[47.96 KB]
description
7121033836-national-network-of-technical-proficiency-test-t.pdf
[47.96 KB]
description
1558495703-the-problem-of-evil-slavery-freedom-and-the-ambi.pdf
[47.96 KB]
description
1780191758-juices-amp-smoothies-150-irresistible-recipes-sh.pdf
[47.96 KB]
description
7560187951-mixed-multi-state-then-language-diversity-and-in.pdf
[47.96 KB]
description
1111319219-the-essentials-of-real-estate-law-for-paralegals-1.pdf
[47.96 KB]
description
0863413749-iee-on-site-guide-bs-7671-2001-16th-edition-wiri.pdf
[47.96 KB]
description
0857689843-lord-kelvin-x27-s-machine.pdf
[47.96 KB]
description
3656536619-die-diskussion-um-die-neuen-kmu-ifrs-chancen-und.pdf
[47.96 KB]
description
1456566075-reading-kingdom-level-5-books-25-30.pdf
[47.96 KB]
description
1493771515-sesame-and-lilies-proust-by-way-of-ruskin.pdf
[47.96 KB]
description
0439402255-skylark-sarah-plain-and-tall.pdf
[47.96 KB]
description
1560252030-ridley-scott-close-up-the-making-of-his-movies-c.pdf
[47.96 KB]
description
1681185970-understanding-spiritual-dreams-paperback.pdf
[47.96 KB]
description
1618689657-tales-from-the-blue-paperback.pdf
[47.96 KB]
description
076244844X-the-brontes-the-complete-novels-in-one-sitting.pdf
[47.96 KB]
description
1611168732-woodland-hearts-a-4-in-1-anthology-paperback.pdf
[47.96 KB]
description
0471778788-another-word-a-day-an-all-new-romp-through-some-.pdf
[47.96 KB]
description
1565772989-math-65-adaptation-saxon-math-6-x2f-5-student-wo.pdf
[47.96 KB]
description
0399254870-we-are-not-eaten-by-yaks-an-accidental-adventure.pdf
[47.96 KB]
description
1905129734-ocr-gateway-additional-science-ocr-science-revis.pdf
[47.96 KB]
description
077870467X-life-in-a-pueblo-native-nations-of-north-america.pdf
[47.96 KB]
description
1907355839-letters-from-a-living-dead-man.pdf
[47.96 KB]
description
1130891925-american-duroc-jersey-record-american-duroc-jers-2.pdf
[47.96 KB]
description
1849055904-specific-learning-difficulties-what-teachers-nee.pdf
[47.96 KB]
description
0819569038-the-place-where-you-go-to-listen-in-search-of-an.pdf
[47.96 KB]
description
1236365151-a-manual-of-the-cases-decided-in-the-united-stat-1.pdf
[47.96 KB]
description
1493548581-the-bible-the-torah-the-qu-x27-ran-the-religion-.pdf
[47.96 KB]
description
0618406239-mcdougal-littell-science-earth-x27-s-atmosphere-.pdf
[47.96 KB]
description
1236572319-rudiments-of-natural-philosophy.pdf
[47.96 KB]
description
1937220001-tokyo-verb-studio-paperback.pdf
[47.96 KB]
description
1468504207-the-best-of-you.pdf
[47.96 KB]
description
1439575436-whistle-21.pdf
[47.96 KB]
description
0440226015-more-than-a-mistress-paperback.pdf
[47.96 KB]
description
7117114681-medicinal-chemistry-study-guide-and-problem-sets.pdf
[47.96 KB]
description
0134206282-new-mypsychlab-without-pearson-etext-standalone--4.pdf
[47.96 KB]
description
131435664X-review-of-american-chemical-research-volume-12.pdf
[47.96 KB]
description
7535246257-edible-oils-and-fats-processing-technology-autho.pdf
[47.96 KB]
description
0062403974-dorothy-must-die-stories-volume-2.pdf
[47.96 KB]
description
0142429325-lost-and-found-unexpected-revelations-about-food-1.pdf
[47.96 KB]
description
0571255752-all-he-saw-was-the-girl.pdf
[47.96 KB]
description
0471356255-scientific-american-great-science-fair-projects-.pdf
[47.96 KB]
description
1432796631-dumb-bunny-s-guide-to-basic-hair-bows-paperback.pdf
[47.96 KB]
description
1331274559-the-hours-of-childhood-a-poem-classic-reprint-pa.pdf
[47.96 KB]
description
1619965852-truce-for-revival-paperback.pdf
[47.96 KB]
description
129681520X-the-first-irish-in-illinois-reminiscent-of-old-k-1.pdf
[47.96 KB]
description
0765367718-scholar-the-fourth-book-of-the-imager-portfolio.pdf
[47.96 KB]
description
1908191449-jog-on-fat-barry-paperback.pdf
[47.96 KB]
description
0582447720-focus-on-ielts-teacher-x27-s-book.pdf
[47.96 KB]
description
0930012674-tanka-waka-uta-paperback.pdf
[47.96 KB]
description
0803621280-the-professional-medical-assistant-an-integrativ.pdf
[47.96 KB]
description
1468185551-up-your-org-a-guide-to-help-orientation-leaders-.pdf
[47.96 KB]
description
1908483342-a-baron-in-her-bed.pdf
[47.96 KB]
description
0741431319-shall-we-tithe.pdf
[47.96 KB]
description
0985948647-knots-a-justin-barnes-novel.pdf
[47.96 KB]
description
0857339729-vw-golf-and-bora-service-and-repair-manual.pdf
[47.96 KB]
description
1932482040-how-to-generate-values-in-young-children-paperba.pdf
[47.96 KB]
description
7313090730-the-the-longan-law-practice-academic-series-tele.pdf
[47.96 KB]
description
1331546346-taft-s-training-for-the-presidency-classic-repri.pdf
[47.96 KB]
description
1425129358-the-georgian-girl-memoirs-of-marie-zouraboff-pap.pdf
[47.96 KB]
description
0471988545-semiconductor-devices-explained-using-active-sim.pdf
[47.96 KB]
description
0195379780-the-oxford-handbook-of-children-x27-s-literature.pdf
[47.96 KB]
description
0425199835-trial-run-format-mass-market-paperback.pdf
[47.96 KB]
description
1504936884-twenty-class-assemblies-paperback.pdf
[47.96 KB]
description
8126512946-access-2007-vba-bible-for-data-centric-microsoft.pdf
[47.96 KB]
description
190069431X-guide-to-employment-law-law-amp-society.pdf
[47.96 KB]
description
1481067931-choosing-an-afterlife-poetry-2008-2012.pdf
[47.96 KB]
description
0586089950-the-unlimited-dream-company.pdf
[47.96 KB]
description
0856462993-a-season-in-granada-uncollected-poems-and-prose.pdf
[47.96 KB]
description
0321735250-masteringastronomy-with-pearson-etext-student-ac.pdf
[47.96 KB]
description
0345367421-the-water-method-man-paperback.pdf
[47.96 KB]
description
1910080020-the-flying-bedroom.pdf
[47.96 KB]
description
1936693984-the-opioid-free-pain-relief-kit-10-simple-steps-.pdf
[47.96 KB]
description
3662135876-system-modelling-and-optimization.pdf
[47.96 KB]
description
1130239292-report-on-the-economic-resources-of-the-west-ind.pdf
[47.96 KB]
description
0789742578-comptia-a-220-701-and-220-702-practice-questions.pdf
[47.96 KB]
description
1579124712-rome-a-fold-out-history-of-the-ancient-civilizat.pdf
[47.96 KB]
description
1574092286-understanding-boat-electronics.pdf
[47.96 KB]
description
0828026882-40-days-prayers-and-devotions-on-earthapos-s-fin.pdf
[47.96 KB]
description
1843583356-jedward-our-story.pdf
[47.96 KB]
description
1440428220-the-master-key-system-in-twenty-four-parts-with-.pdf
[47.96 KB]
description
1332141706-how-we-are-fed-a-geographical-reader-classic-rep.pdf
[47.96 KB]
description
1331426758-the-way-of-belinda-classic-reprint-paperback.pdf
[47.96 KB]
description
0399150994-grand-theft-uncorrected-proof-copy.pdf
[47.96 KB]
description
1496700171-murder-most-finicky.pdf
[47.96 KB]
description
1492203351-the-power-of-transformation-realizing-your-dream.pdf
[47.96 KB]
description
0399158804-the-last-alibi-jason-kolarich.pdf
[47.96 KB]
description
1118010477-strategic-planning-in-student-affairs-new-direct.pdf
[47.96 KB]
description
0952927721-letting-the-soul-decide-a-journey-of-more-than-o.pdf
[47.96 KB]
description
0194030156-speak-now-1-student-book-with-online-practice.pdf
[47.96 KB]
description
1936167794-12-paperback.pdf
[47.96 KB]
description
1331045355-what-shall-we-do-with-the-sunday-school-as-an-in.pdf
[47.96 KB]
description
0547403623-go-math-teacher-edition-big-idea-grade-3-chapter.pdf
[47.96 KB]
description
7503000759-genuine-engineering-measurements-specialized-sec.pdf
[47.96 KB]
description
1609768620-teach-baby-to-talk-and-make-reading-fun-the-impo.pdf
[47.96 KB]
description
7516145319-2015-china-china-figure-figure-pei-excellent-red.pdf
[47.96 KB]
description
7506742675-the-genuine-new-book-drug-bioassay-technology-me.pdf
[47.96 KB]
description
1140980785-the-idylliums-of-theocritus-with-rapin-x27-s-dis-1.pdf
[47.96 KB]
description
0865349134-celebrating-difference-paperback.pdf
[47.96 KB]
description
0764165100-little-duckling-mini-look-at-me-books.pdf
[47.96 KB]
description
0717169634-tables-expert-c-c-paperback.pdf
[47.96 KB]
description
1511753412-the-samaritan-jesus-paperback.pdf
[47.96 KB]
description
0099565765-london-bridge-in-america-the-tall-story-of-a-tra.pdf
[47.96 KB]
description
0702238562-errol-fidel-and-the-cuban-rebel-girls.pdf
[47.96 KB]
description
1235890880-health-culture-volume-19-no-4-paperback.pdf
[47.96 KB]
description
7111137582-auto-repair-and-auto-parts-enterprises-computer-.pdf
[47.96 KB]
description
8180561666-mother-the-real-physician-to-daughters.pdf
[47.96 KB]
description
0873516451-aia-guide-to-the-minneapolis-lake-district.pdf
[47.96 KB]
description
0736056181-action-plan-for-menopause-your-guide-to-a-health.pdf
[47.96 KB]
description
174248669X-pickle-pig-x27-s-first-words.pdf
[47.96 KB]
description
007146770X-opportunities-in-occupational-therapy-careers-pa.pdf
[47.96 KB]
description
1929774737-beyond-price-differentiate-your-company-in-ways-.pdf
[47.96 KB]
description
0132058634-top-notch-tv-3-video-course.pdf
[47.96 KB]
description
0793551897-first-book-for-the-guitar-part-2-guitar-techniqu.pdf
[47.96 KB]
description
163094288X-cpace-written-secrets-study-guide-cpace-test-rev.pdf
[47.96 KB]
description
1908999373-principles-and-practices-of-bar-and-beverage-man.pdf
[47.96 KB]
description
0692254323-trickin-wit-the-virus-paperback.pdf
[47.96 KB]
description
0521166322-haddon-the-head-hunter-a-short-sketch-of-the-lif.pdf
[47.96 KB]
description
8121202361-indian-english-a-bibliographical-guide-to-resour.pdf
[47.96 KB]
description
0521436311-optical-physics-3rd-revised-edition.pdf
[47.96 KB]
description
098917400X-a-kiss-to-keep-uncommon-love-found-in-an-uncommo.pdf
[47.96 KB]
description
0615413986-the-hut-beneath-the-pine-tea-poems-paperback.pdf
[47.96 KB]
description
1576102734-quarkxpress-4-by-bill-harrell-1998-paperback.pdf
[47.96 KB]
description
1511483113-journal-your-life-s-journey-urban-skyscraper-on-.pdf
[47.96 KB]
description
1603420282-humane-livestock-handling.pdf
[47.96 KB]
description
0440870801-brotherband-slaves-of-socorro-book-four.pdf
[47.96 KB]
description
0030560233-elements-of-language-vocabulary-workshop-grade-6.pdf
[47.96 KB]
description
0764218867-traces-of-guilt-paperback.pdf
[47.96 KB]
description
0133661229-connected-mathematics-2-grade-8-student-text-200.pdf
[47.96 KB]
description
0198302924-project-x-origins-brown-book-band-oxford-level-1-29.pdf
[47.96 KB]
description
0803261411-the-citizen-soldier-the-memoirs-of-a-civil-war-v.pdf
[47.96 KB]
description
1472336429-i-love-my-daddy-colour-the-story.pdf
[47.96 KB]
description
7564079576-practical-writing-guide-2nd-edition-national-mod.pdf
[47.96 KB]
description
1846164249-when-dragons-are-dreaming.pdf
[47.96 KB]
description
0199555052-the-lifted-veil-and-brother-jacob-with-brother-j.pdf
[47.96 KB]
description
0375725784-a-heartbreaking-work-of-staggering-genius.pdf
[47.96 KB]
description
178329227X-dawn-of-the-planet-of-the-apes-the-official-movi.pdf
[47.96 KB]
description
0471241644-engineering-mechanics-statics-amp-dynamics-vol-1.pdf
[47.96 KB]
description
0008156492-birds-level-9.pdf
[47.96 KB]
description
1332061427-the-occurrence-of-aluminium-and-its-absorption-f.pdf
[47.96 KB]


WITNESS LIST Business & Industry Committee January 12, 2006-10:30A Status of workers' compensation On: Betts, Albert (Texas Department of Insurance, Division of Workers' Compensation) Darwin, Norman (Office of Injured Employee Counsel) Geeslin, Mike (Texas Department of Insurance) Lee, Amy (Texas Department of Insurance, Division of Workers' Compensation) Levy, Rick (Texas AFL-CIO) Osborn, Dr. Charles (Self) Registering, but not testifying: On: Biscoe, Laurie (Texas Department of Insurance, Division of Workers' Compensation) Lazaretti, Margaret (Texas Department of Insurance, Division of Workers' Compensation)


Reports collectors which could be simplified. In particular some cascaded groupingBy collectors
could be expressed with simpler toMap collector which also will likely be more performant.
This inspection only reports if the project or module is configured to use a language level of 8 or higher.


Expressive E Announces New Osmose Keyboard Controller
Say hello to the future of MIDI controllers
by KaneToday, Expressive E, the company behind the MPE controller Touché, has announced the next chapter in their product line, the Osmose. Where the Touché was a smaller hand controller, the Osmose is a full 49-key MIDI controller capable of unlocking the real power of your hardware and software synths. MPE is quickly and thankfully becoming the new standard when it comes to designing new hard and soft synths, and Expressive E's experience in the field has lead them to create a controller like nothing before. Hardware only fans can also rejoice, as the Osmose is capable of being used as a standalone MIDI controller, removing the need for a computer.
Key features:
- Keybed: 49 full-size keys with A.K.A.© technology for three-dimensional control
- Polyphony: Up to 24 voices with Layered and Split modes
- Top Panel: 8 encoders, 9 buttons, pitch stick/modulation stick, color LCD screen
- Pedal Inputs: 2 continuous pedal inputs, assignable to sustain or synth parameters
- MIDI: MIDI In, MIDI Out/Thru, USB Type B
- Audio: 24-bit D/A conversion, 1/4" stereo headphone jack, two ¼" jacks for main stereo output
- Software: A Mac/PC editor lets users create and edit the EaganMatrix sounds, as well as assign the three A.K.A.© key movements to multiple parameters.
Until December 31, Expressive E is taking Osmose reservations at 40% off its regular price ($/€1079) exclusively in its web store with an initial deposit of $/€299.


--- layout: page title: About header-img: "img/about-bg.png" ---
My names Dennis and my greatest weakness is eating too much bread before appetizers


Allocators were introduced in Section 3.4. They represent a special memory model and are an abstraction used to translate the need to use memory into a raw call for memory. This chapter describes allocators in detail.