|
CsTreval wrote: At our university we are being trained to use Microsoft Dynamics Navision 2013
And when you graduate your degree will be in what exactly?
CsTreval wrote: However, one of my co-students refuses to learn and/or use that software because he claims it is dead (according to his father who is an important CIO).
Which should be irrelevant to you.
CsTreval wrote: So assuming Navision is dead, then why does my university put it in its program? Why is it 'a preparation for the business world' if the software is allegedly dead in use?
If you think that any specific technology that you use in university will be around in 50 years or even 30 years then you are likely going to be surprised. Even at 10 years some things will disappear.
What you need to do is learn how to learn about different technologies.
And accept that even if a certain technology has problems that it is very likely that you will need to still use it because businesses exist to make money, not software. And so they don't throw out everything just because of some subjective opinion (or at least not most times.)
|
|
|
|
|
Businesses' sole purpose is not making money. That is old-boxed thinking. Today's businesses' main goal is to make a difference in this world and make it a better world. There are also other important goals to consider such as being 'Green', i.e. Corporate Social Responsibility.
Businesses exist to differentiate and evolve our society so we can identify ourselves as a nation and not only in the economical aspect. One of the main drivers behind a business is to make software, i.e. to give the customers what they want. That is why there are courses like Software Engineering, where functional analysis and business intelligence, data mining is taught. Companies are linear organized solutions of people who put out bright ideas into the world and form them into life.
Long term thinking also has to be applied; it would be better in long term in some situations to change the business solutions rather than keeping the old ones. This is where modern consultants come in and where they show the old, conservative and obstinant nay-sayers that they are wrong in their views and that a more modern solution is viable.
It all comes down to great ideas that need to be translated to great solutions, which is something 90% of the companies today are struggling with: failure to translate Business Strategy into Implementation down the company pipeline.
|
|
|
|
|
No no it is not, but sometimes I wish. I prefer using a simple calculator most time
Tim Toady Bicarbonate
|
|
|
|
|
how do i implement threeview using windows form?
|
|
|
|
|
An example at the bottom of this MSDN : TreeView class[^]. Should get you started.
Every day, thousands of innocent plants are killed by vegetarians.
Help end the violence EAT BACON
|
|
|
|
|
|
Please read the post titled "How to get an answer to your question" on top of this forum.
This is the second question you asked with the not very helpful title "C#".
|
|
|
|
|
|
That's not going to happen because a TextBox only know how to render text and only in a single font at a time.
You can try using a RichTextBox, but the Word document is going to have to be saved in RTF format in order to work. Even then, the RTB doesn't know everything about the Rich Text Format that Word does and some content will not render properly.
modified 19-May-14 8:21am.
|
|
|
|
|
Hi,
I need to write a High Performance TCP/IP server for receiving the data from the GPS devices and logging it to the database for display on Google Maps. There will be thousands of GPS devices connected to the GPS server and will be transmitting the data every 30 seconds and the display will be set to refresh typically every minute. I am looking for the help in specific areas, I will write the code myself and believe me I will post the complete developed and tested code on this same forum. I understand the following challenges
1.Concurrent TCP/IP connections
2.Database table bottlenecks
I would like to go for one table per device groups and different ports for devices with different protocols. I am assuming that I will need to write the following components.
1.Data Receiver
2.Parser as per the protocol and the commands
3.Data Cache
4.Database writer
Receive the bytes, log the received commands to the cache, implement the lazy writer to flush the data every minute to the database using different thread. Please comments on the following.
1.Does the GPS device disconnects after sending one command or it keep the connection to send the data further like long polling?
2.Is it better idea to maintain the thread pool and keep one thread per device? How many devices can be connected simultaneously to one port?
3.If I assume that device does not disconnect the client after transmitting the bytes to the server, should I keep the channel alive on the server to keep on reading the data every 20 seconds or whenever available?
4.Is it fair enough to have the separate threads for updating the data to the database server? Say data retrieval every 20 seconds and making it persistent to the database every one minute?
5.Is there any other better protocol rather that raw TCP/IP? I guess the other protocols like http etc should be slower as the header size itself is very big.
6.What is better choice Synchronous or Asynchronous sockets? Is it feasible to use UDP?
7.What is better choice? C# and SQL Server or JAVA and mySQL on Linux?
Many Thanks
Vipin
|
|
|
|
|
Not an answer but a few comments.
- No one can answer that question; you need to get the documentation for the device to see how it operates.
- Any number of devices (up to system saturation point) can connect via the same port, in the same way that all HTTP requests go to port 80.
- Depends on how the device operates.
- Possibly, but performance tests are needed to be sure.
- TCP or UDP are probably best choice of protocol.
- Again, testing will show which is best. See also point 5.
- C# or C++ and SQL (or other) server. I would certainly not use Java for such a performance intensive program, and you need a fast database.
|
|
|
|
|
Writing a high performance tcp server is very tricky.
You have to have a good understanding of overlapped IO. Managing kernel receive buffers, and a huge mess of stuff that's not obvious from simple 'my first tcp server' type articles on the internet
Strongly suggest you use professional messaging wrapper around tcp
Eg; ZeroMQ is something that hides a lot of these details from you
http://zeromq.org/[^]
Another possible recommendation is WCF with the tcp binding
I would not write your own tcp server just for the hell of it; it will no doubt be terrible compared to the above products
Matt.
|
|
|
|
|
Thanks Matt,
I also thought of using WCF tcp binding but the WCF may be much slower as compare to raw sockets however dealing with raw sockets may be more tricky and challenging but still possible to implement.
Thanks
Vipin
|
|
|
|
|
|
|
Unless you have 5+ years experience writing high performance TCP messaging servers
Your code is going to be way, way, worse than what's in WCF and not as scalable.
Unless you know how TCP buffers are managed by the kernel; why it's bad to use thread-per request; what overlapped IO is and what an NT fiber is
Then you're 0% the way qualified to write your own TCP server and shouldn't even attempt it.
Writing a high performance 'good' tcp server implementation is 1 to 5 years development effort on its own.
You can write a raw sockets server using a thread-per-request model in like a few hours Sure; But you'll start running into issues with many clients pretty rapidly.
If you want to reduce the packet size of WCF. Use google protobuff binding for WCF. It makes insanely tiny packets.
There's really no need to cause some other poor developer to work on a naive server implementation when there are very fast and very scaleable tools (WCF, ZeroMQ) that take care of all of this for you
Writing a custom tcp server is pretty much like going "I'd like to write my own kernel scheduler"
It's easy to get going, takes a lifetime to do it right though. That's why ZeroMQ and WCF exist.
|
|
|
|
|
Thanks Matty
If we use the WCF, i guess it would not be able to communicate with the RAW tcp client, we will need to write some code for WCF layer to make it communicating with the RAW tcp connections. Thanks for suggesting the ZeroMQ, i will explore these libraries and will let you know.
|
|
|
|
|
|
You seem to concentrate on the data collection side only.
You also said: "the display will be set to refresh typically every minute". Ehm, where? How many "display" clients? Webbrowser? And which data are to be displayed? The current location of thousands of devices?? The path taken by a selected device during the last timespan? This involves querying data from the database, and perhaps also some calculations on the data in the database. Or additionally some calculations on the data received from the database in an application...
|
|
|
|
|
Thanks Bernhard
The display will be the browser and typically one user for every 30 devices. Which most of the time will display the last stats of the device. I think we can store the last positions and other states in a separate table. Or some mechanism can be developed that can provide the data of current stats to the browser without hitting the database. The devices will be 2000 and will be transmitting the data every 20 seconds. On a maximum there can be 60000,000,00 records in the transaction table. Which SQL Sever can manager easily without loosing the performance.
|
|
|
|
|
Interesting question.
Firstly, I think you need to be sure on how each GPS would connect. You suggest TCP, you need to get this confirmed and you need to find out whether it connects, delivers its information then disconnects (likely) or it leaves the connection open (unlikely).
How many GPS units are you talking about, how many thousand? If it's a thousand, and they update twice a minute you're only looking at 33 connections/second which I don't find in any way scary. From what I know about GPSs (which isn't a great deal) they normally send a very small packet just containing location information.
Then I'd implement a producer-consumer queue. Each incoming connection takes the data and just sticks it on the queue and disconnects. On the other end you have something (or more than one) which pulls these off the queue and writes them to the database.
I'd go for asynchronous constructs (BeginAccept, BeginReceive) on the reception end as these won't require a long running thread and scale well.
Regards,
Rob Philpott.
|
|
|
|
|
how to make slave monitor show something same as primary monitor? thx
|
|
|
|
|
Easiest way is to set it in your display properties: Right click the desktop, select Screen Resolution, and set "Multiple Displays" to "Duplicate these displays"
Or, use WIN+P then select "Duplicate"
Can you do this from C#? Dunno - you may be able to via the registry, but that would need an elevate application which means kicking the UAE - so your user has to react to that anyway.
What exactly are you trying to do?
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 – ∞)
|
|
|
|
|
Thank your replay.My os is xp, that does not suppport to set "Multiple Displays" to "Duplicate these displays", it just support extend primary monitor to slave.
I need to use double monitors in project, and make slave monitor show want i do for customer in sometimes,so i want to do this with c#
|
|
|
|
|
On my XP laptop the duplicate display functionality is available only through the graphics adapter manufacturer's own control panel (nvidia). I do find it's of limited use unless the resolution and geometry of both displays are the same.
For example if I attach a 1024x768 external monitor then the laptop's 1400x1050 display will only use the central 1024x768 portion.
Alan.
|
|
|
|