|
Bastogne is also pretty impressive
|
|
|
|
|
Went past it a few times, what is there to look at? I saw the military museum at Etternach I think it is, where Patton died. That was impressive.
|
|
|
|
|
Bastogne was surrounded for a few months by the Germans. The allies held out during an extreme cold winter (-20 degrees celcius) with a limited supply of ammo and food. The museum there explains it in detail and you can walk the surrounding area. It was one of the most intense and heaviest battle scenes of the entire war apparently.
|
|
|
|
|
I can't even pronounce that word properly.
"Bastards encourage idiots to use Oracle Forms, Web Forms, Access and a number of other dinky web publishing tolls.", Mycroft Holmes[ ^]
|
|
|
|
|
ij is pronounced like 'eye' kind of.
ijs is 'ice' for example. Often the i and j and joined to give that y with the umlaut dots over it.
Anyway, rijk is kingdom, like reich in german, or rice in old english. Hard k sound for the English word which typically becomes ch in garman. kirk, kirch, ik, ich etc.
|
|
|
|
|
So, I'm doing some analysis code, and I need a couple of moving averages - one over the whole sample, one over the last 30 samples, and one over the last ten samples.
Now, I don't fancy doing that in SQL, so I'm doing it in C#, and I decide the obvious thing to do is create a MovingAverage class that you Add samples to, and it sorts itself out. Easy peasy.
So I knock up the class framework, and the code that will use it, and then go back to fill in the class. And decide to make it generic because hey, I might want to use it again. Change everything to use generics - easy - and off we go...except...you can't sum generics, because they are based on object which doesn't implement arithmetic operators. And you can't restrict generics to classes that support arithmetic either...
So either I restrict it to just primitive types (int, double, blah blah blah) or I drop the whole idea...and you can't use primitive types as generic constraints...and it wouldn't work if you could, because primitive arithmetic is implemented via static inline functions at compile time, so you couldn't use 'em in a generic if you wanted to!
So...change it back Griff, change it all back...
Those who fail to learn history are doomed to repeat it. --- George Santayana (December 16, 1863 – September 26, 1952)
Those who fail to clear history are doomed to explain it. --- OriginalGriff (February 24, 1959 – ∞)
|
|
|
|
|
Part of this EnumOperators[^] might be of use, and I think I saw someone else with something similar. But, yes, 'twould be nice if there were an INumeric interface... maybe in the next framework.
This space intentionally left blank.
|
|
|
|
|
I was making it generic to make my life easier in future!
(And I hate runtime type checking)
Thanks for that though, even if I'm not going to use it (I've already changed it back to fixed datatype)
Those who fail to learn history are doomed to repeat it. --- George Santayana (December 16, 1863 – September 26, 1952)
Those who fail to clear history are doomed to explain it. --- OriginalGriff (February 24, 1959 – ∞)
|
|
|
|
|
|
A lot like mine:
public class MovingAverage
{
private List<int> samples = new List<int>();
private int total = 0;
public int SampleSize { get; private set; }
public decimal Value
{
get
{
return samples.Count == SampleSize? (decimal)total / SampleSize : decimal.MinValue;
}
}
public MovingAverage(int sampleSize = -1)
{
SampleSize = sampleSize;
}
public void Add(int value)
{
if (SampleSize > 0)
{
while (samples.Count >= SampleSize)
{
int remove = samples[0];
samples.RemoveAt(0);
total -= remove;
}
}
samples.Add(value);
total += value;
}
}
Those who fail to learn history are doomed to repeat it. --- George Santayana (December 16, 1863 – September 26, 1952)
Those who fail to clear history are doomed to explain it. --- OriginalGriff (February 24, 1959 – ∞)
|
|
|
|
|
Ah yes, the good old "you can't do math with generics". There are some little libraries that allow you do it, implemented like a bunch of these:
static T Add<T>(T a, T b)
{
if (typeof(T) == typeof(int))
return (T)(object)((int)(object)a + (int)(object)b);
else if .. etc
}
which makes some people angry, but it works.
Btw, that's my favourite test code for decompilers. That weird double cast is often decompiled incorrectly.
However, I'm going to have to file this all under YAGNI. Apart from highly exceptional circumstances, there are only two types you're ever going to put into your MovingAverage: int and double.
|
|
|
|
|
You are probably right - chances are I'll never use anything except a series of int, returning a decimal.
But it's the principle, damnit!
I like generics where I *might* reuse them, and feel slightly dirty hardcoding datatypes...
Those who fail to learn history are doomed to repeat it. --- George Santayana (December 16, 1863 – September 26, 1952)
Those who fail to clear history are doomed to explain it. --- OriginalGriff (February 24, 1959 – ∞)
|
|
|
|
|
OriginalGriff wrote: I don't fancy doing that in SQL Why? SQL is extremely good in arithmetic...
I'm not questioning your powers of observation; I'm merely remarking upon the paradox of asking a masked man who he is. (V)
|
|
|
|
|
SQL is neither moving, nor average.
This space intentionally left blank.
|
|
|
|
|
SQL has top(n) and order by for moving and avg(column) for average...
I'm not questioning your powers of observation; I'm merely remarking upon the paradox of asking a masked man who he is. (V)
|
|
|
|
|
Maybe I should have included the joke icon.
But also, is TOP part of the SQL standard?
This space intentionally left blank.
|
|
|
|
|
TOP as is not part of the standard...
There is, however implementations in every SQL I know of...
And of course - just for the fun - it's different in each an every of them...
DB2 - select * from table fetch first 10 rows only
MSSQL - select top(10) * from table
MySQL - select * from table limit 10
I'm not questioning your powers of observation; I'm merely remarking upon the paradox of asking a masked man who he is. (V)
|
|
|
|
|
How about oracle? Without using a subquery that is.
|
|
|
|
|
I don't know Oracle from my experience but a short Googleing shows that it has it's own syntax - as expected...
Oracle - select * from table where rownum <= n
I'm not questioning your powers of observation; I'm merely remarking upon the paradox of asking a masked man who he is. (V)
|
|
|
|
|
Can't do that. Rownum is assigned in the beginning before ORDER BY.
The result would be n random rows.
Think of it as being processed in this order:
1. The FROM/WHERE clause goes first.
2. ROWNUM is assigned and incremented to each output row from the FROM/WHERE clause.
3. SELECT is applied.
4. GROUP BY is applied.
5. HAVING is applied.
6. ORDER BY is applied.
|
|
|
|
|
As I told I do not know Oracle form my own experience - found that bit in Google...
I'm not questioning your powers of observation; I'm merely remarking upon the paradox of asking a masked man who he is. (V)
|
|
|
|
|
It's just one of my pet peeves, that Oracle lacks a limit clause.
It's easy enough to fix with a subquery, I just believe I shouldn't need to.
|
|
|
|
|
Sounds like article fodder to me.
<voice type="Ebeneezer Scrooge"> Bah. dumb bugs </voice>
|
|
|
|
|
I like to call those little divrersions "Flights of fancy" or "Magic Mike moments"
|
|
|
|
|
Since this borders on a programming answer, I'm not going to give you the answer directly, but look at they way the two parameter sum function is implemented.
|
|
|
|