|
RDBMS is should only be used for simple applications.For todays applications they are not appropiate.
I agree that OODBMS is not well know but the things in the POEAA ate al most 6 months of my development time.
which included identity maps,seperated interfaces,repository,query object,finders,mappers,topological sorting,lazy loading,List Loader,Layer supertype ...etc.
yes in some way I had read the book so many times and applied ALL the enterprise patterns it has got but I still think
POEAA is missing something that it is based on SQL which is a structured system....(for me right now SQL stands for Stupid Query Language)
As SQL is procedural I think it should not exist in todays applications.(but u know people love to sell DB)
Why did we do the patterns in POEAA?
The reason is...... ;we wanted an OO code that we could reuse.....but every thing is hidden between the idea
of the primary key,foreign key idea that we should not be exposed of.
The devil is in the uniequness of the primary key...it makes the developer bring the bussiness logic into the database(normalization), where it is not really appropiate.
Such as think as a human brain does not use pointers(primary keys ) to remember? Does anybody say hmmmmmm my name is (pointer 124567)john smith.
I don't think so.The brain uses objects to remember other objects....
So why is this SQL thing is SO succesfull?
the reason is no body is doing any "domain model" in their applications as the procedural way is the easy way.
Smile [ ] Crying [:'(]
Why am I smiling and crying ?
Because I have erased ALL patterns in POEAA which makes me cry But we are thinking about burning the book when it gets cold that makes me laugh.
All the work we had done does not make sense with an OODBMS.
(.....still it took me so much time to figure out that Data Mapper idea is so "concrete idea" (narrow minded idea )that it does not live for so long even it is your hand written one)
thanks for the discussion caddre
PS: all these ideas are my point of view.
PS2: I did not want to offend any people who are writing data mappers they can be usefull in simple SQL CRUD applications.
Ps3:Myth: ODBMS products do not scale
www.service-architecture.com/object-oriented-databases/articles/myth_odbms_do_not_scale.html
....As of March, 2003, the Stanford Linear Accelerator Center (SLAC) stored over 800 terabytes of production data using Objectivity/DB.
>>>>>>>>>> most of the DB's in the world are smaller than a terabyte....(more than 90 percent)
|
|
|
|
|
hmmmm that makes sense...I have always hated SQL.
|
|
|
|
|
tolgayikilmaz wrote:
As SQL is procedural I think it should not exist in todays applications
SQL is primarily a set-based language that happens to have elements of a procedural language in order for it to fit with existing code bases.
tolgayikilmaz wrote:
Stanford Linear Accelerator Center (SLAC) stored over 800 terabytes of production data using Objectivity/DB
That's great. However, storage is one thing, retrieval is another.
My: Blog | Photos
"Man who stand on hill with mouth open will wait long time for roast duck to drop in." -- Confucious
|
|
|
|
|
OODBMS is 44X faster than any SQL...
of course if u are using OO.
|
|
|
|
|
I've used an OO database in the past and I can't say that I was all that impressed with its performance.
My: Blog | Photos
"Man who stand on hill with mouth open will wait long time for roast duck to drop in." -- Confucious
|
|
|
|
|
|
Hi,
Does anyone has an idea on how can I open the form,so that initally when it is opened it is set to the maximum window size as if I have clicked the maximize button?
Thanks,
E.A.
|
|
|
|
|
|
I've been trying to figure out how to extract information from all the windows presently on the desktop for about a week now. I've made it a ways, but now I am most thoroughly stuck. The following code I've gathered from various places. It compiles fine in VS 2005 RC1 against the .NET 2.0 framework.
However, at runtime it gets hung up when trying to return the windowlist. It gives a generic error and stops execution when it attemps to run the following line:
foreach (Window x in Windows)<br />
{<br />
Windows.Add(x.Title + ": " + x.hWnd.ToString());<br />
}
Here is the entire rest of the code. It should compile for you fine, with a simple cut and paste job.
I really need to get this code working. If you have the time, and want to chat: my AIM is navinineteen.
The following is two separate files:
<br />
using System;<br />
using System.Drawing;<br />
using System.Collections;<br />
using System.ComponentModel;<br />
using System.Windows.Forms;<br />
using System.Data;<br />
<br />
namespace WindowScraper<br />
{<br />
public class FormWindowList : System.Windows.Forms.Form<br />
{<br />
<br />
private System.Windows.Forms.ListBox listBoxWindowList;<br />
private System.Windows.Forms.Button buttonUpdateWindowsList;<br />
private System.Windows.Forms.Button buttonSaveImage;<br />
private System.ComponentModel.Container components = null;<br />
<br />
public FormWindowList()<br />
{<br />
InitializeComponent();<br />
<br />
}<br />
<br />
protected override void Dispose( bool disposing )<br />
{<br />
if( disposing )<br />
{<br />
if (components != null) <br />
{<br />
components.Dispose();<br />
}<br />
}<br />
base.Dispose( disposing );<br />
}<br />
<br />
#region Windows Form Designer generated code<br />
private void InitializeComponent()<br />
{<br />
this.listBoxWindowList = new System.Windows.Forms.ListBox();<br />
this.buttonUpdateWindowsList = new System.Windows.Forms.Button();<br />
this.buttonSaveImage = new System.Windows.Forms.Button();<br />
this.SuspendLayout();<br />
this.listBoxWindowList.Location = new System.Drawing.Point(16, 16);<br />
this.listBoxWindowList.Name = "listBoxWindowList";<br />
this.listBoxWindowList.Size = new System.Drawing.Size(256, 173);<br />
this.listBoxWindowList.TabIndex = 0;<br />
this.buttonUpdateWindowsList.Location = new System.Drawing.Point(64, 200);<br />
this.buttonUpdateWindowsList.Name = "buttonUpdateWindowsList";<br />
this.buttonUpdateWindowsList.Size = new System.Drawing.Size(160, 23);<br />
this.buttonUpdateWindowsList.TabIndex = 1;<br />
this.buttonUpdateWindowsList.Text = "Update Windows List";<br />
this.buttonUpdateWindowsList.Click += new System.EventHandler(this.UpdateWindowList);<br />
this.buttonSaveImage.Location = new System.Drawing.Point(64, 232);<br />
this.buttonSaveImage.Name = "buttonSaveImage";<br />
this.buttonSaveImage.Size = new System.Drawing.Size(160, 23);<br />
this.buttonSaveImage.TabIndex = 2;<br />
this.buttonSaveImage.Text = "Save Image";<br />
this.buttonSaveImage.Click += new System.EventHandler(this.SaveImage);<br />
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);<br />
this.ClientSize = new System.Drawing.Size(292, 273);<br />
this.Controls.Add(this.buttonSaveImage);<br />
this.Controls.Add(this.buttonUpdateWindowsList);<br />
this.Controls.Add(this.listBoxWindowList);<br />
this.Name = "FormWindowList";<br />
this.Text = "Window List";<br />
this.ResumeLayout(false);<br />
<br />
}<br />
#endregion<br />
<br />
[STAThread]<br />
static void Main() <br />
{<br />
Application.Run(new FormWindowList());<br />
}<br />
<br />
private void UpdateWindowList(object sender, System.EventArgs e)<br />
{<br />
listBoxWindowList.Controls.Clear();<br />
<br />
ArrayList windows = WindowScraper.GetWindowList();<br />
foreach (string window in windows)<br />
listBoxWindowList.Items.Add(window);<br />
}<br />
<br />
private void SaveImage(object sender, System.EventArgs e)<br />
{<br />
<br />
}<br />
<br />
}<br />
}<br />
... and the second file.
<br />
<br />
using System;<br />
using System.Collections;<br />
using System.Text;<br />
using System.Runtime.InteropServices;<br />
<br />
namespace WindowScraper<br />
{<br />
public class WindowScraper<br />
{<br />
public static ArrayList Windows;<br />
<br />
public struct Window<br />
{<br />
public string Title;<br />
public int hWnd;<br />
public Window(string Title, int hWnd)<br />
{<br />
this.Title = Title;<br />
this.hWnd = hWnd;<br />
}<br />
}<br />
<br />
<br />
<br />
private const int GWL_EXSTYLE = (-20);<br />
private const int WS_EX_TOOLWINDOW = 0x80;<br />
private const int WS_EX_APPWINDOW = 0x40000;<br />
private const int GW_OWNER = 4;<br />
<br />
public delegate int EnumWindowsProcDelegate(int hWnd, int lParam);<br />
<br />
[DllImport("user32")]<br />
private static extern int EnumWindows(EnumWindowsProcDelegate lpEnumFunc, int lParam);<br />
<br />
[DllImport("User32.Dll")]<br />
public static extern void GetWindowText(int h, StringBuilder s, int nMaxCount);<br />
<br />
[DllImport("user32", EntryPoint = "GetWindowLongA")]<br />
private static extern int GetWindowLongPtr(int hwnd, int nIndex);<br />
<br />
[DllImport("user32")]<br />
private static extern int GetParent(int hwnd);<br />
<br />
[DllImport("user32")]<br />
private static extern int GetWindow(int hwnd, int wCmd);<br />
<br />
[DllImport("user32")]<br />
private static extern int IsWindowVisible(int hwnd);<br />
<br />
[DllImport("user32")]<br />
private static extern int GetDesktopWindow();<br />
<br />
<br />
private static bool IsTaskbarWindow(int hWnd)<br />
{<br />
int lExStyle;<br />
int hParent;<br />
lExStyle = GetWindowLongPtr(hWnd, GWL_EXSTYLE);<br />
hParent = GetParent(hWnd);<br />
bool fTaskbarWindow = ((IsWindowVisible(hWnd) != 0) & (GetWindow(hWnd, GW_OWNER) == 0) & (hParent == 0 | hParent == GetDesktopWindow()));<br />
if ((lExStyle & WS_EX_TOOLWINDOW) == WS_EX_TOOLWINDOW)<br />
{<br />
fTaskbarWindow = false;<br />
}<br />
if ((lExStyle & WS_EX_APPWINDOW) == WS_EX_APPWINDOW)<br />
{<br />
fTaskbarWindow = true;<br />
}<br />
return fTaskbarWindow;<br />
}<br />
<br />
<br />
public static int EnumWindowsProc(int hWnd, int lParam)<br />
{<br />
if (IsTaskbarWindow(hWnd))<br />
{<br />
StringBuilder sb = new StringBuilder(1024);<br />
GetWindowText(hWnd, sb, sb.Capacity);<br />
String xMsg = sb.ToString();<br />
{<br />
if (xMsg.Length > 0)<br />
{<br />
Windows.Add(new Window(xMsg, hWnd));<br />
}<br />
}<br />
}<br />
return 1;<br />
}<br />
<br />
public static ArrayList GetWindowList()<br />
{<br />
Windows = new ArrayList();<br />
EnumWindows(EnumWindowsProc, 0);<br />
foreach (Window x in Windows)<br />
{<br />
Windows.Add(x.Title + ": " + x.hWnd.ToString());<br />
}<br />
return Windows;<br />
}<br />
<br />
}<br />
}<br />
<br />
|
|
|
|
|
I didn't look at the whole code block you posted, but only the first part. I noticed there is a big problem that will cause it to crash:
<br />
foreach (Window x in Windows)<br />
{<br />
Windows.Add(x.Title + ": " + x.hWnd.ToString());<br />
}<br />
You'll notice that you're saying for every Window object in the Windows IList you are adding a new windows object to the IList.
Windows.Add is adding a new Window to the list you are enumerating!! This will cause it to never end and eventually run out of memory. Now the compiler is supposed to tell you that you can't change the value of a list while it's in use in a loop, but who knows why it didn't.
|
|
|
|
|
Can anybody give me any information on creating a taskbar application (ie when you minimize windows media player, or TrueLaunchBar). Any information or links would be great.
Thanks
JGA
|
|
|
|
|
How can I determine the col number and row number of the current cursor position in a richTextBox control?? I really need that very fast.
Regards
|
|
|
|
|
Use GetLineFromCharIndex(theRichTextBox.SelectionStart) to retrieve the line/row number.
To get the column number you'll have to count the characters from SelectionStart backwards until you reach '\n'.
Regards,
mav
|
|
|
|
|
Im now starting to think of developing a big chat system
which will need to handle up to 1000 clients connected at once.
my question is how it would of be the best way to handle all of the 1000 clients??
a thread for each client isnt too much ?
|
|
|
|
|
You're right, creating a thread for each client won't scale. The best way to go about this is to use a threadpool. There is the System.Threading.ThreadPool[^] class provided by the .NET Framework. If you don't find it sufficient for your needs, there are also custom implementations of managed threadpools, a simple search in CP for "ThreadPool" should give you plenty of results.
Regards
Senthil
_____________________________
My Blog | My Articles | WinMacro
|
|
|
|
|
Isnt thread pool can proccess only 25 threads at a time? (max)
and 1000 active socket will create me a bottle neck
|
|
|
|
|
That limit is per processor, so if you have a dual processor machine, then it's 50 threads. If you want more threads than that, then it defeats the very purpose of having the threadpool. The basic assumption behind using a threadpool is you can distribute the work among a few precreated threads, so you have never have one thread idle and another doing all the work.
You can have a look here[^] if you want a custom implementation of Threadpools.
Regards
Senthil
_____________________________
My Blog | My Articles | WinMacro
|
|
|
|
|
If i understand right threadpool are good for threads which dont do much work
and alot of time under wait state
isnt it the exact opposite of my problem?
alot of active sockets ?
|
|
|
|
|
Again, what you say is true for the system provided threadpool thread. I'm saying this for the umpteenth time, you can always find custom implementations of it on the web.
Regards
Senthil
_____________________________
My Blog | My Articles | WinMacro
|
|
|
|
|
I did something like this using remoting, delegates and events. It was pretty easy. I would avoid the mutithread, because it can become complex and it will slow you proformance with that many threads open.
|
|
|
|
|
I have created a a WinForm app. I (obviously) have Form1.design and
a Form1.cs file that I can see and access. I have then added a generic class (say-- class Foo) using the wizard in the class view.
Now here's the problem: for some reason the solution view "wipes out"
the Foo.cs file view and replaces it with a Foo.design view icon as well as creating a Foo Form. Why? I don't want ANY other Form in my project but Form1 and I wan't only the Foo.cs file in the solution explorer? please help thanks a lot......
|
|
|
|
|
I've never seen the problem before.
Are you absolutely sure you added a Class file to the project instead of another Form?
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Hello all
can any one tell me if it is possible to make a car animation in picture box with some background which is also a picture some gif or bmp.if some one can tell me this then it is highly appreciable.thanks
bhatti
|
|
|
|
|
You can manage this also in panel just overriding the OnPaint method. Using PaintEventArgs.Graphics draw background image and the car frame over it.
Use double-buffering to prevent flickering.
|
|
|
|
|
Hi All,
I have this peculiar requirement.....I have a windows application developed in C#. The main form of the application doesnt have a "Title bar" (this is as per the design requirement..)...
Now, whenever we do Alt+Tab, the associated "Icon" as well as the content of the "Titlebar" of any window is displayed in the popup that comes up....But in my case, I can see only the associated Icon, but not the "Title" (as there is no "Titlebar" in the first place) .
Any means by which I can display this info as well, without actually having the "Title" bar
|
|
|
|