|
Pete O'Hanlon wrote: Funnily enough, that was the gist of the answer that I've just added above.
I read it, but your response was too wordy for me to figure out what you were saying! But none-the-less, two great minds, a single thought between them, eh?
Dependency Injection, hmmm... it's really weird to me how we have these (what I consider to be) massive frameworks to support DI when all it really needs is a simple instantiation engine.
Anyways, I'm getting distracted by the lure of an unoccupied soapbox.
Marc
|
|
|
|
|
We internally have a DI engine that is only 60 lines or so of code, and it's good enough for our purposes when all we need is basic DI.
|
|
|
|
|
Pete O'Hanlon wrote: We internally have a DI engine that is only 60 lines or so of code
Sweet!
Marc
|
|
|
|
|
I think we can think about two scenarios:
1. First, On the ground, we "build" the rocket with boosters and make a launch.
2. We don't build or assemble a rocket, but when a launch is called, it acquires a booster and executes a launch.
The second one is loosely tied.
The Boosters.GetBooster() can be applied for both the scenarios?
Starting to think people post kid pics in their profiles because that was the last time they were cute - Jeremy.
|
|
|
|
|
VuNic wrote: The Boosters.GetBooster() can be applied for both the scenarios?
I think so. In the first scenario, the constructor can call GetBooster to get a concrete instance, though I think it would be much more preferable for Rocket to have a Build() method.
In the second scenario, and this may be over the top, consider that we know that a rocket, among other things, has some form of propulsion mechanism, otherwise it wouldn't be a rocket. Now, a rocket might have a main engine, boosters, stages, ion engines, so forth, a whole slew of combinations of things. So if rocket is to have a "has a" relationship to booster, the concept of booster needs to be abstracted to "propulsion systems", ideally a collection of this abstraction type. The GetBooster factory might return a collection specific to the rocket's requirements. You can define specific collections as a concrete type (there's most likely a limited, well defined set of configurations). Each type (the configuration of propulsion systems) probably has specific launch behaviors. Therefore, the type itself contains all the logic for how to proceed with a launch, going from main engine firing, booster firing, stages, and final orbit maneuverings with ion engines. So, why should the rocket itself know how to do this? The rocket is just a container for a particular configuration. Maybe the rocket performs some coordination with other systems, but the execution of the launch should be delegated to the configuration type.
Which is where functional programming can be used, not only for "computing" the launch, but also for ensuring that configurations, using discriminated unions, are permitted.
Marc
|
|
|
|
|
Hmm as I understand, the design decision completely relies on the exact requirement. More thinking is required to realize what is the system about. The more we are precise with the actual system, the better and sensible design we could make. Thanks for the inputs Marc. All learning for me
Starting to think people post kid pics in their profiles because that was the last time they were cute - Jeremy.
|
|
|
|
|
This is probably a really basic database design question, but for some reason, I'm struggling with it.
The real world problem I'm trying to solve is a little too escoteric to describe, so I'll try to use a generic example that presents the same problem.
Say a store sells two kinds of cogs. Each type of cog is represented in the database with its own table (they have sufficiently different characteristics to warent different table schemas). A customer can buy both kinds of cogs, and we want to keep track of their purchases. So we have a sales table that's associates the customer with the cogs he/she buys. One foreign key points to the customer, and another foreign points to the cog.
What's got me stumped is that the foreign key that points to the cog could be associated with either type of cogs. How do we know which? Do we create an additional field that tells us the type of cog the customer purchased? That rings alarms for me in that it's surely unnormalized.
So instead do we have seperate sales table for each type of cog? But wouldn't this lead to an explosion of tables as we add more cogs types to our inventory?
This must seem like a beginner's question; I'm an old C++ audio programmer who's become a 'web developer', so occasionally I get stumped on DB basics. Any help is appreciated.
|
|
|
|
|
You need to find a way of describing n widgets from a single table so that the problem of new widgets does not require more tables which means a nightmare in maintenance and changing application pages that add, edit and display the data. Even if you can break it down to tables of classes of widgets you might be able to have a widget type table that keys into a widget class table. Even then you may find that you need to add new widget classes to cope but if you can make the table columns generic enough this may not be an issue. Just a quick thought.
"If you think it's expensive to hire a professional to do the job, wait until you hire an amateur." Red Adair.
nils illegitimus carborundum
me, me, me
|
|
|
|
|
Thanks for your reply.
The solution I've settled on uses part of your answer. I have a 'base' table for all items. Then I have tables where needed for 'derived' sub types. These derived tables have a 'zero to one' relationship to the base table. The derived tables are a way of extending the properties of items in the base table.
So the items table could look like this:
+----+--------+-------+
| id | name | price |
+----+--------+-------+
| 1 | wheel | $1.23 |
+----+--------+-------+
| 2 | wire | $1.50 |
+----+--------+-------+
Then if there are more than one kind of cogs, I can subclass them in 'derived' tables (like derived classes in object oriented programming).
wheels table
+----+--------+--------+
| id | cog_id | radius |
+----+--------+--------+
| 1 | 1 | 50" |
+----+--------+--------+
wires table
+----+--------+--------+
| id | cog_id | length |
+----+--------+--------+
| 1 | 2 | 12" |
+----+--------+--------+
I can then do joins to get back only wheels, and another join to get just wires.
I'm not sure if this is a common approach. I know the joins will cost more processing, but at least the schema makes sense to me.
|
|
|
|
|
Leslie Sanford wrote: I'm not sure if this is a common approach.
It is. And it's one that I strongly prefer over a solution where one "extends" the record by linking to a table with "custom fields" (most often key/value pairs of strings).
Leslie Sanford wrote: I know the joins will cost more processing, but at least the schema makes sense to me.
..just a little extra overhead. Other alternatives would only make it worse, you'd end up with a lot of empty fields or with weird join-constructions.
Bastard Programmer from Hell
|
|
|
|
|
Leslie Sanford wrote: (they have sufficiently different characteristics
How are thos charactistics used?
In the right situation you can use a meta-data solution to represent the additional attributes.
|
|
|
|
|
today I discuss with my friends .we conculde that there is two ways design base class .
1 .we design the method whether belongs to all class or only belongs to sub-class into base-class
the code writed like that
class CVehicle
{
public:
virtual void fly()
{
cout<<"I'm sorry I don't have method fly"<<endl;
}
virtual void Ride()
{
cout<<"I'm sorry I don't have method Ride"<<endl;
}
virtual void Run()
{
cout<<"I'm sorry I don't have method Run"<<endl;
}
};
class CAeroplane:public CVehicle
{
public:
void fly()
{
cout<<"I am a Aeroplane i can fly "<<endl;
}
};
class CBike:public CVehicle
{
public:
void Ride()
{
cout<<"I am a Bike i can Ride "<<endl;
}
};
class CCar:public CVehicle
{
public:
void Run()
{
cout<<"I am a Car i can Run "<<endl;
}
};
2 .we think that sub class has its own method so we should design like that
class CVehicle
{
public:
};
class CAeroplane:public CVehicle
{
public:
void fly()
{
cout<<"I am a Aeroplane i can fly "<<endl;
}
};
class CBike:public CVehicle
{
public:
void Ride()
{
cout<<"I am a Bike i can Ride "<<endl;
}
};
class CCar:public CVehicle
{
public:
void Run()
{
cout<<"I am a Car i can Run "<<endl;
}
};
so which way will the best way we should order ?
|
|
|
|
|
wan.rui@qq.com wrote: so which way will the best way we should order ?
2.
A base class should only contain members that are common to those which will derive it.
Signature construction in progress. Sorry for the inconvenience.
|
|
|
|
|
The answer is neither. The aim of the base class should be to encapsulate operations that are common to all derived classes. In your first example, having the ability to fly makes no sense in the case of a class like CBike unless you are modelling scenes out of ET. In your second example, there's no reason to have a base class at all (btw, people run, car's don't). A better example would be:
class CVehicle
{
public:
virtual void Move();
}
class CCar: public CVehicle
{
public:
void Move()
{
cout << "I am a car. I can be driven" << endl;
}
}
class CBike: public CVehicle
{
public:
void Move()
{
cout << "I am a bike. I can be ridden" << endl;
}
}
class CAeroplane: public CVehicle
{
public:
void Move()
{
cout << "I am an aeroplane. I can be flown" << endl;
}
}
|
|
|
|
|
I mean there are some different action in different subclass ,where i can't conclude a common interface like move() .
my question is when we at this situation we write all different method in base class?or put the different method in different sub-class?
|
|
|
|
|
If you can't ask a common question, how can you interact with the base class? Answer: you can't. If you want something to move, no further questions asked, provide a move() method (possibly abstract/pure virtual) and override it to do the actual movement in subclasses. If you need to know the type of something before asking it the question, then you're probably asking the wrong question.
|
|
|
|
|
and i would like to store subclass with baseclass pointer.maybe we can dynamic_cast it to subclass and then to visit his method?or we could use base class pointer to visist method.
|
|
|
|
|
+5. That solution is working safe.
|
|
|
|
|
So anybody know what dscorepropagationdata means. Well I have a lot of user with the same date and time stamp value of this attribute. Do anybody know what could have trigger this?
I do know that every user that does not have the dscorepropagationdata <notset> can logon to sharepoint and the one that does has this value can. I do know it's not a sharepoint issue. Trying to see if it is some type of propagation thing or even group policy coming do from the top level.
EX: 5> dSCorePropagationData: 1/25/2012 16:25:47 Greenwich Standard Time Greenwich Standard Time; 1/25/2012 16:21:28 Greenwich Standard Time Greenwich Standard Time; 1/25/2012 16:14:6 Greenwich Standard Time Greenwich Standard Time; 1/25/2012 16:12:28 Greenwich Standard Time Greenwich Standard Time; 7/14/1601 22:36:49 Greenwich Standard Time Greenwich Standard Time;
|
|
|
|
|
Not sure what the question is but Active Directory propagates data between servers. You can google for Active Directory Replication.
Active Directory impacts login so if someone can't login then a replication timeliness issue would certainly be possible.
|
|
|
|
|
We are trying to come to a conclusion on a SaaS product architecture, We want to discuss which architecture and development style should be preferred
options
Single web app : This will have a HTML5 based responsive/fluid layout making it possible to adjust / run on all devices like desktop, tablet and phones
VS
Web application for desktops + web mobile app using Kendo or similar controls
We are actually doing POC to check if responsive layout has any restriction when it comes to web application development, any suggestions or points would be welcome
Basic criteria
1. Development time + learning curve
2. Utilization of built in functionality of controls
3. Full browser vs mobile browsers limitations and functionality loss caused by one
and others
Any thoughts will be appreciated.
Thanks
Sagar
|
|
|
|
|
Well, it largely depends on the kind of service you want to deliver.
I have developed a few games on HTML5 and would say, the learning curve is not much if you are not new to the programming world. There are large number of resources from beginner to pro to help you move forward.
With HTML5, the biggest challenge will be the user base with IE. Apart from that, customizing for different screens and devices isn't much of a issue.
Audio tags doesn't work in Android 2.1 and below, but guess most of the devices are now 2.2+
Depending upon your layouts and design, you may want to keep your resize variables in check.
Also, the cool thing is you can force users to use portrait/landscape view if you want to. Helps in layout customization.
Imagination is the one weapon in the war against reality!!!
http://aniruddhaloya.blogspot.com
|
|
|
|
|
Thanks for reply,
I was more concerned about Single solution vs Web App + mobile web app approach
Yes IE is going to be challenging specially when we are building a business application.
but question is would single solution be better over other frameworks like Kendo, ExtJS etc
Sagar
|
|
|
|
|
As I said, the final design will largely depend upon the service model and requirements.
For instance, if your app requires user to be connected to internet to be able to use it... then it might as well serve better to have a web app. Its not possible to comment which one will serve better w/o knowing what functionality they are going to have.
Biggest Adv of HTML5 app is a uniform code-base and you will not have to worry (about user upgrades) when adding/upgrading to new features.
A native app allows you to store information locally which can be retrieved easily in offline mode.
HTML5, with local storage, does allow data storage... but that may not be as much as native app (I'm not very sure about data storage details as I haven't used them for HTML5 app)
Imagination is the one weapon in the war against reality!!!
http://aniruddhaloya.blogspot.com
|
|
|
|
|
If it's SaaS the web is really your only option. To compete with others in the mobile device environment and provide a SaaS, you'll need to be providing something unique. The mobile market is competitive and users typically have short attention spans. Unless its a service users can't get elsewhere, it has to offer a platform-specific UX to succeed.
Regarding mobile development, from my experience if you focus on one mobile platform and develop the app to its potential. Writing for the second platform is a lot cheaper because, to a larger extent, the problem domain has been resolved.
"You get that on the big jobs."
|
|
|
|