Jump to content

ShaunR

Members
  • Posts

    4,871
  • Joined

  • Days Won

    296

Everything posted by ShaunR

  1. For an internal server (since they are all under one process) I would suggest Events or queues depending whether you are pulling or pushing the data. This will be the fastest and most efficient TCPIP I would suggest Network Streams. UDP anything but multicast.
  2. I'm hoping he'll hijack all those and replace them with ones we can send arguments to 10 years ago I complained about this to NI We'll need to talk about how we configure such a hack (per project, per VI, per node, per IDE, any or all of the above? )
  3. This has other positive implications for developers that interface to external code. One issue I (we?) have is that we cannot pass opaque pointers to the "abort", "reserved" and "unreserved callbacks" in CLFNs which are direct hooks to the LabVIEW IDE. Many 3rd party API libraries have an Init and Deinit procedure which is global. You only want to de-init if An init succeeded and allocated resources(no error, say) No residual inits are floating around from the last run. However, the callbacks for the CLFN are on each node so you only know that you can cater for 1&2 if the last node is executed and other nodes didn't error. Aborting in the IDE LabVIEW stops it dead before the last node and therefore you leak the callback. Any other strategy results in a crash of LabVIEW because you don't know whether the callback actually exists. If we had an abort hook (and a reserve and unreserve) that could take arguments then we can easily cater for this type of API. As an example. In order for the the OpenSSL library to be thread safe you must attach a callback to the library. This is a global callback, across all instances and invocations of the library and can only exist once as it is basically a mutex function. So when the library is initialised, a thread callback is created and passed to the API . You are supposed to then free the pointer and "de-init" the callback when you shut down but - and this is a "but" with a capital "CRASH" - only if you created the callback rather than another application.....bummer! Regardless of that GOTCHA; when you abort the IDE, however, you cannot execute your shutdown function which is in the close or De Init VI. Similarly, There is no way to track the callback instance from the LabVIEW dev environment since the pointer allocation exists outside of LabVIEW so you don;lt know how many de-inits to call to clean up. So when you press abort, you leak that callback until LabVIEW exits and the OS cleans it up for you. Ideally, we would use the abort, reserved and unreserved callback function of the CFLN to clean up. (Note that this is not a problem in an application as a Close or De-Init can always be called and is no worse than forgetting to close a queue refnum) Now. NI will argue that you can create these functions in you DLL and call them so it's not a problem. Except that, of course that would only work if you run all nodes in the root loop which defeats the whole point of multi-threaded callback -DOH! (as well as a huge performance hit).Additionally and probably even worse for me is that I use unmolested (or I should say "untampered with" so that hashes can be checked) 3rd party code so that users can update binaries without my intervention and, of course I don't run the risk of introducing nasty, hard to trace bugs into an already extensively tested API I'm not intimate with. So your abort could also enable a global cleanup of a 3rd party API when in the IDE. We could detect the run-time engine or IDE and snatch whatever arguments the clean-up requires then, using your abort hook, pass that directly to the APIs clean up function.
  4. There also used to be a "Rusty Nails" section on LavaG.org for stuff that was cool but might blow up LabVIEW. I wonder what happened to that?
  5. @Michael Aivaliotis Do you have stats for sign-ups over time like you have shown for posts?
  6. Not really. It's a case I can't log into ni.com without jumping through obnoxious "fill all this info out" pages. Because I control what sites can and can't put on my computer, I always have to prove who I am with lots and lots of info which I can't usually remember (first in/out, don't forget ). You obviously missed the attempted humour about my colon that explained that . It's also one of the reasons I never sign up for the beta - unless I really, really have to because the sky will fall in. It's the same as with any cloudflare site. I always (and by that I mean every time, not sometimes) get a captcha -which I can't see because it gets blocked - so I don't go to any sites behind cloudflare. It has nothing to do with a closed attitude. I'm also not sure that me posting over there would alleviate any inferiority complexes they have. It's a corporate support site and doesn't require our input to function. LavaG does so I'd rather post here where I can just log in unmolested! So. Having outlined one possible reason, what are your proposals?
  7. @shoneill Ni.com has always been known as "The Dark Side" - a veiled reference to ni.com being a corporate support forum as opposed to an altruistic community run forum. You aren't talking about that, though. (Are you?) You'd have to give me a link. I have a first in, first out memory so that info is long gone.
  8. I wouldn't think too hard about how to set it up as a service. It's not an imperative to your design so you can decide later. Think long and hard about how you want the actual software to be constructed then, once it is working, decide how best to start it. Your hands are tied here and very few of us have ever created a LabVIEW service so don't get hung up on it. Yup. That sound familiar.
  9. @Shoneill I hear what you are saying but it is "LabVIEW Advanced Virtual Architects" so it is pretty much a given there is a certain level of discussion expected in here.just as there is an expectation with the CLA or CLD certification. I wouldn't call that elitism since non experienced programmers do get answers and are, I think, handled gently and patiently when they do appear. It's not like they are ignored because they are considered "newbies". If there is a perceived elitism then can that not also be argued for the CLA seminars and events where you are not welcome unless you are one? I think it is the same premise but on LavaG.org we refuse noone.. That's just bizarre I'm not sure what you are trying to say here.
  10. I think many people look at certain questions to see if it is their area of expertise. If it's not something they are confident in, they leave it for someone else that has better knowledge. If no-one thinks they can offer a good answer after a couple of days then people come back and offer as much as they can. Unfortunately. As most people used the recent view, the already read question drops down a page or two so never gots noticed again especially if there have been a lot of automated posts. A sort or filter by number of posts would enable us to create a Pokemon stream specifically for zero reply posts..
  11. Where is the poll option for "We'll write a plugin so users can choose how they view it" ? Am I in the wrong forums to chat with programmers?
  12. I wouldn't worry too much about losing it. From what I can tell. People only marked their own replies anyway Usually, these sorts of language driven feature diktats end up with someone producing a plugin so it can be used regardless of developers' OCD.
  13. If you answer why you haven't visited in 2 years then that will probably be the answer you seek. Not sure what you mean by "cool" discussions. If you mean things like LVOOP then, personally, I don't think it has anything to do with LavaG being past it. LabVIEW stagnated over 5 years ago and all the subjects have been talked to death and everyone has written and debugged their frameworks (as they were in other languages 10 years before that). There were really only a handful of contributors (AQ, Daklu, Shoneill .... and now I'm struggling) and the only one that still visits to contribute is Shoneill, I think. Generally, though the lack of LabVIEW innovation is the main reason there are less "cool" discussions generally. The thing that made this apparent to me was when a 15 year old technology (Vi Macros) was suddenly re-discovered and piqued everyones interest. There was then a flurry of contribution and excitement (especially me) that brought me out of answering implementation questions and sparked my need to investigate and explore - something that probably hadn't happened for a couple of years on LavaG. So new "cool stuff" isn't being discussed because LabVIEW isn't developing new "cool stuff". VI macros ended with the development of "Named Events" and that is "Cool" with a capital "ICE" If Lavag.org goes then I will not be going over to ni.com. I never post on ni.com and probably only visit it 2-3 times a year if Google gives me a result in the top 5.I got tired of it demanding to know the inside circumference of my colon just to log in and the quality of answers is nowhere near as adroit or concise as on here. You know how after 10 years of programming when you have a problem that would be a 10 minute fix if only you knew x, y or z? So you phone up NI and manage to get through to an application engineer then spend the next 4 hours explaining your problem and them passing it on to someone that actually knows, waiting for their response then replying back. Three days later of this back and forth and they finally escalate your query and you get to talk with the actual person that knows and they tell you "Oh thats what you wanted? x=2, y=4 and z=8". Thats ni.com! In this analogy, LavaG is where ni.com escalates the query to. So don't think of ni.com it as a competitor. Think of it as a filter for studenty and mundane questions
  14. There are a myriad of ways you could realise this. It will depend on your preferred architecture (TCPIP RESTFUL API, Pub/Sub, TCPIP streaming, Websockets, UDP multicast...the list goes on). The 15 VIs are presumably all on localhost so are they just launched from one process (they all have access to each others data or are they separate processes each with TCPIP to be connected to? I have a (very old) pub sub architecture in the CR. Dispatcher might do what you need with little effort but if not, you can use it to frame and demonstrate why it is not the right solution - your images are pretty generic and only say "write and read some data through miscellaneous intermediaries" Also, as a heads up.... You can't make a Windows Service in LabVIEW like you can in C++. Only an executable/DLL. So you either put a shortcut in the Start Up folder/registry or there is a program that can launch any program as a windows service (the name escapes me for the moment)
  15. Convincingly random? Confidently random? Deceptively random? Indecernably random? Random looking? Good enough? They were all others I toyed with Don't forget it's not at all random - just looks like it statistically
  16. You and I have very different ideas about beautiful art Are random[ish] patterns beautiful? This is what some bytes look like for a SQLite database. Here is the same data with AES128 ECB encryption. And here with AES256 CBC
  17. Yes. Notifications and emails. There are only 3 things that interest me and they are all emails I receive a PM Someone replies to a topic I created Someone likes a post of mine. Two out of those three are disabled by Admin so can we have them back please? I have no interest in websites bugging me with in-in band notifications so that's just a wasted feature on me but it does show how acceptable remote code execution has become when it used to be considered malware .
  18. Michael addressed #2 but as for #1 I think it won't matter in the not too distant future. Layout and styling are becoming more client side and you will see more things like Stylish appearing-probably being offered from the websites themselves as "templates". I use TamperMonkey and GreaseMonkey to intercept and modify a websites CSS and JS so I no longer get annoyed with website layouts. The effort I would put into moaning about it, I just write a quick script and make it exactly as I want then move on. I don't think I need to do that for the new Lavag.org but fiddling with the background colour in TamperMonkey shouldn't be too hard for a seasoned programmer. This is also my solution to the abysmal LabVIEW user interface
  19. Not in my toolbar there isn't. But the "Quote this" is awesome so I won't need it any more anyway
  20. You are really talking per customer project (AKA per order), rather than projects. I envisaged a VM for every LabVIEW project file, however trivial, so even something like the Spell Check that I recently created would have had a VM-which would be silly. A VM per customer project doesn't resolve versioning updates. It just compartmentalises and freezes the customer software as a deployment. When you up issue a component in the customers software or fix a bug do you then create a new VM? I doubt it. You probably use the snapshot feature as a version control for that customers entire system.. Whilst a VM is a good method for snapshotting, VIPM is an installer and mainly for toolkits rather than entire projects. So it's not really solving the same problems. When you create a VM you use the NI installer for LabVIEW, Right?. , After that, how do you get all your toolkits on there? VIPM, right? Once on there you then write your solution and then snapshot the VM so you can reconstitute it as a whole right down to the specialist instrument drivers that were written in China by a blind man with a lisp.:) But that VM can only be used for that customers project otherwise you get into huge problems with licencing and copyright. Most of the software toolkits and helper apps that I have written were not intended to be written as such. I have a lot of stuff I have written over the years - snippets, scripts and miscellaneous programs - and much you see on my website is either just productionising something I wrote an age ago or grouping a number of already written snippets into something more friendly. This is the case with the Project Probe and the Install Manager. I had all the bits and pieces but no easy interface for them and got tired of opening 10 projects and running them manually from the dev environment. The Wizard was a little different in that it started as a cross platform installer when VIPM was windows only. So that was a definite need but today, for this thread, it is already written with many of the bits and pieces that would be necessary.
  21. I like it. Different enough to be fresh. Not different enough to force us to learn new workflows.and interfaces. The only thing I haven't figured out (yet) is how to break quotes so I can reply in sections. I used to just change it to text and then split it up inserting the markup but I can't see a text/html button in the new editor. I expect it can be done another way, just that I was using the brute force method
  22. No thanks. That's putting the cart before the horse. Software works *for* me to make *my* workflow easier/simpler/productive. If some software doesn't work for me then I'll write some that does - even in another language if the fancy takes me Are you really suggesting that every project should be in it's own VM? That would mean I would have 523 VMs (and counting) just for Windows without even considering Linux, Mac, RT, VXWorks or test machines .
  23. I only half agree with this. To replicate VIPM, yes. To make an installer, no. (Are you still using a modified the modified OpenG Pakager) As you are probably aware, I use a Wizard style installer for SQLite API for LabVIEW because VIPM can't handle selective 32&64 bit installs. It can also integrate into a global "package Manager" which is SQLite based rather than the "spec" inifile . In fact. It was the reason I added the capability to import an ini file to the SQLite API for LabVIEW so as to import the VIPM spec files The downside to the wizard is the size of the deployment but it suffices for isolated installs and it can be retrospectively integrated to the global manager. The upside, however, is that, in addition to the standard pages, you can add custom pages for your install and that makes it much more flexible-if a little more effort. So the wizard has all the bits and pieces to install (pallet menus, recompiling etc) and I did start to make a Wizard Creator where the Installer was an example. Just one of the many half finished projects. The global manager (which is the other side of VIPM) would take a lot to productionise and I'm, not currently interested in stepping on anyone toes. It works great for me and I don't have to produce help documentation which takes me longer than writing software . It will ultimately also handle my own licencing scheme too (which we have discussed previously) but even then it will be limited to only my products as there are a few now. So yes. It is totally doable (and has been done) with enough effort but I would do it slightly differently to VIPM.
  24. This is really a source code control issue rather than an installer issue. The two are related in that an installer usually installs a particular dependency version but the goals are different. In NIs refusal to give us a proper source control system that is fit for purpose, the VIPM software is the best of a bad situation for simple version control but it isn't really a version control tool any more than an RPM package installer is (on which it is based),
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.