|
it's been a long time since i touched the WDK
thank heaven for small favors.
windbg is love. +1 for that.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
You may find that Windows 10 runs fine in a VM on that laptop. That is how I run it. You will be using VM's drivers on the bare metal, not Microsoft s. I run it mostly on a desktop with Mint and a MacBook Pro running VMWare.
Probably can't run any mobile emulators. I find that Windows does fine in an external drive on Thunderbolt and "OK" on a USB 3 connected drive. Takes some time to get started but then VS does fine.
That is how I run Visual Studio on Windows. Several choices for free as well.
If you can keep your head while those about you are losing theirs, perhaps you don't understand the situation.
|
|
|
|
|
The best solution for those in need of VS...
If you add to it the Unity Mode of VMWare (or Seamless Mode of VirtualBox), you actually will not see that virtual machine either...
"The only place where Success comes before Work is in the dictionary." Vidal Sassoon, 1928 - 2012
|
|
|
|
|
Unity is no longer available, I think, with VMWare Workstation on a Linux host. At least it was not available when I upgraded to 14 (haven't upgraded to 15 yet). With multiple workspaces on Linux, since forever, I found little use for it and it was always a little buggy here. Some had problems, some didn't. I actually prefer running W10 in a VM installed on ESXi, via remote connect. To each his own. Or is it her own? Whatever.
Lou
If you can keep your head while those about you are losing theirs, perhaps you don't understand the situation.
|
|
|
|
|
Oops I feel this is a bit specific to your own current experience? Not sure .
I have both Win 10 & Ubutnu environments. I have it both working great.
I tried to Hyper-v ubuntu on Win10, but the network drivers were making problems rendering internet connectivity too slow to use in the hyper-V-ed Ubuntu. So put it up on a my standby machine. Both doing great.
But I had similar frustrating experience with Windows sometime back. After fiddling with all troubleshoots & hacks, finally I tried replacing my disk to a new one. Problem over. No utilities were pointing out that there was a problem with the disk (HDD). That was my last encounter with a HDD. Now switched all my machines to SSD. And there was another instance where I had a problematic RAM (in desktop), that put me in an assumption that Windows Os was the problem
|
|
|
|
|
Welcome to the 21st century!
going to agree with @tLou-Yovin, running windows in VMs takes all of the need-a-graphics-driver hassles away (- it presents a very standard graphics driver that windows handles correctly and still with 2D and 3D acceleration.)
On new processors such as yours (mine's an i5-8600) VM's will start and run as fast as bare metal - no problems (or even hint of slowness) installing and running vs2019 (and older versions) and any other apps.
Bonus: easily separate database/web etc servers to host or/and other VM's which means complete full REAL clients/servers (plurals on purpose) settings all on 1 machine. As good as having your own network of machines. (better, less heat, no need to have a rack in your office)
And I do like linux (I'm also on ubuntu) - for mine:
- linux makes it feel like you are getting your money's worth out of your modern hardware,
- windows (any version) on today's MODERN metal always felt like you were being robbed of the machines potential (because yes, you actually were being robbed - separate topic), ... like owning a jet plane to drive to the shops without ever letting it get up in the air. (wasteful, restricted, cumbersome, messy, ... yes: everything about that picture that's wrong.)
Message Signature
(Click to edit ->)
|
|
|
|
|
Here's what will happen first thing Monday morning.
Customer calls: "raddevus! You know that old WinForms application that has been running fine without interruption for the past century? Well, we need some changes asap!"
Personally, I haven't had any issues with Windows 10 by the way.
|
|
|
|
|
Now install 10 back in a VM on your Ubuntu machine, and see if the original problem comes back. I'm betting it won't.
|
|
|
|
|
dandy72 wrote: Now install 10 back in a VM on your Ubuntu machine, and see if the original problem comes back. I'm betting it won't.
That's a very cool idea and I do want to try that. Very interesting. Thanks for the idea.
I hope to try that in the future.
|
|
|
|
|
Do any of the 3D printer owning people here know of anything that can print a Fusion 360 (.F3D file) Sketch (preferably with dimension lines) or even a DXF file in 1:1 scale?
Everything I find either fails to load, or squeezes it onto a single sheet, buggering the scale.
All I want to do is verify my measurements against the physical object to verify the sizes before I get too far with drawing, extruding, and chopping to fit the printer I'm thinking of buying ... which only goes to 210 x 210 x 200mm.
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Don't have a printer, but have you tried the AutoDesk Viewer? It looks like it is free (with an account signup): Autodesk Viewer | Free Online File Viewer. It also looks like it can print to a regular printer, but I'm not sure about that.
|
|
|
|
|
|
I'm implementing thread safety on a large class after the fact.
i hate this. but it has to be done.
also Microsoft, what the hell. you didn't put versioning on your dictionary enumerators**
** means when the dictionary is changed the enumerator won't throw like it's supposed to.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
I could write an entire article p() and v() Considered Harmful. Just as the use of goto should usually be restricted to the compiler, thread safety should usually be restricted to a few places by using cooperative scheduling (running work to completion). Willy-nilly preemptive scheduling is an abomination that causes artificial complexity, polluting the code with stuff that has nothing to do with the specifications.
|
|
|
|
|
so you are a fan of cooperative threading?
I can see the appeal, but it does very little when it comes to utilizing more than one CPU/core.
At that point, you're going to have concurrency issues save some higher level task functionality included as part of the CPU architecture.
Besides, i think cooperative multithreading is better handled using coroutines. That way the code design in clearer.
In c#, coroutines are built using the yield statement.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
Yes, I'm a big fan of cooperative threading. I haven't worked in C#, but I'd guess that yield() does the same thing as what I call Pause() in my code.
Symmetric multiprocessing (SMP) is another abomination because it reintroduces the need for all this thread safety nonsense. It is lamentable that Intel ran contests on how to adapt software to these platforms. SMP is a case of the hardware team having fun at the expense of the software team, which we all know is backwards from how things should be!
I also look at it this way, that there are only three good numbers: 0, 1, and infinity. So if I need more than one core, will 2, 4, or 8 always be enough? The general solution is to design software that runs in a distributed (networked) manner. This adds artificial complexity of its own, but it's the truly scalable solution and is unavoidable if you need an arbitrary amount of horsepower. The resulting software can also run on an SMP platform by dividing the shared memory so that each core has its own sandbox, with shared memory perhaps being used only for efficient interprocessor messaging.
|
|
|
|
|
Greg Utas wrote: Yes, I'm a big fan of cooperative threading. I haven't worked in C#, but I'd guess that yield() does the same thing as what I call Pause() in my code.
Probably "inside out" of what you're thinking.
Assuming you call Pause() while inside a loop or something to yield time.
yield however, is entirely different. It builds state machines for you to break apart the routine.
Hence
IEnumerable<string> Test() {
yield return "dog";
yield return "cat";
yield return "mouse";
}
...
foreach(var item in Test())
Console.WriteLine(item);
yields
dog
cat
mouse
each time it encounters a yield return it returns from the function. The next time the function is called essentially it will start after that yield return statement at the next line.
This voodoo is accomplished using a state machine the compiler builds for you.
So each time the routine is called, it knows what state it's in and can execute the next instruction.
So in your cooperative multithreading code. you'd just loop over whatever you needed to loop over, and time is returned to your function because the yield return dropped you out of the function in the "middle of the call"
it's a lot easier to use than to explain, but it helps if you have familiarity with the concept of a coroutine first.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
Interesting and not what I expected. Many folks couldn't be bothered to write a state machine, so we get blocking RPCs. And why do we get an hourglass or little spinning wheel on the screen? It's because some wanker couldn't be bothered to write a state machine!
So I'm curious as to what kind of state machine this generates. It picks up where it left off, but a serious state machine handles any input that could arrive. I'm guessing that this blocks, which is OK sometimes (guaranteed low latency) but not others (waiting for a reply from another processor). It's the latter case that can put a little spinning wheel on the screen for an unbecoming length of time, which is loathsome.
|
|
|
|
|
It does block but there's another mechanism that does what you're talking about (not blocking)
It's called awaitable methods and basically they let you return pending a callback . for I/O bound operations, this is particularly desirable, but it's also helpful for CPU bound threads.
The compiler builds a state machine so you can do like
async bool StartJob() {
var result = await DoLongRunningThing(); // method "exits" here,
//pending a callback at which point it picks up here
}
sorry it's a bit contrived, but it's really easy once you get the hang of it.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
And I thought that C++ was a kitchen-sink language!
That said, good on them that they allow other inputs. Not that I care for RPCs. But if this is in the thread's entry function, it's not much different than accepting any message that could arrive, so it looks like the kind of thing I'd aim for.
|
|
|
|
|
the var declaration is actually typed. The compiler picks up the type implicitly from the return value of the function it was initialized using;
if I do:
var i = 0;
i will be an int.
so i can't later do
i = "foo"; // compile error
it's helpful due to lack of typedefs for example.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
Port everything to Javascript (node) Problem solved. (just kidding)
|
|
|
|
|
Ouch, that is going to be a mess.
It isnt that threads are difficult, it is that they are a fundamental part of the architecture, and need to go in first, not at the end, as a bodge. Probably better to redesign the whole thing.
|
|
|
|
|
it was fine. all i did is lock down all the non-private methods with a r/w slim lock. it can barely be called multithreaded coding
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
honey the codewitch wrote: when the dictionary is changed the enumerator won't throw like it's supposed to
Are you sure about that?
var d = new Dictionary<int, int>
{
[1] = 1,
[42] = 24,
};
foreach (var pair in d)
{
Console.WriteLine($"{pair.Key} = {pair.Value}");
d[42] *= 2;
} Output:
1 = 1
InvalidOperationException: Collection was modified; enumeration operation may not execute. Dictionary enumerator versioning | C# Online Compiler | .NET Fiddle[^]
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|