Notes by Craig Phillips
- There are 11 fallacies of Distributed Computing:
- The network is reliable
- Latency isn’t a problem
- Bandwidth isn’t a problem
- The network is secure
- The topology won’t change
| OK so now you have implemented the kata. Your tests should look something like this: | |
| We can say that the tests define the object "in a calculus of itself". | |
| They are not state based tests, they define how the behaviours of the object interact with each other. | |
| To see the real value of this let's introduce some change ... I hear real system's do this occasionally. | |
| Because this is a high performance system decimal math is too slow. You now need to use floats instead. | |
| Need help on floating point math? Check out: http://www-users.math.umd.edu/~jkolesar/mait613/floating_point_math.pdf |
| Value objects are an important concept in DDD. This kata is made both to learn value objects and to learn better ways of testing. | |
| Write a probability value object. It should contain the following methods: | |
| Probability CombinedWith(Probability) | |
| Probability InverseOf() | |
| Probability Either(Probability) | |
| if you forget your probability math: | |
| Either:P(A) + P(B) - P(A)P(B) | |
| CombinedWith: P(A)P(B) |
I hereby claim:
To claim this, I am signing this object:
| gci -recu -inc "*.*" | % { $_.LastWriteTime = Get-Date } |
| public static class NumericHelpers | |
| { | |
| // Float point maths is whack. We can't check for absolute equality as floating point numbers are imprecise | |
| // and are subject to rounding issues (See: http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html) | |
| // Therefore, we can't check for absolute equality, but instead we have to need to check for values being | |
| // "nearly" equal, which allows a small margin of error (i.e. something known as the "Epsilon" value for | |
| // the given data type for this CPU that this code is running on). | |
| public static bool NearlyEqual(double a, double b, double epsilon) | |
| { | |
| var absA = Math.Abs(a); |
| Option Explicit | |
| Dim objshell,path,DigitalID, Result | |
| Set objshell = CreateObject("WScript.Shell") | |
| 'Set registry key path | |
| Path = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\" | |
| 'Registry key value | |
| DigitalID = objshell.RegRead(Path & "DigitalProductId") | |
| Dim ProductName,ProductID,ProductKey,ProductData | |
| 'Get ProductName, ProductID, ProductKey |
| using System; | |
| using System.Text; | |
| namespace RandomString | |
| { | |
| public class RandomString : IDisposable | |
| { | |
| // Can use the BetterRandom class here or just use the built-in System.Random class. | |
| private BetterRandom random = new BetterRandom(); | |
| private const string alpha_selection = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; |
| public static class StringExtentionMethods | |
| { | |
| public static string TruncateAtWord(this string input, int maxlength, bool addEllipsis) | |
| { | |
| if (input == null || input.Length <= maxlength) return input; | |
| var ellipsisLengthDeduction = (addEllipsis ? 3 : 0); | |
| var iLastSpace = input.LastIndexOf(" ", (maxlength - ellipsisLengthDeduction), StringComparison.Ordinal); | |
| var iLength = 0; | |
| if (iLastSpace < 0) | |
| { |
| # Run this as Administrator | |
| net stop w3svc | |
| Get-ChildItem "C:\Windows\Microsoft.NET\Framework*\v*\Temporary ASP.NET Files" -Recurse | Remove-Item -Recurse -Force | |
| net start w3svc |